@magicpixel/rn-mp-client-sdk 1.12.1 → 1.13.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +163 -14
- package/lib/commonjs/common/app-types.js.map +1 -1
- package/lib/commonjs/common/constants.js +11 -2
- package/lib/commonjs/common/constants.js.map +1 -1
- package/lib/commonjs/common/data-store.js +13 -30
- package/lib/commonjs/common/data-store.js.map +1 -1
- package/lib/commonjs/common/deeplink-helper.js +174 -0
- package/lib/commonjs/common/deeplink-helper.js.map +1 -0
- package/lib/commonjs/common/device-info-helper.js +168 -0
- package/lib/commonjs/common/device-info-helper.js.map +1 -0
- package/lib/commonjs/common/event-bus.js +39 -0
- package/lib/commonjs/common/event-bus.js.map +1 -1
- package/lib/commonjs/common/network-service.js +119 -17
- package/lib/commonjs/common/network-service.js.map +1 -1
- package/lib/commonjs/common/reporter.js +28 -10
- package/lib/commonjs/common/reporter.js.map +1 -1
- package/lib/commonjs/common/storage-helper.js +227 -0
- package/lib/commonjs/common/storage-helper.js.map +1 -0
- package/lib/commonjs/common/utils.js +20 -2
- package/lib/commonjs/common/utils.js.map +1 -1
- package/lib/commonjs/eedl/eedl.js +198 -44
- package/lib/commonjs/eedl/eedl.js.map +1 -1
- package/lib/commonjs/index.js +290 -48
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/models/mp-client-sdk.js +17 -10
- package/lib/commonjs/models/mp-client-sdk.js.map +1 -1
- package/lib/commonjs/processors/data-element.processor.js +51 -7
- package/lib/commonjs/processors/data-element.processor.js.map +1 -1
- package/lib/commonjs/processors/visit-id.processor.js +78 -15
- package/lib/commonjs/processors/visit-id.processor.js.map +1 -1
- package/lib/module/common/app-types.js.map +1 -1
- package/lib/module/common/constants.js +11 -2
- package/lib/module/common/constants.js.map +1 -1
- package/lib/module/common/data-store.js +13 -30
- package/lib/module/common/data-store.js.map +1 -1
- package/lib/module/common/deeplink-helper.js +168 -0
- package/lib/module/common/deeplink-helper.js.map +1 -0
- package/lib/module/common/device-info-helper.js +161 -0
- package/lib/module/common/device-info-helper.js.map +1 -0
- package/lib/module/common/event-bus.js +39 -0
- package/lib/module/common/event-bus.js.map +1 -1
- package/lib/module/common/network-service.js +119 -17
- package/lib/module/common/network-service.js.map +1 -1
- package/lib/module/common/reporter.js +29 -10
- package/lib/module/common/reporter.js.map +1 -1
- package/lib/module/common/storage-helper.js +221 -0
- package/lib/module/common/storage-helper.js.map +1 -0
- package/lib/module/common/utils.js +20 -2
- package/lib/module/common/utils.js.map +1 -1
- package/lib/module/eedl/eedl.js +198 -44
- package/lib/module/eedl/eedl.js.map +1 -1
- package/lib/module/index.js +279 -47
- package/lib/module/index.js.map +1 -1
- package/lib/module/models/mp-client-sdk.js +16 -9
- package/lib/module/models/mp-client-sdk.js.map +1 -1
- package/lib/module/processors/data-element.processor.js +51 -7
- package/lib/module/processors/data-element.processor.js.map +1 -1
- package/lib/module/processors/visit-id.processor.js +78 -15
- package/lib/module/processors/visit-id.processor.js.map +1 -1
- package/lib/typescript/{common → src/common}/app-types.d.ts +29 -9
- package/lib/typescript/{common → src/common}/constants.d.ts +0 -1
- package/lib/typescript/{common → src/common}/data-store.d.ts +3 -8
- package/lib/typescript/src/common/deeplink-helper.d.ts +60 -0
- package/lib/typescript/src/common/device-info-helper.d.ts +54 -0
- package/lib/typescript/src/common/event-bus.d.ts +21 -0
- package/lib/typescript/src/common/network-service.d.ts +32 -0
- package/lib/typescript/src/common/storage-helper.d.ts +47 -0
- package/lib/typescript/{common → src/common}/utils.d.ts +7 -0
- package/lib/typescript/{eedl → src/eedl}/eedl.d.ts +43 -1
- package/lib/typescript/{index.d.ts → src/index.d.ts} +39 -5
- package/lib/typescript/{models → src/models}/mp-client-sdk.d.ts +7 -0
- package/lib/typescript/src/processors/visit-id.processor.d.ts +23 -0
- package/package.json +26 -42
- package/src/common/app-types.ts +32 -10
- package/src/common/constants.ts +0 -6
- package/src/common/data-store.ts +8 -30
- package/src/common/deeplink-helper.ts +181 -0
- package/src/common/device-info-helper.ts +190 -0
- package/src/common/event-bus.ts +39 -0
- package/src/common/network-service.ts +154 -23
- package/src/common/reporter.ts +31 -10
- package/src/common/storage-helper.ts +266 -0
- package/src/common/utils.ts +20 -2
- package/src/eedl/eedl.ts +225 -51
- package/src/index.tsx +332 -67
- package/src/models/mp-client-sdk.ts +8 -0
- package/src/processors/data-element.processor.ts +85 -7
- package/src/processors/visit-id.processor.ts +92 -22
- package/lib/commonjs/processors/trans-function.processor.js +0 -73
- package/lib/commonjs/processors/trans-function.processor.js.map +0 -1
- package/lib/module/processors/trans-function.processor.js +0 -66
- package/lib/module/processors/trans-function.processor.js.map +0 -1
- package/lib/typescript/common/event-bus.d.ts +0 -6
- package/lib/typescript/common/network-service.d.ts +0 -8
- package/lib/typescript/processors/trans-function.processor.d.ts +0 -12
- package/lib/typescript/processors/visit-id.processor.d.ts +0 -9
- package/src/processors/trans-function.processor.ts +0 -85
- /package/lib/typescript/{common → src/common}/logger.d.ts +0 -0
- /package/lib/typescript/{common → src/common}/reporter.d.ts +0 -0
- /package/lib/typescript/{models → src/models}/geo-api-response.d.ts +0 -0
- /package/lib/typescript/{processors → src/processors}/data-element.processor.d.ts +0 -0
- /package/lib/typescript/{processors → src/processors}/geo-location.processor.d.ts +0 -0
- /package/lib/typescript/{processors → src/processors}/qc.processor.d.ts +0 -0
- /package/lib/typescript/{processors → src/processors}/tag.processor.d.ts +0 -0
|
@@ -1,19 +1,26 @@
|
|
|
1
|
-
export let
|
|
2
|
-
|
|
1
|
+
export let DeStorageDuration = /*#__PURE__*/function (DeStorageDuration) {
|
|
2
|
+
DeStorageDuration["NONE"] = "NONE";
|
|
3
|
+
DeStorageDuration["EVENT"] = "EVENT";
|
|
4
|
+
DeStorageDuration["SESSION"] = "SESSION";
|
|
5
|
+
DeStorageDuration["VISITOR"] = "VISITOR";
|
|
6
|
+
return DeStorageDuration;
|
|
7
|
+
}({});
|
|
8
|
+
export let ParamResourceEncodingType = /*#__PURE__*/function (ParamResourceEncodingType) {
|
|
3
9
|
ParamResourceEncodingType["URL_ENC"] = "URL_ENC";
|
|
4
10
|
ParamResourceEncodingType["BASE64"] = "BASE64";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
11
|
+
return ParamResourceEncodingType;
|
|
12
|
+
}({});
|
|
13
|
+
export let ParamResourceHashType = /*#__PURE__*/function (ParamResourceHashType) {
|
|
8
14
|
ParamResourceHashType["SHA256"] = "SHA256";
|
|
9
15
|
ParamResourceHashType["SHA512"] = "SHA512";
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
16
|
+
return ParamResourceHashType;
|
|
17
|
+
}({});
|
|
18
|
+
export let ParamResourceValSrc = /*#__PURE__*/function (ParamResourceValSrc) {
|
|
13
19
|
ParamResourceValSrc["STATIC"] = "STATIC";
|
|
14
20
|
ParamResourceValSrc["DE"] = "DE";
|
|
15
21
|
ParamResourceValSrc["TRANS_FUNC"] = "TRANS_FUNC";
|
|
16
22
|
ParamResourceValSrc["CHILDREN"] = "CHILDREN";
|
|
17
23
|
ParamResourceValSrc["TG_JSON_PATH"] = "TG_JSON_PATH";
|
|
18
|
-
|
|
24
|
+
return ParamResourceValSrc;
|
|
25
|
+
}({});
|
|
19
26
|
//# sourceMappingURL=mp-client-sdk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ParamResourceEncodingType","ParamResourceHashType","ParamResourceValSrc"],"sources":["mp-client-sdk.ts"],"sourcesContent":["import type { MapLike } from '../common/app-types';\n\nexport interface ClientSdkDeItem {\n nm: string;\n typ: string;\n key?: string;\n def?: any;\n cl?: boolean;\n lwcase?: boolean;\n fn?: (deHelper: any, input: any) => any;\n isAsync?: boolean;\n fnTOut?: number;\n}\n\nexport enum ParamResourceEncodingType {\n URL_ENC = 'URL_ENC',\n BASE64 = 'BASE64',\n}\n\nexport enum ParamResourceHashType {\n SHA256 = 'SHA256',\n SHA512 = 'SHA512',\n}\n\nexport enum ParamResourceValSrc {\n STATIC = 'STATIC',\n DE = 'DE',\n TRANS_FUNC = 'TRANS_FUNC',\n CHILDREN = 'CHILDREN',\n TG_JSON_PATH = 'TG_JSON_PATH',\n}\n\nexport interface SdkParamEncodingTransformer {\n nm: string;\n eTyp: 'URL_ENC' | 'BASE64';\n o?: number;\n}\n\nexport interface SdkParamHashingTransformer {\n nm: string;\n hTyp: ParamResourceHashType;\n o?: number;\n}\n\nexport interface SdkParamIgnoreEmptyTransformer {\n nm: string;\n igEmpty: boolean;\n o?: number; // order\n}\n\nexport type TFType = (\n | SdkParamHashingTransformer\n | SdkParamEncodingTransformer\n | SdkParamIgnoreEmptyTransformer\n)[];\n\nexport interface ClientSdkParamItem {\n id: string; // id\n nm: string; // name\n rqd?: boolean; // is mandatory\n tf?: TFType; // transformation array\n prLvl?: boolean; // is provider level attribute\n pId?: string; // parent id\n sv?: string; // static value\n de?: string; // data element id\n tfId?: string; // transformation function id\n children?: ClientSdkParamItem[];\n exclude_from_req_body?: boolean;\n fKey: string; // flat key\n val_src: string;\n}\n\nexport interface ClientSdkQcCondition {\n param: string; // param name\n i?: string[]; // include conditions\n e?: string[]; // exclude conditions\n i_ect: boolean; // is exact match for include\n i_cs?: boolean; // is case-sensitive for include\n e_ect?: boolean; // is exact match for exclude\n e_cs?: boolean; // is case-sensitive for exclude\n}\n\nexport interface ClientSdkPrItem {\n nm: string;\n url?: string; // base url\n typ: string; // js or img provider\n sTyp: string; // r or i sub type\n rParams?: MapLike<ClientSdkParamItem>; // parameters\n hrs?: MapLike<string>; // headers\n ext?: string; // sdk extras joined into a string\n src?: string; // src of the sdk\n sync?: boolean; // should be loaded sync or async\n pr: string; // whitelisted or black listed\n chld?: boolean; // has at least one parameter whose val_src is CHILDREN\n}\n\nexport interface ClientSdkTfnItem {\n nm: string; // name\n fn: (input: any) => any; // js function in case this is a jsv data element\n rParams: MapLike<ClientSdkParamItem>; // parameters\n}\n\nexport interface ClientSdkQcItem {\n nm: string;\n id: string;\n c: ClientSdkQcCondition[];\n}\n\nexport interface ClientSdkTagItem {\n nm: string; // name\n p: string; // provider id\n url: string; // tag url\n rParams?: MapLike<ClientSdkParamItem>;\n st: number; // start time - in epoch seconds\n ex: number; // expiry time - in epoch seconds\n qc: string[];\n img?: boolean; // is image tag\n wrk?: boolean; // is web worker compatible\n chld?: boolean; // has at least one parameter whose val_src is CHILDREN\n}\n\nexport interface ClientSdkSettingsItem {\n dbg: boolean; // debug_enabled\n err: boolean; // error_enabled\n c_dom: string; // default cookie domain\n v_dur: number; // visit duration\n c_url: string; // collector_url\n bare_c_url?: string; // bare collector url - transient variable\n wh_idl?: string[]; // list of whitelisted idl events\n wh_domains?: string[]; // list of white listed domains\n c_url_lkp?: MapLike<{ v: string; ig: boolean; ect: boolean }>; // collector url look up\n v_id: string; // vendor_id\n p_id: string; // project_id\n ev: string; // environment\n ev_id: string; // environment id\n dly: number; // trigger_delay\n sst: boolean; // should enable server side. this will be set to true if there is atleast one sever side tag defined\n idl: boolean; // should enable ID Link service. this will be set to true if the vendor has ID Link enabled\n c_typ?: string; // the type of CSP, example nonce.\n c_src?: string; // the source of CSP, example meta_tag for nonce type.\n c_key?: string; // the data for CSP.\n v: string; // core sdk version\n bld_dt: string; // sdk build date and time from MP - this is not for the core sdk\n p_view?: boolean; // should fire page info call or not to metrics\n dws_c_t: 'j' | 'n'; // client side down stream (j = java, n = node)\n dws_s_t: 'j' | 'n'; // server side down stream (j = java, n = node)\n}\n\nexport interface BaseResourceParamType {\n id: string; // id of param\n nm: string; // name\n o?: number; // order\n pId?: string; // parent id\n children?: BaseResourceParamType[];\n}\n\nexport interface MpClientSdk {\n langKey: string; // language data element id\n pcKey: string; // privacy compliance key\n cDomKey?: string; // collector domain tfn key\n domWListKey?: string; // domain white list tfn function\n d: MapLike<ClientSdkDeItem>; // data element map\n qc?: ClientSdkQcItem[]; // qualification criteria\n t?: MapLike<ClientSdkTagItem>; // tag map\n p?: MapLike<ClientSdkPrItem>; // provider map\n tfn?: MapLike<ClientSdkTfnItem>; // list of transformation functions\n s: ClientSdkSettingsItem; // settings data item\n dtmE: string[]; // list of dtm direct call events magic pixel should be interested in\n ctmE: string[]; // list of custom javascript event magic pixel should be interested in\n mpDlE: string[]; // list of MagicPixel data layer event magic pixel should be interested in\n sseDtmE: string[]; // list of server side dtm events that we should trigger sst tag\n sseCtmE: string[]; // list of custom window events that we should trigger sst tag\n sseMpDlE: string[]; // list of mp dl events that should trigger the sst tag\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["DeStorageDuration","ParamResourceEncodingType","ParamResourceHashType","ParamResourceValSrc"],"sources":["mp-client-sdk.ts"],"sourcesContent":["import type { MapLike } from '../common/app-types';\n\nexport interface ClientSdkDeItem {\n nm: string;\n typ: string;\n key?: string;\n def?: any;\n cl?: boolean;\n lwcase?: boolean;\n fn?: (deHelper: any, input: any) => any;\n isAsync?: boolean;\n fnTOut?: number;\n stDur?: DeStorageDuration; // storage duration\n}\n\nexport enum DeStorageDuration {\n NONE = 'NONE',\n EVENT = 'EVENT',\n SESSION = 'SESSION',\n VISITOR = 'VISITOR',\n}\n\nexport enum ParamResourceEncodingType {\n URL_ENC = 'URL_ENC',\n BASE64 = 'BASE64',\n}\n\nexport enum ParamResourceHashType {\n SHA256 = 'SHA256',\n SHA512 = 'SHA512',\n}\n\nexport enum ParamResourceValSrc {\n STATIC = 'STATIC',\n DE = 'DE',\n TRANS_FUNC = 'TRANS_FUNC',\n CHILDREN = 'CHILDREN',\n TG_JSON_PATH = 'TG_JSON_PATH',\n}\n\nexport interface SdkParamEncodingTransformer {\n nm: string;\n eTyp: 'URL_ENC' | 'BASE64';\n o?: number;\n}\n\nexport interface SdkParamHashingTransformer {\n nm: string;\n hTyp: ParamResourceHashType;\n o?: number;\n}\n\nexport interface SdkParamIgnoreEmptyTransformer {\n nm: string;\n igEmpty: boolean;\n o?: number; // order\n}\n\nexport type TFType = (\n | SdkParamHashingTransformer\n | SdkParamEncodingTransformer\n | SdkParamIgnoreEmptyTransformer\n)[];\n\nexport interface ClientSdkParamItem {\n id: string; // id\n nm: string; // name\n rqd?: boolean; // is mandatory\n tf?: TFType; // transformation array\n prLvl?: boolean; // is provider level attribute\n pId?: string; // parent id\n sv?: string; // static value\n de?: string; // data element id\n tfId?: string; // transformation function id\n children?: ClientSdkParamItem[];\n exclude_from_req_body?: boolean;\n fKey: string; // flat key\n val_src: string;\n}\n\nexport interface ClientSdkQcCondition {\n param: string; // param name\n i?: string[]; // include conditions\n e?: string[]; // exclude conditions\n i_ect: boolean; // is exact match for include\n i_cs?: boolean; // is case-sensitive for include\n e_ect?: boolean; // is exact match for exclude\n e_cs?: boolean; // is case-sensitive for exclude\n}\n\nexport interface ClientSdkPrItem {\n nm: string;\n url?: string; // base url\n typ: string; // js or img provider\n sTyp: string; // r or i sub type\n rParams?: MapLike<ClientSdkParamItem>; // parameters\n hrs?: MapLike<string>; // headers\n ext?: string; // sdk extras joined into a string\n src?: string; // src of the sdk\n sync?: boolean; // should be loaded sync or async\n pr: string; // whitelisted or black listed\n chld?: boolean; // has at least one parameter whose val_src is CHILDREN\n}\n\nexport interface ClientSdkTfnItem {\n nm: string; // name\n fn: (input: any) => any; // js function in case this is a jsv data element\n rParams: MapLike<ClientSdkParamItem>; // parameters\n}\n\nexport interface ClientSdkQcItem {\n nm: string;\n id: string;\n c: ClientSdkQcCondition[];\n}\n\nexport interface ClientSdkTagItem {\n nm: string; // name\n p: string; // provider id\n url: string; // tag url\n rParams?: MapLike<ClientSdkParamItem>;\n st: number; // start time - in epoch seconds\n ex: number; // expiry time - in epoch seconds\n qc: string[];\n img?: boolean; // is image tag\n wrk?: boolean; // is web worker compatible\n chld?: boolean; // has at least one parameter whose val_src is CHILDREN\n}\n\nexport interface ClientSdkSettingsItem {\n dbg: boolean; // debug_enabled\n err: boolean; // error_enabled\n c_dom: string; // default cookie domain\n v_dur: number; // visit duration\n c_url: string; // collector_url\n bare_c_url?: string; // bare collector url - transient variable\n wh_idl?: string[]; // list of whitelisted idl events\n wh_domains?: string[]; // list of white listed domains\n c_url_lkp?: MapLike<{ v: string; ig: boolean; ect: boolean }>; // collector url look up\n v_id: string; // vendor_id\n p_id: string; // project_id\n ev: string; // environment\n ev_id: string; // environment id\n dly: number; // trigger_delay\n sst: boolean; // should enable server side. this will be set to true if there is atleast one sever side tag defined\n idl: boolean; // should enable ID Link service. this will be set to true if the vendor has ID Link enabled\n c_typ?: string; // the type of CSP, example nonce.\n c_src?: string; // the source of CSP, example meta_tag for nonce type.\n c_key?: string; // the data for CSP.\n v: string; // core sdk version\n bld_dt: string; // sdk build date and time from MP - this is not for the core sdk\n p_view?: boolean; // should fire page info call or not to metrics\n dws_c_t: 'j' | 'n'; // client side down stream (j = java, n = node)\n dws_s_t: 'j' | 'n'; // server side down stream (j = java, n = node)\n}\n\nexport interface BaseResourceParamType {\n id: string; // id of param\n nm: string; // name\n o?: number; // order\n pId?: string; // parent id\n children?: BaseResourceParamType[];\n}\n\nexport interface MpClientSdk {\n langKey: string; // language data element id\n pcKey: string; // privacy compliance key\n cDomKey?: string; // collector domain tfn key\n domWListKey?: string; // domain white list tfn function\n d: MapLike<ClientSdkDeItem>; // data element map\n qc?: ClientSdkQcItem[]; // qualification criteria\n t?: MapLike<ClientSdkTagItem>; // tag map\n p?: MapLike<ClientSdkPrItem>; // provider map\n tfn?: MapLike<ClientSdkTfnItem>; // list of transformation functions\n s: ClientSdkSettingsItem; // settings data item\n dtmE: string[]; // list of dtm direct call events magic pixel should be interested in\n ctmE: string[]; // list of custom javascript event magic pixel should be interested in\n mpDlE: string[]; // list of MagicPixel data layer event magic pixel should be interested in\n sseDtmE: string[]; // list of server side dtm events that we should trigger sst tag\n sseCtmE: string[]; // list of custom window events that we should trigger sst tag\n sseMpDlE: string[]; // list of mp dl events that should trigger the sst tag\n}\n"],"mappings":"AAeA,WAAYA,iBAAiB,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;AAO7B,WAAYC,yBAAyB,0BAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAA,OAAzBA,yBAAyB;AAAA;AAKrC,WAAYC,qBAAqB,0BAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAAA,OAArBA,qBAAqB;AAAA;AAKjC,WAAYC,mBAAmB,0BAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAA,OAAnBA,mBAAmB;AAAA","ignoreList":[]}
|
|
@@ -3,12 +3,20 @@
|
|
|
3
3
|
* @param de
|
|
4
4
|
*/
|
|
5
5
|
import { Utils } from '../common/utils';
|
|
6
|
+
import { DeStorageDuration } from '../models/mp-client-sdk';
|
|
6
7
|
import { DataStore } from '../common/data-store';
|
|
7
8
|
import { Logger } from '../common/logger';
|
|
9
|
+
import { StorageHelper } from '../common/storage-helper';
|
|
8
10
|
|
|
9
11
|
// Note: JSV (JavaScript functions) are not supported in React Native
|
|
10
12
|
// This timeout function is kept for potential future use
|
|
11
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Check if a value is defined (not null, undefined, or empty string)
|
|
16
|
+
*/
|
|
17
|
+
function isDefined(value) {
|
|
18
|
+
return value !== null && value !== undefined && value !== '';
|
|
19
|
+
}
|
|
12
20
|
const dElemProcessors = {
|
|
13
21
|
mpdl: (helper, elem, eventData) => {
|
|
14
22
|
return processMpDl(helper, elem, eventData);
|
|
@@ -47,16 +55,18 @@ const dElemProcessors = {
|
|
|
47
55
|
},
|
|
48
56
|
mp_visit_depth: (_helper, _elem, _eventData) => {
|
|
49
57
|
var _DataStore$getVisitIn2;
|
|
50
|
-
|
|
58
|
+
// Visit depth should start at 1 (first page), not 0
|
|
59
|
+
// Return at least 1 to ensure first page view shows depth = 1
|
|
60
|
+
const depth = ((_DataStore$getVisitIn2 = DataStore.getVisitInfo()) === null || _DataStore$getVisitIn2 === void 0 ? void 0 : _DataStore$getVisitIn2.visitDepth) ?? 0;
|
|
61
|
+
return Math.max(1, depth);
|
|
51
62
|
},
|
|
52
63
|
/* Browser/Platform data elements */
|
|
53
64
|
pg_browser: (_helper, _elem, _eventData) => {
|
|
54
65
|
return DataStore.getDeviceOs(); // Using device OS as browser equivalent
|
|
55
66
|
},
|
|
56
|
-
/* User status data element -
|
|
67
|
+
/* User status data element - 1 = new visitor (first visit), 0 = returning visitor */
|
|
57
68
|
mp_new_vis: (_helper, _elem, _eventData) => {
|
|
58
|
-
|
|
59
|
-
return '1'; // Default to new visitor
|
|
69
|
+
return DataStore.getMpUserStatus();
|
|
60
70
|
},
|
|
61
71
|
pg_random: (_helper, _elem, _eventData) => {
|
|
62
72
|
return Utils.getUniqueID();
|
|
@@ -90,6 +100,27 @@ const dElemProcessors = {
|
|
|
90
100
|
pg_mp_dl_evt_name: (_helper, _elem, _eventData) => {
|
|
91
101
|
_elem.key = 'ev._eventName';
|
|
92
102
|
return processMpDl(_helper, _elem, _eventData);
|
|
103
|
+
},
|
|
104
|
+
pg_hash: (_helper, _elem, _eventData) => {
|
|
105
|
+
return '';
|
|
106
|
+
},
|
|
107
|
+
pg_title: (_helper, _elem, _eventData) => {
|
|
108
|
+
return '';
|
|
109
|
+
},
|
|
110
|
+
pg_params: (_helper, _elem, _eventData) => {
|
|
111
|
+
return '';
|
|
112
|
+
},
|
|
113
|
+
pg_domain: (_helper, _elem, _eventData) => {
|
|
114
|
+
return '';
|
|
115
|
+
},
|
|
116
|
+
pg_srch: (_helper, _elem, _eventData) => {
|
|
117
|
+
return '';
|
|
118
|
+
},
|
|
119
|
+
pg_referrer: (_helper, _elem, _eventData) => {
|
|
120
|
+
return '';
|
|
121
|
+
},
|
|
122
|
+
pg_url: (_helper, _elem, _eventData) => {
|
|
123
|
+
return '';
|
|
93
124
|
}
|
|
94
125
|
// Note: JSV (JavaScript functions) processor removed - not supported in React Native
|
|
95
126
|
};
|
|
@@ -135,11 +166,24 @@ export async function processOneDataElement(_sdkDataElements, deItem, deHelper,
|
|
|
135
166
|
try {
|
|
136
167
|
if (dElemProcessors[deItem.typ]) {
|
|
137
168
|
Logger.logDbg('Processing data element: ', deItem.nm);
|
|
138
|
-
|
|
169
|
+
let deValue = await dElemProcessors[deItem.typ](deHelper, deItem, eventData);
|
|
170
|
+
|
|
171
|
+
// Default storage duration to EVENT if not defined
|
|
172
|
+
if (!deItem.stDur) {
|
|
173
|
+
deItem.stDur = DeStorageDuration.EVENT;
|
|
174
|
+
}
|
|
139
175
|
|
|
140
|
-
//
|
|
141
|
-
|
|
176
|
+
// If data element has persistence enabled, store the value
|
|
177
|
+
StorageHelper.deStorageDurationSet(deItem.key, deValue, deItem.stDur);
|
|
142
178
|
|
|
179
|
+
// If value is not defined, try to retrieve from storage
|
|
180
|
+
// This allows values like gclid to persist across page loads
|
|
181
|
+
if (!isDefined(deValue)) {
|
|
182
|
+
const storedValue = StorageHelper.deStorageDurationGet(deItem.key, deItem.def, deItem.stDur);
|
|
183
|
+
if (isDefined(storedValue)) {
|
|
184
|
+
deValue = storedValue;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
143
187
|
return deValue;
|
|
144
188
|
} else {
|
|
145
189
|
Logger.logError('No processor found for de typ: ', deItem.typ);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Utils","DataStore","Logger","dElemProcessors","mpdl","helper","elem","eventData","processMpDl","pg_os","_helper","_elem","_eventData","getOperatingSystem","visit_id","getVisitId","pg_dtype","getDeviceType","mp_geo_pcode","_DataStore$getGeoInfo","getGeoInfo","postal","undefined","mp_geo_country","_DataStore$getGeoInfo2","country","mp_geo_region","_DataStore$getGeoInfo3","region","mp_geo_city","_DataStore$getGeoInfo4","city","mp_visit_count","_DataStore$getVisitIn","getVisitInfo","visitCt","mp_visit_depth","_DataStore$getVisitIn2","visitDepth","pg_browser","getDeviceOs","mp_new_vis","pg_random","getUniqueID","pg_empty_val","mp_dvc_id","getDeviceId","mp_vis_id","getMpId","mp_org_id","getOrgId","mp_c_sdk_v","getCoreVersion","mp_c_sdk_env","getMpEnv","pg_mp_dl_evt_id","key","pg_mp_dl_evt_ts","pg_mp_dl_evt_name","generalCleanAndEscape","de","val","fn","cl","_val","trim","indexOf","replace","lwcase","_val2","toLowerCase","err","logError","def","processOneDataElement","_sdkDataElements","deItem","deHelper","_optDeKeys","typ","logDbg","nm","deValue","processDataElements","sdkDataElements","optDeKeys","getDataElements","deKeys","length","Object","keys","getDataElementHelpers","setDataElements","DataElementProcessor"],"sources":["data-element.processor.ts"],"sourcesContent":["/**\n * Process data element of type url parameter\n * @param de\n */\nimport { Utils } from '../common/utils';\nimport type { DeJsvHelper, MapLike } from '../common/app-types';\nimport type { ClientSdkDeItem } from '../models/mp-client-sdk';\nimport { DataStore } from '../common/data-store';\nimport { Logger } from '../common/logger';\n\n// Note: JSV (JavaScript functions) are not supported in React Native\n// This timeout function is kept for potential future use\n\nconst dElemProcessors: MapLike<\n (\n helper: DeJsvHelper,\n elem: ClientSdkDeItem,\n eventData?: Record<string, any>\n ) => any\n> = {\n mpdl: (\n helper: DeJsvHelper,\n elem: ClientSdkDeItem,\n eventData?: Record<string, any>\n ): any => {\n return processMpDl(helper, elem, eventData);\n },\n pg_os: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n // already browser is in lower case, so no need to do it again\n return DataStore.getOperatingSystem();\n },\n visit_id: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return DataStore.getVisitId();\n },\n pg_dtype: (_helper: DeJsvHelper, _elem: ClientSdkDeItem): any => {\n return DataStore.getDeviceType();\n },\n /* Geo location data elements */\n mp_geo_pcode: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return DataStore.getGeoInfo()?.postal ?? undefined;\n },\n mp_geo_country: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return DataStore.getGeoInfo()?.country ?? undefined;\n },\n\n mp_geo_region: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return DataStore.getGeoInfo()?.region ?? undefined;\n },\n mp_geo_city: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return DataStore.getGeoInfo()?.city ?? undefined;\n },\n /* Visit info data elements */\n mp_visit_count: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return DataStore.getVisitInfo()?.visitCt ?? 0;\n },\n mp_visit_depth: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return DataStore.getVisitInfo()?.visitDepth ?? 0;\n },\n /* Browser/Platform data elements */\n pg_browser: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return DataStore.getDeviceOs(); // Using device OS as browser equivalent\n },\n /* User status data element - TODO: Implement getMpUserStatus in DataStore */\n mp_new_vis: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n // TODO: Implement user status functionality\n return '1'; // Default to new visitor\n },\n pg_random: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return Utils.getUniqueID();\n },\n pg_empty_val: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return '';\n },\n mp_dvc_id: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return DataStore.getDeviceId();\n },\n mp_vis_id: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return DataStore.getMpId();\n },\n mp_org_id: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return DataStore.getOrgId();\n },\n mp_c_sdk_v: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return DataStore.getCoreVersion();\n },\n mp_c_sdk_env: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return DataStore.getMpEnv();\n },\n pg_mp_dl_evt_id: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n _elem.key = 'ev._id';\n return processMpDl(_helper, _elem, _eventData);\n },\n pg_mp_dl_evt_ts: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n _elem.key = 'ev._tsMs';\n return processMpDl(_helper, _elem, _eventData);\n },\n pg_mp_dl_evt_name: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n _elem.key = 'ev._eventName';\n return processMpDl(_helper, _elem, _eventData);\n },\n // Note: JSV (JavaScript functions) processor removed - not supported in React Native\n};\n\nfunction generalCleanAndEscape(\n helper: DeJsvHelper,\n de: ClientSdkDeItem,\n val: any\n): string {\n if (typeof de.fn === 'function') {\n val = de.fn(helper, val);\n return val;\n } else {\n if (typeof val === 'string') {\n // clean\n if (de.cl) {\n val = val?.trim();\n // see if it has a single quote or double quote, if so, escape it\n if (val.indexOf(`'`) > -1) {\n val = val.replace(/'/g, '');\n }\n\n if (val.indexOf(`\"`) > -1) {\n val = val.replace(/\"/g, '');\n }\n }\n if (de.lwcase) {\n val = val?.toLowerCase();\n }\n }\n return val;\n }\n}\n\nfunction processMpDl(\n helper: DeJsvHelper,\n de: ClientSdkDeItem,\n eventData?: Record<string, any>\n): any {\n try {\n if (de.key) {\n if (eventData && typeof eventData[de.key] !== 'undefined') {\n return generalCleanAndEscape(helper, de, eventData[de.key]);\n }\n }\n } catch (err) {\n Logger.logError('Error processing mp dl variable: ', err);\n }\n return generalCleanAndEscape(helper, de, de.def);\n}\n\nexport async function processOneDataElement(\n _sdkDataElements: MapLike<ClientSdkDeItem>,\n deItem: ClientSdkDeItem,\n deHelper: any,\n eventData?: Record<string, any>,\n _optDeKeys?: string[]\n): Promise<any> {\n try {\n if (dElemProcessors[deItem.typ]) {\n Logger.logDbg('Processing data element: ', deItem.nm);\n const deValue = await dElemProcessors[deItem.typ](\n deHelper,\n deItem,\n eventData\n );\n\n // TODO: Implement storage duration functionality for React Native\n // For now, we'll just return the value without persistence\n\n return deValue;\n } else {\n Logger.logError('No processor found for de typ: ', deItem.typ);\n }\n } catch (err) {\n Logger.logError(\n 'Error processing data element: ',\n deItem.key,\n ' with error: ',\n err\n );\n }\n\n return deItem.def;\n}\n\n/**\n * Process all the data elements at once, or if a set of keys are specified, processes only\n * those keys and updates the dataElements object in DataStore\n * @param sdkDataElements\n * @param eventData\n * @param optDeKeys\n */\nexport async function processDataElements(\n sdkDataElements: MapLike<ClientSdkDeItem>,\n eventData?: Record<string, any>,\n optDeKeys?: string[]\n): Promise<MapLike<any>> {\n const de = DataStore.getDataElements();\n const deKeys =\n optDeKeys && optDeKeys.length > 0\n ? optDeKeys\n : Object.keys(sdkDataElements);\n\n try {\n const deHelper = DataStore.getDataElementHelpers();\n for (const key of deKeys) {\n de[key] = await processOneDataElement(\n sdkDataElements,\n sdkDataElements[key],\n deHelper,\n eventData,\n optDeKeys\n );\n }\n } catch (err) {\n Logger.logError('Error processing data elements: ', err);\n }\n\n DataStore.setDataElements(de);\n Logger.logDbg('Data Elements: ', de);\n return de;\n}\n\nexport class DataElementProcessor {\n /**\n * Process all the data elements at once, or if a set of keys are specified, processes only\n * those keys and updates the dataElements object in DataStore\n * @param sdkDataElements\n * @param eventData\n * @param optDeKeys\n */\n static async processDataElements(\n sdkDataElements: MapLike<ClientSdkDeItem>,\n eventData?: Record<string, any>,\n optDeKeys?: string[]\n ): Promise<MapLike<any>> {\n return processDataElements(sdkDataElements, eventData, optDeKeys);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["Utils","DeStorageDuration","DataStore","Logger","StorageHelper","isDefined","value","undefined","dElemProcessors","mpdl","helper","elem","eventData","processMpDl","pg_os","_helper","_elem","_eventData","getOperatingSystem","visit_id","getVisitId","pg_dtype","getDeviceType","mp_geo_pcode","_DataStore$getGeoInfo","getGeoInfo","postal","mp_geo_country","_DataStore$getGeoInfo2","country","mp_geo_region","_DataStore$getGeoInfo3","region","mp_geo_city","_DataStore$getGeoInfo4","city","mp_visit_count","_DataStore$getVisitIn","getVisitInfo","visitCt","mp_visit_depth","_DataStore$getVisitIn2","depth","visitDepth","Math","max","pg_browser","getDeviceOs","mp_new_vis","getMpUserStatus","pg_random","getUniqueID","pg_empty_val","mp_dvc_id","getDeviceId","mp_vis_id","getMpId","mp_org_id","getOrgId","mp_c_sdk_v","getCoreVersion","mp_c_sdk_env","getMpEnv","pg_mp_dl_evt_id","key","pg_mp_dl_evt_ts","pg_mp_dl_evt_name","pg_hash","pg_title","pg_params","pg_domain","pg_srch","pg_referrer","pg_url","generalCleanAndEscape","de","val","fn","cl","_val","trim","indexOf","replace","lwcase","_val2","toLowerCase","err","logError","def","processOneDataElement","_sdkDataElements","deItem","deHelper","_optDeKeys","typ","logDbg","nm","deValue","stDur","EVENT","deStorageDurationSet","storedValue","deStorageDurationGet","processDataElements","sdkDataElements","optDeKeys","getDataElements","deKeys","length","Object","keys","getDataElementHelpers","setDataElements","DataElementProcessor"],"sources":["data-element.processor.ts"],"sourcesContent":["/**\n * Process data element of type url parameter\n * @param de\n */\nimport { Utils } from '../common/utils';\nimport type { DeJsvHelper, MapLike } from '../common/app-types';\nimport { DeStorageDuration } from '../models/mp-client-sdk';\nimport type { ClientSdkDeItem } from '../models/mp-client-sdk';\nimport { DataStore } from '../common/data-store';\nimport { Logger } from '../common/logger';\nimport { StorageHelper } from '../common/storage-helper';\n\n// Note: JSV (JavaScript functions) are not supported in React Native\n// This timeout function is kept for potential future use\n\n/**\n * Check if a value is defined (not null, undefined, or empty string)\n */\nfunction isDefined(value: any): boolean {\n return value !== null && value !== undefined && value !== '';\n}\n\nconst dElemProcessors: MapLike<\n (\n helper: DeJsvHelper,\n elem: ClientSdkDeItem,\n eventData?: Record<string, any>\n ) => any\n> = {\n mpdl: (\n helper: DeJsvHelper,\n elem: ClientSdkDeItem,\n eventData?: Record<string, any>\n ): any => {\n return processMpDl(helper, elem, eventData);\n },\n pg_os: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n // already browser is in lower case, so no need to do it again\n return DataStore.getOperatingSystem();\n },\n visit_id: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return DataStore.getVisitId();\n },\n pg_dtype: (_helper: DeJsvHelper, _elem: ClientSdkDeItem): any => {\n return DataStore.getDeviceType();\n },\n /* Geo location data elements */\n mp_geo_pcode: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return DataStore.getGeoInfo()?.postal ?? undefined;\n },\n mp_geo_country: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return DataStore.getGeoInfo()?.country ?? undefined;\n },\n\n mp_geo_region: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return DataStore.getGeoInfo()?.region ?? undefined;\n },\n mp_geo_city: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return DataStore.getGeoInfo()?.city ?? undefined;\n },\n /* Visit info data elements */\n mp_visit_count: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return DataStore.getVisitInfo()?.visitCt ?? 0;\n },\n mp_visit_depth: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n // Visit depth should start at 1 (first page), not 0\n // Return at least 1 to ensure first page view shows depth = 1\n const depth = DataStore.getVisitInfo()?.visitDepth ?? 0;\n return Math.max(1, depth);\n },\n /* Browser/Platform data elements */\n pg_browser: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return DataStore.getDeviceOs(); // Using device OS as browser equivalent\n },\n /* User status data element - 1 = new visitor (first visit), 0 = returning visitor */\n mp_new_vis: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return DataStore.getMpUserStatus();\n },\n pg_random: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return Utils.getUniqueID();\n },\n pg_empty_val: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return '';\n },\n mp_dvc_id: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return DataStore.getDeviceId();\n },\n mp_vis_id: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return DataStore.getMpId();\n },\n mp_org_id: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return DataStore.getOrgId();\n },\n mp_c_sdk_v: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return DataStore.getCoreVersion();\n },\n mp_c_sdk_env: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return DataStore.getMpEnv();\n },\n pg_mp_dl_evt_id: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n _elem.key = 'ev._id';\n return processMpDl(_helper, _elem, _eventData);\n },\n pg_mp_dl_evt_ts: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n _elem.key = 'ev._tsMs';\n return processMpDl(_helper, _elem, _eventData);\n },\n pg_mp_dl_evt_name: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n _elem.key = 'ev._eventName';\n return processMpDl(_helper, _elem, _eventData);\n },\n pg_hash: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return '';\n },\n pg_title: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return '';\n },\n pg_params: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return '';\n },\n pg_domain: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return '';\n },\n pg_srch: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return '';\n },\n pg_referrer: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return '';\n },\n pg_url: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return '';\n },\n // Note: JSV (JavaScript functions) processor removed - not supported in React Native\n};\n\nfunction generalCleanAndEscape(\n helper: DeJsvHelper,\n de: ClientSdkDeItem,\n val: any\n): string {\n if (typeof de.fn === 'function') {\n val = de.fn(helper, val);\n return val;\n } else {\n if (typeof val === 'string') {\n // clean\n if (de.cl) {\n val = val?.trim();\n // see if it has a single quote or double quote, if so, escape it\n if (val.indexOf(`'`) > -1) {\n val = val.replace(/'/g, '');\n }\n\n if (val.indexOf(`\"`) > -1) {\n val = val.replace(/\"/g, '');\n }\n }\n if (de.lwcase) {\n val = val?.toLowerCase();\n }\n }\n return val;\n }\n}\n\nfunction processMpDl(\n helper: DeJsvHelper,\n de: ClientSdkDeItem,\n eventData?: Record<string, any>\n): any {\n try {\n if (de.key) {\n if (eventData && typeof eventData[de.key] !== 'undefined') {\n return generalCleanAndEscape(helper, de, eventData[de.key]);\n }\n }\n } catch (err) {\n Logger.logError('Error processing mp dl variable: ', err);\n }\n return generalCleanAndEscape(helper, de, de.def);\n}\n\nexport async function processOneDataElement(\n _sdkDataElements: MapLike<ClientSdkDeItem>,\n deItem: ClientSdkDeItem,\n deHelper: any,\n eventData?: Record<string, any>,\n _optDeKeys?: string[]\n): Promise<any> {\n try {\n if (dElemProcessors[deItem.typ]) {\n Logger.logDbg('Processing data element: ', deItem.nm);\n let deValue = await dElemProcessors[deItem.typ](\n deHelper,\n deItem,\n eventData\n );\n\n // Default storage duration to EVENT if not defined\n if (!deItem.stDur) {\n deItem.stDur = DeStorageDuration.EVENT;\n }\n\n // If data element has persistence enabled, store the value\n StorageHelper.deStorageDurationSet(deItem.key, deValue, deItem.stDur);\n\n // If value is not defined, try to retrieve from storage\n // This allows values like gclid to persist across page loads\n if (!isDefined(deValue)) {\n const storedValue = StorageHelper.deStorageDurationGet(\n deItem.key,\n deItem.def,\n deItem.stDur\n );\n if (isDefined(storedValue)) {\n deValue = storedValue;\n }\n }\n\n return deValue;\n } else {\n Logger.logError('No processor found for de typ: ', deItem.typ);\n }\n } catch (err) {\n Logger.logError(\n 'Error processing data element: ',\n deItem.key,\n ' with error: ',\n err\n );\n }\n\n return deItem.def;\n}\n\n/**\n * Process all the data elements at once, or if a set of keys are specified, processes only\n * those keys and updates the dataElements object in DataStore\n * @param sdkDataElements\n * @param eventData\n * @param optDeKeys\n */\nexport async function processDataElements(\n sdkDataElements: MapLike<ClientSdkDeItem>,\n eventData?: Record<string, any>,\n optDeKeys?: string[]\n): Promise<MapLike<any>> {\n const de = DataStore.getDataElements();\n const deKeys =\n optDeKeys && optDeKeys.length > 0\n ? optDeKeys\n : Object.keys(sdkDataElements);\n\n try {\n const deHelper = DataStore.getDataElementHelpers();\n for (const key of deKeys) {\n de[key] = await processOneDataElement(\n sdkDataElements,\n sdkDataElements[key],\n deHelper,\n eventData,\n optDeKeys\n );\n }\n } catch (err) {\n Logger.logError('Error processing data elements: ', err);\n }\n\n DataStore.setDataElements(de);\n Logger.logDbg('Data Elements: ', de);\n return de;\n}\n\nexport class DataElementProcessor {\n /**\n * Process all the data elements at once, or if a set of keys are specified, processes only\n * those keys and updates the dataElements object in DataStore\n * @param sdkDataElements\n * @param eventData\n * @param optDeKeys\n */\n static async processDataElements(\n sdkDataElements: MapLike<ClientSdkDeItem>,\n eventData?: Record<string, any>,\n optDeKeys?: string[]\n ): Promise<MapLike<any>> {\n return processDataElements(sdkDataElements, eventData, optDeKeys);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
2
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
3
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
1
4
|
import { Logger } from '../common/logger';
|
|
2
5
|
import { DataStore } from '../common/data-store';
|
|
3
6
|
import { Constants } from '../common/constants';
|
|
@@ -10,6 +13,25 @@ export class VisitIdProcessor {
|
|
|
10
13
|
await this.setOrResetVisitorId();
|
|
11
14
|
await this.setOrResetVisitInfo(false);
|
|
12
15
|
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Check if visitor ID needs to be retried
|
|
19
|
+
* Called on each page_load to retry if initial fetch failed
|
|
20
|
+
*/
|
|
21
|
+
static async retryVisitorIdIfNeeded() {
|
|
22
|
+
if (!this.visitorIdFetchFailed) {
|
|
23
|
+
return; // No retry needed
|
|
24
|
+
}
|
|
25
|
+
Logger.logDbg('Retrying visitor ID fetch on page_load...');
|
|
26
|
+
await this.setOrResetVisitorId();
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Check if visitor ID is available
|
|
31
|
+
*/
|
|
32
|
+
static hasVisitorId() {
|
|
33
|
+
return !this.visitorIdFetchFailed && DataStore.getVisitorInfo() !== null;
|
|
34
|
+
}
|
|
13
35
|
static async isFirstOpenAfterInstall() {
|
|
14
36
|
try {
|
|
15
37
|
const firstOpenFlag = await DataStore.getDataFromStorage(Constants.KEY_FIRST_OPEN);
|
|
@@ -57,6 +79,7 @@ export class VisitIdProcessor {
|
|
|
57
79
|
let visitInfo = await DataStore.getDataFromStorage(Constants.KEY_MP_IDL_VISIT_ID_INFO);
|
|
58
80
|
if (!visitInfo) {
|
|
59
81
|
// may be first time visit, set up a new visit info object and return
|
|
82
|
+
// Initialize visitDepth to 0, will be incremented to 1 on first page_load
|
|
60
83
|
visitInfo = {
|
|
61
84
|
visitId: Utils.getUniqueID(),
|
|
62
85
|
visitCt: 1,
|
|
@@ -72,7 +95,7 @@ export class VisitIdProcessor {
|
|
|
72
95
|
visitInfo.visitDepth = (((_visitInfo = visitInfo) === null || _visitInfo === void 0 ? void 0 : _visitInfo.visitDepth) ?? 0) + 1;
|
|
73
96
|
} else {
|
|
74
97
|
visitInfo.visitCt = visitInfo.visitCt + 1;
|
|
75
|
-
visitInfo.visitDepth = 0;
|
|
98
|
+
visitInfo.visitDepth = 0; // Reset to 0, will be incremented to 1 on first page_load of new session
|
|
76
99
|
}
|
|
77
100
|
visitInfo.visitTs = Date.now();
|
|
78
101
|
visitInfo.visitVer = 1;
|
|
@@ -86,35 +109,75 @@ export class VisitIdProcessor {
|
|
|
86
109
|
Reporter.reportError('setOrResetVisitInfo', err);
|
|
87
110
|
}
|
|
88
111
|
}
|
|
89
|
-
|
|
90
|
-
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Synchronously increment visit depth in memory, persist to storage in background
|
|
115
|
+
* This prevents race conditions when multiple page_load events fire quickly
|
|
116
|
+
*/
|
|
117
|
+
static incrementVisitDepth() {
|
|
118
|
+
try {
|
|
119
|
+
// Read from in-memory cache (synchronous)
|
|
120
|
+
const visitInfo = DataStore.getVisitInfo();
|
|
121
|
+
if (!visitInfo) {
|
|
122
|
+
Logger.logError('Visit info not initialized. Cannot increment depth.');
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// Increment depth synchronously in memory
|
|
127
|
+
visitInfo.visitDepth = (visitInfo.visitDepth ?? 0) + 1;
|
|
128
|
+
visitInfo.visitTs = Date.now();
|
|
129
|
+
|
|
130
|
+
// Update in-memory cache immediately (synchronous)
|
|
131
|
+
DataStore.setVisitInfo(visitInfo);
|
|
132
|
+
DataStore.addCommonCookie('x-mp-vid', DataStore.visitInfoToString());
|
|
133
|
+
Logger.logDbg('Visit depth incremented to:', visitInfo.visitDepth);
|
|
134
|
+
|
|
135
|
+
// Persist to AsyncStorage in background (fire and forget)
|
|
136
|
+
DataStore.storeData(Constants.KEY_MP_IDL_VISIT_ID_INFO, visitInfo).catch(err => {
|
|
137
|
+
Logger.logError('Error persisting visit depth to storage:', err);
|
|
138
|
+
Reporter.reportError('incrementVisitDepth::persist', err);
|
|
139
|
+
});
|
|
140
|
+
} catch (err) {
|
|
141
|
+
Logger.logError('Error incrementing visit depth:', err);
|
|
142
|
+
Reporter.reportError('incrementVisitDepth', err);
|
|
143
|
+
}
|
|
91
144
|
}
|
|
92
145
|
static async setOrResetVisitorId() {
|
|
93
146
|
try {
|
|
94
147
|
var _visitorInfoData;
|
|
95
148
|
let visitorInfoData = await DataStore.getDataFromStorage(Constants.KEY_MP_IDL_VISITOR_ID_INFO);
|
|
96
149
|
if (!visitorInfoData || visitorInfoData && ((_visitorInfoData = visitorInfoData) === null || _visitorInfoData === void 0 ? void 0 : _visitorInfoData.mId.indexOf('-')) === -1) {
|
|
97
|
-
Logger.logDbg('VisitorInfo not found.
|
|
150
|
+
Logger.logDbg('VisitorInfo not found. Fetching from server with retry');
|
|
98
151
|
// get a new visit id and device id from server and store it in storage
|
|
99
|
-
|
|
152
|
+
// Use retry method for better reliability
|
|
153
|
+
visitorInfoData = await NetworkService.fetchIdlInfoWithRetry(DataStore.getIdlUrl());
|
|
100
154
|
}
|
|
101
155
|
if (!visitorInfoData) {
|
|
156
|
+
// Mark as failed so we can retry on page_load
|
|
157
|
+
this.visitorIdFetchFailed = true;
|
|
158
|
+
Logger.logError('Failed to fetch visitor ID after retries. Will retry on next page_load.');
|
|
102
159
|
return;
|
|
103
|
-
} else {
|
|
104
|
-
DataStore.setVisitorInfo(visitorInfoData);
|
|
105
|
-
// store to db as well
|
|
106
|
-
await DataStore.storeData(Constants.KEY_MP_IDL_VISITOR_ID_INFO, visitorInfoData);
|
|
107
|
-
const cookieValue = encodeURIComponent(JSON.stringify(visitorInfoData));
|
|
108
|
-
DataStore.addCommonCookie('x-mplidl', cookieValue);
|
|
109
|
-
DataStore.addCommonCookie('x-mpidl', cookieValue);
|
|
110
|
-
DataStore.addCommonCookie('x-lmid', visitorInfoData.mId);
|
|
111
|
-
DataStore.addCommonCookie('x-ldid', visitorInfoData.dId);
|
|
112
160
|
}
|
|
161
|
+
|
|
162
|
+
// Success - clear the failure flag
|
|
163
|
+
this.visitorIdFetchFailed = false;
|
|
164
|
+
DataStore.setVisitorInfo(visitorInfoData);
|
|
165
|
+
// store to db as well
|
|
166
|
+
await DataStore.storeData(Constants.KEY_MP_IDL_VISITOR_ID_INFO, visitorInfoData);
|
|
167
|
+
const cookieValue = encodeURIComponent(JSON.stringify(visitorInfoData));
|
|
168
|
+
DataStore.addCommonCookie('x-mplidl', cookieValue);
|
|
169
|
+
DataStore.addCommonCookie('x-mpidl', cookieValue);
|
|
170
|
+
DataStore.addCommonCookie('x-lmid', visitorInfoData.mId);
|
|
171
|
+
DataStore.addCommonCookie('x-ldid', visitorInfoData.dId);
|
|
172
|
+
Logger.logDbg('Visitor ID set successfully:', visitorInfoData.mId);
|
|
113
173
|
} catch (err) {
|
|
114
|
-
Logger.logError(err);
|
|
174
|
+
Logger.logError('Error in setOrResetVisitorId:', err);
|
|
175
|
+
this.visitorIdFetchFailed = true;
|
|
115
176
|
DataStore.setVisitorInfo(null);
|
|
116
177
|
Reporter.reportError('setOrResetVisitorId', err);
|
|
117
178
|
}
|
|
118
179
|
}
|
|
119
180
|
}
|
|
181
|
+
// Track if visitor ID fetch failed so we can retry on page_load
|
|
182
|
+
_defineProperty(VisitIdProcessor, "visitorIdFetchFailed", false);
|
|
120
183
|
//# sourceMappingURL=visit-id.processor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Logger","DataStore","Constants","Reporter","NetworkService","Utils","VisitIdProcessor","init","orgId","initDebugId","setOrResetVisitorId","setOrResetVisitInfo","isFirstOpenAfterInstall","firstOpenFlag","getDataFromStorage","KEY_FIRST_OPEN","storeData","err","logError","getFacebookFBP","fbp","KEY_FBP","Date","now","addCommonCookie","debugId","KEY_MP_DEBUG_ID","indexOf","undefined","getSimpleDebugId","setDebugId","incrementDepth","visitInfo","KEY_MP_IDL_VISIT_ID_INFO","visitId","getUniqueID","visitCt","visitDepth","visitTs","visitVer","_visitInfo","setVisitInfo","visitInfoToString","reportError","incrementVisitDepth","_visitorInfoData","visitorInfoData","KEY_MP_IDL_VISITOR_ID_INFO","mId","logDbg","fetchIdlInfo","getIdlUrl","setVisitorInfo","cookieValue","encodeURIComponent","JSON","stringify","dId"],"sources":["visit-id.processor.ts"],"sourcesContent":["import { Logger } from '../common/logger';\nimport { DataStore } from '../common/data-store';\nimport { Constants } from '../common/constants';\nimport { Reporter } from '../common/reporter';\nimport { NetworkService } from '../common/network-service';\nimport type { VisitInfo, VisitorInfo } from '../common/app-types';\nimport { Utils } from '../common/utils';\n\nexport class VisitIdProcessor {\n static async init(orgId: string): Promise<void> {\n await this.initDebugId(orgId);\n await this.setOrResetVisitorId();\n await this.setOrResetVisitInfo(false);\n }\n\n static async isFirstOpenAfterInstall(): Promise<boolean> {\n try {\n const firstOpenFlag = await DataStore.getDataFromStorage<string>(\n Constants.KEY_FIRST_OPEN\n );\n\n if (!firstOpenFlag) {\n await DataStore.storeData(Constants.KEY_FIRST_OPEN, 'No');\n return true;\n }\n } catch (err) {\n Logger.logError('Unable to determine first open after install flag', err);\n }\n return false;\n }\n\n static async getFacebookFBP(): Promise<string> {\n try {\n let fbp = await DataStore.getDataFromStorage<string>(Constants.KEY_FBP);\n\n if (!fbp) {\n fbp = `fb.1.${Date.now()}.${Date.now()}`;\n }\n\n await DataStore.storeData(Constants.KEY_FBP, fbp);\n\n DataStore.addCommonCookie('x-fbp', fbp);\n\n return fbp;\n } catch (err) {\n Logger.logError('Error initializing debug id.', err);\n }\n return '';\n }\n\n static async initDebugId(orgId: string): Promise<void> {\n try {\n let debugId = await DataStore.getDataFromStorage<string>(\n Constants.KEY_MP_DEBUG_ID\n );\n\n if (debugId && debugId.indexOf(orgId) !== 0) {\n // re-generate debug id if it is not of the simple variety\n debugId = undefined;\n }\n\n if (!debugId) {\n debugId = Utils.getSimpleDebugId(orgId);\n }\n\n await DataStore.storeData(Constants.KEY_MP_DEBUG_ID, debugId);\n DataStore.setDebugId(debugId);\n } catch (err) {\n Logger.logError('Error initializing debug id.', err);\n }\n }\n\n static async setOrResetVisitInfo(incrementDepth: boolean): Promise<void> {\n try {\n let visitInfo: VisitInfo = await DataStore.getDataFromStorage(\n Constants.KEY_MP_IDL_VISIT_ID_INFO\n );\n\n if (!visitInfo) {\n // may be first time visit, set up a new visit info object and return\n visitInfo = {\n visitId: Utils.getUniqueID(),\n visitCt: 1,\n visitDepth: 0,\n visitTs: Date.now(),\n visitVer: 1,\n };\n } else {\n // reset visit id anyway, but retain the visitCt and depth setting\n visitInfo.visitId = Utils.getUniqueID();\n if (incrementDepth) {\n visitInfo.visitDepth = (visitInfo?.visitDepth ?? 0) + 1;\n } else {\n visitInfo.visitCt = visitInfo.visitCt + 1;\n visitInfo.visitDepth = 0;\n }\n visitInfo.visitTs = Date.now();\n visitInfo.visitVer = 1;\n }\n\n DataStore.setVisitInfo(visitInfo);\n await DataStore.storeData(Constants.KEY_MP_IDL_VISIT_ID_INFO, visitInfo);\n DataStore.addCommonCookie('x-mp-vid', DataStore.visitInfoToString());\n } catch (err) {\n Logger.logError(err);\n DataStore.setVisitInfo(null);\n Reporter.reportError('setOrResetVisitInfo', err);\n }\n }\n\n static async incrementVisitDepth(): Promise<void> {\n return this.setOrResetVisitInfo(true);\n }\n\n static async setOrResetVisitorId(): Promise<void> {\n try {\n let visitorInfoData: VisitorInfo = await DataStore.getDataFromStorage(\n Constants.KEY_MP_IDL_VISITOR_ID_INFO\n );\n\n if (\n !visitorInfoData ||\n (visitorInfoData && visitorInfoData?.mId.indexOf('-') === -1)\n ) {\n Logger.logDbg('VisitorInfo not found. Refreshing from server');\n // get a new visit id and device id from server and store it in storage\n visitorInfoData = await NetworkService.fetchIdlInfo(\n DataStore.getIdlUrl()\n );\n }\n\n if (!visitorInfoData) {\n return;\n } else {\n DataStore.setVisitorInfo(visitorInfoData);\n // store to db as well\n await DataStore.storeData(\n Constants.KEY_MP_IDL_VISITOR_ID_INFO,\n visitorInfoData\n );\n\n const cookieValue = encodeURIComponent(JSON.stringify(visitorInfoData));\n DataStore.addCommonCookie('x-mplidl', cookieValue);\n DataStore.addCommonCookie('x-mpidl', cookieValue);\n DataStore.addCommonCookie('x-lmid', visitorInfoData.mId);\n DataStore.addCommonCookie('x-ldid', visitorInfoData.dId);\n }\n } catch (err) {\n Logger.logError(err);\n DataStore.setVisitorInfo(null);\n Reporter.reportError('setOrResetVisitorId', err);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["Logger","DataStore","Constants","Reporter","NetworkService","Utils","VisitIdProcessor","init","orgId","initDebugId","setOrResetVisitorId","setOrResetVisitInfo","retryVisitorIdIfNeeded","visitorIdFetchFailed","logDbg","hasVisitorId","getVisitorInfo","isFirstOpenAfterInstall","firstOpenFlag","getDataFromStorage","KEY_FIRST_OPEN","storeData","err","logError","getFacebookFBP","fbp","KEY_FBP","Date","now","addCommonCookie","debugId","KEY_MP_DEBUG_ID","indexOf","undefined","getSimpleDebugId","setDebugId","incrementDepth","visitInfo","KEY_MP_IDL_VISIT_ID_INFO","visitId","getUniqueID","visitCt","visitDepth","visitTs","visitVer","_visitInfo","setVisitInfo","visitInfoToString","reportError","incrementVisitDepth","getVisitInfo","catch","_visitorInfoData","visitorInfoData","KEY_MP_IDL_VISITOR_ID_INFO","mId","fetchIdlInfoWithRetry","getIdlUrl","setVisitorInfo","cookieValue","encodeURIComponent","JSON","stringify","dId","_defineProperty"],"sources":["visit-id.processor.ts"],"sourcesContent":["import { Logger } from '../common/logger';\nimport { DataStore } from '../common/data-store';\nimport { Constants } from '../common/constants';\nimport { Reporter } from '../common/reporter';\nimport { NetworkService } from '../common/network-service';\nimport type { VisitInfo, VisitorInfo } from '../common/app-types';\nimport { Utils } from '../common/utils';\n\nexport class VisitIdProcessor {\n // Track if visitor ID fetch failed so we can retry on page_load\n private static visitorIdFetchFailed = false;\n\n static async init(orgId: string): Promise<void> {\n await this.initDebugId(orgId);\n await this.setOrResetVisitorId();\n await this.setOrResetVisitInfo(false);\n }\n\n /**\n * Check if visitor ID needs to be retried\n * Called on each page_load to retry if initial fetch failed\n */\n static async retryVisitorIdIfNeeded(): Promise<void> {\n if (!this.visitorIdFetchFailed) {\n return; // No retry needed\n }\n\n Logger.logDbg('Retrying visitor ID fetch on page_load...');\n await this.setOrResetVisitorId();\n }\n\n /**\n * Check if visitor ID is available\n */\n static hasVisitorId(): boolean {\n return !this.visitorIdFetchFailed && DataStore.getVisitorInfo() !== null;\n }\n\n static async isFirstOpenAfterInstall(): Promise<boolean> {\n try {\n const firstOpenFlag = await DataStore.getDataFromStorage<string>(\n Constants.KEY_FIRST_OPEN\n );\n\n if (!firstOpenFlag) {\n await DataStore.storeData(Constants.KEY_FIRST_OPEN, 'No');\n return true;\n }\n } catch (err) {\n Logger.logError('Unable to determine first open after install flag', err);\n }\n return false;\n }\n\n static async getFacebookFBP(): Promise<string> {\n try {\n let fbp = await DataStore.getDataFromStorage<string>(Constants.KEY_FBP);\n\n if (!fbp) {\n fbp = `fb.1.${Date.now()}.${Date.now()}`;\n }\n\n await DataStore.storeData(Constants.KEY_FBP, fbp);\n\n DataStore.addCommonCookie('x-fbp', fbp);\n\n return fbp;\n } catch (err) {\n Logger.logError('Error initializing debug id.', err);\n }\n return '';\n }\n\n static async initDebugId(orgId: string): Promise<void> {\n try {\n let debugId = await DataStore.getDataFromStorage<string>(\n Constants.KEY_MP_DEBUG_ID\n );\n\n if (debugId && debugId.indexOf(orgId) !== 0) {\n // re-generate debug id if it is not of the simple variety\n debugId = undefined;\n }\n\n if (!debugId) {\n debugId = Utils.getSimpleDebugId(orgId);\n }\n\n await DataStore.storeData(Constants.KEY_MP_DEBUG_ID, debugId);\n DataStore.setDebugId(debugId);\n } catch (err) {\n Logger.logError('Error initializing debug id.', err);\n }\n }\n\n static async setOrResetVisitInfo(incrementDepth: boolean): Promise<void> {\n try {\n let visitInfo: VisitInfo = await DataStore.getDataFromStorage(\n Constants.KEY_MP_IDL_VISIT_ID_INFO\n );\n\n if (!visitInfo) {\n // may be first time visit, set up a new visit info object and return\n // Initialize visitDepth to 0, will be incremented to 1 on first page_load\n visitInfo = {\n visitId: Utils.getUniqueID(),\n visitCt: 1,\n visitDepth: 0,\n visitTs: Date.now(),\n visitVer: 1,\n };\n } else {\n // reset visit id anyway, but retain the visitCt and depth setting\n visitInfo.visitId = Utils.getUniqueID();\n if (incrementDepth) {\n visitInfo.visitDepth = (visitInfo?.visitDepth ?? 0) + 1;\n } else {\n visitInfo.visitCt = visitInfo.visitCt + 1;\n visitInfo.visitDepth = 0; // Reset to 0, will be incremented to 1 on first page_load of new session\n }\n visitInfo.visitTs = Date.now();\n visitInfo.visitVer = 1;\n }\n\n DataStore.setVisitInfo(visitInfo);\n await DataStore.storeData(Constants.KEY_MP_IDL_VISIT_ID_INFO, visitInfo);\n DataStore.addCommonCookie('x-mp-vid', DataStore.visitInfoToString());\n } catch (err) {\n Logger.logError(err);\n DataStore.setVisitInfo(null);\n Reporter.reportError('setOrResetVisitInfo', err);\n }\n }\n\n /**\n * Synchronously increment visit depth in memory, persist to storage in background\n * This prevents race conditions when multiple page_load events fire quickly\n */\n static incrementVisitDepth(): void {\n try {\n // Read from in-memory cache (synchronous)\n const visitInfo: VisitInfo = DataStore.getVisitInfo();\n\n if (!visitInfo) {\n Logger.logError('Visit info not initialized. Cannot increment depth.');\n return;\n }\n\n // Increment depth synchronously in memory\n visitInfo.visitDepth = (visitInfo.visitDepth ?? 0) + 1;\n visitInfo.visitTs = Date.now();\n\n // Update in-memory cache immediately (synchronous)\n DataStore.setVisitInfo(visitInfo);\n DataStore.addCommonCookie('x-mp-vid', DataStore.visitInfoToString());\n\n Logger.logDbg('Visit depth incremented to:', visitInfo.visitDepth);\n\n // Persist to AsyncStorage in background (fire and forget)\n DataStore.storeData(Constants.KEY_MP_IDL_VISIT_ID_INFO, visitInfo).catch(\n (err) => {\n Logger.logError('Error persisting visit depth to storage:', err);\n Reporter.reportError('incrementVisitDepth::persist', err);\n }\n );\n } catch (err) {\n Logger.logError('Error incrementing visit depth:', err);\n Reporter.reportError('incrementVisitDepth', err);\n }\n }\n\n static async setOrResetVisitorId(): Promise<void> {\n try {\n let visitorInfoData: VisitorInfo | null =\n await DataStore.getDataFromStorage(\n Constants.KEY_MP_IDL_VISITOR_ID_INFO\n );\n\n if (\n !visitorInfoData ||\n (visitorInfoData && visitorInfoData?.mId.indexOf('-') === -1)\n ) {\n Logger.logDbg('VisitorInfo not found. Fetching from server with retry');\n // get a new visit id and device id from server and store it in storage\n // Use retry method for better reliability\n visitorInfoData = await NetworkService.fetchIdlInfoWithRetry(\n DataStore.getIdlUrl()\n );\n }\n\n if (!visitorInfoData) {\n // Mark as failed so we can retry on page_load\n this.visitorIdFetchFailed = true;\n Logger.logError(\n 'Failed to fetch visitor ID after retries. Will retry on next page_load.'\n );\n return;\n }\n\n // Success - clear the failure flag\n this.visitorIdFetchFailed = false;\n\n DataStore.setVisitorInfo(visitorInfoData);\n // store to db as well\n await DataStore.storeData(\n Constants.KEY_MP_IDL_VISITOR_ID_INFO,\n visitorInfoData\n );\n\n const cookieValue = encodeURIComponent(JSON.stringify(visitorInfoData));\n DataStore.addCommonCookie('x-mplidl', cookieValue);\n DataStore.addCommonCookie('x-mpidl', cookieValue);\n DataStore.addCommonCookie('x-lmid', visitorInfoData.mId);\n DataStore.addCommonCookie('x-ldid', visitorInfoData.dId);\n\n Logger.logDbg('Visitor ID set successfully:', visitorInfoData.mId);\n } catch (err) {\n Logger.logError('Error in setOrResetVisitorId:', err);\n this.visitorIdFetchFailed = true;\n DataStore.setVisitorInfo(null);\n Reporter.reportError('setOrResetVisitorId', err);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,13 +2,6 @@ import type { Logger } from './logger';
|
|
|
2
2
|
export interface MapLike<T = any> {
|
|
3
3
|
[key: string]: T;
|
|
4
4
|
}
|
|
5
|
-
export interface RunQueueModel {
|
|
6
|
-
sseOnly: boolean;
|
|
7
|
-
name: string;
|
|
8
|
-
dcrName: string;
|
|
9
|
-
eventId: string;
|
|
10
|
-
dcrPayload?: Record<string, any>;
|
|
11
|
-
}
|
|
12
5
|
export declare type TypedAny = Record<string, string | number | boolean | string[] | boolean[] | number[] | Record<string, string | number | boolean | string[] | boolean[] | number[]>>;
|
|
13
6
|
export declare type EventProcessorFn = (payload: TypedAny) => void;
|
|
14
7
|
export interface AppCustomerInfo {
|
|
@@ -23,6 +16,7 @@ export interface AppCustomerInfo {
|
|
|
23
16
|
}
|
|
24
17
|
export interface AppPageLoad {
|
|
25
18
|
page_name: string;
|
|
19
|
+
page_url?: string;
|
|
26
20
|
is_entry?: number;
|
|
27
21
|
deep_link_url?: string;
|
|
28
22
|
app_version?: string;
|
|
@@ -103,16 +97,42 @@ export interface SdkInitOptions {
|
|
|
103
97
|
projectId: string;
|
|
104
98
|
baseUrl: string;
|
|
105
99
|
logLevel: string;
|
|
100
|
+
/**
|
|
101
|
+
* @deprecated device_type is now auto-detected and cannot be overridden
|
|
102
|
+
* This field is ignored. The SDK uses Expo/react-native-device-info for reliable detection.
|
|
103
|
+
*/
|
|
106
104
|
device_type?: string;
|
|
105
|
+
/**
|
|
106
|
+
* @deprecated app_version is now auto-detected and cannot be overridden
|
|
107
|
+
* This field is ignored. The SDK will always use the actual app version from the device.
|
|
108
|
+
*/
|
|
107
109
|
app_version?: string;
|
|
110
|
+
/**
|
|
111
|
+
* @deprecated os_version is now auto-detected and cannot be overridden
|
|
112
|
+
* This field is ignored. The SDK will always use the actual OS version from the device.
|
|
113
|
+
*/
|
|
108
114
|
os_version?: string;
|
|
115
|
+
/**
|
|
116
|
+
* Event deduplication window in milliseconds
|
|
117
|
+
* If the same event (name + payload) fires within this window, it will be skipped
|
|
118
|
+
* Purchase events are deduplicated by transaction_id regardless of other fields
|
|
119
|
+
* Default: 5000ms (5 seconds)
|
|
120
|
+
* Set to 0 to disable deduplication
|
|
121
|
+
*/
|
|
122
|
+
eventDeduplicationWindowMs?: number;
|
|
123
|
+
/**
|
|
124
|
+
* Callback invoked when SDK initialization fails after all retries
|
|
125
|
+
* Use this to handle initialization failures gracefully in your app
|
|
126
|
+
* @param error The error that caused the failure
|
|
127
|
+
*/
|
|
128
|
+
onInitFailure?: (error: Error) => void;
|
|
109
129
|
}
|
|
110
130
|
export interface MpDeviceInfo {
|
|
111
131
|
package_name?: string;
|
|
112
132
|
short_version?: string;
|
|
113
133
|
long_version?: string;
|
|
114
|
-
os_version
|
|
115
|
-
device_model_name
|
|
134
|
+
os_version?: string;
|
|
135
|
+
device_model_name?: string;
|
|
116
136
|
locale?: string;
|
|
117
137
|
timezone_abbreviation?: string;
|
|
118
138
|
carrier?: string;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { BaseResourceParamType } from '../models/mp-client-sdk';
|
|
2
2
|
export declare class Constants {
|
|
3
3
|
static PLACEHOLDER_REGEX: RegExp;
|
|
4
|
-
static LARGE_RANDOM_POOL: (size?: number) => string;
|
|
5
4
|
static MP_DL_EVT: string;
|
|
6
5
|
static CUST_EVT: string;
|
|
7
6
|
static ST_OK: number;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { DeJsvHelper, MapLike, MpDeviceInfo, QcInfoItem,
|
|
1
|
+
import type { DeJsvHelper, MapLike, MpDeviceInfo, QcInfoItem, SdkInitOptions, UrlInfo, VisitInfo, VisitorInfo } from './app-types';
|
|
2
2
|
import type { GeoResponse } from '../models/geo-api-response';
|
|
3
3
|
import type { ClientSdkDeItem, ClientSdkPrItem, ClientSdkQcItem, ClientSdkTagItem, MpClientSdk } from '../models/mp-client-sdk';
|
|
4
4
|
export declare class DataStore {
|
|
@@ -17,8 +17,6 @@ export declare class DataStore {
|
|
|
17
17
|
private static mpEnvShort;
|
|
18
18
|
private static devicePlatform;
|
|
19
19
|
private static deviceType;
|
|
20
|
-
private static runQueue;
|
|
21
|
-
private static isProcessing;
|
|
22
20
|
private static sdkInitOptions;
|
|
23
21
|
private static deviceInfo;
|
|
24
22
|
private static geoInfo;
|
|
@@ -28,7 +26,6 @@ export declare class DataStore {
|
|
|
28
26
|
private static commonCookies;
|
|
29
27
|
static init(clientSdk: MpClientSdk): Promise<void>;
|
|
30
28
|
static resetCollectorUrl(baseCollectorUrl: string, sdkEnv: string, vendorId: string, projectId: string): boolean;
|
|
31
|
-
static enQueueTMFire(sseOnly: boolean, name: string, dcrName: string, eventId: string, dcrPayload?: Record<string, any>): void;
|
|
32
29
|
static isDataStoreReady(): boolean;
|
|
33
30
|
static shouldExecuteTMForEvent(eventName: string): boolean;
|
|
34
31
|
static shouldExecuteSST(eventName: string): boolean;
|
|
@@ -38,9 +35,6 @@ export declare class DataStore {
|
|
|
38
35
|
static setDeviceInfo(info: MpDeviceInfo): void;
|
|
39
36
|
static getDeviceInfo(): MpDeviceInfo;
|
|
40
37
|
static setSdkInitOptions(options: SdkInitOptions): void;
|
|
41
|
-
static deQueueTMFire(): RunQueueModel;
|
|
42
|
-
static isTagManagerProcessing(): boolean;
|
|
43
|
-
static setTagManagerProcessing(status: boolean): void;
|
|
44
38
|
static getSdkDataElements(): MapLike<ClientSdkDeItem>;
|
|
45
39
|
static getSdkQC(): ClientSdkQcItem[];
|
|
46
40
|
static hasOneSSTTag(): boolean;
|
|
@@ -51,7 +45,8 @@ export declare class DataStore {
|
|
|
51
45
|
static getAttrInfoUrl(): string;
|
|
52
46
|
static setVisitInfo(visitInfo: VisitInfo): void;
|
|
53
47
|
static visitInfoToString(): string;
|
|
54
|
-
static setVisitorInfo(visitorInfo: VisitorInfo): void;
|
|
48
|
+
static setVisitorInfo(visitorInfo: VisitorInfo | null): void;
|
|
49
|
+
static getVisitorInfo(): VisitorInfo | null;
|
|
55
50
|
static getDebugId(): string;
|
|
56
51
|
static getErrorReportUrl(): string;
|
|
57
52
|
static getIdlUrl(): string;
|