UNPKG

@sonofatailor/consent-manager

Version:

Drop-in consent management plugin for analytics.js

82 lines 5.45 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 }); // TODO: remove duplicate cookie library from bundle var js_cookie_1 = __importDefault(require("js-cookie")); var top_domain_1 = __importDefault(require("@segment/top-domain")); var events_1 = require("events"); var COOKIE_KEY = 'tracking-preferences'; // TODO: Make cookie expiration configurable var COOKIE_EXPIRES = 365; // TODO: harden against invalid cookies // TODO: harden against different versions of cookies function loadPreferences() { var preferences = js_cookie_1.default.getJSON(COOKIE_KEY); if (!preferences) { return {}; } return { destinationPreferences: preferences.destinations, customPreferences: preferences.custom }; } exports.loadPreferences = loadPreferences; var emitter = new events_1.EventEmitter(); /** * Subscribes to consent preferences changing over time and returns * a cleanup function that can be invoked to remove the instantiated listener. * * @param listener a function to be invoked when ConsentPreferences are saved */ function onPreferencesSaved(listener) { emitter.on('preferencesSaved', listener); return function () { return emitter.off('preferencesSaved', listener); }; } exports.onPreferencesSaved = onPreferencesSaved; function savePreferences(_a) { var destinationPreferences = _a.destinationPreferences, customPreferences = _a.customPreferences, cookieDomain = _a.cookieDomain, integrationsExcludedFromLoading = _a.integrationsExcludedFromLoading; var wd = window; if (wd.analytics) { var integrations = (integrationsExcludedFromLoading || []).reduce(function (acc, name) { var _a; return (__assign(__assign({}, acc), (_a = {}, _a[name] = false, _a))); }, {}); wd.analytics.identify({ destinationTrackingPreferences: destinationPreferences, customTrackingPreferences: customPreferences }, { integrations: integrations }); } var domain = cookieDomain || top_domain_1.default(window.location.href); var value = { version: 1, destinations: destinationPreferences, custom: customPreferences }; js_cookie_1.default.set(COOKIE_KEY, value, { expires: COOKIE_EXPIRES, domain: domain, // eslint-disable-next-line @typescript-eslint/ban-ts-ignore // @ts-ignore sameSite: 'none', secure: true }); emitter.emit('preferencesSaved', { destinationPreferences: destinationPreferences, customPreferences: customPreferences }); } exports.savePreferences = savePreferences; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmVyZW5jZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uc2VudC1tYW5hZ2VyLWJ1aWxkZXIvcHJlZmVyZW5jZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUFvRDtBQUNwRCx3REFBK0I7QUFDL0IsbUVBQTJDO0FBRTNDLGlDQUFxQztBQUVyQyxJQUFNLFVBQVUsR0FBRyxzQkFBc0IsQ0FBQTtBQUN6Qyw0Q0FBNEM7QUFDNUMsSUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFBO0FBUTFCLHVDQUF1QztBQUN2QyxxREFBcUQ7QUFDckQsU0FBZ0IsZUFBZTtJQUM3QixJQUFNLFdBQVcsR0FBRyxtQkFBTyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUUvQyxJQUFJLENBQUMsV0FBVyxFQUFFO1FBQ2hCLE9BQU8sRUFBRSxDQUFBO0tBQ1Y7SUFFRCxPQUFPO1FBQ0wsc0JBQXNCLEVBQUUsV0FBVyxDQUFDLFlBQW1DO1FBQ3ZFLGlCQUFpQixFQUFFLFdBQVcsQ0FBQyxNQUE2QjtLQUM3RCxDQUFBO0FBQ0gsQ0FBQztBQVhELDBDQVdDO0FBT0QsSUFBTSxPQUFPLEdBQUcsSUFBSSxxQkFBWSxFQUFFLENBQUE7QUFFbEM7Ozs7O0dBS0c7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxRQUFzQztJQUN2RSxPQUFPLENBQUMsRUFBRSxDQUFDLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxDQUFBO0lBQ3hDLE9BQU8sY0FBTSxPQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsUUFBUSxDQUFDLEVBQXpDLENBQXlDLENBQUE7QUFDeEQsQ0FBQztBQUhELGdEQUdDO0FBRUQsU0FBZ0IsZUFBZSxDQUFDLEVBS2Q7UUFKaEIsa0RBQXNCLEVBQ3RCLHdDQUFpQixFQUNqQiw4QkFBWSxFQUNaLG9FQUErQjtJQUUvQixJQUFNLEVBQUUsR0FBRyxNQUF1QixDQUFBO0lBRWxDLElBQUksRUFBRSxDQUFDLFNBQVMsRUFBRTtRQUNoQixJQUFNLFlBQVksR0FBRyxDQUFDLCtCQUErQixJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFDLEdBQUcsRUFBRSxJQUFJOztZQUFLLE9BQUEsdUJBQzlFLEdBQUcsZ0JBQ0wsSUFBSSxJQUFHLEtBQUssT0FDYjtRQUhpRixDQUdqRixFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBRVAsRUFBRSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7WUFDcEIsOEJBQThCLEVBQUUsc0JBQXNCO1lBQ3RELHlCQUF5QixFQUFFLGlCQUFpQjtTQUM3QyxFQUFFLEVBQUUsWUFBWSxjQUFBLEVBQUUsQ0FBQyxDQUFBO0tBQ3JCO0lBRUQsSUFBTSxNQUFNLEdBQUcsWUFBWSxJQUFJLG9CQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUM5RCxJQUFNLEtBQUssR0FBRztRQUNaLE9BQU8sRUFBRSxDQUFDO1FBQ1YsWUFBWSxFQUFFLHNCQUFzQjtRQUNwQyxNQUFNLEVBQUUsaUJBQWlCO0tBQzFCLENBQUE7SUFFRCxtQkFBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFO1FBQzdCLE9BQU8sRUFBRSxjQUFjO1FBQ3ZCLE1BQU0sUUFBQTtRQUNOLDREQUE0RDtRQUM1RCxhQUFhO1FBQ2IsUUFBUSxFQUFFLE1BQU07UUFDaEIsTUFBTSxFQUFFLElBQUk7S0FDYixDQUFDLENBQUE7SUFFRixPQUFPLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1FBQy9CLHNCQUFzQix3QkFBQTtRQUN0QixpQkFBaUIsbUJBQUE7S0FDbEIsQ0FBQyxDQUFBO0FBQ0osQ0FBQztBQXhDRCwwQ0F3Q0MifQ==