UNPKG

@segment/consent-manager

Version:

Drop-in consent management plugin for analytics.js

60 lines 5.24 kB
function getConsentMiddleware(destinationPreferences, categoryPreferences, defaultDestinationBehavior) { return function (_a) { var payload = _a.payload, next = _a.next; payload.obj.context.consent = { defaultDestinationBehavior: defaultDestinationBehavior, categoryPreferences: categoryPreferences, destinationPreferences: destinationPreferences }; next(payload); }; } export default function conditionallyLoadAnalytics(_a) { var writeKey = _a.writeKey, destinations = _a.destinations, destinationPreferences = _a.destinationPreferences, isConsentRequired = _a.isConsentRequired, _b = _a.shouldReload, shouldReload = _b === void 0 ? true : _b, _c = _a.devMode, devMode = _c === void 0 ? false : _c, defaultDestinationBehavior = _a.defaultDestinationBehavior, categoryPreferences = _a.categoryPreferences; var wd = window; var integrations = { All: false, 'Segment.io': true }; var isAnythingEnabled = false; if (!destinationPreferences) { if (isConsentRequired) { return; } // Load a.js normally when consent isn't required and there's no preferences if (!wd.analytics.initialized) { wd.analytics.load(writeKey); } return; } for (var _i = 0, destinations_1 = destinations; _i < destinations_1.length; _i++) { var destination = destinations_1[_i]; // Was a preference explicitly set on this destination? var explicitPreference = destination.id in destinationPreferences; if (!explicitPreference && defaultDestinationBehavior === 'enable') { integrations[destination.id] = true; continue; } var isEnabled = Boolean(destinationPreferences[destination.id]); if (isEnabled) { isAnythingEnabled = true; } integrations[destination.id] = isEnabled; } // Reload the page if the trackers have already been initialised so that // the user's new preferences can take affect if (wd.analytics && wd.analytics.initialized) { if (shouldReload) { window.location.reload(); } return; } if (devMode) { return; } // Don't load a.js at all if nothing has been enabled if (isAnythingEnabled) { var middleware = getConsentMiddleware(destinationPreferences, categoryPreferences, defaultDestinationBehavior); // @ts-ignore: Analytics.JS type should be updated with addSourceMiddleware wd.analytics.addSourceMiddleware(middleware); wd.analytics.load(writeKey, { integrations: integrations }); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnNlbnQtbWFuYWdlci1idWlsZGVyL2FuYWx5dGljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFtQkEsU0FBUyxvQkFBb0IsQ0FDM0Isc0JBQXNCLEVBQ3RCLG1CQUFtQixFQUNuQiwwQkFBMEI7SUFFMUIsT0FBTyxVQUFDLEVBQWlCO1lBQWYsT0FBTyxhQUFBLEVBQUUsSUFBSSxVQUFBO1FBQ3JCLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRztZQUM1QiwwQkFBMEIsNEJBQUE7WUFDMUIsbUJBQW1CLHFCQUFBO1lBQ25CLHNCQUFzQix3QkFBQTtTQUN2QixDQUFBO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQ2YsQ0FBQyxDQUFBO0FBQ0gsQ0FBQztBQUVELE1BQU0sQ0FBQyxPQUFPLFVBQVUsMEJBQTBCLENBQUMsRUFTakM7UUFSaEIsUUFBUSxjQUFBLEVBQ1IsWUFBWSxrQkFBQSxFQUNaLHNCQUFzQiw0QkFBQSxFQUN0QixpQkFBaUIsdUJBQUEsRUFDakIsb0JBQW1CLEVBQW5CLFlBQVksbUJBQUcsSUFBSSxLQUFBLEVBQ25CLGVBQWUsRUFBZixPQUFPLG1CQUFHLEtBQUssS0FBQSxFQUNmLDBCQUEwQixnQ0FBQSxFQUMxQixtQkFBbUIseUJBQUE7SUFFbkIsSUFBTSxFQUFFLEdBQUcsTUFBdUIsQ0FBQTtJQUNsQyxJQUFNLFlBQVksR0FBRyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFBO0lBQ3ZELElBQUksaUJBQWlCLEdBQUcsS0FBSyxDQUFBO0lBRTdCLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtRQUMzQixJQUFJLGlCQUFpQixFQUFFO1lBQ3JCLE9BQU07U0FDUDtRQUVELDRFQUE0RTtRQUM1RSxJQUFJLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUU7WUFDN0IsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7U0FDNUI7UUFDRCxPQUFNO0tBQ1A7SUFFRCxLQUEwQixVQUFZLEVBQVosNkJBQVksRUFBWiwwQkFBWSxFQUFaLElBQVksRUFBRTtRQUFuQyxJQUFNLFdBQVcscUJBQUE7UUFDcEIsdURBQXVEO1FBQ3ZELElBQU0sa0JBQWtCLEdBQUcsV0FBVyxDQUFDLEVBQUUsSUFBSSxzQkFBc0IsQ0FBQTtRQUNuRSxJQUFJLENBQUMsa0JBQWtCLElBQUksMEJBQTBCLEtBQUssUUFBUSxFQUFFO1lBQ2xFLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFBO1lBQ25DLFNBQVE7U0FDVDtRQUVELElBQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtRQUNqRSxJQUFJLFNBQVMsRUFBRTtZQUNiLGlCQUFpQixHQUFHLElBQUksQ0FBQTtTQUN6QjtRQUNELFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFBO0tBQ3pDO0lBRUQsd0VBQXdFO0lBQ3hFLDZDQUE2QztJQUM3QyxJQUFJLEVBQUUsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUU7UUFDNUMsSUFBSSxZQUFZLEVBQUU7WUFDaEIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQTtTQUN6QjtRQUNELE9BQU07S0FDUDtJQUVELElBQUksT0FBTyxFQUFFO1FBQ1gsT0FBTTtLQUNQO0lBRUQscURBQXFEO0lBQ3JELElBQUksaUJBQWlCLEVBQUU7UUFDckIsSUFBTSxVQUFVLEdBQUcsb0JBQW9CLENBQ3JDLHNCQUFzQixFQUN0QixtQkFBbUIsRUFDbkIsMEJBQTBCLENBQzNCLENBQUE7UUFDRCwyRUFBMkU7UUFDM0UsRUFBRSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUU1QyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxZQUFZLGNBQUEsRUFBRSxDQUFDLENBQUE7S0FDOUM7QUFDSCxDQUFDIn0=