@deriv-com/analytics 1.38.8 → 1.38.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -8
- package/dist/browser/analytics.bundle.global.js +12 -12
- package/dist/browser/analytics.bundle.global.js.map +1 -1
- package/dist/browser/analytics.esm.mjs +1 -7
- package/dist/browser/analytics.esm.mjs.map +1 -1
- package/dist/chunk-7CT4XR74.mjs +3 -0
- package/dist/chunk-7CT4XR74.mjs.map +1 -0
- package/dist/chunk-BVGYK54Z.js +4 -0
- package/dist/chunk-BVGYK54Z.js.map +1 -0
- package/dist/chunk-D2MKQCJB.mjs +3 -0
- package/dist/chunk-D2MKQCJB.mjs.map +1 -0
- package/dist/chunk-FE5YWK6A.js +3 -0
- package/dist/chunk-FE5YWK6A.js.map +1 -0
- package/dist/chunk-ID2GN2PS.mjs +4 -0
- package/dist/chunk-ID2GN2PS.mjs.map +1 -0
- package/dist/chunk-ILN7DKKL.js +3 -0
- package/dist/chunk-ILN7DKKL.js.map +1 -0
- package/dist/chunk-OB6HH25Z.mjs +9 -0
- package/dist/chunk-OB6HH25Z.mjs.map +1 -0
- package/dist/chunk-YGU4ZMIH.mjs +14 -0
- package/dist/chunk-YGU4ZMIH.mjs.map +1 -0
- package/dist/growthbook-3K6VUME4.mjs +3 -0
- package/dist/growthbook-3K6VUME4.mjs.map +1 -0
- package/dist/index.d.mts +9 -5
- package/dist/index.d.ts +9 -5
- package/dist/index.js +2 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -3
- package/dist/index.mjs.map +1 -1
- package/dist/metafile-cjs.json +1 -1
- package/dist/metafile-esm.json +1 -1
- package/dist/metafile-iife.json +1 -1
- package/dist/posthog-ANAV4RFJ.mjs +6 -0
- package/dist/posthog-ANAV4RFJ.mjs.map +1 -0
- package/dist/{posthog-Df2P2mKj.d.mts → posthog-Ds4g1sJf.d.mts} +21 -7
- package/dist/{posthog-BXTVRi7y.d.ts → posthog-DvDj4azD.d.ts} +21 -7
- package/dist/providers/growthbook/index.d.mts +5 -3
- package/dist/providers/growthbook/index.d.ts +5 -3
- package/dist/providers/growthbook/index.js +2 -2
- package/dist/providers/growthbook/index.js.map +1 -1
- package/dist/providers/growthbook/index.mjs +2 -2
- package/dist/providers/growthbook/index.mjs.map +1 -1
- package/dist/providers/posthog/index.d.mts +1 -1
- package/dist/providers/posthog/index.d.ts +1 -1
- package/dist/providers/posthog/index.js +2 -2
- package/dist/providers/posthog/index.js.map +1 -1
- package/dist/providers/posthog/index.mjs +2 -2
- package/dist/providers/posthog/index.mjs.map +1 -1
- package/dist/providers/rudderstack/index.d.mts +5 -2
- package/dist/providers/rudderstack/index.d.ts +5 -2
- package/dist/providers/rudderstack/index.js +1 -1
- package/dist/providers/rudderstack/index.mjs +1 -1
- package/dist/utils/analytics-cache/index.d.mts +14 -5
- package/dist/utils/analytics-cache/index.d.ts +14 -5
- package/dist/utils/analytics-cache/index.js +1 -1
- package/dist/utils/analytics-cache/index.mjs +1 -1
- package/package.json +1 -1
- package/dist/chunk-3LFZFQL4.mjs +0 -3
- package/dist/chunk-3LFZFQL4.mjs.map +0 -1
- package/dist/chunk-CAKVOFLO.js +0 -3
- package/dist/chunk-CAKVOFLO.js.map +0 -1
- package/dist/chunk-DNCZM4KN.mjs +0 -4
- package/dist/chunk-DNCZM4KN.mjs.map +0 -1
- package/dist/chunk-EMF3RT6E.mjs +0 -14
- package/dist/chunk-EMF3RT6E.mjs.map +0 -1
- package/dist/chunk-HQX3Z7PF.mjs +0 -3
- package/dist/chunk-HQX3Z7PF.mjs.map +0 -1
- package/dist/chunk-LKLVBL24.js +0 -3
- package/dist/chunk-LKLVBL24.js.map +0 -1
- package/dist/chunk-NOEKD4DT.js +0 -4
- package/dist/chunk-NOEKD4DT.js.map +0 -1
- package/dist/chunk-UDVSKE3Y.mjs +0 -3
- package/dist/chunk-UDVSKE3Y.mjs.map +0 -1
- package/dist/growthbook-NJGOOJH4.mjs +0 -3
- package/dist/growthbook-NJGOOJH4.mjs.map +0 -1
- package/dist/posthog-72HGN74H.mjs +0 -6
- package/dist/posthog-72HGN74H.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../node_modules/@rudderstack/analytics-js/dist/npm/modern/esm/index.mjs"],"sourcesContent":["function _isPlaceholder(a){return a!=null&&typeof a==='object'&&a['@@functional/placeholder']===true;}\n\n/**\n * Optimized internal one-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */function _curry1(fn){return function f1(a){if(arguments.length===0||_isPlaceholder(a)){return f1;}else {return fn.apply(this,arguments);}};}\n\n/**\n * Optimized internal two-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */function _curry2(fn){return function f2(a,b){switch(arguments.length){case 0:return f2;case 1:return _isPlaceholder(a)?f2:_curry1(function(_b){return fn(a,_b);});default:return _isPlaceholder(a)&&_isPlaceholder(b)?f2:_isPlaceholder(a)?_curry1(function(_a){return fn(_a,b);}):_isPlaceholder(b)?_curry1(function(_b){return fn(a,_b);}):fn(a,b);}};}\n\n/**\n * Optimized internal three-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */function _curry3(fn){return function f3(a,b,c){switch(arguments.length){case 0:return f3;case 1:return _isPlaceholder(a)?f3:_curry2(function(_b,_c){return fn(a,_b,_c);});case 2:return _isPlaceholder(a)&&_isPlaceholder(b)?f3:_isPlaceholder(a)?_curry2(function(_a,_c){return fn(_a,b,_c);}):_isPlaceholder(b)?_curry2(function(_b,_c){return fn(a,_b,_c);}):_curry1(function(_c){return fn(a,b,_c);});default:return _isPlaceholder(a)&&_isPlaceholder(b)&&_isPlaceholder(c)?f3:_isPlaceholder(a)&&_isPlaceholder(b)?_curry2(function(_a,_b){return fn(_a,_b,c);}):_isPlaceholder(a)&&_isPlaceholder(c)?_curry2(function(_a,_c){return fn(_a,b,_c);}):_isPlaceholder(b)&&_isPlaceholder(c)?_curry2(function(_b,_c){return fn(a,_b,_c);}):_isPlaceholder(a)?_curry1(function(_a){return fn(_a,b,c);}):_isPlaceholder(b)?_curry1(function(_b){return fn(a,_b,c);}):_isPlaceholder(c)?_curry1(function(_c){return fn(a,b,_c);}):fn(a,b,c);}};}\n\nfunction _has(prop,obj){return Object.prototype.hasOwnProperty.call(obj,prop);}\n\n/**\n * Gives a single-word string description of the (native) type of a value,\n * returning such answers as 'Object', 'Number', 'Array', or 'Null'. Does not\n * attempt to distinguish user Object types any further, reporting them all as\n * 'Object'.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Type\n * @sig * -> String\n * @param {*} val The value to test\n * @return {String}\n * @example\n *\n * R.type({}); //=> \"Object\"\n * R.type(new Map); //=> \"Map\"\n * R.type(new Set); //=> \"Set\"\n * R.type(1); //=> \"Number\"\n * R.type(false); //=> \"Boolean\"\n * R.type('s'); //=> \"String\"\n * R.type(null); //=> \"Null\"\n * R.type([]); //=> \"Array\"\n * R.type(/[A-z]/); //=> \"RegExp\"\n * R.type(() => {}); //=> \"Function\"\n * R.type(async () => {}); //=> \"AsyncFunction\"\n * R.type(undefined); //=> \"Undefined\"\n * R.type(BigInt(123)); //=> \"BigInt\"\n */var type=/*#__PURE__*/_curry1(function type(val){return val===null?'Null':val===undefined?'Undefined':Object.prototype.toString.call(val).slice(8,-1);});\n\nfunction _isObject(x){return Object.prototype.toString.call(x)==='[object Object]';}\n\n/**\n * Determine if the passed argument is an integer.\n *\n * @private\n * @param {*} n\n * @category Type\n * @return {Boolean}\n */const _isInteger = Number.isInteger||function _isInteger(n){return n<<0===n;};\n\nfunction _nth(offset,list){var idx=offset<0?list.length+offset:offset;return list[idx];}\n\nfunction _cloneRegExp(pattern){return new RegExp(pattern.source,pattern.flags?pattern.flags:(pattern.global?'g':'')+(pattern.ignoreCase?'i':'')+(pattern.multiline?'m':'')+(pattern.sticky?'y':'')+(pattern.unicode?'u':'')+(pattern.dotAll?'s':''));}\n\n/**\n * Copies an object.\n *\n * @private\n * @param {*} value The value to be copied\n * @param {Boolean} deep Whether or not to perform deep cloning.\n * @return {*} The copied value.\n */function _clone(value,deep,map){map||(map=new _ObjectMap());// this avoids the slower switch with a quick if decision removing some milliseconds in each run.\nif(_isPrimitive(value)){return value;}var copy=function copy(copiedValue){// Check for circular and same references on the object graph and return its corresponding clone.\nvar cachedCopy=map.get(value);if(cachedCopy){return cachedCopy;}map.set(value,copiedValue);for(var key in value){if(Object.prototype.hasOwnProperty.call(value,key)){copiedValue[key]=_clone(value[key],true,map);}}return copiedValue;};switch(type(value)){case 'Object':return copy(Object.create(Object.getPrototypeOf(value)));case 'Array':return copy(Array(value.length));case 'Date':return new Date(value.valueOf());case 'RegExp':return _cloneRegExp(value);case 'Int8Array':case 'Uint8Array':case 'Uint8ClampedArray':case 'Int16Array':case 'Uint16Array':case 'Int32Array':case 'Uint32Array':case 'Float32Array':case 'Float64Array':case 'BigInt64Array':case 'BigUint64Array':return value.slice();default:return value;}}function _isPrimitive(param){var type=typeof param;return param==null||type!='object'&&type!='function';}var _ObjectMap=/*#__PURE__*/function(){function _ObjectMap(){this.map={};this.length=0;}_ObjectMap.prototype.set=function(key,value){var hashedKey=this.hash(key);var bucket=this.map[hashedKey];if(!bucket){this.map[hashedKey]=bucket=[];}bucket.push([key,value]);this.length+=1;};_ObjectMap.prototype.hash=function(key){var hashedKey=[];for(var value in key){hashedKey.push(Object.prototype.toString.call(key[value]));}return hashedKey.join();};_ObjectMap.prototype.get=function(key){/**\n * depending on the number of objects to be cloned is faster to just iterate over the items in the map just because the hash function is so costly,\n * on my tests this number is 180, anything above that using the hash function is faster.\n */if(this.length<=180){for(var p in this.map){var bucket=this.map[p];for(var i=0;i<bucket.length;i+=1){var element=bucket[i];if(element[0]===key){return element[1];}}}return;}var hashedKey=this.hash(key);var bucket=this.map[hashedKey];if(!bucket){return;}for(var i=0;i<bucket.length;i+=1){var element=bucket[i];if(element[0]===key){return element[1];}}};return _ObjectMap;}();\n\n/**\n * Creates a deep copy of the source that can be used in place of the source\n * object without retaining any references to it.\n * The source object may contain (nested) `Array`s and `Object`s,\n * `Number`s, `String`s, `Boolean`s and `Date`s.\n * `Function`s are assigned by reference rather than copied.\n *\n * Dispatches to a `clone` method if present.\n *\n * Note that if the source object has multiple nodes that share a reference,\n * the returned object will have the same structure, but the references will\n * be pointed to the location within the cloned value.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig {*} -> {*}\n * @param {*} value The object or array to clone\n * @return {*} A deeply cloned copy of `val`\n * @example\n *\n * const objects = [{}, {}, {}];\n * const objectsClone = R.clone(objects);\n * objects === objectsClone; //=> false\n * objects[0] === objectsClone[0]; //=> false\n */var clone=/*#__PURE__*/_curry1(function clone(value){return value!=null&&typeof value.clone==='function'?value.clone():_clone(value);});\n\nfunction _path(pathAr,obj){var val=obj;for(var i=0;i<pathAr.length;i+=1){if(val==null){return undefined;}var p=pathAr[i];if(_isInteger(p)){val=_nth(p,val);}else {val=val[p];}}return val;}\n\n/**\n * Creates a new object with the own properties of the two provided objects. If\n * a key exists in both objects, the provided function is applied to the key\n * and the values associated with the key in each object, with the result being\n * used as the value associated with the key in the returned object.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category Object\n * @sig ((String, a, a) -> a) -> {a} -> {a} -> {a}\n * @param {Function} fn\n * @param {Object} l\n * @param {Object} r\n * @return {Object}\n * @see R.mergeDeepWithKey, R.mergeWith\n * @example\n *\n * let concatValues = (k, l, r) => k == 'values' ? R.concat(l, r) : r\n * R.mergeWithKey(concatValues,\n * { a: true, thing: 'foo', values: [10, 20] },\n * { b: true, thing: 'bar', values: [15, 35] });\n * //=> { a: true, b: true, thing: 'bar', values: [10, 20, 15, 35] }\n * @symb R.mergeWithKey(f, { x: 1, y: 2 }, { y: 5, z: 3 }) = { x: 1, y: f('y', 2, 5), z: 3 }\n */var mergeWithKey=/*#__PURE__*/_curry3(function mergeWithKey(fn,l,r){var result={};var k;l=l||{};r=r||{};for(k in l){if(_has(k,l)){result[k]=_has(k,r)?fn(k,l[k],r[k]):l[k];}}for(k in r){if(_has(k,r)&&!_has(k,result)){result[k]=r[k];}}return result;});\n\n/**\n * Creates a new object with the own properties of the two provided objects.\n * If a key exists in both objects:\n * - and both associated values are also objects then the values will be\n * recursively merged.\n * - otherwise the provided function is applied to the key and associated values\n * using the resulting value as the new value associated with the key.\n * If a key only exists in one object, the value will be associated with the key\n * of the resulting object.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category Object\n * @sig ((String, a, a) -> a) -> {a} -> {a} -> {a}\n * @param {Function} fn\n * @param {Object} lObj\n * @param {Object} rObj\n * @return {Object}\n * @see R.mergeWithKey, R.mergeDeepWith\n * @example\n *\n * let concatValues = (k, l, r) => k == 'values' ? R.concat(l, r) : r\n * R.mergeDeepWithKey(concatValues,\n * { a: true, c: { thing: 'foo', values: [10, 20] }},\n * { b: true, c: { thing: 'bar', values: [15, 35] }});\n * //=> { a: true, b: true, c: { thing: 'bar', values: [10, 20, 15, 35] }}\n */var mergeDeepWithKey=/*#__PURE__*/_curry3(function mergeDeepWithKey(fn,lObj,rObj){return mergeWithKey(function(k,lVal,rVal){if(_isObject(lVal)&&_isObject(rVal)){return mergeDeepWithKey(fn,lVal,rVal);}else {return fn(k,lVal,rVal);}},lObj,rObj);});\n\n/**\n * Creates a new object with the own properties of the two provided objects.\n * If a key exists in both objects:\n * - and both associated values are also objects then the values will be\n * recursively merged.\n * - otherwise the provided function is applied to associated values using the\n * resulting value as the new value associated with the key.\n * If a key only exists in one object, the value will be associated with the key\n * of the resulting object.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category Object\n * @sig ((a, a) -> a) -> {a} -> {a} -> {a}\n * @param {Function} fn\n * @param {Object} lObj\n * @param {Object} rObj\n * @return {Object}\n * @see R.mergeWith, R.mergeDeepWithKey\n * @example\n *\n * R.mergeDeepWith(R.concat,\n * { a: true, c: { values: [10, 20] }},\n * { b: true, c: { values: [15, 35] }});\n * //=> { a: true, b: true, c: { values: [10, 20, 15, 35] }}\n */var mergeDeepWith=/*#__PURE__*/_curry3(function mergeDeepWith(fn,lObj,rObj){return mergeDeepWithKey(function(k,lVal,rVal){return fn(lVal,rVal);},lObj,rObj);});\n\n/**\n * Retrieves the value at a given path. The nodes of the path can be arbitrary strings or non-negative integers.\n * For anything else, the value is unspecified. Integer paths are meant to index arrays, strings are meant for objects.\n *\n * @func\n * @memberOf R\n * @since v0.2.0\n * @category Object\n * @typedefn Idx = String | Int | Symbol\n * @sig [Idx] -> {a} -> a | Undefined\n * @sig Idx = String | NonNegativeInt\n * @param {Array} path The path to use.\n * @param {Object} obj The object or array to retrieve the nested property from.\n * @return {*} The data at `path`.\n * @see R.prop, R.nth, R.assocPath, R.dissocPath\n * @example\n *\n * R.path(['a', 'b'], {a: {b: 2}}); //=> 2\n * R.path(['a', 'b'], {c: {b: 2}}); //=> undefined\n * R.path(['a', 'b', 0], {a: {b: [1, 2, 3]}}); //=> 1\n * R.path(['a', 'b', -2], {a: {b: [1, 2, 3]}}); //=> 2\n * R.path([2], {'2': 2}); //=> 2\n * R.path([-2], {'-2': 'a'}); //=> undefined\n */var path=/*#__PURE__*/_curry2(_path);\n\n/**\n * Returns a partial copy of an object containing only the keys that satisfy\n * the supplied predicate.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Object\n * @sig ((v, k) -> Boolean) -> {k: v} -> {k: v}\n * @param {Function} pred A predicate to determine whether or not a key\n * should be included on the output object.\n * @param {Object} obj The object to copy from\n * @return {Object} A new object with only properties that satisfy `pred`\n * on it.\n * @see R.pick, R.filter\n * @example\n *\n * const isUpperCase = (val, key) => key.toUpperCase() === key;\n * R.pickBy(isUpperCase, {a: 1, b: 2, A: 3, B: 4}); //=> {A: 3, B: 4}\n */var pickBy=/*#__PURE__*/_curry2(function pickBy(test,obj){var result={};for(var prop in obj){if(test(obj[prop],prop,obj)){result[prop]=obj[prop];}}return result;});\n\n/**\n * A function to check given value is a function\n * @param value input value\n * @returns boolean\n */const isFunction=value=>typeof value==='function'&&Boolean(value.constructor&&value.call&&value.apply);/**\n * A function to check given value is a string\n * @param value input value\n * @returns boolean\n */const isString=value=>typeof value==='string';/**\n * A function to check given value is null or not\n * @param value input value\n * @returns boolean\n */const isNull=value=>value===null;/**\n * A function to check given value is undefined\n * @param value input value\n * @returns boolean\n */const isUndefined=value=>typeof value==='undefined';/**\n * A function to check given value is null or undefined\n * @param value input value\n * @returns boolean\n */const isNullOrUndefined=value=>isNull(value)||isUndefined(value);/**\n * Checks if the input is a BigInt\n * @param value input value\n * @returns True if the input is a BigInt\n */const isBigInt=value=>typeof value==='bigint';/**\n * A function to check given value is defined\n * @param value input value\n * @returns boolean\n */const isDefined=value=>!isUndefined(value);/**\n * A function to check given value is defined and not null\n * @param value input value\n * @returns boolean\n */const isDefinedAndNotNull=value=>!isNullOrUndefined(value);/**\n * A function to check given value is defined and not null\n * @param value input value\n * @returns boolean\n */const isDefinedNotNullAndNotEmptyString=value=>isDefinedAndNotNull(value)&&value!=='';/**\n * Determines if the input is of type error\n * @param value input value\n * @returns true if the input is of type error else false\n */const isTypeOfError=value=>{switch(Object.prototype.toString.call(value)){case '[object Error]':case '[object Exception]':case '[object DOMException]':return true;default:return value instanceof Error;}};/**\n * A function to check given value is a boolean\n * @param value input value\n * @returns boolean\n */const isBoolean=value=>typeof value==='boolean';\n\nconst getValueByPath=(obj,keyPath)=>{const pathParts=keyPath.split('.');return path(pathParts,obj);};const hasValueByPath=(obj,path)=>Boolean(getValueByPath(obj,path));const isObject=value=>typeof value==='object';/**\n * Checks if the input is an object literal or built-in object type and not null\n * @param value Input value\n * @returns true if the input is an object and not null\n */const isObjectAndNotNull=value=>!isNull(value)&&isObject(value)&&!Array.isArray(value);/**\n * Checks if the input is an object literal and not null\n * @param value Input value\n * @returns true if the input is an object and not null\n */const isObjectLiteralAndNotNull=value=>!isNull(value)&&Object.prototype.toString.call(value)==='[object Object]';/**\n * Merges two arrays deeply, right-to-left\n * In the case of conflicts, the right array's values replace the left array's values in the\n * same index position\n * @param leftValue - The left array\n * @param rightValue - The right array\n * @returns The merged array\n */const mergeDeepRightObjectArrays=(leftValue,rightValue)=>{if(!Array.isArray(leftValue)||!Array.isArray(rightValue)){return clone(rightValue);}const mergedArray=clone(leftValue);rightValue.forEach((value,index)=>{mergedArray[index]=Array.isArray(value)||isObjectAndNotNull(value)?// eslint-disable-next-line @typescript-eslint/no-use-before-define\nmergeDeepRight(mergedArray[index],value):value;});return mergedArray;};/**\n * Merges two objects deeply, right-to-left.\n * In the case of conflicts, the right object's values take precedence.\n * For arrays, the right array's values replace the left array's values in the\n * same index position keeping the remaining left array's values in the resultant array.\n * @param leftObject - The left object\n * @param rightObject - The right object\n * @returns The merged object\n */const mergeDeepRight=(leftObject,rightObject)=>mergeDeepWith(mergeDeepRightObjectArrays,leftObject,rightObject);/**\n Checks if the input is a non-empty object literal type and not undefined or null\n * @param value input any\n * @returns boolean\n */const isNonEmptyObject=value=>isObjectLiteralAndNotNull(value)&&Object.keys(value).length>0;/**\n * A utility to recursively remove undefined values from an object\n * @param obj input object\n * @returns a new object\n */const removeUndefinedValues=obj=>{const result=pickBy(isDefined,obj);Object.keys(result).forEach(key=>{const value=result[key];if(isObjectLiteralAndNotNull(value)){result[key]=removeUndefinedValues(value);}});return result;};/**\n * A utility to recursively remove undefined and null values from an object\n * @param obj input object\n * @returns a new object\n */const removeUndefinedAndNullValues=obj=>{const result=pickBy(isDefinedAndNotNull,obj);Object.keys(result).forEach(key=>{const value=result[key];if(isObjectLiteralAndNotNull(value)){result[key]=removeUndefinedAndNullValues(value);}});return result;};/**\n * Normalizes an object by removing undefined and null values.\n * @param val - The value to normalize\n * @returns The normalized object, or undefined if input is not a non-empty object\n * @example\n * getNormalizedObjectValue({ a: 1, b: null, c: undefined }) // returns { a: 1 }\n * getNormalizedObjectValue({}) // returns undefined\n * getNormalizedObjectValue(null) // returns undefined\n */const getNormalizedObjectValue=val=>{if(!isNonEmptyObject(val)){return undefined;}return removeUndefinedAndNullValues(val);};/**\n * Normalizes a value to a boolean, with support for a default value\n * @param val Input value\n * @param defVal Default value\n * @returns Returns the input value if it is a boolean, otherwise returns the default value\n * @example\n * getNormalizedBooleanValue(true, false) // returns true\n */const getNormalizedBooleanValue=(val,defVal)=>typeof val==='boolean'?val:defVal;const deepFreeze=obj=>{Object.getOwnPropertyNames(obj).forEach(function(prop){if(obj[prop]&&typeof obj[prop]==='object'){deepFreeze(obj[prop]);}});return Object.freeze(obj);};\n\nconst trim=value=>value.replace(/^\\s+|\\s+$/gm,'');const removeLeadingPeriod=value=>value.replace(/^\\.+/,'');/**\n * A function to convert values to string\n * @param val input value\n * @returns stringified value\n */const tryStringify=val=>{let retVal=val;if(!isString(val)&&!isNullOrUndefined(val)){try{retVal=JSON.stringify(val);}catch(e){retVal=null;}}return retVal;};// The following text encoding and decoding is done before base64 encoding to prevent\n/**\n * Converts a bytes array to base64 encoded string\n * @param bytes bytes array to be converted to base64\n * @returns base64 encoded string\n */const bytesToBase64=bytes=>{const binString=Array.from(bytes,x=>String.fromCodePoint(x)).join('');return globalThis.btoa(binString);};/**\n * Encodes a string to base64 even with unicode characters\n * @param value input string\n * @returns base64 encoded string\n */const toBase64=value=>bytesToBase64(new TextEncoder().encode(value));\n\n// if yes make them null instead of omitting in overloaded cases\n/*\n * Normalise the overloaded arguments of the page call facade\n */const pageArgumentsToCallOptions=(category,name,properties,options,callback)=>{const payload={category:category,name:name,properties:properties,options:options,callback:undefined};if(isFunction(callback)){payload.callback=callback;}if(isFunction(options)){payload.category=category;payload.name=name;payload.properties=properties;payload.options=undefined;payload.callback=options;}if(isFunction(properties)){payload.category=category;payload.name=name;payload.properties=undefined;payload.options=undefined;payload.callback=properties;}if(isFunction(name)){payload.category=category;payload.name=undefined;payload.properties=undefined;payload.options=undefined;payload.callback=name;}if(isFunction(category)){payload.category=undefined;payload.name=undefined;payload.properties=undefined;payload.options=undefined;payload.callback=category;}if(isObjectLiteralAndNotNull(category)){payload.name=undefined;payload.category=undefined;payload.properties=category;if(!isFunction(name)){payload.options=name;}else {payload.options=undefined;}}else if(isObjectLiteralAndNotNull(name)){payload.name=undefined;payload.properties=name;if(!isFunction(properties)){payload.options=properties;}else {payload.options=undefined;}}// if the category argument alone is provided b/w category and name,\n// use it as name and set category to undefined\nif(isString(category)&&!isString(name)){payload.category=undefined;payload.name=category;}// Rest of the code is just to clean up undefined values\n// and set some proper defaults\n// Also, to clone the incoming object type arguments\nif(!isDefined(payload.category)){payload.category=undefined;}if(!isDefined(payload.name)){payload.name=undefined;}payload.properties=payload.properties?clone(payload.properties):{};if(isDefined(payload.options)){payload.options=clone(payload.options);}else {payload.options=undefined;}const nameForProperties=isString(payload.name)?payload.name:payload.properties.name;const categoryForProperties=isString(payload.category)?payload.category:payload.properties.category;// add name and category to properties\npayload.properties=mergeDeepRight(isObjectLiteralAndNotNull(payload.properties)?payload.properties:{},{...(nameForProperties&&{name:nameForProperties}),...(categoryForProperties&&{category:categoryForProperties})});return payload;};/*\n * Normalise the overloaded arguments of the track call facade\n */const trackArgumentsToCallOptions=(event,properties,options,callback)=>{const payload={name:event,properties:properties,options:options,callback:undefined};if(isFunction(callback)){payload.callback=callback;}if(isFunction(options)){payload.properties=properties;payload.options=undefined;payload.callback=options;}if(isFunction(properties)){payload.properties=undefined;payload.options=undefined;payload.callback=properties;}// Rest of the code is just to clean up undefined values\n// and set some proper defaults\n// Also, to clone the incoming object type arguments\npayload.properties=isDefinedAndNotNull(payload.properties)?clone(payload.properties):{};if(isDefined(payload.options)){payload.options=clone(payload.options);}else {payload.options=undefined;}return payload;};/*\n * Normalise the overloaded arguments of the identify call facade\n */const identifyArgumentsToCallOptions=(userId,traits,options,callback)=>{const payload={userId:userId,traits:traits,options:options,callback:undefined};if(isFunction(callback)){payload.callback=callback;}if(isFunction(options)){payload.userId=userId;payload.traits=traits;payload.options=undefined;payload.callback=options;}if(isFunction(traits)){payload.userId=userId;payload.traits=undefined;payload.options=undefined;payload.callback=traits;}if(isObjectLiteralAndNotNull(userId)||isNull(userId)){// Explicitly set null to prevent resetting the existing value\n// in the Analytics class\npayload.userId=null;payload.traits=userId;if(!isFunction(traits)){payload.options=traits;}else {payload.options=undefined;}}// Rest of the code is just to clean up undefined values\n// and set some proper defaults\n// Also, to clone the incoming object type arguments\npayload.userId=tryStringify(payload.userId);if(isObjectLiteralAndNotNull(payload.traits)){payload.traits=clone(payload.traits);}else {payload.traits=undefined;}if(isDefined(payload.options)){payload.options=clone(payload.options);}else {payload.options=undefined;}return payload;};/*\n * Normalise the overloaded arguments of the alias call facade\n */const aliasArgumentsToCallOptions=(to,from,options,callback)=>{const payload={to,from:from,options:options,callback:undefined};if(isFunction(callback)){payload.callback=callback;}if(isFunction(options)){payload.to=to;payload.from=from;payload.options=undefined;payload.callback=options;}if(isFunction(from)){payload.to=to;payload.from=undefined;payload.options=undefined;payload.callback=from;}else if(isObjectLiteralAndNotNull(from)||isNull(from)){payload.to=to;payload.from=undefined;payload.options=from;}// Rest of the code is just to clean up undefined values\n// and set some proper defaults\n// Also, to clone the incoming object type arguments\nif(isDefined(payload.to)){payload.to=tryStringify(payload.to);}if(isDefined(payload.from)){payload.from=tryStringify(payload.from);}else {payload.from=undefined;}if(isDefined(payload.options)){payload.options=clone(payload.options);}else {payload.options=undefined;}return payload;};/*\n * Normalise the overloaded arguments of the group call facade\n */const groupArgumentsToCallOptions=(groupId,traits,options,callback)=>{const payload={groupId:groupId,traits:traits,options:options,callback:undefined};if(isFunction(callback)){payload.callback=callback;}if(isFunction(options)){payload.groupId=groupId;payload.traits=traits;payload.options=undefined;payload.callback=options;}if(isFunction(traits)){payload.groupId=groupId;payload.traits=undefined;payload.options=undefined;payload.callback=traits;}if(isObjectLiteralAndNotNull(groupId)||isNull(groupId)){// Explicitly set null to prevent resetting the existing value\n// in the Analytics class\npayload.groupId=null;payload.traits=groupId;if(!isFunction(traits)){payload.options=traits;}else {payload.options=undefined;}}// Rest of the code is just to clean up undefined values\n// and set some proper defaults\n// Also, to clone the incoming object type arguments\npayload.groupId=tryStringify(payload.groupId);if(isObjectLiteralAndNotNull(payload.traits)){payload.traits=clone(payload.traits);}else {payload.traits=undefined;}if(isDefined(payload.options)){payload.options=clone(payload.options);}else {payload.options=undefined;}return payload;};\n\n/**\n * Represents the options parameter for anonymousId\n *//**\n * Represents the beacon queue options parameter in loadOptions type\n *//**\n * Represents the queue options parameter in loadOptions type\n *//**\n * Represents the destinations queue options parameter in loadOptions type\n */let PageLifecycleEvents=/*#__PURE__*/function(PageLifecycleEvents){PageLifecycleEvents[\"UNLOADED\"]=\"Page Unloaded\";return PageLifecycleEvents;}({});/**\n * Represents the source configuration override options for destinations\n *//**\n * Represents the options parameter in the load API\n */\n\nconst API_SUFFIX='API';const CAPABILITIES_MANAGER='CapabilitiesManager';const CONFIG_MANAGER='ConfigManager';const EVENT_MANAGER='EventManager';const PLUGINS_MANAGER='PluginsManager';const USER_SESSION_MANAGER='UserSessionManager';const ERROR_HANDLER='ErrorHandler';const PLUGIN_ENGINE='PluginEngine';const STORE_MANAGER='StoreManager';const READY_API=`Ready${API_SUFFIX}`;const LOAD_API=`Load${API_SUFFIX}`;const HTTP_CLIENT='HttpClient';const RSA='RudderStackAnalytics';const ANALYTICS_CORE='AnalyticsCore';\n\nfunction random(len){return crypto.getRandomValues(new Uint8Array(len));}\n\nvar SIZE=4096,HEX$1=[],IDX$1=0,BUFFER$1;for(;IDX$1<256;IDX$1++){HEX$1[IDX$1]=(IDX$1+256).toString(16).substring(1);}function v4$1(){if(!BUFFER$1||IDX$1+16>SIZE){BUFFER$1=random(SIZE);IDX$1=0;}var i=0,tmp,out='';for(;i<16;i++){tmp=BUFFER$1[IDX$1+i];if(i==6)out+=HEX$1[tmp&15|64];else if(i==8)out+=HEX$1[tmp&63|128];else out+=HEX$1[tmp];if(i&1&&i>1&&i<11)out+='-';}IDX$1+=16;return out;}\n\nvar IDX=256,HEX=[],BUFFER;while(IDX--)HEX[IDX]=(IDX+256).toString(16).substring(1);function v4(){var i=0,num,out='';if(!BUFFER||IDX+16>256){BUFFER=Array(i=256);while(i--)BUFFER[i]=256*Math.random()|0;i=IDX=0;}for(;i<16;i++){num=BUFFER[IDX+i];if(i==6)out+=HEX[num&15|64];else if(i==8)out+=HEX[num&63|128];else out+=HEX[num];if(i&1&&i>1&&i<11)out+='-';}IDX++;return out;}\n\nconst hasCrypto$1=()=>!isNullOrUndefined(globalThis.crypto)&&isFunction(globalThis.crypto.getRandomValues);\n\nconst generateUUID=()=>{if(hasCrypto$1()){return v4$1();}return v4();};\n\n/**\n * Determines if the SDK is running inside a chrome extension\n * @returns boolean\n */const isSDKRunningInChromeExtension=()=>!!window.chrome?.runtime?.id;const isIE11=()=>isString(globalThis.navigator.userAgent)&&/Trident.*rv:11\\./.test(globalThis.navigator.userAgent);\n\n/**\n * Registers events to detect page leave scenarios\n * @param callback Callback function\n * @param avoidBfCacheOptimization When `true`, forcefully subscribes to beforeunload event, compromising on the bfcache optimization\n */const onPageLeave=(callback,avoidBfCacheOptimization=false)=>{// To ensure the callback is only called once even if more than one events\n// are fired at once.\nlet pageLeft=false;let isAccessible=false;function handleOnLeave(){if(pageLeft){return;}pageLeft=true;callback(isAccessible);// Reset pageLeft on the next tick\n// to ensure callback executes for other listeners\n// when closing an inactive browser tab.\nsetTimeout(()=>{pageLeft=false;},0);}// Catches the unloading of the page (e.g., closing the tab or navigating away).\n// Includes user actions like clicking a link, entering a new URL,\n// refreshing the page, or closing the browser tab\n// Note that 'pagehide' is not supported in IE.\n// Registering this event conditionally for IE11 also because\n// it affects bfcache optimization on modern browsers otherwise.\n// However, if optimization is disabled, force subscribe the event\nif(avoidBfCacheOptimization||isIE11()){globalThis.addEventListener('beforeunload',()=>{isAccessible=false;handleOnLeave();});}// This is important for iOS Safari browser as it does not\n// fire the regular pagehide and visibilitychange events\n// when user goes to tablist view and closes the tab.\nglobalThis.addEventListener('blur',()=>{isAccessible=true;handleOnLeave();});globalThis.addEventListener('focus',()=>{pageLeft=false;});// Catches the page being hidden, including scenarios like closing the tab.\ndocument.addEventListener('pagehide',()=>{isAccessible=document.visibilityState==='hidden';handleOnLeave();});// Catches visibility changes, such as switching tabs or minimizing the browser.\ndocument.addEventListener('visibilitychange',()=>{isAccessible=true;if(document.visibilityState==='hidden'){handleOnLeave();}else {pageLeft=false;}});};\n\nconst getFormattedTimestamp=date=>date.toISOString();/**\n * To get the current timestamp in ISO string format\n * @returns ISO formatted timestamp string\n */const getCurrentTimeFormatted=()=>getFormattedTimestamp(new Date());\n\nconst LOG_CONTEXT_SEPARATOR=':: ';const SCRIPT_ALREADY_EXISTS_ERROR=id=>`A script with the id \"${id}\" is already loaded. Skipping the loading of this script to prevent conflicts`;const SCRIPT_LOAD_ERROR=(id,url,ev)=>`Unable to load (${isString(ev)?ev:ev.type}) the script with the id \"${id}\" from URL \"${url}\"`;const SCRIPT_LOAD_TIMEOUT_ERROR=(id,url,timeout)=>`A timeout of ${timeout} ms occurred while trying to load the script with id \"${id}\" from URL \"${url}\"`;const CIRCULAR_REFERENCE_WARNING=(context,key)=>`${context}${LOG_CONTEXT_SEPARATOR}A circular reference has been detected in the object and the property \"${key}\" has been dropped from the output.`;const JSON_STRINGIFY_WARNING=`Failed to convert the value to a JSON string.`;const COOKIE_DATA_ENCODING_ERROR=`Failed to encode the cookie data.`;const STORAGE_UNAVAILABILITY_ERROR_PREFIX=(context,storageType)=>`${context}${LOG_CONTEXT_SEPARATOR}The \"${storageType}\" storage type is `;\n\nconst JSON_STRINGIFY='JSONStringify';const BIG_INT_PLACEHOLDER='[BigInt]';const CIRCULAR_REFERENCE_PLACEHOLDER='[Circular Reference]';const getCircularReplacer=(excludeNull,excludeKeys,logger)=>{const ancestors=[];// Here we do not want to use arrow function to use \"this\" in function context\n// eslint-disable-next-line func-names\nreturn function(key,value){if(excludeKeys?.includes(key)){return undefined;}if(excludeNull&&isNullOrUndefined(value)){return undefined;}if(typeof value!=='object'||isNull(value)){return value;}// `this` is the object that value is contained in, i.e., its direct parent.\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore-next-line\nwhile(ancestors.length>0&&ancestors[ancestors.length-1]!==this){ancestors.pop();}if(ancestors.includes(value)){logger?.warn(CIRCULAR_REFERENCE_WARNING(JSON_STRINGIFY,key));return CIRCULAR_REFERENCE_PLACEHOLDER;}ancestors.push(value);return value;};};/**\n * Utility method for JSON stringify object excluding null values & circular references\n *\n * @param {*} value input\n * @param {boolean} excludeNull if it should exclude nul or not\n * @param {function} logger optional logger methods for warning\n * @returns string\n */const stringifyWithoutCircular=(value,excludeNull,excludeKeys,logger)=>{try{return JSON.stringify(value,getCircularReplacer(excludeNull,excludeKeys,logger));}catch(err){logger?.warn(JSON_STRINGIFY_WARNING,err);return null;}};const getReplacer=logger=>{const ancestors=[];// Array to track ancestor objects\n// Using a regular function to use `this` for the parent context\nreturn function replacer(key,value){if(isBigInt(value)){return BIG_INT_PLACEHOLDER;// Replace BigInt values\n}// `this` is the object that value is contained in, i.e., its direct parent.\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore-next-line\nwhile(ancestors.length>0&&ancestors[ancestors.length-1]!==this){ancestors.pop();// Remove ancestors that are no longer part of the chain\n}// Check for circular references (if the value is already in the ancestors)\nif(ancestors.includes(value)){return CIRCULAR_REFERENCE_PLACEHOLDER;}// Add current value to ancestors\nancestors.push(value);return value;};};const traverseWithThis=(obj,replacer)=>{// Create a new result object or array\nconst result=Array.isArray(obj)?[]:{};// Traverse object properties or array elements\n// eslint-disable-next-line no-restricted-syntax\nfor(const key in obj){if(Object.hasOwnProperty.call(obj,key)){const value=obj[key];// Recursively apply the replacer and traversal\nconst sanitizedValue=replacer.call(obj,key,value);// If the value is an object or array, continue traversal\nif(isObjectLiteralAndNotNull(sanitizedValue)||Array.isArray(sanitizedValue)){result[key]=traverseWithThis(sanitizedValue,replacer);}else {result[key]=sanitizedValue;}}}return result;};/**\n * Recursively traverses an object similar to JSON.stringify,\n * sanitizing BigInts and circular references\n * @param value Input object\n * @param logger Logger instance\n * @returns Sanitized value\n */const getSanitizedValue=(value,logger)=>{const replacer=getReplacer();// This is needed for registering the first ancestor\nconst newValue=replacer.call(value,'',value);if(isObjectLiteralAndNotNull(value)||Array.isArray(value)){return traverseWithThis(value,replacer);}return newValue;};\n\nconst MANUAL_ERROR_IDENTIFIER='[SDK DISPATCHED ERROR]';const getStacktrace=err=>{const{stack,stacktrace,'opera#sourceloc':operaSourceloc}=err;const stackString=stack??stacktrace??operaSourceloc;if(!!stackString&&typeof stackString==='string'){return stackString;}return undefined;};/**\n * Get mutated error with issue prepended to error message\n * @param err Original error\n * @param issue Issue to prepend to error message\n * @returns Instance of Error with message prepended with issue\n */const getMutatedError=(err,issue)=>{if(!isTypeOfError(err)){return new Error(`${issue}: ${stringifyWithoutCircular(err)}`);}try{// Preserve the specific error type (TypeError, ReferenceError, etc.)\nconst ErrorConstructor=err.constructor;const newError=new ErrorConstructor(`${issue}: ${err.message}`);// Preserve stack trace\nconst stack=getStacktrace(err);if(stack){newError.stack=stack;}// Preserve any other enumerable properties\nObject.getOwnPropertyNames(err).forEach(key=>{if(key!=='message'&&key!=='stack'&&key!=='name'){try{newError[key]=err[key];}catch{// Ignore if property is not writable\n}}});return newError;}catch{return new Error(`${issue}: ${stringifyWithoutCircular(err)}`);}};const dispatchErrorEvent=error=>{if(isTypeOfError(error)){const errStack=getStacktrace(error);if(errStack){const{stack,stacktrace,'opera#sourceloc':operaSourceloc}=error;switch(errStack){case stack:// eslint-disable-next-line no-param-reassign\nerror.stack=`${stack}\\n${MANUAL_ERROR_IDENTIFIER}`;break;case stacktrace:// eslint-disable-next-line no-param-reassign\nerror.stacktrace=`${stacktrace}\\n${MANUAL_ERROR_IDENTIFIER}`;break;case operaSourceloc:default:// eslint-disable-next-line no-param-reassign\nerror['opera#sourceloc']=`${operaSourceloc}\\n${MANUAL_ERROR_IDENTIFIER}`;break;}}}globalThis.dispatchEvent(new ErrorEvent('error',{error,bubbles:true,cancelable:true,composed:true}));};\n\nconst APP_NAME='RudderLabs JavaScript SDK';const APP_VERSION='3.29.0';const APP_NAMESPACE='com.rudderlabs.javascript';const MODULE_TYPE='npm';const BUILD_VARIANT='modern';const ADBLOCK_PAGE_CATEGORY='RudderJS-Initiated';const ADBLOCK_PAGE_NAME='ad-block page request';const ADBLOCK_PAGE_PATH='/ad-blocked';const GLOBAL_PRELOAD_BUFFER='preloadedEventsBuffer';const CONSENT_TRACK_EVENT_NAME='Consent Management Interaction';\n\nconst QUERY_PARAM_TRAIT_PREFIX='ajs_trait_';const QUERY_PARAM_PROPERTY_PREFIX='ajs_prop_';const QUERY_PARAM_ANONYMOUS_ID_KEY='ajs_aid';const QUERY_PARAM_USER_ID_KEY='ajs_uid';const QUERY_PARAM_TRACK_EVENT_NAME_KEY='ajs_event';\n\nconst DEFAULT_XHR_TIMEOUT_MS=10*1000;// 10 seconds\nconst DEFAULT_COOKIE_MAX_AGE_MS=31536000*1000;// 1 year\nconst DEFAULT_SESSION_CUT_OFF_DURATION_MS=12*60*60*1000;// 12 hours\nconst DEFAULT_SESSION_TIMEOUT_MS=30*60*1000;// 30 minutes\nconst MIN_SESSION_TIMEOUT_MS=10*1000;// 10 seconds\nconst DEFAULT_DATA_PLANE_EVENTS_BUFFER_TIMEOUT_MS=10*1000;// 10 seconds\nconst DEBOUNCED_TIMEOUT_MS=250;// 250 milliseconds\n\n/**\n * Create globally accessible RudderStackGlobals object\n */const createExposedGlobals=(analyticsInstanceId='app')=>{if(!globalThis.RudderStackGlobals){globalThis.RudderStackGlobals={};}if(!globalThis.RudderStackGlobals[analyticsInstanceId]){globalThis.RudderStackGlobals[analyticsInstanceId]={};}};/**\n * Add move values to globally accessible RudderStackGlobals object per analytics instance\n */const setExposedGlobal=(keyName,value,analyticsInstanceId='app')=>{createExposedGlobals(analyticsInstanceId);globalThis.RudderStackGlobals[analyticsInstanceId][keyName]=value;};/**\n * Get values from globally accessible RudderStackGlobals object by analytics instance\n */const getExposedGlobal=(keyName,analyticsInstanceId='app')=>{createExposedGlobals(analyticsInstanceId);return globalThis.RudderStackGlobals[analyticsInstanceId][keyName];};function debounce(func,thisArg,delay=DEBOUNCED_TIMEOUT_MS){let timeoutId;return (...args)=>{globalThis.clearTimeout(timeoutId);timeoutId=globalThis.setTimeout(()=>{func.apply(thisArg,args);},delay);};}\n\n/**\n * Parse query string params into object values for keys that start with a defined prefix\n */const getEventDataFromQueryString=(params,dataTypeNamePrefix)=>{const data={};params.forEach((value,key)=>{if(key.startsWith(dataTypeNamePrefix)){// remove prefix from key name\nconst dataKey=key.substring(dataTypeNamePrefix.length);// add new key value pair in generated object\ndata[dataKey]=params.get(key);}});return data;};/**\n * Parse query string into preload buffer events & push into existing array before any other events\n */const retrieveEventsFromQueryString=(argumentsArray=[])=>{// Mapping for trait and properties values based on key prefix\nconst eventArgumentToQueryParamMap={trait:QUERY_PARAM_TRAIT_PREFIX,properties:QUERY_PARAM_PROPERTY_PREFIX};const queryObject=new URLSearchParams(globalThis.location.search);// Add track events with name and properties\nif(queryObject.get(QUERY_PARAM_TRACK_EVENT_NAME_KEY)){argumentsArray.unshift(['track',queryObject.get(QUERY_PARAM_TRACK_EVENT_NAME_KEY),getEventDataFromQueryString(queryObject,eventArgumentToQueryParamMap.properties)]);}// Send identify event\nconst userId=queryObject.get(QUERY_PARAM_USER_ID_KEY);const userTraits=getEventDataFromQueryString(queryObject,eventArgumentToQueryParamMap.trait);if(userId||isNonEmptyObject(userTraits)){// In identify API, user ID is optional\nconst identifyApiArgs=[...(userId?[userId]:[]),userTraits];argumentsArray.unshift(['identify',...identifyApiArgs]);}// Set anonymousID\nif(queryObject.get(QUERY_PARAM_ANONYMOUS_ID_KEY)){argumentsArray.unshift(['setAnonymousId',queryObject.get(QUERY_PARAM_ANONYMOUS_ID_KEY)]);}};/**\n * Retrieve an existing buffered load method call and remove from the existing array\n */const getPreloadedLoadEvent=preloadedEventsArray=>{const loadMethodName='load';let loadEvent=[];/**\n * Iterate the buffered API calls until we find load call and process it separately\n */let i=0;while(i<preloadedEventsArray.length){if(preloadedEventsArray[i]&&preloadedEventsArray[i][0]===loadMethodName){loadEvent=clone(preloadedEventsArray[i]);preloadedEventsArray.splice(i,1);break;}i+=1;}return loadEvent;};/**\n * Promote consent events to the top of the preloaded events array\n * @param preloadedEventsArray Preloaded events array\n * @returns None\n */const promotePreloadedConsentEventsToTop=preloadedEventsArray=>{const consentMethodName='consent';const consentEvents=preloadedEventsArray.filter(bufferedEvent=>bufferedEvent[0]===consentMethodName);const nonConsentEvents=preloadedEventsArray.filter(bufferedEvent=>bufferedEvent[0]!==consentMethodName);// Remove all elements and add consent events first followed by non consent events\n// eslint-disable-next-line unicorn/no-useless-spread\npreloadedEventsArray.splice(0,preloadedEventsArray.length,...consentEvents,...nonConsentEvents);};/**\n * Retrieve any existing events that were triggered before SDK load and enqueue in buffer\n */const retrievePreloadBufferEvents=instance=>{const preloadedEventsArray=getExposedGlobal(GLOBAL_PRELOAD_BUFFER)||[];// Get events that are pre-populated via query string params\nretrieveEventsFromQueryString(preloadedEventsArray);// Enqueue the non load events in the buffer of the global rudder analytics singleton\nif(preloadedEventsArray.length>0){instance.enqueuePreloadBufferEvents(preloadedEventsArray);setExposedGlobal(GLOBAL_PRELOAD_BUFFER,[]);}};const consumePreloadBufferedEvent=(event,analyticsInstance)=>{const methodName=event.shift();let callOptions;if(isFunction(analyticsInstance[methodName])){switch(methodName){case 'page':callOptions=pageArgumentsToCallOptions(...event);break;case 'track':callOptions=trackArgumentsToCallOptions(...event);break;case 'identify':callOptions=identifyArgumentsToCallOptions(...event);break;case 'alias':callOptions=aliasArgumentsToCallOptions(...event);break;case 'group':callOptions=groupArgumentsToCallOptions(...event);break;default:analyticsInstance[methodName](...event);break;}if(callOptions){analyticsInstance[methodName](callOptions);}}};\n\nconst DEFAULT_EXT_SRC_LOAD_TIMEOUT_MS=10*1000;// 10 seconds\n\nconst EXTERNAL_SOURCE_LOAD_ORIGIN='RS_JS_SDK';\n\n/**\n * Create the DOM element to load a script marked as RS SDK originated\n *\n * @param {*} url The URL of the script to be loaded\n * @param {*} id ID for the script tag\n * @param {*} async Whether to load the script in async mode. Defaults to `true` [optional]\n * @param {*} onload callback to invoke onload [optional]\n * @param {*} onerror callback to invoke onerror [optional]\n * @param {*} extraAttributes key/value pair with html attributes to add in html tag [optional]\n *\n * @returns HTMLScriptElement\n */const createScriptElement=(url,id,async=true,onload=null,onerror=null,extraAttributes={})=>{const scriptElement=document.createElement('script');scriptElement.type='text/javascript';scriptElement.onload=onload;scriptElement.onerror=onerror;scriptElement.src=url;scriptElement.id=id;scriptElement.async=async;Object.keys(extraAttributes).forEach(attributeName=>{scriptElement.setAttribute(attributeName,extraAttributes[attributeName]);});scriptElement.setAttribute('data-loader',EXTERNAL_SOURCE_LOAD_ORIGIN);return scriptElement;};/**\n * Add script DOM element to DOM\n *\n * @param {*} newScriptElement the script element to add\n *\n * @returns\n */const insertScript=newScriptElement=>{// First try to add it to the head\nconst headElements=document.getElementsByTagName('head');if(headElements.length>0){headElements[0]?.insertBefore(newScriptElement,headElements[0]?.firstChild);return;}// Else wise add it before the first script tag\nconst scriptElements=document.getElementsByTagName('script');if(scriptElements.length>0&&scriptElements[0]?.parentNode){scriptElements[0]?.parentNode.insertBefore(newScriptElement,scriptElements[0]);return;}// Create a new head element and add the script as fallback\nconst headElement=document.createElement('head');headElement.appendChild(newScriptElement);const htmlElement=document.getElementsByTagName('html')[0];htmlElement?.insertBefore(headElement,htmlElement.firstChild);};/**\n * Loads external js file as a script html tag\n *\n * @param {*} url The URL of the script to be loaded\n * @param {*} id ID for the script tag\n * @param {*} timeout loading timeout\n * @param {*} async Whether to load the script in async mode. Defaults to `true` [optional]\n * @param {*} extraAttributes key/value pair with html attributes to add in html tag [optional]\n *\n * @returns\n */const jsFileLoader=(url,id,timeout,async=true,extraAttributes)=>new Promise((resolve,reject)=>{const scriptExists=document.getElementById(id);if(scriptExists){reject(new Error(SCRIPT_ALREADY_EXISTS_ERROR(id)));}try{let timeoutID;const onload=()=>{globalThis.clearTimeout(timeoutID);resolve(id);};const onerror=ev=>{globalThis.clearTimeout(timeoutID);reject(new Error(SCRIPT_LOAD_ERROR(id,url,ev)));};// Create the DOM element to load the script and add it to the DOM\ninsertScript(createScriptElement(url,id,async,onload,onerror,extraAttributes));// Reject on timeout\ntimeoutID=globalThis.setTimeout(()=>{reject(new Error(SCRIPT_LOAD_TIMEOUT_ERROR(id,url,timeout)));},timeout);}catch(err){reject(getMutatedError(err,SCRIPT_LOAD_ERROR(id,url,'unknown')));}});\n\n/**\n * Service to load external resources/files\n */class ExternalSrcLoader{constructor(logger,timeout=DEFAULT_EXT_SRC_LOAD_TIMEOUT_MS){this.logger=logger;this.timeout=timeout;}/**\n * Load external resource of type javascript\n */loadJSFile(config){const{url,id,timeout,async,callback,extraAttributes}=config;const isFireAndForget=!isFunction(callback);jsFileLoader(url,id,timeout||this.timeout,async,extraAttributes).then(id=>{if(!isFireAndForget){callback(id);}}).catch(err=>{if(!isFireAndForget){callback(id,err);}});}}\n\nvar i=Symbol.for(\"preact-signals\");function t(){if(!(s>1)){var i,t=false;while(void 0!==h){var n=h;h=void 0;v++;while(void 0!==n){var r=n.o;n.o=void 0;n.f&=-3;if(!(8&n.f)&&a(n))try{n.c();}catch(n){if(!t){i=n;t=true;}}n=r;}}v=0;s--;if(t)throw i;}else s--;}function n(i){if(s>0)return i();s++;try{return i();}finally{t();}}var r=void 0;function o(i){var t=r;r=void 0;try{return i();}finally{r=t;}}var h=void 0,s=0,v=0,u=0;function e(i){if(void 0!==r){var t=i.n;if(void 0===t||t.t!==r){t={i:0,S:i,p:r.s,n:void 0,t:r,e:void 0,x:void 0,r:t};if(void 0!==r.s)r.s.n=t;r.s=t;i.n=t;if(32&r.f)i.S(t);return t;}else if(-1===t.i){t.i=0;if(void 0!==t.n){t.n.p=t.p;if(void 0!==t.p)t.p.n=t.n;t.p=r.s;t.n=void 0;r.s.n=t;r.s=t;}return t;}}}function d(i,t){this.v=i;this.i=0;this.n=void 0;this.t=void 0;this.W=null==t?void 0:t.watched;this.Z=null==t?void 0:t.unwatched;this.name=null==t?void 0:t.name;}d.prototype.brand=i;d.prototype.h=function(){return true;};d.prototype.S=function(i){var t=this,n=this.t;if(n!==i&&void 0===i.e){i.x=n;this.t=i;if(void 0!==n)n.e=i;else o(function(){var i;null==(i=t.W)||i.call(t);});}};d.prototype.U=function(i){var t=this;if(void 0!==this.t){var n=i.e,r=i.x;if(void 0!==n){n.x=r;i.e=void 0;}if(void 0!==r){r.e=n;i.x=void 0;}if(i===this.t){this.t=r;if(void 0===r)o(function(){var i;null==(i=t.Z)||i.call(t);});}}};d.prototype.subscribe=function(i){var t=this;return m(function(){var n=t.value,o=r;r=void 0;try{i(n);}finally{r=o;}},{name:\"sub\"});};d.prototype.valueOf=function(){return this.value;};d.prototype.toString=function(){return this.value+\"\";};d.prototype.toJSON=function(){return this.value;};d.prototype.peek=function(){var i=r;r=void 0;try{return this.value;}finally{r=i;}};Object.defineProperty(d.prototype,\"value\",{get:function(){var i=e(this);if(void 0!==i)i.i=this.i;return this.v;},set:function(i){if(i!==this.v){if(v>100)throw new Error(\"Cycle detected\");this.v=i;this.i++;u++;s++;try{for(var n=this.t;void 0!==n;n=n.x)n.t.N();}finally{t();}}}});function c(i,t){return new d(i,t);}function a(i){for(var t=i.s;void 0!==t;t=t.n)if(t.S.i!==t.i||!t.S.h()||t.S.i!==t.i)return true;return false;}function l(i){for(var t=i.s;void 0!==t;t=t.n){var n=t.S.n;if(void 0!==n)t.r=n;t.S.n=t;t.i=-1;if(void 0===t.n){i.s=t;break;}}}function y(i){var t=i.s,n=void 0;while(void 0!==t){var r=t.p;if(-1===t.i){t.S.U(t);if(void 0!==r)r.n=t.n;if(void 0!==t.n)t.n.p=r;}else n=t;t.S.n=t.r;if(void 0!==t.r)t.r=void 0;t=r;}i.s=n;}function w(i,t){d.call(this,void 0);this.x=i;this.s=void 0;this.g=u-1;this.f=4;this.W=null==t?void 0:t.watched;this.Z=null==t?void 0:t.unwatched;this.name=null==t?void 0:t.name;}w.prototype=new d();w.prototype.h=function(){this.f&=-3;if(1&this.f)return false;if(32==(36&this.f))return true;this.f&=-5;if(this.g===u)return true;this.g=u;this.f|=1;if(this.i>0&&!a(this)){this.f&=-2;return true;}var i=r;try{l(this);r=this;var t=this.x();if(16&this.f||this.v!==t||0===this.i){this.v=t;this.f&=-17;this.i++;}}catch(i){this.v=i;this.f|=16;this.i++;}r=i;y(this);this.f&=-2;return true;};w.prototype.S=function(i){if(void 0===this.t){this.f|=36;for(var t=this.s;void 0!==t;t=t.n)t.S.S(t);}d.prototype.S.call(this,i);};w.prototype.U=function(i){if(void 0!==this.t){d.prototype.U.call(this,i);if(void 0===this.t){this.f&=-33;for(var t=this.s;void 0!==t;t=t.n)t.S.U(t);}}};w.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var i=this.t;void 0!==i;i=i.x)i.t.N();}};Object.defineProperty(w.prototype,\"value\",{get:function(){if(1&this.f)throw new Error(\"Cycle detected\");var i=e(this);this.h();if(void 0!==i)i.i=this.i;if(16&this.f)throw this.v;return this.v;}});function _(i){var n=i.u;i.u=void 0;if(\"function\"==typeof n){s++;var o=r;r=void 0;try{n();}catch(t){i.f&=-2;i.f|=8;p(i);throw t;}finally{r=o;t();}}}function p(i){for(var t=i.s;void 0!==t;t=t.n)t.S.U(t);i.x=void 0;i.s=void 0;_(i);}function g(i){if(r!==this)throw new Error(\"Out-of-order effect\");y(this);r=i;this.f&=-2;if(8&this.f)p(this);t();}function S(i,t){this.x=i;this.u=void 0;this.s=void 0;this.o=void 0;this.f=32;this.name=null==t?void 0:t.name;}S.prototype.c=function(){var i=this.S();try{if(8&this.f)return;if(void 0===this.x)return;var t=this.x();if(\"function\"==typeof t)this.u=t;}finally{i();}};S.prototype.S=function(){if(1&this.f)throw new Error(\"Cycle detected\");this.f|=1;this.f&=-9;_(this);l(this);s++;var i=r;r=this;return g.bind(this,i);};S.prototype.N=function(){if(!(2&this.f)){this.f|=2;this.o=h;h=this;}};S.prototype.d=function(){this.f|=8;if(!(1&this.f))p(this);};S.prototype.dispose=function(){this.d();};function m(i,t){var n=new S(i,t);try{n.c();}catch(i){n.d();throw i;}var r=n.d.bind(n);r[Symbol.dispose]=r;return r;}\n\n/**\n * A buffer queue to serve as a store for any type of data\n */class BufferQueue{constructor(){this.items=[];}enqueue(item){this.items.push(item);}dequeue(){if(this.items.length===0){return null;}return this.items.shift();}isEmpty(){return this.items.length===0;}size(){return this.items.length;}clear(){this.items=[];}}\n\nconst LOG_LEVEL_MAP={LOG:0,INFO:1,DEBUG:2,WARN:3,ERROR:4,NONE:5};const DEFAULT_LOG_LEVEL='LOG';const POST_LOAD_LOG_LEVEL='ERROR';const LOG_MSG_PREFIX='RS SDK';const LOG_MSG_PREFIX_STYLE='font-weight: bold; background: black; color: white;';const LOG_MSG_STYLE='font-weight: normal;';/**\n * Service to log messages/data to output provider, default is console\n */class Logger{constructor(minLogLevel=DEFAULT_LOG_LEVEL,scope='',logProvider=console){this.minLogLevel=LOG_LEVEL_MAP[minLogLevel];this.scope=scope;this.logProvider=logProvider;}log(...data){this.outputLog('LOG',data);}info(...data){this.outputLog('INFO',data);}debug(...data){this.outputLog('DEBUG',data);}warn(...data){this.outputLog('WARN',data);}error(...data){this.outputLog('ERROR',data);}outputLog(logMethod,data){if(this.minLogLevel<=LOG_LEVEL_MAP[logMethod]){this.logProvider[logMethod.toLowerCase()]?.(...this.formatLogData(data));}}setScope(scopeVal){this.scope=scopeVal||this.scope;}// TODO: should we allow to change the level via global variable on run time\n// to assist on the fly debugging?\nsetMinLogLevel(logLevel){this.minLogLevel=LOG_LEVEL_MAP[logLevel];if(isUndefined(this.minLogLevel)){this.minLogLevel=LOG_LEVEL_MAP[DEFAULT_LOG_LEVEL];}}/**\n * Formats the console message using `scope` and styles\n */formatLogData(data){if(Array.isArray(data)&&data.length>0){// prefix SDK identifier\nlet msg=`%c ${LOG_MSG_PREFIX}`;// format the log message using `scope`\nif(this.scope){msg=`${msg} - ${this.scope}`;}// trim whitespaces for original message\nconst originalMsg=isString(data[0])?data[0].trim():'';// prepare the final message\nmsg=`${msg} %c ${originalMsg}`;const styledLogArgs=[msg,LOG_MSG_PREFIX_STYLE,// add style for the prefix\nLOG_MSG_STYLE// reset the style for the actual message\n];// add first it if it was not a string msg\nif(!isString(data[0])){styledLogArgs.push(data[0]);}// append rest of the original arguments\nstyledLogArgs.push(...data.slice(1));return styledLogArgs;}return data;}}const defaultLogger=new Logger();\n\nlet ErrorType=/*#__PURE__*/function(ErrorType){ErrorType[\"HANDLEDEXCEPTION\"]=\"handledException\";ErrorType[\"UNHANDLEDEXCEPTION\"]=\"unhandledException\";ErrorType[\"UNHANDLEDREJECTION\"]=\"unhandledPromiseRejection\";return ErrorType;}({});\n\n// default is v3\nconst SUPPORTED_STORAGE_TYPES=['localStorage','memoryStorage','cookieStorage','sessionStorage','none'];const DEFAULT_STORAGE_TYPE='cookieStorage';\n\nconst SOURCE_CONFIG_RESOLUTION_ERROR=`Unable to process/parse source configuration response`;const SOURCE_DISABLED_ERROR=`The source is disabled. Please enable the source in the dashboard to send events.`;const XHR_PAYLOAD_PREP_ERROR=`Failed to prepare data for the request.`;const PLUGIN_EXT_POINT_MISSING_ERROR=`Failed to invoke plugin because the extension point name is missing.`;const PLUGIN_EXT_POINT_INVALID_ERROR=`Failed to invoke plugin because the extension point name is invalid.`;const SOURCE_CONFIG_OPTION_ERROR=context=>`${context}${LOG_CONTEXT_SEPARATOR}The \"getSourceConfig\" load API option must be a function that returns valid source configuration data.`;const COMPONENT_BASE_URL_ERROR=(context,component,url)=>`${context}${LOG_CONTEXT_SEPARATOR}The base URL \"${url}\" for ${component} is not valid.`;// ERROR\nconst UNSUPPORTED_CONSENT_MANAGER_ERROR=(context,selectedConsentManager,consentManagersToPluginNameMap)=>`${context}${LOG_CONTEXT_SEPARATOR}The consent manager \"${selectedConsentManager}\" is not supported. Please choose one of the following supported consent managers: \"${Object.keys(consentManagersToPluginNameMap)}\".`;const NON_ERROR_WARNING=(context,errStr)=>`${context}${LOG_CONTEXT_SEPARATOR}Ignoring a non-error: ${errStr}.`;const BREADCRUMB_ERROR=`Failed to log breadcrumb`;const HANDLE_ERROR_FAILURE=context=>`${context}${LOG_CONTEXT_SEPARATOR}Failed to handle the error.`;const PLUGIN_NAME_MISSING_ERROR=context=>`${context}${LOG_CONTEXT_SEPARATOR}Plugin name is missing.`;const PLUGIN_ALREADY_EXISTS_ERROR=(context,pluginName)=>`${context}${LOG_CONTEXT_SEPARATOR}Plugin \"${pluginName}\" already exists.`;const PLUGIN_NOT_FOUND_ERROR=(context,pluginName)=>`${context}${LOG_CONTEXT_SEPARATOR}Plugin \"${pluginName}\" not found.`;const PLUGIN_ENGINE_BUG_ERROR=(context,pluginName)=>`${context}${LOG_CONTEXT_SEPARATOR}Plugin \"${pluginName}\" not found in plugins but found in byName. This indicates a bug in the plugin engine. Please report this issue to the development team.`;const PLUGIN_DEPS_ERROR=(context,pluginName,notExistDeps)=>`${context}${LOG_CONTEXT_SEPARATOR}Plugin \"${pluginName}\" could not be loaded because some of its dependencies \"${notExistDeps}\" do not exist.`;const PLUGIN_INVOCATION_ERROR=(context,extPoint,pluginName)=>`${context}${LOG_CONTEXT_SEPARATOR}Failed to invoke the \"${extPoint}\" extension point of plugin \"${pluginName}\".`;const SOURCE_CONFIG_FETCH_ERROR='Failed to fetch the source config';const WRITE_KEY_VALIDATION_ERROR=(context,writeKey)=>`${context}${LOG_CONTEXT_SEPARATOR}The write key \"${writeKey}\" is invalid. It must be a non-empty string. Please check that the write key is correct and try again.`;const DATA_PLANE_URL_VALIDATION_ERROR=(context,dataPlaneUrl)=>`${context}${LOG_CONTEXT_SEPARATOR}The data plane URL \"${dataPlaneUrl}\" is invalid. It must be a valid URL string. Please check that the data plane URL is correct and try again.`;const INVALID_CALLBACK_FN_ERROR=context=>`${context}${LOG_CONTEXT_SEPARATOR}The provided callback parameter is not a function.`;const XHR_DELIVERY_ERROR=(prefix,status,statusText,url,response)=>`${prefix} with status ${status} (${statusText}) for URL: ${url}. Response: ${response.trim()}`;const XHR_REQUEST_ERROR=(prefix,e,url)=>`${prefix} due to timeout or no connection (${e?e.type:''}) at the client side for URL: ${url}`;const XHR_SEND_ERROR=(prefix,url)=>`${prefix} for URL: ${url}`;const STORE_DATA_SAVE_ERROR=key=>`Failed to save the value for \"${key}\" to storage`;const STORE_DATA_FETCH_ERROR=key=>`Failed to retrieve or parse data for \"${key}\" from storage`;const DATA_SERVER_REQUEST_FAIL_ERROR=status=>`The server responded with status ${status} while setting the cookies. As a fallback, the cookies will be set client side.`;const FAILED_SETTING_COOKIE_FROM_SERVER_ERROR=key=>`The server failed to set the ${key} cookie. As a fallback, the cookies will be set client side.`;const FAILED_SETTING_COOKIE_FROM_SERVER_GLOBAL_ERROR=`Failed to set/remove cookies via server. As a fallback, the cookies will be managed client side.`;// WARNING\nconst STORAGE_TYPE_VALIDATION_WARNING=(context,storageType,defaultStorageType)=>`${context}${LOG_CONTEXT_SEPARATOR}The storage type \"${storageType}\" is not supported. Please choose one of the following supported types: \"${SUPPORTED_STORAGE_TYPES}\". The default type \"${defaultStorageType}\" will be used instead.`;const UNSUPPORTED_STORAGE_ENCRYPTION_VERSION_WARNING=(context,selectedStorageEncryptionVersion,storageEncryptionVersionsToPluginNameMap,defaultVersion)=>`${context}${LOG_CONTEXT_SEPARATOR}The storage encryption version \"${selectedStorageEncryptionVersion}\" is not supported. Please choose one of the following supported versions: \"${Object.keys(storageEncryptionVersionsToPluginNameMap)}\". The default version \"${defaultVersion}\" will be used instead.`;const STORAGE_DATA_MIGRATION_OVERRIDE_WARNING=(context,storageEncryptionVersion,defaultVersion)=>`${context}${LOG_CONTEXT_SEPARATOR}The storage data migration has been disabled because the configured storage encryption version (${storageEncryptionVersion}) is not the latest (${defaultVersion}). To enable storage data migration, please update the storage encryption version to the latest version.`;const SERVER_SIDE_COOKIE_FEATURE_OVERRIDE_WARNING=(context,providedCookieDomain,currentCookieDomain)=>`${context}${LOG_CONTEXT_SEPARATOR}The provided cookie domain (${providedCookieDomain}) does not match the current webpage's domain (${currentCookieDomain}). Hence, the cookies will be set client-side.`;const RESERVED_KEYWORD_WARNING=(context,property,parentKeyPath,reservedElements)=>`${context}${LOG_CONTEXT_SEPARATOR}The \"${property}\" property defined under \"${parentKeyPath}\" is a reserved keyword. Please choose a different property name to avoid conflicts with reserved keywords (${reservedElements}).`;const INVALID_CONTEXT_OBJECT_WARNING=logContext=>`${logContext}${LOG_CONTEXT_SEPARATOR}Please make sure that the \"context\" property in the event API's \"options\" argument is a valid object literal with key-value pairs.`;const UNSUPPORTED_BEACON_API_WARNING=context=>`${context}${LOG_CONTEXT_SEPARATOR}The Beacon API is not supported by your browser. The events will be sent using XHR instead.`;const TIMEOUT_NOT_NUMBER_WARNING=(context,timeout,defaultValue)=>`${context}${LOG_CONTEXT_SEPARATOR}The session timeout value \"${timeout}\" is not a number. The default timeout of ${defaultValue} ms will be used instead.`;const CUT_OFF_DURATION_NOT_NUMBER_WARNING=(context,cutOffDuration,defaultValue)=>`${context}${LOG_CONTEXT_SEPARATOR}The session cut off duration value \"${cutOffDuration}\" is not a number. The default cut off duration of ${defaultValue} ms will be used instead.`;const CUT_OFF_DURATION_LESS_THAN_TIMEOUT_WARNING=(context,cutOffDuration,timeout)=>`${context}${LOG_CONTEXT_SEPARATOR}The session cut off duration value \"${cutOffDuration}\" ms is less than the session timeout value \"${timeout}\" ms. The cut off functionality will be disabled.`;const TIMEOUT_ZERO_WARNING=context=>`${context}${LOG_CONTEXT_SEPARATOR}The session timeout value is 0, which disables the automatic session tracking feature. If you want to enable session tracking, please provide a positive integer value for the timeout.`;const TIMEOUT_NOT_RECOMMENDED_WARNING=(context,timeout,minTimeout)=>`${context}${LOG_CONTEXT_SEPARATOR}The session timeout value ${timeout} ms is less than the recommended minimum of ${minTimeout} ms. Please consider increasing the timeout value to ensure optimal performance and reliability.`;const INVALID_SESSION_ID_WARNING=(context,sessionId,minSessionIdLength)=>`${context}${LOG_CONTEXT_SEPARATOR}The provided session ID (${sessionId}) is either invalid, not a positive integer, or not at least \"${minSessionIdLength}\" digits long. A new session ID will be auto-generated instead.`;const STORAGE_QUOTA_EXCEEDED_WARNING=context=>`${context}${LOG_CONTEXT_SEPARATOR}The storage is either full or unavailable, so the data will not be persisted. Switching to in-memory storage.`;const STORAGE_UNAVAILABLE_WARNING=(context,entry,selectedStorageType,finalStorageType)=>`${context}${LOG_CONTEXT_SEPARATOR}The storage type \"${selectedStorageType}\" is not available for entry \"${entry}\". The SDK will initialize the entry with \"${finalStorageType}\" storage type instead.`;const CALLBACK_INVOKE_ERROR=context=>`${context}${LOG_CONTEXT_SEPARATOR}The callback threw an exception`;const INVALID_CONFIG_URL_WARNING=(context,configUrl)=>`${context}${LOG_CONTEXT_SEPARATOR}The provided source config URL \"${configUrl}\" is invalid. Using the default source config URL instead.`;const POLYFILL_SCRIPT_LOAD_ERROR=(scriptId,url)=>`Failed to load the polyfill script with ID \"${scriptId}\" from URL ${url}.`;const UNSUPPORTED_PRE_CONSENT_STORAGE_STRATEGY=(context,selectedStrategy,defaultStrategy)=>`${context}${LOG_CONTEXT_SEPARATOR}The pre-consent storage strategy \"${selectedStrategy}\" is not supported. Please choose one of the following supported strategies: \"none, session, anonymousId\". The default strategy \"${defaultStrategy}\" will be used instead.`;const UNSUPPORTED_PRE_CONSENT_EVENTS_DELIVERY_TYPE=(context,selectedDeliveryType,defaultDeliveryType)=>`${context}${LOG_CONTEXT_SEPARATOR}The pre-consent events delivery type \"${selectedDeliveryType}\" is not supported. Please choose one of the following supported types: \"immediate, buffer\". The default type \"${defaultDeliveryType}\" will be used instead.`;const DEPRECATED_PLUGIN_WARNING=(context,pluginName)=>`${context}${LOG_CONTEXT_SEPARATOR}${pluginName} plugin is deprecated. Please exclude it from the load API options.`;const generateMisconfiguredPluginsWarning=(context,configurationStatus,missingPlugins,shouldAddMissingPlugins)=>{const isSinglePlugin=missingPlugins.length===1;const pluginsString=isSinglePlugin?` '${missingPlugins[0]}' plugin was`:` ['${missingPlugins.join(\"', '\")}'] plugins were`;const baseWarning=`${context}${LOG_CONTEXT_SEPARATOR}${configurationStatus}, but${pluginsString} not configured to load.`;if(shouldAddMissingPlugins){return `${baseWarning} So, ${isSinglePlugin?'the plugin':'those plugins'} will be loaded automatically.`;}return `${baseWarning} Ignore if this was intentional. Otherwise, consider adding ${isSinglePlugin?'it':'them'} to the 'plugins' load API option.`;};const INVALID_POLYFILL_URL_WARNING=(context,customPolyfillUrl)=>`${context}${LOG_CONTEXT_SEPARATOR}The provided polyfill URL \"${customPolyfillUrl}\" is invalid. The default polyfill URL will be used instead.`;const PAGE_UNLOAD_ON_BEACON_DISABLED_WARNING=context=>`${context}${LOG_CONTEXT_SEPARATOR}Page Unloaded event can only be tracked when the Beacon transport is active. Please enable \"useBeacon\" load API option.`;const UNKNOWN_PLUGINS_WARNING=(context,unknownPlugins)=>`${context}${LOG_CONTEXT_SEPARATOR}Ignoring unknown plugins: ${unknownPlugins.join(', ')}.`;const UNAVAILABLE_PLUGINS_ERROR=(context,unavailablePlugins)=>`${context}${LOG_CONTEXT_SEPARATOR}Failed to load the following unavailable local plugins: ${unavailablePlugins.join(', ')}. Some features of the SDK may not work as expected. Make sure you are using the correct SDK bundle variant.`;const CUSTOM_INTEGRATION_CANNOT_BE_ADDED_ERROR=(context,destinationId)=>`${context}${LOG_CONTEXT_SEPARATOR}Cannot add custom integration for destination ID \"${destinationId}\" after the SDK is loaded.`;\n\nconst DEFAULT_INTEGRATIONS_CONFIG={All:true};\n\nconst CDN_INT_DIR='js-integrations';const CDN_PLUGINS_DIR='plugins';const URL_PATTERN=new RegExp('^(https?:\\\\/\\\\/)'+// protocol\n'('+'((([a-zA-Z\\\\d]([a-zA-Z\\\\d-]*[a-zA-Z\\\\d])*)\\\\.)+[a-zA-Z]{2,}|'+// domain name\n'localhost|'+// localhost\n'((25[0-5]|2[0-4][0-9]|[0-1]?[0-9]?[0-9]?)\\\\.){3}'+// OR IP (v4) address first 3 octets\n'(25[0-5]|2[0-4][0-9]|[0-1]?[0-9]?[0-9]?))'+// last octet of IP address\n')'+'(\\\\:\\\\d+)?'+// port\n'(\\\\/[-a-zA-Z\\\\d%_.~+]*)*'+// path\n'(\\\\?[;&a-zA-Z\\\\d%_.~+=-]*)?'+// query string\n'(\\\\#[-a-zA-Z\\\\d_]*)?$')// fragment locator\n;\n\nconst BUILD_TYPE='modern';const SDK_CDN_BASE_URL='https://cdn.rudderlabs.com';const CDN_ARCH_VERSION_DIR='v3';const DEFAULT_INTEGRATION_SDKS_URL=`${SDK_CDN_BASE_URL}/${CDN_ARCH_VERSION_DIR}/${BUILD_TYPE}/${CDN_INT_DIR}`;const DEFAULT_PLUGINS_URL=`${SDK_CDN_BASE_URL}/${CDN_ARCH_VERSION_DIR}/${BUILD_TYPE}/${CDN_PLUGINS_DIR}`;const DEFAULT_CONFIG_BE_URL='https://api.rudderstack.com';\n\nconst DEFAULT_STORAGE_ENCRYPTION_VERSION='v3';const DEFAULT_DATA_PLANE_EVENTS_TRANSPORT='xhr';const ConsentManagersToPluginNameMap={iubenda:'IubendaConsentManager',oneTrust:'OneTrustConsentManager',ketch:'KetchConsentManager',custom:'CustomConsentManager'};const StorageEncryptionVersionsToPluginNameMap={[DEFAULT_STORAGE_ENCRYPTION_VERSION]:'StorageEncryption',legacy:'StorageEncryptionLegacy'};const DataPlaneEventsTransportToPluginNameMap={[DEFAULT_DATA_PLANE_EVENTS_TRANSPORT]:'XhrQueue',beacon:'BeaconQueue'};const DEFAULT_DATA_SERVICE_ENDPOINT='rsaRequest';const METRICS_SERVICE_ENDPOINT='rsaMetrics';const CUSTOM_DEVICE_MODE_DESTINATION_DISPLAY_NAME='Custom Device Mode';\n\nconst defaultLoadOptions={configUrl:DEFAULT_CONFIG_BE_URL,loadIntegration:true,sessions:{autoTrack:true,timeout:DEFAULT_SESSION_TIMEOUT_MS,cutOff:{enabled:false}},sameSiteCookie:'Lax',polyfillIfRequired:true,integrations:DEFAULT_INTEGRATIONS_CONFIG,useBeacon:false,beaconQueueOptions:{},destinationsQueueOptions:{},queueOptions:{},lockIntegrationsVersion:true,lockPluginsVersion:true,uaChTrackLevel:'none',plugins:[],useGlobalIntegrationsConfigInEvents:false,bufferDataPlaneEventsUntilReady:false,dataPlaneEventsBufferTimeout:DEFAULT_DATA_PLANE_EVENTS_BUFFER_TIMEOUT_MS,storage:{encryption:{version:DEFAULT_STORAGE_ENCRYPTION_VERSION},migrate:true,cookie:{}},sendAdblockPage:false,sameDomainCookiesOnly:false,secureCookie:false,sendAdblockPageOptions:{},useServerSideCookies:false};const loadOptionsState=c(clone(defaultLoadOptions));\n\nconst DEFAULT_USER_SESSION_VALUES=deepFreeze({userId:'',userTraits:{},anonymousId:'',groupId:'',groupTraits:{},initialReferrer:'',initialReferringDomain:'',sessionInfo:{},authToken:null});const DEFAULT_RESET_OPTIONS=deepFreeze({entries:{userId:true,userTraits:true,groupId:true,groupTraits:true,sessionInfo:true,authToken:true,// These are not reset by default\nanonymousId:false,initialReferrer:false,initialReferringDomain:false}});const SERVER_SIDE_COOKIES_DEBOUNCE_TIME=10;// milliseconds\n\nconst sessionState={userId:c(DEFAULT_USER_SESSION_VALUES.userId),userTraits:c(DEFAULT_USER_SESSION_VALUES.userTraits),anonymousId:c(DEFAULT_USER_SESSION_VALUES.anonymousId),groupId:c(DEFAULT_USER_SESSION_VALUES.groupId),groupTraits:c(DEFAULT_USER_SESSION_VALUES.groupTraits),initialReferrer:c(DEFAULT_USER_SESSION_VALUES.initialReferrer),initialReferringDomain:c(DEFAULT_USER_SESSION_VALUES.initialReferringDomain),sessionInfo:c(DEFAULT_USER_SESSION_VALUES.sessionInfo),authToken:c(DEFAULT_USER_SESSION_VALUES.authToken)};\n\nconst capabilitiesState={isOnline:c(true),storage:{isLocalStorageAvailable:c(false),isCookieStorageAvailable:c(false),isSessionStorageAvailable:c(false)},isBeaconAvailable:c(false),isLegacyDOM:c(false),isUaCHAvailable:c(false),isCryptoAvailable:c(false),isIE11:c(false),isAdBlockerDetectionInProgress:c(false),isAdBlocked:c(undefined),cspBlockedURLs:c([])};\n\nconst reportingState={isErrorReportingEnabled:c(false),isMetricsReportingEnabled:c(false),breadcrumbs:c([])};\n\nconst sourceConfigState=c(undefined);\n\nconst lifecycleState={activeDataplaneUrl:c(undefined),integrationsCDNPath:c(DEFAULT_INTEGRATION_SDKS_URL),pluginsCDNPath:c(DEFAULT_PLUGINS_URL),sourceConfigUrl:c(undefined),status:c(undefined),initialized:c(false),logLevel:c(POST_LOAD_LOG_LEVEL),loaded:c(false),readyCallbacks:c([]),writeKey:c(undefined),dataPlaneUrl:c(undefined),safeAnalyticsInstance:c(undefined)};\n\nconst consentsState={enabled:c(false),initialized:c(false),data:c({}),activeConsentManagerPluginName:c(undefined),preConsent:c({enabled:false}),postConsent:c({}),resolutionStrategy:c('and'),provider:c(undefined),metadata:c(undefined)};\n\nconst metricsState={retries:c(0),dropped:c(0),sent:c(0),queued:c(0),triggered:c(0),metricsServiceUrl:c(undefined)};\n\nconst getVariantValue=()=>{// For CDN builds, use runtime window.rudderAnalyticsBuildType\nreturn BUILD_VARIANT;};const contextState={app:c({name:APP_NAME,namespace:APP_NAMESPACE,version:APP_VERSION,installType:MODULE_TYPE}),traits:c(null),library:c({name:APP_NAME,version:APP_VERSION,snippetVersion:globalThis.RudderSnippetVersion,variant:getVariantValue()}),userAgent:c(null),device:c(null),network:c(null),os:c({name:'',version:''}),locale:c(null),screen:c({density:0,width:0,height:0,innerWidth:0,innerHeight:0}),'ua-ch':c(undefined),timezone:c(undefined)};\n\nconst nativeDestinationsState={configuredDestinations:c([]),activeDestinations:c([]),loadOnlyIntegrations:c({}),failedDestinations:c([]),loadIntegration:c(true),initializedDestinations:c([]),clientDestinationsReady:c(false),integrationsConfig:c({})};\n\nconst eventBufferState={toBeProcessedArray:c([]),readyCallbacksArray:c([])};\n\nconst pluginsState={ready:c(false),loadedPlugins:c([]),failedPlugins:c([]),pluginsToLoadFromConfig:c([]),activePlugins:c([]),totalPluginsToLoad:c(0)};\n\nconst storageState={encryptionPluginName:c(undefined),migrate:c(false),type:c(undefined),cookie:c(undefined),entries:c({}),trulyAnonymousTracking:c(false)};\n\nconst serverSideCookiesState={isEnabledServerSideCookies:c(false),dataServiceUrl:c(undefined)};\n\nconst dataPlaneEventsState={eventsQueuePluginName:c(undefined),deliveryEnabled:c(true)// Delivery should always happen\n};\n\nconst autoTrackState={enabled:c(false),pageLifecycle:{enabled:c(false),pageViewId:c(undefined),pageLoadedTimestamp:c(undefined)}};\n\nconst defaultStateValues={capabilities:capabilitiesState,consents:consentsState,context:contextState,eventBuffer:eventBufferState,lifecycle:lifecycleState,loadOptions:loadOptionsState,metrics:metricsState,nativeDestinations:nativeDestinationsState,plugins:pluginsState,reporting:reportingState,session:sessionState,source:sourceConfigState,storage:storageState,serverCookies:serverSideCookiesState,dataPlaneEvents:dataPlaneEventsState,autoTrack:autoTrackState};const state={...clone(defaultStateValues)};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nvar errorStackParser$1 = {exports: {}};\n\nvar stackframe$1 = {exports: {}};\n\nvar stackframe=stackframe$1.exports;var hasRequiredStackframe;function requireStackframe(){if(hasRequiredStackframe)return stackframe$1.exports;hasRequiredStackframe=1;(function(module,exports$1){(function(root,factory){/* istanbul ignore next */{module.exports=factory();}})(stackframe,function(){function _isNumber(n){return !isNaN(parseFloat(n))&&isFinite(n);}function _capitalize(str){return str.charAt(0).toUpperCase()+str.substring(1);}function _getter(p){return function(){return this[p];};}var booleanProps=['isConstructor','isEval','isNative','isToplevel'];var numericProps=['columnNumber','lineNumber'];var stringProps=['fileName','functionName','source'];var arrayProps=['args'];var objectProps=['evalOrigin'];var props=booleanProps.concat(numericProps,stringProps,arrayProps,objectProps);function StackFrame(obj){if(!obj)return;for(var i=0;i<props.length;i++){if(obj[props[i]]!==undefined){this['set'+_capitalize(props[i])](obj[props[i]]);}}}StackFrame.prototype={getArgs:function(){return this.args;},setArgs:function(v){if(Object.prototype.toString.call(v)!=='[object Array]'){throw new TypeError('Args must be an Array');}this.args=v;},getEvalOrigin:function(){return this.evalOrigin;},setEvalOrigin:function(v){if(v instanceof StackFrame){this.evalOrigin=v;}else if(v instanceof Object){this.evalOrigin=new StackFrame(v);}else {throw new TypeError('Eval Origin must be an Object or StackFrame');}},toString:function(){var fileName=this.getFileName()||'';var lineNumber=this.getLineNumber()||'';var columnNumber=this.getColumnNumber()||'';var functionName=this.getFunctionName()||'';if(this.getIsEval()){if(fileName){return '[eval] ('+fileName+':'+lineNumber+':'+columnNumber+')';}return '[eval]:'+lineNumber+':'+columnNumber;}if(functionName){return functionName+' ('+fileName+':'+lineNumber+':'+columnNumber+')';}return fileName+':'+lineNumber+':'+columnNumber;}};StackFrame.fromString=function StackFrame$$fromString(str){var argsStartIndex=str.indexOf('(');var argsEndIndex=str.lastIndexOf(')');var functionName=str.substring(0,argsStartIndex);var args=str.substring(argsStartIndex+1,argsEndIndex).split(',');var locationString=str.substring(argsEndIndex+1);if(locationString.indexOf('@')===0){var parts=/@(.+?)(?::(\\d+))?(?::(\\d+))?$/.exec(locationString,'');var fileName=parts[1];var lineNumber=parts[2];var columnNumber=parts[3];}return new StackFrame({functionName:functionName,args:args||undefined,fileName:fileName,lineNumber:lineNumber||undefined,columnNumber:columnNumber||undefined});};for(var i=0;i<booleanProps.length;i++){StackFrame.prototype['get'+_capitalize(booleanProps[i])]=_getter(booleanProps[i]);StackFrame.prototype['set'+_capitalize(booleanProps[i])]=function(p){return function(v){this[p]=Boolean(v);};}(booleanProps[i]);}for(var j=0;j<numericProps.length;j++){StackFrame.prototype['get'+_capitalize(numericProps[j])]=_getter(numericProps[j]);StackFrame.prototype['set'+_capitalize(numericProps[j])]=function(p){return function(v){if(!_isNumber(v)){throw new TypeError(p+' must be a Number');}this[p]=Number(v);};}(numericProps[j]);}for(var k=0;k<stringProps.length;k++){StackFrame.prototype['get'+_capitalize(stringProps[k])]=_getter(stringProps[k]);StackFrame.prototype['set'+_capitalize(stringProps[k])]=function(p){return function(v){this[p]=String(v);};}(stringProps[k]);}return StackFrame;});})(stackframe$1);return stackframe$1.exports;}\n\nvar errorStackParser=errorStackParser$1.exports;var hasRequiredErrorStackParser;function requireErrorStackParser(){if(hasRequiredErrorStackParser)return errorStackParser$1.exports;hasRequiredErrorStackParser=1;(function(module,exports$1){(function(root,factory){/* istanbul ignore next */{module.exports=factory(requireStackframe());}})(errorStackParser,function ErrorStackParser(StackFrame){var FIREFOX_SAFARI_STACK_REGEXP=/(^|@)\\S+:\\d+/;var CHROME_IE_STACK_REGEXP=/^\\s*at .*(\\S+:\\d+|\\(native\\))/m;var SAFARI_NATIVE_CODE_REGEXP=/^(eval@)?(\\[native code])?$/;return {/**\n\t\t * Given an Error object, extract the most information from it.\n\t\t *\n\t\t * @param {Error} error object\n\t\t * @return {Array} of StackFrames\n\t\t */parse:function ErrorStackParser$$parse(error){if(typeof error.stacktrace!=='undefined'||typeof error['opera#sourceloc']!=='undefined'){return this.parseOpera(error);}else if(error.stack&&error.stack.match(CHROME_IE_STACK_REGEXP)){return this.parseV8OrIE(error);}else if(error.stack){return this.parseFFOrSafari(error);}else {throw new Error('Cannot parse given Error object');}},// Separate line and column numbers from a string of the form: (URI:Line:Column)\nextractLocation:function ErrorStackParser$$extractLocation(urlLike){// Fail-fast but return locations like \"(native)\"\nif(urlLike.indexOf(':')===-1){return [urlLike];}var regExp=/(.+?)(?::(\\d+))?(?::(\\d+))?$/;var parts=regExp.exec(urlLike.replace(/[()]/g,''));return [parts[1],parts[2]||undefined,parts[3]||undefined];},parseV8OrIE:function ErrorStackParser$$parseV8OrIE(error){var filtered=error.stack.split('\\n').filter(function(line){return !!line.match(CHROME_IE_STACK_REGEXP);},this);return filtered.map(function(line){if(line.indexOf('(eval ')>-1){// Throw away eval information until we implement stacktrace.js/stackframe#8\nline=line.replace(/eval code/g,'eval').replace(/(\\(eval at [^()]*)|(,.*$)/g,'');}var sanitizedLine=line.replace(/^\\s+/,'').replace(/\\(eval code/g,'(').replace(/^.*?\\s+/,'');// capture and preseve the parenthesized location \"(/foo/my bar.js:12:87)\" in\n// case it has spaces in it, as the string is split on \\s+ later on\nvar location=sanitizedLine.match(/ (\\(.+\\)$)/);// remove the parenthesized location from the line, if it was matched\nsanitizedLine=location?sanitizedLine.replace(location[0],''):sanitizedLine;// if a location was matched, pass it to extractLocation() otherwise pass all sanitizedLine\n// because this line doesn't have function name\nvar locationParts=this.extractLocation(location?location[1]:sanitizedLine);var functionName=location&&sanitizedLine||undefined;var fileName=['eval','<anonymous>'].indexOf(locationParts[0])>-1?undefined:locationParts[0];return new StackFrame({functionName:functionName,fileName:fileName,lineNumber:locationParts[1],columnNumber:locationParts[2],source:line});},this);},parseFFOrSafari:function ErrorStackParser$$parseFFOrSafari(error){var filtered=error.stack.split('\\n').filter(function(line){return !line.match(SAFARI_NATIVE_CODE_REGEXP);},this);return filtered.map(function(line){// Throw away eval information until we implement stacktrace.js/stackframe#8\nif(line.indexOf(' > eval')>-1){line=line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g,':$1');}if(line.indexOf('@')===-1&&line.indexOf(':')===-1){// Safari eval frames only have function names and nothing else\nreturn new StackFrame({functionName:line});}else {var functionNameRegex=/((.*\".+\"[^@]*)?[^@]*)(?:@)/;var matches=line.match(functionNameRegex);var functionName=matches&&matches[1]?matches[1]:undefined;var locationParts=this.extractLocation(line.replace(functionNameRegex,''));return new StackFrame({functionName:functionName,fileName:locationParts[0],lineNumber:locationParts[1],columnNumber:locationParts[2],source:line});}},this);},parseOpera:function ErrorStackParser$$parseOpera(e){if(!e.stacktrace||e.message.indexOf('\\n')>-1&&e.message.split('\\n').length>e.stacktrace.split('\\n').length){return this.parseOpera9(e);}else if(!e.stack){return this.parseOpera10(e);}else {return this.parseOpera11(e);}},parseOpera9:function ErrorStackParser$$parseOpera9(e){var lineRE=/Line (\\d+).*script (?:in )?(\\S+)/i;var lines=e.message.split('\\n');var result=[];for(var i=2,len=lines.length;i<len;i+=2){var match=lineRE.exec(lines[i]);if(match){result.push(new StackFrame({fileName:match[2],lineNumber:match[1],source:lines[i]}));}}return result;},parseOpera10:function ErrorStackParser$$parseOpera10(e){var lineRE=/Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;var lines=e.stacktrace.split('\\n');var result=[];for(var i=0,len=lines.length;i<len;i+=2){var match=lineRE.exec(lines[i]);if(match){result.push(new StackFrame({functionName:match[3]||undefined,fileName:match[2],lineNumber:match[1],source:lines[i]}));}}return result;},// Opera 10.65+ Error.stack very similar to FF/Safari\nparseOpera11:function ErrorStackParser$$parseOpera11(error){var filtered=error.stack.split('\\n').filter(function(line){return !!line.match(FIREFOX_SAFARI_STACK_REGEXP)&&!line.match(/^Error created at/);},this);return filtered.map(function(line){var tokens=line.split('@');var locationParts=this.extractLocation(tokens.pop());var functionCall=tokens.shift()||'';var functionName=functionCall.replace(/<anonymous function(: (\\w+))?>/,'$2').replace(/\\([^)]*\\)/g,'')||undefined;var argsRaw;if(functionCall.match(/\\(([^)]*)\\)/)){argsRaw=functionCall.replace(/^[^(]+\\(([^)]*)\\)$/,'$1');}var args=argsRaw===undefined||argsRaw==='[arguments not available]'?undefined:argsRaw.split(',');return new StackFrame({functionName:functionName,args:args,fileName:locationParts[0],lineNumber:locationParts[1],columnNumber:locationParts[2],source:line});},this);}};});})(errorStackParser$1);return errorStackParser$1.exports;}\n\nvar errorStackParserExports = requireErrorStackParser();\nconst ErrorStackParser = /*@__PURE__*/getDefaultExportFromCjs(errorStackParserExports);\n\nconst GLOBAL_CODE='global code';const normalizeFunctionName=name=>{if(isDefined(name)){return /^global code$/i.test(name)?GLOBAL_CODE:name;}return name;};/**\n * Takes a stacktrace.js style stackframe (https://github.com/stacktracejs/stackframe)\n * and returns a Bugsnag compatible stackframe (https://docs.bugsnag.com/api/error-reporting/#json-payload)\n * @param frame\n * @returns\n */const formatStackframe=frame=>{const f={file:frame.fileName,method:normalizeFunctionName(frame.functionName),lineNumber:frame.lineNumber,columnNumber:frame.columnNumber};// Some instances result in no file:\n// - non-error exception thrown from global code in FF\n// This adds one.\nif(f.lineNumber&&f.lineNumber>-1&&!f.file&&!f.method){f.file=GLOBAL_CODE;}return f;};const ensureString=str=>isString(str)?str:'';function createException(errorClass,errorMessage,msgPrefix,stacktrace){return {errorClass:ensureString(errorClass),message:`${msgPrefix}${ensureString(errorMessage)}`,type:'browserjs',stacktrace:stacktrace.reduce((accum,frame)=>{const f=formatStackframe(frame);// don't include a stackframe if none of its properties are defined\ntry{if(JSON.stringify(f)==='{}')return accum;return accum.concat(f);}catch{return accum;}},[])};}const normalizeError=(maybeError,logger)=>{let error;if(isTypeOfError(maybeError)&&isString(getStacktrace(maybeError))){error=maybeError;}else {logger.warn(NON_ERROR_WARNING(ERROR_HANDLER,stringifyWithoutCircular(maybeError)));error=undefined;}return error;};const createBugsnagException=(error,msgPrefix)=>{try{const stacktrace=ErrorStackParser.parse(error);return createException(error.name,error.message,msgPrefix,stacktrace);}catch{return createException(error.name,error.message,msgPrefix,[]);}};\n\n/**\n * Utility to parse XHR JSON response\n */const responseTextToJson=(responseText,onError)=>{try{return JSON.parse(responseText||'');}catch(err){const error=getMutatedError(err,'Failed to parse response data');onError(error);}return undefined;};\n\nconst FAILED_REQUEST_ERR_MSG_PREFIX='The request failed';const PLUGINS_LOAD_FAILURE_MESSAGES=[/Failed to fetch dynamically imported module: .*/];const INTEGRATIONS_LOAD_FAILURE_MESSAGES=[/Unable to load \\(.*\\) the script with the id .*/,/A timeout of \\d+ ms occurred while trying to load the script with id .*/];const ERROR_MESSAGES_TO_BE_FILTERED=[new RegExp(`${FAILED_REQUEST_ERR_MSG_PREFIX}.*`),/A script with the id .* is already loaded\\./];const SCRIPT_LOAD_FAILURE_MESSAGES=[...PLUGINS_LOAD_FAILURE_MESSAGES,...INTEGRATIONS_LOAD_FAILURE_MESSAGES];const INTEGRATIONS_ERROR_CATEGORY='integrations';const SDK_ERROR_CATEGORY='sdk';const DEFAULT_ERROR_CATEGORY=SDK_ERROR_CATEGORY;\n\nconst DEFAULT_XHR_REQUEST_OPTIONS={headers:{Accept:'application/json','Content-Type':'application/json;charset=UTF-8'},method:'GET'};/**\n * Utility to create request configuration based on default options\n */const createXhrRequestOptions=(url,options,basicAuthHeader)=>{const requestOptions=mergeDeepRight(DEFAULT_XHR_REQUEST_OPTIONS,options||{});if(basicAuthHeader){requestOptions.headers=mergeDeepRight(requestOptions.headers,{Authorization:basicAuthHeader});}requestOptions.url=url;return requestOptions;};/**\n * Utility implementation of XHR, fetch cannot be used as it requires explicit\n * origin allowed values and not wildcard for CORS requests with credentials and\n * this is not supported by our sourceConfig API\n */const xhrRequest=(options,timeout=DEFAULT_XHR_TIMEOUT_MS,logger)=>new Promise((resolve,reject)=>{let payload;if(options.sendRawData===true){payload=options.data;}else {payload=stringifyWithoutCircular(options.data,false,[],logger);if(isNull(payload)){reject({error:new Error(XHR_PAYLOAD_PREP_ERROR),undefined,options});// return and don't process further if the payload could not be stringified\nreturn;}}const xhr=new XMLHttpRequest();// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst xhrReject=e=>{reject({error:new Error(XHR_DELIVERY_ERROR(FAILED_REQUEST_ERR_MSG_PREFIX,xhr.status,xhr.statusText,options.url,xhr.responseText)),xhr,options});};const xhrError=e=>{reject({error:new Error(XHR_REQUEST_ERROR(FAILED_REQUEST_ERR_MSG_PREFIX,e,options.url)),xhr,options,...(e?.type==='timeout'?{timedOut:true}:{})});};xhr.ontimeout=xhrError;xhr.onerror=xhrError;xhr.onload=()=>{if(xhr.status>=200&&xhr.status<400){resolve({response:xhr.responseText,xhr,options});}else {xhrReject();}};xhr.open(options.method,options.url,true);if(options.withCredentials===true){xhr.withCredentials=true;}// The timeout property may be set only in the time interval between a call to the open method\n// and the first call to the send method in legacy browsers\nxhr.timeout=timeout;Object.keys(options.headers).forEach(headerName=>{if(options.headers[headerName]){xhr.setRequestHeader(headerName,options.headers[headerName]);}});try{xhr.send(payload);}catch(err){reject({error:getMutatedError(err,XHR_SEND_ERROR(FAILED_REQUEST_ERR_MSG_PREFIX,options.url)),xhr,options});}});\n\n/**\n * Service to handle data communication with APIs\n */class HttpClient{constructor(logger){this.logger=logger;this.onError=this.onError.bind(this);}init(errorHandler){this.errorHandler=errorHandler;}/**\n * Implement requests in a blocking way\n */async getData(config){const{url,options,timeout,isRawResponse}=config;try{const data=await xhrRequest(createXhrRequestOptions(url,options,this.basicAuthHeader),timeout,this.logger);return {data:isRawResponse?data.response:responseTextToJson(data.response,this.onError),details:data};}catch(reason){return {data:undefined,details:reason};}}/**\n * Implement requests in a non-blocking way\n */getAsyncData(config){const{callback,url,options,timeout,isRawResponse}=config;const isFireAndForget=!isFunction(callback);xhrRequest(createXhrRequestOptions(url,options,this.basicAuthHeader),timeout,this.logger).then(data=>{if(!isFireAndForget){callback(isRawResponse?data.response:responseTextToJson(data.response,this.onError),data);}}).catch(data=>{if(!isFireAndForget){callback(undefined,data);}});}/**\n * Handle errors\n */onError(error,groupingHash){this.errorHandler?.onError({error,context:HTTP_CLIENT,groupingHash});}/**\n * Set basic authentication header (eg writekey)\n */setAuthHeader(value,noBtoa=false){const authVal=noBtoa?value:toBase64(`${value}:`);this.basicAuthHeader=`Basic ${authVal}`;}/**\n * Clear basic authentication header\n */resetAuthHeader(){this.basicAuthHeader=undefined;}}const defaultHttpClient=new HttpClient(defaultLogger);\n\nconst METRICS_PAYLOAD_VERSION='1';\n\n// Errors from the below scripts are NOT allowed to reach Bugsnag\nconst SDK_FILE_NAME_PREFIXES=()=>['rsa'// Prefix for all the SDK scripts including plugins and module federated chunks\n];const DEV_HOSTS=['www.test-host.com','localhost','127.0.0.1','[::1]'];// List of keys to exclude from the metadata\n// Potential PII or sensitive data\nconst APP_STATE_EXCLUDE_KEYS=['userId','userTraits','groupId','groupTraits','anonymousId','config','integration',// integration instance objects\n'eventBuffer',// pre-load event buffer (may contain PII)\n'traits','authToken'];const NOTIFIER_NAME='RudderStack JavaScript SDK';const SDK_GITHUB_URL='git+https://github.com/rudderlabs/rudder-sdk-js.git';const SOURCE_NAME='js';\n\nconst detectAdBlockers=httpClient=>{state.capabilities.isAdBlockerDetectionInProgress.value=true;try{// Apparently, '?view=ad' is a query param that is blocked by majority of adblockers\n// Use source config URL here as it is very unlikely to be blocked by adblockers\n// Only the extra query param should make it vulnerable to adblockers\n// This will work even if the users proxies it.\n// The edge case where this doesn't work is when HEAD method is not allowed by the server (user's)\nconst baseUrl=new URL(state.lifecycle.sourceConfigUrl.value);const url=`${baseUrl.origin}${baseUrl.pathname}?view=ad`;httpClient.getAsyncData({url,options:{// We actually don't need the response from the request, so we are using HEAD\nmethod:'HEAD',headers:{'Content-Type':undefined}},isRawResponse:true,callback:(result,details)=>{state.capabilities.isAdBlockerDetectionInProgress.value=false;// not ad blocked if the request is successful or it is not internally redirected on the client side\n// Often adblockers instead of blocking the request, they redirect it to an internal URL\nstate.capabilities.isAdBlocked.value=details?.error!==undefined||details?.xhr?.responseURL!==url;}});}catch(err){// Reset the flag to prevent blocking future detection attempts\nstate.capabilities.isAdBlockerDetectionInProgress.value=false;// Re-throw the error to be handled by the caller\nthrow err;}};\n\nconst getErrInstance=(err,errorType)=>{switch(errorType){case ErrorType.UNHANDLEDEXCEPTION:{const{error}=err;return error||err;}case ErrorType.UNHANDLEDREJECTION:{return err.reason;}case ErrorType.HANDLEDEXCEPTION:default:return err;}};const createNewBreadcrumb=message=>({type:'manual',name:message,timestamp:new Date(),metaData:{}});/**\n * A function to get the Bugsnag release stage for the current environment\n * @param getHostName Optional function to get the hostname (primarily for testing)\n * @returns 'development' if the host is empty (for file:// protocol etc.) or a dev host (localhost, 127.0.0.1, etc.), otherwise ''production'' (it'll be replaced with the actual release stage during the build)\n */const getReleaseStage=(getHostName=()=>window.location.hostname)=>{const host=getHostName();return !host||host&&DEV_HOSTS.includes(host)?'development':'production';};const getAppStateForMetadata=state=>{const stateStr=stringifyWithoutCircular(state,false,APP_STATE_EXCLUDE_KEYS);return stateStr!==null?JSON.parse(stateStr):{};};const getURLWithoutQueryString=()=>{const url=globalThis.location.href.split('?');return url[0];};const getUserDetails=(source,session,lifecycle,autoTrack)=>({id:`${source.value?.id??lifecycle.writeKey.value}..${session.sessionInfo.value.id??'NA'}..${autoTrack.pageLifecycle.pageViewId.value??'NA'}`,name:source.value?.name??'NA'});const getDeviceDetails=(locale,userAgent)=>({locale:locale.value??'NA',userAgent:userAgent.value??'NA',time:new Date()});const getBugsnagErrorEvent=(exception,errorState,state,groupingHash)=>{const{context,lifecycle,session,source,reporting,autoTrack}=state;const{app,locale,userAgent,timezone,screen,library}=context;return {payloadVersion:'5',notifier:{name:NOTIFIER_NAME,version:app.value.version,url:SDK_GITHUB_URL},events:[{exceptions:[clone(exception)],severity:errorState.severity,unhandled:errorState.unhandled,severityReason:errorState.severityReason,app:{version:app.value.version,releaseStage:getReleaseStage(),type:app.value.installType},device:getDeviceDetails(locale,userAgent),request:{url:getURLWithoutQueryString(),clientIp:'[NOT COLLECTED]'},breadcrumbs:clone(reporting.breadcrumbs.value),context:exception.message,groupingHash,metaData:{app:{snippetVersion:library.value.snippetVersion},device:{...screen.value,timezone:timezone.value},// Add rest of the state groups as metadata\n// so that they show up as separate tabs in the dashboard\n...getAppStateForMetadata(state)},user:getUserDetails(source,session,lifecycle,autoTrack)}]};};/**\n * A function to check if adblockers are active. The promise's resolve function\n * is invoked with true if adblockers are not detected and false otherwise.\n * @param {ApplicationState} state The application state\n * @param {IHttpClient} httpClient The HTTP client instance\n * @param {Function} resolve The promise's resolve function\n */const checkIfAdBlockersAreActive=(state,httpClient,resolve)=>{// Initiate ad blocker detection if not done previously and not already in progress.\nif(isUndefined(state.capabilities.isAdBlocked.value)){if(state.capabilities.isAdBlockerDetectionInProgress.value===false){detectAdBlockers(httpClient);}// Wait for the detection to complete.\nconst detectionDisposer=m(()=>{if(isDefined(state.capabilities.isAdBlocked.value)){// If ad blocker is not detected, notify.\nresolve(state.capabilities.isAdBlocked.value===false);// Cleanup the effect.\ndetectionDisposer();}});}else {// If ad blocker is not detected, notify.\nresolve(state.capabilities.isAdBlocked.value===false);}};/**\n * A function to determine whether the error should be promoted to notify or not.\n * For plugin and integration errors from RS CDN, if it is due to CSP blocked URLs or AdBlockers,\n * it will not be promoted to notify.\n * If it is due to other reasons, it will be promoted to notify.\n * @param {Error} exception The error object\n * @param {ApplicationState} state The application state\n * @param {IHttpClient} httpClient The HTTP client instance\n * @returns A promise that resolves to a boolean indicating whether the error should be promoted to notify or not\n */const checkIfAllowedToBeNotified=(exception,state,httpClient)=>{const errMsg=exception.message;return new Promise(resolve=>{// Filter out script load failures that are not from the RS CDN.\nif(SCRIPT_LOAD_FAILURE_MESSAGES.some(regex=>regex.test(errMsg))){const extractedURL=/https?:\\/\\/[^\\s\"'(),;<>[\\]{}]+/.exec(errMsg)?.[0];if(isString(extractedURL)){if(extractedURL.startsWith(SDK_CDN_BASE_URL)){// Filter out errors that are from CSP blocked URLs.\nif(state.capabilities.cspBlockedURLs.value.includes(extractedURL)){resolve(false);}else {// Filter out errors if adblockers are detected.\ncheckIfAdBlockersAreActive(state,httpClient,resolve);}}else {// Filter out errors that are not from the RS CDN.\nresolve(false);}}else {// Allow the error to be notified if no URL could be extracted from the error message\nresolve(true);}}else {resolve(!ERROR_MESSAGES_TO_BE_FILTERED.some(e=>e.test(errMsg)));}});};/**\n * A function to get the directory name from a file path.\n * @param {string} filePath The file path\n * @returns The directory name or undefined if the file path is invalid\n */const getDirectoryName=filePath=>{if(!filePath){return undefined;}const paths=filePath.split('/');return paths.at(-2);};/**\n * A function to get the top stack path from the exception.\n * @param {Exception} exception The exception object\n * @returns The top stack path or undefined if the exception is invalid\n */const getTopStackPath=exception=>{const errorOrigin=exception.stacktrace[0]?.file;if(!errorOrigin||typeof errorOrigin!=='string'){return undefined;}return errorOrigin;};/**\n * A function to determine if the error is from Rudder SDK\n * @param {Error} exception\n * @returns\n */const isSDKError=exception=>{const errorOrigin=getTopStackPath(exception);if(!errorOrigin){return false;}const srcFileName=errorOrigin.substring(errorOrigin.lastIndexOf('/')+1);const parentFolderName=getDirectoryName(errorOrigin);return parentFolderName===CDN_INT_DIR||SDK_FILE_NAME_PREFIXES().some(prefix=>srcFileName.startsWith(prefix)&&srcFileName.endsWith('.js'));};const getErrorCategory=(exception,category)=>{if(category){return category;}const errorOrigin=getTopStackPath(exception);const directoryName=getDirectoryName(errorOrigin);if(directoryName===CDN_INT_DIR){return INTEGRATIONS_ERROR_CATEGORY;}return DEFAULT_ERROR_CATEGORY;};const getErrorDeliveryPayload=(payload,state,category)=>{const data={version:METRICS_PAYLOAD_VERSION,message_id:generateUUID(),source:{name:SOURCE_NAME,sdk_version:state.context.app.value.version,write_key:state.lifecycle.writeKey.value,install_type:state.context.app.value.installType,category},errors:payload};return stringifyWithoutCircular(data);};/**\n * A function to get the grouping hash value to be used for the error event.\n * If the grouping hash is an error instance, the normalized error message is used as the grouping hash.\n * If the grouping hash is an empty string or not specified, the default grouping hash is used.\n * If the grouping hash is a string, it is used as is.\n * @param curErrGroupingHash The grouping hash value part of the error event\n * @param defaultGroupingHash The default grouping hash value. It is the error message.\n * @param logger The logger instance\n * @returns The final grouping hash value to be used for the error event\n */const getErrorGroupingHash=(curErrGroupingHash,defaultGroupingHash,logger)=>{let normalizedGroupingHash;if(!isDefined(curErrGroupingHash)){normalizedGroupingHash=defaultGroupingHash;}else if(isString(curErrGroupingHash)){normalizedGroupingHash=curErrGroupingHash;}else {const normalizedErrorInstance=normalizeError(curErrGroupingHash,logger);if(isDefined(normalizedErrorInstance)){normalizedGroupingHash=normalizedErrorInstance.message;}else {normalizedGroupingHash=defaultGroupingHash;}}return normalizedGroupingHash;};\n\n/**\n * A service to handle errors\n */class ErrorHandler{initialized=false;// If no logger is passed errors will be thrown as unhandled error\nconstructor(httpClient,logger){this.httpClient=httpClient;this.logger=logger;}/**\n * Initializes the error handler by attaching global error listeners.\n * This method should be called once after construction.\n */init(){if(this.initialized){return;}this.attachErrorListeners();this.initialized=true;}/**\n * Attach error listeners to the global window object\n */attachErrorListeners(){globalThis.addEventListener('error',event=>{this.onError({error:event,context:ERROR_HANDLER,errorType:ErrorType.UNHANDLEDEXCEPTION});});globalThis.addEventListener('unhandledrejection',event=>{this.onError({error:event,context:ERROR_HANDLER,errorType:ErrorType.UNHANDLEDREJECTION});});// Listen to CSP violations and add the blocked URL to the state\n// if those URLs are from RS CDN.\ndocument.addEventListener('securitypolicyviolation',event=>{const blockedURL=isString(event.blockedURI)?event.blockedURI:'';if(event.disposition==='enforce'&&blockedURL.startsWith(SDK_CDN_BASE_URL)&&!state.capabilities.cspBlockedURLs.value.includes(blockedURL)){state.capabilities.cspBlockedURLs.value=[...state.capabilities.cspBlockedURLs.value,blockedURL];}});}/**\n * Handle errors\n * @param errorInfo - The error information\n * @param errorInfo.error - The error to handle\n * @param errorInfo.context - The context of where the error occurred\n * @param errorInfo.customMessage - The custom message of the error\n * @param errorInfo.errorType - The type of the error (handled or unhandled)\n * @param errorInfo.groupingHash - The grouping hash of the error\n * @param errorInfo.category - The category of the error (sdk or integrations)\n */async onError(errorInfo){try{const{error,context,customMessage,groupingHash,category}=errorInfo;const errorType=errorInfo.errorType??ErrorType.HANDLEDEXCEPTION;const errInstance=getErrInstance(error,errorType);const normalizedError=normalizeError(errInstance,this.logger);if(isUndefined(normalizedError)){return;}const customMsgVal=customMessage?`${customMessage} - `:'';const errorMsgPrefix=`${context}${LOG_CONTEXT_SEPARATOR}${customMsgVal}`;const bsException=createBugsnagException(normalizedError,errorMsgPrefix);const stacktrace=getStacktrace(normalizedError);const isSdkDispatched=stacktrace.includes(MANUAL_ERROR_IDENTIFIER);// Filter errors that are not originated in the SDK.\n// In case of NPM installations, the unhandled errors from the SDK cannot be identified\n// and will NOT be reported unless they occur in plugins or integrations.\nif(!isSdkDispatched&&!isSDKError(bsException)&&errorType!==ErrorType.HANDLEDEXCEPTION){return;}if(state.reporting.isErrorReportingEnabled.value){const isAllowed=await checkIfAllowedToBeNotified(bsException,state,this.httpClient);if(isAllowed){const errorState={severity:'error',unhandled:errorType!==ErrorType.HANDLEDEXCEPTION,severityReason:{type:errorType}};// This will allow custom grouping of errors.\n// In case of NPM installations, the default grouping by surrounding code\n// does not make sense as each user application is different and will create a lot of noise in the alerts.\n// References:\n// https://docs.bugsnag.com/platforms/javascript/customizing-error-reports/#groupinghash\n// https://docs.bugsnag.com/product/error-grouping/#user_defined\nconst normalizedGroupingHash=getErrorGroupingHash(groupingHash,bsException.message,this.logger);// Get the final payload to be sent to the metrics service\nconst bugsnagPayload=getBugsnagErrorEvent(bsException,errorState,state,normalizedGroupingHash);const errorCategory=getErrorCategory(bsException,category);// send it to metrics service\nthis.httpClient.getAsyncData({url:state.metrics.metricsServiceUrl.value,options:{method:'POST',data:getErrorDeliveryPayload(bugsnagPayload,state,errorCategory),sendRawData:true},isRawResponse:true});}}// Log handled errors and errors dispatched by the SDK\nif(errorType===ErrorType.HANDLEDEXCEPTION||isSdkDispatched){this.logger.error(bsException.message);}}catch(err){// If an error occurs while handling an error, log it\nthis.logger.error(HANDLE_ERROR_FAILURE(ERROR_HANDLER),err);}}/**\n * Add breadcrumbs to add insight of a user's journey before an error\n * occurred and send to external error monitoring service via a plugin\n *\n * @param {string} breadcrumb breadcrumbs message\n */leaveBreadcrumb(breadcrumb){try{state.reporting.breadcrumbs.value=[...state.reporting.breadcrumbs.value,createNewBreadcrumb(breadcrumb)];}catch(err){this.onError({error:err,context:ERROR_HANDLER,customMessage:BREADCRUMB_ERROR,groupingHash:BREADCRUMB_ERROR});}}}// Note: Remember to call defaultErrorHandler.init() before using it\nconst defaultErrorHandler=new ErrorHandler(defaultHttpClient,defaultLogger);\n\n// to next or return the value if it is the last one instead of an array per\n// plugin that is the normal invoke\n// TODO: add invoke method for extension point that we know only one plugin can be used. add invokeMultiple and invokeSingle methods\nclass PluginEngine{plugins=[];byName={};cache={};config={throws:true};constructor(logger,options={}){this.config={throws:true,...options};this.logger=logger;}register(plugin,state){if(!plugin.name){const errorMessage=PLUGIN_NAME_MISSING_ERROR(PLUGIN_ENGINE);if(this.config.throws){throw new Error(errorMessage);}else {this.logger.error(errorMessage,plugin);return;}}if(this.byName[plugin.name]){const errorMessage=PLUGIN_ALREADY_EXISTS_ERROR(PLUGIN_ENGINE,plugin.name);if(this.config.throws){throw new Error(errorMessage);}else {this.logger.error(errorMessage);return;}}this.cache={};this.plugins=this.plugins.slice();let pos=this.plugins.length;this.plugins.forEach((pluginItem,index)=>{if(pluginItem.deps?.includes(plugin.name)){pos=Math.min(pos,index);}});this.plugins.splice(pos,0,plugin);this.byName[plugin.name]=plugin;if(isFunction(plugin.initialize)){plugin.initialize(state);}}unregister(name){const plugin=this.byName[name];if(!plugin){const errorMessage=PLUGIN_NOT_FOUND_ERROR(PLUGIN_ENGINE,name);if(this.config.throws){throw new Error(errorMessage);}else {this.logger.error(errorMessage);return;}}const index=this.plugins.indexOf(plugin);if(index===-1){const errorMessage=PLUGIN_ENGINE_BUG_ERROR(PLUGIN_ENGINE,name);if(this.config.throws){throw new Error(errorMessage);}else {this.logger.error(errorMessage);return;}}this.cache={};delete this.byName[name];this.plugins=this.plugins.slice();this.plugins.splice(index,1);}getPlugin(name){return this.byName[name];}getPlugins(extPoint){const lifeCycleName=extPoint??'.';if(!this.cache[lifeCycleName]){this.cache[lifeCycleName]=this.plugins.filter(plugin=>{if(plugin.deps?.some(dependency=>!this.byName[dependency])){// If deps not exist, then not load it.\nconst notExistDeps=plugin.deps.filter(dependency=>!this.byName[dependency]);this.logger.error(PLUGIN_DEPS_ERROR(PLUGIN_ENGINE,plugin.name,notExistDeps));return false;}return lifeCycleName==='.'?true:hasValueByPath(plugin,lifeCycleName);});}return this.cache[lifeCycleName];}// This method allows to process this.plugins so that it could\n// do some unified pre-process before application starts.\nprocessRawPlugins(callback){callback(this.plugins);this.cache={};}invoke(extPoint,allowMultiple=true,...args){let extensionPointName=extPoint;if(!extensionPointName){throw new Error(PLUGIN_EXT_POINT_MISSING_ERROR);}const noCall=extensionPointName.startsWith('!');const throws=this.config.throws??extensionPointName.endsWith('!');// eslint-disable-next-line unicorn/better-regex\nextensionPointName=extensionPointName.replace(/(^!|!$)/g,'');if(!extensionPointName){throw new Error(PLUGIN_EXT_POINT_INVALID_ERROR);}const extensionPointNameParts=extensionPointName.split('.');extensionPointNameParts.pop();const pluginMethodPath=extensionPointNameParts.join('.');const pluginsToInvoke=allowMultiple?this.getPlugins(extensionPointName):[this.getPlugins(extensionPointName)[0]];return pluginsToInvoke.map(plugin=>{const method=getValueByPath(plugin,extensionPointName);if(!isFunction(method)||noCall){return method;}try{return method.apply(getValueByPath(plugin,pluginMethodPath),args);}catch(err){// When a plugin failed, doesn't break the app\nif(throws){throw err;}else {this.logger.error(PLUGIN_INVOCATION_ERROR(PLUGIN_ENGINE,extensionPointName,plugin.name),err);}}return null;});}invokeSingle(extPoint,...args){return this.invoke(extPoint,false,...args)[0];}invokeMultiple(extPoint,...args){return this.invoke(extPoint,true,...args);}}const defaultPluginEngine=new PluginEngine(defaultLogger,{throws:true});\n\n/**\n * A function to filter and return non cloud mode destinations\n * A destination is considered non cloud mode if it is not a cloud mode destination or if it is a hybrid mode destination\n * @param destination\n *\n * @returns boolean\n */const isNonCloudDestination=destination=>Boolean(destination.config.connectionMode!=='cloud'||destination.config.useNativeSDKToSend===true||// this is the older flag for hybrid mode destinations\ndestination.config.useNativeSDK===true);const isHybridModeDestination=destination=>Boolean(destination.config.connectionMode==='hybrid'||destination.config.useNativeSDKToSend===true);/**\n * A function to filter and return non cloud mode destinations\n * @param destinations\n *\n * @returns destinations\n */const getNonCloudDestinations=destinations=>destinations.filter(isNonCloudDestination);/**\n * A function to get the user friendly id for a destination\n * Replaces all spaces with hyphens and appends the id to the display name\n * @param displayName The display name of the destination\n * @param id The id of the destination\n *\n * @returns the user friendly id\n */const getDestinationUserFriendlyId=(displayName,id)=>`${displayName.replaceAll(' ','-')}___${id}`;\n\n/**\n * List of plugin names that are loaded as dynamic imports in modern builds\n */const pluginNamesList=['BeaconQueue','CustomConsentManager','DeviceModeDestinations','DeviceModeTransformation','ExternalAnonymousId','GoogleLinker','IubendaConsentManager','KetchConsentManager','NativeDestinationQueue','OneTrustConsentManager','StorageEncryption','StorageEncryptionLegacy','StorageMigrator','XhrQueue'];const deprecatedPluginsList=['Bugsnag','ErrorReporting'];\n\nconst remotesMap = {\n'rudderAnalyticsRemotePlugins':{url:()=>Promise.resolve(window.RudderStackGlobals && window.RudderStackGlobals.app && window.RudderStackGlobals.app.pluginsCDNPath ? `${window.RudderStackGlobals.app.pluginsCDNPath}/rsa-plugins.js` : `https://cdn.rudderlabs.com/v3/modern/plugins//rsa-plugins.js`),format:'esm',from:'vite'}\n};\n \n function merge(obj1, obj2) {\n const mergedObj = Object.assign(obj1, obj2);\n for (const key of Object.keys(mergedObj)) {\n if (typeof mergedObj[key] === 'object' && typeof obj2[key] === 'object') {\n mergedObj[key] = merge(mergedObj[key], obj2[key]);\n }\n }\n return mergedObj;\n }\n\n const wrapShareModule = remoteFrom => {\n return merge({\n \n }, (globalThis.__federation_shared__ || {})['default'] || {});\n };\n\n async function __federation_method_ensure(remoteId) {\n const remote = remotesMap[remoteId];\n if (!remote.inited) {\n if (['esm', 'systemjs'].includes(remote.format)) {\n // loading js with import(...)\n return new Promise((resolve, reject) => {\n const getUrl = typeof remote.url === 'function' ? remote.url : () => Promise.resolve(remote.url);\n getUrl().then(url => {\n import(/* webpackIgnore: true */ /* @vite-ignore */ url).then(lib => {\n if (!remote.inited) {\n const shareScope = wrapShareModule();\n lib.init(shareScope);\n remote.lib = lib;\n remote.lib.init(shareScope);\n remote.inited = true;\n }\n resolve(remote.lib);\n }).catch(reject);\n });\n })\n }\n } else {\n return remote.lib;\n }\n }\n\n function __federation_method_wrapDefault(module, need) {\n if (!module?.default && need) {\n let obj = Object.create(null);\n obj.default = module;\n obj.__esModule = true;\n return obj;\n }\n return module;\n }\n\n function __federation_method_getRemote(remoteName, componentName) {\n return __federation_method_ensure(remoteName).then((remote) => remote.get(componentName).then(factory => factory()));\n }\n\n/**\n * Get the lazy loaded dynamic import for a plugin name\n */const getFederatedModuleImport=pluginName=>{switch(pluginName){case 'BeaconQueue':return ()=>__federation_method_getRemote(\"rudderAnalyticsRemotePlugins\" , \"./BeaconQueue\").then(module=>__federation_method_wrapDefault(module, true));case 'CustomConsentManager':return ()=>__federation_method_getRemote(\"rudderAnalyticsRemotePlugins\" , \"./CustomConsentManager\").then(module=>__federation_method_wrapDefault(module, true));case 'DeviceModeDestinations':return ()=>__federation_method_getRemote(\"rudderAnalyticsRemotePlugins\" , \"./DeviceModeDestinations\").then(module=>__federation_method_wrapDefault(module, true));case 'DeviceModeTransformation':return ()=>__federation_method_getRemote(\"rudderAnalyticsRemotePlugins\" , \"./DeviceModeTransformation\").then(module=>__federation_method_wrapDefault(module, true));case 'ExternalAnonymousId':return ()=>__federation_method_getRemote(\"rudderAnalyticsRemotePlugins\" , \"./ExternalAnonymousId\").then(module=>__federation_method_wrapDefault(module, true));case 'GoogleLinker':return ()=>__federation_method_getRemote(\"rudderAnalyticsRemotePlugins\" , \"./GoogleLinker\").then(module=>__federation_method_wrapDefault(module, true));case 'KetchConsentManager':return ()=>__federation_method_getRemote(\"rudderAnalyticsRemotePlugins\" , \"./KetchConsentManager\").then(module=>__federation_method_wrapDefault(module, true));case 'IubendaConsentManager':return ()=>__federation_method_getRemote(\"rudderAnalyticsRemotePlugins\" , \"./IubendaConsentManager\").then(module=>__federation_method_wrapDefault(module, true));case 'NativeDestinationQueue':return ()=>__federation_method_getRemote(\"rudderAnalyticsRemotePlugins\" , \"./NativeDestinationQueue\").then(module=>__federation_method_wrapDefault(module, true));case 'OneTrustConsentManager':return ()=>__federation_method_getRemote(\"rudderAnalyticsRemotePlugins\" , \"./OneTrustConsentManager\").then(module=>__federation_method_wrapDefault(module, true));case 'StorageEncryption':return ()=>__federation_method_getRemote(\"rudderAnalyticsRemotePlugins\" , \"./StorageEncryption\").then(module=>__federation_method_wrapDefault(module, true));case 'StorageEncryptionLegacy':return ()=>__federation_method_getRemote(\"rudderAnalyticsRemotePlugins\" , \"./StorageEncryptionLegacy\").then(module=>__federation_method_wrapDefault(module, true));case 'StorageMigrator':return ()=>__federation_method_getRemote(\"rudderAnalyticsRemotePlugins\" , \"./StorageMigrator\").then(module=>__federation_method_wrapDefault(module, true));case 'XhrQueue':return ()=>__federation_method_getRemote(\"rudderAnalyticsRemotePlugins\" , \"./XhrQueue\").then(module=>__federation_method_wrapDefault(module, true));default:return undefined;}};/**\n * Map of active plugin names to their dynamic import\n */const federatedModulesBuildPluginImports=activePluginNames=>{const remotePlugins={};activePluginNames.forEach(pluginName=>{if(pluginNamesList.includes(pluginName)){const lazyLoadImport=getFederatedModuleImport(pluginName);if(lazyLoadImport){remotePlugins[pluginName]=lazyLoadImport;}}});return remotePlugins;};\n\n/**\n * Map of mandatory plugin names and direct imports\n */const getMandatoryPluginsMap=()=>({});/**\n * Map of optional plugin names and direct imports for legacy builds\n */const getOptionalPluginsMap=()=>{{return {};}};/**\n * Map of optional plugin names and dynamic imports for modern builds\n */const getRemotePluginsMap=activePluginNames=>{return federatedModulesBuildPluginImports?.(activePluginNames)||{};};const pluginsInventory={...getMandatoryPluginsMap(),...getOptionalPluginsMap()};const remotePluginsInventory=activePluginNames=>({...getRemotePluginsMap(activePluginNames)});\n\n// TODO: add retry mechanism for getting remote plugins\n// TODO: add timeout error mechanism for marking remote plugins that failed to load as failed in state\nclass PluginsManager{constructor(engine,errorHandler,logger){this.engine=engine;this.errorHandler=errorHandler;this.logger=logger;this.onError=this.onError.bind(this);}/**\n * Orchestrate the plugin loading and registering\n */init(){state.lifecycle.status.value='pluginsLoading';// Expose pluginsCDNPath to global object, so it can be used in the promise that determines\n// remote plugin cdn path to support proxied plugin remotes\n{setExposedGlobal('pluginsCDNPath',state.lifecycle.pluginsCDNPath.value);}this.setActivePlugins();this.registerLocalPlugins();this.registerRemotePlugins();this.attachEffects();}/**\n * Update state based on plugin loaded status\n */// eslint-disable-next-line class-methods-use-this\nattachEffects(){m(()=>{const isAllPluginsReady=state.plugins.activePlugins.value.length===0||state.plugins.loadedPlugins.value.length+state.plugins.failedPlugins.value.length===state.plugins.totalPluginsToLoad.value;if(isAllPluginsReady){n(()=>{state.plugins.ready.value=true;// TODO: decide what to do if a plugin fails to load for any reason.\n// Should we stop here or should we progress?\nstate.lifecycle.status.value='pluginsReady';});}});}/**\n * Determine the list of plugins that should be loaded based on sourceConfig & load options\n */// eslint-disable-next-line class-methods-use-this\ngetPluginsToLoadBasedOnConfig(){// This contains the default plugins if load option has been omitted by user\nlet pluginsToLoadFromConfig=state.plugins.pluginsToLoadFromConfig.value;if(!pluginsToLoadFromConfig){return [];}// Filter deprecated plugins\npluginsToLoadFromConfig=pluginsToLoadFromConfig.filter(pluginName=>{if(deprecatedPluginsList.includes(pluginName)){this.logger.warn(DEPRECATED_PLUGIN_WARNING(PLUGINS_MANAGER,pluginName));return false;}return true;});const pluginGroupsToProcess=[{configurationStatus:()=>isDefined(state.dataPlaneEvents.eventsQueuePluginName.value),configurationStatusStr:'Data plane events delivery is enabled',activePluginName:state.dataPlaneEvents.eventsQueuePluginName.value,supportedPlugins:Object.values(DataPlaneEventsTransportToPluginNameMap),shouldAddMissingPlugins:true},{configurationStatus:()=>getNonCloudDestinations(state.nativeDestinations.configuredDestinations.value).length>0,configurationStatusStr:'Device mode destinations are connected to the source',supportedPlugins:['DeviceModeDestinations','NativeDestinationQueue']},{configurationStatus:()=>getNonCloudDestinations(state.nativeDestinations.configuredDestinations.value).some(destination=>destination.shouldApplyDeviceModeTransformation),configurationStatusStr:'Device mode transformations are enabled for at least one destination',supportedPlugins:['DeviceModeTransformation']},{configurationStatus:()=>isDefined(state.consents.activeConsentManagerPluginName.value),configurationStatusStr:'Consent management is enabled',activePluginName:state.consents.activeConsentManagerPluginName.value,supportedPlugins:Object.values(ConsentManagersToPluginNameMap)},{configurationStatus:()=>isDefined(state.storage.encryptionPluginName.value),configurationStatusStr:'Storage encryption is enabled',activePluginName:state.storage.encryptionPluginName.value,supportedPlugins:Object.values(StorageEncryptionVersionsToPluginNameMap)},{configurationStatus:()=>state.storage.migrate.value,configurationStatusStr:'Storage migration is enabled',supportedPlugins:['StorageMigrator']}];const addMissingPlugins=false;pluginGroupsToProcess.forEach(group=>{if(group.configurationStatus()){pluginsToLoadFromConfig=pluginsToLoadFromConfig.filter(group.activePluginName?pluginName=>!(pluginName!==group.activePluginName&&group.supportedPlugins.includes(pluginName)):pluginName=>isDefined(pluginName)// pass through\n);this.addMissingPlugins(group,addMissingPlugins,pluginsToLoadFromConfig);}else {pluginsToLoadFromConfig=pluginsToLoadFromConfig.filter(group.basePlugins!==undefined?pluginName=>!(group.basePlugins.includes(pluginName)||group.supportedPlugins.includes(pluginName)):pluginName=>!group.supportedPlugins.includes(pluginName));}});return [...Object.keys(getMandatoryPluginsMap()),...pluginsToLoadFromConfig];}addMissingPlugins(group,addMissingPlugins,pluginsToLoadFromConfig){const shouldAddMissingPlugins=group.shouldAddMissingPlugins||addMissingPlugins;let pluginsToConfigure;if(group.activePluginName){pluginsToConfigure=[...(group.basePlugins||[]),group.activePluginName];}else {pluginsToConfigure=[...group.supportedPlugins];}const missingPlugins=pluginsToConfigure.filter(pluginName=>!pluginsToLoadFromConfig.includes(pluginName));if(missingPlugins.length>0){if(shouldAddMissingPlugins){pluginsToLoadFromConfig.push(...missingPlugins);}this.logger.warn(generateMisconfiguredPluginsWarning(PLUGINS_MANAGER,group.configurationStatusStr,missingPlugins,shouldAddMissingPlugins));}}/**\n * Determine the list of plugins that should be activated\n */setActivePlugins(){const pluginsToLoad=this.getPluginsToLoadBasedOnConfig();// Merging available mandatory and optional plugin name list\nconst availablePlugins=[...Object.keys(pluginsInventory),...pluginNamesList];const activePlugins=[];const failedPlugins=[];pluginsToLoad.forEach(pluginName=>{if(availablePlugins.includes(pluginName)){activePlugins.push(pluginName);}else {failedPlugins.push(pluginName);}});if(failedPlugins.length>0){this.logger.warn(UNKNOWN_PLUGINS_WARNING(PLUGINS_MANAGER,failedPlugins));}n(()=>{state.plugins.totalPluginsToLoad.value=pluginsToLoad.length;state.plugins.activePlugins.value=activePlugins;state.plugins.failedPlugins.value=failedPlugins;});}/**\n * Register plugins that are direct imports to PluginEngine\n */registerLocalPlugins(){const unavailablePlugins=[];Object.entries(pluginsInventory).forEach(([pluginName,localPlugin])=>{if(state.plugins.activePlugins.value.includes(pluginName)){if(isFunction(localPlugin)){this.register([localPlugin()]);}else {unavailablePlugins.push(pluginName);}}});if(unavailablePlugins.length>0){state.plugins.failedPlugins.value=[...state.plugins.failedPlugins.value,...unavailablePlugins];this.logger.error(UNAVAILABLE_PLUGINS_ERROR(PLUGINS_MANAGER,unavailablePlugins));}}/**\n * Register plugins that are dynamic imports to PluginEngine\n */registerRemotePlugins(){const remotePluginsList=remotePluginsInventory(state.plugins.activePlugins.value);Promise.all(Object.keys(remotePluginsList).map(async remotePluginKey=>{await remotePluginsList[remotePluginKey]().then(remotePluginModule=>this.register([remotePluginModule.default()])).catch(err=>{// TODO: add retry here if dynamic import fails\nstate.plugins.failedPlugins.value=[...state.plugins.failedPlugins.value,remotePluginKey];this.onError(err,`Failed to load plugin \"${remotePluginKey}\"`,err);});})).catch(err=>{this.onError(err);});}/**\n * Extension point invoke that allows multiple plugins to be registered to it with error handling\n */invokeMultiple(extPoint,...args){try{return this.engine.invokeMultiple(extPoint,...args);}catch(e){this.onError(e,extPoint);return [];}}/**\n * Extension point invoke that allows a single plugin to be registered to it with error handling\n */invokeSingle(extPoint,...args){try{return this.engine.invokeSingle(extPoint,...args);}catch(e){this.onError(e,extPoint);return null;}}/**\n * Plugin engine register with error handling\n */register(plugins){plugins.forEach(plugin=>{try{this.engine.register(plugin,state);}catch(e){state.plugins.failedPlugins.value=[...state.plugins.failedPlugins.value,plugin.name];this.onError(e,`Failed to register plugin \"${plugin.name}\"`);}});}// TODO: Implement reset API instead\nunregisterLocalPlugins(){Object.keys(pluginsInventory).forEach(pluginKey=>{try{this.engine.unregister(pluginKey);}catch(e){this.onError(e,`Failed to unregister plugin \"${pluginKey}\"`);}});}/**\n * Handle errors\n */onError(error,customMessage,groupingHash){this.errorHandler.onError({error,context:PLUGINS_MANAGER,customMessage,groupingHash});}}\n\nconst COOKIE_STORAGE='cookieStorage';const LOCAL_STORAGE='localStorage';const SESSION_STORAGE='sessionStorage';const MEMORY_STORAGE='memoryStorage';const NO_STORAGE='none';const STORAGE_TEST_COOKIE='test_rudder_cookie';const STORAGE_TEST_LOCAL_STORAGE='test_rudder_ls';const STORAGE_TEST_SESSION_STORAGE='test_rudder_ss';\n\nconst userIdKey='rl_user_id';const userTraitsKey='rl_trait';const anonymousUserIdKey='rl_anonymous_id';const groupIdKey='rl_group_id';const groupTraitsKey='rl_group_trait';const pageInitialReferrerKey='rl_page_init_referrer';const pageInitialReferringDomainKey='rl_page_init_referring_domain';const sessionInfoKey='rl_session';const authTokenKey='rl_auth_token';const COOKIE_KEYS={userId:userIdKey,userTraits:userTraitsKey,anonymousId:anonymousUserIdKey,groupId:groupIdKey,groupTraits:groupTraitsKey,initialReferrer:pageInitialReferrerKey,initialReferringDomain:pageInitialReferringDomainKey,sessionInfo:sessionInfoKey,authToken:authTokenKey};\n\nconst STORAGE_TEST_TOP_LEVEL_DOMAIN='__tld__';const CLIENT_DATA_STORE_COOKIE='clientDataInCookie';const CLIENT_DATA_STORE_LS='clientDataInLocalStorage';const CLIENT_DATA_STORE_MEMORY='clientDataInMemory';const CLIENT_DATA_STORE_SESSION='clientDataInSessionStorage';const USER_SESSION_KEYS=['userId','userTraits','anonymousId','groupId','groupTraits','initialReferrer','initialReferringDomain','sessionInfo','authToken'];\n\nconst storageClientDataStoreNameMap={[COOKIE_STORAGE]:CLIENT_DATA_STORE_COOKIE,[LOCAL_STORAGE]:CLIENT_DATA_STORE_LS,[MEMORY_STORAGE]:CLIENT_DATA_STORE_MEMORY,[SESSION_STORAGE]:CLIENT_DATA_STORE_SESSION};\n\n/**\n * Encode.\n */const encode=(value,logger)=>{try{return encodeURIComponent(value);}catch(err){logger?.error(COOKIE_DATA_ENCODING_ERROR,err);return undefined;}};/**\n * Decode\n */const decode=value=>{try{return decodeURIComponent(value);}catch(err){// Do nothing as non-RS SDK cookies may not be URI encoded\nreturn undefined;}};/**\n * Parse cookie `str`\n */const parse=str=>{const obj={};const pairs=str.split(/\\s*;\\s*/);let pair;if(!pairs[0]){return obj;}// TODO: Decode only the cookies that are needed by the SDK\npairs.forEach(pairItem=>{pair=pairItem.split('=');const keyName=pair[0]?decode(pair[0]):undefined;if(keyName){obj[keyName]=pair[1]?decode(pair[1]):undefined;}});return obj;};/**\n * Set cookie `name` to `value`\n */const set=(name,value,optionsConfig,logger)=>{const options={...(optionsConfig||{})};let cookieString=`${encode(name,logger)}=${encode(value,logger)}`;if(isNull(value)){options.maxage=-1;}if(options.maxage){options.expires=new Date(+new Date()+options.maxage);}if(options.path){cookieString+=`; path=${options.path}`;}if(options.domain){cookieString+=`; domain=${options.domain}`;}if(options.expires){cookieString+=`; expires=${options.expires.toUTCString()}`;}if(options.samesite){cookieString+=`; samesite=${options.samesite}`;}if(options.secure){cookieString+=`; secure`;}globalThis.document.cookie=cookieString;};/**\n * Return all cookies\n */const all=()=>{const cookieStringValue=globalThis.document.cookie;return parse(cookieStringValue);};/**\n * Get cookie `name`\n */const get=name=>all()[name];/**\n * Set or get cookie `name` with `value` and `options` object\n */// eslint-disable-next-line func-names\nconst cookie=function(name,value,options,logger){switch(arguments.length){case 4:case 3:case 2:return set(name,value,options,logger);case 1:if(name){return get(name);}return all();default:return all();}};\n\nconst legacyGetHostname=href=>{const l=document.createElement('a');l.href=href;return l.hostname;};/**\n * Levels returns all levels of the given url\n *\n * The method returns an empty array when the hostname is an ip.\n */const levelsFunc=url=>{// This is called before the polyfills load thus new URL cannot be used\nconst host=typeof globalThis.URL!=='function'?legacyGetHostname(url):new URL(url).hostname;const parts=host?.split('.')??[];const last=parts[parts.length-1];const levels=[];// Ip address.\nif(parts.length===4&&last&&last===parseInt(last,10).toString()){return levels;}// Localhost.\nif(parts.length<=1){// Fix to support localhost\nif(parts[0]&&parts[0].indexOf('localhost')!==-1){return ['localhost'];}return levels;}// Create levels.\nfor(let i=parts.length-2;i>=0;i-=1){levels.push(parts.slice(i).join('.'));}return levels;};/**\n * Get the top domain.\n *\n * The function constructs the levels of domain and attempts to set a global\n * cookie on each one when it succeeds it returns the top level domain.\n *\n * The method returns an empty string when the hostname is an ip.\n */const domain=url=>{const levels=levelsFunc(url);// Lookup the real top level one.\n// eslint-disable-next-line unicorn/no-for-loop\nfor(let i=0;i<levels.length;i+=1){const domain=levels[i];const cname=STORAGE_TEST_TOP_LEVEL_DOMAIN;const opts={domain:`${domain.indexOf('localhost')!==-1?'':'.'}${domain}`};try{// Set cookie on domain\ncookie(cname,1,opts);// If successful\nif(cookie(cname)){// Remove cookie from domain\ncookie(cname,null,opts);return domain;}}catch{// Silently continue to next domain level if cookie access is restricted or setting fails\n// Best-effort cleanup to avoid leaking the test cookie\ntry{cookie(cname,null,opts);}catch{// Ignore if we are unable to delete the cookie\n}}}return '';};\n\nconst getDefaultCookieOptions=()=>{const topDomain=`.${domain(globalThis.location.href)}`;return {maxage:DEFAULT_COOKIE_MAX_AGE_MS,path:'/',domain:!topDomain||topDomain==='.'?undefined:topDomain,samesite:'Lax',enabled:true};};const getDefaultLocalStorageOptions=()=>({enabled:true});const getDefaultSessionStorageOptions=()=>({enabled:true});const getDefaultInMemoryStorageOptions=()=>({enabled:true});\n\n/**\n * A storage utility to retain values in memory via Storage interface\n */class InMemoryStorage{isEnabled=true;length=0;data={};constructor(logger){this.options=getDefaultInMemoryStorageOptions();this.logger=logger;}configure(options){this.options=mergeDeepRight(this.options,options??{});this.isEnabled=Boolean(this.options.enabled);return this.options;}setItem(key,value){this.data[key]=value;this.length=Object.keys(this.data).length;return value;}getItem(key){if(key in this.data){return this.data[key];}return null;}removeItem(key){if(key in this.data){delete this.data[key];}this.length=Object.keys(this.data).length;return null;}clear(){this.data={};this.length=0;}key(index){const curKeys=this.keys();return curKeys[index]??null;}keys(){return Object.keys(this.data);}}const defaultInMemoryStorage=new InMemoryStorage(defaultLogger);\n\nvar store$2 = {exports: {}};\n\nvar store$1=store$2.exports;var hasRequiredStore;function requireStore(){if(hasRequiredStore)return store$2.exports;hasRequiredStore=1;(function(module,exports$1){(function(global,factory){module.exports=factory();})(store$1,function(){function isJSON(obj){obj=JSON.stringify(obj);if(!/^\\{[\\s\\S]*\\}$/.test(obj)){return false;}return true;}function stringify(val){return val===undefined||typeof val===\"function\"?val+'':JSON.stringify(val);}function deserialize(value){if(typeof value!=='string'){return undefined;}try{return JSON.parse(value);}catch(e){return value;}}function isFunction(value){return {}.toString.call(value)===\"[object Function]\";}function isArray(value){return Object.prototype.toString.call(value)===\"[object Array]\";}// https://github.com/jaywcjlove/store.js/pull/8\n// Error: QuotaExceededError\nfunction dealIncognito(storage){var _KEY='_Is_Incognit',_VALUE='yes';try{// NOTE: set default storage when not passed in\nif(!storage){storage=window.localStorage;}storage.setItem(_KEY,_VALUE);storage.removeItem(_KEY);}catch(e){var inMemoryStorage={};inMemoryStorage._data={};inMemoryStorage.setItem=function(id,val){return inMemoryStorage._data[id]=String(val);};inMemoryStorage.getItem=function(id){return inMemoryStorage._data.hasOwnProperty(id)?inMemoryStorage._data[id]:undefined;};inMemoryStorage.removeItem=function(id){return delete inMemoryStorage._data[id];};inMemoryStorage.clear=function(){return inMemoryStorage._data={};};storage=inMemoryStorage;}finally{if(storage.getItem(_KEY)===_VALUE)storage.removeItem(_KEY);}return storage;}// deal QuotaExceededError if user use incognito mode in browser\nvar storage=dealIncognito();function Store(){if(!(this instanceof Store)){return new Store();}}Store.prototype={set:function set(key,val){if(key&&!isJSON(key)){storage.setItem(key,stringify(val));}else if(isJSON(key)){for(var a in key)this.set(a,key[a]);}return this;},get:function get(key){// Return all entries if no key\nif(key===undefined){var ret={};this.forEach(function(key,val){return ret[key]=val;});return ret;}if(key.charAt(0)==='?'){return this.has(key.substr(1));}var args=arguments;if(args.length>1){var dt={};for(var i=0,len=args.length;i<len;i++){var value=deserialize(storage.getItem(args[i]));if(this.has(args[i])){dt[args[i]]=value;}}return dt;}return deserialize(storage.getItem(key));},clear:function clear(){storage.clear();return this;},remove:function remove(key){var val=this.get(key);storage.removeItem(key);return val;},has:function has(key){return {}.hasOwnProperty.call(this.get(),key);},keys:function keys(){var d=[];this.forEach(function(k){d.push(k);});return d;},forEach:function forEach(callback){for(var i=0,len=storage.length;i<len;i++){var key=storage.key(i);callback(key,this.get(key));}return this;},search:function search(str){var arr=this.keys(),dt={};for(var i=0,len=arr.length;i<len;i++){if(arr[i].indexOf(str)>-1)dt[arr[i]]=this.get(arr[i]);}return dt;},len:function len(){return storage.length;}};var _Store=null;function store(key,data){var argm=arguments;var dt=null;if(!_Store)_Store=Store();if(argm.length===0)return _Store.get();if(argm.length===1){if(typeof key===\"string\")return _Store.get(key);if(isJSON(key))return _Store.set(key);}if(argm.length===2&&typeof key===\"string\"){if(!data)return _Store.remove(key);if(data&&typeof data===\"string\")return _Store.set(key,data);if(data&&isFunction(data)){dt=null;dt=data(key,_Store.get(key));store.set(key,dt);}}if(argm.length===2&&isArray(key)&&isFunction(data)){for(var i=0,len=key.length;i<len;i++){dt=data(key[i],_Store.get(key[i]));store.set(key[i],dt);}}return store;}for(var a in Store.prototype)store[a]=Store.prototype[a];return store;});})(store$2);return store$2.exports;}\n\nvar storeExports = requireStore();\nconst store = /*@__PURE__*/getDefaultExportFromCjs(storeExports);\n\nconst isStorageQuotaExceeded=e=>{const matchingNames=['QuotaExceededError','NS_ERROR_DOM_QUOTA_REACHED'];// Everything except Firefox, Firefox\nconst matchingCodes=[22,1014];if(e instanceof DOMException){return matchingNames.includes(e.name)||matchingCodes.includes(e.code);}return false;};// TODO: also check for SecurityErrors\n// https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage#exceptions\nconst isStorageAvailable=(type=LOCAL_STORAGE,storageInstance,logger)=>{let storage;let testData;const msgPrefix=STORAGE_UNAVAILABILITY_ERROR_PREFIX(CAPABILITIES_MANAGER,type);let reason='unavailable';let isAccessible=true;let errObj;try{switch(type){case MEMORY_STORAGE:return true;case COOKIE_STORAGE:storage=storageInstance;testData=STORAGE_TEST_COOKIE;break;case LOCAL_STORAGE:storage=storageInstance??globalThis.localStorage;testData=STORAGE_TEST_LOCAL_STORAGE;// was STORAGE_TEST_LOCAL_STORAGE in ours and generateUUID() in segment retry one\nbreak;case SESSION_STORAGE:storage=storageInstance??globalThis.sessionStorage;testData=STORAGE_TEST_SESSION_STORAGE;break;default:return false;}if(storage){storage.setItem(testData,'true');if(storage.getItem(testData)){storage.removeItem(testData);return true;}}isAccessible=false;}catch(err){isAccessible=false;errObj=err;if(isStorageQuotaExceeded(err)){reason='full';}}if(!isAccessible){logger?.warn(`${msgPrefix}${reason}.`,errObj);}// if we've have reached here, it means the storage is not available\nreturn false;};\n\n// check if the get, set overloads and search methods are used at all\n// if we do, ensure we provide types to support overloads as per storejs docs\n// https://www.npmjs.com/package/storejs\n/**\n * A storage utility to persist values in localstorage via Storage interface\n */class LocalStorage{isSupportAvailable=true;isEnabled=true;length=0;constructor(logger){this.options=getDefaultLocalStorageOptions();this.logger=logger;}configure(options){this.options=mergeDeepRight(this.options,options??{});this.isSupportAvailable=isStorageAvailable(LOCAL_STORAGE);this.isEnabled=Boolean(this.options.enabled&&this.isSupportAvailable);return this.options;}setItem(key,value){store.set(key,value);this.length=store.len();}// eslint-disable-next-line class-methods-use-this\ngetItem(key){const value=store.get(key);return isUndefined(value)?null:value;}removeItem(key){store.remove(key);this.length=store.len();}clear(){store.clear();this.length=0;}key(index){const curKeys=this.keys();return curKeys[index]??null;}// eslint-disable-next-line class-methods-use-this\nkeys(){return store.keys();}}const defaultLocalStorage=new LocalStorage(defaultLogger);\n\n/**\n * A storage utility to persist values in SessionStorage via Storage interface\n */class SessionStorage{isSupportAvailable=true;isEnabled=true;length=0;constructor(logger){this.options=getDefaultSessionStorageOptions();this.logger=logger;}configure(options){this.options=mergeDeepRight(this.options,options??{});this.isSupportAvailable=isStorageAvailable(SESSION_STORAGE);// when storage is blocked by the user, even accessing the property throws an error\nif(this.isSupportAvailable){this.store=globalThis.sessionStorage;}this.isEnabled=Boolean(this.options.enabled&&this.isSupportAvailable);return this.options;}setItem(key,value){if(!this.store){return;}this.store.setItem(key,value);this.length=this.store.length;}getItem(key){if(!this.store){return null;}const value=this.store.getItem(key);return isUndefined(value)?null:value;}removeItem(key){if(!this.store){return;}this.store.removeItem(key);this.length=this.store.length;}clear(){this.store?.clear();this.length=0;}key(index){return this.store?.key(index)??null;}keys(){const keys=[];if(!this.store){return keys;}for(let i=0;i<this.store.length;i+=1){const key=this.store.key(i);if(key!==null){keys.push(key);}}return keys;}}const defaultSessionStorage=new SessionStorage(defaultLogger);\n\n/**\n * A storage utility to persist values in cookies via Storage interface\n */class CookieStorage{isSupportAvailable=true;isEnabled=true;length=0;constructor(logger){this.logger=logger;}configure(options){if(!this.options){this.options=getDefaultCookieOptions();}this.options=mergeDeepRight(this.options,options??{});if(this.options.sameDomainCookiesOnly){delete this.options.domain;}this.isSupportAvailable=isStorageAvailable(COOKIE_STORAGE,this);this.isEnabled=Boolean(this.options.enabled&&this.isSupportAvailable);return this.options;}setItem(key,value){cookie(key,value,this.options,this.logger);this.length=Object.keys(cookie()).length;return true;}// eslint-disable-next-line class-methods-use-this\ngetItem(key){const value=cookie(key);return isUndefined(value)?null:value;}removeItem(key){const result=this.setItem(key,null);this.length=Object.keys(cookie()).length;return result;}// eslint-disable-next-line class-methods-use-this\nclear(){// Not implemented\n// getting a list of all cookie storage keys and remove all values\n// sounds risky to do as it will take on all top domain cookies\n// better to explicitly clear specific ones if needed\n}key(index){const curKeys=this.keys();return curKeys[index]??null;}// eslint-disable-next-line class-methods-use-this\nkeys(){return Object.keys(cookie());}}const defaultCookieStorage=new CookieStorage(defaultLogger);\n\n/**\n * A utility to retrieve the storage singleton instance by type\n */const getStorageEngine=type=>{switch(type){case LOCAL_STORAGE:return defaultLocalStorage;case SESSION_STORAGE:return defaultSessionStorage;case MEMORY_STORAGE:return defaultInMemoryStorage;case COOKIE_STORAGE:return defaultCookieStorage;default:return defaultInMemoryStorage;}};/**\n * Configure cookie storage singleton\n */const configureCookieStorageEngine=options=>{const cookieStorageOptions=defaultCookieStorage.configure(options);// Update the state with the final cookie storage options\nstate.storage.cookie.value={maxage:cookieStorageOptions.maxage,path:cookieStorageOptions.path,domain:cookieStorageOptions.domain,samesite:cookieStorageOptions.samesite,expires:cookieStorageOptions.expires,secure:cookieStorageOptions.secure};};/**\n * Configure local storage singleton\n */const configureLocalStorageEngine=options=>{defaultLocalStorage.configure(options);};/**\n * Configure in memory storage singleton\n */const configureInMemoryStorageEngine=options=>{defaultInMemoryStorage.configure(options);};/**\n * Configure session storage singleton\n */const configureSessionStorageEngine=options=>{defaultSessionStorage.configure(options);};/**\n * Configure all storage singleton instances\n */const configureStorageEngines=(cookieStorageOptions={},localStorageOptions={},inMemoryStorageOptions={},sessionStorageOptions={})=>{configureCookieStorageEngine(cookieStorageOptions);configureLocalStorageEngine(localStorageOptions);configureInMemoryStorageEngine(inMemoryStorageOptions);configureSessionStorageEngine(sessionStorageOptions);};\n\n/**\n * Store Implementation with dedicated storage\n */class Store{constructor(config,engine,pluginsManager){this.id=config.id;this.name=config.name;this.isEncrypted=config.isEncrypted??false;this.validKeys=config.validKeys??{};this.engine=engine;this.noKeyValidation=Object.keys(this.validKeys).length===0;this.noCompoundKey=config.noCompoundKey;this.originalEngine=this.engine;this.errorHandler=config.errorHandler;this.logger=config.logger;this.pluginsManager=pluginsManager;}/**\n * Ensure the key is valid and with correct format\n */createValidKey(key){const{name,id,validKeys,noKeyValidation,noCompoundKey}=this;if(noKeyValidation){return noCompoundKey?key:[name,id,key].join('.');}// validate and return undefined if invalid key\nlet compoundKey;Object.values(validKeys).forEach(validKeyName=>{if(validKeyName===key){compoundKey=noCompoundKey?key:[name,id,key].join('.');}});return compoundKey;}/**\n * Switch to inMemoryEngine, bringing any existing data with.\n */swapQueueStoreToInMemoryEngine(){const{name,id,validKeys,noCompoundKey}=this;const inMemoryStorage=getStorageEngine(MEMORY_STORAGE);// grab existing data, but only for this page's queue instance, not all\n// better to keep other queues in localstorage to be flushed later\n// than to pull them into memory and remove them from durable storage\nObject.keys(validKeys).forEach(key=>{const value=this.get(validKeys[key]);const validKey=noCompoundKey?key:[name,id,key].join('.');inMemoryStorage.setItem(validKey,value);// TODO: are we sure we want to drop clientData\n// if cookies are not available and localstorage is full?\nthis.remove(key);});this.engine=inMemoryStorage;}/**\n * Set value by key.\n */set(key,value){const validKey=this.createValidKey(key);if(!validKey){return;}try{// storejs that is used in localstorage engine already stringifies json\nthis.engine.setItem(validKey,this.encrypt(stringifyWithoutCircular(value,false,[],this.logger)));}catch(err){if(isStorageQuotaExceeded(err)){this.logger.warn(STORAGE_QUOTA_EXCEEDED_WARNING(`Store ${this.id}`));// switch to inMemory engine\nthis.swapQueueStoreToInMemoryEngine();// and save it there\nthis.set(key,value);}else {const customMessage=STORE_DATA_SAVE_ERROR(key);this.onError(err,customMessage,customMessage);}}}/**\n * Get by Key.\n */get(key){const validKey=this.createValidKey(key);let decryptedValue;try{if(!validKey){return null;}decryptedValue=this.decrypt(this.engine.getItem(validKey));if(isNullOrUndefined(decryptedValue)||decryptedValue===''){return null;}// storejs that is used in localstorage engine already deserializes json strings but swallows errors\nreturn JSON.parse(decryptedValue);}catch(err){const encryptionPluginName=state.storage.encryptionPluginName.value;// Skip error reporting only when the encryption plugin is configured but failed to load\nconst shouldReportError=!encryptionPluginName||!state.plugins.failedPlugins.value.includes(encryptionPluginName);if(shouldReportError){const customMessage=STORE_DATA_FETCH_ERROR(key);this.onError(err,customMessage,customMessage);}return null;}}/**\n * Remove by Key.\n */remove(key){const validKey=this.createValidKey(key);if(validKey){this.engine.removeItem(validKey);}}/**\n * Get original engine\n */getOriginalEngine(){return this.originalEngine;}/**\n * Decrypt values\n */decrypt(value){if(isNullOrUndefined(value)){return null;}return this.crypto(value,'decrypt');}/**\n * Encrypt value\n */encrypt(value){return this.crypto(value,'encrypt');}/**\n * Extension point to use with encryption plugins\n */crypto(value,mode){const noEncryption=!this.isEncrypted||!value||typeof value!=='string'||trim(value)==='';if(noEncryption){return value;}const extensionPointName=`storage.${mode}`;const formattedValue=this.pluginsManager?this.pluginsManager.invokeSingle(extensionPointName,value):value;return typeof formattedValue==='undefined'?value:formattedValue??'';}/**\n * Handle errors\n */onError(error,customMessage,groupingHash){this.errorHandler.onError({error,context:`Store ${this.id}`,customMessage,groupingHash});}}\n\nconst getStorageTypeFromPreConsentIfApplicable=(state,sessionKey)=>{let overriddenStorageType;if(state.consents.preConsent.value.enabled){switch(state.consents.preConsent.value.storage?.strategy){case 'none':overriddenStorageType=NO_STORAGE;break;case 'session':if(sessionKey!=='sessionInfo'){overriddenStorageType=NO_STORAGE;}break;case 'anonymousId':if(sessionKey!=='anonymousId'){overriddenStorageType=NO_STORAGE;}break;}}return overriddenStorageType;};\n\n/**\n * A service to manage stores & available storage client configurations\n */class StoreManager{stores={};isInitialized=false;constructor(pluginsManager,errorHandler,logger){this.errorHandler=errorHandler;this.logger=logger;this.pluginsManager=pluginsManager;}/**\n * Configure available storage client instances\n */init(){if(this.isInitialized){return;}const loadOptions=state.loadOptions.value;const config={cookieStorageOptions:{samesite:loadOptions.sameSiteCookie,secure:loadOptions.secureCookie,domain:loadOptions.setCookieDomain,sameDomainCookiesOnly:loadOptions.sameDomainCookiesOnly},localStorageOptions:{},inMemoryStorageOptions:{},sessionStorageOptions:{}};configureStorageEngines(removeUndefinedValues(mergeDeepRight(config.cookieStorageOptions??{},state.storage.cookie?.value??{})),removeUndefinedValues(config.localStorageOptions),removeUndefinedValues(config.inMemoryStorageOptions),removeUndefinedValues(config.sessionStorageOptions));this.initClientDataStores();this.isInitialized=true;}/**\n * Create store to persist data used by the SDK like session, used details etc\n */initClientDataStores(){this.initializeStorageState();// TODO: fill in extra config values and bring them in from StoreManagerOptions if needed\n// TODO: should we pass the keys for all in order to validate or leave free as v1.1?\n// Initializing all the enabled store because previous user data might be in different storage\n// that needs auto migration\nconst storageTypes=[MEMORY_STORAGE,LOCAL_STORAGE,COOKIE_STORAGE,SESSION_STORAGE];storageTypes.forEach(storageType=>{if(getStorageEngine(storageType)?.isEnabled){this.setStore({id:storageClientDataStoreNameMap[storageType],name:storageClientDataStoreNameMap[storageType],isEncrypted:true,noCompoundKey:true,type:storageType,errorHandler:this.errorHandler,logger:this.logger});}});}initializeStorageState(){let globalStorageType=state.storage.type.value;let entriesOptions=state.loadOptions.value.storage?.entries;// Use the storage options from post consent if anything is defined\nconst postConsentStorageOpts=state.consents.postConsent.value.storage;if(isDefined(postConsentStorageOpts?.type)||isDefined(postConsentStorageOpts?.entries)){globalStorageType=postConsentStorageOpts?.type;entriesOptions=postConsentStorageOpts?.entries;}let trulyAnonymousTracking=true;let storageEntries={};USER_SESSION_KEYS.forEach(sessionKey=>{const key=sessionKey;const storageKey=sessionKey;const configuredStorageType=entriesOptions?.[key]?.type;const preConsentStorageType=getStorageTypeFromPreConsentIfApplicable(state,sessionKey);// Storage type precedence order: pre-consent strategy > entry type > global type > default\nconst storageType=preConsentStorageType??configuredStorageType??globalStorageType??DEFAULT_STORAGE_TYPE;const finalStorageType=this.getResolvedStorageTypeForEntry(storageType,sessionKey);if(finalStorageType!==NO_STORAGE){trulyAnonymousTracking=false;}storageEntries={...storageEntries,[sessionKey]:{type:finalStorageType,key:COOKIE_KEYS[storageKey]}};});n(()=>{state.storage.type.value=globalStorageType;state.storage.entries.value=storageEntries;state.storage.trulyAnonymousTracking.value=trulyAnonymousTracking;});}getResolvedStorageTypeForEntry(storageType,sessionKey){let finalStorageType=storageType;switch(storageType){case LOCAL_STORAGE:if(!getStorageEngine(LOCAL_STORAGE)?.isEnabled){finalStorageType=MEMORY_STORAGE;}break;case SESSION_STORAGE:if(!getStorageEngine(SESSION_STORAGE)?.isEnabled){finalStorageType=MEMORY_STORAGE;}break;case MEMORY_STORAGE:case NO_STORAGE:break;case COOKIE_STORAGE:default:// First try setting the storage to cookie else to local storage\nif(getStorageEngine(COOKIE_STORAGE)?.isEnabled){finalStorageType=COOKIE_STORAGE;}else if(getStorageEngine(LOCAL_STORAGE)?.isEnabled){finalStorageType=LOCAL_STORAGE;}else if(getStorageEngine(SESSION_STORAGE)?.isEnabled){finalStorageType=SESSION_STORAGE;}else {finalStorageType=MEMORY_STORAGE;}break;}if(finalStorageType!==storageType){this.logger.warn(STORAGE_UNAVAILABLE_WARNING(STORE_MANAGER,sessionKey,storageType,finalStorageType));}return finalStorageType;}/**\n * Create a new store\n */setStore(storeConfig){const storageEngine=getStorageEngine(storeConfig.type);this.stores[storeConfig.id]=new Store(storeConfig,storageEngine,this.pluginsManager);return this.stores[storeConfig.id];}/**\n * Retrieve a store\n */getStore(id){return this.stores[id];}}\n\nconst isValidSourceConfig=res=>isObjectLiteralAndNotNull(res)&&isObjectLiteralAndNotNull(res.source)&&!isNullOrUndefined(res.source.id)&&isObjectLiteralAndNotNull(res.source.config)&&Array.isArray(res.source.destinations);const isValidStorageType=storageType=>typeof storageType==='string'&&SUPPORTED_STORAGE_TYPES.includes(storageType);const getTopDomain=url=>{// Create a URL object\nconst urlObj=new URL(url);// Extract the host and protocol\nconst{host,protocol}=urlObj;// Split the host into parts\nconst parts=host.split('.');let topDomain;// Handle different cases, especially for co.uk or similar TLDs\nif(parts.length>2){// Join the last two parts for the top-level domain\ntopDomain=`${parts[parts.length-2]}.${parts[parts.length-1]}`;}else {// If only two parts or less, return as it is\ntopDomain=host;}return {topDomain,protocol};};const getTopDomainUrl=url=>{const{topDomain,protocol}=getTopDomain(url);return `${protocol}//${topDomain}`;};const getDataServiceUrl=(endpoint,useExactDomain)=>{const url=useExactDomain?window.location.origin:getTopDomainUrl(window.location.href);const formattedEndpoint=endpoint.startsWith('/')?endpoint.substring(1):endpoint;return `${url}/${formattedEndpoint}`;};const isWebpageTopLevelDomain=providedDomain=>{const{topDomain}=getTopDomain(window.location.href);return topDomain===providedDomain;};\n\n/**\n * Removes trailing slash from url\n * @param url\n * @returns url\n */const removeTrailingSlashes=url=>url?.endsWith('/')?removeTrailingSlashes(url.substring(0,url.length-1)):url;const getDomain=url=>{try{const urlObj=new URL(url);return urlObj.host;}catch(error){return null;}};/**\n * Get the referring domain from the referrer URL\n * @param referrer Page referrer\n * @returns Page referring domain\n */const getReferringDomain=referrer=>getDomain(referrer)??'';/**\n * Extracts UTM parameters from the URL\n * @param url Page URL\n * @returns UTM parameters\n */const extractUTMParameters=url=>{const result={};try{const urlObj=new URL(url);const UTM_PREFIX='utm_';urlObj.searchParams.forEach((value,sParam)=>{if(sParam.startsWith(UTM_PREFIX)){let utmParam=sParam.substring(UTM_PREFIX.length);// Not sure why we're doing this\nif(utmParam==='campaign'){utmParam='name';}result[utmParam]=value;}});}catch(error){// Do nothing\n}return result;};/**\n * To get the URL until the hash\n * @param url The input URL\n * @returns URL until the hash\n */const getUrlWithoutHash=url=>{let urlWithoutHash=url;try{const urlObj=new URL(url);urlWithoutHash=urlObj.origin+urlObj.pathname+urlObj.search;}catch(error){// Do nothing\n}return urlWithoutHash;};\n\nconst removeDuplicateSlashes=str=>str.replace(/\\/{2,}/g,'/');/**\n * Checks if provided url is valid or not\n * @param url\n * @returns true if `url` is valid and false otherwise\n */const isValidURL=url=>{if(!isString(url)){return false;}try{// If URL is supported by the browser, we can use it to validate the URL\n// Otherwise, we can at least check if the URL matches the pattern\nif(isFunction(globalThis.URL)){// eslint-disable-next-line no-new\nnew URL(url);}return URL_PATTERN.test(url);}catch(e){return false;}};\n\nconst DEFAULT_PRE_CONSENT_STORAGE_STRATEGY='none';const DEFAULT_PRE_CONSENT_EVENTS_DELIVERY_TYPE='immediate';\n\nconst isErrorReportingEnabled=sourceConfig=>sourceConfig?.statsCollection?.errors?.enabled===true;const isMetricsReportingEnabled=sourceConfig=>sourceConfig?.statsCollection?.metrics?.enabled===true;\n\n/**\n * Validates and normalizes the consent options provided by the user\n * @param options Consent options provided by the user\n * @returns Validated and normalized consent options\n */const getValidPostConsentOptions=options=>{const validOptions={sendPageEvent:false,trackConsent:false,discardPreConsentEvents:false};if(isObjectLiteralAndNotNull(options)){const clonedOptions=clone(options);validOptions.storage=clonedOptions.storage;if(isNonEmptyObject(clonedOptions.integrations)){validOptions.integrations=clonedOptions.integrations;}validOptions.discardPreConsentEvents=clonedOptions.discardPreConsentEvents===true;validOptions.sendPageEvent=clonedOptions.sendPageEvent===true;validOptions.trackConsent=clonedOptions.trackConsent===true;if(isNonEmptyObject(clonedOptions.consentManagement)){// Override enabled value with the current state value\nvalidOptions.consentManagement=mergeDeepRight(clonedOptions.consentManagement,{enabled:state.consents.enabled.value});}}return validOptions;};/**\n * Validates if the input is a valid consents data\n * @param value Input consents data\n * @returns true if the input is a valid consents data else false\n */const isValidConsentsData=value=>isNonEmptyObject(value)||Array.isArray(value);/**\n * Retrieves the corresponding provider and plugin name of the selected consent manager from the supported consent managers\n * @param consentManagementOpts consent management options\n * @param logger logger instance\n * @returns Corresponding provider and plugin name of the selected consent manager from the supported consent managers\n */const getConsentManagerInfo=(consentManagementOpts,logger)=>{let{provider}=consentManagementOpts;const consentManagerPluginName=provider?ConsentManagersToPluginNameMap[provider]:undefined;if(provider&&!consentManagerPluginName){logger.error(UNSUPPORTED_CONSENT_MANAGER_ERROR(CONFIG_MANAGER,provider,ConsentManagersToPluginNameMap));// Reset the provider value\nprovider=undefined;}return {provider,consentManagerPluginName};};/**\n * Validates and converts the consent management options into a normalized format\n * @param consentManagementOpts Consent management options provided by the user\n * @param logger logger instance\n * @returns An object containing the consent manager plugin name, initialized, enabled and consents data\n */const getConsentManagementData=(consentManagementOpts,logger)=>{let consentManagerPluginName;let allowedConsentIds=[];let deniedConsentIds=[];let initialized=false;let provider;let enabled=consentManagementOpts?.enabled===true;if(isNonEmptyObject(consentManagementOpts)&&enabled){// Get the corresponding plugin name of the selected consent manager from the supported consent managers\n({provider,consentManagerPluginName}=getConsentManagerInfo(consentManagementOpts,logger));if(isValidConsentsData(consentManagementOpts.allowedConsentIds)){allowedConsentIds=consentManagementOpts.allowedConsentIds;initialized=true;}if(isValidConsentsData(consentManagementOpts.deniedConsentIds)){deniedConsentIds=consentManagementOpts.deniedConsentIds;initialized=true;}}const consentsData={allowedConsentIds,deniedConsentIds};// Enable consent management only if consent manager is supported\nenabled=enabled&&Boolean(consentManagerPluginName);return {provider,consentManagerPluginName,initialized,enabled,consentsData};};\n\n/**\n * Determines the SDK URL\n * @returns sdkURL\n */const getSDKUrl=()=>{// First try the new method of getting the SDK URL\n// from the script tag\nconst scriptTag=document.querySelector('script[data-rsa-write-key]');if(scriptTag&&scriptTag.dataset.rsaWriteKey===state.lifecycle.writeKey.value){return scriptTag.src;}// If the new method fails, try the old method\n// TODO: We need to remove this once all the customers upgrade to the\n// latest SDK loading snippet\nconst scripts=document.getElementsByTagName('script');const sdkFileNameRegex=/(?:^|\\/)rsa(\\.min)?\\.js$/;// eslint-disable-next-line no-restricted-syntax\nfor(const script of scripts){const src=script.getAttribute('src');if(src&&sdkFileNameRegex.test(src)){return src;}}return undefined;};/**\n * Updates the reporting state variables from the source config data\n * @param res Source config\n * @param logger Logger instance\n */const updateReportingState=res=>{state.reporting.isErrorReportingEnabled.value=isErrorReportingEnabled(res.source.config)&&!isSDKRunningInChromeExtension();state.reporting.isMetricsReportingEnabled.value=isMetricsReportingEnabled(res.source.config);};const getServerSideCookiesStateData=logger=>{const{useServerSideCookies,dataServiceEndpoint,storage:storageOptsFromLoad,setCookieDomain,sameDomainCookiesOnly}=state.loadOptions.value;let cookieOptions=storageOptsFromLoad?.cookie;let sscEnabled=false;let finalDataServiceUrl;if(useServerSideCookies){sscEnabled=useServerSideCookies;const providedCookieDomain=cookieOptions.domain??setCookieDomain;/**\n * Based on the following conditions, we decide whether to use the exact domain or not to determine the data service URL:\n * 1. If the cookie domain is provided and it is not a top-level domain, then use the exact domain\n * 2. If the sameDomainCookiesOnly flag is set to true, then use the exact domain\n */const useExactDomain=isDefined(providedCookieDomain)&&!isWebpageTopLevelDomain(removeLeadingPeriod(providedCookieDomain))||sameDomainCookiesOnly;const dataServiceUrl=getDataServiceUrl(dataServiceEndpoint??DEFAULT_DATA_SERVICE_ENDPOINT,useExactDomain);if(isValidURL(dataServiceUrl)){finalDataServiceUrl=removeTrailingSlashes(dataServiceUrl);const curHost=getDomain(window.location.href);const dataServiceHost=getDomain(dataServiceUrl);// If the current host is different from the data service host, then it is a cross-site request\n// For server-side cookies to work, we need to set the SameSite=None and Secure attributes\n// One round of cookie options manipulation is taking place here\n// Based on these(setCookieDomain/storage.cookie or sameDomainCookiesOnly) two load-options, final cookie options are set in the storage module\n// TODO: Refactor the cookie options manipulation logic in one place\nif(curHost!==dataServiceHost){cookieOptions={...cookieOptions,samesite:'None',secure:true};}/**\n * If the sameDomainCookiesOnly flag is not set and the cookie domain is provided(not top level domain),\n * and the data service host is different from the provided cookie domain, then we disable server-side cookies\n * ex: provided cookie domain: 'random.com', data service host: 'sub.example.com'\n */if(!sameDomainCookiesOnly&&useExactDomain&&dataServiceHost!==removeLeadingPeriod(providedCookieDomain)){sscEnabled=false;logger.warn(SERVER_SIDE_COOKIE_FEATURE_OVERRIDE_WARNING(CONFIG_MANAGER,providedCookieDomain,dataServiceHost));}}else {sscEnabled=false;}}return {sscEnabled,cookieOptions,finalDataServiceUrl};};const updateStorageStateFromLoadOptions=logger=>{const{storage:storageOptsFromLoad}=state.loadOptions.value;let storageType=storageOptsFromLoad?.type;if(isDefined(storageType)&&!isValidStorageType(storageType)){logger.warn(STORAGE_TYPE_VALIDATION_WARNING(CONFIG_MANAGER,storageType,DEFAULT_STORAGE_TYPE));storageType=DEFAULT_STORAGE_TYPE;}let storageEncryptionVersion=storageOptsFromLoad?.encryption?.version;const encryptionPluginName=storageEncryptionVersion&&StorageEncryptionVersionsToPluginNameMap[storageEncryptionVersion];if(!isUndefined(storageEncryptionVersion)&&isUndefined(encryptionPluginName)){// set the default encryption plugin\nlogger.warn(UNSUPPORTED_STORAGE_ENCRYPTION_VERSION_WARNING(CONFIG_MANAGER,storageEncryptionVersion,StorageEncryptionVersionsToPluginNameMap,DEFAULT_STORAGE_ENCRYPTION_VERSION));storageEncryptionVersion=DEFAULT_STORAGE_ENCRYPTION_VERSION;}else if(isUndefined(storageEncryptionVersion)){storageEncryptionVersion=DEFAULT_STORAGE_ENCRYPTION_VERSION;}// Allow migration only if the configured encryption version is the default encryption version\nconst configuredMigrationValue=storageOptsFromLoad?.migrate;const finalMigrationVal=configuredMigrationValue&&storageEncryptionVersion===DEFAULT_STORAGE_ENCRYPTION_VERSION;if(configuredMigrationValue===true&&finalMigrationVal!==configuredMigrationValue){logger.warn(STORAGE_DATA_MIGRATION_OVERRIDE_WARNING(CONFIG_MANAGER,storageEncryptionVersion,DEFAULT_STORAGE_ENCRYPTION_VERSION));}const{sscEnabled,finalDataServiceUrl,cookieOptions}=getServerSideCookiesStateData(logger);n(()=>{state.storage.type.value=storageType;state.storage.cookie.value=cookieOptions;state.serverCookies.isEnabledServerSideCookies.value=sscEnabled;state.serverCookies.dataServiceUrl.value=finalDataServiceUrl;state.storage.encryptionPluginName.value=StorageEncryptionVersionsToPluginNameMap[storageEncryptionVersion];state.storage.migrate.value=finalMigrationVal;});};const updateConsentsStateFromLoadOptions=logger=>{const{provider,consentManagerPluginName,initialized,enabled,consentsData}=getConsentManagementData(state.loadOptions.value.consentManagement,logger);// Pre-consent\nconst preConsentOpts=state.loadOptions.value.preConsent;let storageStrategy=preConsentOpts?.storage?.strategy??DEFAULT_PRE_CONSENT_STORAGE_STRATEGY;const StorageStrategies=['none','session','anonymousId'];if(isDefined(storageStrategy)&&!StorageStrategies.includes(storageStrategy)){storageStrategy=DEFAULT_PRE_CONSENT_STORAGE_STRATEGY;logger.warn(UNSUPPORTED_PRE_CONSENT_STORAGE_STRATEGY(CONFIG_MANAGER,preConsentOpts?.storage?.strategy,DEFAULT_PRE_CONSENT_STORAGE_STRATEGY));}let eventsDeliveryType=preConsentOpts?.events?.delivery??DEFAULT_PRE_CONSENT_EVENTS_DELIVERY_TYPE;const deliveryTypes=['immediate','buffer'];if(isDefined(eventsDeliveryType)&&!deliveryTypes.includes(eventsDeliveryType)){eventsDeliveryType=DEFAULT_PRE_CONSENT_EVENTS_DELIVERY_TYPE;logger.warn(UNSUPPORTED_PRE_CONSENT_EVENTS_DELIVERY_TYPE(CONFIG_MANAGER,preConsentOpts?.events?.delivery,DEFAULT_PRE_CONSENT_EVENTS_DELIVERY_TYPE));}n(()=>{state.consents.activeConsentManagerPluginName.value=consentManagerPluginName;state.consents.initialized.value=initialized;state.consents.enabled.value=enabled;state.consents.data.value=consentsData;state.consents.provider.value=provider;state.consents.preConsent.value={// Only enable pre-consent if it is explicitly enabled and\n// if it is not already initialized and\n// if consent management is enabled\nenabled:state.loadOptions.value.preConsent?.enabled===true&&initialized===false&&enabled===true,storage:{strategy:storageStrategy},events:{delivery:eventsDeliveryType}};});};/**\n * Determines the consent management state variables from the source config data\n * @param resp Source config response\n * @param logger Logger instance\n */const updateConsentsState=resp=>{let resolutionStrategy=state.consents.resolutionStrategy.value;let cmpMetadata;if(isObjectLiteralAndNotNull(resp.consentManagementMetadata)){if(state.consents.provider.value){resolutionStrategy=resp.consentManagementMetadata.providers.find(p=>p.provider===state.consents.provider.value)?.resolutionStrategy??state.consents.resolutionStrategy.value;}cmpMetadata=resp.consentManagementMetadata;}// If the provider is custom, then the resolution strategy is not applicable\nif(state.consents.provider.value==='custom'){resolutionStrategy=undefined;}n(()=>{state.consents.metadata.value=clone(cmpMetadata);state.consents.resolutionStrategy.value=resolutionStrategy;});};const updateDataPlaneEventsStateFromLoadOptions=logger=>{if(state.dataPlaneEvents.deliveryEnabled.value){const defaultEventsQueuePluginName='XhrQueue';let eventsQueuePluginName=defaultEventsQueuePluginName;if(state.loadOptions.value.useBeacon){if(state.capabilities.isBeaconAvailable.value){eventsQueuePluginName='BeaconQueue';}else {eventsQueuePluginName=defaultEventsQueuePluginName;logger.warn(UNSUPPORTED_BEACON_API_WARNING(CONFIG_MANAGER));}}n(()=>{state.dataPlaneEvents.eventsQueuePluginName.value=eventsQueuePluginName;});}};const getSourceConfigURL=(configUrl,writeKey,lockIntegrationsVersion,lockPluginsVersion,logger)=>{const defSearchParams=new URLSearchParams({p:MODULE_TYPE,v:APP_VERSION,build:BUILD_TYPE,writeKey,lockIntegrationsVersion:lockIntegrationsVersion.toString(),lockPluginsVersion:lockPluginsVersion.toString()});let origin=DEFAULT_CONFIG_BE_URL;let searchParams=defSearchParams;let pathname='/sourceConfig/';let hash='';if(isValidURL(configUrl)){const configUrlInstance=new URL(configUrl);if(!removeTrailingSlashes(configUrlInstance.pathname).endsWith('/sourceConfig')){configUrlInstance.pathname=`${removeTrailingSlashes(configUrlInstance.pathname)}/sourceConfig/`;}configUrlInstance.pathname=removeDuplicateSlashes(configUrlInstance.pathname);defSearchParams.forEach((value,key)=>{if(configUrlInstance.searchParams.get(key)===null){configUrlInstance.searchParams.set(key,value);}});origin=configUrlInstance.origin;pathname=configUrlInstance.pathname;searchParams=configUrlInstance.searchParams;hash=configUrlInstance.hash;}else {logger.warn(INVALID_CONFIG_URL_WARNING(CONFIG_MANAGER,configUrl));}return `${origin}${pathname}?${searchParams}${hash}`;};/**\n * Transforms destinations config from source config response to Destination format\n * @param destinations Array of destination items from config response\n * @returns Array of transformed Destination objects\n */const getDestinationsFromConfig=destinations=>destinations.map(destination=>({id:destination.id,displayName:destination.destinationDefinition.displayName,enabled:destination.enabled,config:destination.config,shouldApplyDeviceModeTransformation:destination.shouldApplyDeviceModeTransformation??false,propagateEventsUntransformedOnError:destination.propagateEventsUntransformedOnError??false,userFriendlyId:getDestinationUserFriendlyId(destination.destinationDefinition.displayName,destination.id),isCustomIntegration:destination.destinationDefinition.displayName===CUSTOM_DEVICE_MODE_DESTINATION_DISPLAY_NAME}));\n\n/**\n * A function that determines the base URL for the integrations or plugins SDK\n * @param componentType The type of the component (integrations or plugins)\n * @param pathSuffix The path suffix to be appended to the base URL (js-integrations or plugins)\n * @param defaultComponentUrl The default URL to be used if the user has not provided a custom URL\n * @param currentSdkVersion The current version of the SDK\n * @param lockVersion Flag to lock the version of the component\n * @param urlFromLoadOptions The URL provided by the user in the load options\n * @param logger Logger instance\n * @returns The base URL for the integrations or plugins SDK\n */const getSDKComponentBaseURL=(componentType,pathSuffix,defaultComponentUrl,currentSdkVersion,lockVersion,urlFromLoadOptions,logger)=>{let sdkComponentBaseURL;// If the user has provided a custom URL, then validate, clean up and use it\nif(urlFromLoadOptions){if(!isValidURL(urlFromLoadOptions)){logger.error(COMPONENT_BASE_URL_ERROR(CONFIG_MANAGER,componentType,urlFromLoadOptions));return null;}sdkComponentBaseURL=removeTrailingSlashes(urlFromLoadOptions);}else {sdkComponentBaseURL=defaultComponentUrl;// We can automatically determine the base URL only for CDN installations\nif(state.context.app.value.installType==='cdn'){const sdkURL=getSDKUrl();if(sdkURL){// Extract the base URL from the core SDK file URL\n// and append the path suffix to it\nsdkComponentBaseURL=sdkURL.split('/').slice(0,-1).concat(pathSuffix).join('/');}}}// If the version needs to be locked, then replace the major version in the URL\n// with the current version of the SDK\nif(lockVersion){sdkComponentBaseURL=sdkComponentBaseURL.replace(new RegExp(`/${CDN_ARCH_VERSION_DIR}/${BUILD_TYPE}/${pathSuffix}$`),`/${currentSdkVersion}/${BUILD_TYPE}/${pathSuffix}`);}return sdkComponentBaseURL;};/**\n * A function that determines integration SDK loading path\n * @param currentSdkVersion Current SDK version\n * @param lockIntegrationsVersion Flag to lock the integrations version\n * @param integrationsUrlFromLoadOptions URL to load the integrations from as provided by the user\n * @param logger Logger instance\n * @returns\n */const getIntegrationsCDNPath=(currentSdkVersion,lockIntegrationsVersion,integrationsUrlFromLoadOptions,logger)=>getSDKComponentBaseURL('integrations',CDN_INT_DIR,DEFAULT_INTEGRATION_SDKS_URL,currentSdkVersion,lockIntegrationsVersion,integrationsUrlFromLoadOptions,logger);/**\n * A function that determines plugins SDK loading path\n * @param currentSdkVersion Current SDK version\n * @param lockPluginsVersion Flag to lock the plugins version\n * @param pluginsUrlFromLoadOptions URL to load the plugins from as provided by the user\n * @param logger Logger instance\n * @returns Final plugins CDN path\n */const getPluginsCDNPath=(currentSdkVersion,lockPluginsVersion,pluginsUrlFromLoadOptions,logger)=>getSDKComponentBaseURL('plugins',CDN_PLUGINS_DIR,DEFAULT_PLUGINS_URL,currentSdkVersion,lockPluginsVersion,pluginsUrlFromLoadOptions,logger);\n\nclass ConfigManager{constructor(httpClient,errorHandler,logger){this.errorHandler=errorHandler;this.logger=logger;this.httpClient=httpClient;this.onError=this.onError.bind(this);this.processConfig=this.processConfig.bind(this);}attachEffects(){m(()=>{this.logger.setMinLogLevel(state.lifecycle.logLevel.value);});}/**\n * A function to validate, construct and store loadOption, lifecycle, source and destination\n * config related information in global state\n */init(){const{logLevel,configUrl,lockIntegrationsVersion,lockPluginsVersion,destSDKBaseURL,pluginsSDKBaseURL,integrations}=state.loadOptions.value;// determine the path to fetch integration SDK from\nconst intgCdnUrl=getIntegrationsCDNPath(APP_VERSION,lockIntegrationsVersion,destSDKBaseURL,this.logger);if(isNull(intgCdnUrl)){return;}let pluginsCDNPath;{// determine the path to fetch remote plugins from\npluginsCDNPath=getPluginsCDNPath(APP_VERSION,lockPluginsVersion,pluginsSDKBaseURL,this.logger);}if(pluginsCDNPath===null){return;}this.attachEffects();state.lifecycle.activeDataplaneUrl.value=removeTrailingSlashes(state.lifecycle.dataPlaneUrl.value);updateStorageStateFromLoadOptions(this.logger);updateConsentsStateFromLoadOptions(this.logger);updateDataPlaneEventsStateFromLoadOptions(this.logger);// set application lifecycle state in global state\nn(()=>{state.lifecycle.integrationsCDNPath.value=intgCdnUrl;state.lifecycle.pluginsCDNPath.value=pluginsCDNPath;if(logLevel){state.lifecycle.logLevel.value=logLevel;}state.lifecycle.sourceConfigUrl.value=getSourceConfigURL(configUrl,state.lifecycle.writeKey.value,lockIntegrationsVersion,lockPluginsVersion,this.logger);state.metrics.metricsServiceUrl.value=`${state.lifecycle.activeDataplaneUrl.value}/${METRICS_SERVICE_ENDPOINT}`;// Data in the loadOptions state is already normalized\nstate.nativeDestinations.loadOnlyIntegrations.value=integrations;});this.getConfig();}/**\n * Handle errors\n */onError(error,customMessage,groupingHash){this.errorHandler.onError({error,context:CONFIG_MANAGER,customMessage,groupingHash});}/**\n * A callback function that is executed once we fetch the source config response.\n * Use to construct and store information that are dependent on the sourceConfig.\n */processConfig(response,details){// TODO: add retry logic with backoff based on rejectionDetails.xhr.status\n// We can use isErrRetryable utility method\nif(!isDefined(response)){if(isDefined(details)){this.onError(details.error,SOURCE_CONFIG_FETCH_ERROR);}else {this.onError(new Error(SOURCE_CONFIG_FETCH_ERROR));}return;}let res;try{if(isString(response)){res=JSON.parse(response);}else {res=response;}}catch(err){this.onError(err,SOURCE_CONFIG_RESOLUTION_ERROR);return;}if(!isValidSourceConfig(res)){this.onError(new Error(SOURCE_CONFIG_RESOLUTION_ERROR));return;}// Log error and abort if source is disabled\nif(res.source.enabled===false){this.logger.error(SOURCE_DISABLED_ERROR);return;}// set the values in state for reporting slice\nupdateReportingState(res);const nativeDestinations=res.source.destinations.length>0?getDestinationsFromConfig(res.source.destinations):[];// set in the state --> source, destination, lifecycle, reporting\nn(()=>{// set source related information in state\nstate.source.value={config:res.source.config,name:res.source.name,id:res.source.id,workspaceId:res.source.workspaceId};// set device mode destination related information in state\nstate.nativeDestinations.configuredDestinations.value=nativeDestinations;// set the desired optional plugins\nstate.plugins.pluginsToLoadFromConfig.value=state.loadOptions.value.plugins??[];updateConsentsState(res);// set application lifecycle state\nstate.lifecycle.status.value='configured';});}/**\n * A function to fetch source config either from /sourceConfig endpoint\n * or from getSourceConfig load option\n * @returns\n */getConfig(){const sourceConfigFunc=state.loadOptions.value.getSourceConfig;if(sourceConfigFunc){if(!isFunction(sourceConfigFunc)){this.logger.error(SOURCE_CONFIG_OPTION_ERROR(CONFIG_MANAGER));return;}// Fetch source config from the function\nconst res=sourceConfigFunc();if(res instanceof Promise){res.then(pRes=>this.processConfig(pRes)).catch(err=>{this.onError(err,'SourceConfig');});}else {this.processConfig(res);}}else {// Fetch source configuration from the configured URL\nthis.httpClient.getAsyncData({url:state.lifecycle.sourceConfigUrl.value,options:{headers:{'Content-Type':undefined}},callback:this.processConfig});}}}\n\n/**\n * To get the timezone of the user\n *\n * @returns string\n */const getTimezone=()=>{// Not susceptible to super-linear backtracking\n// eslint-disable-next-line sonarjs/slow-regex\nconst timezone=/([A-Z]+[+-]\\d+)/.exec(new Date().toString());return timezone?.[1]?timezone[1]:'NA';};\n\n/**\n * Get the referrer URL\n * @returns The referrer URL\n */const getReferrer=(getDocument=()=>document)=>getDocument()?.referrer||'$direct';/**\n * To get the canonical URL of the page\n * @returns canonical URL\n */const getCanonicalUrl=(getDocument=()=>document)=>{const docInstance=getDocument();const tags=docInstance.getElementsByTagName('link');let canonicalUrl='';for(let i=0;tags[i];i+=1){const tag=tags[i];if(tag.getAttribute('rel')==='canonical'&&!canonicalUrl){canonicalUrl=tag.getAttribute('href')??'';break;}}return canonicalUrl;};const getUserAgent=(getNavigator=()=>globalThis.navigator)=>{const navigator=getNavigator();if(isUndefined(navigator)){return null;}let{userAgent}=navigator;const{brave}=navigator;// For supporting Brave browser detection,\n// add \"Brave/<version>\" to the user agent with the version value from the Chrome component\nif(brave&&Object.getPrototypeOf(brave).isBrave){// Example:\n// Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36\nconst matchedArr=userAgent.match(/(chrome)\\/([\\w.]+)/i);if(matchedArr){userAgent=`${userAgent} Brave/${matchedArr[2]}`;}}return userAgent;};const getLanguage=(getNavigator=()=>globalThis.navigator)=>{const navigator=getNavigator();if(isUndefined(navigator)){return null;}return navigator.language??navigator.browserLanguage;};/**\n * Default page properties\n * @returns Default page properties\n */const getDefaultPageProperties=(getLocation=()=>globalThis.location,getDocument=()=>document)=>{const location=getLocation();const canonicalUrl=getCanonicalUrl(getDocument);let path=location.pathname;const{href:tabUrl}=location;let pageUrl=tabUrl;const{search}=location;// If valid canonical URL is provided use this as page URL.\nif(canonicalUrl){try{const urlObj=new URL(canonicalUrl);// If existing, query params of canonical URL will be used instead of the location.search ones\nif(urlObj.search===''){pageUrl=canonicalUrl+search;}else {pageUrl=canonicalUrl;}path=urlObj.pathname;}catch(err){// Do nothing\n}}const url=getUrlWithoutHash(pageUrl);const{title}=getDocument();const referrer=getReferrer(getDocument);return {path,referrer,referring_domain:getReferringDomain(referrer),search,title,url,tab_url:tabUrl};};\n\nconst getUserAgentClientHint=(callback,level='none')=>{if(level==='none'){callback(undefined);}if(level==='default'){callback(navigator.userAgentData);}if(level==='full'){navigator.userAgentData?.getHighEntropyValues(['architecture','bitness','brands','mobile','model','platform','platformVersion','uaFullVersion','fullVersionList','wow64']).then(ua=>{callback(ua);}).catch(()=>{callback();});}};\n\nconst isDatasetAvailable=()=>{const testElement=globalThis.document.createElement('div');testElement.setAttribute('data-a-b','c');return testElement.dataset?testElement.dataset.aB==='c':false;};const legacyJSEngineRequiredPolyfills={// Ideally, we should separate the checks for URL and URLSearchParams but\n// the polyfill service serves them under the same feature name, \"URL\".\nURL:()=>!isFunction(globalThis.URL)||!isFunction(globalThis.URLSearchParams),Promise:()=>!isFunction(globalThis.Promise),'Number.isNaN':()=>!isFunction(globalThis.Number.isNaN),'Number.isInteger':()=>!isFunction(globalThis.Number.isInteger),'Array.from':()=>!isFunction(globalThis.Array.from),'Array.prototype.find':()=>!isFunction(globalThis.Array.prototype.find),'Array.prototype.includes':()=>!isFunction(globalThis.Array.prototype.includes),'String.prototype.endsWith':()=>!isFunction(globalThis.String.prototype.endsWith),'String.prototype.startsWith':()=>!isFunction(globalThis.String.prototype.startsWith),'String.prototype.includes':()=>!isFunction(globalThis.String.prototype.includes),'String.prototype.replaceAll':()=>!isFunction(globalThis.String.prototype.replaceAll),'String.fromCodePoint':()=>!isFunction(globalThis.String.fromCodePoint),'Object.entries':()=>!isFunction(globalThis.Object.entries),'Object.values':()=>!isFunction(globalThis.Object.values),'Object.assign':()=>!isFunction(globalThis.Object.assign),'Object.fromEntries':()=>!isFunction(globalThis.Object.fromEntries),'Element.prototype.dataset':()=>!isDatasetAvailable(),// Ideally, we should separate the checks for TextEncoder and TextDecoder but\n// the polyfill service serves them under the same feature name, \"TextEncoder\".\nTextEncoder:()=>!isFunction(globalThis.TextEncoder)||!isFunction(globalThis.TextDecoder),requestAnimationFrame:()=>!isFunction(globalThis.requestAnimationFrame)||!isFunction(globalThis.cancelAnimationFrame),CustomEvent:()=>!isFunction(globalThis.CustomEvent),'navigator.sendBeacon':()=>!isFunction(globalThis.navigator.sendBeacon),// Note, the polyfill service serves both ArrayBuffer and Uint8Array under the same feature name, \"ArrayBuffer\".\nArrayBuffer:()=>!isFunction(globalThis.Uint8Array),Set:()=>!isFunction(globalThis.Set),atob:()=>!isFunction(globalThis.atob)};const isLegacyJSEngine=()=>{const requiredCapabilitiesList=Object.keys(legacyJSEngineRequiredPolyfills);let needsPolyfill=false;/* eslint-disable-next-line unicorn/no-for-loop */for(let i=0;i<requiredCapabilitiesList.length;i++){const isCapabilityMissing=legacyJSEngineRequiredPolyfills[requiredCapabilitiesList[i]];if(isFunction(isCapabilityMissing)&&isCapabilityMissing()){needsPolyfill=true;break;}}return needsPolyfill;};\n\nconst polyfillIoSdkUrl='https://polyfill-fastly.io/v3/polyfill.min.js';const POLYFILL_URL=`${polyfillIoSdkUrl}?version=3.111.0&features=${Object.keys(legacyJSEngineRequiredPolyfills).join('%2C')}`;const POLYFILL_LOAD_TIMEOUT=10*1000;// 10 seconds\nconst POLYFILL_SCRIPT_ID='rudderstackPolyfill';\n\nconst hasCrypto=()=>!isNullOrUndefined(globalThis.crypto)&&isFunction(globalThis.crypto.getRandomValues);// eslint-disable-next-line compat/compat -- We are checking for the existence of navigator.userAgentData\nconst hasUAClientHints=()=>!isNullOrUndefined(globalThis.navigator.userAgentData);const hasBeacon=()=>!isNullOrUndefined(globalThis.navigator.sendBeacon)&&isFunction(globalThis.navigator.sendBeacon);\n\nconst getScreenDetails=()=>{let screenDetails={density:0,width:0,height:0,innerWidth:0,innerHeight:0};screenDetails={width:globalThis.screen.width,height:globalThis.screen.height,density:globalThis.devicePixelRatio,innerWidth:globalThis.innerWidth,innerHeight:globalThis.innerHeight};return screenDetails;};\n\nclass CapabilitiesManager{constructor(httpClient,errorHandler,logger){this.httpClient=httpClient;this.errorHandler=errorHandler;this.logger=logger;this.externalSrcLoader=new ExternalSrcLoader(this.logger);this.onError=this.onError.bind(this);this.onReady=this.onReady.bind(this);}init(){this.prepareBrowserCapabilities();this.attachWindowListeners();}/**\n * Detect supported capabilities and set values in state\n */// eslint-disable-next-line class-methods-use-this\ndetectBrowserCapabilities(){n(()=>{// Storage related details\nstate.capabilities.storage.isCookieStorageAvailable.value=isStorageAvailable(COOKIE_STORAGE,getStorageEngine(COOKIE_STORAGE),this.logger);state.capabilities.storage.isLocalStorageAvailable.value=isStorageAvailable(LOCAL_STORAGE,undefined,this.logger);state.capabilities.storage.isSessionStorageAvailable.value=isStorageAvailable(SESSION_STORAGE,undefined,this.logger);// Browser feature detection details\nstate.capabilities.isBeaconAvailable.value=hasBeacon();state.capabilities.isUaCHAvailable.value=hasUAClientHints();state.capabilities.isCryptoAvailable.value=hasCrypto();state.capabilities.isIE11.value=isIE11();state.capabilities.isOnline.value=globalThis.navigator.onLine;// Get page context details\nstate.context.userAgent.value=getUserAgent();state.context.locale.value=getLanguage();state.context.screen.value=getScreenDetails();state.context.timezone.value=getTimezone();if(hasUAClientHints()){getUserAgentClientHint(uach=>{state.context['ua-ch'].value=uach;},state.loadOptions.value.uaChTrackLevel);}});// Ad blocker detection\nm(()=>{if(state.loadOptions.value.sendAdblockPage===true&&state.lifecycle.sourceConfigUrl.value!==undefined){detectAdBlockers(this.httpClient);}});}/**\n * Detect if polyfills are required and then load script from polyfill URL\n */prepareBrowserCapabilities(){state.capabilities.isLegacyDOM.value=isLegacyJSEngine();const customPolyfillUrl=state.loadOptions.value.polyfillURL;let polyfillUrl=POLYFILL_URL;if(isDefinedAndNotNull(customPolyfillUrl)){if(isValidURL(customPolyfillUrl)){polyfillUrl=customPolyfillUrl;}else {this.logger.warn(INVALID_POLYFILL_URL_WARNING(CAPABILITIES_MANAGER,customPolyfillUrl));}}const shouldLoadPolyfill=state.loadOptions.value.polyfillIfRequired&&state.capabilities.isLegacyDOM.value&&isValidURL(polyfillUrl);if(shouldLoadPolyfill){const isDefaultPolyfillService=polyfillUrl!==state.loadOptions.value.polyfillURL;if(isDefaultPolyfillService){// write key specific callback\n// NOTE: we're not putting this into RudderStackGlobals as providing the property path to the callback function in the polyfill URL is not possible\nconst polyfillCallbackName=`RS_polyfillCallback_${state.lifecycle.writeKey.value}`;const polyfillCallback=()=>{this.onReady();// Remove the entry from window so we don't leave room for calling it again\ndelete globalThis[polyfillCallbackName];};globalThis[polyfillCallbackName]=polyfillCallback;polyfillUrl=`${polyfillUrl}&callback=${polyfillCallbackName}`;}this.externalSrcLoader.loadJSFile({url:polyfillUrl,id:POLYFILL_SCRIPT_ID,async:true,timeout:POLYFILL_LOAD_TIMEOUT,callback:scriptId=>{if(!scriptId){this.onError(new Error(POLYFILL_SCRIPT_LOAD_ERROR(POLYFILL_SCRIPT_ID,polyfillUrl)));}else if(!isDefaultPolyfillService){this.onReady();}}});}else {this.onReady();}}/**\n * Attach listeners to window to observe event that update capabilities state values\n */attachWindowListeners(){globalThis.addEventListener('offline',()=>{state.capabilities.isOnline.value=false;});globalThis.addEventListener('online',()=>{state.capabilities.isOnline.value=true;});globalThis.addEventListener('resize',debounce(()=>{state.context.screen.value=getScreenDetails();},this));}/**\n * Set the lifecycle status to next phase\n */// eslint-disable-next-line class-methods-use-this\nonReady(){this.detectBrowserCapabilities();state.lifecycle.status.value='browserCapabilitiesReady';}/**\n * Handles error\n * @param error The error object\n */onError(error,groupingHash){this.errorHandler.onError({error,context:CAPABILITIES_MANAGER,groupingHash});}}\n\nconst CHANNEL='web';// These are the top-level elements in the standard RudderStack event spec\nconst TOP_LEVEL_ELEMENTS=['integrations','anonymousId','originalTimestamp'];// Reserved elements in the context of standard RudderStack event spec\n// Typically, these elements are not allowed to be overridden by the user\nconst CONTEXT_RESERVED_ELEMENTS=['library','consentManagement','userAgent','ua-ch','screen'];// Reserved elements in the standard RudderStack event spec\nconst RESERVED_ELEMENTS=['id','anonymous_id','user_id','sent_at','timestamp','received_at','original_timestamp','event','event_text','channel','context_ip','context_request_ip','context_passed_ip','group_id','previous_id'];\n\n/**\n * A function to check given value is a number or not\n * @param num input value\n * @returns boolean\n */const isNumber=num=>typeof num==='number'&&!Number.isNaN(num);/**\n * A function to check given number has minimum length or not\n * @param minimumLength minimum length\n * @param num input number\n * @returns boolean\n */const hasMinLength=(minimumLength,num)=>num.toString().length>=minimumLength;/**\n * A function to check given value is a positive integer or not\n * @param num input value\n * @returns boolean\n */const isPositiveInteger=num=>isNumber(num)&&num>=0&&Number.isInteger(num);\n\nconst MIN_SESSION_ID_LENGTH=10;const isCutOffTimeExceeded=sessionInfo=>{const{cutOff}=sessionInfo;const timestamp=Date.now();return Boolean(cutOff?.enabled&&cutOff.expiresAt&×tamp>cutOff.expiresAt);};/**\n * A function to validate whether the current auto tracking session has expired or not.\n * It checks for the current session expiry and the cut off time expiry.\n * @param sessionInfo session info\n * @returns boolean\n */const hasSessionExpired=sessionInfo=>{const isCurrentSessionExpired=Boolean(!sessionInfo.expiresAt||Date.now()>sessionInfo.expiresAt);return isCurrentSessionExpired||isCutOffTimeExceeded(sessionInfo);};/**\n * A function to generate session id\n * @returns number\n */const generateSessionId=()=>Date.now();/**\n * Function to validate user provided sessionId\n * @param {number} sessionId\n * @param logger logger\n * @returns\n */const isManualSessionIdValid=(sessionId,logger)=>{if(!sessionId||!isPositiveInteger(sessionId)||!hasMinLength(MIN_SESSION_ID_LENGTH,sessionId)){logger.warn(INVALID_SESSION_ID_WARNING(USER_SESSION_MANAGER,sessionId,MIN_SESSION_ID_LENGTH));return false;}return true;};const getCutOffExpirationTimestamp=cutOff=>{if(!cutOff?.enabled){return undefined;}return cutOff.expiresAt??(isPositiveInteger(cutOff.duration)?Date.now()+cutOff.duration:undefined);};/**\n * A function to generate new auto tracking session\n * @param sessionInfo session info\n * @returns SessionInfo\n */const generateAutoTrackingSession=sessionInfo=>{const{timeout,cutOff}=sessionInfo;const timestamp=Date.now();return {id:timestamp,// set the current timestamp\nexpiresAt:timestamp+timeout,// set the expiry time of the session\ntimeout,autoTrack:true,...(cutOff&&{cutOff})};};/**\n * A function to generate new manual tracking session\n * @param id Provided sessionId\n * @param logger Logger module\n * @returns SessionInfo\n */const generateManualTrackingSession=(id,logger)=>{const sessionId=isManualSessionIdValid(id,logger)?id:generateSessionId();return {id:sessionId,sessionStart:undefined,manualTrack:true};};const isStorageTypeValidForStoringData=storageType=>Boolean(storageType===COOKIE_STORAGE||storageType===LOCAL_STORAGE||storageType===SESSION_STORAGE||storageType===MEMORY_STORAGE);/**\n * Generate a new anonymousId\n * @returns string anonymousID\n */const generateAnonymousId=()=>generateUUID();const getFinalResetOptions=options=>{// Legacy behavior: toggle only anonymousId without mutating defaults\nif(isBoolean(options)){const{entries,...rest}=DEFAULT_RESET_OPTIONS;return {...rest,entries:{...entries,anonymousId:options}};}// Override any defaults with the user provided options\nif(isObjectLiteralAndNotNull(options)&&isObjectLiteralAndNotNull(options.entries)){return mergeDeepRight(DEFAULT_RESET_OPTIONS,options);}return {...DEFAULT_RESET_OPTIONS};};\n\n/**\n * To get the page properties for context object\n * @param pageProps Page properties\n * @returns page properties object for context\n */const getContextPageProperties=pageProps=>{// Need to get updated page details on each event as an event to notify on SPA URL changes does not seem to exist\nconst curPageProps=getDefaultPageProperties();const ctxPageProps={};Object.keys(curPageProps).forEach(key=>{ctxPageProps[key]=pageProps?.[key]||curPageProps[key];});ctxPageProps.initial_referrer=pageProps?.initial_referrer||state.session.initialReferrer.value;ctxPageProps.initial_referring_domain=pageProps?.initial_referring_domain||state.session.initialReferringDomain.value;return ctxPageProps;};/**\n * Add any missing default page properties using values from options and defaults\n * @param properties Input page properties\n * @param options API options\n */const getUpdatedPageProperties=(properties,options)=>{const optionsPageProps=options?.page||{};const pageProps=properties;// Need to get updated page details on each event as an event to notify on SPA URL changes does not seem to exist\nconst curPageProps=getDefaultPageProperties();Object.keys(curPageProps).forEach(key=>{if(isUndefined(pageProps[key])){pageProps[key]=optionsPageProps[key]||curPageProps[key];}});if(isUndefined(pageProps.initial_referrer)){pageProps.initial_referrer=optionsPageProps.initial_referrer||state.session.initialReferrer.value;}if(isUndefined(pageProps.initial_referring_domain)){pageProps.initial_referring_domain=optionsPageProps.initial_referring_domain||state.session.initialReferringDomain.value;}return pageProps;};/**\n * Utility to check for reserved keys in the input object\n * @param obj Generic object\n * @param parentKeyPath Object's parent key path\n * @param logger Logger instance\n */const checkForReservedElementsInObject=(obj,parentKeyPath,logger)=>{if(isObjectLiteralAndNotNull(obj)){Object.keys(obj).forEach(property=>{if(RESERVED_ELEMENTS.includes(property)||RESERVED_ELEMENTS.includes(property.toLowerCase())){logger.warn(RESERVED_KEYWORD_WARNING(EVENT_MANAGER,property,parentKeyPath,RESERVED_ELEMENTS));}});}};/**\n * Checks for reserved keys in traits, properties, and contextual traits\n * @param rudderEvent Generated rudder event\n * @param logger Logger instance\n */const checkForReservedElements=(rudderEvent,logger)=>{// properties, traits, contextualTraits are either undefined or object\nconst{properties,traits,context}=rudderEvent;const{traits:contextualTraits}=context;checkForReservedElementsInObject(properties,'properties',logger);checkForReservedElementsInObject(traits,'traits',logger);checkForReservedElementsInObject(contextualTraits,'context.traits',logger);};/**\n * Overrides the top-level event properties with data from API options\n * @param rudderEvent Generated rudder event\n * @param options API options\n */const updateTopLevelEventElements=(rudderEvent,options)=>{if(options.anonymousId&&isString(options.anonymousId)){// eslint-disable-next-line no-param-reassign\nrudderEvent.anonymousId=options.anonymousId;}if(isNonEmptyObject(options.integrations)){// eslint-disable-next-line no-param-reassign\nrudderEvent.integrations=options.integrations;}if(options.originalTimestamp&&isString(options.originalTimestamp)){// eslint-disable-next-line no-param-reassign\nrudderEvent.originalTimestamp=options.originalTimestamp;}};/**\n * To merge the contextual information in API options with existing data\n * @param rudderContext Generated rudder event\n * @param options API options\n * @param logger Logger instance\n */const getMergedContext=(rudderContext,options,logger)=>{let context=rudderContext;Object.keys(options).forEach(key=>{if(!TOP_LEVEL_ELEMENTS.includes(key)&&!CONTEXT_RESERVED_ELEMENTS.includes(key)){if(key!=='context'){context=mergeDeepRight(context,{[key]:options[key]});}else if(!isUndefined(options[key])&&isObjectLiteralAndNotNull(options[key])){const tempContext={};Object.keys(options[key]).forEach(e=>{if(!CONTEXT_RESERVED_ELEMENTS.includes(e)){tempContext[e]=options[key][e];}});context=mergeDeepRight(context,{...tempContext});}else {logger.warn(INVALID_CONTEXT_OBJECT_WARNING(EVENT_MANAGER));}}});return context;};/**\n * Updates rudder event object with data from the API options\n * @param rudderEvent Generated rudder event\n * @param options API options\n */const processOptions=(rudderEvent,options,logger)=>{// Only allow object type for options\nif(isObjectLiteralAndNotNull(options)){updateTopLevelEventElements(rudderEvent,options);// eslint-disable-next-line no-param-reassign\nrudderEvent.context=getMergedContext(rudderEvent.context,options,logger);}};/**\n * Returns the final integrations config for the event based on the global config and event's config\n * @param integrationsConfig Event's integrations config\n * @returns Final integrations config\n */const getEventIntegrationsConfig=integrationsConfig=>{let finalIntgConfig;if(state.loadOptions.value.useGlobalIntegrationsConfigInEvents){// Prefer the integrations object from the consent API response over the load API integrations object\nfinalIntgConfig=state.consents.postConsent.value.integrations??state.nativeDestinations.loadOnlyIntegrations.value;}else if(integrationsConfig){finalIntgConfig=integrationsConfig;}else {finalIntgConfig=DEFAULT_INTEGRATIONS_CONFIG;}return clone(finalIntgConfig);};/**\n * Enrich the base event object with data from state and the API options\n * @param rudderEvent RudderEvent object\n * @param options API options\n * @param pageProps Page properties\n * @param logger logger\n * @returns Enriched RudderEvent object\n */const getEnrichedEvent=(rudderEvent,options,pageProps,logger)=>{const commonEventData={channel:CHANNEL,context:{traits:clone(state.session.userTraits.value),sessionId:state.session.sessionInfo.value.id||undefined,sessionStart:state.session.sessionInfo.value.sessionStart||undefined,// Add 'consentManagement' only if consent management is enabled\n...(state.consents.enabled.value&&{consentManagement:{deniedConsentIds:clone(state.consents.data.value.deniedConsentIds),allowedConsentIds:clone(state.consents.data.value.allowedConsentIds),provider:state.consents.provider.value,resolutionStrategy:state.consents.resolutionStrategy.value}}),'ua-ch':state.context['ua-ch'].value,app:state.context.app.value,library:state.context.library.value,userAgent:state.context.userAgent.value,os:state.context.os.value,locale:state.context.locale.value,screen:state.context.screen.value,campaign:extractUTMParameters(globalThis.location.href),page:getContextPageProperties(pageProps),timezone:state.context.timezone.value,// Add auto tracking information\n...(state.autoTrack.enabled.value&&{autoTrack:{...(state.autoTrack.pageLifecycle.enabled.value&&{page:{pageViewId:state.autoTrack.pageLifecycle.pageViewId.value}})}})},originalTimestamp:getCurrentTimeFormatted(),messageId:generateUUID(),userId:rudderEvent.userId||state.session.userId.value};if(!isStorageTypeValidForStoringData(state.storage.entries.value.anonymousId?.type)){// Generate new anonymous id for each request\ncommonEventData.anonymousId=generateAnonymousId();}else {// Type casting to string as the user session manager will take care of initializing the value\ncommonEventData.anonymousId=state.session.anonymousId.value;}// set truly anonymous tracking flag\nif(state.storage.trulyAnonymousTracking.value){commonEventData.context.trulyAnonymousTracking=true;}if(rudderEvent.type==='identify'){commonEventData.context.traits=state.storage.entries.value.userTraits?.type!==NO_STORAGE?clone(state.session.userTraits.value):rudderEvent.context.traits;}if(rudderEvent.type==='group'){if(rudderEvent.groupId||state.session.groupId.value){commonEventData.groupId=rudderEvent.groupId||state.session.groupId.value;}if(rudderEvent.traits||state.session.groupTraits.value){commonEventData.traits=state.storage.entries.value.groupTraits?.type!==NO_STORAGE?clone(state.session.groupTraits.value):rudderEvent.traits;}}const processedEvent=mergeDeepRight(rudderEvent,commonEventData);// Set the default values for the event properties\n// matching with v1.1 payload\nif(processedEvent.event===undefined){processedEvent.event=null;}if(processedEvent.properties===undefined){processedEvent.properties=null;}processOptions(processedEvent,options,logger);checkForReservedElements(processedEvent,logger);// Update the integrations config for the event\nprocessedEvent.integrations=getEventIntegrationsConfig(processedEvent.integrations);return processedEvent;};\n\nclass RudderEventFactory{constructor(logger){this.logger=logger;}/**\n * Generate a 'page' event based on the user-input fields\n * @param category Page's category\n * @param name Page name\n * @param properties Page properties\n * @param options API options\n */generatePageEvent(category,name,properties,options){let props=properties??{};props=getUpdatedPageProperties(props,options);const pageEvent={properties:props,name,category,type:'page'};return getEnrichedEvent(pageEvent,options,props,this.logger);}/**\n * Generate a 'track' event based on the user-input fields\n * @param event The event name\n * @param properties Event properties\n * @param options API options\n */generateTrackEvent(event,properties,options){const trackEvent={properties,event,type:'track'};return getEnrichedEvent(trackEvent,options,undefined,this.logger);}/**\n * Generate an 'identify' event based on the user-input fields\n * @param userId New user ID\n * @param traits new traits\n * @param options API options\n */generateIdentifyEvent(userId,traits,options){const identifyEvent={userId,type:'identify',context:{traits}};return getEnrichedEvent(identifyEvent,options,undefined,this.logger);}/**\n * Generate an 'alias' event based on the user-input fields\n * @param to New user ID\n * @param from Old user ID\n * @param options API options\n */generateAliasEvent(to,from,options){const aliasEvent={previousId:from,type:'alias'};const enrichedEvent=getEnrichedEvent(aliasEvent,options,undefined,this.logger);// override the User ID from the API inputs\nenrichedEvent.userId=to??enrichedEvent.userId;return enrichedEvent;}/**\n * Generate a 'group' event based on the user-input fields\n * @param groupId New group ID\n * @param traits new group traits\n * @param options API options\n */generateGroupEvent(groupId,traits,options){const groupEvent={type:'group'};if(groupId){groupEvent.groupId=groupId;}if(traits){groupEvent.traits=traits;}return getEnrichedEvent(groupEvent,options,undefined,this.logger);}/**\n * Generates a new RudderEvent object based on the user-input fields\n * @param event API event parameters object\n * @returns A RudderEvent object\n */create(event){let eventObj;switch(event.type){case 'page':eventObj=this.generatePageEvent(event.category,event.name,event.properties,event.options);break;case 'track':eventObj=this.generateTrackEvent(event.name,event.properties,event.options);break;case 'identify':eventObj=this.generateIdentifyEvent(event.userId,event.traits,event.options);break;case 'alias':eventObj=this.generateAliasEvent(event.to,event.from,event.options);break;case 'group':default:eventObj=this.generateGroupEvent(event.groupId,event.traits,event.options);break;}return eventObj;}}\n\n/**\n * A service to generate valid event payloads and queue them for processing\n */class EventManager{/**\n *\n * @param eventRepository Event repository instance\n * @param userSessionManager UserSession Manager instance\n * @param errorHandler Error handler object\n * @param logger Logger object\n */constructor(eventRepository,userSessionManager,errorHandler,logger){this.eventRepository=eventRepository;this.userSessionManager=userSessionManager;this.errorHandler=errorHandler;this.logger=logger;this.eventFactory=new RudderEventFactory(this.logger);}/**\n * Initializes the event manager\n */init(){this.eventRepository.init();}resume(){this.eventRepository.resume();}/**\n * Consumes a new incoming event\n * @param event Incoming event data\n */addEvent(event){this.userSessionManager.refreshSession();const rudderEvent=this.eventFactory.create(event);this.eventRepository.enqueue(rudderEvent,event.callback);}}\n\nclass UserSessionManager{/**\n * Tracks whether a server-side cookie setting request is in progress or not.\n */constructor(pluginsManager,storeManager,httpClient,errorHandler,logger){this.storeManager=storeManager;this.pluginsManager=pluginsManager;this.logger=logger;this.errorHandler=errorHandler;this.httpClient=httpClient;this.onError=this.onError.bind(this);this.serverSideCookieDebounceFuncs={};this.serverSideCookiesRequestInProgress={};}/**\n * Initialize User session with values from storage\n */init(){this.syncStorageDataToState();// Register the effect to sync with storage\nthis.registerEffects();}syncStorageDataToState(){this.migrateStorageIfNeeded();this.migrateDataFromPreviousStorage();// get the values from storage and set it again\nthis.setUserId(this.getUserId());this.setUserTraits(this.getUserTraits());this.setGroupId(this.getGroupId());this.setGroupTraits(this.getGroupTraits());const{externalAnonymousIdCookieName,anonymousIdOptions}=state.loadOptions.value;let externalAnonymousId;if(isDefinedAndNotNull(externalAnonymousIdCookieName)&&typeof externalAnonymousIdCookieName==='string'){externalAnonymousId=this.getExternalAnonymousIdByCookieName(externalAnonymousIdCookieName);}this.setAnonymousId(externalAnonymousId??this.getAnonymousId(anonymousIdOptions));this.setAuthToken(this.getAuthToken());this.setInitialReferrerInfo();this.configureSessionTracking();}configureSessionTracking(){let sessionInfo;if(this.isPersistenceEnabledForStorageEntry('sessionInfo')){const configuredSessionTrackingInfo=this.getConfiguredSessionTrackingInfo();const initialSessionInfo=this.getSessionInfo()??DEFAULT_USER_SESSION_VALUES.sessionInfo;// Merge the session info from the storage and the configuration\nsessionInfo={// If manualTrack is set to true in the storage, then do not enable auto tracking even if configured.\n// Once manual tracking ends (endSession is called), auto tracking will be enabled in the next SDK run.\nautoTrack:configuredSessionTrackingInfo.autoTrack&&initialSessionInfo.manualTrack!==true,timeout:configuredSessionTrackingInfo.timeout,manualTrack:initialSessionInfo.manualTrack,expiresAt:initialSessionInfo.expiresAt,id:initialSessionInfo.id,sessionStart:initialSessionInfo.sessionStart};// If both autoTrack and manualTrack are disabled, reset the session info to default values\nif(!sessionInfo.autoTrack&&sessionInfo.manualTrack!==true){sessionInfo=DEFAULT_USER_SESSION_VALUES.sessionInfo;}else if(configuredSessionTrackingInfo.cutOff?.enabled===true){sessionInfo.cutOff={enabled:true,duration:configuredSessionTrackingInfo.cutOff.duration,expiresAt:initialSessionInfo.cutOff?.expiresAt};}}else {sessionInfo=DEFAULT_USER_SESSION_VALUES.sessionInfo;}state.session.sessionInfo.value=sessionInfo;// If auto session tracking is enabled start the session tracking\nif(state.session.sessionInfo.value.autoTrack){this.startOrRenewAutoTracking(state.session.sessionInfo.value);}}setInitialReferrerInfo(){const persistedInitialReferrer=this.getInitialReferrer();const persistedInitialReferringDomain=this.getInitialReferringDomain();if(persistedInitialReferrer&&persistedInitialReferringDomain){this.setInitialReferrer(persistedInitialReferrer);this.setInitialReferringDomain(persistedInitialReferringDomain);}else {const initialReferrer=persistedInitialReferrer||getReferrer();this.setInitialReferrer(initialReferrer);this.setInitialReferringDomain(getReferringDomain(initialReferrer));}}isPersistenceEnabledForStorageEntry(entryName){return isStorageTypeValidForStoringData(state.storage.entries.value[entryName]?.type);}migrateDataFromPreviousStorage(){const entries=state.storage.entries.value;const storageTypesForMigration=[COOKIE_STORAGE,LOCAL_STORAGE,SESSION_STORAGE];Object.keys(entries).forEach(entry=>{const key=entry;const currentStorage=entries[key]?.type;const curStore=this.storeManager?.getStore(storageClientDataStoreNameMap[currentStorage]);if(curStore){storageTypesForMigration.forEach(storage=>{const store=this.storeManager?.getStore(storageClientDataStoreNameMap[storage]);if(store&&storage!==currentStorage){const value=store.get(COOKIE_KEYS[key]);if(isDefinedNotNullAndNotEmptyString(value)){curStore.set(COOKIE_KEYS[key],value);}store.remove(COOKIE_KEYS[key]);}});}});}migrateStorageIfNeeded(stores,keys){if(!state.storage.migrate.value){return;}let storesToMigrate=stores??[];if(storesToMigrate.length===0){const persistentStoreNames=[CLIENT_DATA_STORE_COOKIE,CLIENT_DATA_STORE_LS,CLIENT_DATA_STORE_SESSION];persistentStoreNames.forEach(storeName=>{const store=this.storeManager?.getStore(storeName);if(store){storesToMigrate.push(store);}});}let keysToMigrate=keys??Object.keys(COOKIE_KEYS);keysToMigrate.forEach(storageKey=>{const storageEntry=COOKIE_KEYS[storageKey];storesToMigrate.forEach(store=>{const migratedVal=this.pluginsManager?.invokeSingle('storage.migrate',storageEntry,store.engine,this.errorHandler,this.logger);// Skip setting the value if it is null or undefined\n// as those values indicate there is no need for migration or\n// migration failed\nif(!isNullOrUndefined(migratedVal)){store.set(storageEntry,migratedVal);}});});}getConfiguredSessionTrackingInfo(){let autoTrack=state.loadOptions.value.sessions.autoTrack!==false;// Do not validate any further if autoTrack is disabled\nif(!autoTrack){return {autoTrack};}let timeout;const configuredSessionTimeout=state.loadOptions.value.sessions?.timeout;if(!isPositiveInteger(configuredSessionTimeout)){this.logger.warn(TIMEOUT_NOT_NUMBER_WARNING(USER_SESSION_MANAGER,configuredSessionTimeout,DEFAULT_SESSION_TIMEOUT_MS));timeout=DEFAULT_SESSION_TIMEOUT_MS;}else {timeout=configuredSessionTimeout;}if(timeout===0){this.logger.warn(TIMEOUT_ZERO_WARNING(USER_SESSION_MANAGER));autoTrack=false;}// In case user provides a timeout value greater than 0 but less than 10 seconds SDK will show a warning\n// and will proceed with it\nif(timeout>0&&timeout<MIN_SESSION_TIMEOUT_MS){this.logger.warn(TIMEOUT_NOT_RECOMMENDED_WARNING(USER_SESSION_MANAGER,timeout,MIN_SESSION_TIMEOUT_MS));}const cutOff=this.getCutOffInfo(timeout);return {timeout,autoTrack,cutOff};}getCutOffInfo(sessionTimeout){const cutOff=state.loadOptions.value.sessions.cutOff;let cutOffDuration;let cutOffEnabled=false;if(cutOff.enabled===true){cutOffDuration=cutOff.duration;cutOffEnabled=true;if(!isPositiveInteger(cutOffDuration)){this.logger.warn(CUT_OFF_DURATION_NOT_NUMBER_WARNING(USER_SESSION_MANAGER,cutOffDuration,DEFAULT_SESSION_CUT_OFF_DURATION_MS));// Use the default value for cut off duration\ncutOffDuration=DEFAULT_SESSION_CUT_OFF_DURATION_MS;}else if(cutOffDuration<sessionTimeout){this.logger.warn(CUT_OFF_DURATION_LESS_THAN_TIMEOUT_WARNING(USER_SESSION_MANAGER,cutOffDuration,sessionTimeout));cutOffEnabled=false;}}return {enabled:cutOffEnabled,duration:cutOffDuration};}/**\n * Handles error\n * @param error The error object\n */onError(error,customMessage,groupingHash){this.errorHandler.onError({error,context:USER_SESSION_MANAGER,customMessage,groupingHash});}/**\n * A function to encrypt the cookie value and return the encrypted data\n * @param cookiesData\n * @param store\n * @returns\n */getEncryptedCookieData(cookiesData,store){const encryptedCookieData=[];cookiesData.forEach(cData=>{const encryptedValue=store?.encrypt(stringifyWithoutCircular(cData.value,false,[],this.logger));if(isDefinedAndNotNull(encryptedValue)){encryptedCookieData.push({name:cData.name,value:encryptedValue});}});return encryptedCookieData;}/**\n * A function that makes request to data service to set the cookie\n * @param encryptedCookieData\n * @param callback\n */makeRequestToSetCookie(encryptedCookieData,callback){this.httpClient?.getAsyncData({url:state.serverCookies.dataServiceUrl.value,options:{method:'POST',data:stringifyWithoutCircular({reqType:'setCookies',workspaceId:state.source.value?.workspaceId,data:{options:{maxAge:state.storage.cookie.value?.maxage,path:state.storage.cookie.value?.path,domain:state.storage.cookie.value?.domain,sameSite:state.storage.cookie.value?.samesite,secure:state.storage.cookie.value?.secure,expires:state.storage.cookie.value?.expires},cookies:encryptedCookieData}}),sendRawData:true,withCredentials:true},isRawResponse:true,callback});}/**\n * A function to make an external request to set the cookie from server side\n * @param sessionToCookiesMap map of session key to cookie name\n * @param cb callback function to be called when the cookie is set\n * @param store store to be used to get the cookie value\n */setServerSideCookies(sessionToCookiesMap,cb,store){// Retrieve the cookie value from the state\nconst sessionKeys=Object.keys(sessionToCookiesMap);const getCurrentCookieValuesFromState=()=>{return sessionKeys.map(sessionKey=>{return {name:sessionToCookiesMap[sessionKey].name,value:state.session[sessionKey].value};});};// Preserve the current cookie values\nconst originalCookieValues={};sessionKeys.forEach(sessionKey=>{originalCookieValues[sessionToCookiesMap[sessionKey].name]=store?.get(sessionToCookiesMap[sessionKey].name);});const clearInProgressFlags=()=>{sessionKeys.forEach(sessionKey=>{this.serverSideCookiesRequestInProgress[sessionKey]=false;});};const setCookiesClientSide=()=>{getCurrentCookieValuesFromState().forEach(each=>{if(cb){cb(each.name,each.value);}});};try{const expectedCookieValues={};sessionKeys.forEach(sessionKey=>{expectedCookieValues[sessionToCookiesMap[sessionKey].name]=state.session[sessionKey].value;});// encrypt cookies values\nconst encryptedCookieData=this.getEncryptedCookieData(getCurrentCookieValuesFromState(),store);if(encryptedCookieData.length>0){// make request to data service to set the cookie from server side\nthis.makeRequestToSetCookie(encryptedCookieData,(res,details)=>{// Mark the cookie req status as done\nclearInProgressFlags();if(details?.xhr?.status===200){getCurrentCookieValuesFromState().forEach(cData=>{const originalCookieVal=originalCookieValues[cData.name];const currentCookieVal=store?.get(cData.name);// Check if the expected cookie values are set.\nif(stringifyWithoutCircular(expectedCookieValues[cData.name],false,[])!==stringifyWithoutCircular(currentCookieVal,false,[])){// It's fine if the values don't match as other active SDK sessions might have updated the cookie values\n// or other cookie requests might have updated the cookie value.\n// Log an error only when cookie didn't exist previously and currently also doesn't exist.\nif(isNull(originalCookieVal)&&isNull(currentCookieVal)){this.logger.error(FAILED_SETTING_COOKIE_FROM_SERVER_ERROR(cData.name));}if(cb){cb(cData.name,cData.value);}}});}else {this.logger.error(DATA_SERVER_REQUEST_FAIL_ERROR(details?.xhr?.status));setCookiesClientSide();}});}else {setCookiesClientSide();// Mark the cookie req status as done\nclearInProgressFlags();}}catch(e){this.onError(e,FAILED_SETTING_COOKIE_FROM_SERVER_GLOBAL_ERROR,FAILED_SETTING_COOKIE_FROM_SERVER_GLOBAL_ERROR);setCookiesClientSide();// Mark the cookie req status as done\nclearInProgressFlags();}}/**\n * A function to sync values in storage\n * @param sessionKey\n */syncValueToStorage(sessionKey){const entries=state.storage.entries.value;const storageType=entries[sessionKey]?.type;if(isStorageTypeValidForStoringData(storageType)){const curStore=this.storeManager.getStore(storageClientDataStoreNameMap[storageType]);const cookieName=entries[sessionKey]?.key;const cookieValue=state.session[sessionKey].value;if(cookieValue&&(isString(cookieValue)||isNonEmptyObject(cookieValue))){// if useServerSideCookies load option is set to true\n// set the cookie from server side\nif(state.serverCookies.isEnabledServerSideCookies.value&&storageType===COOKIE_STORAGE){// Mark the requests as in progress.\nthis.serverSideCookiesRequestInProgress[sessionKey]=true;if(this.serverSideCookieDebounceFuncs[sessionKey]){globalThis.clearTimeout(this.serverSideCookieDebounceFuncs[sessionKey]);}this.serverSideCookieDebounceFuncs[sessionKey]=globalThis.setTimeout(()=>{// Create a map of session key to cookie name\nconst sessionToCookiesMap={[sessionKey]:{name:cookieName}};this.setServerSideCookies(sessionToCookiesMap,(cookieName,cookieValue)=>{curStore?.set(cookieName,cookieValue);},curStore);},SERVER_SIDE_COOKIES_DEBOUNCE_TIME);}else {curStore?.set(cookieName,cookieValue);}}else {curStore?.remove(cookieName);}}}/**\n * Function to update storage whenever state value changes\n */registerEffects(){// This will work as long as the user session entry key names are same as the state keys\nUSER_SESSION_KEYS.forEach(sessionKey=>{m(()=>{this.syncValueToStorage(sessionKey);});});}/**\n * Sets anonymous id in the following precedence:\n *\n * 1. anonymousId: Id directly provided to the function.\n * 2. rudderAmpLinkerParam: value generated from linker query parm (rudderstack)\n * using parseLinker util.\n * 3. generateUUID: A new unique id is generated and assigned.\n */setAnonymousId(anonymousId,rudderAmpLinkerParam){let finalAnonymousId=anonymousId;if(!isString(anonymousId)||!finalAnonymousId){finalAnonymousId=undefined;}if(this.isPersistenceEnabledForStorageEntry('anonymousId')){if(!finalAnonymousId&&rudderAmpLinkerParam){const linkerPluginsResult=this.pluginsManager?.invokeSingle('userSession.anonymousIdGoogleLinker',rudderAmpLinkerParam);finalAnonymousId=linkerPluginsResult;}finalAnonymousId=finalAnonymousId||generateAnonymousId();}else {finalAnonymousId=DEFAULT_USER_SESSION_VALUES.anonymousId;}state.session.anonymousId.value=finalAnonymousId;}/**\n * Fetches anonymousId\n * @param options option to fetch it from external source\n * @returns anonymousId\n */getAnonymousId(options){const storage=state.storage.entries.value.anonymousId?.type;if(isStorageTypeValidForStoringData(storage)){let persistedAnonymousId=state.session.anonymousId.value;// If the anonymous ID is the default value, fetch it from storage\nif(!persistedAnonymousId||persistedAnonymousId===DEFAULT_USER_SESSION_VALUES.anonymousId){persistedAnonymousId=this.getEntryValue('anonymousId');}if(!persistedAnonymousId&&options){// fetch anonymousId from external source\nconst autoCapturedAnonymousId=this.pluginsManager?.invokeSingle('storage.getAnonymousId',getStorageEngine,options);persistedAnonymousId=autoCapturedAnonymousId;}state.session.anonymousId.value=persistedAnonymousId||generateAnonymousId();}return state.session.anonymousId.value;}getEntryValue(sessionKey){const entries=state.storage.entries.value;const storageType=entries[sessionKey]?.type;if(isStorageTypeValidForStoringData(storageType)){const store=this.storeManager?.getStore(storageClientDataStoreNameMap[storageType]);// Migrate the storage data before fetching the value\n// This is needed for entries that are fetched from the storage\n// during the current session (for example, session info)\nthis.migrateStorageIfNeeded([store],[sessionKey]);const storageKey=entries[sessionKey]?.key;return store?.get(storageKey)??null;}return null;}getExternalAnonymousIdByCookieName(key){const storageEngine=getStorageEngine(COOKIE_STORAGE);if(storageEngine?.isEnabled){return storageEngine.getItem(key)??null;}return null;}/**\n * Fetches the value for a session key. Preferably from storage, if the server-side\n * cookies request is not in progress. Otherwise, from the state.\n * @param sessionKey - The session key to fetch the value for\n * @returns - The value for the session key\n */getUserSessionValue(sessionKey){// If the server-side cookies request is in progress, fetch the value from the state.\nif(this.serverSideCookiesRequestInProgress[sessionKey]){return state.session[sessionKey].value;}// Otherwise, fetch the value from storage.\nreturn this.getEntryValue(sessionKey);}/**\n * Fetches User Id\n * @returns\n */getUserId(){return this.getUserSessionValue('userId');}/**\n * Fetches User Traits\n * @returns\n */getUserTraits(){return this.getUserSessionValue('userTraits');}/**\n * Fetches Group Id\n * @returns\n */getGroupId(){return this.getUserSessionValue('groupId');}/**\n * Fetches Group Traits\n * @returns\n */getGroupTraits(){return this.getUserSessionValue('groupTraits');}/**\n * Fetches Initial Referrer\n * @returns\n */getInitialReferrer(){return this.getUserSessionValue('initialReferrer');}/**\n * Fetches Initial Referring domain\n * @returns\n */getInitialReferringDomain(){return this.getUserSessionValue('initialReferringDomain');}/**\n * Fetches session tracking information from storage\n * @returns\n */getSessionInfo(){return this.getUserSessionValue('sessionInfo');}/**\n * Fetches auth token from storage\n * @returns\n */getAuthToken(){return this.getUserSessionValue('authToken');}/**\n * If session is active it returns the sessionId\n * @returns\n */getSessionId(){const sessionInfo=this.getSessionInfo()??DEFAULT_USER_SESSION_VALUES.sessionInfo;if(sessionInfo.autoTrack&&!hasSessionExpired(sessionInfo)||sessionInfo.manualTrack){return sessionInfo.id??null;}return null;}/**\n * A function to keep the session information up to date in the state\n * before using it for building event payloads.\n */refreshSession(){let sessionInfo=this.getSessionInfo()??DEFAULT_USER_SESSION_VALUES.sessionInfo;if(sessionInfo.autoTrack||sessionInfo.manualTrack){if(sessionInfo.autoTrack){this.startOrRenewAutoTracking(sessionInfo);sessionInfo=state.session.sessionInfo.value;}// Note that if sessionStart is false, then it's an active session.\n// So, we needn't update the session info.\n//\n// For other scenarios,\n// 1. If sessionStart is undefined, then it's a new session.\n// Mark it as sessionStart.\n// 2. If sessionStart is true, then need to flip it for the future events.\nif(sessionInfo.sessionStart===undefined){sessionInfo={...sessionInfo,sessionStart:true};}else if(sessionInfo.sessionStart){sessionInfo={...sessionInfo,sessionStart:false};}}// Always write to state (in-turn to storage) to keep the session info up to date.\nstate.session.sessionInfo.value=sessionInfo;if(state.lifecycle.status.value!=='readyExecuted'){// Force update the storage as the 'effect' blocks are not getting triggered\n// when processing preload buffered requests\nthis.syncValueToStorage('sessionInfo');}}resetAndStartNewSession(){const session=state.session;const{manualTrack,autoTrack,timeout,cutOff}=session.sessionInfo.value;if(autoTrack){const sessionInfo={...DEFAULT_USER_SESSION_VALUES.sessionInfo,timeout};if(cutOff){sessionInfo.cutOff={enabled:cutOff.enabled,duration:cutOff.duration};}session.sessionInfo.value=sessionInfo;this.startOrRenewAutoTracking(session.sessionInfo.value);}else if(manualTrack){this.startManualTrackingInternal();}}/**\n * Reset state values\n * @param options options for reset\n * @returns\n */reset(options){const{session}=state;const opts=getFinalResetOptions(options);n(()=>{Object.keys(DEFAULT_USER_SESSION_VALUES).forEach(key=>{const userSessionKey=key;if(opts.entries[userSessionKey]!==true){return;}switch(key){case 'anonymousId':this.setAnonymousId();break;case 'sessionInfo':this.resetAndStartNewSession();break;default:session[userSessionKey].value=DEFAULT_USER_SESSION_VALUES[userSessionKey];break;}});});}/**\n * Set user Id\n * @param userId\n */setUserId(userId){state.session.userId.value=this.isPersistenceEnabledForStorageEntry('userId')&&userId?userId:DEFAULT_USER_SESSION_VALUES.userId;}/**\n * Set user traits\n * @param traits\n */setUserTraits(traits){state.session.userTraits.value=this.isPersistenceEnabledForStorageEntry('userTraits')&&isObjectLiteralAndNotNull(traits)?mergeDeepRight(state.session.userTraits.value??DEFAULT_USER_SESSION_VALUES.userTraits,traits):DEFAULT_USER_SESSION_VALUES.userTraits;}/**\n * Set group Id\n * @param groupId\n */setGroupId(groupId){state.session.groupId.value=this.isPersistenceEnabledForStorageEntry('groupId')&&groupId?groupId:DEFAULT_USER_SESSION_VALUES.groupId;}/**\n * Set group traits\n * @param traits\n */setGroupTraits(traits){state.session.groupTraits.value=this.isPersistenceEnabledForStorageEntry('groupTraits')&&isObjectLiteralAndNotNull(traits)?mergeDeepRight(state.session.groupTraits.value??DEFAULT_USER_SESSION_VALUES.groupTraits,traits):DEFAULT_USER_SESSION_VALUES.groupTraits;}/**\n * Set initial referrer\n * @param referrer\n */setInitialReferrer(referrer){state.session.initialReferrer.value=this.isPersistenceEnabledForStorageEntry('initialReferrer')&&referrer?referrer:DEFAULT_USER_SESSION_VALUES.initialReferrer;}/**\n * Set initial referring domain\n * @param {String} referringDomain\n */setInitialReferringDomain(referringDomain){state.session.initialReferringDomain.value=this.isPersistenceEnabledForStorageEntry('initialReferringDomain')&&referringDomain?referringDomain:DEFAULT_USER_SESSION_VALUES.initialReferringDomain;}/**\n * A function to check for existing session details and depending on that create a new session\n */startOrRenewAutoTracking(sessionInfo){let finalSessionInfo=sessionInfo;if(hasSessionExpired(sessionInfo)){finalSessionInfo=generateAutoTrackingSession(sessionInfo);}else {const timestamp=Date.now();const timeout=sessionInfo.timeout;// Set the expiry time of the session\nfinalSessionInfo.expiresAt=timestamp+timeout;}// Reset cut off expiry timestamp if it is exceeded\nif(isCutOffTimeExceeded(finalSessionInfo)){finalSessionInfo.cutOff.expiresAt=undefined;}// If cut off is active, set or retain the expiry time\nif(finalSessionInfo.cutOff){const cutOffExpiresAt=getCutOffExpirationTimestamp(finalSessionInfo.cutOff);finalSessionInfo.cutOff.expiresAt=cutOffExpiresAt;}// Update the session info in the state\nstate.session.sessionInfo.value=finalSessionInfo;}/**\n * A function method to start a manual session\n * @param {number} id session identifier\n * @returns\n */start(id){state.session.sessionInfo.value=generateManualTrackingSession(id,this.logger);}/**\n * An internal function to start manual session\n */startManualTrackingInternal(){this.start(Date.now());}/**\n * A public method to end an ongoing session.\n */end(){state.session.sessionInfo.value=DEFAULT_USER_SESSION_VALUES.sessionInfo;}/**\n * Set auth token\n * @param userId\n */setAuthToken(token){state.session.authToken.value=this.isPersistenceEnabledForStorageEntry('authToken')&&token?token:DEFAULT_USER_SESSION_VALUES.authToken;}}\n\n/**\n * Plugins to be loaded in the plugins loadOption is not defined\n */const allOptionalPlugins=['BeaconQueue','CustomConsentManager','DeviceModeDestinations','DeviceModeTransformation','ExternalAnonymousId','GoogleLinker','IubendaConsentManager','KetchConsentManager','NativeDestinationQueue','OneTrustConsentManager','StorageEncryption','StorageEncryptionLegacy','StorageMigrator','XhrQueue'];// Plugins excluded from lite builds which are also not connected to any SDK configuration options\nconst defaultOptionalPluginsList=allOptionalPlugins;\n\nconst normalizeLoadOptions=(loadOptionsFromState,loadOptions)=>{// TODO: Maybe add warnings for invalid values\nconst normalizedLoadOpts=clone(loadOptions);if(!isString(normalizedLoadOpts.setCookieDomain)){normalizedLoadOpts.setCookieDomain=undefined;}const cookieSameSiteValues=['Strict','Lax','None'];if(!cookieSameSiteValues.includes(normalizedLoadOpts.sameSiteCookie)){normalizedLoadOpts.sameSiteCookie=undefined;}normalizedLoadOpts.secureCookie=getNormalizedBooleanValue(normalizedLoadOpts.secureCookie,loadOptionsFromState.secureCookie);normalizedLoadOpts.sameDomainCookiesOnly=getNormalizedBooleanValue(normalizedLoadOpts.sameDomainCookiesOnly,loadOptionsFromState.sameDomainCookiesOnly);const uaChTrackLevels=['none','default','full'];if(!uaChTrackLevels.includes(normalizedLoadOpts.uaChTrackLevel)){normalizedLoadOpts.uaChTrackLevel=undefined;}normalizedLoadOpts.integrations=getNormalizedObjectValue(normalizedLoadOpts.integrations);if(!Array.isArray(normalizedLoadOpts.plugins)){normalizedLoadOpts.plugins=defaultOptionalPluginsList;}normalizedLoadOpts.useGlobalIntegrationsConfigInEvents=getNormalizedBooleanValue(normalizedLoadOpts.useGlobalIntegrationsConfigInEvents,loadOptionsFromState.useGlobalIntegrationsConfigInEvents);normalizedLoadOpts.bufferDataPlaneEventsUntilReady=getNormalizedBooleanValue(normalizedLoadOpts.bufferDataPlaneEventsUntilReady,loadOptionsFromState.bufferDataPlaneEventsUntilReady);normalizedLoadOpts.sendAdblockPage=getNormalizedBooleanValue(normalizedLoadOpts.sendAdblockPage,loadOptionsFromState.sendAdblockPage);normalizedLoadOpts.useServerSideCookies=getNormalizedBooleanValue(normalizedLoadOpts.useServerSideCookies,loadOptionsFromState.useServerSideCookies);if(!isString(normalizedLoadOpts.dataServiceEndpoint)){normalizedLoadOpts.dataServiceEndpoint=undefined;}normalizedLoadOpts.sendAdblockPageOptions=getNormalizedObjectValue(normalizedLoadOpts.sendAdblockPageOptions);normalizedLoadOpts.loadIntegration=getNormalizedBooleanValue(normalizedLoadOpts.loadIntegration,loadOptionsFromState.loadIntegration);if(!isNonEmptyObject(normalizedLoadOpts.storage)){normalizedLoadOpts.storage=undefined;}else {normalizedLoadOpts.storage.migrate=getNormalizedBooleanValue(normalizedLoadOpts.storage.migrate,loadOptionsFromState.storage?.migrate);normalizedLoadOpts.storage.cookie=getNormalizedObjectValue(normalizedLoadOpts.storage.cookie);normalizedLoadOpts.storage.encryption=getNormalizedObjectValue(normalizedLoadOpts.storage.encryption);normalizedLoadOpts.storage=removeUndefinedAndNullValues(normalizedLoadOpts.storage);}normalizedLoadOpts.destinationsQueueOptions=getNormalizedObjectValue(normalizedLoadOpts.destinationsQueueOptions);normalizedLoadOpts.queueOptions=getNormalizedObjectValue(normalizedLoadOpts.queueOptions);normalizedLoadOpts.lockIntegrationsVersion=getNormalizedBooleanValue(normalizedLoadOpts.lockIntegrationsVersion,loadOptionsFromState.lockIntegrationsVersion);normalizedLoadOpts.lockPluginsVersion=getNormalizedBooleanValue(normalizedLoadOpts.lockPluginsVersion,loadOptionsFromState.lockPluginsVersion);if(!isNumber(normalizedLoadOpts.dataPlaneEventsBufferTimeout)){normalizedLoadOpts.dataPlaneEventsBufferTimeout=undefined;}normalizedLoadOpts.beaconQueueOptions=getNormalizedObjectValue(normalizedLoadOpts.beaconQueueOptions);normalizedLoadOpts.preConsent=getNormalizedObjectValue(normalizedLoadOpts.preConsent);normalizedLoadOpts.sourceConfigurationOverride=getNormalizedObjectValue(normalizedLoadOpts.sourceConfigurationOverride);const mergedLoadOptions=mergeDeepRight(loadOptionsFromState,removeUndefinedAndNullValues(normalizedLoadOpts));return mergedLoadOptions;};\n\nconst DATA_PLANE_QUEUE_EXT_POINT_PREFIX='dataplaneEventsQueue';const DESTINATIONS_QUEUE_EXT_POINT_PREFIX='destinationsEventsQueue';const DMT_EXT_POINT_PREFIX='transformEvent';\n\n/**\n * Filters and returns the user supplied integrations config that should take preference over the destination specific integrations config\n * @param eventIntgConfig User supplied integrations config at event level\n * @param destinationsIntgConfig Cumulative integrations config from all destinations\n * @returns Filtered user supplied integrations config\n */const getOverriddenIntegrationOptions=(eventIntgConfig,destinationsIntgConfig)=>Object.keys(eventIntgConfig).filter(intgName=>eventIntgConfig[intgName]!==true||!destinationsIntgConfig[intgName]).reduce((obj,key)=>{const retVal=clone(obj);retVal[key]=eventIntgConfig[key];return retVal;},{});/**\n * Returns the event object with final integrations config\n * @param event RudderEvent object\n * @param state Application state\n * @returns Mutated event with final integrations config\n */const getFinalEvent=(event,state)=>{const finalEvent=clone(event);// Merge the destination specific integrations config with the event's integrations config\n// In general, the preference is given to the event's integrations config\nconst destinationsIntgConfig=state.nativeDestinations.integrationsConfig.value;const overriddenIntgOpts=getOverriddenIntegrationOptions(event.integrations,destinationsIntgConfig);finalEvent.integrations=mergeDeepRight(destinationsIntgConfig,overriddenIntgOpts);return finalEvent;};const shouldBufferEventsForPreConsent=state=>state.consents.preConsent.value.enabled&&state.consents.preConsent.value.events?.delivery==='buffer';\n\nconst safelyInvokeCallback=(callback,args,apiName,logger)=>{if(!isDefined(callback)){return;}if(isFunction(callback)){try{callback(...args);}catch(error){logger.error(CALLBACK_INVOKE_ERROR(apiName),error);}}else {logger.error(INVALID_CALLBACK_FN_ERROR(apiName));}};\n\n/**\n * Event repository class responsible for queuing events for further processing and delivery\n */class EventRepository{/**\n *\n * @param pluginsManager Plugins manager instance\n * @param storeManager Store Manager instance\n * @param errorHandler Error handler object\n * @param logger Logger object\n */constructor(pluginsManager,storeManager,httpClient,errorHandler,logger){this.pluginsManager=pluginsManager;this.errorHandler=errorHandler;this.httpClient=httpClient;this.logger=logger;this.storeManager=storeManager;}/**\n * Initializes the event repository\n */init(){this.dataplaneEventsQueue=this.pluginsManager.invokeSingle(`${DATA_PLANE_QUEUE_EXT_POINT_PREFIX}.init`,state,this.httpClient,this.storeManager,this.errorHandler,this.logger);this.dmtEventsQueue=this.pluginsManager.invokeSingle(`${DMT_EXT_POINT_PREFIX}.init`,state,this.pluginsManager,this.httpClient,this.storeManager,this.errorHandler,this.logger);this.destinationsEventsQueue=this.pluginsManager.invokeSingle(`${DESTINATIONS_QUEUE_EXT_POINT_PREFIX}.init`,state,this.pluginsManager,this.storeManager,this.dmtEventsQueue,this.errorHandler,this.logger);// Start the queue once the client destinations are ready\nm(()=>{if(state.nativeDestinations.clientDestinationsReady.value===true){this.destinationsEventsQueue?.start();this.dmtEventsQueue?.start();}});const bufferEventsBeforeConsent=shouldBufferEventsForPreConsent(state);// Start the queue processing only when the destinations are ready or hybrid mode destinations exist\n// However, events will be enqueued for now.\n// At the time of processing the events, the integrations config data from destinations\n// is merged into the event object\nlet timeoutId;m(()=>{const shouldBufferDpEvents=state.loadOptions.value.bufferDataPlaneEventsUntilReady===true&&state.nativeDestinations.clientDestinationsReady.value===false;const hybridDestExist=state.nativeDestinations.activeDestinations.value.some(dest=>isHybridModeDestination(dest));if((hybridDestExist===false||shouldBufferDpEvents===false)&&!bufferEventsBeforeConsent&&this.dataplaneEventsQueue?.scheduleTimeoutActive!==true){globalThis.clearTimeout(timeoutId);this.dataplaneEventsQueue?.start();}});// Force start the data plane events queue processing after a timeout\nif(state.loadOptions.value.bufferDataPlaneEventsUntilReady===true){timeoutId=globalThis.setTimeout(()=>{if(this.dataplaneEventsQueue?.scheduleTimeoutActive!==true){this.dataplaneEventsQueue?.start();}},state.loadOptions.value.dataPlaneEventsBufferTimeout);}}resume(){if(this.dataplaneEventsQueue?.scheduleTimeoutActive!==true){if(state.consents.postConsent.value.discardPreConsentEvents){this.dataplaneEventsQueue?.clear();this.destinationsEventsQueue?.clear();}this.dataplaneEventsQueue?.start();}}/**\n * Enqueues the event for processing\n * @param event RudderEvent object\n * @param callback API callback function\n */enqueue(event,callback){const dpQEvent=getFinalEvent(event,state);this.pluginsManager.invokeSingle(`${DATA_PLANE_QUEUE_EXT_POINT_PREFIX}.enqueue`,state,this.dataplaneEventsQueue,dpQEvent,this.errorHandler,this.logger);const dQEvent=clone(event);this.pluginsManager.invokeSingle(`${DESTINATIONS_QUEUE_EXT_POINT_PREFIX}.enqueue`,state,this.destinationsEventsQueue,dQEvent,this.errorHandler,this.logger);// Invoke the callback if it exists\nconst apiName=`${event.type.charAt(0).toUpperCase()}${event.type.slice(1)}${API_SUFFIX}`;safelyInvokeCallback(callback,[dpQEvent],apiName,this.logger);}}\n\nconst dispatchSDKEvent=event=>{const customEvent=new CustomEvent(event,{detail:{analyticsInstance:globalThis.rudderanalytics},bubbles:true,cancelable:true,composed:true});globalThis.document.dispatchEvent(customEvent);};const isWriteKeyValid=writeKey=>isString(writeKey)&&writeKey.trim().length>0;const isDataPlaneUrlValid=dataPlaneUrl=>isValidURL(dataPlaneUrl);\n\n/*\n * Analytics class with lifecycle based on state ad user triggered events\n */class Analytics{/**\n * Initialize services and components or use default ones if singletons\n */constructor(){this.preloadBuffer=new BufferQueue();this.initialized=false;this.errorHandler=defaultErrorHandler;this.logger=defaultLogger;this.externalSrcLoader=new ExternalSrcLoader(this.logger);this.httpClient=defaultHttpClient;this.httpClient.init(this.errorHandler);this.capabilitiesManager=new CapabilitiesManager(this.httpClient,this.errorHandler,this.logger);}/**\n * Start application lifecycle if not already started\n */load(writeKey,dataPlaneUrl,loadOptions={}){if(state.lifecycle.status.value){return;}if(!isWriteKeyValid(writeKey)){this.logger.error(WRITE_KEY_VALIDATION_ERROR(ANALYTICS_CORE,writeKey));return;}if(!isDataPlaneUrlValid(dataPlaneUrl)){this.logger.error(DATA_PLANE_URL_VALIDATION_ERROR(ANALYTICS_CORE,dataPlaneUrl));return;}// Set initial state values\nn(()=>{state.lifecycle.writeKey.value=clone(writeKey);state.lifecycle.dataPlaneUrl.value=clone(dataPlaneUrl);state.loadOptions.value=normalizeLoadOptions(state.loadOptions.value,loadOptions);state.lifecycle.status.value='mounted';});// set log level as early as possible\nthis.logger.setMinLogLevel(state.loadOptions.value.logLevel??POST_LOAD_LOG_LEVEL);// Expose state to global objects\nsetExposedGlobal('state',state,writeKey);// Configure initial config of any services or components here\n// State application lifecycle\nthis.startLifecycle();}// Start lifecycle methods\n/**\n * Orchestrate the lifecycle of the application phases/status\n */startLifecycle(){m(()=>{try{switch(state.lifecycle.status.value){case 'mounted':this.onMounted();break;case 'browserCapabilitiesReady':this.onBrowserCapabilitiesReady();break;case 'configured':this.onConfigured();break;case 'pluginsLoading':break;case 'pluginsReady':this.onPluginsReady();break;case 'initialized':this.onInitialized();break;case 'loaded':this.onLoaded();break;case 'destinationsLoading':break;case 'destinationsReady':this.onDestinationsReady();break;case 'ready':this.onReady();break;case 'readyExecuted':default:break;}}catch(err){const issue='Failed to load the SDK';this.errorHandler.onError({error:err,context:ANALYTICS_CORE,customMessage:issue,groupingHash:issue});}});}onBrowserCapabilitiesReady(){// initialize the preloaded events enqueuing\nretrievePreloadBufferEvents(this);this.prepareInternalServices();this.loadConfig();}onLoaded(){this.processBufferedEvents();// Short-circuit the life cycle and move to the ready state if pre-consent behavior is enabled\nif(state.consents.preConsent.value.enabled===true){state.lifecycle.status.value='ready';}else {this.loadDestinations();}}/**\n * Load browser polyfill if required\n */onMounted(){this.capabilitiesManager.init();}/**\n * Enqueue in SDK preload buffer events, used from preloadBuffer component\n */enqueuePreloadBufferEvents(bufferedEvents){if(Array.isArray(bufferedEvents)){bufferedEvents.forEach(bufferedEvent=>this.preloadBuffer.enqueue(clone(bufferedEvent)));}}/**\n * Process the buffer preloaded events by passing their arguments to the respective facade methods\n */processDataInPreloadBuffer(){while(this.preloadBuffer.size()>0){const eventToProcess=this.preloadBuffer.dequeue();if(eventToProcess){consumePreloadBufferedEvent([...eventToProcess],this);}}}prepareInternalServices(){this.pluginsManager=new PluginsManager(defaultPluginEngine,this.errorHandler,this.logger);this.storeManager=new StoreManager(this.pluginsManager,this.errorHandler,this.logger);this.configManager=new ConfigManager(this.httpClient,this.errorHandler,this.logger);this.userSessionManager=new UserSessionManager(this.pluginsManager,this.storeManager,this.httpClient,this.errorHandler,this.logger);this.eventRepository=new EventRepository(this.pluginsManager,this.storeManager,this.httpClient,this.errorHandler,this.logger);this.eventManager=new EventManager(this.eventRepository,this.userSessionManager,this.errorHandler,this.logger);}/**\n * Load configuration\n */loadConfig(){if(state.lifecycle.writeKey.value){this.httpClient.setAuthHeader(state.lifecycle.writeKey.value);}this.configManager?.init();}/**\n * Initialize the storage and event queue\n */onPluginsReady(){// Initialize storage\nthis.storeManager?.init();this.userSessionManager?.init();// Initialize the appropriate consent manager plugin\nif(state.consents.enabled.value&&!state.consents.initialized.value){this.pluginsManager?.invokeSingle(`consentManager.init`,state,this.logger);if(state.consents.preConsent.value.enabled===false){this.pluginsManager?.invokeSingle(`consentManager.updateConsentsInfo`,state,this.storeManager,this.logger);}}// Initialize event manager\nthis.eventManager?.init();// Mark the SDK as initialized\nstate.lifecycle.status.value='initialized';}/**\n * Load plugins\n */onConfigured(){this.pluginsManager?.init();// TODO: are we going to enable custom plugins to be passed as load options?\n// registerCustomPlugins(state.loadOptions.value.customPlugins);\n}/**\n * Trigger onLoaded callback if any is provided in config & emit initialised event\n */onInitialized(){// Process any preloaded events\nthis.processDataInPreloadBuffer();// Set lifecycle state\nn(()=>{state.lifecycle.loaded.value=true;state.lifecycle.status.value='loaded';});this.initialized=true;// Execute onLoaded callback if provided in load options\nconst onLoadedCallbackFn=state.loadOptions.value.onLoaded;// TODO: we need to avoid passing the window object to the callback function\n// as this will prevent us from supporting multiple SDK instances in the same page\nsafelyInvokeCallback(onLoadedCallbackFn,[globalThis.rudderanalytics],LOAD_API,this.logger);// Emit an event to use as substitute to the onLoaded callback\ndispatchSDKEvent('RSA_Initialised');}/**\n * Emit ready event\n */// eslint-disable-next-line class-methods-use-this\nonReady(){state.lifecycle.status.value='readyExecuted';state.eventBuffer.readyCallbacksArray.value.forEach(callback=>{safelyInvokeCallback(callback,[],READY_API,this.logger);});// Emit an event to use as substitute to the ready callback\ndispatchSDKEvent('RSA_Ready');}/**\n * Consume preloaded events buffer\n */processBufferedEvents(){// This logic has been intentionally implemented without a simple\n// for-loop as the individual events that are processed may\n// add more events to the buffer (this is needed for the consent API)\nlet bufferedEvents=state.eventBuffer.toBeProcessedArray.value;while(bufferedEvents.length>0){const bufferedEvent=bufferedEvents.shift();state.eventBuffer.toBeProcessedArray.value=bufferedEvents;if(bufferedEvent){const methodName=bufferedEvent[0];if(isFunction(this[methodName])){// Send additional arg 'true' to indicate that this is a buffered invocation\nthis[methodName](...bufferedEvent.slice(1),true);}}bufferedEvents=state.eventBuffer.toBeProcessedArray.value;}}/**\n * Load device mode destinations\n */loadDestinations(){// If the integrations load is already triggered or completed, skip the rest of the logic\nif(state.lifecycle.status.value==='destinationsLoading'||state.lifecycle.status.value==='destinationsReady'){return;}// Set in state the desired activeDestinations to inject in DOM\nthis.pluginsManager?.invokeSingle('nativeDestinations.setActiveDestinations',state,this.pluginsManager,this.errorHandler,this.logger);const totalDestinationsToLoad=state.nativeDestinations.activeDestinations.value.length;if(totalDestinationsToLoad===0){state.lifecycle.status.value='destinationsReady';return;}// Start loading native integration scripts and create instances\nstate.lifecycle.status.value='destinationsLoading';this.pluginsManager?.invokeSingle('nativeDestinations.load',state,this.externalSrcLoader,this.errorHandler,this.logger);// Progress to next lifecycle phase if all native destinations are initialized or failed\nm(()=>{const areAllDestinationsReady=totalDestinationsToLoad===0||state.nativeDestinations.initializedDestinations.value.length+state.nativeDestinations.failedDestinations.value.length===totalDestinationsToLoad;if(areAllDestinationsReady){n(()=>{state.lifecycle.status.value='destinationsReady';state.nativeDestinations.clientDestinationsReady.value=true;});}});}/**\n * Move to the ready state\n */// eslint-disable-next-line class-methods-use-this\nonDestinationsReady(){// May be do any destination specific actions here\n// Mark the ready status if not already done\nif(state.lifecycle.status.value!=='ready'){n(()=>{state.lifecycle.status.value='ready';});}}// End lifecycle methods\n// Start consumer exposed methods\nready(callback,isBufferedInvocation=false){const type='ready';if(!state.lifecycle.loaded.value){state.eventBuffer.toBeProcessedArray.value=[...state.eventBuffer.toBeProcessedArray.value,[type,callback]];return;}this.errorHandler.leaveBreadcrumb(`New ${type} invocation`);if(!isFunction(callback)){this.logger.error(INVALID_CALLBACK_FN_ERROR(READY_API));return;}/**\n * If destinations are loaded or no integration is available for loading\n * execute the callback immediately else push the callbacks to a queue that\n * will be executed after loading completes\n */if(state.lifecycle.status.value==='readyExecuted'){safelyInvokeCallback(callback,[],READY_API,this.logger);}else {state.eventBuffer.readyCallbacksArray.value=[...state.eventBuffer.readyCallbacksArray.value,callback];}}page(payload,isBufferedInvocation=false){const type='page';if(!state.lifecycle.loaded.value){state.eventBuffer.toBeProcessedArray.value=[...state.eventBuffer.toBeProcessedArray.value,[type,payload]];return;}this.errorHandler.leaveBreadcrumb(`New ${type} event`);state.metrics.triggered.value+=1;this.eventManager?.addEvent({type:'page',category:payload.category,name:payload.name,properties:payload.properties,options:payload.options,callback:payload.callback});// TODO: Maybe we should alter the behavior to send the ad-block page event even if the SDK is still loaded. It'll be pushed into the to be processed queue.\n// Send automatic ad blocked page event if ad-blockers are detected on the page\n// Check page category to avoid infinite loop\nif(state.capabilities.isAdBlocked.value===true&&payload.category!==ADBLOCK_PAGE_CATEGORY){this.page(pageArgumentsToCallOptions(ADBLOCK_PAGE_CATEGORY,ADBLOCK_PAGE_NAME,{// 'title' is intentionally omitted as it does not make sense\n// in v3 implementation\npath:ADBLOCK_PAGE_PATH},state.loadOptions.value.sendAdblockPageOptions));}}track(payload,isBufferedInvocation=false){const type='track';if(!state.lifecycle.loaded.value){state.eventBuffer.toBeProcessedArray.value=[...state.eventBuffer.toBeProcessedArray.value,[type,payload]];return;}this.errorHandler.leaveBreadcrumb(`New ${type} event - ${payload.name}`);state.metrics.triggered.value+=1;this.eventManager?.addEvent({type,name:payload.name||undefined,properties:payload.properties,options:payload.options,callback:payload.callback});}identify(payload,isBufferedInvocation=false){const type='identify';if(!state.lifecycle.loaded.value){state.eventBuffer.toBeProcessedArray.value=[...state.eventBuffer.toBeProcessedArray.value,[type,payload]];return;}this.errorHandler.leaveBreadcrumb(`New ${type} event`);state.metrics.triggered.value+=1;const shouldResetSession=Boolean(payload.userId&&state.session.userId.value&&payload.userId!==state.session.userId.value);if(shouldResetSession){this.reset();}// `null` value indicates that previous user ID needs to be retained\nif(!isNull(payload.userId)){this.userSessionManager?.setUserId(payload.userId);}this.userSessionManager?.setUserTraits(payload.traits);this.eventManager?.addEvent({type,userId:payload.userId,traits:payload.traits,options:payload.options,callback:payload.callback});}alias(payload,isBufferedInvocation=false){const type='alias';if(!state.lifecycle.loaded.value){state.eventBuffer.toBeProcessedArray.value=[...state.eventBuffer.toBeProcessedArray.value,[type,payload]];return;}this.errorHandler.leaveBreadcrumb(`New ${type} event`);state.metrics.triggered.value+=1;const previousId=payload.from??(this.getUserId()||this.userSessionManager?.getAnonymousId());this.eventManager?.addEvent({type,to:payload.to,from:previousId,options:payload.options,callback:payload.callback});}group(payload,isBufferedInvocation=false){const type='group';if(!state.lifecycle.loaded.value){state.eventBuffer.toBeProcessedArray.value=[...state.eventBuffer.toBeProcessedArray.value,[type,payload]];return;}this.errorHandler.leaveBreadcrumb(`New ${type} event`);state.metrics.triggered.value+=1;// `null` value indicates that previous group ID needs to be retained\nif(!isNull(payload.groupId)){this.userSessionManager?.setGroupId(payload.groupId);}this.userSessionManager?.setGroupTraits(payload.traits);this.eventManager?.addEvent({type,groupId:payload.groupId,traits:payload.traits,options:payload.options,callback:payload.callback});}reset(options,isBufferedInvocation=false){const type='reset';if(!state.lifecycle.loaded.value){state.eventBuffer.toBeProcessedArray.value=[...state.eventBuffer.toBeProcessedArray.value,[type,options]];return;}this.errorHandler.leaveBreadcrumb(`New ${type} invocation`);this.userSessionManager?.reset(options);}getAnonymousId(options){return this.userSessionManager?.getAnonymousId(options);}setAnonymousId(anonymousId,rudderAmpLinkerParam,isBufferedInvocation=false){const type='setAnonymousId';// Buffering is needed as setting the anonymous ID may require invoking the GoogleLinker plugin\nif(!state.lifecycle.loaded.value){state.eventBuffer.toBeProcessedArray.value=[...state.eventBuffer.toBeProcessedArray.value,[type,anonymousId,rudderAmpLinkerParam]];return;}this.errorHandler.leaveBreadcrumb(`New ${type} invocation`);this.userSessionManager?.setAnonymousId(anonymousId,rudderAmpLinkerParam);}// eslint-disable-next-line class-methods-use-this\ngetUserId(){return state.session.userId.value;}// eslint-disable-next-line class-methods-use-this\ngetUserTraits(){return state.session.userTraits.value;}// eslint-disable-next-line class-methods-use-this\ngetGroupId(){return state.session.groupId.value;}// eslint-disable-next-line class-methods-use-this\ngetGroupTraits(){return state.session.groupTraits.value;}startSession(sessionId,isBufferedInvocation=false){const type='startSession';if(!state.lifecycle.loaded.value){state.eventBuffer.toBeProcessedArray.value=[...state.eventBuffer.toBeProcessedArray.value,[type,sessionId]];return;}this.errorHandler.leaveBreadcrumb(`New ${type} invocation`);this.userSessionManager?.start(sessionId);}endSession(isBufferedInvocation=false){const type='endSession';if(!state.lifecycle.loaded.value){state.eventBuffer.toBeProcessedArray.value=[...state.eventBuffer.toBeProcessedArray.value,[type]];return;}this.errorHandler.leaveBreadcrumb(`New ${type} invocation`);this.userSessionManager?.end();}// eslint-disable-next-line class-methods-use-this\ngetSessionId(){const sessionId=this.userSessionManager?.getSessionId();return sessionId??null;}consent(options,isBufferedInvocation=false){const type='consent';if(!state.lifecycle.loaded.value){state.eventBuffer.toBeProcessedArray.value=[...state.eventBuffer.toBeProcessedArray.value,[type,options]];return;}this.errorHandler.leaveBreadcrumb(`New consent invocation`);n(()=>{state.consents.preConsent.value={...state.consents.preConsent.value,enabled:false};state.consents.postConsent.value=getValidPostConsentOptions(options);const{initialized,consentsData}=getConsentManagementData(state.consents.postConsent.value.consentManagement,this.logger);state.consents.initialized.value=initialized;state.consents.data.value=consentsData;});// Update consents data in state\nif(state.consents.enabled.value&&!state.consents.initialized.value){this.pluginsManager?.invokeSingle(`consentManager.updateConsentsInfo`,state,this.storeManager,this.logger);}// Re-init store manager\nthis.storeManager?.initializeStorageState();// Re-init user session manager\nthis.userSessionManager?.syncStorageDataToState();// Resume event manager to process the events to destinations\nthis.eventManager?.resume();this.loadDestinations();this.sendTrackingEvents(isBufferedInvocation);}sendTrackingEvents(isBufferedInvocation){// If isBufferedInvocation is true, then the tracking events will be added to the end of the\n// events buffer array so that any other preload events (mainly from query string API) will be processed first.\nif(state.consents.postConsent.value.trackConsent){const trackOptions=trackArgumentsToCallOptions(CONSENT_TRACK_EVENT_NAME);if(isBufferedInvocation){state.eventBuffer.toBeProcessedArray.value=[...state.eventBuffer.toBeProcessedArray.value,['track',trackOptions]];}else {this.track(trackOptions);}}if(state.consents.postConsent.value.sendPageEvent){const pageOptions=pageArgumentsToCallOptions();if(isBufferedInvocation){state.eventBuffer.toBeProcessedArray.value=[...state.eventBuffer.toBeProcessedArray.value,['page',pageOptions]];}else {this.page(pageOptions);}}}setAuthToken(token){this.userSessionManager?.setAuthToken(token);}/**\n * Add a custom integration for a custom destination.\n * @param destinationId - The ID of the custom destination from the RudderStack dashboard.\n * @param integration - The custom integration object.\n * @param isBufferedInvocation - Whether the invocation is buffered.\n */addCustomIntegration(destinationId,integration,isBufferedInvocation=false){const type='addCustomIntegration';if(isBufferedInvocation){this.errorHandler.leaveBreadcrumb(`New ${type} invocation`);this.pluginsManager?.invokeSingle('nativeDestinations.addCustomIntegration',destinationId,integration,state,this.logger);}else {if(state.lifecycle.loaded.value){this.logger.error(CUSTOM_INTEGRATION_CANNOT_BE_ADDED_ERROR(ANALYTICS_CORE,destinationId));return;}state.eventBuffer.toBeProcessedArray.value=[...state.eventBuffer.toBeProcessedArray.value,[type,destinationId,integration]];}}// End consumer exposed methods\n}\n\n/*\n * RudderAnalytics facade singleton that is exposed as global object and will:\n * expose overloaded methods\n * handle multiple Analytics instances\n * consume SDK preload event buffer\n */class RudderAnalytics{// START-NO-SONAR-SCAN\n// eslint-disable-next-line sonarjs/public-static-readonly\nstatic globalSingleton=null;// END-NO-SONAR-SCAN\nanalyticsInstances={};defaultAnalyticsKey='';logger=defaultLogger;// Singleton with constructor bind methods\nconstructor(){try{if(RudderAnalytics.globalSingleton){// START-NO-SONAR-SCAN\n// eslint-disable-next-line no-constructor-return\nreturn RudderAnalytics.globalSingleton;// END-NO-SONAR-SCAN\n}RudderAnalytics.initializeGlobalResources();this.setDefaultInstanceKey=this.setDefaultInstanceKey.bind(this);this.getAnalyticsInstance=this.getAnalyticsInstance.bind(this);this.load=this.load.bind(this);this.ready=this.ready.bind(this);this.triggerBufferedLoadEvent=this.triggerBufferedLoadEvent.bind(this);this.page=this.page.bind(this);this.track=this.track.bind(this);this.identify=this.identify.bind(this);this.alias=this.alias.bind(this);this.group=this.group.bind(this);this.reset=this.reset.bind(this);this.getAnonymousId=this.getAnonymousId.bind(this);this.setAnonymousId=this.setAnonymousId.bind(this);this.getUserId=this.getUserId.bind(this);this.getUserTraits=this.getUserTraits.bind(this);this.getGroupId=this.getGroupId.bind(this);this.getGroupTraits=this.getGroupTraits.bind(this);this.startSession=this.startSession.bind(this);this.endSession=this.endSession.bind(this);this.getSessionId=this.getSessionId.bind(this);this.setAuthToken=this.setAuthToken.bind(this);this.consent=this.consent.bind(this);this.addCustomIntegration=this.addCustomIntegration.bind(this);this.createSafeAnalyticsInstance();RudderAnalytics.globalSingleton=this;state.autoTrack.pageLifecycle.pageViewId.value=generateUUID();state.autoTrack.pageLifecycle.pageLoadedTimestamp.value=Date.now();// start loading if a load event was buffered or wait for explicit load call\nthis.triggerBufferedLoadEvent();// Assign to global \"rudderanalytics\" object after processing the preload buffer (if any exists)\n// for CDN bundling IIFE exports covers this but for npm ESM and CJS bundling has to be done explicitly\nglobalThis.rudderanalytics=this;}catch(error){dispatchErrorEvent(error);}}/**\n * Create an instance of the current instance that can be used\n * to call a subset of methods of the current instance.\n * It is typically used to expose the analytics instance to the integrations (standard and custom)\n */createSafeAnalyticsInstance(){state.lifecycle.safeAnalyticsInstance.value={page:this.page.bind(this),track:this.track.bind(this),identify:this.identify.bind(this),alias:this.alias.bind(this),group:this.group.bind(this),getAnonymousId:this.getAnonymousId.bind(this),getUserId:this.getUserId.bind(this),getUserTraits:this.getUserTraits.bind(this),getGroupId:this.getGroupId.bind(this),getGroupTraits:this.getGroupTraits.bind(this),getSessionId:this.getSessionId.bind(this)};}static initializeGlobalResources(){// We need to initialize the error handler first to catch any unhandled errors occurring in this module as well\ndefaultErrorHandler.init();// Initialize the storage engines with default options\ndefaultCookieStorage.configure();defaultLocalStorage.configure();defaultSessionStorage.configure();defaultInMemoryStorage.configure();}/**\n * Set instance to use if no specific writeKey is provided in methods\n * automatically for the first created instance\n * TODO: to support multiple analytics instances in the near future\n */setDefaultInstanceKey(writeKey){// IMP: Add try-catch block to handle any unhandled errors\n// similar to other public methods\n// if the implementation of this method goes beyond\n// this simple implementation\nif(isString(writeKey)&&writeKey){this.defaultAnalyticsKey=writeKey;}}/**\n * Retrieve an existing analytics instance\n */getAnalyticsInstance(writeKey){try{let instanceId=writeKey;if(!isString(instanceId)||!instanceId){instanceId=this.defaultAnalyticsKey;}const analyticsInstanceExists=Boolean(this.analyticsInstances[instanceId]);if(!analyticsInstanceExists){this.analyticsInstances[instanceId]=new Analytics();}return this.analyticsInstances[instanceId];}catch(error){dispatchErrorEvent(error);return undefined;}}/**\n * Loads the SDK\n * @param writeKey Source write key\n * @param dataPlaneUrl Data plane URL\n * @param loadOptions Additional options for loading the SDK\n * @returns none\n */load(writeKey,dataPlaneUrl,loadOptions){try{if(this.analyticsInstances[writeKey]){return;}this.setDefaultInstanceKey(writeKey);// Track page loaded lifecycle event if enabled\nthis.trackPageLifecycleEvents(loadOptions);// Get the preloaded events array from global buffer instead of window.rudderanalytics\n// as the constructor must have already pushed the events to the global buffer\nconst preloadedEventsArray=getExposedGlobal(GLOBAL_PRELOAD_BUFFER);// The array will be mutated in the below method\npromotePreloadedConsentEventsToTop(preloadedEventsArray);setExposedGlobal(GLOBAL_PRELOAD_BUFFER,clone(preloadedEventsArray));this.getAnalyticsInstance(writeKey)?.load(writeKey,dataPlaneUrl,getSanitizedValue(loadOptions));}catch(error){dispatchErrorEvent(error);}}/**\n * A function to track page lifecycle events like page loaded and page unloaded\n * @param loadOptions\n * @returns\n */trackPageLifecycleEvents(loadOptions){const{autoTrack,useBeacon}=loadOptions??{};const{enabled:autoTrackEnabled=false,options:autoTrackOptions={},pageLifecycle}=autoTrack??{};const{events=[PageLifecycleEvents.UNLOADED],enabled:pageLifecycleEnabled=autoTrackEnabled,options=autoTrackOptions}=pageLifecycle??{};state.autoTrack.pageLifecycle.enabled.value=pageLifecycleEnabled;// Set the autoTrack enabled state\n// if at least one of the autoTrack options is enabled\n// IMPORTANT: make sure this is done at the end as it depends on the above states\nstate.autoTrack.enabled.value=autoTrackEnabled||pageLifecycleEnabled;if(!pageLifecycleEnabled){return;}this.setupPageUnloadTracking(events,useBeacon,options);}/**\n * Setup page unload tracking if enabled\n * @param events\n * @param useBeacon\n * @param options\n */setupPageUnloadTracking(events,useBeacon,options){if(events.length===0||events.includes(PageLifecycleEvents.UNLOADED)){if(useBeacon===true){onPageLeave(isAccessible=>{if(isAccessible===false&&state.lifecycle.loaded.value){const pageUnloadedTimestamp=Date.now();const timeOnPage=pageUnloadedTimestamp-state.autoTrack.pageLifecycle.pageLoadedTimestamp.value;this.track(PageLifecycleEvents.UNLOADED,{timeOnPage},{...options,originalTimestamp:getFormattedTimestamp(new Date(pageUnloadedTimestamp))});}},true);}else {// log warning if beacon is disabled\nthis.logger.warn(PAGE_UNLOAD_ON_BEACON_DISABLED_WARNING(RSA));}}}/**\n * Trigger load event in buffer queue if exists and stores the\n * remaining preloaded events array in global object\n */triggerBufferedLoadEvent(){const preloadedEventsArray=Array.isArray(globalThis.rudderanalytics)?globalThis.rudderanalytics:[];// Get any load method call that is buffered if any\n// BTW, load method is also removed from the array\n// So, the Analytics object can directly consume the remaining events\nconst loadEvent=getPreloadedLoadEvent(preloadedEventsArray);// Set the final preloaded events array in global object\nsetExposedGlobal(GLOBAL_PRELOAD_BUFFER,clone([...preloadedEventsArray]));// Process load method if present in the buffered requests\nif(loadEvent.length>0){// Remove the event name from the Buffered Event array and keep only arguments\nloadEvent.shift();// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nthis.load.apply(null,loadEvent);}}/**\n * Get ready callback arguments and forward to ready call\n */ready(callback){try{this.getAnalyticsInstance()?.ready(getSanitizedValue(callback));}catch(error){dispatchErrorEvent(error);}}/**\n * Process page arguments and forward to page call\n */// These overloads should be same as AnalyticsPageMethod in @rudderstack/analytics-js-common/types/IRudderAnalytics\npage(category,name,properties,options,callback){try{this.getAnalyticsInstance()?.page(pageArgumentsToCallOptions(getSanitizedValue(category),getSanitizedValue(name),getSanitizedValue(properties),getSanitizedValue(options),getSanitizedValue(callback)));}catch(error){dispatchErrorEvent(error);}}/**\n * Process track arguments and forward to page call\n */// These overloads should be same as AnalyticsTrackMethod in @rudderstack/analytics-js-common/types/IRudderAnalytics\ntrack(event,properties,options,callback){try{this.getAnalyticsInstance()?.track(trackArgumentsToCallOptions(getSanitizedValue(event),getSanitizedValue(properties),getSanitizedValue(options),getSanitizedValue(callback)));}catch(error){dispatchErrorEvent(error);}}/**\n * Process identify arguments and forward to page call\n */// These overloads should be same as AnalyticsIdentifyMethod in @rudderstack/analytics-js-common/types/IRudderAnalytics\nidentify(userId,traits,options,callback){try{this.getAnalyticsInstance()?.identify(identifyArgumentsToCallOptions(getSanitizedValue(userId),getSanitizedValue(traits),getSanitizedValue(options),getSanitizedValue(callback)));}catch(error){dispatchErrorEvent(error);}}/**\n * Process alias arguments and forward to page call\n */// These overloads should be same as AnalyticsAliasMethod in @rudderstack/analytics-js-common/types/IRudderAnalytics\nalias(to,from,options,callback){try{this.getAnalyticsInstance()?.alias(aliasArgumentsToCallOptions(getSanitizedValue(to),getSanitizedValue(from),getSanitizedValue(options),getSanitizedValue(callback)));}catch(error){dispatchErrorEvent(error);}}/**\n * Process group arguments and forward to page call\n */// These overloads should be same as AnalyticsGroupMethod in @rudderstack/analytics-js-common/types/IRudderAnalytics\ngroup(groupId,traits,options,callback){try{this.getAnalyticsInstance()?.group(groupArgumentsToCallOptions(getSanitizedValue(groupId),getSanitizedValue(traits),getSanitizedValue(options),getSanitizedValue(callback)));}catch(error){dispatchErrorEvent(error);}}/**\n * Reset the analytics instance\n * @param options Reset options. Except for anonymousId, initialReferrer, and initialReferringDomain\n * all other values will be reset by default.\n * @example\n * ```ts\n * reset({\n * entries: {\n * anonymousId: true,\n * }\n * });\n * ```\n * @example\n * ```ts\n * reset({\n * entries: {\n * userId: false,\n * sessionInfo: false,\n * }\n * });\n * ```\n * @returns none\n *//**\n * Reset the analytics instance\n * @param resetAnonymousId Reset anonymous ID\n * @returns none\n * @deprecated Use reset(options) instead\n */reset(options){try{this.getAnalyticsInstance()?.reset(getSanitizedValue(options));}catch(error){dispatchErrorEvent(error);}}getAnonymousId(options){try{return this.getAnalyticsInstance()?.getAnonymousId(getSanitizedValue(options));}catch(error){dispatchErrorEvent(error);return undefined;}}setAnonymousId(anonymousId,rudderAmpLinkerParam){try{this.getAnalyticsInstance()?.setAnonymousId(getSanitizedValue(anonymousId),getSanitizedValue(rudderAmpLinkerParam));}catch(error){dispatchErrorEvent(error);}}getUserId(){try{return this.getAnalyticsInstance()?.getUserId();}catch(error){dispatchErrorEvent(error);return undefined;}}getUserTraits(){try{return this.getAnalyticsInstance()?.getUserTraits();}catch(error){dispatchErrorEvent(error);return undefined;}}getGroupId(){try{return this.getAnalyticsInstance()?.getGroupId();}catch(error){dispatchErrorEvent(error);return undefined;}}getGroupTraits(){try{return this.getAnalyticsInstance()?.getGroupTraits();}catch(error){dispatchErrorEvent(error);return undefined;}}startSession(sessionId){try{this.getAnalyticsInstance()?.startSession(getSanitizedValue(sessionId));}catch(error){dispatchErrorEvent(error);}}endSession(){try{this.getAnalyticsInstance()?.endSession();}catch(error){dispatchErrorEvent(error);}}getSessionId(){try{return this.getAnalyticsInstance()?.getSessionId();}catch(error){dispatchErrorEvent(error);return undefined;}}setAuthToken(token){try{this.getAnalyticsInstance()?.setAuthToken(getSanitizedValue(token));}catch(error){dispatchErrorEvent(error);}}consent(options){try{this.getAnalyticsInstance()?.consent(getSanitizedValue(options));}catch(error){dispatchErrorEvent(error);}}addCustomIntegration(destinationId,integration){try{this.getAnalyticsInstance()?.addCustomIntegration(getSanitizedValue(destinationId),getSanitizedValue(integration));}catch(error){dispatchErrorEvent(error);}}}\n\nexport { RudderAnalytics };\n"],"mappings":"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","names":["_isPlaceholder","a","_curry1","fn","f1","_curry2","f2","b","_b","_a","_curry3","f3","c","_c","_has","prop","obj","type","val","_isObject","x","_isInteger","n","_nth","offset","list","idx","_cloneRegExp","pattern","_clone","value","deep","map","_ObjectMap","_isPrimitive","copy","copiedValue","cachedCopy","key","param","hashedKey","bucket","p","i","element","clone","_path","pathAr","mergeWithKey","l","r","result","k","mergeDeepWithKey","lObj","rObj","lVal","rVal","mergeDeepWith","path","pickBy","test","isFunction","isString","isNull","isUndefined","isNullOrUndefined","isBigInt","isDefined","isDefinedAndNotNull","isDefinedNotNullAndNotEmptyString","isTypeOfError","isBoolean","getValueByPath","keyPath","pathParts","hasValueByPath","isObject","isObjectAndNotNull","isObjectLiteralAndNotNull","mergeDeepRightObjectArrays","leftValue","rightValue","mergedArray","index","mergeDeepRight","leftObject","rightObject","isNonEmptyObject","removeUndefinedValues","removeUndefinedAndNullValues","getNormalizedObjectValue","getNormalizedBooleanValue","defVal","deepFreeze","trim","removeLeadingPeriod","tryStringify","retVal","bytesToBase64","bytes","binString","toBase64","pageArgumentsToCallOptions","category","name","properties","options","callback","payload","nameForProperties","categoryForProperties","trackArgumentsToCallOptions","event","identifyArgumentsToCallOptions","userId","traits","aliasArgumentsToCallOptions","to","from","groupArgumentsToCallOptions","groupId","PageLifecycleEvents","API_SUFFIX","CAPABILITIES_MANAGER","CONFIG_MANAGER","EVENT_MANAGER","PLUGINS_MANAGER","USER_SESSION_MANAGER","ERROR_HANDLER","PLUGIN_ENGINE","STORE_MANAGER","READY_API","LOAD_API","HTTP_CLIENT","RSA","ANALYTICS_CORE","random","len","SIZE","HEX$1","IDX$1","BUFFER$1","v4$1","tmp","out","IDX","HEX","BUFFER","v4","num","hasCrypto$1","generateUUID","isSDKRunningInChromeExtension","isIE11","onPageLeave","avoidBfCacheOptimization","pageLeft","isAccessible","handleOnLeave","getFormattedTimestamp","date","getCurrentTimeFormatted","LOG_CONTEXT_SEPARATOR","SCRIPT_ALREADY_EXISTS_ERROR","id","SCRIPT_LOAD_ERROR","url","ev","SCRIPT_LOAD_TIMEOUT_ERROR","timeout","CIRCULAR_REFERENCE_WARNING","context","JSON_STRINGIFY_WARNING","COOKIE_DATA_ENCODING_ERROR","STORAGE_UNAVAILABILITY_ERROR_PREFIX","storageType","JSON_STRINGIFY","BIG_INT_PLACEHOLDER","CIRCULAR_REFERENCE_PLACEHOLDER","getCircularReplacer","excludeNull","excludeKeys","logger","ancestors","stringifyWithoutCircular","err","getReplacer","traverseWithThis","replacer","sanitizedValue","getSanitizedValue","newValue","MANUAL_ERROR_IDENTIFIER","getStacktrace","stack","stacktrace","operaSourceloc","stackString","getMutatedError","issue","ErrorConstructor","newError","dispatchErrorEvent","error","errStack","APP_NAME","APP_VERSION","APP_NAMESPACE","MODULE_TYPE","BUILD_VARIANT","ADBLOCK_PAGE_CATEGORY","ADBLOCK_PAGE_NAME","ADBLOCK_PAGE_PATH","GLOBAL_PRELOAD_BUFFER","CONSENT_TRACK_EVENT_NAME","QUERY_PARAM_TRAIT_PREFIX","QUERY_PARAM_PROPERTY_PREFIX","QUERY_PARAM_ANONYMOUS_ID_KEY","QUERY_PARAM_USER_ID_KEY","QUERY_PARAM_TRACK_EVENT_NAME_KEY","DEFAULT_XHR_TIMEOUT_MS","DEFAULT_COOKIE_MAX_AGE_MS","DEFAULT_SESSION_CUT_OFF_DURATION_MS","DEFAULT_SESSION_TIMEOUT_MS","MIN_SESSION_TIMEOUT_MS","DEFAULT_DATA_PLANE_EVENTS_BUFFER_TIMEOUT_MS","DEBOUNCED_TIMEOUT_MS","createExposedGlobals","analyticsInstanceId","setExposedGlobal","keyName","getExposedGlobal","debounce","func","thisArg","delay","timeoutId","args","getEventDataFromQueryString","params","dataTypeNamePrefix","data","dataKey","retrieveEventsFromQueryString","argumentsArray","eventArgumentToQueryParamMap","queryObject","userTraits","identifyApiArgs","getPreloadedLoadEvent","preloadedEventsArray","loadMethodName","loadEvent","promotePreloadedConsentEventsToTop","consentMethodName","consentEvents","bufferedEvent","nonConsentEvents","retrievePreloadBufferEvents","instance","consumePreloadBufferedEvent","analyticsInstance","methodName","callOptions","DEFAULT_EXT_SRC_LOAD_TIMEOUT_MS","EXTERNAL_SOURCE_LOAD_ORIGIN","createScriptElement","async","onload","onerror","extraAttributes","scriptElement","attributeName","insertScript","newScriptElement","headElements","scriptElements","headElement","htmlElement","jsFileLoader","resolve","reject","timeoutID","ExternalSrcLoader","config","isFireAndForget","t","s","h","v","o","u","e","d","m","y","w","_","g","S","BufferQueue","item","LOG_LEVEL_MAP","DEFAULT_LOG_LEVEL","POST_LOAD_LOG_LEVEL","LOG_MSG_PREFIX","LOG_MSG_PREFIX_STYLE","LOG_MSG_STYLE","Logger","minLogLevel","scope","logProvider","logMethod","scopeVal","logLevel","msg","originalMsg","styledLogArgs","defaultLogger","ErrorType","SUPPORTED_STORAGE_TYPES","DEFAULT_STORAGE_TYPE","SOURCE_CONFIG_RESOLUTION_ERROR","SOURCE_DISABLED_ERROR","XHR_PAYLOAD_PREP_ERROR","PLUGIN_EXT_POINT_MISSING_ERROR","PLUGIN_EXT_POINT_INVALID_ERROR","SOURCE_CONFIG_OPTION_ERROR","COMPONENT_BASE_URL_ERROR","component","UNSUPPORTED_CONSENT_MANAGER_ERROR","selectedConsentManager","consentManagersToPluginNameMap","NON_ERROR_WARNING","errStr","BREADCRUMB_ERROR","HANDLE_ERROR_FAILURE","PLUGIN_NAME_MISSING_ERROR","PLUGIN_ALREADY_EXISTS_ERROR","pluginName","PLUGIN_NOT_FOUND_ERROR","PLUGIN_ENGINE_BUG_ERROR","PLUGIN_DEPS_ERROR","notExistDeps","PLUGIN_INVOCATION_ERROR","extPoint","SOURCE_CONFIG_FETCH_ERROR","WRITE_KEY_VALIDATION_ERROR","writeKey","DATA_PLANE_URL_VALIDATION_ERROR","dataPlaneUrl","INVALID_CALLBACK_FN_ERROR","XHR_DELIVERY_ERROR","prefix","status","statusText","response","XHR_REQUEST_ERROR","XHR_SEND_ERROR","STORE_DATA_SAVE_ERROR","STORE_DATA_FETCH_ERROR","DATA_SERVER_REQUEST_FAIL_ERROR","FAILED_SETTING_COOKIE_FROM_SERVER_ERROR","FAILED_SETTING_COOKIE_FROM_SERVER_GLOBAL_ERROR","STORAGE_TYPE_VALIDATION_WARNING","defaultStorageType","UNSUPPORTED_STORAGE_ENCRYPTION_VERSION_WARNING","selectedStorageEncryptionVersion","storageEncryptionVersionsToPluginNameMap","defaultVersion","STORAGE_DATA_MIGRATION_OVERRIDE_WARNING","storageEncryptionVersion","SERVER_SIDE_COOKIE_FEATURE_OVERRIDE_WARNING","providedCookieDomain","currentCookieDomain","RESERVED_KEYWORD_WARNING","property","parentKeyPath","reservedElements","INVALID_CONTEXT_OBJECT_WARNING","logContext","UNSUPPORTED_BEACON_API_WARNING","TIMEOUT_NOT_NUMBER_WARNING","defaultValue","CUT_OFF_DURATION_NOT_NUMBER_WARNING","cutOffDuration","CUT_OFF_DURATION_LESS_THAN_TIMEOUT_WARNING","TIMEOUT_ZERO_WARNING","TIMEOUT_NOT_RECOMMENDED_WARNING","minTimeout","INVALID_SESSION_ID_WARNING","sessionId","minSessionIdLength","STORAGE_QUOTA_EXCEEDED_WARNING","STORAGE_UNAVAILABLE_WARNING","entry","selectedStorageType","finalStorageType","CALLBACK_INVOKE_ERROR","INVALID_CONFIG_URL_WARNING","configUrl","POLYFILL_SCRIPT_LOAD_ERROR","scriptId","UNSUPPORTED_PRE_CONSENT_STORAGE_STRATEGY","selectedStrategy","defaultStrategy","UNSUPPORTED_PRE_CONSENT_EVENTS_DELIVERY_TYPE","selectedDeliveryType","defaultDeliveryType","DEPRECATED_PLUGIN_WARNING","generateMisconfiguredPluginsWarning","configurationStatus","missingPlugins","shouldAddMissingPlugins","isSinglePlugin","pluginsString","baseWarning","INVALID_POLYFILL_URL_WARNING","customPolyfillUrl","PAGE_UNLOAD_ON_BEACON_DISABLED_WARNING","UNKNOWN_PLUGINS_WARNING","unknownPlugins","UNAVAILABLE_PLUGINS_ERROR","unavailablePlugins","CUSTOM_INTEGRATION_CANNOT_BE_ADDED_ERROR","destinationId","DEFAULT_INTEGRATIONS_CONFIG","CDN_INT_DIR","CDN_PLUGINS_DIR","URL_PATTERN","BUILD_TYPE","SDK_CDN_BASE_URL","CDN_ARCH_VERSION_DIR","DEFAULT_INTEGRATION_SDKS_URL","DEFAULT_PLUGINS_URL","DEFAULT_CONFIG_BE_URL","DEFAULT_STORAGE_ENCRYPTION_VERSION","DEFAULT_DATA_PLANE_EVENTS_TRANSPORT","ConsentManagersToPluginNameMap","StorageEncryptionVersionsToPluginNameMap","DataPlaneEventsTransportToPluginNameMap","DEFAULT_DATA_SERVICE_ENDPOINT","METRICS_SERVICE_ENDPOINT","CUSTOM_DEVICE_MODE_DESTINATION_DISPLAY_NAME","defaultLoadOptions","loadOptionsState","DEFAULT_USER_SESSION_VALUES","DEFAULT_RESET_OPTIONS","SERVER_SIDE_COOKIES_DEBOUNCE_TIME","sessionState","capabilitiesState","reportingState","sourceConfigState","lifecycleState","consentsState","metricsState","getVariantValue","contextState","nativeDestinationsState","eventBufferState","pluginsState","storageState","serverSideCookiesState","dataPlaneEventsState","autoTrackState","defaultStateValues","state","getDefaultExportFromCjs","errorStackParser$1","stackframe$1","stackframe","hasRequiredStackframe","requireStackframe","module","exports$1","root","factory","_isNumber","_capitalize","str","_getter","booleanProps","numericProps","stringProps","arrayProps","objectProps","props","StackFrame","fileName","lineNumber","columnNumber","functionName","argsStartIndex","argsEndIndex","locationString","parts","j","errorStackParser","hasRequiredErrorStackParser","requireErrorStackParser","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","urlLike","regExp","filtered","line","sanitizedLine","location","locationParts","functionNameRegex","matches","lineRE","lines","match","tokens","functionCall","argsRaw","errorStackParserExports","ErrorStackParser","GLOBAL_CODE","normalizeFunctionName","formatStackframe","frame","f","ensureString","createException","errorClass","errorMessage","msgPrefix","accum","normalizeError","maybeError","createBugsnagException","responseTextToJson","responseText","onError","FAILED_REQUEST_ERR_MSG_PREFIX","PLUGINS_LOAD_FAILURE_MESSAGES","INTEGRATIONS_LOAD_FAILURE_MESSAGES","ERROR_MESSAGES_TO_BE_FILTERED","SCRIPT_LOAD_FAILURE_MESSAGES","INTEGRATIONS_ERROR_CATEGORY","SDK_ERROR_CATEGORY","DEFAULT_ERROR_CATEGORY","DEFAULT_XHR_REQUEST_OPTIONS","createXhrRequestOptions","basicAuthHeader","requestOptions","xhrRequest","xhr","xhrReject","xhrError","headerName","HttpClient","errorHandler","isRawResponse","reason","groupingHash","noBtoa","authVal","defaultHttpClient","METRICS_PAYLOAD_VERSION","SDK_FILE_NAME_PREFIXES","DEV_HOSTS","APP_STATE_EXCLUDE_KEYS","NOTIFIER_NAME","SDK_GITHUB_URL","SOURCE_NAME","detectAdBlockers","httpClient","baseUrl","details","getErrInstance","errorType","createNewBreadcrumb","message","getReleaseStage","getHostName","host","getAppStateForMetadata","stateStr","getURLWithoutQueryString","getUserDetails","source","session","lifecycle","autoTrack","getDeviceDetails","locale","userAgent","getBugsnagErrorEvent","exception","errorState","reporting","app","timezone","screen","library","checkIfAdBlockersAreActive","detectionDisposer","checkIfAllowedToBeNotified","errMsg","regex","extractedURL","getDirectoryName","filePath","getTopStackPath","errorOrigin","isSDKError","srcFileName","getErrorCategory","getErrorDeliveryPayload","getErrorGroupingHash","curErrGroupingHash","defaultGroupingHash","normalizedGroupingHash","normalizedErrorInstance","ErrorHandler","__publicField","blockedURL","errorInfo","customMessage","errInstance","normalizedError","customMsgVal","errorMsgPrefix","bsException","isSdkDispatched","bugsnagPayload","errorCategory","breadcrumb","defaultErrorHandler","PluginEngine","plugin","pos","pluginItem","lifeCycleName","dependency","allowMultiple","extensionPointName","noCall","throws","extensionPointNameParts","pluginMethodPath","method","defaultPluginEngine","isNonCloudDestination","destination","isHybridModeDestination","getNonCloudDestinations","destinations","getDestinationUserFriendlyId","displayName","pluginNamesList","deprecatedPluginsList","remotesMap","merge","obj1","obj2","mergedObj","wrapShareModule","remoteFrom","__federation_method_ensure","remoteId","remote","lib","shareScope","__federation_method_wrapDefault","need","__federation_method_getRemote","remoteName","componentName","getFederatedModuleImport","federatedModulesBuildPluginImports","activePluginNames","remotePlugins","lazyLoadImport","getMandatoryPluginsMap","getOptionalPluginsMap","getRemotePluginsMap","pluginsInventory","remotePluginsInventory","PluginsManager","engine","pluginsToLoadFromConfig","pluginGroupsToProcess","addMissingPlugins","group","pluginsToConfigure","pluginsToLoad","availablePlugins","activePlugins","failedPlugins","localPlugin","remotePluginsList","remotePluginKey","remotePluginModule","plugins","pluginKey","COOKIE_STORAGE","LOCAL_STORAGE","SESSION_STORAGE","MEMORY_STORAGE","NO_STORAGE","STORAGE_TEST_COOKIE","STORAGE_TEST_LOCAL_STORAGE","STORAGE_TEST_SESSION_STORAGE","userIdKey","userTraitsKey","anonymousUserIdKey","groupIdKey","groupTraitsKey","pageInitialReferrerKey","pageInitialReferringDomainKey","sessionInfoKey","authTokenKey","COOKIE_KEYS","STORAGE_TEST_TOP_LEVEL_DOMAIN","CLIENT_DATA_STORE_COOKIE","CLIENT_DATA_STORE_LS","CLIENT_DATA_STORE_MEMORY","CLIENT_DATA_STORE_SESSION","USER_SESSION_KEYS","storageClientDataStoreNameMap","encode","decode","parse","pairs","pair","pairItem","set","optionsConfig","cookieString","all","cookieStringValue","get","cookie","legacyGetHostname","href","levelsFunc","last","levels","domain","cname","opts","getDefaultCookieOptions","topDomain","getDefaultLocalStorageOptions","getDefaultSessionStorageOptions","getDefaultInMemoryStorageOptions","InMemoryStorage","defaultInMemoryStorage","store$2","store$1","hasRequiredStore","requireStore","global","isJSON","stringify","deserialize","isArray","dealIncognito","storage","_KEY","_VALUE","inMemoryStorage","Store","ret","dt","arr","_Store","store","argm","storeExports","isStorageQuotaExceeded","matchingNames","matchingCodes","isStorageAvailable","storageInstance","testData","errObj","LocalStorage","defaultLocalStorage","SessionStorage","keys","defaultSessionStorage","CookieStorage","defaultCookieStorage","getStorageEngine","configureCookieStorageEngine","cookieStorageOptions","configureLocalStorageEngine","configureInMemoryStorageEngine","configureSessionStorageEngine","configureStorageEngines","localStorageOptions","inMemoryStorageOptions","sessionStorageOptions","pluginsManager","validKeys","noKeyValidation","noCompoundKey","compoundKey","validKeyName","validKey","decryptedValue","encryptionPluginName","mode","formattedValue","getStorageTypeFromPreConsentIfApplicable","sessionKey","overriddenStorageType","StoreManager","loadOptions","globalStorageType","entriesOptions","postConsentStorageOpts","trulyAnonymousTracking","storageEntries","storageKey","configuredStorageType","storeConfig","storageEngine","isValidSourceConfig","res","isValidStorageType","getTopDomain","urlObj","protocol","getTopDomainUrl","getDataServiceUrl","endpoint","useExactDomain","formattedEndpoint","isWebpageTopLevelDomain","providedDomain","removeTrailingSlashes","getDomain","getReferringDomain","referrer","extractUTMParameters","UTM_PREFIX","sParam","utmParam","getUrlWithoutHash","urlWithoutHash","removeDuplicateSlashes","isValidURL","DEFAULT_PRE_CONSENT_STORAGE_STRATEGY","DEFAULT_PRE_CONSENT_EVENTS_DELIVERY_TYPE","isErrorReportingEnabled","sourceConfig","isMetricsReportingEnabled","getValidPostConsentOptions","validOptions","clonedOptions","isValidConsentsData","getConsentManagerInfo","consentManagementOpts","provider","consentManagerPluginName","getConsentManagementData","allowedConsentIds","deniedConsentIds","initialized","enabled","consentsData","getSDKUrl","scriptTag","scripts","sdkFileNameRegex","script","src","updateReportingState","getServerSideCookiesStateData","useServerSideCookies","dataServiceEndpoint","storageOptsFromLoad","setCookieDomain","sameDomainCookiesOnly","cookieOptions","sscEnabled","finalDataServiceUrl","dataServiceUrl","curHost","dataServiceHost","updateStorageStateFromLoadOptions","configuredMigrationValue","finalMigrationVal","updateConsentsStateFromLoadOptions","preConsentOpts","storageStrategy","StorageStrategies","eventsDeliveryType","deliveryTypes","updateConsentsState","resp","resolutionStrategy","cmpMetadata","updateDataPlaneEventsStateFromLoadOptions","defaultEventsQueuePluginName","eventsQueuePluginName","getSourceConfigURL","lockIntegrationsVersion","lockPluginsVersion","defSearchParams","origin","searchParams","pathname","hash","configUrlInstance","getDestinationsFromConfig","getSDKComponentBaseURL","componentType","pathSuffix","defaultComponentUrl","currentSdkVersion","lockVersion","urlFromLoadOptions","sdkComponentBaseURL","sdkURL","getIntegrationsCDNPath","integrationsUrlFromLoadOptions","getPluginsCDNPath","pluginsUrlFromLoadOptions","ConfigManager","destSDKBaseURL","pluginsSDKBaseURL","integrations","intgCdnUrl","pluginsCDNPath","nativeDestinations","sourceConfigFunc","pRes","getTimezone","getReferrer","getDocument","getCanonicalUrl","tags","canonicalUrl","tag","getUserAgent","getNavigator","navigator","brave","matchedArr","getLanguage","getDefaultPageProperties","getLocation","tabUrl","pageUrl","search","title","getUserAgentClientHint","level","ua","isDatasetAvailable","testElement","legacyJSEngineRequiredPolyfills","isLegacyJSEngine","requiredCapabilitiesList","needsPolyfill","isCapabilityMissing","polyfillIoSdkUrl","POLYFILL_URL","POLYFILL_LOAD_TIMEOUT","POLYFILL_SCRIPT_ID","hasCrypto","hasUAClientHints","hasBeacon","getScreenDetails","screenDetails","CapabilitiesManager","uach","polyfillUrl","isDefaultPolyfillService","polyfillCallbackName","polyfillCallback","CHANNEL","TOP_LEVEL_ELEMENTS","CONTEXT_RESERVED_ELEMENTS","RESERVED_ELEMENTS","isNumber","hasMinLength","minimumLength","isPositiveInteger","MIN_SESSION_ID_LENGTH","isCutOffTimeExceeded","sessionInfo","cutOff","timestamp","hasSessionExpired","generateSessionId","isManualSessionIdValid","getCutOffExpirationTimestamp","generateAutoTrackingSession","generateManualTrackingSession","isStorageTypeValidForStoringData","generateAnonymousId","getFinalResetOptions","entries","rest","getContextPageProperties","pageProps","curPageProps","ctxPageProps","getUpdatedPageProperties","optionsPageProps","checkForReservedElementsInObject","checkForReservedElements","rudderEvent","contextualTraits","updateTopLevelEventElements","getMergedContext","rudderContext","tempContext","processOptions","getEventIntegrationsConfig","integrationsConfig","finalIntgConfig","getEnrichedEvent","commonEventData","processedEvent","RudderEventFactory","enrichedEvent","groupEvent","eventObj","EventManager","eventRepository","userSessionManager","UserSessionManager","storeManager","externalAnonymousIdCookieName","anonymousIdOptions","externalAnonymousId","configuredSessionTrackingInfo","initialSessionInfo","persistedInitialReferrer","persistedInitialReferringDomain","initialReferrer","entryName","storageTypesForMigration","currentStorage","curStore","stores","storesToMigrate","storeName","storageEntry","migratedVal","configuredSessionTimeout","sessionTimeout","cutOffEnabled","cookiesData","encryptedCookieData","cData","encryptedValue","sessionToCookiesMap","cb","sessionKeys","getCurrentCookieValuesFromState","originalCookieValues","clearInProgressFlags","setCookiesClientSide","each","expectedCookieValues","originalCookieVal","currentCookieVal","cookieName","cookieValue","anonymousId","rudderAmpLinkerParam","finalAnonymousId","persistedAnonymousId","manualTrack","userSessionKey","referringDomain","finalSessionInfo","cutOffExpiresAt","token","allOptionalPlugins","defaultOptionalPluginsList","normalizeLoadOptions","loadOptionsFromState","normalizedLoadOpts","DATA_PLANE_QUEUE_EXT_POINT_PREFIX","DESTINATIONS_QUEUE_EXT_POINT_PREFIX","DMT_EXT_POINT_PREFIX","getOverriddenIntegrationOptions","eventIntgConfig","destinationsIntgConfig","intgName","getFinalEvent","finalEvent","overriddenIntgOpts","shouldBufferEventsForPreConsent","safelyInvokeCallback","apiName","EventRepository","bufferEventsBeforeConsent","shouldBufferDpEvents","dest","dpQEvent","dQEvent","dispatchSDKEvent","customEvent","isWriteKeyValid","isDataPlaneUrlValid","Analytics","bufferedEvents","eventToProcess","onLoadedCallbackFn","totalDestinationsToLoad","isBufferedInvocation","previousId","trackOptions","pageOptions","integration","_RudderAnalytics","instanceId","useBeacon","autoTrackEnabled","autoTrackOptions","pageLifecycle","events","pageLifecycleEnabled","pageUnloadedTimestamp","timeOnPage","RudderAnalytics"]}
|