@magicpixel/rn-mp-client-sdk 1.13.0 → 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 -15
- 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 -15
- 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 -37
- 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 -21
- 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
|
@@ -3,23 +3,30 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.ParamResourceValSrc = exports.ParamResourceHashType = exports.ParamResourceEncodingType = void 0;
|
|
7
|
-
let
|
|
8
|
-
|
|
6
|
+
exports.ParamResourceValSrc = exports.ParamResourceHashType = exports.ParamResourceEncodingType = exports.DeStorageDuration = void 0;
|
|
7
|
+
let DeStorageDuration = exports.DeStorageDuration = /*#__PURE__*/function (DeStorageDuration) {
|
|
8
|
+
DeStorageDuration["NONE"] = "NONE";
|
|
9
|
+
DeStorageDuration["EVENT"] = "EVENT";
|
|
10
|
+
DeStorageDuration["SESSION"] = "SESSION";
|
|
11
|
+
DeStorageDuration["VISITOR"] = "VISITOR";
|
|
12
|
+
return DeStorageDuration;
|
|
13
|
+
}({});
|
|
14
|
+
let ParamResourceEncodingType = exports.ParamResourceEncodingType = /*#__PURE__*/function (ParamResourceEncodingType) {
|
|
9
15
|
ParamResourceEncodingType["URL_ENC"] = "URL_ENC";
|
|
10
16
|
ParamResourceEncodingType["BASE64"] = "BASE64";
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
17
|
+
return ParamResourceEncodingType;
|
|
18
|
+
}({});
|
|
19
|
+
let ParamResourceHashType = exports.ParamResourceHashType = /*#__PURE__*/function (ParamResourceHashType) {
|
|
14
20
|
ParamResourceHashType["SHA256"] = "SHA256";
|
|
15
21
|
ParamResourceHashType["SHA512"] = "SHA512";
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
22
|
+
return ParamResourceHashType;
|
|
23
|
+
}({});
|
|
24
|
+
let ParamResourceValSrc = exports.ParamResourceValSrc = /*#__PURE__*/function (ParamResourceValSrc) {
|
|
19
25
|
ParamResourceValSrc["STATIC"] = "STATIC";
|
|
20
26
|
ParamResourceValSrc["DE"] = "DE";
|
|
21
27
|
ParamResourceValSrc["TRANS_FUNC"] = "TRANS_FUNC";
|
|
22
28
|
ParamResourceValSrc["CHILDREN"] = "CHILDREN";
|
|
23
29
|
ParamResourceValSrc["TG_JSON_PATH"] = "TG_JSON_PATH";
|
|
24
|
-
|
|
30
|
+
return ParamResourceValSrc;
|
|
31
|
+
}({});
|
|
25
32
|
//# sourceMappingURL=mp-client-sdk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["DeStorageDuration","exports","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":";;;;;;IAeYA,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,0BAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAjBA,iBAAiB;EAAA,OAAjBA,iBAAiB;AAAA;AAAA,IAOjBE,yBAAyB,GAAAD,OAAA,CAAAC,yBAAA,0BAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAA,OAAzBA,yBAAyB;AAAA;AAAA,IAKzBC,qBAAqB,GAAAF,OAAA,CAAAE,qBAAA,0BAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAAA,OAArBA,qBAAqB;AAAA;AAAA,IAKrBC,mBAAmB,GAAAH,OAAA,CAAAG,mBAAA,0BAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAnBA,mBAAmB;EAAA,OAAnBA,mBAAmB;AAAA","ignoreList":[]}
|
|
@@ -7,8 +7,10 @@ exports.DataElementProcessor = void 0;
|
|
|
7
7
|
exports.processDataElements = processDataElements;
|
|
8
8
|
exports.processOneDataElement = processOneDataElement;
|
|
9
9
|
var _utils = require("../common/utils");
|
|
10
|
+
var _mpClientSdk = require("../models/mp-client-sdk");
|
|
10
11
|
var _dataStore = require("../common/data-store");
|
|
11
12
|
var _logger = require("../common/logger");
|
|
13
|
+
var _storageHelper = require("../common/storage-helper");
|
|
12
14
|
/**
|
|
13
15
|
* Process data element of type url parameter
|
|
14
16
|
* @param de
|
|
@@ -17,6 +19,12 @@ var _logger = require("../common/logger");
|
|
|
17
19
|
// Note: JSV (JavaScript functions) are not supported in React Native
|
|
18
20
|
// This timeout function is kept for potential future use
|
|
19
21
|
|
|
22
|
+
/**
|
|
23
|
+
* Check if a value is defined (not null, undefined, or empty string)
|
|
24
|
+
*/
|
|
25
|
+
function isDefined(value) {
|
|
26
|
+
return value !== null && value !== undefined && value !== '';
|
|
27
|
+
}
|
|
20
28
|
const dElemProcessors = {
|
|
21
29
|
mpdl: (helper, elem, eventData) => {
|
|
22
30
|
return processMpDl(helper, elem, eventData);
|
|
@@ -55,16 +63,18 @@ const dElemProcessors = {
|
|
|
55
63
|
},
|
|
56
64
|
mp_visit_depth: (_helper, _elem, _eventData) => {
|
|
57
65
|
var _DataStore$getVisitIn2;
|
|
58
|
-
|
|
66
|
+
// Visit depth should start at 1 (first page), not 0
|
|
67
|
+
// Return at least 1 to ensure first page view shows depth = 1
|
|
68
|
+
const depth = ((_DataStore$getVisitIn2 = _dataStore.DataStore.getVisitInfo()) === null || _DataStore$getVisitIn2 === void 0 ? void 0 : _DataStore$getVisitIn2.visitDepth) ?? 0;
|
|
69
|
+
return Math.max(1, depth);
|
|
59
70
|
},
|
|
60
71
|
/* Browser/Platform data elements */
|
|
61
72
|
pg_browser: (_helper, _elem, _eventData) => {
|
|
62
73
|
return _dataStore.DataStore.getDeviceOs(); // Using device OS as browser equivalent
|
|
63
74
|
},
|
|
64
|
-
/* User status data element -
|
|
75
|
+
/* User status data element - 1 = new visitor (first visit), 0 = returning visitor */
|
|
65
76
|
mp_new_vis: (_helper, _elem, _eventData) => {
|
|
66
|
-
|
|
67
|
-
return '1'; // Default to new visitor
|
|
77
|
+
return _dataStore.DataStore.getMpUserStatus();
|
|
68
78
|
},
|
|
69
79
|
pg_random: (_helper, _elem, _eventData) => {
|
|
70
80
|
return _utils.Utils.getUniqueID();
|
|
@@ -98,6 +108,27 @@ const dElemProcessors = {
|
|
|
98
108
|
pg_mp_dl_evt_name: (_helper, _elem, _eventData) => {
|
|
99
109
|
_elem.key = 'ev._eventName';
|
|
100
110
|
return processMpDl(_helper, _elem, _eventData);
|
|
111
|
+
},
|
|
112
|
+
pg_hash: (_helper, _elem, _eventData) => {
|
|
113
|
+
return '';
|
|
114
|
+
},
|
|
115
|
+
pg_title: (_helper, _elem, _eventData) => {
|
|
116
|
+
return '';
|
|
117
|
+
},
|
|
118
|
+
pg_params: (_helper, _elem, _eventData) => {
|
|
119
|
+
return '';
|
|
120
|
+
},
|
|
121
|
+
pg_domain: (_helper, _elem, _eventData) => {
|
|
122
|
+
return '';
|
|
123
|
+
},
|
|
124
|
+
pg_srch: (_helper, _elem, _eventData) => {
|
|
125
|
+
return '';
|
|
126
|
+
},
|
|
127
|
+
pg_referrer: (_helper, _elem, _eventData) => {
|
|
128
|
+
return '';
|
|
129
|
+
},
|
|
130
|
+
pg_url: (_helper, _elem, _eventData) => {
|
|
131
|
+
return '';
|
|
101
132
|
}
|
|
102
133
|
// Note: JSV (JavaScript functions) processor removed - not supported in React Native
|
|
103
134
|
};
|
|
@@ -143,11 +174,24 @@ async function processOneDataElement(_sdkDataElements, deItem, deHelper, eventDa
|
|
|
143
174
|
try {
|
|
144
175
|
if (dElemProcessors[deItem.typ]) {
|
|
145
176
|
_logger.Logger.logDbg('Processing data element: ', deItem.nm);
|
|
146
|
-
|
|
177
|
+
let deValue = await dElemProcessors[deItem.typ](deHelper, deItem, eventData);
|
|
178
|
+
|
|
179
|
+
// Default storage duration to EVENT if not defined
|
|
180
|
+
if (!deItem.stDur) {
|
|
181
|
+
deItem.stDur = _mpClientSdk.DeStorageDuration.EVENT;
|
|
182
|
+
}
|
|
147
183
|
|
|
148
|
-
//
|
|
149
|
-
|
|
184
|
+
// If data element has persistence enabled, store the value
|
|
185
|
+
_storageHelper.StorageHelper.deStorageDurationSet(deItem.key, deValue, deItem.stDur);
|
|
150
186
|
|
|
187
|
+
// If value is not defined, try to retrieve from storage
|
|
188
|
+
// This allows values like gclid to persist across page loads
|
|
189
|
+
if (!isDefined(deValue)) {
|
|
190
|
+
const storedValue = _storageHelper.StorageHelper.deStorageDurationGet(deItem.key, deItem.def, deItem.stDur);
|
|
191
|
+
if (isDefined(storedValue)) {
|
|
192
|
+
deValue = storedValue;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
151
195
|
return deValue;
|
|
152
196
|
} else {
|
|
153
197
|
_logger.Logger.logError('No processor found for de typ: ', deItem.typ);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_utils","require","_dataStore","_logger","dElemProcessors","mpdl","helper","elem","eventData","processMpDl","pg_os","_helper","_elem","_eventData","DataStore","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","Utils","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","Logger","logError","def","processOneDataElement","_sdkDataElements","deItem","deHelper","_optDeKeys","typ","logDbg","nm","deValue","processDataElements","sdkDataElements","optDeKeys","getDataElements","deKeys","length","Object","keys","getDataElementHelpers","setDataElements","DataElementProcessor","exports"],"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","require","_mpClientSdk","_dataStore","_logger","_storageHelper","isDefined","value","undefined","dElemProcessors","mpdl","helper","elem","eventData","processMpDl","pg_os","_helper","_elem","_eventData","DataStore","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","Utils","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","Logger","logError","def","processOneDataElement","_sdkDataElements","deItem","deHelper","_optDeKeys","typ","logDbg","nm","deValue","stDur","DeStorageDuration","EVENT","StorageHelper","deStorageDurationSet","storedValue","deStorageDurationGet","processDataElements","sdkDataElements","optDeKeys","getDataElements","deKeys","length","Object","keys","getDataElementHelpers","setDataElements","DataElementProcessor","exports"],"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":[]}
|
|
@@ -10,12 +10,34 @@ var _constants = require("../common/constants");
|
|
|
10
10
|
var _reporter = require("../common/reporter");
|
|
11
11
|
var _networkService = require("../common/network-service");
|
|
12
12
|
var _utils = require("../common/utils");
|
|
13
|
+
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; }
|
|
14
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
15
|
+
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); }
|
|
13
16
|
class VisitIdProcessor {
|
|
14
17
|
static async init(orgId) {
|
|
15
18
|
await this.initDebugId(orgId);
|
|
16
19
|
await this.setOrResetVisitorId();
|
|
17
20
|
await this.setOrResetVisitInfo(false);
|
|
18
21
|
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Check if visitor ID needs to be retried
|
|
25
|
+
* Called on each page_load to retry if initial fetch failed
|
|
26
|
+
*/
|
|
27
|
+
static async retryVisitorIdIfNeeded() {
|
|
28
|
+
if (!this.visitorIdFetchFailed) {
|
|
29
|
+
return; // No retry needed
|
|
30
|
+
}
|
|
31
|
+
_logger.Logger.logDbg('Retrying visitor ID fetch on page_load...');
|
|
32
|
+
await this.setOrResetVisitorId();
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Check if visitor ID is available
|
|
37
|
+
*/
|
|
38
|
+
static hasVisitorId() {
|
|
39
|
+
return !this.visitorIdFetchFailed && _dataStore.DataStore.getVisitorInfo() !== null;
|
|
40
|
+
}
|
|
19
41
|
static async isFirstOpenAfterInstall() {
|
|
20
42
|
try {
|
|
21
43
|
const firstOpenFlag = await _dataStore.DataStore.getDataFromStorage(_constants.Constants.KEY_FIRST_OPEN);
|
|
@@ -63,6 +85,7 @@ class VisitIdProcessor {
|
|
|
63
85
|
let visitInfo = await _dataStore.DataStore.getDataFromStorage(_constants.Constants.KEY_MP_IDL_VISIT_ID_INFO);
|
|
64
86
|
if (!visitInfo) {
|
|
65
87
|
// may be first time visit, set up a new visit info object and return
|
|
88
|
+
// Initialize visitDepth to 0, will be incremented to 1 on first page_load
|
|
66
89
|
visitInfo = {
|
|
67
90
|
visitId: _utils.Utils.getUniqueID(),
|
|
68
91
|
visitCt: 1,
|
|
@@ -78,7 +101,7 @@ class VisitIdProcessor {
|
|
|
78
101
|
visitInfo.visitDepth = (((_visitInfo = visitInfo) === null || _visitInfo === void 0 ? void 0 : _visitInfo.visitDepth) ?? 0) + 1;
|
|
79
102
|
} else {
|
|
80
103
|
visitInfo.visitCt = visitInfo.visitCt + 1;
|
|
81
|
-
visitInfo.visitDepth = 0;
|
|
104
|
+
visitInfo.visitDepth = 0; // Reset to 0, will be incremented to 1 on first page_load of new session
|
|
82
105
|
}
|
|
83
106
|
visitInfo.visitTs = Date.now();
|
|
84
107
|
visitInfo.visitVer = 1;
|
|
@@ -92,36 +115,76 @@ class VisitIdProcessor {
|
|
|
92
115
|
_reporter.Reporter.reportError('setOrResetVisitInfo', err);
|
|
93
116
|
}
|
|
94
117
|
}
|
|
95
|
-
|
|
96
|
-
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Synchronously increment visit depth in memory, persist to storage in background
|
|
121
|
+
* This prevents race conditions when multiple page_load events fire quickly
|
|
122
|
+
*/
|
|
123
|
+
static incrementVisitDepth() {
|
|
124
|
+
try {
|
|
125
|
+
// Read from in-memory cache (synchronous)
|
|
126
|
+
const visitInfo = _dataStore.DataStore.getVisitInfo();
|
|
127
|
+
if (!visitInfo) {
|
|
128
|
+
_logger.Logger.logError('Visit info not initialized. Cannot increment depth.');
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// Increment depth synchronously in memory
|
|
133
|
+
visitInfo.visitDepth = (visitInfo.visitDepth ?? 0) + 1;
|
|
134
|
+
visitInfo.visitTs = Date.now();
|
|
135
|
+
|
|
136
|
+
// Update in-memory cache immediately (synchronous)
|
|
137
|
+
_dataStore.DataStore.setVisitInfo(visitInfo);
|
|
138
|
+
_dataStore.DataStore.addCommonCookie('x-mp-vid', _dataStore.DataStore.visitInfoToString());
|
|
139
|
+
_logger.Logger.logDbg('Visit depth incremented to:', visitInfo.visitDepth);
|
|
140
|
+
|
|
141
|
+
// Persist to AsyncStorage in background (fire and forget)
|
|
142
|
+
_dataStore.DataStore.storeData(_constants.Constants.KEY_MP_IDL_VISIT_ID_INFO, visitInfo).catch(err => {
|
|
143
|
+
_logger.Logger.logError('Error persisting visit depth to storage:', err);
|
|
144
|
+
_reporter.Reporter.reportError('incrementVisitDepth::persist', err);
|
|
145
|
+
});
|
|
146
|
+
} catch (err) {
|
|
147
|
+
_logger.Logger.logError('Error incrementing visit depth:', err);
|
|
148
|
+
_reporter.Reporter.reportError('incrementVisitDepth', err);
|
|
149
|
+
}
|
|
97
150
|
}
|
|
98
151
|
static async setOrResetVisitorId() {
|
|
99
152
|
try {
|
|
100
153
|
var _visitorInfoData;
|
|
101
154
|
let visitorInfoData = await _dataStore.DataStore.getDataFromStorage(_constants.Constants.KEY_MP_IDL_VISITOR_ID_INFO);
|
|
102
155
|
if (!visitorInfoData || visitorInfoData && ((_visitorInfoData = visitorInfoData) === null || _visitorInfoData === void 0 ? void 0 : _visitorInfoData.mId.indexOf('-')) === -1) {
|
|
103
|
-
_logger.Logger.logDbg('VisitorInfo not found.
|
|
156
|
+
_logger.Logger.logDbg('VisitorInfo not found. Fetching from server with retry');
|
|
104
157
|
// get a new visit id and device id from server and store it in storage
|
|
105
|
-
|
|
158
|
+
// Use retry method for better reliability
|
|
159
|
+
visitorInfoData = await _networkService.NetworkService.fetchIdlInfoWithRetry(_dataStore.DataStore.getIdlUrl());
|
|
106
160
|
}
|
|
107
161
|
if (!visitorInfoData) {
|
|
162
|
+
// Mark as failed so we can retry on page_load
|
|
163
|
+
this.visitorIdFetchFailed = true;
|
|
164
|
+
_logger.Logger.logError('Failed to fetch visitor ID after retries. Will retry on next page_load.');
|
|
108
165
|
return;
|
|
109
|
-
} else {
|
|
110
|
-
_dataStore.DataStore.setVisitorInfo(visitorInfoData);
|
|
111
|
-
// store to db as well
|
|
112
|
-
await _dataStore.DataStore.storeData(_constants.Constants.KEY_MP_IDL_VISITOR_ID_INFO, visitorInfoData);
|
|
113
|
-
const cookieValue = encodeURIComponent(JSON.stringify(visitorInfoData));
|
|
114
|
-
_dataStore.DataStore.addCommonCookie('x-mplidl', cookieValue);
|
|
115
|
-
_dataStore.DataStore.addCommonCookie('x-mpidl', cookieValue);
|
|
116
|
-
_dataStore.DataStore.addCommonCookie('x-lmid', visitorInfoData.mId);
|
|
117
|
-
_dataStore.DataStore.addCommonCookie('x-ldid', visitorInfoData.dId);
|
|
118
166
|
}
|
|
167
|
+
|
|
168
|
+
// Success - clear the failure flag
|
|
169
|
+
this.visitorIdFetchFailed = false;
|
|
170
|
+
_dataStore.DataStore.setVisitorInfo(visitorInfoData);
|
|
171
|
+
// store to db as well
|
|
172
|
+
await _dataStore.DataStore.storeData(_constants.Constants.KEY_MP_IDL_VISITOR_ID_INFO, visitorInfoData);
|
|
173
|
+
const cookieValue = encodeURIComponent(JSON.stringify(visitorInfoData));
|
|
174
|
+
_dataStore.DataStore.addCommonCookie('x-mplidl', cookieValue);
|
|
175
|
+
_dataStore.DataStore.addCommonCookie('x-mpidl', cookieValue);
|
|
176
|
+
_dataStore.DataStore.addCommonCookie('x-lmid', visitorInfoData.mId);
|
|
177
|
+
_dataStore.DataStore.addCommonCookie('x-ldid', visitorInfoData.dId);
|
|
178
|
+
_logger.Logger.logDbg('Visitor ID set successfully:', visitorInfoData.mId);
|
|
119
179
|
} catch (err) {
|
|
120
|
-
_logger.Logger.logError(err);
|
|
180
|
+
_logger.Logger.logError('Error in setOrResetVisitorId:', err);
|
|
181
|
+
this.visitorIdFetchFailed = true;
|
|
121
182
|
_dataStore.DataStore.setVisitorInfo(null);
|
|
122
183
|
_reporter.Reporter.reportError('setOrResetVisitorId', err);
|
|
123
184
|
}
|
|
124
185
|
}
|
|
125
186
|
}
|
|
126
187
|
exports.VisitIdProcessor = VisitIdProcessor;
|
|
188
|
+
// Track if visitor ID fetch failed so we can retry on page_load
|
|
189
|
+
_defineProperty(VisitIdProcessor, "visitorIdFetchFailed", false);
|
|
127
190
|
//# sourceMappingURL=visit-id.processor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_logger","require","_dataStore","_constants","_reporter","_networkService","_utils","VisitIdProcessor","init","orgId","initDebugId","setOrResetVisitorId","setOrResetVisitInfo","isFirstOpenAfterInstall","firstOpenFlag","DataStore","getDataFromStorage","Constants","KEY_FIRST_OPEN","storeData","err","Logger","logError","getFacebookFBP","fbp","KEY_FBP","Date","now","addCommonCookie","debugId","KEY_MP_DEBUG_ID","indexOf","undefined","Utils","getSimpleDebugId","setDebugId","incrementDepth","visitInfo","KEY_MP_IDL_VISIT_ID_INFO","visitId","getUniqueID","visitCt","visitDepth","visitTs","visitVer","_visitInfo","setVisitInfo","visitInfoToString","Reporter","reportError","incrementVisitDepth","_visitorInfoData","visitorInfoData","KEY_MP_IDL_VISITOR_ID_INFO","mId","logDbg","NetworkService","fetchIdlInfo","getIdlUrl","setVisitorInfo","cookieValue","encodeURIComponent","JSON","stringify","dId","exports"],"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","require","_dataStore","_constants","_reporter","_networkService","_utils","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","VisitIdProcessor","init","orgId","initDebugId","setOrResetVisitorId","setOrResetVisitInfo","retryVisitorIdIfNeeded","visitorIdFetchFailed","Logger","logDbg","hasVisitorId","DataStore","getVisitorInfo","isFirstOpenAfterInstall","firstOpenFlag","getDataFromStorage","Constants","KEY_FIRST_OPEN","storeData","err","logError","getFacebookFBP","fbp","KEY_FBP","Date","now","addCommonCookie","debugId","KEY_MP_DEBUG_ID","indexOf","undefined","Utils","getSimpleDebugId","setDebugId","incrementDepth","visitInfo","KEY_MP_IDL_VISIT_ID_INFO","visitId","getUniqueID","visitCt","visitDepth","visitTs","visitVer","_visitInfo","setVisitInfo","visitInfoToString","Reporter","reportError","incrementVisitDepth","getVisitInfo","catch","_visitorInfoData","visitorInfoData","KEY_MP_IDL_VISITOR_ID_INFO","mId","NetworkService","fetchIdlInfoWithRetry","getIdlUrl","setVisitorInfo","cookieValue","encodeURIComponent","JSON","stringify","dId","exports"],"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":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["app-types.ts"],"sourcesContent":["import type { Logger } from './logger';\n\nexport interface MapLike<T = any> {\n [key: string]: T;\n}\n\nexport
|
|
1
|
+
{"version":3,"names":[],"sources":["app-types.ts"],"sourcesContent":["import type { Logger } from './logger';\n\nexport interface MapLike<T = any> {\n [key: string]: T;\n}\n\nexport type TypedAny = Record<\n string,\n | string\n | number\n | boolean\n | string[]\n | boolean[]\n | number[]\n | Record<string, string | number | boolean | string[] | boolean[] | number[]>\n>;\n\nexport type EventProcessorFn = (payload: TypedAny) => void;\n\nexport interface AppCustomerInfo {\n first_name?: string;\n last_name?: string;\n email?: string;\n phone_number: number;\n country_code: number;\n city?: string;\n state?: string;\n country?: string;\n}\n\nexport interface AppPageLoad {\n page_name: string;\n page_url?: string;\n is_entry?: number;\n deep_link_url?: string;\n app_version?: string;\n}\n\nexport interface DeJsvHelper {\n log: typeof Logger.logDbg;\n err: typeof Logger.logError;\n}\n\nexport interface QcInfoItem {\n nm: string;\n id: string;\n st: boolean;\n}\n\nexport interface TagInfoItem {\n id: string;\n nm: string;\n pr: string;\n prNm: string;\n status: boolean;\n qc: string | string[];\n}\n\nexport type ReplaceMode = 'kph' | 'rph';\n\nexport interface HydrateTagInfo {\n isInError: boolean;\n content: string | number | null;\n errCd: string; // error code\n errMsg: string; // any descriptive error message\n}\n\nexport interface ReportTagItem {\n st: 200 | 900 | 1000 | number; // what happened to this tag?\n t: string; // tag id\n p: string; // provider id\n tNm: string;\n req: any; // request payload\n}\n\nexport interface Report {\n envName: string; // environment name inside magic pixel\n envId: string; // environment id inside magic pixel\n pname?: string; // page name\n evt: string; // dcr event if that triggered this report\n evtId: string; // event id\n dt?: number; // device type (converted to int)\n ln?: number; // language (converted to int)\n bw?: number; // browser name (converted to int)\n dm?: string; // clean domain name\n items: ReportTagItem[]; // list of tag items fired on that page for that condition\n tagCt: number; // expected tag count on this page\n dws: 'j' | 'n'; // down stream configuration. java or node\n v: string; // client sdk version for this call\n}\n\nexport interface UrlInfo {\n tfUrl: string;\n errUrl: string;\n rptUrl: string;\n infoUrl: string;\n baseUrl: string;\n attrInfoUrl: string;\n idlUrl: string;\n geoUrl?: string;\n baseUrlV4?: string;\n baseUrlV6?: string;\n}\n\nexport interface VisitInfo {\n visitId: string;\n visitTs: number;\n visitCt: number;\n visitDepth: number;\n visitVer: number;\n}\n\nexport interface VisitorInfo {\n dId: string;\n mId: string;\n st: number;\n}\n\nexport interface SdkInitOptions {\n orgId: string;\n env: string;\n projectId: string;\n baseUrl: string;\n logLevel: string;\n\n /**\n * @deprecated device_type is now auto-detected and cannot be overridden\n * This field is ignored. The SDK uses Expo/react-native-device-info for reliable detection.\n */\n device_type?: string;\n\n /**\n * @deprecated app_version is now auto-detected and cannot be overridden\n * This field is ignored. The SDK will always use the actual app version from the device.\n */\n app_version?: string;\n\n /**\n * @deprecated os_version is now auto-detected and cannot be overridden\n * This field is ignored. The SDK will always use the actual OS version from the device.\n */\n os_version?: string;\n\n /**\n * Event deduplication window in milliseconds\n * If the same event (name + payload) fires within this window, it will be skipped\n * Purchase events are deduplicated by transaction_id regardless of other fields\n * Default: 5000ms (5 seconds)\n * Set to 0 to disable deduplication\n */\n eventDeduplicationWindowMs?: number;\n\n /**\n * Callback invoked when SDK initialization fails after all retries\n * Use this to handle initialization failures gracefully in your app\n * @param error The error that caused the failure\n */\n onInitFailure?: (error: Error) => void;\n}\n\nexport interface MpDeviceInfo {\n package_name?: string; // app package name like com.company.starter\n short_version?: string;\n long_version?: string;\n os_version?: string; // Will be auto-detected if not provided\n device_model_name?: string; // Will be auto-detected if not provided\n locale?: string;\n timezone_abbreviation?: string;\n carrier?: string;\n screen_width?: number;\n screen_height?: number;\n screen_density?: number;\n cpu_cores?: number;\n ext_storage?: number;\n free_storage?: number;\n device_timezone?: string;\n}\n\nexport type EventBusCallback = (event: string, payload: any) => void;\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1,24 +1,33 @@
|
|
|
1
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
2
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
3
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); }
|
|
4
|
-
import { customAlphabet } from 'nanoid/non-secure';
|
|
5
4
|
export class Constants {}
|
|
6
5
|
_defineProperty(Constants, "PLACEHOLDER_REGEX", new RegExp(/({{)([A-Z_0-9 -]+)(}})/gi));
|
|
7
|
-
_defineProperty(Constants, "LARGE_RANDOM_POOL", customAlphabet('1234567090abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', 21));
|
|
8
6
|
_defineProperty(Constants, "MP_DL_EVT", 'mp_dl_event');
|
|
9
7
|
_defineProperty(Constants, "CUST_EVT", 'custom_event');
|
|
8
|
+
// Tag Report - Status Constants
|
|
10
9
|
_defineProperty(Constants, "ST_OK", 200);
|
|
10
|
+
// tag fired successfully
|
|
11
11
|
_defineProperty(Constants, "ST_VAL_FAIL", 400);
|
|
12
|
+
// tag validation failed - meaning one of the items marked as mandatory was found empty
|
|
12
13
|
_defineProperty(Constants, "ST_ERR", 500);
|
|
14
|
+
// tag was ok, but provider side failure. may be url is constructed wrong, or provider is down
|
|
13
15
|
_defineProperty(Constants, "ST_DEP_FAIL", 1000);
|
|
16
|
+
// processing tag dependencies failed - may be missing parameters or attributes
|
|
14
17
|
_defineProperty(Constants, "ST_PR_BL", 1002);
|
|
18
|
+
// provider is black listed in the data governance screen
|
|
15
19
|
_defineProperty(Constants, "ST_PR_EXC", 1001);
|
|
20
|
+
// tag was found, but no provider was bundled. SDK build issue. Report with high importance
|
|
16
21
|
_defineProperty(Constants, "PR_TYP_JS", 'js');
|
|
17
22
|
_defineProperty(Constants, "PR_TYP_IMG", 'img');
|
|
18
23
|
_defineProperty(Constants, "PR_TYP_APP", 'app');
|
|
19
24
|
_defineProperty(Constants, "PR_S_TYP_R", 'r');
|
|
20
25
|
_defineProperty(Constants, "sortAscending", (a, b) => a.o > b.o ? 1 : -1);
|
|
26
|
+
// this data structure is returned by the api and stored in this key
|
|
27
|
+
// {"dId":"VNiBG7JNfoGAyvqxhxMqd","mId":"JW0FRrCtAj9K7uyNmL1ht","st":0}
|
|
21
28
|
_defineProperty(Constants, "KEY_MP_IDL_VISITOR_ID_INFO", 'mp_idl_visitor_info');
|
|
29
|
+
// visitor info data structure
|
|
30
|
+
// {"visitId": "123123sdfsf", "visitCt": 1, "visitDepth": 1, visitVer: 1}
|
|
22
31
|
_defineProperty(Constants, "KEY_MP_IDL_VISIT_ID_INFO", 'mp_idl_visit_info');
|
|
23
32
|
_defineProperty(Constants, "KEY_MP_DEBUG_ID", 'mp_debug_id');
|
|
24
33
|
_defineProperty(Constants, "KEY_FBP", 'KEY_FBP');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["Constants","_defineProperty","RegExp","a","b","o","MP_VISIT_ID_COOKIE"],"sources":["constants.ts"],"sourcesContent":["import type { BaseResourceParamType } from '../models/mp-client-sdk';\n\nexport class Constants {\n static PLACEHOLDER_REGEX = new RegExp(/({{)([A-Z_0-9 -]+)(}})/gi);\n\n static MP_DL_EVT = 'mp_dl_event';\n static CUST_EVT = 'custom_event';\n\n // Tag Report - Status Constants\n static ST_OK = 200; // tag fired successfully\n static ST_VAL_FAIL = 400; // tag validation failed - meaning one of the items marked as mandatory was found empty\n static ST_ERR = 500; // tag was ok, but provider side failure. may be url is constructed wrong, or provider is down\n static ST_DEP_FAIL = 1000; // processing tag dependencies failed - may be missing parameters or attributes\n static ST_PR_BL = 1002; // provider is black listed in the data governance screen\n static ST_PR_EXC = 1001; // tag was found, but no provider was bundled. SDK build issue. Report with high importance\n\n static PR_TYP_JS = 'js';\n static PR_TYP_IMG = 'img';\n static PR_TYP_APP = 'app';\n\n static PR_S_TYP_R = 'r';\n\n static sortAscending = (\n a: BaseResourceParamType,\n b: BaseResourceParamType\n ): number => (a.o > b.o ? 1 : -1);\n\n // this data structure is returned by the api and stored in this key\n // {\"dId\":\"VNiBG7JNfoGAyvqxhxMqd\",\"mId\":\"JW0FRrCtAj9K7uyNmL1ht\",\"st\":0}\n static KEY_MP_IDL_VISITOR_ID_INFO = 'mp_idl_visitor_info';\n\n // visitor info data structure\n // {\"visitId\": \"123123sdfsf\", \"visitCt\": 1, \"visitDepth\": 1, visitVer: 1}\n static KEY_MP_IDL_VISIT_ID_INFO = 'mp_idl_visit_info';\n\n static KEY_MP_DEBUG_ID = 'mp_debug_id';\n static KEY_FBP = 'KEY_FBP';\n static KEY_FIRST_OPEN = 'KEY_FOPEN';\n}\n\nexport const MP_VISIT_ID_COOKIE = 'mp_visit_id';\n"],"mappings":";;;AAEA,OAAO,MAAMA,SAAS,CAAC;AAoCtBC,eAAA,CApCYD,SAAS,uBACO,IAAIE,MAAM,CAAC,0BAA0B,CAAC;AAAAD,eAAA,CADtDD,SAAS,eAGD,aAAa;AAAAC,eAAA,CAHrBD,SAAS,cAIF,cAAc;AAEhC;AAAAC,eAAA,CANWD,SAAS,WAOL,GAAG;AAAE;AAAAC,eAAA,CAPTD,SAAS,iBAQC,GAAG;AAAE;AAAAC,eAAA,CARfD,SAAS,YASJ,GAAG;AAAE;AAAAC,eAAA,CATVD,SAAS,iBAUC,IAAI;AAAE;AAAAC,eAAA,CAVhBD,SAAS,cAWF,IAAI;AAAE;AAAAC,eAAA,CAXbD,SAAS,eAYD,IAAI;AAAE;AAAAC,eAAA,CAZdD,SAAS,eAcD,IAAI;AAAAC,eAAA,CAdZD,SAAS,gBAeA,KAAK;AAAAC,eAAA,CAfdD,SAAS,gBAgBA,KAAK;AAAAC,eAAA,CAhBdD,SAAS,gBAkBA,GAAG;AAAAC,eAAA,CAlBZD,SAAS,mBAoBG,CACrBG,CAAwB,EACxBC,CAAwB,KACZD,CAAC,CAACE,CAAC,GAAGD,CAAC,CAACC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAE;AAEjC;AACA;AAAAJ,eAAA,CA1BWD,SAAS,gCA2BgB,qBAAqB;AAEzD;AACA;AAAAC,eAAA,CA9BWD,SAAS,8BA+Bc,mBAAmB;AAAAC,eAAA,CA/B1CD,SAAS,qBAiCK,aAAa;AAAAC,eAAA,CAjC3BD,SAAS,aAkCH,SAAS;AAAAC,eAAA,CAlCfD,SAAS,oBAmCI,WAAW;AAGrC,OAAO,MAAMM,kBAAkB,GAAG,aAAa","ignoreList":[]}
|