@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
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* @param allTagInfo
|
|
9
9
|
* @param applicableTagInfo
|
|
10
10
|
*/
|
|
11
|
+
|
|
11
12
|
import { Logger } from '../common/logger';
|
|
12
13
|
import { DataStore } from '../common/data-store';
|
|
13
14
|
import { Reporter } from '../common/reporter';
|
|
@@ -19,17 +20,13 @@ export class TagProcessor {
|
|
|
19
20
|
const tagKeys = Object.keys(sdkTags);
|
|
20
21
|
const currentEpochSeconds = Math.round(new Date().getTime() / 1000);
|
|
21
22
|
Logger.logDbg('Total Tag Length: ', tagKeys.length);
|
|
22
|
-
|
|
23
23
|
for (const tagId of tagKeys) {
|
|
24
24
|
const tag = sdkTags[tagId];
|
|
25
|
-
|
|
26
25
|
if (tag) {
|
|
27
26
|
let isQualified = true;
|
|
28
|
-
|
|
29
27
|
for (const qc of tag.qc) {
|
|
30
28
|
if (validQcList.indexOf(qc) === -1) {
|
|
31
29
|
var _sdkProviders$tag$p;
|
|
32
|
-
|
|
33
30
|
isQualified = false;
|
|
34
31
|
allTagInfo.push({
|
|
35
32
|
id: tagId,
|
|
@@ -42,11 +39,9 @@ export class TagProcessor {
|
|
|
42
39
|
break;
|
|
43
40
|
}
|
|
44
41
|
}
|
|
45
|
-
|
|
46
42
|
if (isQualified && applicableTags.indexOf(tagId) === -1) {
|
|
47
43
|
if (this.checkTagDateValidity(currentEpochSeconds, tag.st, tag.ex)) {
|
|
48
44
|
var _sdkProviders$tag$p2, _sdkProviders$tag$p3;
|
|
49
|
-
|
|
50
45
|
applicableTags.push(tagId);
|
|
51
46
|
allTagInfo.push({
|
|
52
47
|
id: tagId,
|
|
@@ -66,7 +61,6 @@ export class TagProcessor {
|
|
|
66
61
|
});
|
|
67
62
|
} else {
|
|
68
63
|
var _sdkProviders$tag$p4;
|
|
69
|
-
|
|
70
64
|
allTagInfo.push({
|
|
71
65
|
id: tagId,
|
|
72
66
|
nm: tag.nm,
|
|
@@ -80,13 +74,12 @@ export class TagProcessor {
|
|
|
80
74
|
}
|
|
81
75
|
}
|
|
82
76
|
}
|
|
77
|
+
|
|
83
78
|
/**
|
|
84
79
|
* Core function which actually puts the tag on page based on the tag type (JS or Image)
|
|
85
80
|
* @param eventName
|
|
86
81
|
* @param evtId
|
|
87
82
|
*/
|
|
88
|
-
|
|
89
|
-
|
|
90
83
|
static async processTags(eventName, evtId) {
|
|
91
84
|
try {
|
|
92
85
|
Logger.logDbg('Processing tags for event: ', eventName, ' with id: ', evtId);
|
|
@@ -97,33 +90,30 @@ export class TagProcessor {
|
|
|
97
90
|
const transFunctions = DataStore.getTransFunctions();
|
|
98
91
|
const sdkTags = DataStore.getSdkTags();
|
|
99
92
|
const sdkProviders = DataStore.getSdkProviders();
|
|
100
|
-
const validQcList = DataStore.getValidQcList();
|
|
93
|
+
const validQcList = DataStore.getValidQcList();
|
|
101
94
|
|
|
102
|
-
|
|
95
|
+
// Find applicable tags
|
|
96
|
+
this.findApplicableTags(sdkTags, sdkProviders, validQcList, allTagInfo, applicableTagInfo);
|
|
103
97
|
|
|
98
|
+
// set expected tag count, so that the reporter knows when all tags are finished and can report asynchronously
|
|
104
99
|
Reporter.setExpectedTagCount(applicableTagInfo.length, evtId);
|
|
105
|
-
Logger.logDbg('Applicable Tags: ', applicableTagInfo);
|
|
100
|
+
Logger.logDbg('Applicable Tags: ', applicableTagInfo);
|
|
106
101
|
|
|
102
|
+
// process tags one by one
|
|
107
103
|
for (const tagInfo of applicableTagInfo) {
|
|
108
104
|
try {
|
|
109
105
|
Logger.logDbg(`Processing Tag: ${tagInfo.nm} [${tagInfo.id}]`);
|
|
110
106
|
const tag = sdkTags[tagInfo.id];
|
|
111
|
-
|
|
112
107
|
if (!tag) {
|
|
113
108
|
continue;
|
|
114
109
|
}
|
|
115
|
-
|
|
116
110
|
const provider = sdkProviders[tag.p];
|
|
117
|
-
|
|
118
111
|
if (!provider) {
|
|
119
112
|
continue;
|
|
120
113
|
}
|
|
121
|
-
|
|
122
114
|
const result = this.hydrateTag(tagInfo, tag, provider, prStatus, dataElements, transFunctions);
|
|
123
|
-
|
|
124
115
|
if (result.isInError) {
|
|
125
116
|
Logger.logDbg(`Tag ${tagInfo.nm} not processed because of error code: ${result.errCd}`);
|
|
126
|
-
|
|
127
117
|
if (result.errCd === 'NP') {
|
|
128
118
|
Reporter.reportItem({
|
|
129
119
|
st: Constants.ST_PR_EXC,
|
|
@@ -149,13 +139,10 @@ export class TagProcessor {
|
|
|
149
139
|
req: result.errMsg
|
|
150
140
|
}, evtId);
|
|
151
141
|
}
|
|
152
|
-
|
|
153
142
|
continue;
|
|
154
143
|
}
|
|
155
|
-
|
|
156
144
|
const finalUrl = result.content;
|
|
157
145
|
Logger.logDbg('Final Url :: ', finalUrl);
|
|
158
|
-
|
|
159
146
|
if (provider.typ === Constants.PR_TYP_APP) {
|
|
160
147
|
if (provider.sTyp === Constants.PR_S_TYP_R) {
|
|
161
148
|
// process and fire app event
|
|
@@ -195,9 +182,11 @@ export class TagProcessor {
|
|
|
195
182
|
}
|
|
196
183
|
}
|
|
197
184
|
} catch (err) {
|
|
198
|
-
Logger.logError('Error processing tags: ', err);
|
|
185
|
+
Logger.logError('Error processing tags: ', err);
|
|
186
|
+
// TODO: Report as metric to client
|
|
199
187
|
}
|
|
200
188
|
}
|
|
189
|
+
|
|
201
190
|
/**
|
|
202
191
|
* Takes all the placeholders in a tag and replaces them with actual values from data elements or
|
|
203
192
|
* actual static values. Method returns an object with errCd and replaced content and a boolean identifier
|
|
@@ -209,11 +198,8 @@ export class TagProcessor {
|
|
|
209
198
|
* @param dataElements
|
|
210
199
|
* @param transFunctions
|
|
211
200
|
*/
|
|
212
|
-
|
|
213
|
-
|
|
214
201
|
static hydrateTag(tagInfo, tag, provider, prStatus, dataElements, transFunctions) {
|
|
215
202
|
Logger.logDbg(`Hydrating Tag: ${tagInfo.nm} [${tagInfo.id}]`);
|
|
216
|
-
|
|
217
203
|
if (!provider) {
|
|
218
204
|
// serious issue. tag is in build sdk but not the appropriate provider
|
|
219
205
|
Logger.logError(`Not hydrating tag: ${tagInfo.nm} [${tagInfo.id}] because appropriate provider was not found`);
|
|
@@ -224,7 +210,6 @@ export class TagProcessor {
|
|
|
224
210
|
errMsg: `Not hydrating tag: ${tagInfo.nm} [${tagInfo.id}] because appropriate provider was not found`
|
|
225
211
|
}; // No Provider
|
|
226
212
|
}
|
|
227
|
-
|
|
228
213
|
if (provider.pr === 'B' && !prStatus) {
|
|
229
214
|
Logger.logDbg(`Not hydrating provider: ${provider.nm} [${tag.p}] because it is blacklisted`);
|
|
230
215
|
return {
|
|
@@ -233,45 +218,39 @@ export class TagProcessor {
|
|
|
233
218
|
errCd: 'PRB',
|
|
234
219
|
errMsg: `Not hydrating provider: ${provider.nm} [${tag.p}] because it is blacklisted`
|
|
235
220
|
}; // Privacy Blocked
|
|
236
|
-
}
|
|
237
|
-
|
|
221
|
+
}
|
|
238
222
|
|
|
223
|
+
// merge both provider and client tag params into one - tag param overwrites provider params
|
|
239
224
|
const params = Utils.mergeMaps(undefined, provider.rParams, tag.rParams);
|
|
240
|
-
|
|
241
225
|
if (provider.typ === 'app' && provider.sTyp === 'r') {
|
|
242
226
|
// this is o app type provider. no need to find place-holders, just convert params to an object and prepare the json object
|
|
243
227
|
return this.resourceParamsToActualValues(Object.values(params), dataElements, transFunctions);
|
|
244
228
|
} else {
|
|
245
229
|
// make tag url
|
|
246
230
|
const preReplaceUrl = provider.url + (tag.url ? tag.url : '');
|
|
247
|
-
const finalUrl = provider.url + (tag.url ? tag.url : '');
|
|
248
|
-
|
|
249
|
-
const placeHolders = this.findPlaceHolders(preReplaceUrl); // process tag attributes
|
|
231
|
+
const finalUrl = provider.url + (tag.url ? tag.url : '');
|
|
250
232
|
|
|
233
|
+
// find placeholder values
|
|
234
|
+
const placeHolders = this.findPlaceHolders(preReplaceUrl);
|
|
235
|
+
// process tag attributes
|
|
251
236
|
return this.replacePlaceHolders(finalUrl, placeHolders, dataElements, transFunctions, params, provider.chld || tag.chld, 'rph');
|
|
252
237
|
}
|
|
253
238
|
}
|
|
254
|
-
|
|
255
239
|
static findPlaceHolders(content) {
|
|
256
240
|
const placeHolders = [];
|
|
257
241
|
let match = Constants.PLACEHOLDER_REGEX.exec(content);
|
|
258
|
-
|
|
259
242
|
while (match !== null) {
|
|
260
243
|
placeHolders.push(match[2]);
|
|
261
244
|
match = Constants.PLACEHOLDER_REGEX.exec(content);
|
|
262
245
|
}
|
|
263
|
-
|
|
264
246
|
return placeHolders;
|
|
265
247
|
}
|
|
266
|
-
|
|
267
248
|
static resourceParamsToActualValues(params, deItems, transFunctions) {
|
|
268
249
|
// resolve all param values and convert them into a temporary structure
|
|
269
250
|
const paramValueArray = {};
|
|
270
|
-
|
|
271
251
|
for (const param of params) {
|
|
272
252
|
if (param.val_src !== 'CHILDREN') {
|
|
273
253
|
const deVal = this.parseParamValue(param, deItems, transFunctions);
|
|
274
|
-
|
|
275
254
|
if (param.rqd && typeof deVal === 'undefined') {
|
|
276
255
|
return {
|
|
277
256
|
isInError: true,
|
|
@@ -280,11 +259,9 @@ export class TagProcessor {
|
|
|
280
259
|
errMsg: `Tag validation failed. Parameter ${param.nm} is marked as mandatory, but no value was found in source.`
|
|
281
260
|
};
|
|
282
261
|
}
|
|
283
|
-
|
|
284
262
|
paramValueArray[param.fKey] = deVal;
|
|
285
263
|
}
|
|
286
264
|
}
|
|
287
|
-
|
|
288
265
|
const op = Utils.unFlattenObject(paramValueArray);
|
|
289
266
|
return {
|
|
290
267
|
isInError: false,
|
|
@@ -293,10 +270,8 @@ export class TagProcessor {
|
|
|
293
270
|
errMsg: null
|
|
294
271
|
};
|
|
295
272
|
}
|
|
296
|
-
|
|
297
273
|
static parseParamValue(paramItem, deItems, transFunctions) {
|
|
298
274
|
let paramValue = undefined;
|
|
299
|
-
|
|
300
275
|
if (paramItem.sv || paramItem.de || paramItem.tfId) {
|
|
301
276
|
if (paramItem.sv) {
|
|
302
277
|
paramValue = paramItem.sv;
|
|
@@ -305,18 +280,15 @@ export class TagProcessor {
|
|
|
305
280
|
} else if (paramItem.tfId) {
|
|
306
281
|
paramValue = transFunctions[paramItem.tfId];
|
|
307
282
|
}
|
|
308
|
-
|
|
309
283
|
paramValue = Utils.applyTransformationResourceParam(paramValue, paramItem.tf);
|
|
310
284
|
return paramValue;
|
|
311
285
|
} else {
|
|
312
286
|
return undefined;
|
|
313
287
|
}
|
|
314
288
|
}
|
|
315
|
-
|
|
316
289
|
static replacePlaceHolders(content, placeHolders, deItems, transFunctions, params, hasChildren, replaceMode) {
|
|
317
290
|
let isInError = false;
|
|
318
291
|
let errMsg;
|
|
319
|
-
|
|
320
292
|
if (!params) {
|
|
321
293
|
return {
|
|
322
294
|
isInError: false,
|
|
@@ -325,30 +297,24 @@ export class TagProcessor {
|
|
|
325
297
|
errMsg: 'No parameters where found to process in this tag'
|
|
326
298
|
};
|
|
327
299
|
}
|
|
328
|
-
|
|
329
300
|
if (hasChildren) {
|
|
330
301
|
// convert the flattened parameters to parent - child format. this is inside a condition
|
|
331
302
|
// because we may not have a lot of JSON type parameters and we can save some processing time by limiting
|
|
332
303
|
// when this is done
|
|
333
304
|
params = Utils.unFlattenResourceParams(Object.values(params));
|
|
334
305
|
}
|
|
335
|
-
|
|
336
306
|
for (const ph of placeHolders) {
|
|
337
307
|
try {
|
|
338
308
|
const tagParam = params[ph];
|
|
339
|
-
|
|
340
309
|
if (tagParam) {
|
|
341
310
|
if (tagParam.children && tagParam.children.length > 0) {
|
|
342
311
|
const paramValue = {};
|
|
343
|
-
|
|
344
312
|
for (const childParam of tagParam.children) {
|
|
345
313
|
paramValue[childParam.nm] = this.parseParamValue(childParam, deItems, transFunctions);
|
|
346
314
|
}
|
|
347
|
-
|
|
348
315
|
content = this.replaceValues(ph, content, JSON.stringify(paramValue), replaceMode);
|
|
349
316
|
} else {
|
|
350
317
|
const paramValue = this.parseParamValue(tagParam, deItems, transFunctions);
|
|
351
|
-
|
|
352
318
|
if (typeof paramValue === 'object') {
|
|
353
319
|
content = this.replaceValues(ph, content, JSON.stringify(paramValue), replaceMode);
|
|
354
320
|
} else {
|
|
@@ -366,7 +332,6 @@ export class TagProcessor {
|
|
|
366
332
|
break;
|
|
367
333
|
}
|
|
368
334
|
}
|
|
369
|
-
|
|
370
335
|
return {
|
|
371
336
|
isInError,
|
|
372
337
|
content,
|
|
@@ -374,23 +339,18 @@ export class TagProcessor {
|
|
|
374
339
|
errMsg: errMsg
|
|
375
340
|
};
|
|
376
341
|
}
|
|
377
|
-
|
|
378
342
|
static checkTagDateValidity(currentEpochSeconds, tagStart, tagEnd) {
|
|
379
343
|
return currentEpochSeconds >= tagStart && currentEpochSeconds <= tagEnd;
|
|
380
344
|
}
|
|
381
|
-
|
|
382
345
|
static replaceValues(placeHolder, content, val, replaceMode) {
|
|
383
346
|
let replaceVal;
|
|
384
|
-
|
|
385
347
|
if (replaceMode === 'kph') {
|
|
386
348
|
replaceVal = val && val !== '' ? val : `{{${placeHolder}}`;
|
|
387
349
|
} else if (replaceMode === 'rph') {
|
|
388
350
|
replaceVal = val && val !== '' ? val : '';
|
|
389
351
|
}
|
|
390
|
-
|
|
391
352
|
content = content.split(`{{${placeHolder}}}`).join(replaceVal);
|
|
392
353
|
return content;
|
|
393
354
|
}
|
|
394
|
-
|
|
395
355
|
}
|
|
396
356
|
//# sourceMappingURL=tag.processor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Logger","DataStore","Reporter","Constants","Utils","TagProcessor","findApplicableTags","sdkTags","sdkProviders","validQcList","allTagInfo","applicableTagInfo","applicableTags","tagKeys","Object","keys","currentEpochSeconds","Math","round","Date","getTime","logDbg","length","tagId","tag","isQualified","qc","indexOf","push","id","nm","status","pr","p","prNm","checkTagDateValidity","st","ex","processTags","eventName","evtId","prStatus","getPrivacyCompliance","dataElements","getDataElements","transFunctions","getTransFunctions","getSdkTags","getSdkProviders","getValidQcList","setExpectedTagCount","tagInfo","provider","result","hydrateTag","isInError","errCd","reportItem","ST_PR_EXC","t","tNm","req","errMsg","ST_PR_BL","ST_VAL_FAIL","finalUrl","content","typ","PR_TYP_APP","sTyp","PR_S_TYP_R","parsedData","JSON","parse","triggerEvent","event_bus_name","event_bus_payload","ST_OK","err","logError","ST_ERR","stack","params","mergeMaps","undefined","rParams","resourceParamsToActualValues","values","preReplaceUrl","url","placeHolders","findPlaceHolders","replacePlaceHolders","chld","match","PLACEHOLDER_REGEX","exec","deItems","paramValueArray","param","val_src","deVal","parseParamValue","rqd","fKey","op","unFlattenObject","stringify","paramItem","paramValue","sv","de","tfId","applyTransformationResourceParam","tf","hasChildren","replaceMode","unFlattenResourceParams","ph","tagParam","children","childParam","replaceValues","tagStart","tagEnd","placeHolder","val","replaceVal","split","join"],"sources":["tag.processor.ts"],"sourcesContent":["/**\n * Finds all the applicable tags based on the true qualification criteria. Method does not return anything\n * because it uses pass by memory reference. The last 2 paramters (allTagInfo and applicableTagInfo) are\n * return variables\n * @param sdkTags\n * @param sdkProviders\n * @param validQcList\n * @param allTagInfo\n * @param applicableTagInfo\n */\nimport type {\n HydrateTagInfo,\n MapLike,\n ReplaceMode,\n TagInfoItem,\n} from '../common/app-types';\nimport type {\n ClientSdkParamItem,\n ClientSdkPrItem,\n ClientSdkTagItem,\n} from '../models/mp-client-sdk';\nimport { Logger } from '../common/logger';\nimport { DataStore } from '../common/data-store';\nimport { Reporter } from '../common/reporter';\nimport { Constants } from '../common/constants';\nimport { Utils } from '../common/utils';\n\nexport class TagProcessor {\n private static findApplicableTags(\n sdkTags: MapLike<ClientSdkTagItem>,\n sdkProviders: MapLike<ClientSdkPrItem>,\n validQcList: string[],\n allTagInfo: TagInfoItem[],\n applicableTagInfo: TagInfoItem[]\n ): void {\n const applicableTags: string[] = [];\n const tagKeys = Object.keys(sdkTags);\n const currentEpochSeconds = Math.round(new Date().getTime() / 1000);\n Logger.logDbg('Total Tag Length: ', tagKeys.length);\n for (const tagId of tagKeys) {\n const tag: ClientSdkTagItem | undefined = sdkTags[tagId];\n if (tag) {\n let isQualified = true;\n for (const qc of tag.qc) {\n if (validQcList.indexOf(qc) === -1) {\n isQualified = false;\n allTagInfo.push({\n id: tagId,\n nm: tag.nm,\n status: false,\n qc,\n pr: tag.p,\n prNm: sdkProviders[tag.p]?.nm || '',\n });\n break;\n }\n }\n if (isQualified && applicableTags.indexOf(tagId) === -1) {\n if (this.checkTagDateValidity(currentEpochSeconds, tag.st, tag.ex)) {\n applicableTags.push(tagId);\n allTagInfo.push({\n id: tagId,\n nm: tag.nm,\n status: true,\n qc: tag.qc,\n pr: tag.p,\n prNm: sdkProviders[tag.p]?.nm || '',\n });\n applicableTagInfo.push({\n id: tagId,\n nm: tag.nm,\n status: true,\n qc: tag.qc,\n pr: tag.p,\n prNm: sdkProviders[tag.p]?.nm || '',\n });\n } else {\n allTagInfo.push({\n id: tagId,\n nm: tag.nm,\n status: false,\n qc: tag.qc,\n pr: tag.p,\n prNm: sdkProviders[tag.p]?.nm || '',\n });\n }\n }\n }\n }\n }\n\n /**\n * Core function which actually puts the tag on page based on the tag type (JS or Image)\n * @param eventName\n * @param evtId\n */\n static async processTags(eventName: string, evtId: string): Promise<void> {\n try {\n Logger.logDbg(\n 'Processing tags for event: ',\n eventName,\n ' with id: ',\n evtId\n );\n const allTagInfo: Array<TagInfoItem> = [];\n const applicableTagInfo: Array<TagInfoItem> = [];\n const prStatus = DataStore.getPrivacyCompliance();\n const dataElements = DataStore.getDataElements();\n const transFunctions = DataStore.getTransFunctions();\n const sdkTags = DataStore.getSdkTags();\n const sdkProviders = DataStore.getSdkProviders();\n const validQcList = DataStore.getValidQcList();\n\n // Find applicable tags\n this.findApplicableTags(\n sdkTags,\n sdkProviders,\n validQcList,\n allTagInfo,\n applicableTagInfo\n );\n\n // set expected tag count, so that the reporter knows when all tags are finished and can report asynchronously\n Reporter.setExpectedTagCount(applicableTagInfo.length, evtId);\n\n Logger.logDbg('Applicable Tags: ', applicableTagInfo);\n\n // process tags one by one\n for (const tagInfo of applicableTagInfo) {\n try {\n Logger.logDbg(`Processing Tag: ${tagInfo.nm} [${tagInfo.id}]`);\n\n const tag: ClientSdkTagItem | undefined = sdkTags[tagInfo.id];\n\n if (!tag) {\n continue;\n }\n\n const provider: ClientSdkPrItem | undefined = sdkProviders[tag.p];\n\n if (!provider) {\n continue;\n }\n\n const result = this.hydrateTag(\n tagInfo,\n tag,\n provider,\n prStatus,\n dataElements,\n transFunctions\n );\n\n if (result.isInError) {\n Logger.logDbg(\n `Tag ${tagInfo.nm} not processed because of error code: ${result.errCd}`\n );\n if (result.errCd === 'NP') {\n Reporter.reportItem(\n {\n st: Constants.ST_PR_EXC,\n t: tagInfo.id,\n p: tagInfo.pr,\n tNm: tagInfo.nm,\n req: result.errMsg,\n },\n evtId\n );\n } else if (result.errCd === 'PRB') {\n Reporter.reportItem(\n {\n st: Constants.ST_PR_BL,\n t: tagInfo.id,\n p: tagInfo.pr,\n tNm: tagInfo.nm,\n req: result.errMsg,\n },\n evtId\n );\n } else if (result.errCd === 'REF') {\n Reporter.reportItem(\n {\n st: Constants.ST_VAL_FAIL,\n t: tagInfo.id,\n p: tagInfo.pr,\n tNm: tagInfo.nm,\n req: result.errMsg,\n },\n evtId\n );\n }\n continue;\n }\n\n const finalUrl = result.content;\n Logger.logDbg('Final Url :: ', finalUrl);\n\n if (provider.typ === Constants.PR_TYP_APP) {\n if (provider.sTyp === Constants.PR_S_TYP_R) {\n // process and fire app event\n try {\n const parsedData = JSON.parse(result.content as string);\n Utils.triggerEvent(\n parsedData.event_bus_name,\n parsedData.event_bus_payload\n );\n Reporter.reportItem(\n {\n st: Constants.ST_OK,\n t: tagInfo.id,\n p: tagInfo.pr,\n tNm: tagInfo.nm,\n req: parsedData,\n },\n evtId\n );\n } catch (err) {\n Logger.logError(err);\n Reporter.reportItem(\n {\n st: Constants.ST_ERR,\n t: tagInfo.id,\n p: tagInfo.pr,\n tNm: tagInfo.nm,\n req: result.content,\n },\n evtId\n );\n }\n } else {\n Logger.logError('Unsupported provider type: ' + provider.sTyp);\n }\n }\n } catch (err) {\n Logger.logError(\n 'Failed loading tag: ',\n tagInfo.id,\n ': Name: ',\n tagInfo.nm,\n 'with error ',\n err\n );\n Reporter.reportItem(\n {\n st: Constants.ST_ERR,\n t: tagInfo.id,\n p: tagInfo.pr,\n tNm: tagInfo.nm,\n req: (err as any)?.stack,\n },\n evtId\n );\n }\n }\n } catch (err) {\n Logger.logError('Error processing tags: ', err);\n // TODO: Report as metric to client\n }\n }\n\n /**\n * Takes all the placeholders in a tag and replaces them with actual values from data elements or\n * actual static values. Method returns an object with errCd and replaced content and a boolean identifier\n * to denote if this process failed or not\n * @param tagInfo\n * @param tag\n * @param provider\n * @param prStatus\n * @param dataElements\n * @param transFunctions\n */\n private static hydrateTag(\n tagInfo: TagInfoItem,\n tag: ClientSdkTagItem,\n provider: ClientSdkPrItem,\n prStatus: boolean,\n dataElements: MapLike<any>,\n transFunctions: MapLike<any>\n ): HydrateTagInfo {\n Logger.logDbg(`Hydrating Tag: ${tagInfo.nm} [${tagInfo.id}]`);\n if (!provider) {\n // serious issue. tag is in build sdk but not the appropriate provider\n Logger.logError(\n `Not hydrating tag: ${tagInfo.nm} [${tagInfo.id}] because appropriate provider was not found`\n );\n return {\n isInError: true,\n content: null,\n errCd: 'NP',\n errMsg: `Not hydrating tag: ${tagInfo.nm} [${tagInfo.id}] because appropriate provider was not found`,\n }; // No Provider\n }\n\n if (provider.pr === 'B' && !prStatus) {\n Logger.logDbg(\n `Not hydrating provider: ${provider.nm} [${tag.p}] because it is blacklisted`\n );\n return {\n isInError: true,\n content: null,\n errCd: 'PRB',\n errMsg: `Not hydrating provider: ${provider.nm} [${tag.p}] because it is blacklisted`,\n }; // Privacy Blocked\n }\n\n // merge both provider and client tag params into one - tag param overwrites provider params\n const params: MapLike<ClientSdkParamItem | undefined> =\n Utils.mergeMaps<ClientSdkParamItem>(\n undefined,\n provider.rParams,\n tag.rParams\n );\n\n if (provider.typ === 'app' && provider.sTyp === 'r') {\n // this is o app type provider. no need to find place-holders, just convert params to an object and prepare the json object\n return this.resourceParamsToActualValues(\n Object.values(params),\n dataElements,\n transFunctions\n );\n } else {\n // make tag url\n const preReplaceUrl: string = provider.url + (tag.url ? tag.url : '');\n const finalUrl: string = provider.url + (tag.url ? tag.url : '');\n\n // find placeholder values\n const placeHolders: string[] = this.findPlaceHolders(preReplaceUrl);\n // process tag attributes\n return this.replacePlaceHolders(\n finalUrl,\n placeHolders,\n dataElements,\n transFunctions,\n params,\n provider.chld || tag.chld,\n 'rph'\n );\n }\n }\n\n private static findPlaceHolders(content: string): string[] {\n const placeHolders: string[] = [];\n let match = Constants.PLACEHOLDER_REGEX.exec(content);\n while (match !== null) {\n placeHolders.push(match[2]);\n match = Constants.PLACEHOLDER_REGEX.exec(content);\n }\n return placeHolders;\n }\n\n private static resourceParamsToActualValues(\n params: ClientSdkParamItem[],\n deItems: MapLike,\n transFunctions: MapLike\n ): HydrateTagInfo {\n // resolve all param values and convert them into a temporary structure\n const paramValueArray: MapLike = {};\n\n for (const param of params) {\n if (param.val_src !== 'CHILDREN') {\n const deVal = this.parseParamValue(param, deItems, transFunctions);\n\n if (param.rqd && typeof deVal === 'undefined') {\n return {\n isInError: true,\n content: '',\n errCd: 'REF',\n errMsg: `Tag validation failed. Parameter ${param.nm} is marked as mandatory, but no value was found in source.`,\n };\n }\n\n paramValueArray[param.fKey] = deVal;\n }\n }\n\n const op = Utils.unFlattenObject(paramValueArray);\n\n return {\n isInError: false,\n content: JSON.stringify(op),\n errCd: null,\n errMsg: null,\n };\n }\n\n private static parseParamValue(\n paramItem: ClientSdkParamItem,\n deItems: MapLike<any>,\n transFunctions: MapLike<any>\n ): any {\n let paramValue = undefined;\n if (paramItem.sv || paramItem.de || paramItem.tfId) {\n if (paramItem.sv) {\n paramValue = paramItem.sv;\n } else if (paramItem.de) {\n paramValue = deItems[paramItem.de];\n } else if (paramItem.tfId) {\n paramValue = transFunctions[paramItem.tfId];\n }\n\n paramValue = Utils.applyTransformationResourceParam(\n paramValue,\n paramItem.tf\n );\n return paramValue;\n } else {\n return undefined;\n }\n }\n\n private static replacePlaceHolders(\n content: string,\n placeHolders: string[],\n deItems: MapLike<any>,\n transFunctions: MapLike<any>,\n params: MapLike<ClientSdkParamItem>,\n hasChildren: boolean,\n replaceMode: ReplaceMode\n ): HydrateTagInfo {\n let isInError = false;\n let errMsg;\n\n if (!params) {\n return {\n isInError: false,\n content,\n errCd: null,\n errMsg: 'No parameters where found to process in this tag',\n };\n }\n\n if (hasChildren) {\n // convert the flattened parameters to parent - child format. this is inside a condition\n // because we may not have a lot of JSON type parameters and we can save some processing time by limiting\n // when this is done\n params = Utils.unFlattenResourceParams(Object.values(params));\n }\n\n for (const ph of placeHolders) {\n try {\n const tagParam: ClientSdkParamItem = params[ph];\n if (tagParam) {\n if (tagParam.children && tagParam.children.length > 0) {\n const paramValue: MapLike<any> = {};\n for (const childParam of tagParam.children) {\n paramValue[childParam.nm] = this.parseParamValue(\n childParam,\n deItems,\n transFunctions\n );\n }\n content = this.replaceValues(\n ph,\n content,\n JSON.stringify(paramValue),\n replaceMode\n );\n } else {\n const paramValue = this.parseParamValue(\n tagParam,\n deItems,\n transFunctions\n );\n if (typeof paramValue === 'object') {\n content = this.replaceValues(\n ph,\n content,\n JSON.stringify(paramValue),\n replaceMode\n );\n } else {\n content = this.replaceValues(\n ph,\n content,\n paramValue,\n replaceMode\n );\n }\n }\n } else {\n // TODO: Report\n // place holder was found but the corresponding item was not found in tag resource params\n Logger.logDbg(\n 'place holder:',\n ph,\n ', was found but the corresponding item was not found in tag resource params'\n );\n }\n } catch (err) {\n isInError = true;\n errMsg = (err as any)?.stack;\n break;\n }\n }\n\n return {\n isInError,\n content,\n errCd: isInError ? 'REF' : null,\n errMsg: errMsg,\n };\n }\n\n private static checkTagDateValidity(\n currentEpochSeconds: number,\n tagStart: number,\n tagEnd: number\n ): boolean {\n return currentEpochSeconds >= tagStart && currentEpochSeconds <= tagEnd;\n }\n\n private static replaceValues(\n placeHolder: string,\n content: string,\n val: any,\n replaceMode: ReplaceMode\n ): string {\n let replaceVal: string;\n if (replaceMode === 'kph') {\n replaceVal = val && val !== '' ? val : `{{${placeHolder}}`;\n } else if (replaceMode === 'rph') {\n replaceVal = val && val !== '' ? val : '';\n }\n content = content.split(`{{${placeHolder}}}`).join(replaceVal);\n return content;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Logger","DataStore","Reporter","Constants","Utils","TagProcessor","findApplicableTags","sdkTags","sdkProviders","validQcList","allTagInfo","applicableTagInfo","applicableTags","tagKeys","Object","keys","currentEpochSeconds","Math","round","Date","getTime","logDbg","length","tagId","tag","isQualified","qc","indexOf","_sdkProviders$tag$p","push","id","nm","status","pr","p","prNm","checkTagDateValidity","st","ex","_sdkProviders$tag$p2","_sdkProviders$tag$p3","_sdkProviders$tag$p4","processTags","eventName","evtId","prStatus","getPrivacyCompliance","dataElements","getDataElements","transFunctions","getTransFunctions","getSdkTags","getSdkProviders","getValidQcList","setExpectedTagCount","tagInfo","provider","result","hydrateTag","isInError","errCd","reportItem","ST_PR_EXC","t","tNm","req","errMsg","ST_PR_BL","ST_VAL_FAIL","finalUrl","content","typ","PR_TYP_APP","sTyp","PR_S_TYP_R","parsedData","JSON","parse","triggerEvent","event_bus_name","event_bus_payload","ST_OK","err","logError","ST_ERR","stack","params","mergeMaps","undefined","rParams","resourceParamsToActualValues","values","preReplaceUrl","url","placeHolders","findPlaceHolders","replacePlaceHolders","chld","match","PLACEHOLDER_REGEX","exec","deItems","paramValueArray","param","val_src","deVal","parseParamValue","rqd","fKey","op","unFlattenObject","stringify","paramItem","paramValue","sv","de","tfId","applyTransformationResourceParam","tf","hasChildren","replaceMode","unFlattenResourceParams","ph","tagParam","children","childParam","replaceValues","tagStart","tagEnd","placeHolder","val","replaceVal","split","join"],"sources":["tag.processor.ts"],"sourcesContent":["/**\n * Finds all the applicable tags based on the true qualification criteria. Method does not return anything\n * because it uses pass by memory reference. The last 2 paramters (allTagInfo and applicableTagInfo) are\n * return variables\n * @param sdkTags\n * @param sdkProviders\n * @param validQcList\n * @param allTagInfo\n * @param applicableTagInfo\n */\nimport type {\n HydrateTagInfo,\n MapLike,\n ReplaceMode,\n TagInfoItem,\n} from '../common/app-types';\nimport type {\n ClientSdkParamItem,\n ClientSdkPrItem,\n ClientSdkTagItem,\n} from '../models/mp-client-sdk';\nimport { Logger } from '../common/logger';\nimport { DataStore } from '../common/data-store';\nimport { Reporter } from '../common/reporter';\nimport { Constants } from '../common/constants';\nimport { Utils } from '../common/utils';\n\nexport class TagProcessor {\n private static findApplicableTags(\n sdkTags: MapLike<ClientSdkTagItem>,\n sdkProviders: MapLike<ClientSdkPrItem>,\n validQcList: string[],\n allTagInfo: TagInfoItem[],\n applicableTagInfo: TagInfoItem[]\n ): void {\n const applicableTags: string[] = [];\n const tagKeys = Object.keys(sdkTags);\n const currentEpochSeconds = Math.round(new Date().getTime() / 1000);\n Logger.logDbg('Total Tag Length: ', tagKeys.length);\n for (const tagId of tagKeys) {\n const tag: ClientSdkTagItem | undefined = sdkTags[tagId];\n if (tag) {\n let isQualified = true;\n for (const qc of tag.qc) {\n if (validQcList.indexOf(qc) === -1) {\n isQualified = false;\n allTagInfo.push({\n id: tagId,\n nm: tag.nm,\n status: false,\n qc,\n pr: tag.p,\n prNm: sdkProviders[tag.p]?.nm || '',\n });\n break;\n }\n }\n if (isQualified && applicableTags.indexOf(tagId) === -1) {\n if (this.checkTagDateValidity(currentEpochSeconds, tag.st, tag.ex)) {\n applicableTags.push(tagId);\n allTagInfo.push({\n id: tagId,\n nm: tag.nm,\n status: true,\n qc: tag.qc,\n pr: tag.p,\n prNm: sdkProviders[tag.p]?.nm || '',\n });\n applicableTagInfo.push({\n id: tagId,\n nm: tag.nm,\n status: true,\n qc: tag.qc,\n pr: tag.p,\n prNm: sdkProviders[tag.p]?.nm || '',\n });\n } else {\n allTagInfo.push({\n id: tagId,\n nm: tag.nm,\n status: false,\n qc: tag.qc,\n pr: tag.p,\n prNm: sdkProviders[tag.p]?.nm || '',\n });\n }\n }\n }\n }\n }\n\n /**\n * Core function which actually puts the tag on page based on the tag type (JS or Image)\n * @param eventName\n * @param evtId\n */\n static async processTags(eventName: string, evtId: string): Promise<void> {\n try {\n Logger.logDbg(\n 'Processing tags for event: ',\n eventName,\n ' with id: ',\n evtId\n );\n const allTagInfo: Array<TagInfoItem> = [];\n const applicableTagInfo: Array<TagInfoItem> = [];\n const prStatus = DataStore.getPrivacyCompliance();\n const dataElements = DataStore.getDataElements();\n const transFunctions = DataStore.getTransFunctions();\n const sdkTags = DataStore.getSdkTags();\n const sdkProviders = DataStore.getSdkProviders();\n const validQcList = DataStore.getValidQcList();\n\n // Find applicable tags\n this.findApplicableTags(\n sdkTags,\n sdkProviders,\n validQcList,\n allTagInfo,\n applicableTagInfo\n );\n\n // set expected tag count, so that the reporter knows when all tags are finished and can report asynchronously\n Reporter.setExpectedTagCount(applicableTagInfo.length, evtId);\n\n Logger.logDbg('Applicable Tags: ', applicableTagInfo);\n\n // process tags one by one\n for (const tagInfo of applicableTagInfo) {\n try {\n Logger.logDbg(`Processing Tag: ${tagInfo.nm} [${tagInfo.id}]`);\n\n const tag: ClientSdkTagItem | undefined = sdkTags[tagInfo.id];\n\n if (!tag) {\n continue;\n }\n\n const provider: ClientSdkPrItem | undefined = sdkProviders[tag.p];\n\n if (!provider) {\n continue;\n }\n\n const result = this.hydrateTag(\n tagInfo,\n tag,\n provider,\n prStatus,\n dataElements,\n transFunctions\n );\n\n if (result.isInError) {\n Logger.logDbg(\n `Tag ${tagInfo.nm} not processed because of error code: ${result.errCd}`\n );\n if (result.errCd === 'NP') {\n Reporter.reportItem(\n {\n st: Constants.ST_PR_EXC,\n t: tagInfo.id,\n p: tagInfo.pr,\n tNm: tagInfo.nm,\n req: result.errMsg,\n },\n evtId\n );\n } else if (result.errCd === 'PRB') {\n Reporter.reportItem(\n {\n st: Constants.ST_PR_BL,\n t: tagInfo.id,\n p: tagInfo.pr,\n tNm: tagInfo.nm,\n req: result.errMsg,\n },\n evtId\n );\n } else if (result.errCd === 'REF') {\n Reporter.reportItem(\n {\n st: Constants.ST_VAL_FAIL,\n t: tagInfo.id,\n p: tagInfo.pr,\n tNm: tagInfo.nm,\n req: result.errMsg,\n },\n evtId\n );\n }\n continue;\n }\n\n const finalUrl = result.content;\n Logger.logDbg('Final Url :: ', finalUrl);\n\n if (provider.typ === Constants.PR_TYP_APP) {\n if (provider.sTyp === Constants.PR_S_TYP_R) {\n // process and fire app event\n try {\n const parsedData = JSON.parse(result.content as string);\n Utils.triggerEvent(\n parsedData.event_bus_name,\n parsedData.event_bus_payload\n );\n Reporter.reportItem(\n {\n st: Constants.ST_OK,\n t: tagInfo.id,\n p: tagInfo.pr,\n tNm: tagInfo.nm,\n req: parsedData,\n },\n evtId\n );\n } catch (err) {\n Logger.logError(err);\n Reporter.reportItem(\n {\n st: Constants.ST_ERR,\n t: tagInfo.id,\n p: tagInfo.pr,\n tNm: tagInfo.nm,\n req: result.content,\n },\n evtId\n );\n }\n } else {\n Logger.logError('Unsupported provider type: ' + provider.sTyp);\n }\n }\n } catch (err) {\n Logger.logError(\n 'Failed loading tag: ',\n tagInfo.id,\n ': Name: ',\n tagInfo.nm,\n 'with error ',\n err\n );\n Reporter.reportItem(\n {\n st: Constants.ST_ERR,\n t: tagInfo.id,\n p: tagInfo.pr,\n tNm: tagInfo.nm,\n req: (err as any)?.stack,\n },\n evtId\n );\n }\n }\n } catch (err) {\n Logger.logError('Error processing tags: ', err);\n // TODO: Report as metric to client\n }\n }\n\n /**\n * Takes all the placeholders in a tag and replaces them with actual values from data elements or\n * actual static values. Method returns an object with errCd and replaced content and a boolean identifier\n * to denote if this process failed or not\n * @param tagInfo\n * @param tag\n * @param provider\n * @param prStatus\n * @param dataElements\n * @param transFunctions\n */\n private static hydrateTag(\n tagInfo: TagInfoItem,\n tag: ClientSdkTagItem,\n provider: ClientSdkPrItem,\n prStatus: boolean,\n dataElements: MapLike<any>,\n transFunctions: MapLike<any>\n ): HydrateTagInfo {\n Logger.logDbg(`Hydrating Tag: ${tagInfo.nm} [${tagInfo.id}]`);\n if (!provider) {\n // serious issue. tag is in build sdk but not the appropriate provider\n Logger.logError(\n `Not hydrating tag: ${tagInfo.nm} [${tagInfo.id}] because appropriate provider was not found`\n );\n return {\n isInError: true,\n content: null,\n errCd: 'NP',\n errMsg: `Not hydrating tag: ${tagInfo.nm} [${tagInfo.id}] because appropriate provider was not found`,\n }; // No Provider\n }\n\n if (provider.pr === 'B' && !prStatus) {\n Logger.logDbg(\n `Not hydrating provider: ${provider.nm} [${tag.p}] because it is blacklisted`\n );\n return {\n isInError: true,\n content: null,\n errCd: 'PRB',\n errMsg: `Not hydrating provider: ${provider.nm} [${tag.p}] because it is blacklisted`,\n }; // Privacy Blocked\n }\n\n // merge both provider and client tag params into one - tag param overwrites provider params\n const params: MapLike<ClientSdkParamItem | undefined> =\n Utils.mergeMaps<ClientSdkParamItem>(\n undefined,\n provider.rParams,\n tag.rParams\n );\n\n if (provider.typ === 'app' && provider.sTyp === 'r') {\n // this is o app type provider. no need to find place-holders, just convert params to an object and prepare the json object\n return this.resourceParamsToActualValues(\n Object.values(params),\n dataElements,\n transFunctions\n );\n } else {\n // make tag url\n const preReplaceUrl: string = provider.url + (tag.url ? tag.url : '');\n const finalUrl: string = provider.url + (tag.url ? tag.url : '');\n\n // find placeholder values\n const placeHolders: string[] = this.findPlaceHolders(preReplaceUrl);\n // process tag attributes\n return this.replacePlaceHolders(\n finalUrl,\n placeHolders,\n dataElements,\n transFunctions,\n params,\n provider.chld || tag.chld,\n 'rph'\n );\n }\n }\n\n private static findPlaceHolders(content: string): string[] {\n const placeHolders: string[] = [];\n let match = Constants.PLACEHOLDER_REGEX.exec(content);\n while (match !== null) {\n placeHolders.push(match[2]);\n match = Constants.PLACEHOLDER_REGEX.exec(content);\n }\n return placeHolders;\n }\n\n private static resourceParamsToActualValues(\n params: ClientSdkParamItem[],\n deItems: MapLike,\n transFunctions: MapLike\n ): HydrateTagInfo {\n // resolve all param values and convert them into a temporary structure\n const paramValueArray: MapLike = {};\n\n for (const param of params) {\n if (param.val_src !== 'CHILDREN') {\n const deVal = this.parseParamValue(param, deItems, transFunctions);\n\n if (param.rqd && typeof deVal === 'undefined') {\n return {\n isInError: true,\n content: '',\n errCd: 'REF',\n errMsg: `Tag validation failed. Parameter ${param.nm} is marked as mandatory, but no value was found in source.`,\n };\n }\n\n paramValueArray[param.fKey] = deVal;\n }\n }\n\n const op = Utils.unFlattenObject(paramValueArray);\n\n return {\n isInError: false,\n content: JSON.stringify(op),\n errCd: null,\n errMsg: null,\n };\n }\n\n private static parseParamValue(\n paramItem: ClientSdkParamItem,\n deItems: MapLike<any>,\n transFunctions: MapLike<any>\n ): any {\n let paramValue = undefined;\n if (paramItem.sv || paramItem.de || paramItem.tfId) {\n if (paramItem.sv) {\n paramValue = paramItem.sv;\n } else if (paramItem.de) {\n paramValue = deItems[paramItem.de];\n } else if (paramItem.tfId) {\n paramValue = transFunctions[paramItem.tfId];\n }\n\n paramValue = Utils.applyTransformationResourceParam(\n paramValue,\n paramItem.tf\n );\n return paramValue;\n } else {\n return undefined;\n }\n }\n\n private static replacePlaceHolders(\n content: string,\n placeHolders: string[],\n deItems: MapLike<any>,\n transFunctions: MapLike<any>,\n params: MapLike<ClientSdkParamItem>,\n hasChildren: boolean,\n replaceMode: ReplaceMode\n ): HydrateTagInfo {\n let isInError = false;\n let errMsg;\n\n if (!params) {\n return {\n isInError: false,\n content,\n errCd: null,\n errMsg: 'No parameters where found to process in this tag',\n };\n }\n\n if (hasChildren) {\n // convert the flattened parameters to parent - child format. this is inside a condition\n // because we may not have a lot of JSON type parameters and we can save some processing time by limiting\n // when this is done\n params = Utils.unFlattenResourceParams(Object.values(params));\n }\n\n for (const ph of placeHolders) {\n try {\n const tagParam: ClientSdkParamItem = params[ph];\n if (tagParam) {\n if (tagParam.children && tagParam.children.length > 0) {\n const paramValue: MapLike<any> = {};\n for (const childParam of tagParam.children) {\n paramValue[childParam.nm] = this.parseParamValue(\n childParam,\n deItems,\n transFunctions\n );\n }\n content = this.replaceValues(\n ph,\n content,\n JSON.stringify(paramValue),\n replaceMode\n );\n } else {\n const paramValue = this.parseParamValue(\n tagParam,\n deItems,\n transFunctions\n );\n if (typeof paramValue === 'object') {\n content = this.replaceValues(\n ph,\n content,\n JSON.stringify(paramValue),\n replaceMode\n );\n } else {\n content = this.replaceValues(\n ph,\n content,\n paramValue,\n replaceMode\n );\n }\n }\n } else {\n // TODO: Report\n // place holder was found but the corresponding item was not found in tag resource params\n Logger.logDbg(\n 'place holder:',\n ph,\n ', was found but the corresponding item was not found in tag resource params'\n );\n }\n } catch (err) {\n isInError = true;\n errMsg = (err as any)?.stack;\n break;\n }\n }\n\n return {\n isInError,\n content,\n errCd: isInError ? 'REF' : null,\n errMsg: errMsg,\n };\n }\n\n private static checkTagDateValidity(\n currentEpochSeconds: number,\n tagStart: number,\n tagEnd: number\n ): boolean {\n return currentEpochSeconds >= tagStart && currentEpochSeconds <= tagEnd;\n }\n\n private static replaceValues(\n placeHolder: string,\n content: string,\n val: any,\n replaceMode: ReplaceMode\n ): string {\n let replaceVal: string;\n if (replaceMode === 'kph') {\n replaceVal = val && val !== '' ? val : `{{${placeHolder}}`;\n } else if (replaceMode === 'rph') {\n replaceVal = val && val !== '' ? val : '';\n }\n content = content.split(`{{${placeHolder}}}`).join(replaceVal);\n return content;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* @param sdkTransFunctions
|
|
6
6
|
* @param optTfnKeys
|
|
7
7
|
*/
|
|
8
|
+
|
|
8
9
|
import { DataStore } from '../common/data-store';
|
|
9
10
|
import { Logger } from '../common/logger';
|
|
10
11
|
import { Utils } from '../common/utils';
|
|
@@ -13,7 +14,6 @@ export class TransFunctionProcessor {
|
|
|
13
14
|
static processTransformationFunctions(dataElements, sdkTransFunctions, optTfnKeys) {
|
|
14
15
|
const tfn = DataStore.getTransFunctions();
|
|
15
16
|
const tfnKeys = optTfnKeys && optTfnKeys.length > 0 ? optTfnKeys : Object.keys(sdkTransFunctions);
|
|
16
|
-
|
|
17
17
|
try {
|
|
18
18
|
for (const key of tfnKeys) {
|
|
19
19
|
try {
|
|
@@ -28,46 +28,39 @@ export class TransFunctionProcessor {
|
|
|
28
28
|
if (tfnItem) {
|
|
29
29
|
if (tfnItem.rParams) {
|
|
30
30
|
const tfnFnInput = {};
|
|
31
|
-
|
|
32
31
|
for (const paramKey of Object.keys(tfnItem.rParams)) {
|
|
33
32
|
// tfn can have only data elements as of now.
|
|
34
33
|
const rParam = tfnItem.rParams[paramKey];
|
|
35
34
|
const deId = rParam === null || rParam === void 0 ? void 0 : rParam.de;
|
|
36
|
-
|
|
37
35
|
if (deId) {
|
|
38
36
|
let paramValue = dataElements[deId] || '';
|
|
39
|
-
|
|
40
37
|
if (rParam.rqd && !paramValue) {
|
|
41
38
|
Logger.logDbg(`Value required for: ${paramKey}, in transformation function. But not found`);
|
|
42
39
|
break;
|
|
43
40
|
}
|
|
44
|
-
|
|
45
41
|
if (rParam.tf) {
|
|
46
42
|
paramValue = Utils.applyTransformationResourceParam(paramValue, rParam.tf);
|
|
47
43
|
}
|
|
48
|
-
|
|
49
44
|
tfnFnInput[paramKey] = paramValue;
|
|
50
45
|
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
|
|
46
|
+
}
|
|
47
|
+
// invoke the function and get the value
|
|
54
48
|
tfn[key] = tfnItem.fn(tfnFnInput);
|
|
55
49
|
}
|
|
56
50
|
} else {
|
|
57
51
|
tfn[key] = '';
|
|
58
52
|
}
|
|
59
53
|
} catch (err) {
|
|
60
|
-
Logger.logError('Error processing transformation function: ', key, ' with error: ', err);
|
|
54
|
+
Logger.logError('Error processing transformation function: ', key, ' with error: ', err);
|
|
55
|
+
// TODO: Report as metric to client
|
|
61
56
|
}
|
|
62
57
|
}
|
|
63
58
|
} catch (err) {
|
|
64
59
|
Logger.logError('Error processing transformation functions: ', err);
|
|
65
60
|
Reporter.reportError('m::processTransformationFunctions', err);
|
|
66
61
|
}
|
|
67
|
-
|
|
68
62
|
DataStore.setTransFunctions(tfn);
|
|
69
63
|
return tfn;
|
|
70
64
|
}
|
|
71
|
-
|
|
72
65
|
}
|
|
73
66
|
//# sourceMappingURL=trans-function.processor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DataStore","Logger","Utils","Reporter","TransFunctionProcessor","processTransformationFunctions","dataElements","sdkTransFunctions","optTfnKeys","tfn","getTransFunctions","tfnKeys","length","Object","keys","key","tfnItem","rParams","tfnFnInput","paramKey","rParam","deId","de","paramValue","rqd","logDbg","tf","applyTransformationResourceParam","fn","err","logError","reportError","setTransFunctions"],"sources":["trans-function.processor.ts"],"sourcesContent":["/**\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 dataElements\n * @param sdkTransFunctions\n * @param optTfnKeys\n */\nimport type { MapLike } from '../common/app-types';\nimport type { ClientSdkTfnItem } from '../models/mp-client-sdk';\nimport { DataStore } from '../common/data-store';\nimport { Logger } from '../common/logger';\nimport { Utils } from '../common/utils';\nimport { Reporter } from '../common/reporter';\n\nexport class TransFunctionProcessor {\n static processTransformationFunctions(\n dataElements: MapLike<any>,\n sdkTransFunctions: MapLike<ClientSdkTfnItem>,\n optTfnKeys?: string[]\n ): MapLike<any> {\n const tfn = DataStore.getTransFunctions();\n const tfnKeys =\n optTfnKeys && optTfnKeys.length > 0\n ? optTfnKeys\n : Object.keys(sdkTransFunctions);\n try {\n for (const key of tfnKeys) {\n try {\n const tfnItem = sdkTransFunctions[key];\n /**\n * How to process transformation functions\n * 1) Find all the data elements in the resource params of trans function\n * 2) make them into an object (key value) where key is the resourceKey and value is the value of data elements\n * 3) Invoke the tfn and get the value and store it against the tfn key\n */\n\n if (tfnItem) {\n if (tfnItem.rParams) {\n const tfnFnInput: any = {};\n for (const paramKey of Object.keys(tfnItem.rParams)) {\n // tfn can have only data elements as of now.\n const rParam = tfnItem.rParams[paramKey];\n const deId = rParam?.de;\n if (deId) {\n let paramValue = dataElements[deId] || '';\n if (rParam.rqd && !paramValue) {\n Logger.logDbg(\n `Value required for: ${paramKey}, in transformation function. But not found`\n );\n break;\n }\n if (rParam.tf) {\n paramValue = Utils.applyTransformationResourceParam(\n paramValue,\n rParam.tf\n );\n }\n tfnFnInput[paramKey] = paramValue;\n }\n }\n // invoke the function and get the value\n tfn[key] = tfnItem.fn(tfnFnInput);\n }\n } else {\n tfn[key] = '';\n }\n } catch (err) {\n Logger.logError(\n 'Error processing transformation function: ',\n key,\n ' with error: ',\n err\n );\n // TODO: Report as metric to client\n }\n }\n } catch (err) {\n Logger.logError('Error processing transformation functions: ', err);\n Reporter.reportError('m::processTransformationFunctions', err);\n }\n\n DataStore.setTransFunctions(tfn);\n return tfn;\n }\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA
|
|
1
|
+
{"version":3,"names":["DataStore","Logger","Utils","Reporter","TransFunctionProcessor","processTransformationFunctions","dataElements","sdkTransFunctions","optTfnKeys","tfn","getTransFunctions","tfnKeys","length","Object","keys","key","tfnItem","rParams","tfnFnInput","paramKey","rParam","deId","de","paramValue","rqd","logDbg","tf","applyTransformationResourceParam","fn","err","logError","reportError","setTransFunctions"],"sources":["trans-function.processor.ts"],"sourcesContent":["/**\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 dataElements\n * @param sdkTransFunctions\n * @param optTfnKeys\n */\nimport type { MapLike } from '../common/app-types';\nimport type { ClientSdkTfnItem } from '../models/mp-client-sdk';\nimport { DataStore } from '../common/data-store';\nimport { Logger } from '../common/logger';\nimport { Utils } from '../common/utils';\nimport { Reporter } from '../common/reporter';\n\nexport class TransFunctionProcessor {\n static processTransformationFunctions(\n dataElements: MapLike<any>,\n sdkTransFunctions: MapLike<ClientSdkTfnItem>,\n optTfnKeys?: string[]\n ): MapLike<any> {\n const tfn = DataStore.getTransFunctions();\n const tfnKeys =\n optTfnKeys && optTfnKeys.length > 0\n ? optTfnKeys\n : Object.keys(sdkTransFunctions);\n try {\n for (const key of tfnKeys) {\n try {\n const tfnItem = sdkTransFunctions[key];\n /**\n * How to process transformation functions\n * 1) Find all the data elements in the resource params of trans function\n * 2) make them into an object (key value) where key is the resourceKey and value is the value of data elements\n * 3) Invoke the tfn and get the value and store it against the tfn key\n */\n\n if (tfnItem) {\n if (tfnItem.rParams) {\n const tfnFnInput: any = {};\n for (const paramKey of Object.keys(tfnItem.rParams)) {\n // tfn can have only data elements as of now.\n const rParam = tfnItem.rParams[paramKey];\n const deId = rParam?.de;\n if (deId) {\n let paramValue = dataElements[deId] || '';\n if (rParam.rqd && !paramValue) {\n Logger.logDbg(\n `Value required for: ${paramKey}, in transformation function. But not found`\n );\n break;\n }\n if (rParam.tf) {\n paramValue = Utils.applyTransformationResourceParam(\n paramValue,\n rParam.tf\n );\n }\n tfnFnInput[paramKey] = paramValue;\n }\n }\n // invoke the function and get the value\n tfn[key] = tfnItem.fn(tfnFnInput);\n }\n } else {\n tfn[key] = '';\n }\n } catch (err) {\n Logger.logError(\n 'Error processing transformation function: ',\n key,\n ' with error: ',\n err\n );\n // TODO: Report as metric to client\n }\n }\n } catch (err) {\n Logger.logError('Error processing transformation functions: ', err);\n Reporter.reportError('m::processTransformationFunctions', err);\n }\n\n DataStore.setTransFunctions(tfn);\n return tfn;\n }\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,SAASA,SAAS,QAAQ,sBAAsB;AAChD,SAASC,MAAM,QAAQ,kBAAkB;AACzC,SAASC,KAAK,QAAQ,iBAAiB;AACvC,SAASC,QAAQ,QAAQ,oBAAoB;AAE7C,OAAO,MAAMC,sBAAsB,CAAC;EAClC,OAAOC,8BAA8BA,CACnCC,YAA0B,EAC1BC,iBAA4C,EAC5CC,UAAqB,EACP;IACd,MAAMC,GAAG,GAAGT,SAAS,CAACU,iBAAiB,CAAC,CAAC;IACzC,MAAMC,OAAO,GACXH,UAAU,IAAIA,UAAU,CAACI,MAAM,GAAG,CAAC,GAC/BJ,UAAU,GACVK,MAAM,CAACC,IAAI,CAACP,iBAAiB,CAAC;IACpC,IAAI;MACF,KAAK,MAAMQ,GAAG,IAAIJ,OAAO,EAAE;QACzB,IAAI;UACF,MAAMK,OAAO,GAAGT,iBAAiB,CAACQ,GAAG,CAAC;UACtC;AACV;AACA;AACA;AACA;AACA;;UAEU,IAAIC,OAAO,EAAE;YACX,IAAIA,OAAO,CAACC,OAAO,EAAE;cACnB,MAAMC,UAAe,GAAG,CAAC,CAAC;cAC1B,KAAK,MAAMC,QAAQ,IAAIN,MAAM,CAACC,IAAI,CAACE,OAAO,CAACC,OAAO,CAAC,EAAE;gBACnD;gBACA,MAAMG,MAAM,GAAGJ,OAAO,CAACC,OAAO,CAACE,QAAQ,CAAC;gBACxC,MAAME,IAAI,GAAGD,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEE,EAAE;gBACvB,IAAID,IAAI,EAAE;kBACR,IAAIE,UAAU,GAAGjB,YAAY,CAACe,IAAI,CAAC,IAAI,EAAE;kBACzC,IAAID,MAAM,CAACI,GAAG,IAAI,CAACD,UAAU,EAAE;oBAC7BtB,MAAM,CAACwB,MAAM,CACX,uBAAuBN,QAAQ,6CACjC,CAAC;oBACD;kBACF;kBACA,IAAIC,MAAM,CAACM,EAAE,EAAE;oBACbH,UAAU,GAAGrB,KAAK,CAACyB,gCAAgC,CACjDJ,UAAU,EACVH,MAAM,CAACM,EACT,CAAC;kBACH;kBACAR,UAAU,CAACC,QAAQ,CAAC,GAAGI,UAAU;gBACnC;cACF;cACA;cACAd,GAAG,CAACM,GAAG,CAAC,GAAGC,OAAO,CAACY,EAAE,CAACV,UAAU,CAAC;YACnC;UACF,CAAC,MAAM;YACLT,GAAG,CAACM,GAAG,CAAC,GAAG,EAAE;UACf;QACF,CAAC,CAAC,OAAOc,GAAG,EAAE;UACZ5B,MAAM,CAAC6B,QAAQ,CACb,4CAA4C,EAC5Cf,GAAG,EACH,eAAe,EACfc,GACF,CAAC;UACD;QACF;MACF;IACF,CAAC,CAAC,OAAOA,GAAG,EAAE;MACZ5B,MAAM,CAAC6B,QAAQ,CAAC,6CAA6C,EAAED,GAAG,CAAC;MACnE1B,QAAQ,CAAC4B,WAAW,CAAC,mCAAmC,EAAEF,GAAG,CAAC;IAChE;IAEA7B,SAAS,CAACgC,iBAAiB,CAACvB,GAAG,CAAC;IAChC,OAAOA,GAAG;EACZ;AACF","ignoreList":[]}
|