UNPKG

@sonofatailor/consent-manager

Version:

Drop-in consent management plugin for analytics.js

80 lines 7.44 kB
var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; import isEmpty from 'lodash/isEmpty'; import pickBy from 'lodash/pickBy'; import { EventEmitter } from 'events'; var emitter = new EventEmitter(); export var onLoadExternalDestinations = function (listener) { emitter.on('loadExternalDestinations', listener); return function () { return emitter.off('loadExternalDestinations', listener); }; }; var emitLoadExternalDestinations = function (_a) { var integrations = _a.integrations, externalDestinations = _a.externalDestinations; var externalIntegrations = pickBy(integrations, function (_, integrationId) { return externalDestinations.find(function (externalDestination) { return externalDestination.creationName === integrationId; }); }); emitter.emit('loadExternalDestinations', externalIntegrations); }; var emitLoadAllExternalDestinations = function (externalDestinations) { var externalIntegrations = externalDestinations.reduce(function (acc, destination) { var _a; return (__assign(__assign({}, acc), (_a = {}, _a[destination.creationName] = true, _a))); }, {}); emitter.emit('loadExternalDestinations', externalIntegrations); }; var excludeIntegrations = function (integrations, integrationsExcludedFromLoading) { return (integrationsExcludedFromLoading || []).reduce(function (acc, integrationName) { var _a; return (__assign(__assign({}, acc), (_a = {}, _a[integrationName] = false, _a))); }, integrations); }; export default function conditionallyLoadAnalytics(_a) { var writeKey = _a.writeKey, destinations = _a.destinations, destinationPreferences = _a.destinationPreferences, _b = _a.externalDestinations, externalDestinations = _b === void 0 ? [] : _b, isConsentRequired = _a.isConsentRequired, _c = _a.shouldReload, shouldReload = _c === void 0 ? true : _c, integrationsExcludedFromLoading = _a.integrationsExcludedFromLoading; var wd = window; var integrations = { All: false, 'Segment.io': true }; var isAnythingEnabled = false; if (!destinationPreferences || isEmpty(destinationPreferences)) { if (isConsentRequired) { return; } // Load a.js normally when consent isn't required and there's no preferences if (!wd.analytics.initialized) { var integrationsToLoad = excludeIntegrations({}, integrationsExcludedFromLoading); wd.analytics.load(writeKey, { integrations: integrationsToLoad }); emitLoadAllExternalDestinations(externalDestinations); } return; } for (var _i = 0, destinations_1 = destinations; _i < destinations_1.length; _i++) { var destination = destinations_1[_i]; 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; } // Don't load a.js at all if nothing has been enabled if (isAnythingEnabled) { var integrationsToLoad = excludeIntegrations(integrations, integrationsExcludedFromLoading); wd.analytics.load(writeKey, { integrations: integrationsToLoad }); emitLoadExternalDestinations({ integrations: integrations, externalDestinations: externalDestinations }); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnNlbnQtbWFuYWdlci1idWlsZGVyL2FuYWx5dGljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBLE9BQU8sT0FBTyxNQUFNLGdCQUFnQixDQUFBO0FBQ3BDLE9BQU8sTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUNsQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBa0JyQyxJQUFNLE9BQU8sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFBO0FBRWxDLE1BQU0sQ0FBQyxJQUFNLDBCQUEwQixHQUFHLFVBQUMsUUFBd0M7SUFDakYsT0FBTyxDQUFDLEVBQUUsQ0FBQywwQkFBMEIsRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUNoRCxPQUFPLGNBQU0sT0FBQSxPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixFQUFFLFFBQVEsQ0FBQyxFQUFqRCxDQUFpRCxDQUFBO0FBQ2hFLENBQUMsQ0FBQTtBQUVELElBQU0sNEJBQTRCLEdBQUcsVUFBQyxFQUdGO1FBRmxDLDhCQUFZLEVBQ1osOENBQW9CO0lBRXBCLElBQU0sb0JBQW9CLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxVQUFDLENBQUMsRUFBRSxhQUFhO1FBQ2pFLE9BQUEsb0JBQW9CLENBQUMsSUFBSSxDQUN2QixVQUFBLG1CQUFtQixJQUFJLE9BQUEsbUJBQW1CLENBQUMsWUFBWSxLQUFLLGFBQWEsRUFBbEQsQ0FBa0QsQ0FDMUU7SUFGRCxDQUVDLENBQ0YsQ0FBQTtJQUVELE9BQU8sQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsb0JBQW9CLENBQUMsQ0FBQTtBQUNoRSxDQUFDLENBQUE7QUFFRCxJQUFNLCtCQUErQixHQUFHLFVBQUMsb0JBQW1DO0lBQzFFLElBQU0sb0JBQW9CLEdBQUcsb0JBQW9CLENBQUMsTUFBTSxDQUN0RCxVQUFDLEdBQVcsRUFBRSxXQUF3Qjs7UUFBSyxPQUFBLHVCQUN0QyxHQUFHLGdCQUNMLFdBQVcsQ0FBQyxZQUFzQixJQUFHLElBQUksT0FDMUM7SUFIeUMsQ0FHekMsRUFDRixFQUFFLENBQ0gsQ0FBQTtJQUVELE9BQU8sQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsb0JBQW9CLENBQUMsQ0FBQTtBQUNoRSxDQUFDLENBQUE7QUFFRCxJQUFNLG1CQUFtQixHQUFHLFVBQzFCLFlBQXFDLEVBQ3JDLCtCQUFxRDtJQUVyRCxPQUFPLENBQUMsK0JBQStCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUNuRCxVQUFDLEdBQUcsRUFBRSxlQUFlOztRQUFLLE9BQUEsdUJBQ3JCLEdBQUcsZ0JBQ0wsZUFBZSxJQUFHLEtBQUssT0FDeEI7SUFId0IsQ0FHeEIsRUFDRixZQUFZLENBQ2IsQ0FBQTtBQUNILENBQUMsQ0FBQTtBQUVELE1BQU0sQ0FBQyxPQUFPLFVBQVUsMEJBQTBCLENBQUMsRUFRakM7UUFQaEIsc0JBQVEsRUFDUiw4QkFBWSxFQUNaLGtEQUFzQixFQUN0Qiw0QkFBeUIsRUFBekIsOENBQXlCLEVBQ3pCLHdDQUFpQixFQUNqQixvQkFBbUIsRUFBbkIsd0NBQW1CLEVBQ25CLG9FQUErQjtJQUUvQixJQUFNLEVBQUUsR0FBRyxNQUF1QixDQUFBO0lBQ2xDLElBQU0sWUFBWSxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUE7SUFDdkQsSUFBSSxpQkFBaUIsR0FBRyxLQUFLLENBQUE7SUFFN0IsSUFBSSxDQUFDLHNCQUFzQixJQUFJLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFO1FBQzlELElBQUksaUJBQWlCLEVBQUU7WUFDckIsT0FBTTtTQUNQO1FBRUQsNEVBQTRFO1FBQzVFLElBQUksQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRTtZQUM3QixJQUFNLGtCQUFrQixHQUFHLG1CQUFtQixDQUFDLEVBQUUsRUFBRSwrQkFBK0IsQ0FBQyxDQUFBO1lBRW5GLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUE7WUFDakUsK0JBQStCLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtTQUN0RDtRQUNELE9BQU07S0FDUDtJQUVELEtBQTBCLFVBQVksRUFBWiw2QkFBWSxFQUFaLDBCQUFZLEVBQVosSUFBWSxFQUFFO1FBQW5DLElBQU0sV0FBVyxxQkFBQTtRQUNwQixJQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsc0JBQXNCLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDakUsSUFBSSxTQUFTLEVBQUU7WUFDYixpQkFBaUIsR0FBRyxJQUFJLENBQUE7U0FDekI7UUFDRCxZQUFZLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQTtLQUN6QztJQUVELHdFQUF3RTtJQUN4RSw2Q0FBNkM7SUFDN0MsSUFBSSxFQUFFLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFO1FBQzVDLElBQUksWUFBWSxFQUFFO1lBQ2hCLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUE7U0FDekI7UUFDRCxPQUFNO0tBQ1A7SUFFRCxxREFBcUQ7SUFDckQsSUFBSSxpQkFBaUIsRUFBRTtRQUNyQixJQUFNLGtCQUFrQixHQUFHLG1CQUFtQixDQUFDLFlBQVksRUFBRSwrQkFBK0IsQ0FBQyxDQUFBO1FBQzdGLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxDQUFDLENBQUE7UUFDakUsNEJBQTRCLENBQUMsRUFBRSxZQUFZLGNBQUEsRUFBRSxvQkFBb0Isc0JBQUEsRUFBRSxDQUFDLENBQUE7S0FDckU7QUFDSCxDQUFDIn0=