UNPKG

@sonofatailor/consent-manager

Version:

Drop-in consent management plugin for analytics.js

74 lines 5.08 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); }; // TODO: remove duplicate cookie library from bundle import cookies from 'js-cookie'; import topDomain from '@segment/top-domain'; import { EventEmitter } from '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 export function loadPreferences() { var preferences = cookies.getJSON(COOKIE_KEY); if (!preferences) { return {}; } return { destinationPreferences: preferences.destinations, customPreferences: preferences.custom }; } var emitter = new 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 */ export function onPreferencesSaved(listener) { emitter.on('preferencesSaved', listener); return function () { return emitter.off('preferencesSaved', listener); }; } export 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 || topDomain(window.location.href); var value = { version: 1, destinations: destinationPreferences, custom: customPreferences }; cookies.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 }); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmVyZW5jZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uc2VudC1tYW5hZ2VyLWJ1aWxkZXIvcHJlZmVyZW5jZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxvREFBb0Q7QUFDcEQsT0FBTyxPQUFPLE1BQU0sV0FBVyxDQUFBO0FBQy9CLE9BQU8sU0FBUyxNQUFNLHFCQUFxQixDQUFBO0FBRTNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxRQUFRLENBQUE7QUFFckMsSUFBTSxVQUFVLEdBQUcsc0JBQXNCLENBQUE7QUFDekMsNENBQTRDO0FBQzVDLElBQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQTtBQVExQix1Q0FBdUM7QUFDdkMscURBQXFEO0FBQ3JELE1BQU0sVUFBVSxlQUFlO0lBQzdCLElBQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUE7SUFFL0MsSUFBSSxDQUFDLFdBQVcsRUFBRTtRQUNoQixPQUFPLEVBQUUsQ0FBQTtLQUNWO0lBRUQsT0FBTztRQUNMLHNCQUFzQixFQUFFLFdBQVcsQ0FBQyxZQUFtQztRQUN2RSxpQkFBaUIsRUFBRSxXQUFXLENBQUMsTUFBNkI7S0FDN0QsQ0FBQTtBQUNILENBQUM7QUFPRCxJQUFNLE9BQU8sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFBO0FBRWxDOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLGtCQUFrQixDQUFDLFFBQXNDO0lBQ3ZFLE9BQU8sQ0FBQyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFDeEMsT0FBTyxjQUFNLE9BQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLENBQUMsRUFBekMsQ0FBeUMsQ0FBQTtBQUN4RCxDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxFQUtkO1FBSmhCLGtEQUFzQixFQUN0Qix3Q0FBaUIsRUFDakIsOEJBQVksRUFDWixvRUFBK0I7SUFFL0IsSUFBTSxFQUFFLEdBQUcsTUFBdUIsQ0FBQTtJQUVsQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLEVBQUU7UUFDaEIsSUFBTSxZQUFZLEdBQUcsQ0FBQywrQkFBK0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBQyxHQUFHLEVBQUUsSUFBSTs7WUFBSyxPQUFBLHVCQUM5RSxHQUFHLGdCQUNMLElBQUksSUFBRyxLQUFLLE9BQ2I7UUFIaUYsQ0FHakYsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVQLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDO1lBQ3BCLDhCQUE4QixFQUFFLHNCQUFzQjtZQUN0RCx5QkFBeUIsRUFBRSxpQkFBaUI7U0FDN0MsRUFBRSxFQUFFLFlBQVksY0FBQSxFQUFFLENBQUMsQ0FBQTtLQUNyQjtJQUVELElBQU0sTUFBTSxHQUFHLFlBQVksSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUM5RCxJQUFNLEtBQUssR0FBRztRQUNaLE9BQU8sRUFBRSxDQUFDO1FBQ1YsWUFBWSxFQUFFLHNCQUFzQjtRQUNwQyxNQUFNLEVBQUUsaUJBQWlCO0tBQzFCLENBQUE7SUFFRCxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUU7UUFDN0IsT0FBTyxFQUFFLGNBQWM7UUFDdkIsTUFBTSxRQUFBO1FBQ04sNERBQTREO1FBQzVELGFBQWE7UUFDYixRQUFRLEVBQUUsTUFBTTtRQUNoQixNQUFNLEVBQUUsSUFBSTtLQUNiLENBQUMsQ0FBQTtJQUVGLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUU7UUFDL0Isc0JBQXNCLHdCQUFBO1FBQ3RCLGlCQUFpQixtQkFBQTtLQUNsQixDQUFDLENBQUE7QUFDSixDQUFDIn0=