@rudderstack/analytics-js 3.11.15 → 3.11.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/LICENSE.md +6 -6
- package/dist/npm/index.d.cts +1 -1
- package/dist/npm/index.d.mts +1 -1
- package/dist/npm/legacy/bundled/cjs/index.cjs +102 -94
- package/dist/npm/legacy/bundled/esm/index.mjs +102 -94
- package/dist/npm/legacy/bundled/umd/index.js +102 -94
- package/dist/npm/legacy/cjs/index.cjs +102 -94
- package/dist/npm/legacy/content-script/cjs/index.cjs +99 -92
- package/dist/npm/legacy/content-script/esm/index.mjs +99 -92
- package/dist/npm/legacy/content-script/umd/index.js +99 -92
- package/dist/npm/legacy/esm/index.mjs +102 -94
- package/dist/npm/legacy/umd/index.js +102 -94
- package/dist/npm/modern/bundled/cjs/index.cjs +95 -93
- package/dist/npm/modern/bundled/esm/index.mjs +95 -93
- package/dist/npm/modern/bundled/umd/index.js +95 -93
- package/dist/npm/modern/cjs/index.cjs +6 -6
- package/dist/npm/modern/content-script/cjs/index.cjs +93 -92
- package/dist/npm/modern/content-script/esm/index.mjs +93 -92
- package/dist/npm/modern/content-script/umd/index.js +93 -92
- package/dist/npm/modern/esm/index.mjs +6 -6
- package/dist/npm/modern/umd/index.js +6 -6
- package/package.json +1 -1
@@ -419,7 +419,7 @@ const getFormattedTimestamp=date=>date.toISOString();/**
|
|
419
419
|
* @returns ISO formatted timestamp string
|
420
420
|
*/const getCurrentTimeFormatted=()=>getFormattedTimestamp(new Date());
|
421
421
|
|
422
|
-
const 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.`;
|
422
|
+
const 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.`;const COOKIE_DATA_ENCODING_ERROR=`Failed to encode the cookie data.`;
|
423
423
|
|
424
424
|
const JSON_STRINGIFY='JSONStringify';const BIG_INT_PLACEHOLDER='[BigInt]';const CIRCULAR_REFERENCE_PLACEHOLDER='[Circular Reference]';const getCircularReplacer=(excludeNull,excludeKeys,logger)=>{const ancestors=[];// Here we do not want to use arrow function to use "this" in function context
|
425
425
|
// eslint-disable-next-line func-names
|
@@ -463,7 +463,7 @@ const MANUAL_ERROR_IDENTIFIER='[MANUAL ERROR]';/**
|
|
463
463
|
* @returns Instance of Error with message prepended with issue
|
464
464
|
*/const getMutatedError=(err,issue)=>{let finalError=err;if(!isTypeOfError(err)){finalError=new Error(`${issue}: ${stringifyWithoutCircular(err)}`);}else {finalError.message=`${issue}: ${err.message}`;}return finalError;};const dispatchErrorEvent=error=>{if(isTypeOfError(error)){error.stack=`${error.stack??''}\n${MANUAL_ERROR_IDENTIFIER}`;}globalThis.dispatchEvent(new ErrorEvent('error',{error}));};
|
465
465
|
|
466
|
-
const APP_NAME='RudderLabs JavaScript SDK';const APP_VERSION='3.11.
|
466
|
+
const APP_NAME='RudderLabs JavaScript SDK';const APP_VERSION='3.11.17';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';
|
467
467
|
|
468
468
|
const 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';
|
469
469
|
|
@@ -714,10 +714,6 @@ new URL(url);}return URL_PATTERN.test(url);}catch(e){return false;}};
|
|
714
714
|
const isErrRetryable=details=>{let isRetryableNWFailure=false;if(details?.error&&details?.xhr){const xhrStatus=details.xhr.status;// same as in v1.1
|
715
715
|
isRetryableNWFailure=xhrStatus===429||xhrStatus>=500&&xhrStatus<600;}return isRetryableNWFailure;};
|
716
716
|
|
717
|
-
const 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};const ENCRYPTION_PREFIX_V3='RS_ENC_v3_';
|
718
|
-
|
719
|
-
const COOKIE_DATA_ENCODING_ERROR=`Failed to encode the cookie data.`;
|
720
|
-
|
721
717
|
/**
|
722
718
|
* Encode.
|
723
719
|
*/const encode=(value,logger)=>{try{return encodeURIComponent(value);}catch(err){logger?.error(COOKIE_DATA_ENCODING_ERROR,err);return undefined;}};/**
|
@@ -737,6 +733,8 @@ pairs.forEach(pairItem=>{pair=pairItem.split('=');const keyName=pair[0]?decode$1
|
|
737
733
|
*/// eslint-disable-next-line func-names
|
738
734
|
const 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();}};
|
739
735
|
|
736
|
+
const 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};const ENCRYPTION_PREFIX_V3='RS_ENC_v3_';
|
737
|
+
|
740
738
|
const encryptBrowser=value=>`${ENCRYPTION_PREFIX_V3}${toBase64(value)}`;const decryptBrowser=value=>{if(value?.startsWith(ENCRYPTION_PREFIX_V3)){return fromBase64(value.substring(ENCRYPTION_PREFIX_V3.length));}return value;};
|
741
739
|
|
742
740
|
const EVENT_PAYLOAD_SIZE_BYTES_LIMIT=32*1024;// 32 KB
|
@@ -930,7 +928,8 @@ if(!isRudderSDKError$1(event)){return false;}enhanceErrorEventMutator(state,even
|
|
930
928
|
return false;}};const getReleaseStage$1=()=>{const host=globalThis.location.hostname;return host&&DEV_HOSTS$1.includes(host)?'development':'production';};const getGlobalBugsnagLibInstance=()=>globalThis[BUGSNAG_LIB_INSTANCE_GLOBAL_KEY_NAME];const getNewClient=(state,logger)=>{const globalBugsnagLibInstance=getGlobalBugsnagLibInstance();const clientConfig={apiKey:API_KEY,appVersion:state.context.app.value.version,metaData:{SDK:{name:'JS',installType:state.context.app.value.installType}},beforeSend:onError(state,logger),autoCaptureSessions:false,// auto capture sessions is disabled
|
931
929
|
collectUserIp:false,// collecting user's IP is disabled
|
932
930
|
// enabledBreadcrumbTypes: ['error', 'log', 'user'], // for v7 and above
|
933
|
-
maxEvents:100,maxBreadcrumbs:40,releaseStage:getReleaseStage$1(),user:{
|
931
|
+
maxEvents:100,maxBreadcrumbs:40,releaseStage:getReleaseStage$1(),user:{// Combination of source, session and visit ids
|
932
|
+
id:`${state.source.value?.id??state.lifecycle.writeKey.value}..${state.session.sessionInfo.value?.id??'NA'}..${state.autoTrack?.pageLifecycle?.visitId?.value??'NA'}`},logger,networkBreadcrumbsEnabled:false};const client=globalBugsnagLibInstance(clientConfig);return client;};const isApiKeyValid=apiKey=>{const isAPIKeyValid=!(apiKey.startsWith('{{')||apiKey.endsWith('}}')||apiKey.length===0);return isAPIKeyValid;};const loadBugsnagSDK=(externalSrcLoader,logger)=>{const isNotLoaded=GLOBAL_LIBRARY_OBJECT_NAMES.every(globalKeyName=>!globalThis[globalKeyName]);if(!isNotLoaded){return;}externalSrcLoader.loadJSFile({url:BUGSNAG_CDN_URL,id:ERROR_REPORT_PROVIDER_NAME_BUGSNAG,callback:id=>{if(!id){logger?.error(BUGSNAG_SDK_LOAD_ERROR(BUGSNAG_PLUGIN));}}});};const initBugsnagClient=(state,promiseResolve,promiseReject,logger,time=0)=>{const globalBugsnagLibInstance=getGlobalBugsnagLibInstance();if(typeof globalBugsnagLibInstance==='function'){if(isValidVersion(globalBugsnagLibInstance)){const client=getNewClient(state,logger);promiseResolve(client);}}else if(time>=MAX_WAIT_FOR_SDK_LOAD_MS){promiseReject(new Error(BUGSNAG_SDK_LOAD_TIMEOUT_ERROR(MAX_WAIT_FOR_SDK_LOAD_MS)));}else {// Try to initialize the client after a delay
|
934
933
|
globalThis.setTimeout(initBugsnagClient,SDK_LOAD_POLL_INTERVAL_MS,state,promiseResolve,promiseReject,logger,time+SDK_LOAD_POLL_INTERVAL_MS);}};
|
935
934
|
|
936
935
|
const pluginName$e='Bugsnag';const Bugsnag=()=>({name:pluginName$e,deps:[],initialize:state=>{state.plugins.loadedPlugins.value=[...state.plugins.loadedPlugins.value,pluginName$e];},errorReportingProvider:{init:(state,externalSrcLoader,logger)=>new Promise((resolve,reject)=>{// If API key token is not parsed or invalid, don't proceed to initialize the client
|
@@ -964,170 +963,170 @@ const isDestIntgConfigTruthy=destIntgConfig=>!isUndefined(destIntgConfig)&&Boole
|
|
964
963
|
* @returns Destinations array filtered based on the integration options
|
965
964
|
*/const filterDestinations=(intgOpts,destinations)=>{const allOptVal=intgOpts.All??true;return destinations.filter(dest=>{const destDisplayName=dest.displayName;let isDestEnabled;if(allOptVal){isDestEnabled=true;if(isDestIntgConfigFalsy(intgOpts[destDisplayName])){isDestEnabled=false;}}else {isDestEnabled=false;if(isDestIntgConfigTruthy(intgOpts[destDisplayName])){isDestEnabled=true;}}return isDestEnabled;});};
|
966
965
|
|
967
|
-
const
|
966
|
+
const ACTIVE_CAMPAIGN_DISPLAY_NAME='ActiveCampaign';const ADOBE_ANALYTICS_DISPLAY_NAME='Adobe Analytics';const ADROLL_DISPLAY_NAME='Adroll';const AM_DISPLAY_NAME='Amplitude';const APPCUES_DISPLAY_NAME='Appcues';const AXEPTIO_DISPLAY_NAME='Axeptio';const BINGADS_DISPLAY_NAME='Bing Ads';const BRAZE_DISPLAY_NAME='Braze';const BUGSNAG_DISPLAY_NAME='Bugsnag';const CHARTBEAT_DISPLAY_NAME='Chartbeat';const CLEVERTAP_DISPLAY_NAME='CleverTap';const COMMANDBAR_DISPLAY_NAME='CommandBar';const CONVERTFLOW_DISPLAY_NAME='Convertflow';const CRITEO_DISPLAY_NAME='Criteo';const CUSTOMERIO_DISPLAY_NAME='Customer IO';const DCM_FLOODLIGHT_DISPLAY_NAME='DCM Floodlight';const DRIP_DISPLAY_NAME='Drip';const ENGAGE_DISPLAY_NAME='Engage';const FACEBOOK_PIXEL_DISPLAY_NAME='Facebook Pixel';const FULLSTORY_DISPLAY_NAME='Fullstory';const GA_DISPLAY_NAME='Google Analytics';const GA360_DISPLAY_NAME='Google Analytics 360';const GA4_DISPLAY_NAME='Google Analytics 4 (GA4)';const GA4_V2_DISPLAY_NAME='Google Analytics 4 (GA4) V2';const GAINSIGHT_PX_DISPLAY_NAME='Gainsight PX';const GOOGLE_OPTIMIZE_DISPLAY_NAME='Google Optimize';const GOOGLEADS_DISPLAY_NAME='Google Ads';const GTM_DISPLAY_NAME='Google Tag Manager';const HEAP_DISPLAY_NAME='Heap.io';const HOTJAR_DISPLAY_NAME='Hotjar';const HS_DISPLAY_NAME='HubSpot';const INTERCOM_DISPLAY_NAME='Intercom';const ITERABLE_DISPLAY_NAME='Iterable';const JUNE_DISPLAY_NAME='JUNE';const KEEN_DISPLAY_NAME='Keen';const KISSMETRICS_DISPLAY_NAME='Kiss Metrics';const KLAVIYO_DISPLAY_NAME='Klaviyo';const LAUNCHDARKLY_DISPLAY_NAME='LaunchDarkly';const LEMNISK_DISPLAY_NAME='Lemnisk Marketing Automation';const LINKEDIN_INSIGHT_TAG_DISPLAY_NAME='Linkedin Insight Tag';const LIVECHAT_DISPLAY_NAME='livechat';const LOTAME_DISPLAY_NAME='Lotame';const LYTICS_DISPLAY_NAME='Lytics';const MATOMO_DISPLAY_NAME='Matomo';const MICROSOFT_CLARITY_DISPLAY_NAME='Microsoft Clarity';const MOENGAGE_DISPLAY_NAME='MoEngage';const MOUSEFLOW_DISPLAY_NAME='Mouseflow';const MP_DISPLAY_NAME='Mixpanel';const NINETAILED_DISPLAY_NAME='Ninetailed';const OLARK_DISPLAY_NAME='Olark';const OPTIMIZELY_DISPLAY_NAME='Optimizely Web';const PENDO_DISPLAY_NAME='Pendo';const PINTEREST_TAG_DISPLAY_NAME='Pinterest Tag';const PODSIGHTS_DISPLAY_NAME='Podsights';const POST_AFFILIATE_PRO_DISPLAY_NAME='Post Affiliate Pro';const POSTHOG_DISPLAY_NAME='PostHog';const PROFITWELL_DISPLAY_NAME='ProfitWell';const QUALAROO_DISPLAY_NAME='Qualaroo';const QUALTRICS_DISPLAY_NAME='Qualtrics';const QUANTUMMETRIC_DISPLAY_NAME='Quantum Metric';const QUORA_PIXEL_DISPLAY_NAME='Quora Pixel';const REDDIT_PIXEL_DISPLAY_NAME='Reddit Pixel';const REFINER_DISPLAY_NAME='Refiner';const ROCKERBOX_DISPLAY_NAME='Rockerbox';const ROLLBAR_DISPLAY_NAME='rollbar';const SATISMETER_DISPLAY_NAME='SatisMeter';const SENDINBLUE_DISPLAY_NAME='Sendinblue';const SENTRY_DISPLAY_NAME='Sentry';const SHYNET_DISPLAY_NAME='Shynet';const SNAP_PIXEL_DISPLAY_NAME='Snap Pixel';const SNAPENGAGE_DISPLAY_NAME='SnapEngage';const SPOTIFYPIXEL_DISPLAY_NAME='Spotify Pixel';const SPRIG_DISPLAY_NAME='Sprig';const TIKTOK_ADS_DISPLAY_NAME='TikTok Ads';const TVSQUARED_DISPLAY_NAME='TVSquared';const VERO_DISPLAY_NAME='Vero';const VWO_DISPLAY_NAME='VWO';const WOOPRA_DISPLAY_NAME='WOOPRA';const XPIXEL_DISPLAY_NAME='XPixel';const YANDEX_METRICA_DISPLAY_NAME='Yandex.Metrica';
|
968
967
|
|
969
|
-
const DIR_NAME$1f='
|
968
|
+
const DIR_NAME$1f='AdobeAnalytics';
|
970
969
|
|
971
|
-
const DIR_NAME$1e='
|
970
|
+
const DIR_NAME$1e='Amplitude';
|
972
971
|
|
973
|
-
const DIR_NAME$1d='
|
972
|
+
const DIR_NAME$1d='Appcues';
|
974
973
|
|
975
|
-
const DIR_NAME$1c='
|
974
|
+
const DIR_NAME$1c='BingAds';
|
976
975
|
|
977
|
-
const DIR_NAME$1b='
|
976
|
+
const DIR_NAME$1b='Braze';
|
978
977
|
|
979
|
-
const DIR_NAME$1a='
|
978
|
+
const DIR_NAME$1a='Bugsnag';
|
980
979
|
|
981
|
-
const DIR_NAME$19='
|
980
|
+
const DIR_NAME$19='Chartbeat';
|
982
981
|
|
983
|
-
const DIR_NAME$18='
|
982
|
+
const DIR_NAME$18='Clevertap';
|
984
983
|
|
985
|
-
const DIR_NAME$17='Criteo';
|
984
|
+
const DIR_NAME$17='Criteo';
|
986
985
|
|
987
|
-
const DIR_NAME$16='CustomerIO';
|
986
|
+
const DIR_NAME$16='CustomerIO';
|
988
987
|
|
989
|
-
const DIR_NAME$15='Drip';
|
988
|
+
const DIR_NAME$15='Drip';
|
990
989
|
|
991
|
-
const DIR_NAME$14='FacebookPixel';
|
990
|
+
const DIR_NAME$14='FacebookPixel';
|
992
991
|
|
993
|
-
const DIR_NAME$13='Fullstory';
|
992
|
+
const DIR_NAME$13='Fullstory';
|
994
993
|
|
995
|
-
const DIR_NAME$12='GA';
|
994
|
+
const DIR_NAME$12='GA';
|
996
995
|
|
997
|
-
const DIR_NAME$11='GA4';
|
996
|
+
const DIR_NAME$11='GA4';
|
998
997
|
|
999
|
-
const DIR_NAME$10='GA4_V2';
|
998
|
+
const DIR_NAME$10='GA4_V2';
|
1000
999
|
|
1001
|
-
const DIR_NAME$$='GoogleAds';
|
1000
|
+
const DIR_NAME$$='GoogleAds';
|
1002
1001
|
|
1003
|
-
const DIR_NAME$_='GoogleOptimize';
|
1002
|
+
const DIR_NAME$_='GoogleOptimize';
|
1004
1003
|
|
1005
|
-
const DIR_NAME$Z='GoogleTagManager';
|
1004
|
+
const DIR_NAME$Z='GoogleTagManager';
|
1006
1005
|
|
1007
|
-
const DIR_NAME$Y='Heap';
|
1006
|
+
const DIR_NAME$Y='Heap';
|
1008
1007
|
|
1009
|
-
const DIR_NAME$X='Hotjar';
|
1008
|
+
const DIR_NAME$X='Hotjar';
|
1010
1009
|
|
1011
|
-
const DIR_NAME$W='HubSpot';
|
1010
|
+
const DIR_NAME$W='HubSpot';
|
1012
1011
|
|
1013
|
-
const DIR_NAME$V='INTERCOM';
|
1012
|
+
const DIR_NAME$V='INTERCOM';
|
1014
1013
|
|
1015
|
-
const DIR_NAME$U='Keen';
|
1014
|
+
const DIR_NAME$U='Keen';
|
1016
1015
|
|
1017
|
-
const DIR_NAME$T='Kissmetrics';
|
1016
|
+
const DIR_NAME$T='Kissmetrics';
|
1018
1017
|
|
1019
|
-
const DIR_NAME$S='Klaviyo';
|
1018
|
+
const DIR_NAME$S='Klaviyo';
|
1020
1019
|
|
1021
|
-
const DIR_NAME$R='LaunchDarkly';
|
1020
|
+
const DIR_NAME$R='LaunchDarkly';
|
1022
1021
|
|
1023
|
-
const DIR_NAME$Q='LinkedInInsightTag';
|
1022
|
+
const DIR_NAME$Q='LinkedInInsightTag';
|
1024
1023
|
|
1025
|
-
const DIR_NAME$P='Lotame';
|
1024
|
+
const DIR_NAME$P='Lotame';
|
1026
1025
|
|
1027
|
-
const DIR_NAME$O='Lytics';
|
1026
|
+
const DIR_NAME$O='Lytics';
|
1028
1027
|
|
1029
|
-
const DIR_NAME$N='Mixpanel';
|
1028
|
+
const DIR_NAME$N='Mixpanel';
|
1030
1029
|
|
1031
|
-
const DIR_NAME$M='MoEngage';
|
1030
|
+
const DIR_NAME$M='MoEngage';
|
1032
1031
|
|
1033
|
-
const DIR_NAME$L='Optimizely';
|
1032
|
+
const DIR_NAME$L='Optimizely';
|
1034
1033
|
|
1035
|
-
const DIR_NAME$K='Pendo';
|
1034
|
+
const DIR_NAME$K='Pendo';
|
1036
1035
|
|
1037
|
-
const DIR_NAME$J='PinterestTag';
|
1036
|
+
const DIR_NAME$J='PinterestTag';
|
1038
1037
|
|
1039
|
-
const DIR_NAME$I='PostAffiliatePro';
|
1038
|
+
const DIR_NAME$I='PostAffiliatePro';
|
1040
1039
|
|
1041
|
-
const DIR_NAME$H='Posthog';
|
1040
|
+
const DIR_NAME$H='Posthog';
|
1042
1041
|
|
1043
|
-
const DIR_NAME$G='ProfitWell';
|
1042
|
+
const DIR_NAME$G='ProfitWell';
|
1044
1043
|
|
1045
|
-
const DIR_NAME$F='Qualtrics';
|
1044
|
+
const DIR_NAME$F='Qualtrics';
|
1046
1045
|
|
1047
|
-
const DIR_NAME$E='QuantumMetric';
|
1046
|
+
const DIR_NAME$E='QuantumMetric';
|
1048
1047
|
|
1049
|
-
const DIR_NAME$D='RedditPixel';
|
1048
|
+
const DIR_NAME$D='RedditPixel';
|
1050
1049
|
|
1051
|
-
const DIR_NAME$C='Sentry';
|
1050
|
+
const DIR_NAME$C='Sentry';
|
1052
1051
|
|
1053
|
-
const DIR_NAME$B='SnapPixel';
|
1052
|
+
const DIR_NAME$B='SnapPixel';
|
1054
1053
|
|
1055
|
-
const DIR_NAME$A='TVSquared';
|
1054
|
+
const DIR_NAME$A='TVSquared';
|
1056
1055
|
|
1057
|
-
const DIR_NAME$z='VWO';
|
1056
|
+
const DIR_NAME$z='VWO';
|
1058
1057
|
|
1059
|
-
const DIR_NAME$y='GA360';
|
1058
|
+
const DIR_NAME$y='GA360';
|
1060
1059
|
|
1061
|
-
const DIR_NAME$x='Adroll';
|
1060
|
+
const DIR_NAME$x='Adroll';
|
1062
1061
|
|
1063
|
-
const DIR_NAME$w='DCMFloodlight';
|
1062
|
+
const DIR_NAME$w='DCMFloodlight';
|
1064
1063
|
|
1065
|
-
const DIR_NAME$v='Matomo';
|
1064
|
+
const DIR_NAME$v='Matomo';
|
1066
1065
|
|
1067
|
-
const DIR_NAME$u='Vero';
|
1066
|
+
const DIR_NAME$u='Vero';
|
1068
1067
|
|
1069
|
-
const DIR_NAME$t='Mouseflow';
|
1068
|
+
const DIR_NAME$t='Mouseflow';
|
1070
1069
|
|
1071
|
-
const DIR_NAME$s='Rockerbox';
|
1070
|
+
const DIR_NAME$s='Rockerbox';
|
1072
1071
|
|
1073
|
-
const DIR_NAME$r='ConvertFlow';
|
1072
|
+
const DIR_NAME$r='ConvertFlow';
|
1074
1073
|
|
1075
|
-
const DIR_NAME$q='SnapEngage';
|
1074
|
+
const DIR_NAME$q='SnapEngage';
|
1076
1075
|
|
1077
|
-
const DIR_NAME$p='LiveChat';
|
1076
|
+
const DIR_NAME$p='LiveChat';
|
1078
1077
|
|
1079
|
-
const DIR_NAME$o='Shynet';
|
1078
|
+
const DIR_NAME$o='Shynet';
|
1080
1079
|
|
1081
|
-
const DIR_NAME$n='Woopra';
|
1080
|
+
const DIR_NAME$n='Woopra';
|
1082
1081
|
|
1083
|
-
const DIR_NAME$m='RollBar';
|
1082
|
+
const DIR_NAME$m='RollBar';
|
1084
1083
|
|
1085
|
-
const DIR_NAME$l='QuoraPixel';
|
1084
|
+
const DIR_NAME$l='QuoraPixel';
|
1086
1085
|
|
1087
|
-
const DIR_NAME$k='June';
|
1086
|
+
const DIR_NAME$k='June';
|
1088
1087
|
|
1089
|
-
const DIR_NAME$j='Engage';
|
1088
|
+
const DIR_NAME$j='Engage';
|
1090
1089
|
|
1091
|
-
const DIR_NAME$i='Iterable';
|
1090
|
+
const DIR_NAME$i='Iterable';
|
1092
1091
|
|
1093
|
-
const DIR_NAME$h='YandexMetrica';
|
1092
|
+
const DIR_NAME$h='YandexMetrica';
|
1094
1093
|
|
1095
|
-
const DIR_NAME$g='Refiner';
|
1094
|
+
const DIR_NAME$g='Refiner';
|
1096
1095
|
|
1097
|
-
const DIR_NAME$f='Qualaroo';
|
1096
|
+
const DIR_NAME$f='Qualaroo';
|
1098
1097
|
|
1099
|
-
const DIR_NAME$e='Podsights';
|
1098
|
+
const DIR_NAME$e='Podsights';
|
1100
1099
|
|
1101
|
-
const DIR_NAME$d='Axeptio';
|
1100
|
+
const DIR_NAME$d='Axeptio';
|
1102
1101
|
|
1103
|
-
const DIR_NAME$c='Satismeter';
|
1102
|
+
const DIR_NAME$c='Satismeter';
|
1104
1103
|
|
1105
|
-
const DIR_NAME$b='MicrosoftClarity';
|
1104
|
+
const DIR_NAME$b='MicrosoftClarity';
|
1106
1105
|
|
1107
|
-
const DIR_NAME$a='Sendinblue';
|
1106
|
+
const DIR_NAME$a='Sendinblue';
|
1108
1107
|
|
1109
|
-
const DIR_NAME$9='Olark';
|
1108
|
+
const DIR_NAME$9='Olark';
|
1110
1109
|
|
1111
|
-
const DIR_NAME$8='Lemnisk';
|
1110
|
+
const DIR_NAME$8='Lemnisk';
|
1112
1111
|
|
1113
|
-
const DIR_NAME$7='TiktokAds';
|
1112
|
+
const DIR_NAME$7='TiktokAds';
|
1114
1113
|
|
1115
|
-
const DIR_NAME$6='ActiveCampaign';
|
1114
|
+
const DIR_NAME$6='ActiveCampaign';
|
1116
1115
|
|
1117
|
-
const DIR_NAME$5='Sprig';
|
1116
|
+
const DIR_NAME$5='Sprig';
|
1118
1117
|
|
1119
|
-
const DIR_NAME$4='SpotifyPixel';
|
1118
|
+
const DIR_NAME$4='SpotifyPixel';
|
1120
1119
|
|
1121
|
-
const DIR_NAME$3='CommandBar';
|
1120
|
+
const DIR_NAME$3='CommandBar';
|
1122
1121
|
|
1123
|
-
const DIR_NAME$2='Ninetailed';
|
1122
|
+
const DIR_NAME$2='Ninetailed';
|
1124
1123
|
|
1125
|
-
const DIR_NAME$1='Gainsight_PX';
|
1124
|
+
const DIR_NAME$1='Gainsight_PX';
|
1126
1125
|
|
1127
|
-
const DIR_NAME='XPixel';
|
1126
|
+
const DIR_NAME='XPixel';
|
1128
1127
|
|
1129
1128
|
// map of the destination display names to the destination directory names
|
1130
|
-
const destDisplayNamesToFileNamesMap={[
|
1129
|
+
const destDisplayNamesToFileNamesMap={[HS_DISPLAY_NAME]:DIR_NAME$W,[GA_DISPLAY_NAME]:DIR_NAME$12,[HOTJAR_DISPLAY_NAME]:DIR_NAME$X,[GOOGLEADS_DISPLAY_NAME]:DIR_NAME$$,[VWO_DISPLAY_NAME]:DIR_NAME$z,[GTM_DISPLAY_NAME]:DIR_NAME$Z,[BRAZE_DISPLAY_NAME]:DIR_NAME$1b,[INTERCOM_DISPLAY_NAME]:DIR_NAME$V,[KEEN_DISPLAY_NAME]:DIR_NAME$U,[KISSMETRICS_DISPLAY_NAME]:DIR_NAME$T,[CUSTOMERIO_DISPLAY_NAME]:DIR_NAME$16,[CHARTBEAT_DISPLAY_NAME]:DIR_NAME$19,[FACEBOOK_PIXEL_DISPLAY_NAME]:DIR_NAME$14,[LOTAME_DISPLAY_NAME]:DIR_NAME$P,[OPTIMIZELY_DISPLAY_NAME]:DIR_NAME$L,[BUGSNAG_DISPLAY_NAME]:DIR_NAME$1a,[FULLSTORY_DISPLAY_NAME]:DIR_NAME$13,[TVSQUARED_DISPLAY_NAME]:DIR_NAME$A,[GA4_DISPLAY_NAME]:DIR_NAME$11,[GA4_V2_DISPLAY_NAME]:DIR_NAME$10,[MOENGAGE_DISPLAY_NAME]:DIR_NAME$M,[AM_DISPLAY_NAME]:DIR_NAME$1e,[PENDO_DISPLAY_NAME]:DIR_NAME$K,[LYTICS_DISPLAY_NAME]:DIR_NAME$O,[APPCUES_DISPLAY_NAME]:DIR_NAME$1d,[POSTHOG_DISPLAY_NAME]:DIR_NAME$H,[KLAVIYO_DISPLAY_NAME]:DIR_NAME$S,[CLEVERTAP_DISPLAY_NAME]:DIR_NAME$18,[BINGADS_DISPLAY_NAME]:DIR_NAME$1c,[PINTEREST_TAG_DISPLAY_NAME]:DIR_NAME$J,[ADOBE_ANALYTICS_DISPLAY_NAME]:DIR_NAME$1f,[LINKEDIN_INSIGHT_TAG_DISPLAY_NAME]:DIR_NAME$Q,[REDDIT_PIXEL_DISPLAY_NAME]:DIR_NAME$D,[DRIP_DISPLAY_NAME]:DIR_NAME$15,[HEAP_DISPLAY_NAME]:DIR_NAME$Y,[CRITEO_DISPLAY_NAME]:DIR_NAME$17,[MP_DISPLAY_NAME]:DIR_NAME$N,[QUALTRICS_DISPLAY_NAME]:DIR_NAME$F,[PROFITWELL_DISPLAY_NAME]:DIR_NAME$G,[SENTRY_DISPLAY_NAME]:DIR_NAME$C,[QUANTUMMETRIC_DISPLAY_NAME]:DIR_NAME$E,[SNAP_PIXEL_DISPLAY_NAME]:DIR_NAME$B,[POST_AFFILIATE_PRO_DISPLAY_NAME]:DIR_NAME$I,[GOOGLE_OPTIMIZE_DISPLAY_NAME]:DIR_NAME$_,[LAUNCHDARKLY_DISPLAY_NAME]:DIR_NAME$R,[GA360_DISPLAY_NAME]:DIR_NAME$y,[ADROLL_DISPLAY_NAME]:DIR_NAME$x,[DCM_FLOODLIGHT_DISPLAY_NAME]:DIR_NAME$w,[MATOMO_DISPLAY_NAME]:DIR_NAME$v,[VERO_DISPLAY_NAME]:DIR_NAME$u,[MOUSEFLOW_DISPLAY_NAME]:DIR_NAME$t,[ROCKERBOX_DISPLAY_NAME]:DIR_NAME$s,[CONVERTFLOW_DISPLAY_NAME]:DIR_NAME$r,[SNAPENGAGE_DISPLAY_NAME]:DIR_NAME$q,[LIVECHAT_DISPLAY_NAME]:DIR_NAME$p,[SHYNET_DISPLAY_NAME]:DIR_NAME$o,[WOOPRA_DISPLAY_NAME]:DIR_NAME$n,[ROLLBAR_DISPLAY_NAME]:DIR_NAME$m,[QUORA_PIXEL_DISPLAY_NAME]:DIR_NAME$l,[JUNE_DISPLAY_NAME]:DIR_NAME$k,[ENGAGE_DISPLAY_NAME]:DIR_NAME$j,[ITERABLE_DISPLAY_NAME]:DIR_NAME$i,[YANDEX_METRICA_DISPLAY_NAME]:DIR_NAME$h,[REFINER_DISPLAY_NAME]:DIR_NAME$g,[QUALAROO_DISPLAY_NAME]:DIR_NAME$f,[PODSIGHTS_DISPLAY_NAME]:DIR_NAME$e,[AXEPTIO_DISPLAY_NAME]:DIR_NAME$d,[SATISMETER_DISPLAY_NAME]:DIR_NAME$c,[MICROSOFT_CLARITY_DISPLAY_NAME]:DIR_NAME$b,[SENDINBLUE_DISPLAY_NAME]:DIR_NAME$a,[OLARK_DISPLAY_NAME]:DIR_NAME$9,[LEMNISK_DISPLAY_NAME]:DIR_NAME$8,[TIKTOK_ADS_DISPLAY_NAME]:DIR_NAME$7,[ACTIVE_CAMPAIGN_DISPLAY_NAME]:DIR_NAME$6,[SPRIG_DISPLAY_NAME]:DIR_NAME$5,[SPOTIFYPIXEL_DISPLAY_NAME]:DIR_NAME$4,[COMMANDBAR_DISPLAY_NAME]:DIR_NAME$3,[NINETAILED_DISPLAY_NAME]:DIR_NAME$2,[GAINSIGHT_PX_DISPLAY_NAME]:DIR_NAME$1,[XPIXEL_DISPLAY_NAME]:DIR_NAME};
|
1131
1130
|
|
1132
1131
|
/**
|
1133
1132
|
* Determines if the destination SDK code is evaluated
|
@@ -1135,7 +1134,7 @@ const destDisplayNamesToFileNamesMap={[DISPLAY_NAME$W]:DIR_NAME$W,[DISPLAY_NAME$
|
|
1135
1134
|
* @param sdkTypeName The name of the destination SDK type
|
1136
1135
|
* @param logger Logger instance
|
1137
1136
|
* @returns true if the destination SDK code is evaluated, false otherwise
|
1138
|
-
*/const isDestinationSDKMounted=(destSDKIdentifier,sdkTypeName,logger)=>Boolean(globalThis[destSDKIdentifier]
|
1137
|
+
*/const isDestinationSDKMounted=(destSDKIdentifier,sdkTypeName,logger)=>Boolean(globalThis[destSDKIdentifier]?.[sdkTypeName]?.prototype&&typeof globalThis[destSDKIdentifier][sdkTypeName].prototype.constructor!=='undefined');const wait=time=>new Promise(resolve=>{globalThis.setTimeout(resolve,time);});const createDestinationInstance=(destSDKIdentifier,sdkTypeName,dest,state)=>{const rAnalytics=globalThis.rudderanalytics;const analytics=rAnalytics.getAnalyticsInstance(state.lifecycle.writeKey.value);const analyticsInstance={loadIntegration:state.nativeDestinations.loadIntegration.value,logLevel:state.lifecycle.logLevel.value,loadOnlyIntegrations:state.consents.postConsent.value?.integrations??state.nativeDestinations.loadOnlyIntegrations.value,page:(category,name,properties,options,callback)=>analytics.page(pageArgumentsToCallOptions(getSanitizedValue(category),getSanitizedValue(name),getSanitizedValue(properties),getSanitizedValue(options),getSanitizedValue(callback))),track:(event,properties,options,callback)=>analytics.track(trackArgumentsToCallOptions(getSanitizedValue(event),getSanitizedValue(properties),getSanitizedValue(options),getSanitizedValue(callback))),identify:(userId,traits,options,callback)=>analytics.identify(identifyArgumentsToCallOptions(getSanitizedValue(userId),getSanitizedValue(traits),getSanitizedValue(options),getSanitizedValue(callback))),alias:(to,from,options,callback)=>analytics.alias(aliasArgumentsToCallOptions(getSanitizedValue(to),getSanitizedValue(from),getSanitizedValue(options),getSanitizedValue(callback))),group:(groupId,traits,options,callback)=>analytics.group(groupArgumentsToCallOptions(getSanitizedValue(groupId),getSanitizedValue(traits),getSanitizedValue(options),getSanitizedValue(callback))),getAnonymousId:options=>analytics.getAnonymousId(getSanitizedValue(options)),getUserId:()=>analytics.getUserId(),getUserTraits:()=>analytics.getUserTraits(),getGroupId:()=>analytics.getGroupId(),getGroupTraits:()=>analytics.getGroupTraits(),getSessionId:()=>analytics.getSessionId()};const deviceModeDestination=new globalThis[destSDKIdentifier][sdkTypeName](clone(dest.config),analyticsInstance,{shouldApplyDeviceModeTransformation:dest.shouldApplyDeviceModeTransformation,propagateEventsUntransformedOnError:dest.propagateEventsUntransformedOnError,destinationId:dest.id});return deviceModeDestination;};const isDestinationReady=(dest,time=0)=>new Promise((resolve,reject)=>{const instance=dest.instance;if(instance.isLoaded()&&(!instance.isReady||instance.isReady())){resolve(true);}else if(time>=READY_CHECK_TIMEOUT_MS){reject(new Error(DESTINATION_READY_TIMEOUT_ERROR(READY_CHECK_TIMEOUT_MS,dest.userFriendlyId)));}else {const curTime=Date.now();wait(READY_CHECK_INTERVAL_MS).then(()=>{const elapsedTime=Date.now()-curTime;isDestinationReady(dest,time+elapsedTime).then(resolve).catch(err=>reject(err));}).catch(err=>reject(err));}});/**
|
1139
1138
|
* Extracts the integration config, if any, from the given destination
|
1140
1139
|
* and merges it with the current integrations config
|
1141
1140
|
* @param dest Destination object
|
@@ -1179,7 +1178,8 @@ const NOTIFIER_NAME='RudderStack JavaScript SDK Error Notifier';const SDK_GITHUB
|
|
1179
1178
|
|
1180
1179
|
const getConfigForPayloadCreation=(err,errorType)=>{switch(errorType){case ErrorType.UNHANDLEDEXCEPTION:{const{error}=err;return {component:'unhandledException handler',normalizedError:error||err};}case ErrorType.UNHANDLEDREJECTION:{const error=err;return {component:'unhandledrejection handler',normalizedError:error.reason};}case ErrorType.HANDLEDEXCEPTION:default:return {component:'notify()',normalizedError:err};}};const createNewBreadcrumb=(message,metaData)=>({type:'manual',name:message,timestamp:new Date(),metaData:metaData??{}});const getReleaseStage=()=>{const host=globalThis.location.hostname;return host&&DEV_HOSTS.includes(host)?'development':'production';};const getAppStateForMetadata=state=>{const stateStr=stringifyWithoutCircular(state,false,APP_STATE_EXCLUDE_KEYS);return stateStr!==null?JSON.parse(stateStr):{};};const getURLWithoutQueryString=()=>{const url=globalThis.location.href.split('?');return url[0];};const getErrorContext=event=>{const{message}=event;let context=message;// Hack for easily grouping the script load errors
|
1181
1180
|
// on the dashboard
|
1182
|
-
if(message.includes('Error in loading a third-party script')){context='Script load failures';}return context;};const getBugsnagErrorEvent=(payload,errorState,state)=>({notifier:{name:NOTIFIER_NAME,version:state.context.app.value.version,url:SDK_GITHUB_URL},events:[{payloadVersion:'5',exceptions:clone(payload.errors),severity:errorState.severity,unhandled:errorState.unhandled,severityReason:errorState.severityReason,app:{version:state.context.app.value.version,releaseStage:getReleaseStage()},device:{locale:state.context.locale.value??undefined,userAgent:state.context.userAgent.value??undefined,time:new Date()},request:{url:getURLWithoutQueryString(),clientIp:'[NOT COLLECTED]'},breadcrumbs:clone(state.reporting.breadcrumbs.value),context:getErrorContext(payload.errors[0]),metaData:{sdk:{name:'JS',installType:state.context.app.value.installType},state:getAppStateForMetadata(state)??{},source:{snippetVersion:globalThis.RudderSnippetVersion}},user:{
|
1181
|
+
if(message.includes('Error in loading a third-party script')){context='Script load failures';}return context;};const getBugsnagErrorEvent=(payload,errorState,state)=>({notifier:{name:NOTIFIER_NAME,version:state.context.app.value.version,url:SDK_GITHUB_URL},events:[{payloadVersion:'5',exceptions:clone(payload.errors),severity:errorState.severity,unhandled:errorState.unhandled,severityReason:errorState.severityReason,app:{version:state.context.app.value.version,releaseStage:getReleaseStage()},device:{locale:state.context.locale.value??undefined,userAgent:state.context.userAgent.value??undefined,time:new Date()},request:{url:getURLWithoutQueryString(),clientIp:'[NOT COLLECTED]'},breadcrumbs:clone(state.reporting.breadcrumbs.value),context:getErrorContext(payload.errors[0]),metaData:{sdk:{name:'JS',installType:state.context.app.value.installType},state:getAppStateForMetadata(state)??{},source:{snippetVersion:globalThis.RudderSnippetVersion}},user:{// Combination of source, session and visit ids
|
1182
|
+
id:`${state.source.value?.id??state.lifecycle.writeKey.value}..${state.session.sessionInfo.value?.id??'NA'}..${state.autoTrack?.pageLifecycle?.visitId?.value??'NA'}`}}]});/**
|
1183
1183
|
* A function to determine whether the error should be promoted to notify or not
|
1184
1184
|
* @param {Error} error
|
1185
1185
|
* @returns
|
@@ -2802,7 +2802,7 @@ if(utmParam==='campaign'){utmParam='name';}result[utmParam]=value;}});}catch(err
|
|
2802
2802
|
/**
|
2803
2803
|
* Determines if the SDK is running inside a chrome extension
|
2804
2804
|
* @returns boolean
|
2805
|
-
*/const isSDKRunningInChromeExtension=()=>!!
|
2805
|
+
*/const isSDKRunningInChromeExtension=()=>!!window.chrome?.runtime?.id;
|
2806
2806
|
|
2807
2807
|
const DEFAULT_PRE_CONSENT_STORAGE_STRATEGY='none';const DEFAULT_PRE_CONSENT_EVENTS_DELIVERY_TYPE='immediate';
|
2808
2808
|
|
@@ -2913,7 +2913,9 @@ this.httpClient.getAsyncData({url:state.lifecycle.sourceConfigUrl.value,options:
|
|
2913
2913
|
* To get the timezone of the user
|
2914
2914
|
*
|
2915
2915
|
* @returns string
|
2916
|
-
*/const getTimezone=()=>{
|
2916
|
+
*/const getTimezone=()=>{// Not susceptible to super-linear backtracking
|
2917
|
+
// eslint-disable-next-line sonarjs/slow-regex
|
2918
|
+
const timezone=/([A-Z]+[+-]\d+)/.exec(new Date().toString());return timezone?.[1]?timezone[1]:'NA';};
|
2917
2919
|
|
2918
2920
|
/**
|
2919
2921
|
* Get the referrer URL
|