-
Notifications
You must be signed in to change notification settings - Fork 84
ENG-1966 Adobe Experience Platform integration #6970
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
1 Skipped Deployment
|
- Add aep.ts integration for Adobe Web SDK and ECID Opt-In Service - Add integration-utils.ts with shared subscribeToConsent helper - Add onetrust.ts integration for OneTrust migration support - Update blueconic.ts to use shared integration-utils - Update consent-types.ts and init-utils.ts with AEP and OneTrust types - Add ADOBE_ORG_ID configuration support in Privacy Center - Inject adobe_mc_orgid into window for Adobe Visitor API
- Remove suggestPurposeMapping function (not used) - Remove getFidesDiagnostics function (not Adobe-specific) - Remove fides field from AEPDiagnostics interface - Keep Adobe-specific diagnostic functions for debugging
- Remove onetrust.ts file entirely - Remove OneTrust imports from aep.ts, consent-types.ts, init-utils.ts - Remove OneTrust initialization code from aep() function - Remove oneTrust field from AEPDiagnostics interface - Remove onetrust property from FidesGlobal interface - AEP integration now completely independent
- Remove AEPDiagnostics interface - Remove all diagnostic export functions (getAdobeCookies, getAlloyDiagnostics, getVisitorDiagnostics, getOptInDiagnostics, getLaunchDiagnostics, getAnalyticsDiagnostics) - Remove getECIDFromCookies helper - Keep core integration functionality (aep(), pushConsentToAdobe(), getAdobeConsentState())
- Remove summary field that mapped Adobe consent to generic terms - Keep only actual Adobe consent state: alloy purposes and ecidOptIn (aa, target, aam) - Simplifies API and shows what Adobe actually has
- Support all Adobe categories dynamically (aa, target, aam, adcloud, campaign, ecid, livefyre, mediaaa) - Replace hardcoded if/else blocks with dynamic iteration through Categories object - Update ecidMapping type to accept any string[] instead of restricted union - Use Record<string, boolean> for approvals instead of hardcoded object - Dynamically apply approve/deny by iterating through all available categories - Update AEPConsentState to return dynamic categories object - getAdobeConsentState() now iterates through all Adobe categories programmatically
- Add DEFAULT_ECID_MAPPING constant matching DEFAULT_PURPOSE_MAPPING - Remove complex purposeToEcidMapping conversion logic - Simplify ECID handling to use ecidMapping || DEFAULT_ECID_MAPPING - Update documentation to show default behavior instead of 'backward compatible' - Clean up 30+ lines of unnecessary if/else logic
This configuration belongs in ENG-1966-aep-configuration branch
This belongs in the configuration branch
FIDES_COOKIE_SUFFIX is unrelated to Adobe and should not have been removed
- Test Adobe Web SDK (Alloy) consent syncing - Test ECID Opt-In Service for legacy AppMeasurement - Test default and custom purpose/ECID mappings - Test OR logic for overlapping category mappings - Test dynamic handling of all Adobe categories - Test event subscription (FidesReady, FidesUpdated) - Test synthetic events for late-loading integrations - Test debug logging and error handling - Test consent() API state reporting - Test edge cases (empty consent, undefined values, etc.) 26 tests with comprehensive coverage of Adobe integration
- Prefix unused parameters with underscore - Add eslint-disable comments for intentional console statements - Move buildAdobePurposes function before usage to avoid no-use-before-define - Remove duplicate buildAdobePurposes function - Remove unused variable declarations in tests
Fides may have other consent keys that aren't in the Adobe mapping. That's fine - they just don't get sent to Adobe. No need to warn about it. - Simplified buildAdobePurposes to only map configured keys - Removed tracking of matched/unmatched keys - Removed warning about unmatched keys - Removed corresponding test - Simplified debug logging
- Remove unused parameters from mock functions - Use array destructuring with empty first element for unused categoryName - Use mockReturnValue instead of defining implementation for mockIsApproved
The initialized flag is only needed for integrations that need more than just consent (like GTM needing fides_meta, identity, etc). Simple integrations like blueconic and aep only need consent, so subscribeToConsent should fire if window.Fides.consent exists, regardless of the initialized flag. This matches the original blueconic behavior which called configureObjectives() immediately without checking initialized.
3395f89 to
12eba5b
Compare
Co-authored-by: Jason Gill <jason.gill@ethyca.com>
Co-authored-by: Jason Gill <jason.gill@ethyca.com>
Co-authored-by: Jason Gill <jason.gill@ethyca.com>
Co-authored-by: Jason Gill <jason.gill@ethyca.com>
Co-authored-by: Jason Gill <jason.gill@ethyca.com>
Co-authored-by: Jason Gill <jason.gill@ethyca.com>
Co-authored-by: Jason Gill <jason.gill@ethyca.com>
Co-authored-by: Jason Gill <jason.gill@ethyca.com>
Co-authored-by: Jason Gill <jason.gill@ethyca.com>
Co-authored-by: Jason Gill <jason.gill@ethyca.com>
- Define minimal TypeScript interfaces for Adobe SDKs (Alloy, OptIn) - Use unknown for SDKs we don't directly interact with (safer than any) - Add isApproved method to AdobeOptIn interface - Use non-null assertion (!) where we've already checked for existence - Remove debug logging tests (not critical functionality to test) - Mock fidesDebugger in AEP tests
- Remove debug option from AEPOptions interface (fidesDebugger handles it) - Remove all if (debug) wrappers around fidesDebugger calls - Use const assignment with null checks instead of ! operator (cleaner) - Replace hasAlloy/hasOptIn booleans with const alloy/optIn assignments - TypeScript narrows types properly with const assignments - Remove test for debug warning (no longer has debug option)
Removed mockConsoleLog and mockConsoleWarn since we no longer test debug output after removing the debug flag
Following the GTM integration pattern, change subscribeToConsent to use Record<FidesEventType, boolean> instead of FidesEventType[]. This forces developers to explicitly consider whether new FidesEventTypes should be forwarded to integrations. Benefits: - When a new FidesEventType is added, TypeScript will error on any Record<FidesEventType, boolean> that doesn't include it - Forces explicit decision-making for each event type - Self-documenting which events each integration cares about Default config enables only FidesReady and FidesUpdated, which is appropriate for simple integrations like AEP and BlueConic.
Removed unused properties from type definitions: - AdobeNamespace.target and .analytics (not accessed) - Window.Visitor, .s, ._satellite (not accessed) Keep only what we actually use: window.alloy and window.adobe.optIn
- Changed error catches to use fidesDebugger instead of console.error - Removed eslint-disable-next-line no-console comments - Removed tests that validated debug logging behavior - Simplified test that checks Adobe not loaded scenario
Greptile OverviewGreptile SummaryThis PR adds Adobe Experience Platform (AEP) integration to FidesJS, enabling consent synchronization with both modern Adobe Web SDK (Alloy) and legacy ECID Opt-In Service. Key Changes:
Implementation Quality: Confidence Score: 5/5
Important Files ChangedFile Analysis
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
8 files reviewed, no comments
gilluminate
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!✨
Co-authored-by: Jason Gill <jason.gill@ethyca.com>
Ticket ENG-1966
Description Of Changes
Adds the basics for an Adobe Experience Platform integration
Code Changes
Steps to Confirm
Fides.showModal()to make changesPre-Merge Checklist
CHANGELOG.mdupdatedmaindowngrade()migration is correct and works