UNPKG

@sonofatailor/consent-manager

Version:

Drop-in consent management plugin for analytics.js

86 lines 7.66 kB
"use strict"; 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); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var isEmpty_1 = __importDefault(require("lodash/isEmpty")); var pickBy_1 = __importDefault(require("lodash/pickBy")); var events_1 = require("events"); var emitter = new events_1.EventEmitter(); exports.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_1.default(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); }; 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_1.default(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 }); } } exports.default = conditionallyLoadAnalytics; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnNlbnQtbWFuYWdlci1idWlsZGVyL2FuYWx5dGljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkRBQW9DO0FBQ3BDLHlEQUFrQztBQUNsQyxpQ0FBcUM7QUFrQnJDLElBQU0sT0FBTyxHQUFHLElBQUkscUJBQVksRUFBRSxDQUFBO0FBRXJCLFFBQUEsMEJBQTBCLEdBQUcsVUFBQyxRQUF3QztJQUNqRixPQUFPLENBQUMsRUFBRSxDQUFDLDBCQUEwQixFQUFFLFFBQVEsQ0FBQyxDQUFBO0lBQ2hELE9BQU8sY0FBTSxPQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLEVBQUUsUUFBUSxDQUFDLEVBQWpELENBQWlELENBQUE7QUFDaEUsQ0FBQyxDQUFBO0FBRUQsSUFBTSw0QkFBNEIsR0FBRyxVQUFDLEVBR0Y7UUFGbEMsOEJBQVksRUFDWiw4Q0FBb0I7SUFFcEIsSUFBTSxvQkFBb0IsR0FBRyxnQkFBTSxDQUFDLFlBQVksRUFBRSxVQUFDLENBQUMsRUFBRSxhQUFhO1FBQ2pFLE9BQUEsb0JBQW9CLENBQUMsSUFBSSxDQUN2QixVQUFBLG1CQUFtQixJQUFJLE9BQUEsbUJBQW1CLENBQUMsWUFBWSxLQUFLLGFBQWEsRUFBbEQsQ0FBa0QsQ0FDMUU7SUFGRCxDQUVDLENBQ0YsQ0FBQTtJQUVELE9BQU8sQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsb0JBQW9CLENBQUMsQ0FBQTtBQUNoRSxDQUFDLENBQUE7QUFFRCxJQUFNLCtCQUErQixHQUFHLFVBQUMsb0JBQW1DO0lBQzFFLElBQU0sb0JBQW9CLEdBQUcsb0JBQW9CLENBQUMsTUFBTSxDQUN0RCxVQUFDLEdBQVcsRUFBRSxXQUF3Qjs7UUFBSyxPQUFBLHVCQUN0QyxHQUFHLGdCQUNMLFdBQVcsQ0FBQyxZQUFzQixJQUFHLElBQUksT0FDMUM7SUFIeUMsQ0FHekMs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