@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.
Files changed (101) hide show
  1. package/lib/commonjs/common/app-types.js.map +1 -1
  2. package/lib/commonjs/common/constants.js +5 -26
  3. package/lib/commonjs/common/constants.js.map +1 -1
  4. package/lib/commonjs/common/data-store.js +36 -117
  5. package/lib/commonjs/common/data-store.js.map +1 -1
  6. package/lib/commonjs/common/event-bus.js +3 -10
  7. package/lib/commonjs/common/event-bus.js.map +1 -1
  8. package/lib/commonjs/common/logger.js +9 -18
  9. package/lib/commonjs/common/logger.js.map +1 -1
  10. package/lib/commonjs/common/network-service.js +4 -21
  11. package/lib/commonjs/common/network-service.js.map +1 -1
  12. package/lib/commonjs/common/reporter.js +8 -31
  13. package/lib/commonjs/common/reporter.js.map +1 -1
  14. package/lib/commonjs/common/utils.js +64 -65
  15. package/lib/commonjs/common/utils.js.map +1 -1
  16. package/lib/commonjs/coverage/lcov-report/block-navigation.js +6 -19
  17. package/lib/commonjs/coverage/lcov-report/block-navigation.js.map +1 -1
  18. package/lib/commonjs/coverage/lcov-report/prettify.js +2 -182
  19. package/lib/commonjs/coverage/lcov-report/prettify.js.map +1 -1
  20. package/lib/commonjs/coverage/lcov-report/sorter.js +64 -94
  21. package/lib/commonjs/coverage/lcov-report/sorter.js.map +1 -1
  22. package/lib/commonjs/eedl/eedl.js +207 -84
  23. package/lib/commonjs/eedl/eedl.js.map +1 -1
  24. package/lib/commonjs/index.js +104 -95
  25. package/lib/commonjs/index.js.map +1 -1
  26. package/lib/commonjs/models/geo-api-response.js +2 -0
  27. package/lib/commonjs/models/geo-api-response.js.map +1 -0
  28. package/lib/commonjs/models/mp-client-sdk.js +3 -11
  29. package/lib/commonjs/models/mp-client-sdk.js.map +1 -1
  30. package/lib/commonjs/processors/data-element.processor.js +85 -80
  31. package/lib/commonjs/processors/data-element.processor.js.map +1 -1
  32. package/lib/commonjs/processors/geo-location.processor.js +70 -0
  33. package/lib/commonjs/processors/geo-location.processor.js.map +1 -0
  34. package/lib/commonjs/processors/qc.processor.js +2 -25
  35. package/lib/commonjs/processors/qc.processor.js.map +1 -1
  36. package/lib/commonjs/processors/tag.processor.js +17 -86
  37. package/lib/commonjs/processors/tag.processor.js.map +1 -1
  38. package/lib/commonjs/processors/trans-function.processor.js +5 -23
  39. package/lib/commonjs/processors/trans-function.processor.js.map +1 -1
  40. package/lib/commonjs/processors/visit-id.processor.js +4 -50
  41. package/lib/commonjs/processors/visit-id.processor.js.map +1 -1
  42. package/lib/module/common/app-types.js.map +1 -1
  43. package/lib/module/common/constants.js +4 -22
  44. package/lib/module/common/constants.js.map +1 -1
  45. package/lib/module/common/data-store.js +35 -108
  46. package/lib/module/common/data-store.js.map +1 -1
  47. package/lib/module/common/event-bus.js +3 -6
  48. package/lib/module/common/event-bus.js.map +1 -1
  49. package/lib/module/common/logger.js +9 -16
  50. package/lib/module/common/logger.js.map +1 -1
  51. package/lib/module/common/network-service.js +4 -11
  52. package/lib/module/common/network-service.js.map +1 -1
  53. package/lib/module/common/reporter.js +8 -19
  54. package/lib/module/common/reporter.js.map +1 -1
  55. package/lib/module/common/utils.js +63 -56
  56. package/lib/module/common/utils.js.map +1 -1
  57. package/lib/module/coverage/lcov-report/block-navigation.js +6 -19
  58. package/lib/module/coverage/lcov-report/block-navigation.js.map +1 -1
  59. package/lib/module/coverage/lcov-report/prettify.js +2 -182
  60. package/lib/module/coverage/lcov-report/prettify.js.map +1 -1
  61. package/lib/module/coverage/lcov-report/sorter.js +64 -94
  62. package/lib/module/coverage/lcov-report/sorter.js.map +1 -1
  63. package/lib/module/eedl/eedl.js +206 -76
  64. package/lib/module/eedl/eedl.js.map +1 -1
  65. package/lib/module/index.js +102 -57
  66. package/lib/module/index.js.map +1 -1
  67. package/lib/module/models/geo-api-response.js +2 -0
  68. package/lib/module/models/geo-api-response.js.map +1 -0
  69. package/lib/module/models/mp-client-sdk.js +0 -5
  70. package/lib/module/models/mp-client-sdk.js.map +1 -1
  71. package/lib/module/processors/data-element.processor.js +82 -71
  72. package/lib/module/processors/data-element.processor.js.map +1 -1
  73. package/lib/module/processors/geo-location.processor.js +63 -0
  74. package/lib/module/processors/geo-location.processor.js.map +1 -0
  75. package/lib/module/processors/qc.processor.js +2 -11
  76. package/lib/module/processors/qc.processor.js.map +1 -1
  77. package/lib/module/processors/tag.processor.js +17 -57
  78. package/lib/module/processors/tag.processor.js.map +1 -1
  79. package/lib/module/processors/trans-function.processor.js +5 -12
  80. package/lib/module/processors/trans-function.processor.js.map +1 -1
  81. package/lib/module/processors/visit-id.processor.js +4 -27
  82. package/lib/module/processors/visit-id.processor.js.map +1 -1
  83. package/lib/typescript/common/app-types.d.ts +3 -0
  84. package/lib/typescript/common/constants.d.ts +1 -0
  85. package/lib/typescript/common/data-store.d.ts +8 -0
  86. package/lib/typescript/common/utils.d.ts +19 -0
  87. package/lib/typescript/eedl/eedl.d.ts +16 -5
  88. package/lib/typescript/index.d.ts +53 -0
  89. package/lib/typescript/models/geo-api-response.d.ts +12 -0
  90. package/lib/typescript/processors/data-element.processor.d.ts +10 -1
  91. package/lib/typescript/processors/geo-location.processor.d.ts +10 -0
  92. package/package.json +25 -15
  93. package/src/common/app-types.ts +3 -0
  94. package/src/common/constants.ts +2 -0
  95. package/src/common/data-store.ts +38 -0
  96. package/src/common/utils.ts +58 -0
  97. package/src/eedl/eedl.ts +241 -18
  98. package/src/index.tsx +98 -3
  99. package/src/models/geo-api-response.ts +13 -0
  100. package/src/processors/data-element.processor.ts +140 -70
  101. 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
- const deJsvTimeOutPromise = function () {
10
- let ms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 2000;
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
- val = (_val = val) === null || _val === void 0 ? void 0 : _val.trim(); // see if it has a single quote or double quote, if so, escape it
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 global-fns file
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
- const de = DataStore.getDataElements();
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
- } // check exclude conditions first
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":"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"}
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":[]}