@usercentrics/cmp-web-sdk
Version:
Usercentrics CMP Browser V3 SDK
1,346 lines (1,270 loc) • 881 kB
JavaScript
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);