@magicpixel/rn-mp-client-sdk 0.12.0 → 1.13.0
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/lib/commonjs/common/app-types.js.map +1 -1
- package/lib/commonjs/common/constants.js +5 -26
- package/lib/commonjs/common/constants.js.map +1 -1
- package/lib/commonjs/common/data-store.js +36 -117
- package/lib/commonjs/common/data-store.js.map +1 -1
- package/lib/commonjs/common/event-bus.js +3 -10
- package/lib/commonjs/common/event-bus.js.map +1 -1
- package/lib/commonjs/common/logger.js +9 -18
- package/lib/commonjs/common/logger.js.map +1 -1
- package/lib/commonjs/common/network-service.js +4 -21
- package/lib/commonjs/common/network-service.js.map +1 -1
- package/lib/commonjs/common/reporter.js +8 -31
- package/lib/commonjs/common/reporter.js.map +1 -1
- package/lib/commonjs/common/utils.js +64 -65
- package/lib/commonjs/common/utils.js.map +1 -1
- package/lib/commonjs/coverage/lcov-report/block-navigation.js +6 -19
- package/lib/commonjs/coverage/lcov-report/block-navigation.js.map +1 -1
- package/lib/commonjs/coverage/lcov-report/prettify.js +2 -182
- package/lib/commonjs/coverage/lcov-report/prettify.js.map +1 -1
- package/lib/commonjs/coverage/lcov-report/sorter.js +64 -94
- package/lib/commonjs/coverage/lcov-report/sorter.js.map +1 -1
- package/lib/commonjs/eedl/eedl.js +207 -84
- package/lib/commonjs/eedl/eedl.js.map +1 -1
- package/lib/commonjs/index.js +104 -95
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/models/geo-api-response.js +2 -0
- package/lib/commonjs/models/geo-api-response.js.map +1 -0
- package/lib/commonjs/models/mp-client-sdk.js +3 -11
- package/lib/commonjs/models/mp-client-sdk.js.map +1 -1
- package/lib/commonjs/processors/data-element.processor.js +85 -80
- package/lib/commonjs/processors/data-element.processor.js.map +1 -1
- package/lib/commonjs/processors/geo-location.processor.js +70 -0
- package/lib/commonjs/processors/geo-location.processor.js.map +1 -0
- package/lib/commonjs/processors/qc.processor.js +2 -25
- package/lib/commonjs/processors/qc.processor.js.map +1 -1
- package/lib/commonjs/processors/tag.processor.js +17 -86
- package/lib/commonjs/processors/tag.processor.js.map +1 -1
- package/lib/commonjs/processors/trans-function.processor.js +5 -23
- package/lib/commonjs/processors/trans-function.processor.js.map +1 -1
- package/lib/commonjs/processors/visit-id.processor.js +4 -50
- 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 +4 -22
- package/lib/module/common/constants.js.map +1 -1
- package/lib/module/common/data-store.js +35 -108
- package/lib/module/common/data-store.js.map +1 -1
- package/lib/module/common/event-bus.js +3 -6
- package/lib/module/common/event-bus.js.map +1 -1
- package/lib/module/common/logger.js +9 -16
- package/lib/module/common/logger.js.map +1 -1
- package/lib/module/common/network-service.js +4 -11
- package/lib/module/common/network-service.js.map +1 -1
- package/lib/module/common/reporter.js +8 -19
- package/lib/module/common/reporter.js.map +1 -1
- package/lib/module/common/utils.js +63 -56
- package/lib/module/common/utils.js.map +1 -1
- package/lib/module/coverage/lcov-report/block-navigation.js +6 -19
- package/lib/module/coverage/lcov-report/block-navigation.js.map +1 -1
- package/lib/module/coverage/lcov-report/prettify.js +2 -182
- package/lib/module/coverage/lcov-report/prettify.js.map +1 -1
- package/lib/module/coverage/lcov-report/sorter.js +64 -94
- package/lib/module/coverage/lcov-report/sorter.js.map +1 -1
- package/lib/module/eedl/eedl.js +206 -76
- package/lib/module/eedl/eedl.js.map +1 -1
- package/lib/module/index.js +102 -57
- package/lib/module/index.js.map +1 -1
- package/lib/module/models/geo-api-response.js +2 -0
- package/lib/module/models/geo-api-response.js.map +1 -0
- package/lib/module/models/mp-client-sdk.js +0 -5
- package/lib/module/models/mp-client-sdk.js.map +1 -1
- package/lib/module/processors/data-element.processor.js +82 -71
- package/lib/module/processors/data-element.processor.js.map +1 -1
- package/lib/module/processors/geo-location.processor.js +63 -0
- package/lib/module/processors/geo-location.processor.js.map +1 -0
- package/lib/module/processors/qc.processor.js +2 -11
- package/lib/module/processors/qc.processor.js.map +1 -1
- package/lib/module/processors/tag.processor.js +17 -57
- package/lib/module/processors/tag.processor.js.map +1 -1
- package/lib/module/processors/trans-function.processor.js +5 -12
- package/lib/module/processors/trans-function.processor.js.map +1 -1
- package/lib/module/processors/visit-id.processor.js +4 -27
- package/lib/module/processors/visit-id.processor.js.map +1 -1
- package/lib/typescript/common/app-types.d.ts +3 -0
- package/lib/typescript/common/constants.d.ts +1 -0
- package/lib/typescript/common/data-store.d.ts +8 -0
- package/lib/typescript/common/utils.d.ts +19 -0
- package/lib/typescript/eedl/eedl.d.ts +16 -5
- package/lib/typescript/index.d.ts +53 -0
- package/lib/typescript/models/geo-api-response.d.ts +12 -0
- package/lib/typescript/processors/data-element.processor.d.ts +10 -1
- package/lib/typescript/processors/geo-location.processor.d.ts +10 -0
- package/package.json +25 -15
- package/src/common/app-types.ts +3 -0
- package/src/common/constants.ts +2 -0
- package/src/common/data-store.ts +38 -0
- package/src/common/utils.ts +58 -0
- package/src/eedl/eedl.ts +241 -18
- package/src/index.tsx +98 -3
- package/src/models/geo-api-response.ts +13 -0
- package/src/processors/data-element.processor.ts +140 -70
- package/src/processors/geo-location.processor.ts +91 -0
|
@@ -6,15 +6,8 @@ import { Utils } from '../common/utils';
|
|
|
6
6
|
import { DataStore } from '../common/data-store';
|
|
7
7
|
import { Logger } from '../common/logger';
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
return new Promise((_resolve, reject) => {
|
|
12
|
-
const id = setTimeout(() => {
|
|
13
|
-
clearTimeout(id);
|
|
14
|
-
reject('Timed out in ' + ms + 'ms.');
|
|
15
|
-
}, ms);
|
|
16
|
-
});
|
|
17
|
-
};
|
|
9
|
+
// Note: JSV (JavaScript functions) are not supported in React Native
|
|
10
|
+
// This timeout function is kept for potential future use
|
|
18
11
|
|
|
19
12
|
const dElemProcessors = {
|
|
20
13
|
mpdl: (helper, elem, eventData) => {
|
|
@@ -30,6 +23,41 @@ const dElemProcessors = {
|
|
|
30
23
|
pg_dtype: (_helper, _elem) => {
|
|
31
24
|
return DataStore.getDeviceType();
|
|
32
25
|
},
|
|
26
|
+
/* Geo location data elements */
|
|
27
|
+
mp_geo_pcode: (_helper, _elem, _eventData) => {
|
|
28
|
+
var _DataStore$getGeoInfo;
|
|
29
|
+
return ((_DataStore$getGeoInfo = DataStore.getGeoInfo()) === null || _DataStore$getGeoInfo === void 0 ? void 0 : _DataStore$getGeoInfo.postal) ?? undefined;
|
|
30
|
+
},
|
|
31
|
+
mp_geo_country: (_helper, _elem, _eventData) => {
|
|
32
|
+
var _DataStore$getGeoInfo2;
|
|
33
|
+
return ((_DataStore$getGeoInfo2 = DataStore.getGeoInfo()) === null || _DataStore$getGeoInfo2 === void 0 ? void 0 : _DataStore$getGeoInfo2.country) ?? undefined;
|
|
34
|
+
},
|
|
35
|
+
mp_geo_region: (_helper, _elem, _eventData) => {
|
|
36
|
+
var _DataStore$getGeoInfo3;
|
|
37
|
+
return ((_DataStore$getGeoInfo3 = DataStore.getGeoInfo()) === null || _DataStore$getGeoInfo3 === void 0 ? void 0 : _DataStore$getGeoInfo3.region) ?? undefined;
|
|
38
|
+
},
|
|
39
|
+
mp_geo_city: (_helper, _elem, _eventData) => {
|
|
40
|
+
var _DataStore$getGeoInfo4;
|
|
41
|
+
return ((_DataStore$getGeoInfo4 = DataStore.getGeoInfo()) === null || _DataStore$getGeoInfo4 === void 0 ? void 0 : _DataStore$getGeoInfo4.city) ?? undefined;
|
|
42
|
+
},
|
|
43
|
+
/* Visit info data elements */
|
|
44
|
+
mp_visit_count: (_helper, _elem, _eventData) => {
|
|
45
|
+
var _DataStore$getVisitIn;
|
|
46
|
+
return ((_DataStore$getVisitIn = DataStore.getVisitInfo()) === null || _DataStore$getVisitIn === void 0 ? void 0 : _DataStore$getVisitIn.visitCt) ?? 0;
|
|
47
|
+
},
|
|
48
|
+
mp_visit_depth: (_helper, _elem, _eventData) => {
|
|
49
|
+
var _DataStore$getVisitIn2;
|
|
50
|
+
return ((_DataStore$getVisitIn2 = DataStore.getVisitInfo()) === null || _DataStore$getVisitIn2 === void 0 ? void 0 : _DataStore$getVisitIn2.visitDepth) ?? 0;
|
|
51
|
+
},
|
|
52
|
+
/* Browser/Platform data elements */
|
|
53
|
+
pg_browser: (_helper, _elem, _eventData) => {
|
|
54
|
+
return DataStore.getDeviceOs(); // Using device OS as browser equivalent
|
|
55
|
+
},
|
|
56
|
+
/* User status data element - TODO: Implement getMpUserStatus in DataStore */
|
|
57
|
+
mp_new_vis: (_helper, _elem, _eventData) => {
|
|
58
|
+
// TODO: Implement user status functionality
|
|
59
|
+
return '1'; // Default to new visitor
|
|
60
|
+
},
|
|
33
61
|
pg_random: (_helper, _elem, _eventData) => {
|
|
34
62
|
return Utils.getUniqueID();
|
|
35
63
|
},
|
|
@@ -62,25 +90,9 @@ const dElemProcessors = {
|
|
|
62
90
|
pg_mp_dl_evt_name: (_helper, _elem, _eventData) => {
|
|
63
91
|
_elem.key = 'ev._eventName';
|
|
64
92
|
return processMpDl(_helper, _elem, _eventData);
|
|
65
|
-
},
|
|
66
|
-
jsv: async (helper, elem, _eventData) => {
|
|
67
|
-
try {
|
|
68
|
-
if (elem.fn) {
|
|
69
|
-
if (!elem.isAsync) {
|
|
70
|
-
return await elem.fn(helper, undefined);
|
|
71
|
-
} else {
|
|
72
|
-
return await Promise.race([elem.fn(helper, undefined), deJsvTimeOutPromise(elem.fnTOut || undefined)]);
|
|
73
|
-
}
|
|
74
|
-
} else {
|
|
75
|
-
return elem.def || undefined;
|
|
76
|
-
}
|
|
77
|
-
} catch (err) {
|
|
78
|
-
Logger.logError(err);
|
|
79
|
-
return elem.def || undefined;
|
|
80
|
-
}
|
|
81
93
|
}
|
|
94
|
+
// Note: JSV (JavaScript functions) processor removed - not supported in React Native
|
|
82
95
|
};
|
|
83
|
-
|
|
84
96
|
function generalCleanAndEscape(helper, de, val) {
|
|
85
97
|
if (typeof de.fn === 'function') {
|
|
86
98
|
val = de.fn(helper, val);
|
|
@@ -90,29 +102,23 @@ function generalCleanAndEscape(helper, de, val) {
|
|
|
90
102
|
// clean
|
|
91
103
|
if (de.cl) {
|
|
92
104
|
var _val;
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
105
|
+
val = (_val = val) === null || _val === void 0 ? void 0 : _val.trim();
|
|
106
|
+
// see if it has a single quote or double quote, if so, escape it
|
|
96
107
|
if (val.indexOf(`'`) > -1) {
|
|
97
108
|
val = val.replace(/'/g, '');
|
|
98
109
|
}
|
|
99
|
-
|
|
100
110
|
if (val.indexOf(`"`) > -1) {
|
|
101
111
|
val = val.replace(/"/g, '');
|
|
102
112
|
}
|
|
103
113
|
}
|
|
104
|
-
|
|
105
114
|
if (de.lwcase) {
|
|
106
115
|
var _val2;
|
|
107
|
-
|
|
108
116
|
val = (_val2 = val) === null || _val2 === void 0 ? void 0 : _val2.toLowerCase();
|
|
109
117
|
}
|
|
110
118
|
}
|
|
111
|
-
|
|
112
119
|
return val;
|
|
113
120
|
}
|
|
114
121
|
}
|
|
115
|
-
|
|
116
122
|
function processMpDl(helper, de, eventData) {
|
|
117
123
|
try {
|
|
118
124
|
if (de.key) {
|
|
@@ -123,54 +129,59 @@ function processMpDl(helper, de, eventData) {
|
|
|
123
129
|
} catch (err) {
|
|
124
130
|
Logger.logError('Error processing mp dl variable: ', err);
|
|
125
131
|
}
|
|
126
|
-
|
|
127
132
|
return generalCleanAndEscape(helper, de, de.def);
|
|
128
133
|
}
|
|
134
|
+
export async function processOneDataElement(_sdkDataElements, deItem, deHelper, eventData, _optDeKeys) {
|
|
135
|
+
try {
|
|
136
|
+
if (dElemProcessors[deItem.typ]) {
|
|
137
|
+
Logger.logDbg('Processing data element: ', deItem.nm);
|
|
138
|
+
const deValue = await dElemProcessors[deItem.typ](deHelper, deItem, eventData);
|
|
139
|
+
|
|
140
|
+
// TODO: Implement storage duration functionality for React Native
|
|
141
|
+
// For now, we'll just return the value without persistence
|
|
142
|
+
|
|
143
|
+
return deValue;
|
|
144
|
+
} else {
|
|
145
|
+
Logger.logError('No processor found for de typ: ', deItem.typ);
|
|
146
|
+
}
|
|
147
|
+
} catch (err) {
|
|
148
|
+
Logger.logError('Error processing data element: ', deItem.key, ' with error: ', err);
|
|
149
|
+
}
|
|
150
|
+
return deItem.def;
|
|
151
|
+
}
|
|
129
152
|
|
|
153
|
+
/**
|
|
154
|
+
* Process all the data elements at once, or if a set of keys are specified, processes only
|
|
155
|
+
* those keys and updates the dataElements object in DataStore
|
|
156
|
+
* @param sdkDataElements
|
|
157
|
+
* @param eventData
|
|
158
|
+
* @param optDeKeys
|
|
159
|
+
*/
|
|
160
|
+
export async function processDataElements(sdkDataElements, eventData, optDeKeys) {
|
|
161
|
+
const de = DataStore.getDataElements();
|
|
162
|
+
const deKeys = optDeKeys && optDeKeys.length > 0 ? optDeKeys : Object.keys(sdkDataElements);
|
|
163
|
+
try {
|
|
164
|
+
const deHelper = DataStore.getDataElementHelpers();
|
|
165
|
+
for (const key of deKeys) {
|
|
166
|
+
de[key] = await processOneDataElement(sdkDataElements, sdkDataElements[key], deHelper, eventData, optDeKeys);
|
|
167
|
+
}
|
|
168
|
+
} catch (err) {
|
|
169
|
+
Logger.logError('Error processing data elements: ', err);
|
|
170
|
+
}
|
|
171
|
+
DataStore.setDataElements(de);
|
|
172
|
+
Logger.logDbg('Data Elements: ', de);
|
|
173
|
+
return de;
|
|
174
|
+
}
|
|
130
175
|
export class DataElementProcessor {
|
|
131
176
|
/**
|
|
132
177
|
* Process all the data elements at once, or if a set of keys are specified, processes only
|
|
133
|
-
* those keys and updates the dataElements object in
|
|
178
|
+
* those keys and updates the dataElements object in DataStore
|
|
134
179
|
* @param sdkDataElements
|
|
135
180
|
* @param eventData
|
|
136
181
|
* @param optDeKeys
|
|
137
182
|
*/
|
|
138
183
|
static async processDataElements(sdkDataElements, eventData, optDeKeys) {
|
|
139
|
-
|
|
140
|
-
const deKeys = optDeKeys && optDeKeys.length > 0 ? optDeKeys : Object.keys(sdkDataElements);
|
|
141
|
-
|
|
142
|
-
try {
|
|
143
|
-
const deHelper = DataStore.getDataElementHelpers();
|
|
144
|
-
|
|
145
|
-
for (const key of deKeys) {
|
|
146
|
-
try {
|
|
147
|
-
const deItem = sdkDataElements[key];
|
|
148
|
-
|
|
149
|
-
if (deItem) {
|
|
150
|
-
const invokeItem = dElemProcessors[deItem.typ];
|
|
151
|
-
|
|
152
|
-
if (dElemProcessors[deItem.typ]) {
|
|
153
|
-
Logger.logDbg('Processing data element: ', deItem.nm);
|
|
154
|
-
|
|
155
|
-
if (invokeItem) {
|
|
156
|
-
de[key] = await invokeItem(deHelper, deItem, eventData);
|
|
157
|
-
}
|
|
158
|
-
} else {
|
|
159
|
-
Logger.logError('No processor found for de typ: ', deItem.typ);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
} catch (err) {
|
|
163
|
-
Logger.logError('Error processing data element: ', key, ' with error: ', err);
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
} catch (err) {
|
|
167
|
-
Logger.logError('Error processing data elements: ', err);
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
DataStore.setDataElements(de);
|
|
171
|
-
Logger.logDbg('Data Elements: ', de);
|
|
172
|
-
return de;
|
|
184
|
+
return processDataElements(sdkDataElements, eventData, optDeKeys);
|
|
173
185
|
}
|
|
174
|
-
|
|
175
186
|
}
|
|
176
187
|
//# sourceMappingURL=data-element.processor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Utils","DataStore","Logger","deJsvTimeOutPromise","ms","Promise","_resolve","reject","id","setTimeout","clearTimeout","dElemProcessors","mpdl","helper","elem","eventData","processMpDl","pg_os","_helper","_elem","_eventData","getOperatingSystem","visit_id","getVisitId","pg_dtype","getDeviceType","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","jsv","fn","isAsync","undefined","race","fnTOut","def","err","logError","generalCleanAndEscape","de","val","cl","trim","indexOf","replace","lwcase","toLowerCase","DataElementProcessor","processDataElements","sdkDataElements","optDeKeys","getDataElements","deKeys","length","Object","keys","deHelper","getDataElementHelpers","deItem","invokeItem","typ","logDbg","nm","setDataElements"],"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\nconst deJsvTimeOutPromise = (ms = 2000): Promise<any> => {\n return new Promise((_resolve, reject) => {\n const id = setTimeout(() => {\n clearTimeout(id);\n reject('Timed out in ' + ms + 'ms.');\n }, ms);\n });\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 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 jsv: async (\n helper: DeJsvHelper,\n elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): Promise<any> => {\n try {\n if (elem.fn) {\n if (!elem.isAsync) {\n return await elem.fn(helper, undefined);\n } else {\n return await Promise.race([\n elem.fn(helper, undefined),\n deJsvTimeOutPromise(elem.fnTOut || undefined),\n ]);\n }\n } else {\n return elem.def || undefined;\n }\n } catch (err) {\n Logger.logError(err);\n return elem.def || undefined;\n }\n },\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 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 global-fns file\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 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 try {\n const deItem = sdkDataElements[key];\n if (deItem) {\n const invokeItem = dElemProcessors[deItem.typ];\n if (dElemProcessors[deItem.typ]) {\n Logger.logDbg('Processing data element: ', deItem.nm);\n if (invokeItem) {\n de[key] = await invokeItem(deHelper, deItem, eventData);\n }\n } else {\n Logger.logError('No processor found for de typ: ', deItem.typ);\n }\n }\n } catch (err) {\n Logger.logError(\n 'Error processing data element: ',\n key,\n ' with error: ',\n err\n );\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}\n"],"mappings":"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"}
|
|
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":[]}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { DataStore } from '../common/data-store';
|
|
2
|
+
import { Utils } from '../common/utils';
|
|
3
|
+
import { Logger } from '../common/logger';
|
|
4
|
+
import { MP_VISIT_ID_COOKIE } from '../common/constants';
|
|
5
|
+
export class GeoLocationProcessor {
|
|
6
|
+
/**
|
|
7
|
+
* Always going to make the call if it's enabled in the sdk, because visit info cookie is passed on to the
|
|
8
|
+
* collector, and it's easier to make changes on the collector end when to make the
|
|
9
|
+
* ip info call or return with an updated cookie expiry
|
|
10
|
+
*/
|
|
11
|
+
static shouldMakeGeoLocationCall() {
|
|
12
|
+
return DataStore.isGeoLocationEnabledInSdk();
|
|
13
|
+
}
|
|
14
|
+
static async makeGeoLocationApiCall() {
|
|
15
|
+
try {
|
|
16
|
+
if (!this.shouldMakeGeoLocationCall()) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
let geoResponse;
|
|
20
|
+
const urlInfo = DataStore.getUrlInfo();
|
|
21
|
+
|
|
22
|
+
// In React Native, we'll get the visit ID from AsyncStorage instead of cookies
|
|
23
|
+
const visitId = await Utils.getValueFromAsyncStorage(MP_VISIT_ID_COOKIE, '');
|
|
24
|
+
const urlSuffix = `?vid=${visitId}`;
|
|
25
|
+
|
|
26
|
+
// For React Native, we'll try IPv6 first, then fallback to IPv4
|
|
27
|
+
if (urlInfo.baseUrlV6 && (await Utils.getValueFromAsyncStorage('_mp_ipv6', 'false')) !== 'n') {
|
|
28
|
+
try {
|
|
29
|
+
geoResponse = await Utils.getHttp(`${urlInfo.baseUrlV6}${urlInfo.geoUrl}/n/${Utils.getUniqueID()}${urlSuffix}`);
|
|
30
|
+
await Utils.setValueToAsyncStorage('_mp_ipv6', 'y');
|
|
31
|
+
} catch (err) {
|
|
32
|
+
Logger.logDbg('Error posting to ipv6. Posting to ipv4');
|
|
33
|
+
await Utils.setValueToAsyncStorage('_mp_ipv6', 'n');
|
|
34
|
+
geoResponse = await Utils.getHttp(`${urlInfo.baseUrlV4}${urlInfo.geoUrl}/n/${Utils.getUniqueID()}${urlSuffix}`);
|
|
35
|
+
}
|
|
36
|
+
} else {
|
|
37
|
+
// since the async storage said ipv6 failed, we will not try it again. post to ipv4 directly for this session
|
|
38
|
+
geoResponse = await Utils.getHttp(`${urlInfo.baseUrlV4}${urlInfo.geoUrl}/n/${Utils.getUniqueID()}${urlSuffix}`);
|
|
39
|
+
}
|
|
40
|
+
if (!geoResponse) {
|
|
41
|
+
Logger.logError('Geo API returned empty response');
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
if (geoResponse.status === 'KO') {
|
|
45
|
+
Logger.logError('Geo API returned error status');
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
if (geoResponse.status === 'OK' && geoResponse.info) {
|
|
49
|
+
// Success scenario
|
|
50
|
+
DataStore.setGeoInfo(geoResponse.info);
|
|
51
|
+
Logger.logDbg('Geo location info retrieved successfully:', geoResponse.info);
|
|
52
|
+
return geoResponse.info;
|
|
53
|
+
} else {
|
|
54
|
+
Logger.logError('Geo API returned invalid response format');
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
} catch (err) {
|
|
58
|
+
Logger.logError('Error fetching geo info:', err);
|
|
59
|
+
}
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=geo-location.processor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["DataStore","Utils","Logger","MP_VISIT_ID_COOKIE","GeoLocationProcessor","shouldMakeGeoLocationCall","isGeoLocationEnabledInSdk","makeGeoLocationApiCall","geoResponse","urlInfo","getUrlInfo","visitId","getValueFromAsyncStorage","urlSuffix","baseUrlV6","getHttp","geoUrl","getUniqueID","setValueToAsyncStorage","err","logDbg","baseUrlV4","logError","status","info","setGeoInfo"],"sources":["geo-location.processor.ts"],"sourcesContent":["import { DataStore } from '../common/data-store';\nimport { Utils } from '../common/utils';\nimport type { GeoApiResponse, GeoResponse } from '../models/geo-api-response';\nimport { Logger } from '../common/logger';\nimport { MP_VISIT_ID_COOKIE } from '../common/constants';\n\nexport class GeoLocationProcessor {\n /**\n * Always going to make the call if it's enabled in the sdk, because visit info cookie is passed on to the\n * collector, and it's easier to make changes on the collector end when to make the\n * ip info call or return with an updated cookie expiry\n */\n public static shouldMakeGeoLocationCall(): boolean {\n return DataStore.isGeoLocationEnabledInSdk();\n }\n\n public static async makeGeoLocationApiCall(): Promise<GeoResponse | null> {\n try {\n if (!this.shouldMakeGeoLocationCall()) {\n return null;\n }\n\n let geoResponse: GeoApiResponse;\n const urlInfo = DataStore.getUrlInfo();\n\n // In React Native, we'll get the visit ID from AsyncStorage instead of cookies\n const visitId = await Utils.getValueFromAsyncStorage(\n MP_VISIT_ID_COOKIE,\n ''\n );\n const urlSuffix = `?vid=${visitId}`;\n\n // For React Native, we'll try IPv6 first, then fallback to IPv4\n if (\n urlInfo.baseUrlV6 &&\n (await Utils.getValueFromAsyncStorage('_mp_ipv6', 'false')) !== 'n'\n ) {\n try {\n geoResponse = await Utils.getHttp<GeoApiResponse>(\n `${urlInfo.baseUrlV6}${\n urlInfo.geoUrl\n }/n/${Utils.getUniqueID()}${urlSuffix}`\n );\n await Utils.setValueToAsyncStorage('_mp_ipv6', 'y');\n } catch (err) {\n Logger.logDbg('Error posting to ipv6. Posting to ipv4');\n await Utils.setValueToAsyncStorage('_mp_ipv6', 'n');\n geoResponse = await Utils.getHttp<GeoApiResponse>(\n `${urlInfo.baseUrlV4}${\n urlInfo.geoUrl\n }/n/${Utils.getUniqueID()}${urlSuffix}`\n );\n }\n } else {\n // since the async storage said ipv6 failed, we will not try it again. post to ipv4 directly for this session\n geoResponse = await Utils.getHttp<GeoApiResponse>(\n `${urlInfo.baseUrlV4}${\n urlInfo.geoUrl\n }/n/${Utils.getUniqueID()}${urlSuffix}`\n );\n }\n\n if (!geoResponse) {\n Logger.logError('Geo API returned empty response');\n return null;\n }\n\n if (geoResponse.status === 'KO') {\n Logger.logError('Geo API returned error status');\n return null;\n }\n\n if (geoResponse.status === 'OK' && geoResponse.info) {\n // Success scenario\n DataStore.setGeoInfo(geoResponse.info);\n Logger.logDbg(\n 'Geo location info retrieved successfully:',\n geoResponse.info\n );\n return geoResponse.info;\n } else {\n Logger.logError('Geo API returned invalid response format');\n return null;\n }\n } catch (err) {\n Logger.logError('Error fetching geo info:', err);\n }\n\n return null;\n }\n}\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,sBAAsB;AAChD,SAASC,KAAK,QAAQ,iBAAiB;AAEvC,SAASC,MAAM,QAAQ,kBAAkB;AACzC,SAASC,kBAAkB,QAAQ,qBAAqB;AAExD,OAAO,MAAMC,oBAAoB,CAAC;EAChC;AACF;AACA;AACA;AACA;EACE,OAAcC,yBAAyBA,CAAA,EAAY;IACjD,OAAOL,SAAS,CAACM,yBAAyB,CAAC,CAAC;EAC9C;EAEA,aAAoBC,sBAAsBA,CAAA,EAAgC;IACxE,IAAI;MACF,IAAI,CAAC,IAAI,CAACF,yBAAyB,CAAC,CAAC,EAAE;QACrC,OAAO,IAAI;MACb;MAEA,IAAIG,WAA2B;MAC/B,MAAMC,OAAO,GAAGT,SAAS,CAACU,UAAU,CAAC,CAAC;;MAEtC;MACA,MAAMC,OAAO,GAAG,MAAMV,KAAK,CAACW,wBAAwB,CAClDT,kBAAkB,EAClB,EACF,CAAC;MACD,MAAMU,SAAS,GAAG,QAAQF,OAAO,EAAE;;MAEnC;MACA,IACEF,OAAO,CAACK,SAAS,IACjB,CAAC,MAAMb,KAAK,CAACW,wBAAwB,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,GAAG,EACnE;QACA,IAAI;UACFJ,WAAW,GAAG,MAAMP,KAAK,CAACc,OAAO,CAC/B,GAAGN,OAAO,CAACK,SAAS,GAClBL,OAAO,CAACO,MAAM,MACVf,KAAK,CAACgB,WAAW,CAAC,CAAC,GAAGJ,SAAS,EACvC,CAAC;UACD,MAAMZ,KAAK,CAACiB,sBAAsB,CAAC,UAAU,EAAE,GAAG,CAAC;QACrD,CAAC,CAAC,OAAOC,GAAG,EAAE;UACZjB,MAAM,CAACkB,MAAM,CAAC,wCAAwC,CAAC;UACvD,MAAMnB,KAAK,CAACiB,sBAAsB,CAAC,UAAU,EAAE,GAAG,CAAC;UACnDV,WAAW,GAAG,MAAMP,KAAK,CAACc,OAAO,CAC/B,GAAGN,OAAO,CAACY,SAAS,GAClBZ,OAAO,CAACO,MAAM,MACVf,KAAK,CAACgB,WAAW,CAAC,CAAC,GAAGJ,SAAS,EACvC,CAAC;QACH;MACF,CAAC,MAAM;QACL;QACAL,WAAW,GAAG,MAAMP,KAAK,CAACc,OAAO,CAC/B,GAAGN,OAAO,CAACY,SAAS,GAClBZ,OAAO,CAACO,MAAM,MACVf,KAAK,CAACgB,WAAW,CAAC,CAAC,GAAGJ,SAAS,EACvC,CAAC;MACH;MAEA,IAAI,CAACL,WAAW,EAAE;QAChBN,MAAM,CAACoB,QAAQ,CAAC,iCAAiC,CAAC;QAClD,OAAO,IAAI;MACb;MAEA,IAAId,WAAW,CAACe,MAAM,KAAK,IAAI,EAAE;QAC/BrB,MAAM,CAACoB,QAAQ,CAAC,+BAA+B,CAAC;QAChD,OAAO,IAAI;MACb;MAEA,IAAId,WAAW,CAACe,MAAM,KAAK,IAAI,IAAIf,WAAW,CAACgB,IAAI,EAAE;QACnD;QACAxB,SAAS,CAACyB,UAAU,CAACjB,WAAW,CAACgB,IAAI,CAAC;QACtCtB,MAAM,CAACkB,MAAM,CACX,2CAA2C,EAC3CZ,WAAW,CAACgB,IACd,CAAC;QACD,OAAOhB,WAAW,CAACgB,IAAI;MACzB,CAAC,MAAM;QACLtB,MAAM,CAACoB,QAAQ,CAAC,0CAA0C,CAAC;QAC3D,OAAO,IAAI;MACb;IACF,CAAC,CAAC,OAAOH,GAAG,EAAE;MACZjB,MAAM,CAACoB,QAAQ,CAAC,0BAA0B,EAAEH,GAAG,CAAC;IAClD;IAEA,OAAO,IAAI;EACb;AACF","ignoreList":[]}
|
|
@@ -7,17 +7,13 @@ export class QcProcessor {
|
|
|
7
7
|
static processQc(sdkQc, eventName, evtId) {
|
|
8
8
|
const validQcList = [];
|
|
9
9
|
const validQcInfo = [];
|
|
10
|
-
|
|
11
10
|
try {
|
|
12
11
|
Logger.logDbg('Processing qc lists for eventId:: ', evtId);
|
|
13
|
-
|
|
14
12
|
for (const qc of sdkQc) {
|
|
15
13
|
let notMatching = true;
|
|
16
14
|
Logger.logDbg('Processing QC: ', qc.nm);
|
|
17
|
-
|
|
18
15
|
for (const qcCondition of qc.c) {
|
|
19
16
|
let deVal;
|
|
20
|
-
|
|
21
17
|
if (qcCondition.param === Constants.CUST_EVT || qcCondition.param === Constants.MP_DL_EVT) {
|
|
22
18
|
if (!eventName) {
|
|
23
19
|
// this qc has an event condition but no eventName was supplied. so it is not going to match
|
|
@@ -29,14 +25,13 @@ export class QcProcessor {
|
|
|
29
25
|
} else {
|
|
30
26
|
deVal = DataStore.getDataElementValue(qcCondition.param);
|
|
31
27
|
}
|
|
32
|
-
|
|
33
28
|
if (typeof deVal === 'undefined' || deVal === null || deVal === '') {
|
|
34
29
|
Logger.logDbg('DE ', qcCondition.param, 'was used, but has no value. QC will not qualify');
|
|
35
30
|
notMatching = true;
|
|
36
31
|
continue;
|
|
37
|
-
}
|
|
38
|
-
|
|
32
|
+
}
|
|
39
33
|
|
|
34
|
+
// check exclude conditions first
|
|
40
35
|
if (qcCondition.e && qcCondition.e.length > 0) {
|
|
41
36
|
if (Utils.isMatch(deVal.toString(), qcCondition.e, !qcCondition.e_cs, qcCondition.e_ect)) {
|
|
42
37
|
Logger.logDbg('QC:Exc: ', qcCondition.param, ' did not qualify. QC: ', qc.nm);
|
|
@@ -46,7 +41,6 @@ export class QcProcessor {
|
|
|
46
41
|
notMatching = false;
|
|
47
42
|
}
|
|
48
43
|
}
|
|
49
|
-
|
|
50
44
|
if (qcCondition.i && qcCondition.i.length > 0) {
|
|
51
45
|
if (!Utils.isMatch(deVal.toString(), qcCondition.i, !qcCondition.i_cs, qcCondition.i_ect)) {
|
|
52
46
|
Logger.logDbg('QC:Inc: ', qcCondition.param, ' did not qualify. QC: ', qc.nm);
|
|
@@ -60,7 +54,6 @@ export class QcProcessor {
|
|
|
60
54
|
notMatching = false;
|
|
61
55
|
}
|
|
62
56
|
}
|
|
63
|
-
|
|
64
57
|
if (!notMatching) {
|
|
65
58
|
validQcList.push(qc.id);
|
|
66
59
|
validQcInfo.push({
|
|
@@ -80,11 +73,9 @@ export class QcProcessor {
|
|
|
80
73
|
Logger.logDbg('Error processing qc criteria: ', err);
|
|
81
74
|
Reporter.reportError('m:processQC', err);
|
|
82
75
|
}
|
|
83
|
-
|
|
84
76
|
Logger.logDbg('QC Status: ', validQcInfo);
|
|
85
77
|
DataStore.setValidQc(validQcList, validQcInfo);
|
|
86
78
|
return validQcList;
|
|
87
79
|
}
|
|
88
|
-
|
|
89
80
|
}
|
|
90
81
|
//# sourceMappingURL=qc.processor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DataStore","Logger","Utils","Constants","Reporter","QcProcessor","processQc","sdkQc","eventName","evtId","validQcList","validQcInfo","logDbg","qc","notMatching","nm","qcCondition","c","deVal","param","CUST_EVT","MP_DL_EVT","getDataElementValue","e","length","isMatch","toString","e_cs","e_ect","i","i_cs","i_ect","push","id","st","err","reportError","setValidQc"],"sources":["qc.processor.ts"],"sourcesContent":["import { DataStore } from '../common/data-store';\nimport { Logger } from '../common/logger';\nimport { Utils } from '../common/utils';\nimport type { ClientSdkQcItem } from '../models/mp-client-sdk';\nimport { Constants } from '../common/constants';\nimport { Reporter } from '../common/reporter';\n\nexport class QcProcessor {\n static processQc(\n sdkQc: ClientSdkQcItem[],\n eventName: string,\n evtId: string\n ): string[] {\n const validQcList: string[] = [];\n const validQcInfo: Array<{ nm: string; id: string; st: boolean }> = [];\n try {\n Logger.logDbg('Processing qc lists for eventId:: ', evtId);\n for (const qc of sdkQc) {\n let notMatching = true;\n Logger.logDbg('Processing QC: ', qc.nm);\n\n for (const qcCondition of qc.c) {\n let deVal: string | number | boolean;\n\n if (\n qcCondition.param === Constants.CUST_EVT ||\n qcCondition.param === Constants.MP_DL_EVT\n ) {\n if (!eventName) {\n // this qc has an event condition but no eventName was supplied. so it is not going to match\n notMatching = true;\n break;\n } else {\n deVal = eventName;\n }\n } else {\n deVal = DataStore.getDataElementValue(qcCondition.param);\n }\n\n if (typeof deVal === 'undefined' || deVal === null || deVal === '') {\n Logger.logDbg(\n 'DE ',\n qcCondition.param,\n 'was used, but has no value. QC will not qualify'\n );\n notMatching = true;\n continue;\n }\n\n // check exclude conditions first\n if (qcCondition.e && qcCondition.e.length > 0) {\n if (\n Utils.isMatch(\n deVal.toString(),\n qcCondition.e,\n !qcCondition.e_cs,\n qcCondition.e_ect\n )\n ) {\n Logger.logDbg(\n 'QC:Exc: ',\n qcCondition.param,\n ' did not qualify. QC: ',\n qc.nm\n );\n notMatching = true;\n continue;\n } else {\n notMatching = false;\n }\n }\n\n if (qcCondition.i && qcCondition.i.length > 0) {\n if (\n !Utils.isMatch(\n deVal.toString(),\n qcCondition.i,\n !qcCondition.i_cs,\n qcCondition.i_ect\n )\n ) {\n Logger.logDbg(\n 'QC:Inc: ',\n qcCondition.param,\n ' did not qualify. QC: ',\n qc.nm\n );\n notMatching = true;\n break;\n } else {\n notMatching = false;\n }\n } else {\n // if there is no qc, auto include\n notMatching = false;\n }\n }\n\n if (!notMatching) {\n validQcList.push(qc.id);\n validQcInfo.push({ id: qc.id, nm: qc.nm, st: true });\n } else {\n validQcInfo.push({ id: qc.id, nm: qc.nm, st: false });\n }\n }\n } catch (err) {\n Logger.logDbg('Error processing qc criteria: ', err);\n Reporter.reportError('m:processQC', err);\n }\n\n Logger.logDbg('QC Status: ', validQcInfo);\n DataStore.setValidQc(validQcList, validQcInfo);\n return validQcList;\n }\n}\n"],"mappings":"AAAA,SAASA,
|
|
1
|
+
{"version":3,"names":["DataStore","Logger","Utils","Constants","Reporter","QcProcessor","processQc","sdkQc","eventName","evtId","validQcList","validQcInfo","logDbg","qc","notMatching","nm","qcCondition","c","deVal","param","CUST_EVT","MP_DL_EVT","getDataElementValue","e","length","isMatch","toString","e_cs","e_ect","i","i_cs","i_ect","push","id","st","err","reportError","setValidQc"],"sources":["qc.processor.ts"],"sourcesContent":["import { DataStore } from '../common/data-store';\nimport { Logger } from '../common/logger';\nimport { Utils } from '../common/utils';\nimport type { ClientSdkQcItem } from '../models/mp-client-sdk';\nimport { Constants } from '../common/constants';\nimport { Reporter } from '../common/reporter';\n\nexport class QcProcessor {\n static processQc(\n sdkQc: ClientSdkQcItem[],\n eventName: string,\n evtId: string\n ): string[] {\n const validQcList: string[] = [];\n const validQcInfo: Array<{ nm: string; id: string; st: boolean }> = [];\n try {\n Logger.logDbg('Processing qc lists for eventId:: ', evtId);\n for (const qc of sdkQc) {\n let notMatching = true;\n Logger.logDbg('Processing QC: ', qc.nm);\n\n for (const qcCondition of qc.c) {\n let deVal: string | number | boolean;\n\n if (\n qcCondition.param === Constants.CUST_EVT ||\n qcCondition.param === Constants.MP_DL_EVT\n ) {\n if (!eventName) {\n // this qc has an event condition but no eventName was supplied. so it is not going to match\n notMatching = true;\n break;\n } else {\n deVal = eventName;\n }\n } else {\n deVal = DataStore.getDataElementValue(qcCondition.param);\n }\n\n if (typeof deVal === 'undefined' || deVal === null || deVal === '') {\n Logger.logDbg(\n 'DE ',\n qcCondition.param,\n 'was used, but has no value. QC will not qualify'\n );\n notMatching = true;\n continue;\n }\n\n // check exclude conditions first\n if (qcCondition.e && qcCondition.e.length > 0) {\n if (\n Utils.isMatch(\n deVal.toString(),\n qcCondition.e,\n !qcCondition.e_cs,\n qcCondition.e_ect\n )\n ) {\n Logger.logDbg(\n 'QC:Exc: ',\n qcCondition.param,\n ' did not qualify. QC: ',\n qc.nm\n );\n notMatching = true;\n continue;\n } else {\n notMatching = false;\n }\n }\n\n if (qcCondition.i && qcCondition.i.length > 0) {\n if (\n !Utils.isMatch(\n deVal.toString(),\n qcCondition.i,\n !qcCondition.i_cs,\n qcCondition.i_ect\n )\n ) {\n Logger.logDbg(\n 'QC:Inc: ',\n qcCondition.param,\n ' did not qualify. QC: ',\n qc.nm\n );\n notMatching = true;\n break;\n } else {\n notMatching = false;\n }\n } else {\n // if there is no qc, auto include\n notMatching = false;\n }\n }\n\n if (!notMatching) {\n validQcList.push(qc.id);\n validQcInfo.push({ id: qc.id, nm: qc.nm, st: true });\n } else {\n validQcInfo.push({ id: qc.id, nm: qc.nm, st: false });\n }\n }\n } catch (err) {\n Logger.logDbg('Error processing qc criteria: ', err);\n Reporter.reportError('m:processQC', err);\n }\n\n Logger.logDbg('QC Status: ', validQcInfo);\n DataStore.setValidQc(validQcList, validQcInfo);\n return validQcList;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|