{"version":3,"file":"analytics-js-ZWgV_B7w.js","sources":["../../../../../../node_modules/.pnpm/@rudderstack+analytics-js@3.9.0/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(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 _isString(x){return Object.prototype.toString.call(x)==='[object String]';}\n\nfunction _nth(offset,list){var idx=offset<0?list.length+offset:offset;return _isString(list)?list.charAt(idx):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 {*}\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 a) -> {a} -> {a} -> {a}\n * @param {Function} fn\n * @param {Object} l\n * @param {Object} r\n * @return {Object}\n * @see R.mergeDeepWithKey, R.merge, 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 */// eslint-disable-next-line @typescript-eslint/ban-types\nconst 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 * 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 an instance of Error\n * @param obj input value\n * @returns true if the input is an instance of Error and false otherwise\n */const isTypeOfError=obj=>obj instanceof Error;\n\nconst getValueByPath=(obj,keyPath)=>{const pathParts=keyPath.split('.');return path(pathParts,obj);};const hasValueByPath=(obj,path)=>Boolean(getValueByPath(obj,path));/**\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)&&typeof value==='object'&&!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]';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;};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\nconst trim=value=>value.replace(/^\\s+|\\s+$/gm,'');const removeDoubleSpaces=value=>value.replace(/ {2,}/g,' ');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[\"LOADED\"]=\"Page Loaded\";PageLifecycleEvents[\"UNLOADED\"]=\"Page Unloaded\";return PageLifecycleEvents;}({});/**\n * Represents the options parameter in the load API\n */\n\nconst 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='readyApi';const EVENT_REPOSITORY='EventRepository';const EXTERNAL_SRC_LOADER='ExternalSrcLoader';const HTTP_CLIENT='HttpClient';const RS_APP='RudderStackApplication';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\nconst onPageLeave=callback=>{// 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// So, this is a fallback.\nglobalThis.addEventListener('beforeunload',()=>{isAccessible=false;handleOnLeave();});globalThis.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 APP_NAME='RudderLabs JavaScript SDK';const APP_VERSION='3.9.0';const APP_NAMESPACE='com.rudderlabs.javascript';const MODULE_TYPE='npm';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_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)]);}// Set userId and user traits\nif(queryObject.get(QUERY_PARAM_USER_ID_KEY)){argumentsArray.unshift(['identify',queryObject.get(QUERY_PARAM_USER_ID_KEY),getEventDataFromQueryString(queryObject,eventArgumentToQueryParamMap.trait)]);}// 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{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 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)=>`Failed to load 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.`;\n\nconst JSON_STRINGIFY='JSONStringify';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]';}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;}};\n\n/**\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)=>{let finalError=err;if(!isTypeOfError(err)){finalError=new Error(`${issue}: ${stringifyWithoutCircular(err)}`);}else {finalError.message=`${issue}: ${err.message}`;}return finalError;};\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=()=>{globalThis.clearTimeout(timeoutID);reject(new Error(SCRIPT_LOAD_ERROR(id,url)));};// 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)));}});\n\n/**\n * Service to load external resources/files\n */class ExternalSrcLoader{hasErrorHandler=false;constructor(errorHandler,logger,timeout=DEFAULT_EXT_SRC_LOAD_TIMEOUT_MS){this.errorHandler=errorHandler;this.logger=logger;this.timeout=timeout;this.hasErrorHandler=Boolean(this.errorHandler);this.onError=this.onError.bind(this);}/**\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=>{this.onError(err);if(!isFireAndForget){callback();}});}/**\n * Handle errors\n */onError(error){if(this.hasErrorHandler){this.errorHandler?.onError(error,EXTERNAL_SRC_LOADER);}else {throw error;}}}\n\nvar i=Symbol.for(\"preact-signals\");function t(){if(!(s>1)){var i,t=!1;while(void 0!==h){var r=h;h=void 0;f++;while(void 0!==r){var o=r.o;r.o=void 0;r.f&=-3;if(!(8&r.f)&&c(r))try{r.c();}catch(r){if(!t){i=r;t=!0;}}r=o;}}f=0;s--;if(t)throw i;}else s--;}function r(i){if(s>0)return i();s++;try{return i();}finally{t();}}var o=void 0;var h=void 0,s=0,f=0,v=0;function e(i){if(void 0!==o){var t=i.n;if(void 0===t||t.t!==o){t={i:0,S:i,p:o.s,n:void 0,t:o,e:void 0,x:void 0,r:t};if(void 0!==o.s)o.s.n=t;o.s=t;i.n=t;if(32&o.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=o.s;t.n=void 0;o.s.n=t;o.s=t;}return t;}}}function u(i){this.v=i;this.i=0;this.n=void 0;this.t=void 0;}u.prototype.brand=i;u.prototype.h=function(){return !0;};u.prototype.S=function(i){if(this.t!==i&&void 0===i.e){i.x=this.t;if(void 0!==this.t)this.t.e=i;this.t=i;}};u.prototype.U=function(i){if(void 0!==this.t){var t=i.e,r=i.x;if(void 0!==t){t.x=r;i.e=void 0;}if(void 0!==r){r.e=t;i.x=void 0;}if(i===this.t)this.t=r;}};u.prototype.subscribe=function(i){var t=this;return E(function(){var r=t.value,n=o;o=void 0;try{i(r);}finally{o=n;}});};u.prototype.valueOf=function(){return this.value;};u.prototype.toString=function(){return this.value+\"\";};u.prototype.toJSON=function(){return this.value;};u.prototype.peek=function(){var i=o;o=void 0;try{return this.value;}finally{o=i;}};Object.defineProperty(u.prototype,\"value\",{get:function(){var i=e(this);if(void 0!==i)i.i=this.i;return this.v;},set:function(i){if(i!==this.v){if(f>100)throw new Error(\"Cycle detected\");this.v=i;this.i++;v++;s++;try{for(var r=this.t;void 0!==r;r=r.x)r.t.N();}finally{t();}}}});function d(i){return new u(i);}function c(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 !0;return !1;}function a(i){for(var t=i.s;void 0!==t;t=t.n){var r=t.S.n;if(void 0!==r)t.r=r;t.S.n=t;t.i=-1;if(void 0===t.n){i.s=t;break;}}}function l(i){var t=i.s,r=void 0;while(void 0!==t){var o=t.p;if(-1===t.i){t.S.U(t);if(void 0!==o)o.n=t.n;if(void 0!==t.n)t.n.p=o;}else r=t;t.S.n=t.r;if(void 0!==t.r)t.r=void 0;t=o;}i.s=r;}function y(i){u.call(this,void 0);this.x=i;this.s=void 0;this.g=v-1;this.f=4;}(y.prototype=new u()).h=function(){this.f&=-3;if(1&this.f)return !1;if(32==(36&this.f))return !0;this.f&=-5;if(this.g===v)return !0;this.g=v;this.f|=1;if(this.i>0&&!c(this)){this.f&=-2;return !0;}var i=o;try{a(this);o=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++;}o=i;l(this);this.f&=-2;return !0;};y.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);}u.prototype.S.call(this,i);};y.prototype.U=function(i){if(void 0!==this.t){u.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);}}};y.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(y.prototype,\"value\",{get:function(){if(1&this.f)throw new Error(\"Cycle detected\");var i=e(this);this.h();if(void 0!==i)i.i=this.i;if(16&this.f)throw this.v;return this.v;}});function _(i){var r=i.u;i.u=void 0;if(\"function\"==typeof r){s++;var n=o;o=void 0;try{r();}catch(t){i.f&=-2;i.f|=8;g(i);throw t;}finally{o=n;t();}}}function g(i){for(var t=i.s;void 0!==t;t=t.n)t.S.U(t);i.x=void 0;i.s=void 0;_(i);}function p(i){if(o!==this)throw new Error(\"Out-of-order effect\");l(this);o=i;this.f&=-2;if(8&this.f)g(this);t();}function b(i){this.x=i;this.u=void 0;this.s=void 0;this.o=void 0;this.f=32;}b.prototype.c=function(){var i=this.S();try{if(8&this.f)return;if(void 0===this.x)return;var t=this.x();if(\"function\"==typeof t)this.u=t;}finally{i();}};b.prototype.S=function(){if(1&this.f)throw new Error(\"Cycle detected\");this.f|=1;this.f&=-9;_(this);a(this);s++;var i=o;o=this;return p.bind(this,i);};b.prototype.N=function(){if(!(2&this.f)){this.f|=2;this.o=h;h=this;}};b.prototype.d=function(){this.f|=8;if(!(1&this.f))g(this);};function E(i){var t=new b(i);try{t.c();}catch(i){t.d();throw i;}return t.d.bind(t);}\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_OPTION_ERROR=`\"getSourceConfig\" must be a function. Please make sure that it is defined and returns a valid source configuration object.`;const 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 EVENT_OBJECT_GENERATION_ERROR=`Failed to generate the event object.`;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 COMPONENT_BASE_URL_ERROR=component=>`Failed to load the SDK as the base 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 REPORTING_PLUGIN_INIT_FAILURE_ERROR=context=>`${context}${LOG_CONTEXT_SEPARATOR}Failed to initialize the error reporting plugin.`;const NOTIFY_FAILURE_ERROR=context=>`${context}${LOG_CONTEXT_SEPARATOR}Failed to notify 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 STORAGE_UNAVAILABILITY_ERROR_PREFIX=(context,storageType)=>`${context}${LOG_CONTEXT_SEPARATOR}The \"${storageType}\" storage type is `;const SOURCE_CONFIG_FETCH_ERROR=reason=>`Failed to fetch the source config. Reason: ${reason}`;const WRITE_KEY_VALIDATION_ERROR=writeKey=>`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=dataPlaneUrl=>`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 READY_API_CALLBACK_ERROR=context=>`${context}${LOG_CONTEXT_SEPARATOR}The callback is not a function.`;const XHR_DELIVERY_ERROR=(prefix,status,statusText,url)=>`${prefix} with status: ${status}, ${statusText} for URL: ${url}.`;const XHR_REQUEST_ERROR=(prefix,e,url)=>`${prefix} due to timeout or no connection (${e?e.type:''}) 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 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 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 WRITE_KEY_NOT_A_STRING_ERROR=(context,writeKey)=>`${context}${LOG_CONTEXT_SEPARATOR}The write key \"${writeKey}\" is not a string. Please check that the write key is correct and try again.`;const EMPTY_GROUP_CALL_ERROR=context=>`${context}${LOG_CONTEXT_SEPARATOR}The group() method must be called with at least one argument.`;const READY_CALLBACK_INVOKE_ERROR=`Failed to invoke the ready callback`;const API_CALLBACK_INVOKE_ERROR=`API Callback Invocation Failed`;const NATIVE_DEST_PLUGIN_INITIALIZE_ERROR=`NativeDestinationQueuePlugin initialization failed`;const DATAPLANE_PLUGIN_INITIALIZE_ERROR=`XhrQueuePlugin initialization failed`;const DMT_PLUGIN_INITIALIZE_ERROR=`DeviceModeTransformationPlugin initialization failed`;const NATIVE_DEST_PLUGIN_ENQUEUE_ERROR=`NativeDestinationQueuePlugin event enqueue failed`;const DATAPLANE_PLUGIN_ENQUEUE_ERROR=`XhrQueuePlugin event enqueue failed`;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 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 BAD_COOKIES_WARNING=key=>`The cookie data for ${key} seems to be encrypted using SDK versions < v3. The data is dropped. This can potentially stem from using SDK versions < v3 on other sites or web pages that can share cookies with this webpage. We recommend using the same SDK (v3) version everywhere or avoid disabling the storage data migration.`;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.`;\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 DEST_SDK_BASE_URL=`${SDK_CDN_BASE_URL}/${CDN_ARCH_VERSION_DIR}/${BUILD_TYPE}/${CDN_INT_DIR}`;const PLUGINS_BASE_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';\n\nconst defaultLoadOptions={logLevel:'ERROR',configUrl:DEFAULT_CONFIG_BE_URL,loadIntegration:true,sessions:{autoTrack:true,timeout:DEFAULT_SESSION_TIMEOUT_MS},sameSiteCookie:'Lax',polyfillIfRequired:true,integrations:DEFAULT_INTEGRATIONS_CONFIG,useBeacon:false,beaconQueueOptions:{},destinationsQueueOptions:{},queueOptions:{},lockIntegrationsVersion:false,lockPluginsVersion:false,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:{}},sendAdblockPageOptions:{},useServerSideCookies:false};const loadOptionsState=d(clone(defaultLoadOptions));\n\nconst DEFAULT_USER_SESSION_VALUES={userId:'',userTraits:{},anonymousId:'',groupId:'',groupTraits:{},initialReferrer:'',initialReferringDomain:'',sessionInfo:{},authToken:null};const SERVER_SIDE_COOKIES_DEBOUNCE_TIME=10;// milliseconds\n\nconst defaultSessionConfiguration={autoTrack:true,timeout:DEFAULT_SESSION_TIMEOUT_MS};const sessionState={userId:d(DEFAULT_USER_SESSION_VALUES.userId),userTraits:d(DEFAULT_USER_SESSION_VALUES.userTraits),anonymousId:d(DEFAULT_USER_SESSION_VALUES.anonymousId),groupId:d(DEFAULT_USER_SESSION_VALUES.groupId),groupTraits:d(DEFAULT_USER_SESSION_VALUES.groupTraits),initialReferrer:d(DEFAULT_USER_SESSION_VALUES.initialReferrer),initialReferringDomain:d(DEFAULT_USER_SESSION_VALUES.initialReferringDomain),sessionInfo:d(DEFAULT_USER_SESSION_VALUES.sessionInfo),authToken:d(DEFAULT_USER_SESSION_VALUES.authToken)};\n\nconst capabilitiesState={isOnline:d(true),storage:{isLocalStorageAvailable:d(false),isCookieStorageAvailable:d(false),isSessionStorageAvailable:d(false)},isBeaconAvailable:d(false),isLegacyDOM:d(false),isUaCHAvailable:d(false),isCryptoAvailable:d(false),isIE11:d(false),isAdBlocked:d(false)};\n\nconst reportingState={isErrorReportingEnabled:d(false),isMetricsReportingEnabled:d(false),isErrorReportingPluginLoaded:d(false),breadcrumbs:d([])};\n\nconst sourceConfigState=d(undefined);\n\nconst lifecycleState={activeDataplaneUrl:d(undefined),integrationsCDNPath:d(DEST_SDK_BASE_URL),pluginsCDNPath:d(PLUGINS_BASE_URL),sourceConfigUrl:d(undefined),status:d(undefined),initialized:d(false),logLevel:d('ERROR'),loaded:d(false),readyCallbacks:d([]),writeKey:d(undefined),dataPlaneUrl:d(undefined)};\n\nconst consentsState={enabled:d(false),initialized:d(false),data:d({}),activeConsentManagerPluginName:d(undefined),preConsent:d({enabled:false}),postConsent:d({}),resolutionStrategy:d('and'),provider:d(undefined),metadata:d(undefined)};\n\nconst metricsState={retries:d(0),dropped:d(0),sent:d(0),queued:d(0),triggered:d(0),metricsServiceUrl:d(undefined)};\n\nconst contextState={app:d({name:APP_NAME,namespace:APP_NAMESPACE,version:APP_VERSION,installType:MODULE_TYPE}),traits:d(null),library:d({name:APP_NAME,version:APP_VERSION,snippetVersion:globalThis.RudderSnippetVersion}),userAgent:d(''),device:d(null),network:d(null),os:d({name:'',version:''}),locale:d(null),screen:d({density:0,width:0,height:0,innerWidth:0,innerHeight:0}),'ua-ch':d(undefined),timezone:d(undefined)};\n\nconst nativeDestinationsState={configuredDestinations:d([]),activeDestinations:d([]),loadOnlyIntegrations:d({}),failedDestinations:d([]),loadIntegration:d(true),initializedDestinations:d([]),clientDestinationsReady:d(false),integrationsConfig:d({})};\n\nconst eventBufferState={toBeProcessedArray:d([]),readyCallbacksArray:d([])};\n\nconst pluginsState={ready:d(false),loadedPlugins:d([]),failedPlugins:d([]),pluginsToLoadFromConfig:d([]),activePlugins:d([]),totalPluginsToLoad:d(0)};\n\nconst storageState={encryptionPluginName:d(undefined),migrate:d(false),type:d(undefined),cookie:d(undefined),entries:d({}),trulyAnonymousTracking:d(false)};\n\nconst serverSideCookiesState={isEnabledServerSideCookies:d(false),dataServiceUrl:d(undefined)};\n\nconst dataPlaneEventsState={eventsQueuePluginName:d(undefined),deliveryEnabled:d(true)// Delivery should always happen\n};\n\nconst autoTrackState={enabled:d(false),pageLifecycle:{enabled:d(false),visitId:d(undefined),pageLoadedTimestamp:d(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\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(options={},logger){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);}}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);}}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);}}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);}}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({throws:true},defaultLogger);\n\nconst LOAD_ORIGIN='RS_JS_SDK';\n\n/**\n * Utility method to normalise errors\n */const processError=error=>{let errorMessage;try{if(isString(error)){errorMessage=error;}else if(error instanceof Error){errorMessage=error.message;}else if(error instanceof ErrorEvent){errorMessage=error.message;}else {errorMessage=error.message?error.message:stringifyWithoutCircular(error);}}catch(e){errorMessage=`Unknown error: ${e.message}`;}return errorMessage;};const getNormalizedErrorForUnhandledError=error=>{try{if(error instanceof Error||error instanceof ErrorEvent||error instanceof PromiseRejectionEvent&&error.reason){return error;}// TODO: remove this block once all device mode integrations start using the v3 script loader module (TS)\nif(error instanceof Event){const eventTarget=error.target;// Discard all the non-script loading errors\nif(eventTarget&&eventTarget.localName!=='script'){return undefined;}// Discard script errors that are not originated at SDK or from native SDKs\nif(eventTarget?.dataset&&(eventTarget.dataset.loader!==LOAD_ORIGIN||eventTarget.dataset.isnonnativesdk!=='true')){return undefined;}const errorMessage=`Error in loading a third-party script from URL ${eventTarget?.src} with ID ${eventTarget?.id}.`;return Object.create(error,{message:{value:errorMessage}});}return error;}catch(e){return e;}};\n\n/**\n * A service to handle errors\n */class ErrorHandler{// If no logger is passed errors will be thrown as unhandled error\nconstructor(logger,pluginEngine){this.logger=logger;this.pluginEngine=pluginEngine;this.errorBuffer=new BufferQueue();this.attachEffect();}attachEffect(){if(state.reporting.isErrorReportingPluginLoaded.value===true){while(this.errorBuffer.size()>0){const errorToProcess=this.errorBuffer.dequeue();if(errorToProcess){// send it to the plugin\nthis.notifyError(errorToProcess.error,errorToProcess.errorState);}}}}attachErrorListeners(){if('addEventListener'in globalThis){globalThis.addEventListener('error',event=>{this.onError(event,undefined,undefined,undefined,ErrorType.UNHANDLEDEXCEPTION);});globalThis.addEventListener('unhandledrejection',event=>{this.onError(event,undefined,undefined,undefined,ErrorType.UNHANDLEDREJECTION);});}else {this.logger?.debug(`Failed to attach global error listeners.`);}}init(httpClient,externalSrcLoader){this.httpClient=httpClient;// Below lines are only kept for backward compatibility\n// TODO: Remove this in the next major release\nif(!this.pluginEngine){return;}try{const extPoint='errorReporting.init';const errReportingInitVal=this.pluginEngine.invokeSingle(extPoint,state,this.pluginEngine,externalSrcLoader,this.logger,true);if(errReportingInitVal instanceof Promise){errReportingInitVal.then(client=>{this.errReportingClient=client;}).catch(err=>{this.logger?.error(REPORTING_PLUGIN_INIT_FAILURE_ERROR(ERROR_HANDLER),err);});}}catch(err){this.onError(err,ERROR_HANDLER);}}onError(error,context='',customMessage='',shouldAlwaysThrow=false,errorType=ErrorType.HANDLEDEXCEPTION){let normalizedError;let errorMessage;if(errorType===ErrorType.HANDLEDEXCEPTION){errorMessage=processError(error);// If no error message after we normalize, then we swallow/ignore the errors\nif(!errorMessage){return;}errorMessage=removeDoubleSpaces(`${context}${LOG_CONTEXT_SEPARATOR}${customMessage} ${errorMessage}`);normalizedError=new Error(errorMessage);if(isTypeOfError(error)){normalizedError=Object.create(error,{message:{value:errorMessage}});}}else {normalizedError=getNormalizedErrorForUnhandledError(error);}const isErrorReportingEnabled=state.reporting.isErrorReportingEnabled.value;const isErrorReportingPluginLoaded=state.reporting.isErrorReportingPluginLoaded.value;try{if(isErrorReportingEnabled){const errorState={severity:'error',unhandled:errorType!==ErrorType.HANDLEDEXCEPTION,severityReason:{type:errorType}};if(!isErrorReportingPluginLoaded){// buffer the error\nthis.errorBuffer.enqueue({error:normalizedError,errorState});}else if(normalizedError){this.notifyError(normalizedError,errorState);}}}catch(e){this.logger?.error(NOTIFY_FAILURE_ERROR(ERROR_HANDLER),e);}if(errorType===ErrorType.HANDLEDEXCEPTION){if(this.logger){this.logger.error(errorMessage);if(shouldAlwaysThrow){throw normalizedError;}}else {throw normalizedError;}}}/**\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){if(this.pluginEngine){try{this.pluginEngine.invokeSingle('errorReporting.breadcrumb',this.pluginEngine,// deprecated parameter\nthis.errReportingClient,// deprecated parameter\nbreadcrumb,this.logger,state);}catch(err){this.onError(err,ERROR_HANDLER,'errorReporting.breadcrumb');}}}/**\n * Send handled errors to external error monitoring service via a plugin\n *\n * @param {Error} error Error instance from handled error\n */notifyError(error,errorState){if(this.pluginEngine&&this.httpClient){try{this.pluginEngine.invokeSingle('errorReporting.notify',this.pluginEngine,// deprecated parameter\nthis.errReportingClient,// deprecated parameter\nerror,state,this.logger,this.httpClient,errorState);}catch(err){// Not calling onError here as we don't want to go into infinite loop\nthis.logger?.error(NOTIFY_FAILURE_ERROR(ERROR_HANDLER),err);}}}}const defaultErrorHandler=new ErrorHandler(defaultLogger,defaultPluginEngine);\n\n/**\n * A function to filter and return non cloud mode destinations\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\n/**\n * List of plugin names that are loaded as dynamic imports in modern builds\n */const pluginNamesList=['BeaconQueue','Bugsnag',// deprecated\n'CustomConsentManager','DeviceModeDestinations','DeviceModeTransformation','ErrorReporting','ExternalAnonymousId','GoogleLinker','IubendaConsentManager','KetchConsentManager','NativeDestinationQueue','OneTrustConsentManager','StorageEncryption','StorageEncryptionLegacy','StorageMigrator','XhrQueue'];\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 const loadJS = async (url, fn) => {\n const resolvedUrl = typeof url === 'function' ? await url() : url;\n const script = document.createElement('script');\n script.type = 'text/javascript';\n script.onload = fn;\n script.src = resolvedUrl;\n document.getElementsByTagName('head')[0].appendChild(script);\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 ('var' === remote.format) {\n // loading js with script tag\n return new Promise(resolve => {\n const callback = () => {\n if (!remote.inited) {\n remote.lib = window[remoteId];\n remote.lib.init(wrapShareModule(remote.from));\n remote.inited = true;\n }\n resolve(remote.lib);\n };\n return loadJS(remote.url, callback);\n });\n } else 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(remote.from);\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'Bugsnag':return ()=>__federation_method_getRemote(\"rudderAnalyticsRemotePlugins\" , \"./Bugsnag\").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'ErrorReporting':return ()=>__federation_method_getRemote(\"rudderAnalyticsRemotePlugins\" , \"./ErrorReporting\").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(){E(()=>{const isAllPluginsReady=state.plugins.activePlugins.value.length===0||state.plugins.loadedPlugins.value.length+state.plugins.failedPlugins.value.length===state.plugins.totalPluginsToLoad.value;if(isAllPluginsReady){r(()=>{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 [];}// TODO: Uncomment below lines after removing deprecated plugin\n// Filter deprecated plugins\n// pluginsToLoadFromConfig = pluginsToLoadFromConfig.filter(pluginName => {\n// if (deprecatedPluginsList.includes(pluginName)) {\n// this.logger?.warn(DEPRECATED_PLUGIN_WARNING(PLUGINS_MANAGER, pluginName));\n// return false;\n// }\n// return true;\n// });\nconst 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:()=>state.reporting.isErrorReportingEnabled.value,configurationStatusStr:'Error reporting is enabled',supportedPlugins:['ErrorReporting','Bugsnag']// TODO: Remove deprecated plugin- Bugsnag\n},{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.onError(new Error(`Ignoring loading of unknown plugins: ${failedPlugins.join(',')}. Mandatory plugins: ${Object.keys(getMandatoryPluginsMap()).join(',')}. Load option plugins: ${state.plugins.pluginsToLoadFromConfig.value.join(',')}`));}r(()=>{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(){Object.values(pluginsInventory).forEach(localPlugin=>{if(isFunction(localPlugin)&&state.plugins.activePlugins.value.includes(localPlugin().name)){this.register([localPlugin()]);}});}/**\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,remotePluginKey);});})).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);}});}// TODO: Implement reset API instead\nunregisterLocalPlugins(){Object.values(pluginsInventory).forEach(localPlugin=>{try{this.engine.unregister(localPlugin().name);}catch(e){this.onError(e);}});}/**\n * Handle errors\n */onError(error,customMessage){if(this.errorHandler){this.errorHandler.onError(error,PLUGINS_MANAGER,customMessage);}else {throw error;}}}\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');if(isFunction(onError)){onError(error);}else {throw error;}}return undefined;};\n\nconst FAILED_REQUEST_ERR_MSG_PREFIX='The request failed';\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,options});};const xhrError=e=>{reject({error:new Error(XHR_REQUEST_ERROR(FAILED_REQUEST_ERR_MSG_PREFIX,e,options.url)),xhr,options});};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{hasErrorHandler=false;constructor(errorHandler,logger){this.errorHandler=errorHandler;this.logger=logger;this.hasErrorHandler=Boolean(this.errorHandler);this.onError=this.onError.bind(this);}/**\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){this.onError(reason.error??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=>{this.onError(data.error??data);if(!isFireAndForget){callback(undefined,data);}});}/**\n * Handle errors\n */onError(error){if(this.hasErrorHandler){this.errorHandler?.onError(error,HTTP_CLIENT);}else {throw error;}}/**\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(defaultErrorHandler,defaultLogger);\n\nconst COOKIE_STORAGE='cookieStorage';const LOCAL_STORAGE='localStorage';const SESSION_STORAGE='sessionStorage';const MEMORY_STORAGE='memoryStorage';const NO_STORAGE='none';\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_COOKIE='test_rudder_cookie';const STORAGE_TEST_LOCAL_STORAGE='test_rudder_ls';const STORAGE_TEST_SESSION_STORAGE='test_rudder_ss';const 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\nconst COOKIE_DATA_ENCODING_ERROR=`Failed to encode the cookie data.`;\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 detectAdBlockers=(errorHandler,logger)=>{// 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`;const httpClient=new HttpClient(errorHandler,logger);httpClient.setAuthHeader(state.lifecycle.writeKey.value);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)=>{// 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;}});};\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);const isIE11=()=>Boolean(globalThis.navigator.userAgent.match(/Trident.*rv:11\\./));\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{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\nconst isStorageQuotaExceeded=e=>{const matchingNames=['QuotaExceededError','NS_ERROR_DOM_QUOTA_REACHED'];// [everything except Firefox, Firefox]\nconst matchingCodes=[22,1014];// [everything except Firefox, Firefox]\nconst isQuotaExceededError=matchingNames.includes(e.name)||matchingCodes.includes(e.code);return e instanceof DOMException&&isQuotaExceededError;};// 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\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{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 persist values in cookies via Storage interface\n */class CookieStorage{static globalSingleton=null;isSupportAvailable=true;isEnabled=true;length=0;constructor(options={},logger){if(CookieStorage.globalSingleton){// eslint-disable-next-line no-constructor-return\nreturn CookieStorage.globalSingleton;}this.options=getDefaultCookieOptions();this.logger=logger;this.configure(options);CookieStorage.globalSingleton=this;}configure(options){this.options=mergeDeepRight(this.options??{},options);if(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());}}\n\n/**\n * A storage utility to retain values in memory via Storage interface\n */class InMemoryStorage{isEnabled=true;length=0;data={};constructor(options,logger){this.options=getDefaultInMemoryStorageOptions();this.logger=logger;this.configure(options??{});}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){(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-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{switch(type){case LOCAL_STORAGE:return defaultLocalStorage;case SESSION_STORAGE:return defaultSessionStorage;case MEMORY_STORAGE:return defaultInMemoryStorage;case COOKIE_STORAGE:return new CookieStorage({},defaultLogger);default:return defaultInMemoryStorage;}};/**\n * Configure cookie storage singleton\n */const configureCookieStorageEngine=options=>{const cookieStorageOptions=new CookieStorage({},defaultLogger).configure(options);state.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{hasErrorHandler=false;constructor(config,engine,pluginsManager){this.id=config.id;this.name=config.name;this.isEncrypted=config.isEncrypted??false;this.validKeys=config.validKeys??{};this.engine=engine??getStorageEngine(LOCAL_STORAGE);this.noKeyValidation=Object.keys(this.validKeys).length===0;this.noCompoundKey=config.noCompoundKey;this.originalEngine=this.engine;this.errorHandler=config.errorHandler??defaultErrorHandler;this.hasErrorHandler=Boolean(this.errorHandler);this.logger=config.logger??defaultLogger;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 {this.onError(getMutatedError(err,STORE_DATA_SAVE_ERROR(key)));}}}/**\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)){return null;}// storejs that is used in localstorage engine already deserializes json strings but swallows errors\nreturn JSON.parse(decryptedValue);}catch(err){this.onError(new Error(`${STORE_DATA_FETCH_ERROR(key)}: ${err.message}`));// A hack for warning the users of potential partial SDK version migrations\nif(isString(decryptedValue)&&decryptedValue.startsWith('RudderEncrypt:')){this.logger?.warn(BAD_COOKIES_WARNING(key));}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){if(this.hasErrorHandler){this.errorHandler?.onError(error,`Store ${this.id}`);}else {throw error;}}}\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;hasErrorHandler=false;constructor(pluginsManager,errorHandler,logger){this.errorHandler=errorHandler;this.logger=logger;this.hasErrorHandler=Boolean(this.errorHandler);this.pluginsManager=pluginsManager;this.onError=this.onError.bind(this);}/**\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,enabled:true},localStorageOptions:{enabled:true},inMemoryStorageOptions:{enabled:true},sessionStorageOptions:{enabled:true}};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});}});}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]}};});r(()=>{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 * Handle errors\n */onError(error){if(this.hasErrorHandler){this.errorHandler?.onError(error,STORE_MANAGER);}else {throw error;}}}\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 validateWriteKey=writeKey=>{if(!isString(writeKey)||writeKey.trim().length===0){throw new Error(WRITE_KEY_VALIDATION_ERROR(writeKey));}};const validateDataPlaneUrl=dataPlaneUrl=>{if(!isValidURL(dataPlaneUrl)){throw new Error(DATA_PLANE_URL_VALIDATION_ERROR(dataPlaneUrl));}};const validateLoadArgs=(writeKey,dataPlaneUrl)=>{validateWriteKey(writeKey);validateDataPlaneUrl(dataPlaneUrl);};const 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 * A function to filter enabled destinations and map to required properties only\n * @param destinations\n *\n * @returns Destination[]\n */const filterEnabledDestination=destinations=>{const nativeDestinations=[];destinations.forEach(destination=>{if(destination.enabled&&!destination.deleted){nativeDestinations.push({id:destination.id,displayName:destination.destinationDefinition.displayName,config:destination.config,shouldApplyDeviceModeTransformation:destination.shouldApplyDeviceModeTransformation||false,propagateEventsUntransformedOnError:destination.propagateEventsUntransformedOnError||false,userFriendlyId:`${destination.destinationDefinition.displayName.replaceAll(' ','-')}___${destination.id}`});}});return nativeDestinations;};\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\n/**\n * Determines if the SDK is running inside a chrome extension\n * @returns boolean\n */const isSDKRunningInChromeExtension=()=>!!(window.chrome&&window.chrome.runtime&&window.chrome.runtime.id);\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=()=>{const 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);r(()=>{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));}r(()=>{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;}r(()=>{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));}}r(()=>{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\nconst getSDKComponentBaseURL=(componentType,pathSuffix,baseURL,currentVersion,lockVersion,customURL)=>{let sdkComponentURL='';if(customURL){if(!isValidURL(customURL)){throw new Error(COMPONENT_BASE_URL_ERROR(componentType));}return removeTrailingSlashes(customURL);}const sdkURL=getSDKUrl();sdkComponentURL=sdkURL?sdkURL.split('/').slice(0,-1).concat(pathSuffix).join('/'):baseURL;if(lockVersion){sdkComponentURL=sdkComponentURL.replace(`/${CDN_ARCH_VERSION_DIR}/${BUILD_TYPE}/${pathSuffix}`,`/${currentVersion}/${BUILD_TYPE}/${pathSuffix}`);}return sdkComponentURL;};/**\n * A function that determines integration SDK loading path\n * @param currentVersion\n * @param lockIntegrationsVersion\n * @param customIntegrationsCDNPath\n * @returns\n */const getIntegrationsCDNPath=(currentVersion,lockIntegrationsVersion,customIntegrationsCDNPath)=>getSDKComponentBaseURL('integrations',CDN_INT_DIR,DEST_SDK_BASE_URL,currentVersion,lockIntegrationsVersion,customIntegrationsCDNPath);/**\n * A function that determines plugins SDK loading path\n * @param currentVersion Current SDK version\n * @param lockPluginsVersion Flag to lock the plugins version\n * @param customPluginsCDNPath URL to load the plugins from\n * @returns Final plugins CDN path\n */const getPluginsCDNPath=(currentVersion,lockPluginsVersion,customPluginsCDNPath)=>getSDKComponentBaseURL('plugins',CDN_PLUGINS_DIR,PLUGINS_BASE_URL,currentVersion,lockPluginsVersion,customPluginsCDNPath);\n\nclass ConfigManager{hasErrorHandler=false;constructor(httpClient,errorHandler,logger){this.errorHandler=errorHandler;this.logger=logger;this.httpClient=httpClient;this.hasErrorHandler=Boolean(this.errorHandler);this.onError=this.onError.bind(this);this.processConfig=this.processConfig.bind(this);}attachEffects(){E(()=>{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(){this.attachEffects();validateLoadArgs(state.lifecycle.writeKey.value,state.lifecycle.dataPlaneUrl.value);const{logLevel,configUrl,lockIntegrationsVersion,lockPluginsVersion,destSDKBaseURL,pluginsSDKBaseURL,integrations}=state.loadOptions.value;state.lifecycle.activeDataplaneUrl.value=removeTrailingSlashes(state.lifecycle.dataPlaneUrl.value);// determine the path to fetch integration SDK from\nconst intgCdnUrl=getIntegrationsCDNPath(APP_VERSION,lockIntegrationsVersion,destSDKBaseURL);// determine the path to fetch remote plugins from\nconst pluginsCDNPath=getPluginsCDNPath(APP_VERSION,lockPluginsVersion,pluginsSDKBaseURL);updateStorageStateFromLoadOptions(this.logger);updateConsentsStateFromLoadOptions(this.logger);updateDataPlaneEventsStateFromLoadOptions(this.logger);// set application lifecycle state in global state\nr(()=>{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,shouldAlwaysThrow){if(this.hasErrorHandler){this.errorHandler?.onError(error,CONFIG_MANAGER,customMessage,shouldAlwaysThrow);}else {throw error;}}/**\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(!response){this.onError(SOURCE_CONFIG_FETCH_ERROR(details?.error));return;}let res;try{if(isString(response)){res=JSON.parse(response);}else {res=response;}}catch(err){this.onError(err,SOURCE_CONFIG_RESOLUTION_ERROR,true);return;}if(!isValidSourceConfig(res)){this.onError(new Error(SOURCE_CONFIG_RESOLUTION_ERROR),undefined,true);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?filterEnabledDestination(res.source.destinations):[];// set in the state --> source, destination, lifecycle, reporting\nr(()=>{// set source related information in state\nstate.source.value={config:res.source.config,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)){throw new Error(SOURCE_CONFIG_OPTION_ERROR);}// 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=()=>{const timezone=new Date().toString().match(/([A-Z]+[+-]\\d+)/);return timezone&&timezone[1]?timezone[1]:'NA';};\n\n/**\n * Get the referrer URL\n * @returns The referrer URL\n */const getReferrer=()=>document?.referrer||'$direct';/**\n * To get the canonical URL of the page\n * @returns canonical URL\n */const getCanonicalUrl=()=>{const tags=document.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=()=>{if(isUndefined(globalThis.navigator)){return null;}let{userAgent}=globalThis.navigator;const{brave}=globalThis.navigator;// For supporting Brave browser detection,\n// add \"Brave/\" 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=()=>{if(isUndefined(globalThis.navigator)){return null;}return globalThis.navigator.language??globalThis.navigator.browserLanguage;};/**\n * Default page properties\n * @returns Default page properties\n */const getDefaultPageProperties=()=>{const canonicalUrl=getCanonicalUrl();let path=globalThis.location.pathname;const{href:tabUrl}=globalThis.location;let pageUrl=tabUrl;const{search}=globalThis.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}=document;const referrer=getReferrer();return {path,referrer,referring_domain:getReferringDomain(referrer),search,title,url,tab_url:tabUrl};};\n\n// @ts-expect-error we're dynamically filling this value during build\n// eslint-disable-next-line no-constant-condition\nconst POLYFILL_URL=`https://polyfill-fastly.io/v3/polyfill.min.js?version=3.111.0&features=${Object.keys(legacyJSEngineRequiredPolyfills).join('%2C')}`;const POLYFILL_LOAD_TIMEOUT=10*1000;// 10 seconds\nconst POLYFILL_SCRIPT_ID='rudderstackPolyfill';\n\nclass CapabilitiesManager{constructor(errorHandler,logger){this.logger=logger;this.errorHandler=errorHandler;this.externalSrcLoader=new ExternalSrcLoader(this.errorHandler,this.logger);this.onError=this.onError.bind(this);this.onReady=this.onReady.bind(this);}init(){try{this.prepareBrowserCapabilities();this.attachWindowListeners();}catch(err){this.onError(err);}}/**\n * Detect supported capabilities and set values in state\n */// eslint-disable-next-line class-methods-use-this\ndetectBrowserCapabilities(){r(()=>{// Storage related details\nstate.capabilities.storage.isCookieStorageAvailable.value=isStorageAvailable(COOKIE_STORAGE,getStorageEngine(COOKIE_STORAGE),this.logger);state.capabilities.storage.isLocalStorageAvailable.value=isStorageAvailable(LOCAL_STORAGE,undefined,this.logger);state.capabilities.storage.isSessionStorageAvailable.value=isStorageAvailable(SESSION_STORAGE,undefined,this.logger);// Browser feature detection details\nstate.capabilities.isBeaconAvailable.value=hasBeacon();state.capabilities.isUaCHAvailable.value=hasUAClientHints();state.capabilities.isCryptoAvailable.value=hasCrypto();state.capabilities.isIE11.value=isIE11();state.capabilities.isOnline.value=globalThis.navigator.onLine;// Get page context details\nstate.context.userAgent.value=getUserAgent();state.context.locale.value=getLanguage();state.context.screen.value=getScreenDetails();state.context.timezone.value=getTimezone();if(hasUAClientHints()){getUserAgentClientHint(uach=>{state.context['ua-ch'].value=uach;},state.loadOptions.value.uaChTrackLevel);}});// Ad blocker detection\nE(()=>{if(state.loadOptions.value.sendAdblockPage===true&&state.lifecycle.sourceConfigUrl.value!==undefined){detectAdBlockers(this.errorHandler,this.logger);}});}/**\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){if(this.errorHandler){this.errorHandler.onError(error,CAPABILITIES_MANAGER);}else {throw error;}}}\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;/**\n * A function to validate current session and return true/false depending on that\n * @returns boolean\n */const hasSessionExpired=expiresAt=>{const timestamp=Date.now();return Boolean(!expiresAt||timestamp>expiresAt);};/**\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;};/**\n * A function to generate new auto tracking session\n * @param sessionTimeout current timestamp\n * @returns SessionInfo\n */const generateAutoTrackingSession=sessionTimeout=>{const timestamp=Date.now();const timeout=sessionTimeout||DEFAULT_SESSION_TIMEOUT_MS;return {id:timestamp,// set the current timestamp\nexpiresAt:timestamp+timeout,// set the expiry time of the session\ntimeout,sessionStart:undefined,autoTrack:true};};/**\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();\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;}});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)=>{// 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);}};/**\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:{visitId:state.autoTrack.pageLifecycle.visitId.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);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':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);this.onError=this.onError.bind(this);}/**\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);if(rudderEvent){this.eventRepository.enqueue(rudderEvent,event.callback);}else {this.onError(new Error(EVENT_OBJECT_GENERATION_ERROR));}}/**\n * Handles error\n * @param error The error object\n */onError(error,customMessage,shouldAlwaysThrow){if(this.errorHandler){this.errorHandler.onError(error,EVENT_MANAGER,customMessage,shouldAlwaysThrow);}else {throw error;}}}\n\nclass UserSessionManager{constructor(errorHandler,logger,pluginsManager,storeManager,httpClient){this.storeManager=storeManager;this.pluginsManager=pluginsManager;this.logger=logger;this.errorHandler=errorHandler;this.httpClient=httpClient;this.onError=this.onError.bind(this);this.serverSideCookieDebounceFuncs={};}/**\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=this.getSessionInfo();if(this.isPersistenceEnabledForStorageEntry('sessionInfo')){const configuredSessionTrackingInfo=this.getConfiguredSessionTrackingInfo();const initialSessionInfo=sessionInfo??defaultSessionConfiguration;sessionInfo={...initialSessionInfo,...configuredSessionTrackingInfo,// If manualTrack is set to true in the storage, then autoTrack should be false\nautoTrack:configuredSessionTrackingInfo.autoTrack&&initialSessionInfo.manualTrack!==true};// 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 {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(){if(!state.storage.migrate.value){return;}const persistentStoreNames=[CLIENT_DATA_STORE_COOKIE,CLIENT_DATA_STORE_LS,CLIENT_DATA_STORE_SESSION];const stores=[];persistentStoreNames.forEach(storeName=>{const store=this.storeManager?.getStore(storeName);if(store){stores.push(store);}});Object.keys(COOKIE_KEYS).forEach(storageKey=>{const storageEntry=COOKIE_KEYS[storageKey];stores.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{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 key cookie name\n * @param value encrypted cookie value\n */setServerSideCookies(cookiesData,cb,store){try{// encrypt cookies values\nconst encryptedCookieData=this.getEncryptedCookieData(cookiesData,store);if(encryptedCookieData.length>0){// make request to data service to set the cookie from server side\nthis.makeRequestToSetCookie(encryptedCookieData,(res,details)=>{if(details?.xhr?.status===200){cookiesData.forEach(cData=>{const cookieValue=store?.get(cData.name);const before=stringifyWithoutCircular(cData.value,false,[]);const after=stringifyWithoutCircular(cookieValue,false,[]);if(after!==before){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));cookiesData.forEach(each=>{if(cb){cb(each.name,each.value);}});}});}}catch(e){this.onError(e,FAILED_SETTING_COOKIE_FROM_SERVER_GLOBAL_ERROR);cookiesData.forEach(each=>{if(cb){cb(each.name,each.value);}});}}/**\n * A function to sync values in storage\n * @param sessionKey\n * @param value\n */syncValueToStorage(sessionKey,value){const entries=state.storage.entries.value;const storageType=entries[sessionKey]?.type;if(isStorageTypeValidForStoringData(storageType)){const curStore=this.storeManager?.getStore(storageClientDataStoreNameMap[storageType]);const key=entries[sessionKey]?.key;if(value&&(isString(value)||isNonEmptyObject(value))){// if useServerSideCookies load option is set to true\n// set the cookie from server side\nif(state.serverCookies.isEnabledServerSideCookies.value&&storageType===COOKIE_STORAGE){if(this.serverSideCookieDebounceFuncs[sessionKey]){globalThis.clearTimeout(this.serverSideCookieDebounceFuncs[sessionKey]);}this.serverSideCookieDebounceFuncs[sessionKey]=globalThis.setTimeout(()=>{this.setServerSideCookies([{name:key,value}],(cookieName,cookieValue)=>{curStore?.set(cookieName,cookieValue);},curStore);},SERVER_SIDE_COOKIES_DEBOUNCE_TIME);}else {curStore?.set(key,value);}}else {curStore?.remove(key);}}}/**\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=>{E(()=>{this.syncValueToStorage(sessionKey,state.session[sessionKey].value);});});}/**\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(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;// fetch the anonymousId from storage\nif(isStorageTypeValidForStoringData(storage)){let 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]);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 User Id\n * @returns\n */getUserId(){return this.getEntryValue('userId');}/**\n * Fetches User Traits\n * @returns\n */getUserTraits(){return this.getEntryValue('userTraits');}/**\n * Fetches Group Id\n * @returns\n */getGroupId(){return this.getEntryValue('groupId');}/**\n * Fetches Group Traits\n * @returns\n */getGroupTraits(){return this.getEntryValue('groupTraits');}/**\n * Fetches Initial Referrer\n * @returns\n */getInitialReferrer(){return this.getEntryValue('initialReferrer');}/**\n * Fetches Initial Referring domain\n * @returns\n */getInitialReferringDomain(){return this.getEntryValue('initialReferringDomain');}/**\n * Fetches session tracking information from storage\n * @returns\n */getSessionInfo(){return this.getEntryValue('sessionInfo');}/**\n * Fetches auth token from storage\n * @returns\n */getAuthToken(){return this.getEntryValue('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.expiresAt)||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',sessionInfo);}}/**\n * Reset state values\n * @param resetAnonymousId\n * @param noNewSessionStart\n * @returns\n */reset(resetAnonymousId,noNewSessionStart){const{session}=state;const{manualTrack,autoTrack}=session.sessionInfo.value;r(()=>{session.userId.value=DEFAULT_USER_SESSION_VALUES.userId;session.userTraits.value=DEFAULT_USER_SESSION_VALUES.userTraits;session.groupId.value=DEFAULT_USER_SESSION_VALUES.groupId;session.groupTraits.value=DEFAULT_USER_SESSION_VALUES.groupTraits;session.authToken.value=DEFAULT_USER_SESSION_VALUES.authToken;if(resetAnonymousId){// This will generate a new anonymous ID\nthis.setAnonymousId();}if(noNewSessionStart){return;}if(autoTrack){session.sessionInfo.value=DEFAULT_USER_SESSION_VALUES.sessionInfo;this.startOrRenewAutoTracking(session.sessionInfo.value);}else if(manualTrack){this.startManualTrackingInternal();}});}/**\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){if(hasSessionExpired(sessionInfo.expiresAt)){state.session.sessionInfo.value=generateAutoTrackingSession(sessionInfo.timeout);}else {const timestamp=Date.now();const timeout=sessionInfo.timeout;state.session.sessionInfo.value=mergeDeepRight(sessionInfo,{expiresAt:timestamp+timeout// set the expiry time of the session\n});}}/**\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 defaultOptionalPluginsList=['BeaconQueue','Bugsnag','CustomConsentManager','DeviceModeDestinations','DeviceModeTransformation','ErrorReporting','ExternalAnonymousId','GoogleLinker','IubendaConsentManager','KetchConsentManager','NativeDestinationQueue','OneTrustConsentManager','StorageEncryption','StorageEncryptionLegacy','StorageMigrator','XhrQueue'];\n\nconst normalizeLoadOptions=(loadOptionsFromState,loadOptions)=>{// TODO: Maybe add warnings for invalid values\nconst normalizedLoadOpts=clone(loadOptions);if(!isString(normalizedLoadOpts.setCookieDomain)){delete normalizedLoadOpts.setCookieDomain;}const cookieSameSiteValues=['Strict','Lax','None'];if(!cookieSameSiteValues.includes(normalizedLoadOpts.sameSiteCookie)){delete normalizedLoadOpts.sameSiteCookie;}normalizedLoadOpts.secureCookie=normalizedLoadOpts.secureCookie===true;normalizedLoadOpts.sameDomainCookiesOnly=normalizedLoadOpts.sameDomainCookiesOnly===true;const uaChTrackLevels=['none','default','full'];if(!uaChTrackLevels.includes(normalizedLoadOpts.uaChTrackLevel)){delete normalizedLoadOpts.uaChTrackLevel;}if(!isNonEmptyObject(normalizedLoadOpts.integrations)){delete normalizedLoadOpts.integrations;}normalizedLoadOpts.plugins=normalizedLoadOpts.plugins??defaultOptionalPluginsList;normalizedLoadOpts.useGlobalIntegrationsConfigInEvents=normalizedLoadOpts.useGlobalIntegrationsConfigInEvents===true;normalizedLoadOpts.bufferDataPlaneEventsUntilReady=normalizedLoadOpts.bufferDataPlaneEventsUntilReady===true;normalizedLoadOpts.sendAdblockPage=normalizedLoadOpts.sendAdblockPage===true;normalizedLoadOpts.useServerSideCookies=normalizedLoadOpts.useServerSideCookies===true;if(normalizedLoadOpts.dataServiceEndpoint&&typeof normalizedLoadOpts.dataServiceEndpoint!=='string'){delete normalizedLoadOpts.dataServiceEndpoint;}if(!isObjectLiteralAndNotNull(normalizedLoadOpts.sendAdblockPageOptions)){delete normalizedLoadOpts.sendAdblockPageOptions;}if(!isDefined(normalizedLoadOpts.loadIntegration)){delete normalizedLoadOpts.loadIntegration;}else {normalizedLoadOpts.loadIntegration=normalizedLoadOpts.loadIntegration===true;}if(!isObjectLiteralAndNotNull(normalizedLoadOpts.storage)){delete normalizedLoadOpts.storage;}else {normalizedLoadOpts.storage=removeUndefinedAndNullValues(normalizedLoadOpts.storage);normalizedLoadOpts.storage.migrate=normalizedLoadOpts.storage?.migrate===true;}if(!isObjectLiteralAndNotNull(normalizedLoadOpts.beaconQueueOptions)){delete normalizedLoadOpts.beaconQueueOptions;}else {normalizedLoadOpts.beaconQueueOptions=removeUndefinedAndNullValues(normalizedLoadOpts.beaconQueueOptions);}if(!isObjectLiteralAndNotNull(normalizedLoadOpts.destinationsQueueOptions)){delete normalizedLoadOpts.destinationsQueueOptions;}else {normalizedLoadOpts.destinationsQueueOptions=removeUndefinedAndNullValues(normalizedLoadOpts.destinationsQueueOptions);}if(!isObjectLiteralAndNotNull(normalizedLoadOpts.queueOptions)){delete normalizedLoadOpts.queueOptions;}else {normalizedLoadOpts.queueOptions=removeUndefinedAndNullValues(normalizedLoadOpts.queueOptions);}normalizedLoadOpts.lockIntegrationsVersion=normalizedLoadOpts.lockIntegrationsVersion===true;normalizedLoadOpts.lockPluginsVersion=normalizedLoadOpts.lockPluginsVersion===true;if(!isNumber(normalizedLoadOpts.dataPlaneEventsBufferTimeout)){delete normalizedLoadOpts.dataPlaneEventsBufferTimeout;}if(!isObjectLiteralAndNotNull(normalizedLoadOpts.storage?.cookie)){delete normalizedLoadOpts.storage?.cookie;}else {normalizedLoadOpts.storage.cookie=removeUndefinedAndNullValues(normalizedLoadOpts.storage?.cookie);}if(!isObjectLiteralAndNotNull(normalizedLoadOpts.preConsent)){delete normalizedLoadOpts.preConsent;}else {normalizedLoadOpts.preConsent=removeUndefinedAndNullValues(normalizedLoadOpts.preConsent);}const mergedLoadOptions=mergeDeepRight(loadOptionsFromState,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'&&(state.consents.preConsent.value.storage?.strategy==='session'||state.consents.preConsent.value.storage?.strategy==='none');\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,errorHandler,logger){this.pluginsManager=pluginsManager;this.errorHandler=errorHandler;this.logger=logger;this.httpClient=new HttpClient(errorHandler,logger);this.storeManager=storeManager;this.onError=this.onError.bind(this);}/**\n * Initializes the event repository\n */init(){try{this.dataplaneEventsQueue=this.pluginsManager.invokeSingle(`${DATA_PLANE_QUEUE_EXT_POINT_PREFIX}.init`,state,this.httpClient,this.storeManager,this.errorHandler,this.logger);}catch(e){this.onError(e,DATAPLANE_PLUGIN_INITIALIZE_ERROR);}try{this.dmtEventsQueue=this.pluginsManager.invokeSingle(`${DMT_EXT_POINT_PREFIX}.init`,state,this.pluginsManager,this.httpClient,this.storeManager,this.errorHandler,this.logger);}catch(e){this.onError(e,DMT_PLUGIN_INITIALIZE_ERROR);}try{this.destinationsEventsQueue=this.pluginsManager.invokeSingle(`${DESTINATIONS_QUEUE_EXT_POINT_PREFIX}.init`,state,this.pluginsManager,this.storeManager,this.dmtEventsQueue,this.errorHandler,this.logger);}catch(e){this.onError(e,NATIVE_DEST_PLUGIN_INITIALIZE_ERROR);}// Start the queue once the client destinations are ready\nE(()=>{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;E(()=>{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){let dpQEvent;try{dpQEvent=getFinalEvent(event,state);this.pluginsManager.invokeSingle(`${DATA_PLANE_QUEUE_EXT_POINT_PREFIX}.enqueue`,state,this.dataplaneEventsQueue,dpQEvent,this.errorHandler,this.logger);}catch(e){this.onError(e,DATAPLANE_PLUGIN_ENQUEUE_ERROR);}try{const dQEvent=clone(event);this.pluginsManager.invokeSingle(`${DESTINATIONS_QUEUE_EXT_POINT_PREFIX}.enqueue`,state,this.destinationsEventsQueue,dQEvent,this.errorHandler,this.logger);}catch(e){this.onError(e,NATIVE_DEST_PLUGIN_ENQUEUE_ERROR);}// Invoke the callback if it exists\ntry{// Using the event sent to the data plane queue here\n// to ensure the mutated (if any) event is sent to the callback\ncallback?.(dpQEvent);}catch(error){this.onError(error,API_CALLBACK_INVOKE_ERROR);}}/**\n * Handles error\n * @param error The error object\n * @param customMessage a message\n * @param shouldAlwaysThrow if it should throw or use logger\n */onError(error,customMessage,shouldAlwaysThrow){if(this.errorHandler){this.errorHandler.onError(error,EVENT_REPOSITORY,customMessage,shouldAlwaysThrow);}else {throw error;}}}\n\nconst dispatchSDKEvent=event=>{const customEvent=new CustomEvent(event,{detail:{analyticsInstance:globalThis.rudderanalytics},bubbles:true,cancelable:true,composed:true});globalThis.document.dispatchEvent(customEvent);};\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.errorHandler,this.logger);this.capabilitiesManager=new CapabilitiesManager(this.errorHandler,this.logger);this.httpClient=defaultHttpClient;}/**\n * Start application lifecycle if not already started\n */load(writeKey,dataPlaneUrl,loadOptions={}){if(state.lifecycle.status.value){return;}let clonedDataPlaneUrl=clone(dataPlaneUrl);let clonedLoadOptions=clone(loadOptions);// dataPlaneUrl is not provided\nif(isObjectAndNotNull(dataPlaneUrl)){clonedLoadOptions=dataPlaneUrl;clonedDataPlaneUrl=undefined;}// Set initial state values\nr(()=>{state.lifecycle.writeKey.value=writeKey;state.lifecycle.dataPlaneUrl.value=clonedDataPlaneUrl;state.loadOptions.value=normalizeLoadOptions(state.loadOptions.value,clonedLoadOptions);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(){E(()=>{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(getMutatedError(err,issue),ANALYTICS_CORE);}});}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.errorHandler,this.logger,this.pluginsManager,this.storeManager,this.httpClient);this.eventRepository=new EventRepository(this.pluginsManager,this.storeManager,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(){this.errorHandler.init(this.httpClient,this.externalSrcLoader);// 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();// 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\n// Execute onLoaded callback if provided in load options\nif(isFunction(state.loadOptions.value.onLoaded)){state.loadOptions.value.onLoaded(globalThis.rudderanalytics);}// Set lifecycle state\nr(()=>{state.lifecycle.loaded.value=true;state.lifecycle.status.value='loaded';});this.initialized=true;// 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=>{try{callback();}catch(err){this.errorHandler.onError(err,ANALYTICS_CORE,READY_CALLBACK_INVOKE_ERROR);}});// 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(state.nativeDestinations.clientDestinationsReady.value){return;}// Set in state the desired activeDestinations to inject in DOM\nthis.pluginsManager?.invokeSingle('nativeDestinations.setActiveDestinations',state,this.pluginsManager,this.errorHandler,this.logger);const totalDestinationsToLoad=state.nativeDestinations.activeDestinations.value.length;if(totalDestinationsToLoad===0){state.lifecycle.status.value='destinationsReady';return;}// Start loading native integration scripts and create instances\nstate.lifecycle.status.value='destinationsLoading';this.pluginsManager?.invokeSingle('nativeDestinations.load',state,this.externalSrcLoader,this.errorHandler,this.logger);// Progress to next lifecycle phase if all native destinations are initialized or failed\nE(()=>{const areAllDestinationsReady=totalDestinationsToLoad===0||state.nativeDestinations.initializedDestinations.value.length+state.nativeDestinations.failedDestinations.value.length===totalDestinationsToLoad;if(areAllDestinationsReady){r(()=>{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'){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(READY_API_CALLBACK_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'){try{callback();}catch(err){this.errorHandler.onError(err,ANALYTICS_CORE,READY_CALLBACK_INVOKE_ERROR);}}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`);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.userSessionManager?.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(resetAnonymousId,isBufferedInvocation=false){const type='reset';if(!state.lifecycle.loaded.value){state.eventBuffer.toBeProcessedArray.value=[...state.eventBuffer.toBeProcessedArray.value,[type,resetAnonymousId]];return;}this.errorHandler.leaveBreadcrumb(`New ${type} invocation, resetAnonymousId: ${resetAnonymousId}`);this.userSessionManager?.reset(resetAnonymousId);}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`);r(()=>{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.initialized.value;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);}// 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{static globalSingleton=null;analyticsInstances={};defaultAnalyticsKey='';logger=(()=>defaultLogger)();// Singleton with constructor bind methods\nconstructor(){if(RudderAnalytics.globalSingleton){// START-NO-SONAR-SCAN\n// eslint-disable-next-line no-constructor-return\nreturn RudderAnalytics.globalSingleton;// END-NO-SONAR-SCAN\n}defaultErrorHandler.attachErrorListeners();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);RudderAnalytics.globalSingleton=this;state.autoTrack.pageLifecycle.visitId.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;}/**\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){if(writeKey){this.defaultAnalyticsKey=writeKey;}}/**\n * Retrieve an existing analytics instance\n */getAnalyticsInstance(writeKey){const instanceId=writeKey??this.defaultAnalyticsKey;const analyticsInstanceExists=Boolean(this.analyticsInstances[instanceId]);if(!analyticsInstanceExists){this.analyticsInstances[instanceId]=new Analytics();}return this.analyticsInstances[instanceId];}/**\n * Create new analytics instance and trigger application lifecycle start\n */load(writeKey,dataPlaneUrl,loadOptions){if(!isString(writeKey)){this.logger.error(WRITE_KEY_NOT_A_STRING_ERROR(RS_APP,writeKey));return;}if(this.analyticsInstances[writeKey]){return;}this.setDefaultInstanceKey(writeKey);const preloadedEventsArray=this.getPreloadedEvents();// Track page loaded lifecycle event if enabled\nthis.trackPageLifecycleEvents(preloadedEventsArray,loadOptions);// The array will be mutated in the below method\npromotePreloadedConsentEventsToTop(preloadedEventsArray);setExposedGlobal(GLOBAL_PRELOAD_BUFFER,clone(preloadedEventsArray));this.analyticsInstances[writeKey]=new Analytics();this.getAnalyticsInstance(writeKey).load(writeKey,dataPlaneUrl,loadOptions);}/**\n * A function to get preloaded events array from global object\n * @returns preloaded events array\n */// eslint-disable-next-line class-methods-use-this\ngetPreloadedEvents(){return Array.isArray(globalThis.rudderanalytics)?globalThis.rudderanalytics:[];}/**\n * A function to track page lifecycle events like page loaded and page unloaded\n * @param preloadedEventsArray\n * @param loadOptions\n * @returns\n */trackPageLifecycleEvents(preloadedEventsArray,loadOptions){const{autoTrack,useBeacon}=loadOptions??{};const{enabled:autoTrackEnabled=false,options:autoTrackOptions={},pageLifecycle}=autoTrack??{};const{events=[PageLifecycleEvents.LOADED,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.trackPageLoadedEvent(events,options,preloadedEventsArray);this.setupPageUnloadTracking(events,useBeacon,options);}/**\n * Buffer the page loaded event in the preloaded events array\n * @param events\n * @param options\n * @param preloadedEventsArray\n */// eslint-disable-next-line class-methods-use-this\ntrackPageLoadedEvent(events,options,preloadedEventsArray){if(events.length===0||events.includes(PageLifecycleEvents.LOADED)){preloadedEventsArray.unshift(['track',PageLifecycleEvents.LOADED,{},{...options,originalTimestamp:getFormattedTimestamp(new Date(state.autoTrack.pageLifecycle.pageLoadedTimestamp.value))}]);}}/**\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 visitDuration=pageUnloadedTimestamp-state.autoTrack.pageLifecycle.pageLoadedTimestamp.value;this.track(PageLifecycleEvents.UNLOADED,{visitDuration},{...options,originalTimestamp:getFormattedTimestamp(new Date(pageUnloadedTimestamp))});}});}else {// throw warning if beacon is disabled\nthis.logger.warn(PAGE_UNLOAD_ON_BEACON_DISABLED_WARNING(RS_APP));}}}/**\n * Trigger load event in buffer queue if exists and stores the\n * remaining preloaded events array in global object\n */triggerBufferedLoadEvent(){const preloadedEventsArray=this.getPreloadedEvents();// 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){this.getAnalyticsInstance().ready(callback);}/**\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){this.getAnalyticsInstance().page(pageArgumentsToCallOptions(category,name,properties,options,callback));}/**\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){this.getAnalyticsInstance().track(trackArgumentsToCallOptions(event,properties,options,callback));}/**\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){this.getAnalyticsInstance().identify(identifyArgumentsToCallOptions(userId,traits,options,callback));}/**\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){this.getAnalyticsInstance().alias(aliasArgumentsToCallOptions(to,from,options,callback));}/**\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){if(arguments.length===0){this.logger.error(EMPTY_GROUP_CALL_ERROR(RS_APP));return;}this.getAnalyticsInstance().group(groupArgumentsToCallOptions(groupId,traits,options,callback));}reset(resetAnonymousId){this.getAnalyticsInstance().reset(resetAnonymousId);}getAnonymousId(options){return this.getAnalyticsInstance().getAnonymousId(options);}setAnonymousId(anonymousId,rudderAmpLinkerParam){this.getAnalyticsInstance().setAnonymousId(anonymousId,rudderAmpLinkerParam);}getUserId(){return this.getAnalyticsInstance().getUserId();}getUserTraits(){return this.getAnalyticsInstance().getUserTraits();}getGroupId(){return this.getAnalyticsInstance().getGroupId();}getGroupTraits(){return this.getAnalyticsInstance().getGroupTraits();}startSession(sessionId){return this.getAnalyticsInstance().startSession(sessionId);}endSession(){return this.getAnalyticsInstance().endSession();}getSessionId(){return this.getAnalyticsInstance().getSessionId();}setAuthToken(token){return this.getAnalyticsInstance().setAuthToken(token);}consent(options){return this.getAnalyticsInstance().consent(options);}}\n\nexport { RudderAnalytics };\n"],"names":["_isPlaceholder","a","_curry1","fn","f1","_curry2","f2","b","_b","_a","_curry3","f3","c","_c","_has","prop","obj","type","val","_isObject","x","_isInteger","n","_isString","_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","isDefined","isDefinedAndNotNull","isDefinedNotNullAndNotEmptyString","isTypeOfError","getValueByPath","keyPath","pathParts","hasValueByPath","isObjectAndNotNull","isObjectLiteralAndNotNull","mergeDeepRightObjectArrays","leftValue","rightValue","mergedArray","index","mergeDeepRight","leftObject","rightObject","isNonEmptyObject","removeUndefinedValues","removeUndefinedAndNullValues","trim","removeDoubleSpaces","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","CAPABILITIES_MANAGER","CONFIG_MANAGER","EVENT_MANAGER","PLUGINS_MANAGER","USER_SESSION_MANAGER","ERROR_HANDLER","PLUGIN_ENGINE","STORE_MANAGER","READY_API","EVENT_REPOSITORY","EXTERNAL_SRC_LOADER","HTTP_CLIENT","RS_APP","ANALYTICS_CORE","random","len","SIZE","HEX$1","IDX$1","BUFFER$1","v4$1","tmp","out","IDX","HEX","BUFFER","v4","num","hasCrypto$1","generateUUID","onPageLeave","pageLeft","isAccessible","handleOnLeave","getFormattedTimestamp","date","getCurrentTimeFormatted","APP_NAME","APP_VERSION","APP_NAMESPACE","MODULE_TYPE","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_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","getPreloadedLoadEvent","preloadedEventsArray","loadMethodName","loadEvent","promotePreloadedConsentEventsToTop","consentMethodName","consentEvents","bufferedEvent","nonConsentEvents","retrievePreloadBufferEvents","instance","consumePreloadBufferedEvent","analyticsInstance","methodName","callOptions","DEFAULT_EXT_SRC_LOAD_TIMEOUT_MS","LOG_CONTEXT_SEPARATOR","SCRIPT_ALREADY_EXISTS_ERROR","id","SCRIPT_LOAD_ERROR","url","SCRIPT_LOAD_TIMEOUT_ERROR","timeout","CIRCULAR_REFERENCE_WARNING","context","JSON_STRINGIFY_WARNING","JSON_STRINGIFY","getCircularReplacer","excludeNull","excludeKeys","logger","ancestors","stringifyWithoutCircular","err","getMutatedError","issue","finalError","EXTERNAL_SOURCE_LOAD_ORIGIN","createScriptElement","async","onload","onerror","extraAttributes","scriptElement","attributeName","insertScript","newScriptElement","headElements","scriptElements","_d","headElement","htmlElement","jsFileLoader","resolve","reject","timeoutID","ExternalSrcLoader","errorHandler","__publicField","config","isFireAndForget","error","t","s","h","f","o","v","e","u","E","d","y","_","g","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_OPTION_ERROR","SOURCE_CONFIG_RESOLUTION_ERROR","SOURCE_DISABLED_ERROR","XHR_PAYLOAD_PREP_ERROR","EVENT_OBJECT_GENERATION_ERROR","PLUGIN_EXT_POINT_MISSING_ERROR","PLUGIN_EXT_POINT_INVALID_ERROR","COMPONENT_BASE_URL_ERROR","component","UNSUPPORTED_CONSENT_MANAGER_ERROR","selectedConsentManager","consentManagersToPluginNameMap","REPORTING_PLUGIN_INIT_FAILURE_ERROR","NOTIFY_FAILURE_ERROR","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","STORAGE_UNAVAILABILITY_ERROR_PREFIX","storageType","SOURCE_CONFIG_FETCH_ERROR","reason","WRITE_KEY_VALIDATION_ERROR","writeKey","DATA_PLANE_URL_VALIDATION_ERROR","dataPlaneUrl","READY_API_CALLBACK_ERROR","XHR_DELIVERY_ERROR","prefix","status","statusText","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","UNSUPPORTED_BEACON_API_WARNING","TIMEOUT_NOT_NUMBER_WARNING","defaultValue","TIMEOUT_ZERO_WARNING","TIMEOUT_NOT_RECOMMENDED_WARNING","minTimeout","INVALID_SESSION_ID_WARNING","sessionId","minSessionIdLength","STORAGE_QUOTA_EXCEEDED_WARNING","STORAGE_UNAVAILABLE_WARNING","entry","selectedStorageType","finalStorageType","WRITE_KEY_NOT_A_STRING_ERROR","EMPTY_GROUP_CALL_ERROR","READY_CALLBACK_INVOKE_ERROR","API_CALLBACK_INVOKE_ERROR","NATIVE_DEST_PLUGIN_INITIALIZE_ERROR","DATAPLANE_PLUGIN_INITIALIZE_ERROR","DMT_PLUGIN_INITIALIZE_ERROR","NATIVE_DEST_PLUGIN_ENQUEUE_ERROR","DATAPLANE_PLUGIN_ENQUEUE_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","generateMisconfiguredPluginsWarning","configurationStatus","missingPlugins","shouldAddMissingPlugins","isSinglePlugin","pluginsString","baseWarning","INVALID_POLYFILL_URL_WARNING","customPolyfillUrl","BAD_COOKIES_WARNING","PAGE_UNLOAD_ON_BEACON_DISABLED_WARNING","DEFAULT_INTEGRATIONS_CONFIG","CDN_INT_DIR","CDN_PLUGINS_DIR","URL_PATTERN","BUILD_TYPE","SDK_CDN_BASE_URL","CDN_ARCH_VERSION_DIR","DEST_SDK_BASE_URL","PLUGINS_BASE_URL","DEFAULT_CONFIG_BE_URL","DEFAULT_STORAGE_ENCRYPTION_VERSION","DEFAULT_DATA_PLANE_EVENTS_TRANSPORT","ConsentManagersToPluginNameMap","StorageEncryptionVersionsToPluginNameMap","DataPlaneEventsTransportToPluginNameMap","DEFAULT_DATA_SERVICE_ENDPOINT","METRICS_SERVICE_ENDPOINT","defaultLoadOptions","loadOptionsState","DEFAULT_USER_SESSION_VALUES","SERVER_SIDE_COOKIES_DEBOUNCE_TIME","defaultSessionConfiguration","sessionState","capabilitiesState","reportingState","sourceConfigState","lifecycleState","consentsState","metricsState","contextState","nativeDestinationsState","eventBufferState","pluginsState","storageState","serverSideCookiesState","dataPlaneEventsState","autoTrackState","defaultStateValues","state","PluginEngine","plugin","errorMessage","pos","pluginItem","lifeCycleName","dependency","allowMultiple","extensionPointName","noCall","throws","extensionPointNameParts","pluginMethodPath","method","defaultPluginEngine","LOAD_ORIGIN","processError","getNormalizedErrorForUnhandledError","eventTarget","ErrorHandler","pluginEngine","errorToProcess","httpClient","externalSrcLoader","errReportingInitVal","client","customMessage","shouldAlwaysThrow","errorType","normalizedError","isErrorReportingEnabled","isErrorReportingPluginLoaded","errorState","breadcrumb","defaultErrorHandler","isNonCloudDestination","destination","isHybridModeDestination","getNonCloudDestinations","destinations","pluginNamesList","remotesMap","loadJS","resolvedUrl","script","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","responseTextToJson","responseText","onError","FAILED_REQUEST_ERR_MSG_PREFIX","DEFAULT_XHR_REQUEST_OPTIONS","createXhrRequestOptions","basicAuthHeader","requestOptions","xhrRequest","xhr","xhrReject","xhrError","headerName","HttpClient","isRawResponse","noBtoa","authVal","defaultHttpClient","COOKIE_STORAGE","LOCAL_STORAGE","SESSION_STORAGE","MEMORY_STORAGE","NO_STORAGE","userIdKey","userTraitsKey","anonymousUserIdKey","groupIdKey","groupTraitsKey","pageInitialReferrerKey","pageInitialReferringDomainKey","sessionInfoKey","authTokenKey","COOKIE_KEYS","STORAGE_TEST_COOKIE","STORAGE_TEST_LOCAL_STORAGE","STORAGE_TEST_SESSION_STORAGE","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","COOKIE_DATA_ENCODING_ERROR","encode","decode","parse","str","pairs","pair","pairItem","set","optionsConfig","cookieString","all","cookieStringValue","get","cookie","detectAdBlockers","baseUrl","details","hasCrypto","hasUAClientHints","hasBeacon","isIE11","getUserAgentClientHint","level","ua","isDatasetAvailable","testElement","legacyJSEngineRequiredPolyfills","isLegacyJSEngine","requiredCapabilitiesList","needsPolyfill","isCapabilityMissing","getScreenDetails","screenDetails","isStorageQuotaExceeded","matchingNames","matchingCodes","isQuotaExceededError","isStorageAvailable","storageInstance","storage","testData","msgPrefix","errObj","legacyGetHostname","href","levelsFunc","host","parts","last","levels","domain","cname","opts","getDefaultCookieOptions","topDomain","getDefaultLocalStorageOptions","getDefaultSessionStorageOptions","getDefaultInMemoryStorageOptions","_CookieStorage","CookieStorage","InMemoryStorage","defaultInMemoryStorage","getDefaultExportFromCjs","store$2","store$1","hasRequiredStore","requireStore","exports","global","isJSON","stringify","deserialize","isArray","dealIncognito","_KEY","_VALUE","inMemoryStorage","Store","ret","dt","arr","_Store","store","argm","storeExports","LocalStorage","defaultLocalStorage","SessionStorage","keys","defaultSessionStorage","getStorageEngine","configureCookieStorageEngine","cookieStorageOptions","configureLocalStorageEngine","configureInMemoryStorageEngine","configureSessionStorageEngine","configureStorageEngines","localStorageOptions","inMemoryStorageOptions","sessionStorageOptions","pluginsManager","validKeys","noKeyValidation","noCompoundKey","compoundKey","validKeyName","validKey","decryptedValue","mode","formattedValue","getStorageTypeFromPreConsentIfApplicable","sessionKey","overriddenStorageType","StoreManager","loadOptions","globalStorageType","entriesOptions","postConsentStorageOpts","trulyAnonymousTracking","storageEntries","storageKey","configuredStorageType","_e","_f","storeConfig","storageEngine","removeDuplicateSlashes","isValidURL","validateWriteKey","validateDataPlaneUrl","validateLoadArgs","isValidSourceConfig","res","isValidStorageType","getTopDomain","urlObj","protocol","getTopDomainUrl","getDataServiceUrl","endpoint","useExactDomain","formattedEndpoint","isWebpageTopLevelDomain","providedDomain","filterEnabledDestination","nativeDestinations","removeTrailingSlashes","getDomain","getReferringDomain","referrer","extractUTMParameters","UTM_PREFIX","sParam","utmParam","getUrlWithoutHash","urlWithoutHash","isSDKRunningInChromeExtension","DEFAULT_PRE_CONSENT_STORAGE_STRATEGY","DEFAULT_PRE_CONSENT_EVENTS_DELIVERY_TYPE","sourceConfig","isMetricsReportingEnabled","getValidPostConsentOptions","validOptions","clonedOptions","isValidConsentsData","getConsentManagerInfo","consentManagementOpts","provider","consentManagerPluginName","getConsentManagementData","allowedConsentIds","deniedConsentIds","initialized","enabled","consentsData","getSDKUrl","scripts","sdkFileNameRegex","src","updateReportingState","getServerSideCookiesStateData","useServerSideCookies","dataServiceEndpoint","storageOptsFromLoad","setCookieDomain","sameDomainCookiesOnly","cookieOptions","sscEnabled","finalDataServiceUrl","dataServiceUrl","curHost","dataServiceHost","updateStorageStateFromLoadOptions","encryptionPluginName","configuredMigrationValue","finalMigrationVal","updateConsentsStateFromLoadOptions","preConsentOpts","storageStrategy","StorageStrategies","eventsDeliveryType","deliveryTypes","updateConsentsState","resp","resolutionStrategy","cmpMetadata","updateDataPlaneEventsStateFromLoadOptions","defaultEventsQueuePluginName","eventsQueuePluginName","getSourceConfigURL","lockIntegrationsVersion","lockPluginsVersion","defSearchParams","origin","searchParams","pathname","hash","configUrlInstance","getSDKComponentBaseURL","componentType","pathSuffix","baseURL","currentVersion","lockVersion","customURL","sdkComponentURL","sdkURL","getIntegrationsCDNPath","customIntegrationsCDNPath","getPluginsCDNPath","customPluginsCDNPath","ConfigManager","destSDKBaseURL","pluginsSDKBaseURL","integrations","intgCdnUrl","pluginsCDNPath","response","sourceConfigFunc","pRes","getTimezone","timezone","getReferrer","getCanonicalUrl","tags","canonicalUrl","tag","getUserAgent","userAgent","brave","matchedArr","getLanguage","getDefaultPageProperties","tabUrl","pageUrl","search","title","POLYFILL_URL","POLYFILL_LOAD_TIMEOUT","POLYFILL_SCRIPT_ID","CapabilitiesManager","uach","polyfillUrl","isDefaultPolyfillService","polyfillCallbackName","polyfillCallback","CHANNEL","TOP_LEVEL_ELEMENTS","CONTEXT_RESERVED_ELEMENTS","RESERVED_ELEMENTS","isNumber","hasMinLength","minimumLength","isPositiveInteger","MIN_SESSION_ID_LENGTH","hasSessionExpired","expiresAt","timestamp","generateSessionId","isManualSessionIdValid","generateAutoTrackingSession","sessionTimeout","generateManualTrackingSession","isStorageTypeValidForStoringData","generateAnonymousId","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","sessionInfo","configuredSessionTrackingInfo","initialSessionInfo","persistedInitialReferrer","persistedInitialReferringDomain","initialReferrer","entryName","entries","storageTypesForMigration","currentStorage","curStore","persistentStoreNames","stores","storeName","storageEntry","migratedVal","autoTrack","configuredSessionTimeout","cookiesData","encryptedCookieData","cData","encryptedValue","_h","_g","cb","cookieValue","before","each","cookieName","anonymousId","rudderAmpLinkerParam","finalAnonymousId","persistedAnonymousId","resetAnonymousId","noNewSessionStart","session","manualTrack","referringDomain","token","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","EventRepository","bufferEventsBeforeConsent","shouldBufferDpEvents","dest","dpQEvent","dQEvent","dispatchSDKEvent","customEvent","Analytics","clonedDataPlaneUrl","clonedLoadOptions","bufferedEvents","eventToProcess","totalDestinationsToLoad","isBufferedInvocation","previousId","trackOptions","pageOptions","_RudderAnalytics","instanceId","useBeacon","autoTrackEnabled","autoTrackOptions","pageLifecycle","events","pageLifecycleEnabled","pageUnloadedTimestamp","visitDuration","RudderAnalytics"],"mappings":"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","x_google_ignoreList":[0]}