{"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}=err;if(typeof stack==='string'&&stack){return stack;}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){// eslint-disable-next-line no-param-reassign\nerror.stack=`${errStack}\\n${MANUAL_ERROR_IDENTIFIER}`;}}globalThis.dispatchEvent(new ErrorEvent('error',{error,bubbles:true,cancelable:true,composed:true}));};\n\nconst APP_NAME='RudderLabs JavaScript SDK';const APP_VERSION='3.31.1';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;!function(){var i=c;c=void 0;while(void 0!==i){if(i.S.v===i.v)i.S.i=i.i;i=i.o;}}();while(void 0!==h){var n=h;h=void 0;v++;while(void 0!==n){var r=n.u;n.u=void 0;n.f&=-3;if(!(8&n.f)&&w(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();e=++u;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,e=0,c=void 0,d=0;function a(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 l(i,t){this.v=i;this.i=0;this.n=void 0;this.t=void 0;this.l=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;}l.prototype.brand=i;l.prototype.h=function(){return  true;};l.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);});}};l.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);});}}};l.prototype.subscribe=function(i){var t=this;return j(function(){var n=t.value,o=r;r=void 0;try{i(n);}finally{r=o;}},{name:\"sub\"});};l.prototype.valueOf=function(){return this.value;};l.prototype.toString=function(){return this.value+\"\";};l.prototype.toJSON=function(){return this.value;};l.prototype.peek=function(){var i=r;r=void 0;try{return this.value;}finally{r=i;}};Object.defineProperty(l.prototype,\"value\",{get:function(){var i=a(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\");!function(i){if(0!==s&&0===v)if(i.l!==e){i.l=e;c={S:i,v:i.v,i:i.i,o:c};}}(this);this.v=i;this.i++;d++;s++;try{for(var n=this.t;void 0!==n;n=n.x)n.t.N();}finally{t();}}}});function y(i,t){return new l(i,t);}function w(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 _(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 b(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 p(i,t){l.call(this,void 0);this.x=i;this.s=void 0;this.g=d-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;}p.prototype=new l();p.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===d)return  true;this.g=d;this.f|=1;if(this.i>0&&!w(this)){this.f&=-2;return  true;}var i=r;try{_(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;b(this);this.f&=-2;return  true;};p.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);}l.prototype.S.call(this,i);};p.prototype.U=function(i){if(void 0!==this.t){l.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);}}};p.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(p.prototype,\"value\",{get:function(){if(1&this.f)throw new Error(\"Cycle detected\");var i=a(this);this.h();if(void 0!==i)i.i=this.i;if(16&this.f)throw this.v;return this.v;}});function S(i){var n=i.m;i.m=void 0;if(\"function\"==typeof n){s++;var o=r;r=void 0;try{n();}catch(t){i.f&=-2;i.f|=8;m(i);throw t;}finally{r=o;t();}}}function m(i){for(var t=i.s;void 0!==t;t=t.n)t.S.U(t);i.x=void 0;i.s=void 0;S(i);}function x(i){if(r!==this)throw new Error(\"Out-of-order effect\");b(this);r=i;this.f&=-2;if(8&this.f)m(this);t();}function E(i,t){this.x=i;this.m=void 0;this.s=void 0;this.u=void 0;this.f=32;this.name=null==t?void 0:t.name;}E.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.m=t;}finally{i();}};E.prototype.S=function(){if(1&this.f)throw new Error(\"Cycle detected\");this.f|=1;this.f&=-9;S(this);_(this);s++;var i=r;r=this;return x.bind(this,i);};E.prototype.N=function(){if(!(2&this.f)){this.f|=2;this.u=h;h=this;}};E.prototype.d=function(){this.f|=8;if(!(1&this.f))m(this);};E.prototype.dispose=function(){this.d();};function j(i,t){var n=new E(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=y(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:y(DEFAULT_USER_SESSION_VALUES.userId),userTraits:y(DEFAULT_USER_SESSION_VALUES.userTraits),anonymousId:y(DEFAULT_USER_SESSION_VALUES.anonymousId),groupId:y(DEFAULT_USER_SESSION_VALUES.groupId),groupTraits:y(DEFAULT_USER_SESSION_VALUES.groupTraits),initialReferrer:y(DEFAULT_USER_SESSION_VALUES.initialReferrer),initialReferringDomain:y(DEFAULT_USER_SESSION_VALUES.initialReferringDomain),sessionInfo:y(DEFAULT_USER_SESSION_VALUES.sessionInfo),authToken:y(DEFAULT_USER_SESSION_VALUES.authToken)};\n\nconst capabilitiesState={isOnline:y(true),storage:{isLocalStorageAvailable:y(false),isCookieStorageAvailable:y(false),isSessionStorageAvailable:y(false)},isBeaconAvailable:y(false),isLegacyDOM:y(false),isUaCHAvailable:y(false),isCryptoAvailable:y(false),isAdBlockerDetectionInProgress:y(false),isAdBlocked:y(undefined),cspBlockedURLs:y([])};\n\nconst reportingState={isErrorReportingEnabled:y(false),isMetricsReportingEnabled:y(false),breadcrumbs:y([])};\n\nconst sourceConfigState=y(undefined);\n\nconst lifecycleState={activeDataplaneUrl:y(undefined),integrationsCDNPath:y(DEFAULT_INTEGRATION_SDKS_URL),pluginsCDNPath:y(DEFAULT_PLUGINS_URL),sourceConfigUrl:y(undefined),status:y(undefined),initialized:y(false),logLevel:y(POST_LOAD_LOG_LEVEL),loaded:y(false),readyCallbacks:y([]),writeKey:y(undefined),dataPlaneUrl:y(undefined),safeAnalyticsInstance:y(undefined)};\n\nconst consentsState={enabled:y(false),initialized:y(false),data:y({}),activeConsentManagerPluginName:y(undefined),preConsent:y({enabled:false}),postConsent:y({}),resolutionStrategy:y('and'),provider:y(undefined),metadata:y(undefined)};\n\nconst metricsState={retries:y(0),dropped:y(0),sent:y(0),queued:y(0),triggered:y(0),metricsServiceUrl:y(undefined)};\n\nconst getVariantValue=()=>{// For CDN builds, use runtime window.rudderAnalyticsBuildType\nreturn BUILD_VARIANT;};const contextState={app:y({name:APP_NAME,namespace:APP_NAMESPACE,version:APP_VERSION,installType:MODULE_TYPE}),traits:y(null),library:y({name:APP_NAME,version:APP_VERSION,snippetVersion:globalThis.RudderSnippetVersion,variant:getVariantValue()}),userAgent:y(null),device:y(null),network:y(null),os:y({name:'',version:''}),locale:y(null),screen:y({density:0,width:0,height:0,innerWidth:0,innerHeight:0}),'ua-ch':y(undefined),timezone:y(undefined)};\n\nconst nativeDestinationsState={configuredDestinations:y([]),activeDestinations:y([]),loadOnlyIntegrations:y({}),failedDestinations:y([]),loadIntegration:y(true),initializedDestinations:y([]),clientDestinationsReady:y(false),integrationsConfig:y({})};\n\nconst eventBufferState={toBeProcessedArray:y([]),readyCallbacksArray:y([])};\n\nconst pluginsState={ready:y(false),loadedPlugins:y([]),failedPlugins:y([]),pluginsToLoadFromConfig:y([]),activePlugins:y([]),totalPluginsToLoad:y(0)};\n\nconst storageState={encryptionPluginName:y(undefined),migrate:y(false),type:y(undefined),cookie:y(undefined),entries:y({}),trulyAnonymousTracking:y(false)};\n\nconst serverSideCookiesState={isEnabledServerSideCookies:y(false),dataServiceUrl:y(undefined)};\n\nconst dataPlaneEventsState={eventsQueuePluginName:y(undefined),deliveryEnabled:y(true)// Delivery should always happen\n};\n\nconst autoTrackState={enabled:y(false),pageLifecycle:{enabled:y(false),pageViewId:y(undefined),pageLoadedTimestamp:y(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\nconst CHROME_STACK_LINE_RE=/^\\s*at /;const SAFARI_NATIVE_RE=/^(eval@)?(\\[native code])?$/;const LOCATION_RE=/(.+?)(?::(\\d+))?(?::(\\d+))?$/;function extractLocation(urlLike){if(!urlLike?.includes(':')){return [urlLike||undefined,undefined,undefined];}const normalizedUrlLike=urlLike.startsWith('(')&&urlLike.endsWith(')')?urlLike.slice(1,-1):urlLike;const parts=LOCATION_RE.exec(normalizedUrlLike);if(!parts){return [undefined,undefined,undefined];}return [parts[1]||undefined,parts[2]===undefined?undefined:Number(parts[2]),parts[3]===undefined?undefined:Number(parts[3])];}function parseV8Line(line){if(!CHROME_STACK_LINE_RE.test(line)){return null;}if(line.includes('(eval ')){line=line.replaceAll('eval code','eval').replaceAll(/(\\(eval at [^()]*)|(,.*$)/g,'');}const sanitized=line.replace(/^\\s+/,'').replaceAll('(eval code','(').replace(/^.*?\\s+/,'');const parenLoc=/ (\\(.+\\)$)/.exec(sanitized);const withoutLoc=parenLoc?sanitized.replace(parenLoc[0],''):sanitized;const[rawFile,lineNumber,columnNumber]=extractLocation(parenLoc?parenLoc[1]:sanitized);const functionName=parenLoc&&withoutLoc||undefined;const fileName=rawFile==='eval'||rawFile==='<anonymous>'?undefined:rawFile;return {functionName,fileName,lineNumber,columnNumber};}function parseFFSafariLine(line){if(SAFARI_NATIVE_RE.test(line)){return null;}if(line.includes(' > eval')){line=line.replaceAll(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g,':$1');}if(!line.includes('@')&&!line.includes(':')){return {functionName:line,fileName:undefined,lineNumber:undefined,columnNumber:undefined};}const atIndex=line.lastIndexOf('@');const functionName=atIndex>0?line.slice(0,atIndex):undefined;const[fileName,lineNumber,columnNumber]=extractLocation(line.slice(atIndex+1));return {functionName,fileName,lineNumber,columnNumber};}/**\n * Parses an Error object's stack trace into structured frames.\n * Supports V8/Chromium (Chrome, Edge, Node) and SpiderMonkey/WebKit (Firefox, Safari) formats.\n * Throws if the error has no stack property.\n */function parseStackTrace(error){if(!error.stack){throw new Error('Cannot parse given Error object');}const lines=error.stack.split('\\n');if(lines.some(l=>CHROME_STACK_LINE_RE.test(l))){return lines.map(parseV8Line).filter(f=>f!==null);}return lines.map(parseFFSafariLine).filter(f=>f!==null);}\n\nconst GLOBAL_CODE='global code';const normalizeFunctionName=name=>{if(isDefined(name)){return /^global code$/i.test(name)?GLOBAL_CODE:name;}return name;};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=parseStackTrace(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=j(()=>{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(){j(()=>{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\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\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(){j(()=>{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.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\nj(()=>{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&&timestamp>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=>{j(()=>{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\nj(()=>{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;j(()=>{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(){j(()=>{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.nativeDestinations.clientDestinationsReady.value===true){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){n(()=>{state.nativeDestinations.clientDestinationsReady.value=true;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\nj(()=>{const areAllDestinationsReady=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","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","w","e","u","o","d","j","y","_","S","m","E","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","CHROME_STACK_LINE_RE","SAFARI_NATIVE_RE","LOCATION_RE","extractLocation","urlLike","normalizedUrlLike","parts","parseV8Line","line","sanitized","parenLoc","withoutLoc","rawFile","lineNumber","columnNumber","parseFFSafariLine","atIndex","functionName","fileName","parseStackTrace","lines","f","GLOBAL_CODE","normalizeFunctionName","formatStackframe","frame","ensureString","str","createException","errorClass","errorMessage","msgPrefix","stacktrace","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","module","need","__federation_method_getRemote","remoteName","componentName","factory","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","getDefaultExportFromCjs","store$2","store$1","hasRequiredStore","requireStore","exports$1","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","location","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","props","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"]}