UNPKG

@usercentrics/cmp-web-sdk

Version:

Usercentrics CMP Browser V3 SDK

1,346 lines (1,270 loc) 881 kB
var $parcel$global = globalThis; function $parcel$export(e, n, v, s) { Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true}); } function $parcel$interopDefault(a) { return a && a.__esModule ? a.default : a; } function $parcel$defineInteropFlag(a) { Object.defineProperty(a, '__esModule', {value: true, configurable: true}); } function $parcel$exportWildcard(dest, source) { Object.keys(source).forEach(function(key) { if (key === 'default' || key === '__esModule' || Object.prototype.hasOwnProperty.call(dest, key)) { return; } Object.defineProperty(dest, key, { enumerable: true, get: function get() { return source[key]; } }); }); return dest; } var $parcel$modules = {}; var $parcel$inits = {}; var parcelRequire = $parcel$global["parcelRequire94c2"]; if (parcelRequire == null) { parcelRequire = function(id) { if (id in $parcel$modules) { return $parcel$modules[id].exports; } if (id in $parcel$inits) { var init = $parcel$inits[id]; delete $parcel$inits[id]; var module = {id: id, exports: {}}; $parcel$modules[id] = module; init.call(module.exports, module, module.exports); return module.exports; } var err = new Error("Cannot find module '" + id + "'"); err.code = 'MODULE_NOT_FOUND'; throw err; }; parcelRequire.register = function register(id, init) { $parcel$inits[id] = init; }; $parcel$global["parcelRequire94c2"] = parcelRequire; } var parcelRegister = parcelRequire.register; parcelRegister("i3FOl", function(module, exports) { (function(root, factory) { // CommonJS module.exports = exports = factory((parcelRequire("cYot1"))); })(this, function(CryptoJS) { (function(Math1) { // Shortcuts var C = CryptoJS; var C_lib = C.lib; var WordArray = C_lib.WordArray; var Hasher = C_lib.Hasher; var C_algo = C.algo; // Initialization and round constants tables var H = []; var K = []; // Compute constants (function() { function isPrime(n) { var sqrtN = Math1.sqrt(n); for(var factor = 2; factor <= sqrtN; factor++){ if (!(n % factor)) return false; } return true; } function getFractionalBits(n) { return (n - (n | 0)) * 0x100000000 | 0; } var n = 2; var nPrime = 0; while(nPrime < 64){ if (isPrime(n)) { if (nPrime < 8) H[nPrime] = getFractionalBits(Math1.pow(n, 0.5)); K[nPrime] = getFractionalBits(Math1.pow(n, 1 / 3)); nPrime++; } n++; } })(); // Reusable object var W = []; /** * SHA-256 hash algorithm. */ var SHA256 = C_algo.SHA256 = Hasher.extend({ _doReset: function() { this._hash = new WordArray.init(H.slice(0)); }, _doProcessBlock: function(M, offset) { // Shortcut var H = this._hash.words; // Working variables var a = H[0]; var b = H[1]; var c = H[2]; var d = H[3]; var e = H[4]; var f = H[5]; var g = H[6]; var h = H[7]; // Computation for(var i = 0; i < 64; i++){ if (i < 16) W[i] = M[offset + i] | 0; else { var gamma0x = W[i - 15]; var gamma0 = (gamma0x << 25 | gamma0x >>> 7) ^ (gamma0x << 14 | gamma0x >>> 18) ^ gamma0x >>> 3; var gamma1x = W[i - 2]; var gamma1 = (gamma1x << 15 | gamma1x >>> 17) ^ (gamma1x << 13 | gamma1x >>> 19) ^ gamma1x >>> 10; W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]; } var ch = e & f ^ ~e & g; var maj = a & b ^ a & c ^ b & c; var sigma0 = (a << 30 | a >>> 2) ^ (a << 19 | a >>> 13) ^ (a << 10 | a >>> 22); var sigma1 = (e << 26 | e >>> 6) ^ (e << 21 | e >>> 11) ^ (e << 7 | e >>> 25); var t1 = h + sigma1 + ch + K[i] + W[i]; var t2 = sigma0 + maj; h = g; g = f; f = e; e = d + t1 | 0; d = c; c = b; b = a; a = t1 + t2 | 0; } // Intermediate hash value H[0] = H[0] + a | 0; H[1] = H[1] + b | 0; H[2] = H[2] + c | 0; H[3] = H[3] + d | 0; H[4] = H[4] + e | 0; H[5] = H[5] + f | 0; H[6] = H[6] + g | 0; H[7] = H[7] + h | 0; }, _doFinalize: function() { // Shortcuts var data = this._data; var dataWords = data.words; var nBitsTotal = this._nDataBytes * 8; var nBitsLeft = data.sigBytes * 8; // Add padding dataWords[nBitsLeft >>> 5] |= 0x80 << 24 - nBitsLeft % 32; dataWords[(nBitsLeft + 64 >>> 9 << 4) + 14] = Math1.floor(nBitsTotal / 0x100000000); dataWords[(nBitsLeft + 64 >>> 9 << 4) + 15] = nBitsTotal; data.sigBytes = dataWords.length * 4; // Hash final blocks this._process(); // Return final computed hash return this._hash; }, clone: function() { var clone = Hasher.clone.call(this); clone._hash = this._hash.clone(); return clone; } }); /** * Shortcut function to the hasher's object interface. * * @param {WordArray|string} message The message to hash. * * @return {WordArray} The hash. * * @static * * @example * * var hash = CryptoJS.SHA256('message'); * var hash = CryptoJS.SHA256(wordArray); */ C.SHA256 = Hasher._createHelper(SHA256); /** * Shortcut function to the HMAC's object interface. * * @param {WordArray|string} message The message to hash. * @param {WordArray|string} key The secret key. * * @return {WordArray} The HMAC. * * @static * * @example * * var hmac = CryptoJS.HmacSHA256(message, key); */ C.HmacSHA256 = Hasher._createHmacHelper(SHA256); })(Math); return CryptoJS.SHA256; }); }); parcelRegister("cYot1", function(module, exports) { (function(root, factory) { // CommonJS module.exports = exports = factory(); })(this, function() { /*globals window, global, require*/ /** * CryptoJS core components. */ var CryptoJS = CryptoJS || function(Math1, undefined) { var crypto; // Native crypto from window (Browser) if (typeof window !== 'undefined' && window.crypto) crypto = window.crypto; // Native crypto in web worker (Browser) if (typeof self !== 'undefined' && self.crypto) crypto = self.crypto; // Native crypto from worker if (typeof globalThis !== 'undefined' && globalThis.crypto) crypto = globalThis.crypto; // Native (experimental IE 11) crypto from window (Browser) if (!crypto && typeof window !== 'undefined' && window.msCrypto) crypto = window.msCrypto; // Native crypto from global (NodeJS) if (!crypto && typeof $parcel$global !== 'undefined' && $parcel$global.crypto) crypto = $parcel$global.crypto; // Native crypto import via require (NodeJS) if (!crypto && true) try { crypto = (parcelRequire("lIrsY")); } catch (err) {} /* * Cryptographically secure pseudorandom number generator * * As Math.random() is cryptographically not safe to use */ var cryptoSecureRandomInt = function() { if (crypto) { // Use getRandomValues method (Browser) if (typeof crypto.getRandomValues === 'function') try { return crypto.getRandomValues(new Uint32Array(1))[0]; } catch (err) {} // Use randomBytes method (NodeJS) if (typeof crypto.randomBytes === 'function') try { return crypto.randomBytes(4).readInt32LE(); } catch (err) {} } throw new Error('Native crypto module could not be used to get secure random number.'); }; /* * Local polyfill of Object.create */ var create = Object.create || function() { function F() {} return function(obj) { var subtype; F.prototype = obj; subtype = new F(); F.prototype = null; return subtype; }; }(); /** * CryptoJS namespace. */ var C = {}; /** * Library namespace. */ var C_lib = C.lib = {}; /** * Base object for prototypal inheritance. */ var Base = C_lib.Base = function() { return { /** * Creates a new object that inherits from this object. * * @param {Object} overrides Properties to copy into the new object. * * @return {Object} The new object. * * @static * * @example * * var MyType = CryptoJS.lib.Base.extend({ * field: 'value', * * method: function () { * } * }); */ extend: function(overrides) { // Spawn var subtype = create(this); // Augment if (overrides) subtype.mixIn(overrides); // Create default initializer if (!subtype.hasOwnProperty('init') || this.init === subtype.init) subtype.init = function() { subtype.$super.init.apply(this, arguments); }; // Initializer's prototype is the subtype object subtype.init.prototype = subtype; // Reference supertype subtype.$super = this; return subtype; }, /** * Extends this object and runs the init method. * Arguments to create() will be passed to init(). * * @return {Object} The new object. * * @static * * @example * * var instance = MyType.create(); */ create: function() { var instance = this.extend(); instance.init.apply(instance, arguments); return instance; }, /** * Initializes a newly created object. * Override this method to add some logic when your objects are created. * * @example * * var MyType = CryptoJS.lib.Base.extend({ * init: function () { * // ... * } * }); */ init: function() {}, /** * Copies properties into this object. * * @param {Object} properties The properties to mix in. * * @example * * MyType.mixIn({ * field: 'value' * }); */ mixIn: function(properties) { for(var propertyName in properties)if (properties.hasOwnProperty(propertyName)) this[propertyName] = properties[propertyName]; // IE won't copy toString using the loop above if (properties.hasOwnProperty('toString')) this.toString = properties.toString; }, /** * Creates a copy of this object. * * @return {Object} The clone. * * @example * * var clone = instance.clone(); */ clone: function() { return this.init.prototype.extend(this); } }; }(); /** * An array of 32-bit words. * * @property {Array} words The array of 32-bit words. * @property {number} sigBytes The number of significant bytes in this word array. */ var WordArray = C_lib.WordArray = Base.extend({ /** * Initializes a newly created word array. * * @param {Array} words (Optional) An array of 32-bit words. * @param {number} sigBytes (Optional) The number of significant bytes in the words. * * @example * * var wordArray = CryptoJS.lib.WordArray.create(); * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]); * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6); */ init: function(words, sigBytes) { words = this.words = words || []; if (sigBytes != undefined) this.sigBytes = sigBytes; else this.sigBytes = words.length * 4; }, /** * Converts this word array to a string. * * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex * * @return {string} The stringified word array. * * @example * * var string = wordArray + ''; * var string = wordArray.toString(); * var string = wordArray.toString(CryptoJS.enc.Utf8); */ toString: function(encoder) { return (encoder || Hex).stringify(this); }, /** * Concatenates a word array to this word array. * * @param {WordArray} wordArray The word array to append. * * @return {WordArray} This word array. * * @example * * wordArray1.concat(wordArray2); */ concat: function(wordArray) { // Shortcuts var thisWords = this.words; var thatWords = wordArray.words; var thisSigBytes = this.sigBytes; var thatSigBytes = wordArray.sigBytes; // Clamp excess bits this.clamp(); // Concat if (thisSigBytes % 4) // Copy one byte at a time for(var i = 0; i < thatSigBytes; i++){ var thatByte = thatWords[i >>> 2] >>> 24 - i % 4 * 8 & 0xff; thisWords[thisSigBytes + i >>> 2] |= thatByte << 24 - (thisSigBytes + i) % 4 * 8; } else // Copy one word at a time for(var j = 0; j < thatSigBytes; j += 4)thisWords[thisSigBytes + j >>> 2] = thatWords[j >>> 2]; this.sigBytes += thatSigBytes; // Chainable return this; }, /** * Removes insignificant bits. * * @example * * wordArray.clamp(); */ clamp: function() { // Shortcuts var words = this.words; var sigBytes = this.sigBytes; // Clamp words[sigBytes >>> 2] &= 0xffffffff << 32 - sigBytes % 4 * 8; words.length = Math1.ceil(sigBytes / 4); }, /** * Creates a copy of this word array. * * @return {WordArray} The clone. * * @example * * var clone = wordArray.clone(); */ clone: function() { var clone = Base.clone.call(this); clone.words = this.words.slice(0); return clone; }, /** * Creates a word array filled with random bytes. * * @param {number} nBytes The number of random bytes to generate. * * @return {WordArray} The random word array. * * @static * * @example * * var wordArray = CryptoJS.lib.WordArray.random(16); */ random: function(nBytes) { var words = []; for(var i = 0; i < nBytes; i += 4)words.push(cryptoSecureRandomInt()); return new WordArray.init(words, nBytes); } }); /** * Encoder namespace. */ var C_enc = C.enc = {}; /** * Hex encoding strategy. */ var Hex = C_enc.Hex = { /** * Converts a word array to a hex string. * * @param {WordArray} wordArray The word array. * * @return {string} The hex string. * * @static * * @example * * var hexString = CryptoJS.enc.Hex.stringify(wordArray); */ stringify: function(wordArray) { // Shortcuts var words = wordArray.words; var sigBytes = wordArray.sigBytes; // Convert var hexChars = []; for(var i = 0; i < sigBytes; i++){ var bite = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff; hexChars.push((bite >>> 4).toString(16)); hexChars.push((bite & 0x0f).toString(16)); } return hexChars.join(''); }, /** * Converts a hex string to a word array. * * @param {string} hexStr The hex string. * * @return {WordArray} The word array. * * @static * * @example * * var wordArray = CryptoJS.enc.Hex.parse(hexString); */ parse: function(hexStr) { // Shortcut var hexStrLength = hexStr.length; // Convert var words = []; for(var i = 0; i < hexStrLength; i += 2)words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << 24 - i % 8 * 4; return new WordArray.init(words, hexStrLength / 2); } }; /** * Latin1 encoding strategy. */ var Latin1 = C_enc.Latin1 = { /** * Converts a word array to a Latin1 string. * * @param {WordArray} wordArray The word array. * * @return {string} The Latin1 string. * * @static * * @example * * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray); */ stringify: function(wordArray) { // Shortcuts var words = wordArray.words; var sigBytes = wordArray.sigBytes; // Convert var latin1Chars = []; for(var i = 0; i < sigBytes; i++){ var bite = words[i >>> 2] >>> 24 - i % 4 * 8 & 0xff; latin1Chars.push(String.fromCharCode(bite)); } return latin1Chars.join(''); }, /** * Converts a Latin1 string to a word array. * * @param {string} latin1Str The Latin1 string. * * @return {WordArray} The word array. * * @static * * @example * * var wordArray = CryptoJS.enc.Latin1.parse(latin1String); */ parse: function(latin1Str) { // Shortcut var latin1StrLength = latin1Str.length; // Convert var words = []; for(var i = 0; i < latin1StrLength; i++)words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << 24 - i % 4 * 8; return new WordArray.init(words, latin1StrLength); } }; /** * UTF-8 encoding strategy. */ var Utf8 = C_enc.Utf8 = { /** * Converts a word array to a UTF-8 string. * * @param {WordArray} wordArray The word array. * * @return {string} The UTF-8 string. * * @static * * @example * * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray); */ stringify: function(wordArray) { try { return decodeURIComponent(escape(Latin1.stringify(wordArray))); } catch (e) { throw new Error('Malformed UTF-8 data'); } }, /** * Converts a UTF-8 string to a word array. * * @param {string} utf8Str The UTF-8 string. * * @return {WordArray} The word array. * * @static * * @example * * var wordArray = CryptoJS.enc.Utf8.parse(utf8String); */ parse: function(utf8Str) { return Latin1.parse(unescape(encodeURIComponent(utf8Str))); } }; /** * Abstract buffered block algorithm template. * * The property blockSize must be implemented in a concrete subtype. * * @property {number} _minBufferSize The number of blocks that should be kept unprocessed in the buffer. Default: 0 */ var BufferedBlockAlgorithm = C_lib.BufferedBlockAlgorithm = Base.extend({ /** * Resets this block algorithm's data buffer to its initial state. * * @example * * bufferedBlockAlgorithm.reset(); */ reset: function() { // Initial values this._data = new WordArray.init(); this._nDataBytes = 0; }, /** * Adds new data to this block algorithm's buffer. * * @param {WordArray|string} data The data to append. Strings are converted to a WordArray using UTF-8. * * @example * * bufferedBlockAlgorithm._append('data'); * bufferedBlockAlgorithm._append(wordArray); */ _append: function(data) { // Convert string to WordArray, else assume WordArray already if (typeof data == 'string') data = Utf8.parse(data); // Append this._data.concat(data); this._nDataBytes += data.sigBytes; }, /** * Processes available data blocks. * * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype. * * @param {boolean} doFlush Whether all blocks and partial blocks should be processed. * * @return {WordArray} The processed data. * * @example * * var processedData = bufferedBlockAlgorithm._process(); * var processedData = bufferedBlockAlgorithm._process(!!'flush'); */ _process: function(doFlush) { var processedWords; // Shortcuts var data = this._data; var dataWords = data.words; var dataSigBytes = data.sigBytes; var blockSize = this.blockSize; var blockSizeBytes = blockSize * 4; // Count blocks ready var nBlocksReady = dataSigBytes / blockSizeBytes; if (doFlush) // Round up to include partial blocks nBlocksReady = Math1.ceil(nBlocksReady); else // Round down to include only full blocks, // less the number of blocks that must remain in the buffer nBlocksReady = Math1.max((nBlocksReady | 0) - this._minBufferSize, 0); // Count words ready var nWordsReady = nBlocksReady * blockSize; // Count bytes ready var nBytesReady = Math1.min(nWordsReady * 4, dataSigBytes); // Process blocks if (nWordsReady) { for(var offset = 0; offset < nWordsReady; offset += blockSize)// Perform concrete-algorithm logic this._doProcessBlock(dataWords, offset); // Remove processed words processedWords = dataWords.splice(0, nWordsReady); data.sigBytes -= nBytesReady; } // Return processed words return new WordArray.init(processedWords, nBytesReady); }, /** * Creates a copy of this object. * * @return {Object} The clone. * * @example * * var clone = bufferedBlockAlgorithm.clone(); */ clone: function() { var clone = Base.clone.call(this); clone._data = this._data.clone(); return clone; }, _minBufferSize: 0 }); /** * Abstract hasher template. * * @property {number} blockSize The number of 32-bit words this hasher operates on. Default: 16 (512 bits) */ var Hasher = C_lib.Hasher = BufferedBlockAlgorithm.extend({ /** * Configuration options. */ cfg: Base.extend(), /** * Initializes a newly created hasher. * * @param {Object} cfg (Optional) The configuration options to use for this hash computation. * * @example * * var hasher = CryptoJS.algo.SHA256.create(); */ init: function(cfg) { // Apply config defaults this.cfg = this.cfg.extend(cfg); // Set initial values this.reset(); }, /** * Resets this hasher to its initial state. * * @example * * hasher.reset(); */ reset: function() { // Reset data buffer BufferedBlockAlgorithm.reset.call(this); // Perform concrete-hasher logic this._doReset(); }, /** * Updates this hasher with a message. * * @param {WordArray|string} messageUpdate The message to append. * * @return {Hasher} This hasher. * * @example * * hasher.update('message'); * hasher.update(wordArray); */ update: function(messageUpdate) { // Append this._append(messageUpdate); // Update the hash this._process(); // Chainable return this; }, /** * Finalizes the hash computation. * Note that the finalize operation is effectively a destructive, read-once operation. * * @param {WordArray|string} messageUpdate (Optional) A final message update. * * @return {WordArray} The hash. * * @example * * var hash = hasher.finalize(); * var hash = hasher.finalize('message'); * var hash = hasher.finalize(wordArray); */ finalize: function(messageUpdate) { // Final message update if (messageUpdate) this._append(messageUpdate); // Perform concrete-hasher logic var hash = this._doFinalize(); return hash; }, blockSize: 16, /** * Creates a shortcut function to a hasher's object interface. * * @param {Hasher} hasher The hasher to create a helper for. * * @return {Function} The shortcut function. * * @static * * @example * * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256); */ _createHelper: function(hasher) { return function(message, cfg) { return new hasher.init(cfg).finalize(message); }; }, /** * Creates a shortcut function to the HMAC's object interface. * * @param {Hasher} hasher The hasher to use in this HMAC helper. * * @return {Function} The shortcut function. * * @static * * @example * * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256); */ _createHmacHelper: function(hasher) { return function(message, key) { return new C_algo.HMAC.init(hasher, key).finalize(message); }; } }); /** * Algorithm namespace. */ var C_algo = C.algo = {}; return C; }(Math); return CryptoJS; }); }); parcelRegister("lIrsY", function(module, exports) { "use strict"; }); parcelRegister("lRUbA", function(module, exports) { $parcel$export(module.exports, "GppModel", () => $7cb84b07bccaa11a$export$ff3976a9fa2966cf); var $7Ly5i = parcelRequire("7Ly5i"); parcelRequire("9mmai"); var $1oYtO = parcelRequire("1oYtO"); var $6SCqs = parcelRequire("6SCqs"); var $1ilNd = parcelRequire("1ilNd"); var $2EThT = parcelRequire("2EThT"); class $7cb84b07bccaa11a$export$ff3976a9fa2966cf { constructor({ cmpId: cmpId, cmpVersion: cmpVersion, mspa: mspa, gpcSignalHonoured: gpcSignalHonoured }, { currentLocation: currentLocation, consentData: consentData }){ this.consentType = 'IMPLICIT'; this.usString = ''; this.setCmpSignalReady = async ()=>{ this.gppApi.setSignalStatus((0, $2EThT.SignalStatus).READY); }; this.setCmpStatusLoaded = async ()=>{ this.gppApi.setCmpStatus((0, $1ilNd.CmpStatus).LOADED); }; this.setCmpDisplayDisabled = async ()=>{ this.gppApi.setCmpDisplayStatus((0, $6SCqs.CmpDisplayStatus).DISABLED); }; this.setCmpDisplayHidden = async ()=>{ this.gppApi.setCmpDisplayStatus((0, $6SCqs.CmpDisplayStatus).HIDDEN); }; this.setCmpDisplayVisible = async ()=>{ this.gppApi.setCmpDisplayStatus((0, $6SCqs.CmpDisplayStatus).VISIBLE); }; this.setSectionString = async (sectionName, sectionString)=>{ if (sectionString !== '') { this.gppApi.setSectionString(sectionName, sectionString); this.gppApi.fireSectionChange(sectionName); this.gppApi.getGppString(); } }; this.gppApi = new (0, $1oYtO.CmpApi)(cmpId, cmpVersion); this.gppApi.setCmpStatus((0, $1ilNd.CmpStatus).LOADING); this.gppApi.setSignalStatus((0, $2EThT.SignalStatus).NOT_READY); this.gppApi.setSupportedAPIs([ '7:usnat', '13:usfl' ]); this.gpcSignalHonoured = gpcSignalHonoured; this.mspa = mspa; if (consentData) { this.usString = consentData.usnatString || consentData.usflString || ''; // Region has changed -> we need to adjust the string to the specific section if (currentLocation && currentLocation.region === 'FL' && consentData.usnatString) { this.hasOptedOut = this.gppApi.getFieldValue('usnat', 'SaleOptOut'); this.legalSection = 'usfl'; this.generateUsflString(); } // Region has changed -> we need to adjust the string to the specific section if (currentLocation && currentLocation.region !== 'FL' && consentData.usflString) { this.hasOptedOut = this.gppApi.getFieldValue('usfl', 'SaleOptOut'); this.legalSection = 'usnat'; this.generateUsnatString(); } else { this.legalSection = Object.keys((0, $7Ly5i.APPLICABLE_SECTIONS)).find((key)=>(0, $7Ly5i.APPLICABLE_SECTIONS)[key] === this.gppApi.getApplicableSections()[0]); this.hasOptedOut = this.gppApi.getFieldValue(this.legalSection, 'SaleOptOut'); } this.gppApi.setGppString(this.usString); } else { this.hasOptedOut = 2; this.legalSection = currentLocation?.region === 'FL' ? 'usfl' : 'usnat'; } } resetGpp() { this.gppApi = {}; } getGppLegalFramework(settingsType, location) { let section = 'usnat'; if (settingsType === 'TCF') section = 'tcfeuv2'; if (location?.country === 'US' && location?.region === 'FL') section = 'usfl'; // For now we default any US legislation (apart from Florida) to US National this.legalSection = section; return section; } setNoticeFields(sectionName) { const isServiceProviderMode = this.mspa.mode === 'SERVICE_PROVIDER'; const isOptOutMode = this.mspa.mode === 'OPT_OUT_OPTION'; const noticeValue = isServiceProviderMode || isOptOutMode ? 0 : 1; this.gppApi.setFieldValue(sectionName, 'SaleOptOutNotice', noticeValue); this.gppApi.setFieldValue(sectionName, 'TargetedAdvertisingOptOutNotice', noticeValue); if (sectionName === 'usfl') this.gppApi.setFieldValue(sectionName, 'ProcessingNotice', noticeValue); if (sectionName === 'usnat') { this.gppApi.setFieldValue(sectionName, 'SharingNotice', noticeValue); this.gppApi.setFieldValue(sectionName, 'SharingOptOutNotice', noticeValue); this.gppApi.setFieldValue(sectionName, 'SensitiveDataProcessingOptOutNotice', noticeValue); this.gppApi.setFieldValue(sectionName, 'SensitiveDataLimitUseNotice', noticeValue); } } getOptOutValue(defaultValue) { switch(this.mspa.mode){ case 'SERVICE_PROVIDER': return 0; case 'OPT_OUT_OPTION': return 2; default: return defaultValue; } } setOptOutFields(sectionName) { const saleOptOutNotice = this.gppApi.getFieldValue(sectionName, 'SaleOptOutNotice'); const targetedAdvertisingOptOutNotice = this.gppApi.getFieldValue(sectionName, 'TargetedAdvertisingOptOutNotice'); const saleOptOut = saleOptOutNotice === 0 ? 0 : this.hasOptedOut; const targetedAdvertisingOptOut = targetedAdvertisingOptOutNotice === 0 ? 0 : this.hasOptedOut; this.gppApi.setFieldValue(sectionName, 'SaleOptOut', this.getOptOutValue(saleOptOut)); this.gppApi.setFieldValue(sectionName, 'TargetedAdvertisingOptOut', this.getOptOutValue(targetedAdvertisingOptOut)); if (sectionName === 'usnat') { const sharingOptOutNotice = this.gppApi.getFieldValue(sectionName, 'SharingOptOutNotice'); const sharingOptOut = sharingOptOutNotice === 0 ? 0 : this.hasOptedOut; this.gppApi.setFieldValue(sectionName, 'SharingOptOut', this.getOptOutValue(sharingOptOut)); } } setSpecialFields(sectionName) { // Usercentrics doesn't collect these types of consents so we set them all to not applicable const sensitiveDataProcessing = sectionName === 'usfl' ? [ 0, 0, 0, 0, 0, 0, 0, 0 ] : [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]; const knownChildSensitiveDataConsents = [ 0, 0, 0 ]; const personalDataConsents = 0; const additionalDataProcessingConsent = 0; this.gppApi.setFieldValue(sectionName, 'SensitiveDataProcessing', sensitiveDataProcessing); this.gppApi.setFieldValue(sectionName, 'KnownChildSensitiveDataConsents', knownChildSensitiveDataConsents); if (sectionName === 'usfl') this.gppApi.setFieldValue(sectionName, 'AdditionalDataProcessingConsent', additionalDataProcessingConsent); if (sectionName === 'usnat') this.gppApi.setFieldValue(sectionName, 'PersonalDataConsents', personalDataConsents); } setMspaFields(sectionName) { const mspaCoveredTransaction = this.mspa.coveredTransaction ? 1 : 2; // 1-Yes | 2-No let mspaOptOutOptionMode = this.mspa.mode === 'OPT_OUT_OPTION' ? 1 : 2; // 0-Not Applicable | 1-Yes | 2-No let mspaServiceProviderMode = this.mspa.mode === 'SERVICE_PROVIDER' ? 1 : 2; // 0-Not Applicable | 1-Yes | 2-No if (mspaCoveredTransaction === 2) { mspaServiceProviderMode = 0; mspaOptOutOptionMode = 0; } else { if (mspaOptOutOptionMode === 1) mspaServiceProviderMode = 2; if (mspaServiceProviderMode === 1) mspaOptOutOptionMode = 2; } this.gppApi.setFieldValue(sectionName, 'MspaCoveredTransaction', mspaCoveredTransaction); this.gppApi.setFieldValue(sectionName, 'MspaOptOutOptionMode', mspaOptOutOptionMode); this.gppApi.setFieldValue(sectionName, 'MspaServiceProviderMode', mspaServiceProviderMode); } setHasOptedOut(hasOptedOut, consentType) { this.hasOptedOut = hasOptedOut ? 1 : 2; this.consentType = consentType; } setApplicableSections(settingsType, location) { const legalFramework = this.getGppLegalFramework(settingsType, location); try { this.gppApi.setApplicableSections([ (0, $7Ly5i.APPLICABLE_SECTIONS)[legalFramework] ]); } catch (error) { throw new Error(`GppService - setApplicableSections - unrecognized legal framework "${legalFramework}"`); } } setUsString(usString) { this.gppApi.setGppString(usString); } generateUsString() { switch(this.legalSection){ case 'usfl': return this.generateUsflString(); default: return this.generateUsnatString(); } } getLegalSection() { return this.legalSection; } generateUsnatString() { this.gppApi.setFieldValue('usnat', 'Version', (0, $7Ly5i.USNAT_VERSION)); this.setNoticeFields('usnat'); this.setOptOutFields('usnat'); this.setSpecialFields('usnat'); this.setMspaFields('usnat'); const subsectionType = this.gpcSignalHonoured && navigator.globalPrivacyControl !== undefined ? 1 : 0; const gpc = subsectionType === 1 && navigator.globalPrivacyControl; this.gppApi.setFieldValue('usnat', 'GpcSegmentType', subsectionType); this.gppApi.setFieldValue('usnat', 'Gpc', gpc); this.usString = this.gppApi.getGppString(); } generateUsflString() { this.gppApi.setFieldValue('usfl', 'Version', (0, $7Ly5i.USFL_VERSION)); this.setNoticeFields('usfl'); this.setOptOutFields('usfl'); this.setSpecialFields('usfl'); this.setMspaFields('usfl'); this.usString = this.gppApi.getGppString(); } } }); parcelRegister("7Ly5i", function(module, exports) { $parcel$export(module.exports, "USNAT_VERSION", () => $7ece1e890cf03a4e$export$2fdd0aa187c1c4e1); $parcel$export(module.exports, "USFL_VERSION", () => $7ece1e890cf03a4e$export$3243af568b1bf9d6); $parcel$export(module.exports, "APPLICABLE_SECTIONS", () => $7ece1e890cf03a4e$export$5b75ee6e96a7d5eb); const $7ece1e890cf03a4e$export$68beac7206e2f1e7 = 1; const $7ece1e890cf03a4e$export$2fdd0aa187c1c4e1 = 2; const $7ece1e890cf03a4e$export$3243af568b1bf9d6 = 1; var $7ece1e890cf03a4e$export$6bbf1b342869de90 = /*#__PURE__*/ function(MSPA_MODE) { MSPA_MODE["OPT_OUT_OPTION"] = "OPT_OUT_OPTION"; MSPA_MODE["SERVICE_PROVIDER"] = "SERVICE_PROVIDER"; MSPA_MODE["NOT_APPLICABLE"] = "NOT_APPLICABLE"; return MSPA_MODE; }({}); const $7ece1e890cf03a4e$export$5b75ee6e96a7d5eb = { tcfeuv1: 1, tcfeuv2: 2, tcfcav1: 5, uspv1: 6, usnat: 7, usca: 8, usva: 9, usco: 10, usut: 11, usct: 12, usfl: 13, usmt: 14, usor: 15, ustx: 16, usde: 17, usia: 18, usne: 19, usnh: 20, usnj: 21, ustn: 22, usmn: 23 }; }); parcelRegister("9mmai", function(module, exports) { $parcel$export(module.exports, "CmpDisplayStatus", () => (parcelRequire("6SCqs")).CmpDisplayStatus); $parcel$export(module.exports, "CmpStatus", () => (parcelRequire("1ilNd")).CmpStatus); $parcel$export(module.exports, "SignalStatus", () => (parcelRequire("2EThT")).SignalStatus); $parcel$export(module.exports, "CmpApi", () => (parcelRequire("1oYtO")).CmpApi); parcelRequire("8oAHT"); parcelRequire("8qRfp"); parcelRequire("gixlH"); parcelRequire("1oYtO"); parcelRequire("azTb6"); }); parcelRegister("8oAHT", function(module, exports) { $parcel$export(module.exports, "CmpDisplayStatus", () => (parcelRequire("6SCqs")).CmpDisplayStatus); $parcel$export(module.exports, "CmpStatus", () => (parcelRequire("1ilNd")).CmpStatus); $parcel$export(module.exports, "SignalStatus", () => (parcelRequire("2EThT")).SignalStatus); parcelRequire("48bwQ"); parcelRequire("fx2bn"); parcelRequire("8aJ1Y"); parcelRequire("3uos6"); parcelRequire("alTlh"); parcelRequire("6fchB"); parcelRequire("hxC9C"); }); parcelRegister("48bwQ", function(module, exports) { parcelRequire("98AVy"); parcelRequire("cHjrw"); parcelRequire("hf6jC"); parcelRequire("kUBxL"); parcelRequire("17eys"); parcelRequire("8ekRc"); parcelRequire("d4WtB"); parcelRequire("9RsUY"); parcelRequire("84OjE"); parcelRequire("lcJDH"); }); parcelRegister("98AVy", function(module, exports) { $parcel$export(module.exports, "AddEventListenerCommand", () => $7a0a2b5041927d12$export$6006eaf92e98d6fa); var $cHjrw = parcelRequire("cHjrw"); var $aL46y = parcelRequire("aL46y"); var $jxTvZ = parcelRequire("jxTvZ"); class $7a0a2b5041927d12$export$6006eaf92e98d6fa extends (0, $cHjrw.Command) { respond() { const listenerId = this.cmpApiContext.eventQueue.add({ callback: this.callback, parameter: this.parameter }); const eventData = new (0, $aL46y.EventData)('listenerRegistered', listenerId, true, new (0, $jxTvZ.PingData)(this.cmpApiContext)); this.invokeCallback(eventData); } } }); parcelRegister("cHjrw", function(module, exports) { $parcel$export(module.exports, "Command", () => $2398a51c8c746a82$export$cc7e12c76513e857); class $2398a51c8c746a82$export$cc7e12c76513e857 { // eslint-disable-next-line @typescript-eslint/no-explicit-any constructor(cmpApiContext, callback, parameter){ this.success = true; this.cmpApiContext = cmpApiContext; Object.assign(this, { callback: callback, parameter: parameter }); } execute() { try { return this.respond(); } catch (error) { this.invokeCallback(null); return null; } } // eslint-disable-next-line @typescript-eslint/no-explicit-any invokeCallback(response) { const success = response !== null; if (this.callback) this.callback(response, success); } } }); parcelRegister("aL46y", function(module, exports) { $parcel$export(module.exports, "EventData", () => $c9e6934b49f483eb$export$a5cf049e34c3d11e); class $c9e6934b49f483eb$export$a5cf049e34c3d11e { constructor(eventName, listenerId, data, pingData){ this.eventName = eventName; this.listenerId = listenerId; this.data = data; this.pingData = pingData; } } }); parcelRegister("jxTvZ", function(module, exports) { $parcel$export(module.exports, "PingData", () => $eeb8c463ca5c376c$export$5ffedf5aad38d8b7); class $eeb8c463ca5c376c$export$5ffedf5aad38d8b7 { constructor(cmpApiContext){ this.gppVersion = cmpApiContext.gppVersion; this.cmpStatus = cmpApiContext.cmpStatus; this.cmpDisplayStatus = cmpApiContext.cmpDisplayStatus; this.signalStatus = cmpApiContext.signalStatus; this.supportedAPIs = cmpApiContext.supportedAPIs; this.cmpId = cmpApiContext.cmpId; this.sectionList = cmpApiContext.gppModel.getSectionIds(); this.applicableSections = cmpApiContext.applicableSections; this.gppString = cmpApiContext.gppModel.encode(); this.parsedSections = cmpApiContext.gppModel.toObject(); } } }); parcelRegister("hf6jC", function(module, exports) { }); parcelRegister("kUBxL", function(module, exports) { $parcel$export(module.exports, "CommandMap", () => $92ec133b8f8d622d$export$da59fe55567e9df3); var $98AVy = parcelRequire("98AVy"); var $17eys = parcelRequire("17eys"); var $8ekRc = parcelRequire("8ekRc"); var $d4WtB = parcelRequire("d4WtB"); var $9RsUY = parcelRequire("9RsUY"); var $84OjE = parcelRequire("84OjE"); var $lcJDH = parcelRequire("lcJDH"); let $92ec133b8f8d622d$var$prop, $92ec133b8f8d622d$var$prop1, $92ec133b8f8d622d$var$prop2, $92ec133b8f8d622d$var$prop3, $92ec133b8f8d622d$var$prop4, $92ec133b8f8d622d$var$prop5; class $92ec133b8f8d622d$export$da59fe55567e9df3 { static{ $92ec133b8f8d622d$var$prop = (0, $d4WtB.GppCommand).ADD_EVENT_LISTENER; $92ec133b8f8d622d$var$prop1 = (0, $d4WtB.GppCommand).GET_FIELD; $92ec133b8f8d622d$var$prop2 = (0, $d4WtB.GppCommand).GET_SECTION; $92ec133b8f8d622d$var$prop3 = (0, $d4WtB.GppCommand).HAS_SECTION; $92ec133b8f8d622d$var$prop4 = (0, $d4WtB.GppCommand).PING; $92ec133b8f8d622d$var$prop5 = (0, $d4WtB.GppCommand).REMOVE_EVENT_LISTENER; } static{ this[$92ec133b8f8d622d$var$prop] = (0, $98AVy.AddEventListenerCommand); } static{ this[$92ec133b8f8d622d$var$prop1] = (0, $17eys.GetFieldCommand); } static{ this[$92ec133b8f8d622d$var$prop2] = (0, $8ekRc.GetSectionCommand); } static{ this[$92ec133b8f8d622d$var$prop3] = (0, $9RsUY.HasSectionCommand); } static{ this[$92ec133b8f8d622d$var$prop4] = (0, $84OjE.PingCommand); } static{ this[$92ec133b8f8d622d$var$prop5] = (0, $lcJDH.RemoveEventListenerCommand); } } }); parcelRegister("17eys", function(module, exports) { $parcel$export(module.exports, "GetFieldCommand", () => $8cabe04abe099666$export$85e47f609e0e2e44); var $cHjrw = parcelRequire("cHjrw"); class $8cabe04abe099666$export$85e47f609e0e2e44 extends (0, $cHjrw.Command) { respond() { if (!this.parameter || this.parameter.length === 0) throw new Error('<section>.<field> parameter required'); const parts = this.parameter.split('.'); if (parts.length != 2) throw new Error('Field name must be in the format <section>.<fieldName>'); const sectionName = parts[0]; const fieldName = parts[1]; const fieldValue = this.cmpApiContext.gppModel.getFieldValue(sectionName, fieldName); this.invokeCallback(fieldValue); } } }); parcelRegister("8ekRc", function(module, exports) { $parcel$export(module.exports, "GetSectionCommand", () => $eb57fa57db844b98$export$6e3f8c5bb8fac354); var $cHjrw = parcelRequire("cHjrw"); class $eb57fa57db844b98$export$6e3f8c5bb8fac354 extends (0, $cHjrw.Command) { respond() { if (!this.parameter || this.parameter.length === 0) throw new Error('<section> parameter required'); let section = null; if (this.cmpApiContext.gppModel.hasSection(this.parameter)) section = this.cmpApiContext.gppModel.getSection(this.parameter); this.invokeCallback(section); } } }); parcelRegister("d4WtB", function(module, exports) { $parcel$export(module.exports, "GppCommand", () => $049ed30feb98204a$export$9456accc2d74be3d); var $049ed30feb98204a$export$9456accc2d74be3d = /*#__PURE__*/ function(GppCommand) { GppCommand["ADD_EVENT_LISTENER"] = "addEventListener"; GppCommand["GET_FIELD"] = "getField"; GppCommand["GET_SECTION"] = "getSection"; GppCommand["HAS_SECTION"] = "hasSection"; GppCommand["PING"] = "ping"; GppCommand["REMOVE_EVENT_LISTENER"] = "removeEventListener"; return GppCommand; }({}); }); parcelRegister("9RsUY", function(module, exports) { $parcel$export(module.exports, "HasSectionCommand", () => $7f485bedcd2b69ff$export$856425bebd241c69); var $cHjrw = parcelRequire("cHjrw"); class $7f485bedcd2b69ff$export$856425bebd241c69 extends (0, $cHjrw.Command) { respond() { if (!this.parameter || this.parameter.length === 0) throw new Error('<section>[.version] parameter required'); const hasSection = this.cmpApiContext.gppModel.hasSection(this.parameter); this.invokeCallback(hasSection); } } }); parcelRegister("84OjE", function(module, exports) { $parcel$export(module.exports, "PingCommand", () => $dfe3c99443c60193$export$1aca4d096434e94); var $cHjrw = parcelRequire("cHjrw"); var $jxTvZ = parcelRequire("jxTvZ"); class $dfe3c99443c60193$export$1aca4d096434e94 extends (0, $cHjrw.Command) { respond() { const pingReturn = new (0, $jxTvZ.PingData)(this.cmpApiContext);