@magicpixel/rn-mp-client-sdk 0.6.2 → 0.7.2

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 (39) hide show
  1. package/lib/commonjs/common/app-types.js.map +1 -1
  2. package/lib/commonjs/common/data-store.js +10 -0
  3. package/lib/commonjs/common/data-store.js.map +1 -1
  4. package/lib/commonjs/common/network-service.js +9 -3
  5. package/lib/commonjs/common/network-service.js.map +1 -1
  6. package/lib/commonjs/common/utils.js +17 -46
  7. package/lib/commonjs/common/utils.js.map +1 -1
  8. package/lib/commonjs/index.js +29 -2
  9. package/lib/commonjs/index.js.map +1 -1
  10. package/lib/commonjs/processors/tag.processor.js +1 -1
  11. package/lib/commonjs/processors/tag.processor.js.map +1 -1
  12. package/lib/commonjs/processors/visit-id.processor.js +56 -87
  13. package/lib/commonjs/processors/visit-id.processor.js.map +1 -1
  14. package/lib/module/common/app-types.js.map +1 -1
  15. package/lib/module/common/data-store.js +10 -0
  16. package/lib/module/common/data-store.js.map +1 -1
  17. package/lib/module/common/network-service.js +9 -3
  18. package/lib/module/common/network-service.js.map +1 -1
  19. package/lib/module/common/utils.js +18 -47
  20. package/lib/module/common/utils.js.map +1 -1
  21. package/lib/module/index.js +28 -2
  22. package/lib/module/index.js.map +1 -1
  23. package/lib/module/processors/tag.processor.js +1 -1
  24. package/lib/module/processors/tag.processor.js.map +1 -1
  25. package/lib/module/processors/visit-id.processor.js +49 -82
  26. package/lib/module/processors/visit-id.processor.js.map +1 -1
  27. package/lib/typescript/common/app-types.d.ts +1 -0
  28. package/lib/typescript/common/data-store.d.ts +3 -0
  29. package/lib/typescript/common/utils.d.ts +3 -4
  30. package/lib/typescript/index.d.ts +6 -3
  31. package/lib/typescript/processors/visit-id.processor.d.ts +4 -4
  32. package/package.json +27 -25
  33. package/src/common/app-types.ts +2 -0
  34. package/src/common/data-store.ts +10 -0
  35. package/src/common/network-service.ts +7 -1
  36. package/src/common/utils.ts +15 -62
  37. package/src/index.tsx +36 -5
  38. package/src/processors/tag.processor.ts +1 -1
  39. package/src/processors/visit-id.processor.ts +54 -96
@@ -1,6 +1,6 @@
1
1
  import { Constants } from './constants';
2
2
  import { Logger } from './logger';
3
- import { unflatten } from 'flat';
3
+ import { flatten, unflatten } from 'flat';
4
4
  import { EventBus } from './event-bus';
5
5
  import { Dimensions } from 'react-native';
6
6
  export class Utils {
@@ -179,6 +179,14 @@ export class Utils {
179
179
  return Constants.LARGE_RANDOM_POOL();
180
180
  }
181
181
 
182
+ static getSimpleDebugId(prefix) {
183
+ return `${prefix ?? ''}${this.randomNumber(100000000, 99999999999)}`;
184
+ }
185
+
186
+ static randomNumber(min, max) {
187
+ return Math.ceil(Math.random() * (max - min) + min);
188
+ }
189
+
182
190
  static unFlattenResourceParams(input) {
183
191
  if (!input || input.length === 0) {
184
192
  return {};
@@ -214,15 +222,15 @@ export class Utils {
214
222
  return op;
215
223
  }
216
224
 
217
- static unflattenObject(obj) {
218
- try {
219
- return unflatten(obj, {
220
- object: false,
221
- delimiter: '.'
222
- });
223
- } catch (e) {}
225
+ static unFlattenObject(obj) {
226
+ if (!obj) {
227
+ return {};
228
+ }
224
229
 
225
- return null;
230
+ return unflatten(obj, {
231
+ object: false,
232
+ delimiter: '.'
233
+ });
226
234
  }
227
235
 
228
236
  static flattenObject(obj) {
@@ -230,48 +238,11 @@ export class Utils {
230
238
  return {};
231
239
  }
232
240
 
233
- return this.flatten(obj, {
241
+ return flatten(obj, {
234
242
  maxDepth: 5,
235
243
  safe: true
236
244
  });
237
245
  }
238
246
 
239
- static flatten(target, opts) {
240
- opts = opts || {};
241
- const delimiter = opts.delimiter || '.';
242
- const maxDepth = opts.maxDepth;
243
- const transformKey = opts.transformKey || this.keyIdentity;
244
- const output = {};
245
-
246
- const step = (object, prev, currentDepth) => {
247
- currentDepth = currentDepth || 1;
248
- Object.keys(object).forEach(key => {
249
- const value = object[key];
250
- const isarray = opts.safe && Array.isArray(value);
251
- const type = Object.prototype.toString.call(value);
252
- const isBuffer = this.isBuffer(value);
253
- const isobject = type === '[object Object]' || type === '[object Array]';
254
- const newKey = prev ? prev + delimiter + transformKey(key) : transformKey(key);
255
-
256
- if (!isarray && !isBuffer && isobject && Object.keys(value).length && (!opts.maxDepth || currentDepth < maxDepth)) {
257
- return step(value, newKey, currentDepth + 1);
258
- }
259
-
260
- output[newKey] = value;
261
- });
262
- };
263
-
264
- step(target);
265
- return output;
266
- }
267
-
268
- static keyIdentity(key) {
269
- return key;
270
- }
271
-
272
- static isBuffer(obj) {
273
- return obj && obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj);
274
- }
275
-
276
247
  }
277
248
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Constants","Logger","unflatten","EventBus","Dimensions","Utils","triggerEvent","eventName","payload","calculateMsp","dim","limit","scale","width","height","_makeUniqueStringArray","input","Set","isTablet","get","sleep","delay","Promise","resolve","setTimeout","dtToNum","deviceType","bwToNum","browser","langToNum","language","mergeMaps","toMerge","mapObject","Object","keys","forEach","key","applyTransformationResourceParam","paramValue","tf","length","tfItem","nm","eTyp","encodeURIComponent","Buffer","from","toString","isMatch","toTest","inputs","ignoreCase","fullMatch","isMatched","i","_val","convertToRegex","test","regExpEscape","replace","RegExp","split","map","join","safeExecute","fn","err","logError","getUniqueID","LARGE_RANDOM_POOL","unFlattenResourceParams","transformMap","op","item","pId","children","id","push","values","sort","sortAscending","unflattenObject","obj","object","delimiter","e","flattenObject","flatten","maxDepth","safe","target","opts","transformKey","keyIdentity","output","step","prev","currentDepth","value","isarray","Array","isArray","type","prototype","call","isBuffer","isobject","newKey","constructor"],"sources":["utils.ts"],"sourcesContent":["import { Constants } from './constants';\nimport { Logger } from './logger';\nimport type {\n BaseResourceParamType,\n SdkParamEncodingTransformer,\n TFType,\n} from '../models/mp-client-sdk';\nimport type { MapLike } from './app-types';\nimport { unflatten } from 'flat';\nimport { EventBus } from './event-bus';\nimport { Dimensions, ScaledSize } from 'react-native';\n\nexport class Utils {\n static triggerEvent(eventName: string, payload: any): void {\n EventBus.triggerEvent(eventName, payload);\n }\n\n static calculateMsp(dim: ScaledSize, limit: number): boolean {\n return dim.scale * dim.width >= limit || dim.scale * dim.height >= limit;\n }\n\n static _makeUniqueStringArray(input: string[]): string[] {\n return [...new Set(input)];\n }\n\n static isTablet(): boolean {\n const dim = Dimensions.get('screen');\n return (\n (dim.scale < 2 && this.calculateMsp(dim, 1000)) ||\n (dim.scale >= 2 && this.calculateMsp(dim, 1900))\n );\n }\n\n static sleep(delay = 1000): Promise<void> {\n return new Promise((resolve: (val?: any) => void) => {\n setTimeout(() => {\n return resolve();\n }, delay);\n });\n }\n\n /**\n * deviceTypesMappings = {'1':'Desktop Web','2':'Mobile Web','3':'Tablet','4':'Other'};\n * @param deviceType\n */\n static dtToNum(deviceType: string): number {\n switch (deviceType) {\n case 'desktop':\n return 1;\n case 'mobile':\n return 2;\n case 'tablet':\n return 3;\n default:\n return 4;\n }\n }\n\n /**\n * static browserToOsMappings = {'101': 'ios','102': 'android', '7': 'Other'};\n * @param browser\n */\n static bwToNum(browser: string): number {\n switch (browser) {\n case 'ios':\n return 101;\n case 'android':\n return 102;\n default:\n return 7;\n }\n }\n\n static langToNum(language: string): number {\n if (language === 'en') {\n return 1;\n } else if (language === 'es') {\n return 2;\n } else {\n return 3;\n }\n }\n\n static mergeMaps<T>(\n input: MapLike<T>,\n ...toMerge: Array<MapLike<T>>\n ): MapLike<T> {\n if (!input) {\n input = {} as MapLike<T>;\n }\n for (const mapObject of toMerge) {\n if (mapObject) {\n Object.keys(mapObject).forEach((key: string) => {\n input[key] = mapObject[key];\n });\n }\n }\n return input;\n }\n\n static applyTransformationResourceParam(\n paramValue: string,\n tf: TFType | undefined\n ): any {\n if (!tf || tf.length === 0) {\n return paramValue;\n }\n\n if (typeof paramValue === 'undefined') {\n return paramValue;\n }\n\n // transformers here are expected to be ordered when we get it from the server after build\n for (let tfItem of tf) {\n if (tfItem.nm === 'enc') {\n // only url encode is implemented now\n tfItem = tfItem as SdkParamEncodingTransformer;\n if (tfItem.eTyp === 'URL_ENC') {\n paramValue = encodeURIComponent(paramValue);\n } else if (tfItem.eTyp === 'BASE64') {\n paramValue = Buffer.from(paramValue).toString('base64');\n }\n }\n }\n\n return paramValue;\n }\n\n /**\n * Verifies if the given 'toTest' string exists in any of the input array of strings.\n * By default, this method does a case sensitive match unless specified by the ignoreCase param.\n * @param toTest\n * @param inputs\n * @param ignoreCase - pass a value of 'true' to perform case-insensitive matching.\n * @param fullMatch\n */\n static isMatch(\n toTest: string,\n inputs: string[],\n ignoreCase: boolean,\n fullMatch: boolean\n ): boolean {\n if (!toTest) {\n return false;\n }\n let isMatched = false;\n for (let i = 0; i < inputs.length; i += 1) {\n const _val = inputs[i];\n if (_val) {\n if (this.convertToRegex(_val, ignoreCase, fullMatch).test(toTest)) {\n isMatched = true;\n break;\n }\n }\n }\n return isMatched;\n }\n\n static regExpEscape(input: string): string {\n return input.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n }\n\n static convertToRegex(\n input: string,\n ignoreCase: boolean,\n fullMatch: boolean\n ): RegExp {\n if (fullMatch) {\n return new RegExp(\n '^' + input.split(/\\*+/).map(this.regExpEscape).join('.*') + '$',\n ignoreCase ? 'i' : ''\n );\n } else {\n return new RegExp(\n input.split(/\\*+/).map(this.regExpEscape).join('.*'),\n ignoreCase ? 'i' : ''\n );\n }\n }\n\n static safeExecute(fn: (payload: any) => any, payload: any): any {\n try {\n return fn(payload);\n } catch (err) {\n Logger.logError('Error executing function: ', err);\n }\n }\n\n static getUniqueID(): string {\n return Constants.LARGE_RANDOM_POOL();\n }\n\n static unFlattenResourceParams<T extends BaseResourceParamType>(\n input: T[]\n ): MapLike<T> {\n if (!input || input.length === 0) {\n return {};\n }\n\n const transformMap: MapLike<T> = {};\n const op: MapLike<T> = {};\n // convert input into a map for quick search O(1)\n for (const item of input) {\n if (item.pId) {\n if (!transformMap[item.pId]) {\n item.children = [];\n transformMap[item.id] = item;\n } else {\n transformMap[item.pId].children.push(item);\n }\n } else {\n item.children = [];\n transformMap[item.id] = item;\n }\n }\n\n // sort children according to child_order inside children if they have any children\n for (const item of Object.values(transformMap)) {\n if (item.children && item.children.length > 0) {\n item.children = item.children.sort(Constants.sortAscending);\n op[item.nm] = item;\n } else {\n op[item.nm] = item;\n }\n }\n\n return op;\n }\n\n static unflattenObject(obj: Record<string, any>): Record<string, any> {\n try {\n return unflatten(obj, { object: false, delimiter: '.' });\n } catch (e) {}\n return null;\n }\n\n static flattenObject(obj: any): Record<string, any> {\n if (!obj) {\n return {};\n }\n return this.flatten(obj, { maxDepth: 5, safe: true });\n }\n\n private static flatten(target: any, opts: any): any {\n opts = opts || {};\n\n const delimiter = opts.delimiter || '.';\n const maxDepth = opts.maxDepth;\n const transformKey = opts.transformKey || this.keyIdentity;\n const output: any = {};\n\n const step = (object: any, prev?: any, currentDepth?: any): any => {\n currentDepth = currentDepth || 1;\n Object.keys(object).forEach((key) => {\n const value = object[key];\n const isarray = opts.safe && Array.isArray(value);\n const type = Object.prototype.toString.call(value);\n const isBuffer = this.isBuffer(value);\n\n const isobject =\n type === '[object Object]' || type === '[object Array]';\n\n const newKey = prev\n ? prev + delimiter + transformKey(key)\n : transformKey(key);\n\n if (\n !isarray &&\n !isBuffer &&\n isobject &&\n Object.keys(value).length &&\n (!opts.maxDepth || currentDepth < maxDepth)\n ) {\n return step(value, newKey, currentDepth + 1);\n }\n\n output[newKey] = value;\n });\n };\n\n step(target);\n\n return output;\n }\n\n static keyIdentity(key: any): any {\n return key;\n }\n\n static isBuffer(obj: any): boolean {\n return (\n obj &&\n obj.constructor &&\n typeof obj.constructor.isBuffer === 'function' &&\n obj.constructor.isBuffer(obj)\n );\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["Constants","Logger","flatten","unflatten","EventBus","Dimensions","Utils","triggerEvent","eventName","payload","calculateMsp","dim","limit","scale","width","height","_makeUniqueStringArray","input","Set","isTablet","get","sleep","delay","Promise","resolve","setTimeout","dtToNum","deviceType","bwToNum","browser","langToNum","language","mergeMaps","toMerge","mapObject","Object","keys","forEach","key","applyTransformationResourceParam","paramValue","tf","length","tfItem","nm","eTyp","encodeURIComponent","Buffer","from","toString","isMatch","toTest","inputs","ignoreCase","fullMatch","isMatched","i","_val","convertToRegex","test","regExpEscape","replace","RegExp","split","map","join","safeExecute","fn","err","logError","getUniqueID","LARGE_RANDOM_POOL","getSimpleDebugId","prefix","randomNumber","min","max","Math","ceil","random","unFlattenResourceParams","transformMap","op","item","pId","children","id","push","values","sort","sortAscending","unFlattenObject","obj","object","delimiter","flattenObject","maxDepth","safe"],"sources":["utils.ts"],"sourcesContent":["import { Constants } from './constants';\nimport { Logger } from './logger';\nimport type {\n BaseResourceParamType,\n SdkParamEncodingTransformer,\n TFType,\n} from '../models/mp-client-sdk';\nimport type { MapLike } from './app-types';\nimport { flatten, unflatten } from 'flat';\nimport { EventBus } from './event-bus';\nimport { Dimensions, ScaledSize } from 'react-native';\n\nexport class Utils {\n static triggerEvent(eventName: string, payload: any): void {\n EventBus.triggerEvent(eventName, payload);\n }\n\n static calculateMsp(dim: ScaledSize, limit: number): boolean {\n return dim.scale * dim.width >= limit || dim.scale * dim.height >= limit;\n }\n\n static _makeUniqueStringArray(input: string[]): string[] {\n return [...new Set(input)];\n }\n\n static isTablet(): boolean {\n const dim = Dimensions.get('screen');\n return (\n (dim.scale < 2 && this.calculateMsp(dim, 1000)) ||\n (dim.scale >= 2 && this.calculateMsp(dim, 1900))\n );\n }\n\n static sleep(delay = 1000): Promise<void> {\n return new Promise((resolve: (val?: any) => void) => {\n setTimeout(() => {\n return resolve();\n }, delay);\n });\n }\n\n /**\n * deviceTypesMappings = {'1':'Desktop Web','2':'Mobile Web','3':'Tablet','4':'Other'};\n * @param deviceType\n */\n static dtToNum(deviceType: string): number {\n switch (deviceType) {\n case 'desktop':\n return 1;\n case 'mobile':\n return 2;\n case 'tablet':\n return 3;\n default:\n return 4;\n }\n }\n\n /**\n * static browserToOsMappings = {'101': 'ios','102': 'android', '7': 'Other'};\n * @param browser\n */\n static bwToNum(browser: string): number {\n switch (browser) {\n case 'ios':\n return 101;\n case 'android':\n return 102;\n default:\n return 7;\n }\n }\n\n static langToNum(language: string): number {\n if (language === 'en') {\n return 1;\n } else if (language === 'es') {\n return 2;\n } else {\n return 3;\n }\n }\n\n static mergeMaps<T>(\n input: MapLike<T>,\n ...toMerge: Array<MapLike<T>>\n ): MapLike<T> {\n if (!input) {\n input = {} as MapLike<T>;\n }\n for (const mapObject of toMerge) {\n if (mapObject) {\n Object.keys(mapObject).forEach((key: string) => {\n input[key] = mapObject[key];\n });\n }\n }\n return input;\n }\n\n static applyTransformationResourceParam(\n paramValue: string,\n tf: TFType | undefined\n ): any {\n if (!tf || tf.length === 0) {\n return paramValue;\n }\n\n if (typeof paramValue === 'undefined') {\n return paramValue;\n }\n\n // transformers here are expected to be ordered when we get it from the server after build\n for (let tfItem of tf) {\n if (tfItem.nm === 'enc') {\n // only url encode is implemented now\n tfItem = tfItem as SdkParamEncodingTransformer;\n if (tfItem.eTyp === 'URL_ENC') {\n paramValue = encodeURIComponent(paramValue);\n } else if (tfItem.eTyp === 'BASE64') {\n paramValue = Buffer.from(paramValue).toString('base64');\n }\n }\n }\n\n return paramValue;\n }\n\n /**\n * Verifies if the given 'toTest' string exists in any of the input array of strings.\n * By default, this method does a case sensitive match unless specified by the ignoreCase param.\n * @param toTest\n * @param inputs\n * @param ignoreCase - pass a value of 'true' to perform case-insensitive matching.\n * @param fullMatch\n */\n static isMatch(\n toTest: string,\n inputs: string[],\n ignoreCase: boolean,\n fullMatch: boolean\n ): boolean {\n if (!toTest) {\n return false;\n }\n let isMatched = false;\n for (let i = 0; i < inputs.length; i += 1) {\n const _val = inputs[i];\n if (_val) {\n if (this.convertToRegex(_val, ignoreCase, fullMatch).test(toTest)) {\n isMatched = true;\n break;\n }\n }\n }\n return isMatched;\n }\n\n static regExpEscape(input: string): string {\n return input.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n }\n\n static convertToRegex(\n input: string,\n ignoreCase: boolean,\n fullMatch: boolean\n ): RegExp {\n if (fullMatch) {\n return new RegExp(\n '^' + input.split(/\\*+/).map(this.regExpEscape).join('.*') + '$',\n ignoreCase ? 'i' : ''\n );\n } else {\n return new RegExp(\n input.split(/\\*+/).map(this.regExpEscape).join('.*'),\n ignoreCase ? 'i' : ''\n );\n }\n }\n\n static safeExecute(fn: (payload: any) => any, payload: any): any {\n try {\n return fn(payload);\n } catch (err) {\n Logger.logError('Error executing function: ', err);\n }\n }\n\n static getUniqueID(): string {\n return Constants.LARGE_RANDOM_POOL();\n }\n\n static getSimpleDebugId(prefix?: string): string {\n return `${prefix ?? ''}${this.randomNumber(100000000, 99999999999)}`;\n }\n\n static randomNumber(min: number, max: number): number {\n return Math.ceil(Math.random() * (max - min) + min);\n }\n\n static unFlattenResourceParams<T extends BaseResourceParamType>(\n input: T[]\n ): MapLike<T> {\n if (!input || input.length === 0) {\n return {};\n }\n\n const transformMap: MapLike<T> = {};\n const op: MapLike<T> = {};\n // convert input into a map for quick search O(1)\n for (const item of input) {\n if (item.pId) {\n if (!transformMap[item.pId]) {\n item.children = [];\n transformMap[item.id] = item;\n } else {\n transformMap[item.pId].children.push(item);\n }\n } else {\n item.children = [];\n transformMap[item.id] = item;\n }\n }\n\n // sort children according to child_order inside children if they have any children\n for (const item of Object.values(transformMap)) {\n if (item.children && item.children.length > 0) {\n item.children = item.children.sort(Constants.sortAscending);\n op[item.nm] = item;\n } else {\n op[item.nm] = item;\n }\n }\n\n return op;\n }\n\n static unFlattenObject(obj: any): Record<string, any> {\n if (!obj) {\n return {};\n }\n return unflatten(obj, { object: false, delimiter: '.' });\n }\n\n static flattenObject(obj: any): Record<string, any> {\n if (!obj) {\n return {};\n }\n return flatten(obj, { maxDepth: 5, safe: true });\n }\n}\n"],"mappings":"AAAA,SAASA,SAAT,QAA0B,aAA1B;AACA,SAASC,MAAT,QAAuB,UAAvB;AAOA,SAASC,OAAT,EAAkBC,SAAlB,QAAmC,MAAnC;AACA,SAASC,QAAT,QAAyB,aAAzB;AACA,SAASC,UAAT,QAAuC,cAAvC;AAEA,OAAO,MAAMC,KAAN,CAAY;EACE,OAAZC,YAAY,CAACC,SAAD,EAAoBC,OAApB,EAAwC;IACzDL,QAAQ,CAACG,YAAT,CAAsBC,SAAtB,EAAiCC,OAAjC;EACD;;EAEkB,OAAZC,YAAY,CAACC,GAAD,EAAkBC,KAAlB,EAA0C;IAC3D,OAAOD,GAAG,CAACE,KAAJ,GAAYF,GAAG,CAACG,KAAhB,IAAyBF,KAAzB,IAAkCD,GAAG,CAACE,KAAJ,GAAYF,GAAG,CAACI,MAAhB,IAA0BH,KAAnE;EACD;;EAE4B,OAAtBI,sBAAsB,CAACC,KAAD,EAA4B;IACvD,OAAO,CAAC,GAAG,IAAIC,GAAJ,CAAQD,KAAR,CAAJ,CAAP;EACD;;EAEc,OAARE,QAAQ,GAAY;IACzB,MAAMR,GAAG,GAAGN,UAAU,CAACe,GAAX,CAAe,QAAf,CAAZ;IACA,OACGT,GAAG,CAACE,KAAJ,GAAY,CAAZ,IAAiB,KAAKH,YAAL,CAAkBC,GAAlB,EAAuB,IAAvB,CAAlB,IACCA,GAAG,CAACE,KAAJ,IAAa,CAAb,IAAkB,KAAKH,YAAL,CAAkBC,GAAlB,EAAuB,IAAvB,CAFrB;EAID;;EAEW,OAALU,KAAK,GAA8B;IAAA,IAA7BC,KAA6B,uEAArB,IAAqB;IACxC,OAAO,IAAIC,OAAJ,CAAaC,OAAD,IAAkC;MACnDC,UAAU,CAAC,MAAM;QACf,OAAOD,OAAO,EAAd;MACD,CAFS,EAEPF,KAFO,CAAV;IAGD,CAJM,CAAP;EAKD;EAED;AACF;AACA;AACA;;;EACgB,OAAPI,OAAO,CAACC,UAAD,EAA6B;IACzC,QAAQA,UAAR;MACE,KAAK,SAAL;QACE,OAAO,CAAP;;MACF,KAAK,QAAL;QACE,OAAO,CAAP;;MACF,KAAK,QAAL;QACE,OAAO,CAAP;;MACF;QACE,OAAO,CAAP;IARJ;EAUD;EAED;AACF;AACA;AACA;;;EACgB,OAAPC,OAAO,CAACC,OAAD,EAA0B;IACtC,QAAQA,OAAR;MACE,KAAK,KAAL;QACE,OAAO,GAAP;;MACF,KAAK,SAAL;QACE,OAAO,GAAP;;MACF;QACE,OAAO,CAAP;IANJ;EAQD;;EAEe,OAATC,SAAS,CAACC,QAAD,EAA2B;IACzC,IAAIA,QAAQ,KAAK,IAAjB,EAAuB;MACrB,OAAO,CAAP;IACD,CAFD,MAEO,IAAIA,QAAQ,KAAK,IAAjB,EAAuB;MAC5B,OAAO,CAAP;IACD,CAFM,MAEA;MACL,OAAO,CAAP;IACD;EACF;;EAEe,OAATC,SAAS,CACdf,KADc,EAGF;IACZ,IAAI,CAACA,KAAL,EAAY;MACVA,KAAK,GAAG,EAAR;IACD;;IAHW,kCADTgB,OACS;MADTA,OACS;IAAA;;IAIZ,KAAK,MAAMC,SAAX,IAAwBD,OAAxB,EAAiC;MAC/B,IAAIC,SAAJ,EAAe;QACbC,MAAM,CAACC,IAAP,CAAYF,SAAZ,EAAuBG,OAAvB,CAAgCC,GAAD,IAAiB;UAC9CrB,KAAK,CAACqB,GAAD,CAAL,GAAaJ,SAAS,CAACI,GAAD,CAAtB;QACD,CAFD;MAGD;IACF;;IACD,OAAOrB,KAAP;EACD;;EAEsC,OAAhCsB,gCAAgC,CACrCC,UADqC,EAErCC,EAFqC,EAGhC;IACL,IAAI,CAACA,EAAD,IAAOA,EAAE,CAACC,MAAH,KAAc,CAAzB,EAA4B;MAC1B,OAAOF,UAAP;IACD;;IAED,IAAI,OAAOA,UAAP,KAAsB,WAA1B,EAAuC;MACrC,OAAOA,UAAP;IACD,CAPI,CASL;;;IACA,KAAK,IAAIG,MAAT,IAAmBF,EAAnB,EAAuB;MACrB,IAAIE,MAAM,CAACC,EAAP,KAAc,KAAlB,EAAyB;QACvB;QACAD,MAAM,GAAGA,MAAT;;QACA,IAAIA,MAAM,CAACE,IAAP,KAAgB,SAApB,EAA+B;UAC7BL,UAAU,GAAGM,kBAAkB,CAACN,UAAD,CAA/B;QACD,CAFD,MAEO,IAAIG,MAAM,CAACE,IAAP,KAAgB,QAApB,EAA8B;UACnCL,UAAU,GAAGO,MAAM,CAACC,IAAP,CAAYR,UAAZ,EAAwBS,QAAxB,CAAiC,QAAjC,CAAb;QACD;MACF;IACF;;IAED,OAAOT,UAAP;EACD;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;EACgB,OAAPU,OAAO,CACZC,MADY,EAEZC,MAFY,EAGZC,UAHY,EAIZC,SAJY,EAKH;IACT,IAAI,CAACH,MAAL,EAAa;MACX,OAAO,KAAP;IACD;;IACD,IAAII,SAAS,GAAG,KAAhB;;IACA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,MAAM,CAACV,MAA3B,EAAmCc,CAAC,IAAI,CAAxC,EAA2C;MACzC,MAAMC,IAAI,GAAGL,MAAM,CAACI,CAAD,CAAnB;;MACA,IAAIC,IAAJ,EAAU;QACR,IAAI,KAAKC,cAAL,CAAoBD,IAApB,EAA0BJ,UAA1B,EAAsCC,SAAtC,EAAiDK,IAAjD,CAAsDR,MAAtD,CAAJ,EAAmE;UACjEI,SAAS,GAAG,IAAZ;UACA;QACD;MACF;IACF;;IACD,OAAOA,SAAP;EACD;;EAEkB,OAAZK,YAAY,CAAC3C,KAAD,EAAwB;IACzC,OAAOA,KAAK,CAAC4C,OAAN,CAAc,qBAAd,EAAqC,MAArC,CAAP;EACD;;EAEoB,OAAdH,cAAc,CACnBzC,KADmB,EAEnBoC,UAFmB,EAGnBC,SAHmB,EAIX;IACR,IAAIA,SAAJ,EAAe;MACb,OAAO,IAAIQ,MAAJ,CACL,MAAM7C,KAAK,CAAC8C,KAAN,CAAY,KAAZ,EAAmBC,GAAnB,CAAuB,KAAKJ,YAA5B,EAA0CK,IAA1C,CAA+C,IAA/C,CAAN,GAA6D,GADxD,EAELZ,UAAU,GAAG,GAAH,GAAS,EAFd,CAAP;IAID,CALD,MAKO;MACL,OAAO,IAAIS,MAAJ,CACL7C,KAAK,CAAC8C,KAAN,CAAY,KAAZ,EAAmBC,GAAnB,CAAuB,KAAKJ,YAA5B,EAA0CK,IAA1C,CAA+C,IAA/C,CADK,EAELZ,UAAU,GAAG,GAAH,GAAS,EAFd,CAAP;IAID;EACF;;EAEiB,OAAXa,WAAW,CAACC,EAAD,EAA4B1D,OAA5B,EAA+C;IAC/D,IAAI;MACF,OAAO0D,EAAE,CAAC1D,OAAD,CAAT;IACD,CAFD,CAEE,OAAO2D,GAAP,EAAY;MACZnE,MAAM,CAACoE,QAAP,CAAgB,4BAAhB,EAA8CD,GAA9C;IACD;EACF;;EAEiB,OAAXE,WAAW,GAAW;IAC3B,OAAOtE,SAAS,CAACuE,iBAAV,EAAP;EACD;;EAEsB,OAAhBC,gBAAgB,CAACC,MAAD,EAA0B;IAC/C,OAAQ,GAAEA,MAAM,IAAI,EAAG,GAAE,KAAKC,YAAL,CAAkB,SAAlB,EAA6B,WAA7B,CAA0C,EAAnE;EACD;;EAEkB,OAAZA,YAAY,CAACC,GAAD,EAAcC,GAAd,EAAmC;IACpD,OAAOC,IAAI,CAACC,IAAL,CAAUD,IAAI,CAACE,MAAL,MAAiBH,GAAG,GAAGD,GAAvB,IAA8BA,GAAxC,CAAP;EACD;;EAE6B,OAAvBK,uBAAuB,CAC5B/D,KAD4B,EAEhB;IACZ,IAAI,CAACA,KAAD,IAAUA,KAAK,CAACyB,MAAN,KAAiB,CAA/B,EAAkC;MAChC,OAAO,EAAP;IACD;;IAED,MAAMuC,YAAwB,GAAG,EAAjC;IACA,MAAMC,EAAc,GAAG,EAAvB,CANY,CAOZ;;IACA,KAAK,MAAMC,IAAX,IAAmBlE,KAAnB,EAA0B;MACxB,IAAIkE,IAAI,CAACC,GAAT,EAAc;QACZ,IAAI,CAACH,YAAY,CAACE,IAAI,CAACC,GAAN,CAAjB,EAA6B;UAC3BD,IAAI,CAACE,QAAL,GAAgB,EAAhB;UACAJ,YAAY,CAACE,IAAI,CAACG,EAAN,CAAZ,GAAwBH,IAAxB;QACD,CAHD,MAGO;UACLF,YAAY,CAACE,IAAI,CAACC,GAAN,CAAZ,CAAuBC,QAAvB,CAAgCE,IAAhC,CAAqCJ,IAArC;QACD;MACF,CAPD,MAOO;QACLA,IAAI,CAACE,QAAL,GAAgB,EAAhB;QACAJ,YAAY,CAACE,IAAI,CAACG,EAAN,CAAZ,GAAwBH,IAAxB;MACD;IACF,CApBW,CAsBZ;;;IACA,KAAK,MAAMA,IAAX,IAAmBhD,MAAM,CAACqD,MAAP,CAAcP,YAAd,CAAnB,EAAgD;MAC9C,IAAIE,IAAI,CAACE,QAAL,IAAiBF,IAAI,CAACE,QAAL,CAAc3C,MAAd,GAAuB,CAA5C,EAA+C;QAC7CyC,IAAI,CAACE,QAAL,GAAgBF,IAAI,CAACE,QAAL,CAAcI,IAAd,CAAmBzF,SAAS,CAAC0F,aAA7B,CAAhB;QACAR,EAAE,CAACC,IAAI,CAACvC,EAAN,CAAF,GAAcuC,IAAd;MACD,CAHD,MAGO;QACLD,EAAE,CAACC,IAAI,CAACvC,EAAN,CAAF,GAAcuC,IAAd;MACD;IACF;;IAED,OAAOD,EAAP;EACD;;EAEqB,OAAfS,eAAe,CAACC,GAAD,EAAgC;IACpD,IAAI,CAACA,GAAL,EAAU;MACR,OAAO,EAAP;IACD;;IACD,OAAOzF,SAAS,CAACyF,GAAD,EAAM;MAAEC,MAAM,EAAE,KAAV;MAAiBC,SAAS,EAAE;IAA5B,CAAN,CAAhB;EACD;;EAEmB,OAAbC,aAAa,CAACH,GAAD,EAAgC;IAClD,IAAI,CAACA,GAAL,EAAU;MACR,OAAO,EAAP;IACD;;IACD,OAAO1F,OAAO,CAAC0F,GAAD,EAAM;MAAEI,QAAQ,EAAE,CAAZ;MAAeC,IAAI,EAAE;IAArB,CAAN,CAAd;EACD;;AA7OgB"}
@@ -11,12 +11,13 @@ import { QcProcessor } from './processors/qc.processor';
11
11
  import { NetworkService } from './common/network-service';
12
12
  import { EventBus } from './common/event-bus';
13
13
  import { VisitIdProcessor } from './processors/visit-id.processor';
14
+ const DL_INIT_EVENT = 'page_load';
14
15
 
15
16
  class MagicPixelImpl {
16
17
  static async init(options) {
17
18
  var _options$device_type;
18
19
 
19
- this.dl = new MpDataLayerHelper('mpDlEvent', 'manual', 'page_load');
20
+ this.dl = new MpDataLayerHelper('mpDlEvent', 'manual', DL_INIT_EVENT);
20
21
  await NetworkService.refreshClientSdkJson(options);
21
22
 
22
23
  if (!DataStore.isDataStoreReady()) {
@@ -27,7 +28,8 @@ class MagicPixelImpl {
27
28
  DataStore.overrideDeviceType(options.device_type);
28
29
  }
29
30
 
30
- await VisitIdProcessor.init();
31
+ this.setAppVersion(options.app_version);
32
+ await VisitIdProcessor.init(options === null || options === void 0 ? void 0 : options.orgId);
31
33
  const fbp = await VisitIdProcessor.getFacebookFBP();
32
34
 
33
35
  if (fbp) {
@@ -71,6 +73,10 @@ class MagicPixelImpl {
71
73
  this.dl.ready();
72
74
  }
73
75
 
76
+ static getDebugId() {
77
+ return DataStore.getDebugId();
78
+ }
79
+
74
80
  static async checkAndFireTM() {
75
81
  try {
76
82
  if (!DataStore.isTagManagerProcessing()) {
@@ -146,6 +152,17 @@ class MagicPixelImpl {
146
152
  }
147
153
 
148
154
  static _fireTM(envName, envId, evtName, evtId) {
155
+ // increment visit_depth if event name is page_load because that's the only way we can track page views in an app for now
156
+ if (evtName === DL_INIT_EVENT) {
157
+ VisitIdProcessor.incrementVisitDepth().finally(() => {
158
+ this._fireTMPrivate(envName, envId, evtName, evtId);
159
+ });
160
+ } else {
161
+ this._fireTMPrivate(envName, envId, evtName, evtId);
162
+ }
163
+ }
164
+
165
+ static _fireTMPrivate(envName, envId, evtName, evtId) {
149
166
  if (DataStore.hasOneSSTTag() && DataStore.shouldFireSstForEvent(evtName)) {
150
167
  Reporter.postSST(DataStore.getDataElements(), envName, envId, DataStore.getSSTDownStream(), evtName, evtId).catch(err => {
151
168
  Reporter.reportError('l::postSST', err);
@@ -164,6 +181,7 @@ class MagicPixelImpl {
164
181
 
165
182
  static setCustomerInfo(customerInfo) {
166
183
  this.customerInfo = customerInfo;
184
+ this.recordEvent('idl_attribution_link', customerInfo);
167
185
  }
168
186
 
169
187
  static setFirebaseAppInstanceId(instanceId) {
@@ -174,6 +192,14 @@ class MagicPixelImpl {
174
192
  this.customerIdentifiers.fbp = fbp;
175
193
  }
176
194
 
195
+ static setAppVersion(appVersion) {
196
+ var _appVersion$trim;
197
+
198
+ if (appVersion && (appVersion === null || appVersion === void 0 ? void 0 : (_appVersion$trim = appVersion.trim()) === null || _appVersion$trim === void 0 ? void 0 : _appVersion$trim.length) > 0) {
199
+ this.customerIdentifiers.app_version = appVersion;
200
+ }
201
+ }
202
+
177
203
  static recordPageLoad(pageLoadInfo) {
178
204
  pageLoadInfo.is_entry = this.firstAppLaunch ? 1 : 0;
179
205
 
@@ -1 +1 @@
1
- {"version":3,"names":["MpDataLayerHelper","DataStore","Logger","Reporter","DataElementProcessor","TagProcessor","Utils","QcProcessor","NetworkService","EventBus","VisitIdProcessor","MagicPixelImpl","init","options","dl","refreshClientSdkJson","isDataStoreReady","Error","device_type","trim","length","overrideDeviceType","fbp","getFacebookFBP","logDbg","setFacebookClientId","MagicPixelEventBus","on","evtName","payload","JSON","stringify","eventName","eventDataModel","model","eventId","shouldExecuteTMForEvent","enQueueTMFire","checkAndFireTM","recordEvent","customerInfo","newPayload","customerIdentifiers","pushEvent","ready","isTagManagerProcessing","item","deQueueTMFire","name","dcrName","dcrPayload","runTM","sseOnly","err","logError","reportError","triggerName","evtId","eventData","setTagManagerProcessing","processDataElements","getSdkDataElements","sdk","getClientSdk","pcKey","getSdkPcKey","pcVal","getDataElementValue","setPrivacyCompliance","getSdkPageLangKey","setDataElement","setPageLang","getOperatingSystem","toLowerCase","initReporter","s","ev","ev_id","getDeviceType","getPageLang","getDeviceOs","getPageName","getClientDownStream","getCoreVersion","validQCList","processQc","getSdkQC","getValidQcInfo","processTags","then","_fireTM","catch","runTMErr","envName","envId","hasOneSSTTag","shouldFireSstForEvent","postSST","getDataElements","getSSTDownStream","sleep","setCustomerInfo","setFirebaseAppInstanceId","instanceId","firebase_instance_id","recordPageLoad","pageLoadInfo","is_entry","firstAppLaunch","MagicPixel"],"sources":["index.tsx"],"sourcesContent":["import { MpDataLayerHelper } from './eedl/eedl';\nimport type {\n AppCustomerInfo,\n AppPageLoad,\n MapLike,\n SdkInitOptions,\n} from './common/app-types';\nimport { DataStore } from './common/data-store';\nimport { Logger } from './common/logger';\nimport { Reporter } from './common/reporter';\nimport { DataElementProcessor } from './processors/data-element.processor';\nimport { TagProcessor } from './processors/tag.processor';\nimport { Utils } from './common/utils';\nimport { QcProcessor } from './processors/qc.processor';\nimport { NetworkService } from './common/network-service';\nimport { EventBus } from './common/event-bus';\nimport { VisitIdProcessor } from './processors/visit-id.processor';\n\nclass MagicPixelImpl {\n private static dl: MpDataLayerHelper;\n private static customerInfo: AppCustomerInfo;\n private static customerIdentifiers: MapLike = {};\n private static firstAppLaunch = true;\n\n static async init(options: SdkInitOptions): Promise<void> {\n this.dl = new MpDataLayerHelper('mpDlEvent', 'manual', 'page_load');\n\n await NetworkService.refreshClientSdkJson(options);\n\n if (!DataStore.isDataStoreReady()) {\n throw new Error('MagicPixel SDK is not ready. No tags will be processed');\n }\n\n if (\n options &&\n options.device_type &&\n options.device_type?.trim().length > 0\n ) {\n DataStore.overrideDeviceType(options.device_type);\n }\n\n await VisitIdProcessor.init();\n\n const fbp = await VisitIdProcessor.getFacebookFBP();\n if (fbp) {\n Logger.logDbg('Setting facebook client id', fbp);\n this.setFacebookClientId(fbp);\n } else {\n Logger.logDbg('No facebook client id found. not setting');\n }\n\n MagicPixelEventBus.on('mpDlEvent', async (evtName, payload) => {\n Logger.logDbg('mpDlEvent:: ', evtName, JSON.stringify(payload));\n const eventName: string = payload.eventName;\n const eventDataModel: MapLike = payload.model ?? {};\n const eventId = eventDataModel['ev._id'];\n\n Logger.logDbg('Tracking Event:: ', eventName, 'with id:: ', eventId);\n\n if (DataStore.shouldExecuteTMForEvent(eventName)) {\n // if this is something the tag manager is interested in - fire tag manager\n DataStore.enQueueTMFire(\n false,\n `custom_event_${eventName}`,\n eventName,\n eventId,\n eventDataModel\n );\n await this.checkAndFireTM();\n }\n });\n }\n\n static recordEvent(eventName: string, payload: MapLike): void {\n if (this.customerInfo) {\n const newPayload: MapLike = {\n ...payload,\n ...this.customerInfo,\n ...(this.customerIdentifiers ?? {}),\n };\n this.dl.pushEvent(eventName, newPayload);\n } else {\n const newPayload: MapLike = {\n ...payload,\n ...(this.customerIdentifiers ?? {}),\n };\n this.dl.pushEvent(eventName, newPayload);\n }\n }\n\n static ready(): void {\n this.dl.ready();\n }\n\n static async checkAndFireTM(): Promise<void> {\n try {\n if (!DataStore.isTagManagerProcessing()) {\n const item = DataStore.deQueueTMFire();\n if (item) {\n Logger.logDbg(\n 'Executing TM For: ',\n item.name,\n ', Event:: ',\n item.dcrName,\n ', Event id:: ',\n item.eventId,\n 'Payload:: ',\n item.dcrPayload\n );\n await this.runTM(\n item.sseOnly,\n item.name,\n item.dcrName,\n item.eventId,\n item.dcrPayload\n );\n }\n } else {\n Logger.logDbg(\n 'Tag Manager is processing or is not ready. This event will start after that'\n );\n }\n } catch (err) {\n Logger.logError('Error check and process tm', err);\n Reporter.reportError('m:checkAndFireTM', err);\n }\n }\n\n static async runTM(\n sseOnly: boolean,\n triggerName: string,\n evtName: string,\n evtId: string,\n eventData?: Record<string, any>\n ): Promise<void> {\n try {\n Logger.logDbg(\n 'Running:: ',\n sseOnly,\n triggerName,\n evtName,\n evtId,\n eventData\n );\n\n // set tag manager in process status\n DataStore.setTagManagerProcessing(true);\n\n // process all the data elements and cache them for this run\n await DataElementProcessor.processDataElements(\n DataStore.getSdkDataElements(),\n eventData\n );\n\n const sdk = DataStore.getClientSdk();\n\n const pcKey = DataStore.getSdkPcKey();\n if (pcKey) {\n const pcVal = DataStore.getDataElementValue(pcKey);\n if (typeof pcVal !== 'undefined' && pcVal === true) {\n Logger.logDbg('Set: PR Comp: ', true);\n DataStore.setPrivacyCompliance(true);\n } else {\n Logger.logDbg('Set: PR Comp: ', false);\n DataStore.setPrivacyCompliance(false);\n }\n } else {\n Logger.logDbg('Set: PR Comp: ', false);\n DataStore.setPrivacyCompliance(true);\n }\n\n if (DataStore.getSdkPageLangKey()) {\n DataStore.setDataElement(\n 'page_lang_key',\n DataStore.getSdkPageLangKey()\n );\n DataStore.setPageLang(\n DataStore.getDataElementValue('page_lang_key') as string\n );\n } else {\n DataStore.setDataElement('page_lang_key', null);\n }\n\n //set page_browser default data element with page_os because backend expects this\n DataStore.setDataElement(\n 'page_browser',\n DataStore.getOperatingSystem().toLowerCase()\n );\n\n Reporter.initReporter(\n sdk.s.ev,\n sdk.s.ev_id,\n DataStore.getDeviceType(),\n DataStore.getPageLang(),\n DataStore.getDeviceOs(),\n DataStore.getPageName(),\n evtName,\n evtId,\n DataStore.getClientDownStream(),\n DataStore.getCoreVersion(),\n []\n );\n\n const validQCList = QcProcessor.processQc(\n DataStore.getSdkQC(),\n evtName,\n evtId\n );\n\n if (validQCList?.length > 0) {\n Logger.logDbg('Found Valid QCs to process', DataStore.getValidQcInfo());\n\n TagProcessor.processTags(evtName, evtId)\n .then(() => {\n this._fireTM(sdk.s.ev, sdk.s.ev_id, evtName, evtId);\n })\n .catch((err) => {\n Logger.logError('Error processing tag lists.', err);\n Reporter.reportError('i::processTags', err);\n this._fireTM(sdk.s.ev, sdk.s.ev_id, evtName, evtId);\n });\n } else {\n this._fireTM(sdk.s.ev, sdk.s.ev_id, evtName, evtId);\n }\n } catch (runTMErr) {\n Logger.logError('Error in runTM', runTMErr);\n Reporter.reportError('m::runTM', runTMErr);\n }\n }\n\n static _fireTM(\n envName: string,\n envId: string,\n evtName: string,\n evtId: string\n ): void {\n if (DataStore.hasOneSSTTag() && DataStore.shouldFireSstForEvent(evtName)) {\n Reporter.postSST(\n DataStore.getDataElements(),\n envName,\n envId,\n DataStore.getSSTDownStream(),\n evtName,\n evtId\n ).catch((err: any) => {\n Reporter.reportError('l::postSST', err);\n });\n }\n\n DataStore.setTagManagerProcessing(false);\n Utils.sleep(250).then(async () => {\n try {\n await this.checkAndFireTM();\n } catch (err) {\n Reporter.reportError('i::runTM', err);\n }\n });\n }\n\n static setCustomerInfo(customerInfo: AppCustomerInfo): void {\n this.customerInfo = customerInfo;\n }\n\n static setFirebaseAppInstanceId(instanceId: string): void {\n this.customerIdentifiers.firebase_instance_id = instanceId;\n }\n\n static setFacebookClientId(fbp: string): void {\n this.customerIdentifiers.fbp = fbp;\n }\n\n static recordPageLoad(pageLoadInfo: AppPageLoad): void {\n pageLoadInfo.is_entry = this.firstAppLaunch ? 1 : 0;\n if (this.customerInfo) {\n const newPayload: MapLike = {\n ...pageLoadInfo,\n ...this.customerInfo,\n ...(this.customerIdentifiers ?? {}),\n };\n this.dl.pushEvent('page_load', newPayload);\n } else {\n const newPayload: MapLike = {\n ...pageLoadInfo,\n ...(this.customerIdentifiers ?? {}),\n };\n this.dl.pushEvent('page_load', newPayload);\n }\n this.firstAppLaunch = false;\n }\n}\n\nexport const MagicPixelEventBus = EventBus;\nexport const MagicPixel = MagicPixelImpl;\n"],"mappings":"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"}
1
+ {"version":3,"names":["MpDataLayerHelper","DataStore","Logger","Reporter","DataElementProcessor","TagProcessor","Utils","QcProcessor","NetworkService","EventBus","VisitIdProcessor","DL_INIT_EVENT","MagicPixelImpl","init","options","dl","refreshClientSdkJson","isDataStoreReady","Error","device_type","trim","length","overrideDeviceType","setAppVersion","app_version","orgId","fbp","getFacebookFBP","logDbg","setFacebookClientId","MagicPixelEventBus","on","evtName","payload","JSON","stringify","eventName","eventDataModel","model","eventId","shouldExecuteTMForEvent","enQueueTMFire","checkAndFireTM","recordEvent","customerInfo","newPayload","customerIdentifiers","pushEvent","ready","getDebugId","isTagManagerProcessing","item","deQueueTMFire","name","dcrName","dcrPayload","runTM","sseOnly","err","logError","reportError","triggerName","evtId","eventData","setTagManagerProcessing","processDataElements","getSdkDataElements","sdk","getClientSdk","pcKey","getSdkPcKey","pcVal","getDataElementValue","setPrivacyCompliance","getSdkPageLangKey","setDataElement","setPageLang","getOperatingSystem","toLowerCase","initReporter","s","ev","ev_id","getDeviceType","getPageLang","getDeviceOs","getPageName","getClientDownStream","getCoreVersion","validQCList","processQc","getSdkQC","getValidQcInfo","processTags","then","_fireTM","catch","runTMErr","envName","envId","incrementVisitDepth","finally","_fireTMPrivate","hasOneSSTTag","shouldFireSstForEvent","postSST","getDataElements","getSSTDownStream","sleep","setCustomerInfo","setFirebaseAppInstanceId","instanceId","firebase_instance_id","appVersion","recordPageLoad","pageLoadInfo","is_entry","firstAppLaunch","MagicPixel"],"sources":["index.tsx"],"sourcesContent":["import { MpDataLayerHelper } from './eedl/eedl';\nimport type {\n AppCustomerInfo,\n AppPageLoad,\n MapLike,\n SdkInitOptions,\n} from './common/app-types';\nimport { DataStore } from './common/data-store';\nimport { Logger } from './common/logger';\nimport { Reporter } from './common/reporter';\nimport { DataElementProcessor } from './processors/data-element.processor';\nimport { TagProcessor } from './processors/tag.processor';\nimport { Utils } from './common/utils';\nimport { QcProcessor } from './processors/qc.processor';\nimport { NetworkService } from './common/network-service';\nimport { EventBus } from './common/event-bus';\nimport { VisitIdProcessor } from './processors/visit-id.processor';\n\nconst DL_INIT_EVENT = 'page_load';\n\nclass MagicPixelImpl {\n private static dl: MpDataLayerHelper;\n private static customerInfo: AppCustomerInfo;\n private static customerIdentifiers: MapLike = {};\n private static firstAppLaunch = true;\n\n static async init(options: SdkInitOptions): Promise<void> {\n this.dl = new MpDataLayerHelper('mpDlEvent', 'manual', DL_INIT_EVENT);\n\n await NetworkService.refreshClientSdkJson(options);\n\n if (!DataStore.isDataStoreReady()) {\n throw new Error('MagicPixel SDK is not ready. No tags will be processed');\n }\n\n if (\n options &&\n options.device_type &&\n options.device_type?.trim().length > 0\n ) {\n DataStore.overrideDeviceType(options.device_type);\n }\n\n this.setAppVersion(options.app_version);\n\n await VisitIdProcessor.init(options?.orgId);\n\n const fbp = await VisitIdProcessor.getFacebookFBP();\n if (fbp) {\n Logger.logDbg('Setting facebook client id', fbp);\n this.setFacebookClientId(fbp);\n } else {\n Logger.logDbg('No facebook client id found. not setting');\n }\n\n MagicPixelEventBus.on('mpDlEvent', async (evtName, payload) => {\n Logger.logDbg('mpDlEvent:: ', evtName, JSON.stringify(payload));\n const eventName: string = payload.eventName;\n const eventDataModel: MapLike = payload.model ?? {};\n const eventId = eventDataModel['ev._id'];\n\n Logger.logDbg('Tracking Event:: ', eventName, 'with id:: ', eventId);\n\n if (DataStore.shouldExecuteTMForEvent(eventName)) {\n // if this is something the tag manager is interested in - fire tag manager\n DataStore.enQueueTMFire(\n false,\n `custom_event_${eventName}`,\n eventName,\n eventId,\n eventDataModel\n );\n await this.checkAndFireTM();\n }\n });\n }\n\n static recordEvent(eventName: string, payload: MapLike): void {\n if (this.customerInfo) {\n const newPayload: MapLike = {\n ...payload,\n ...this.customerInfo,\n ...(this.customerIdentifiers ?? {}),\n };\n this.dl.pushEvent(eventName, newPayload);\n } else {\n const newPayload: MapLike = {\n ...payload,\n ...(this.customerIdentifiers ?? {}),\n };\n this.dl.pushEvent(eventName, newPayload);\n }\n }\n\n static ready(): void {\n this.dl.ready();\n }\n\n static getDebugId(): string {\n return DataStore.getDebugId();\n }\n\n private static async checkAndFireTM(): Promise<void> {\n try {\n if (!DataStore.isTagManagerProcessing()) {\n const item = DataStore.deQueueTMFire();\n if (item) {\n Logger.logDbg(\n 'Executing TM For: ',\n item.name,\n ', Event:: ',\n item.dcrName,\n ', Event id:: ',\n item.eventId,\n 'Payload:: ',\n item.dcrPayload\n );\n await this.runTM(\n item.sseOnly,\n item.name,\n item.dcrName,\n item.eventId,\n item.dcrPayload\n );\n }\n } else {\n Logger.logDbg(\n 'Tag Manager is processing or is not ready. This event will start after that'\n );\n }\n } catch (err) {\n Logger.logError('Error check and process tm', err);\n Reporter.reportError('m:checkAndFireTM', err);\n }\n }\n\n private static async runTM(\n sseOnly: boolean,\n triggerName: string,\n evtName: string,\n evtId: string,\n eventData?: Record<string, any>\n ): Promise<void> {\n try {\n Logger.logDbg(\n 'Running:: ',\n sseOnly,\n triggerName,\n evtName,\n evtId,\n eventData\n );\n\n // set tag manager in process status\n DataStore.setTagManagerProcessing(true);\n\n // process all the data elements and cache them for this run\n await DataElementProcessor.processDataElements(\n DataStore.getSdkDataElements(),\n eventData\n );\n\n const sdk = DataStore.getClientSdk();\n\n const pcKey = DataStore.getSdkPcKey();\n if (pcKey) {\n const pcVal = DataStore.getDataElementValue(pcKey);\n if (typeof pcVal !== 'undefined' && pcVal === true) {\n Logger.logDbg('Set: PR Comp: ', true);\n DataStore.setPrivacyCompliance(true);\n } else {\n Logger.logDbg('Set: PR Comp: ', false);\n DataStore.setPrivacyCompliance(false);\n }\n } else {\n Logger.logDbg('Set: PR Comp: ', false);\n DataStore.setPrivacyCompliance(true);\n }\n\n if (DataStore.getSdkPageLangKey()) {\n DataStore.setDataElement(\n 'page_lang_key',\n DataStore.getSdkPageLangKey()\n );\n DataStore.setPageLang(\n DataStore.getDataElementValue('page_lang_key') as string\n );\n } else {\n DataStore.setDataElement('page_lang_key', null);\n }\n\n //set page_browser default data element with page_os because backend expects this\n DataStore.setDataElement(\n 'page_browser',\n DataStore.getOperatingSystem().toLowerCase()\n );\n\n Reporter.initReporter(\n sdk.s.ev,\n sdk.s.ev_id,\n DataStore.getDeviceType(),\n DataStore.getPageLang(),\n DataStore.getDeviceOs(),\n DataStore.getPageName(),\n evtName,\n evtId,\n DataStore.getClientDownStream(),\n DataStore.getCoreVersion(),\n []\n );\n\n const validQCList = QcProcessor.processQc(\n DataStore.getSdkQC(),\n evtName,\n evtId\n );\n\n if (validQCList?.length > 0) {\n Logger.logDbg('Found Valid QCs to process', DataStore.getValidQcInfo());\n\n TagProcessor.processTags(evtName, evtId)\n .then(() => {\n this._fireTM(sdk.s.ev, sdk.s.ev_id, evtName, evtId);\n })\n .catch((err) => {\n Logger.logError('Error processing tag lists.', err);\n Reporter.reportError('i::processTags', err);\n this._fireTM(sdk.s.ev, sdk.s.ev_id, evtName, evtId);\n });\n } else {\n this._fireTM(sdk.s.ev, sdk.s.ev_id, evtName, evtId);\n }\n } catch (runTMErr) {\n Logger.logError('Error in runTM', runTMErr);\n Reporter.reportError('m::runTM', runTMErr);\n }\n }\n\n private static _fireTM(\n envName: string,\n envId: string,\n evtName: string,\n evtId: string\n ): void {\n // increment visit_depth if event name is page_load because that's the only way we can track page views in an app for now\n if (evtName === DL_INIT_EVENT) {\n VisitIdProcessor.incrementVisitDepth().finally(() => {\n this._fireTMPrivate(envName, envId, evtName, evtId);\n });\n } else {\n this._fireTMPrivate(envName, envId, evtName, evtId);\n }\n }\n\n private static _fireTMPrivate(\n envName: string,\n envId: string,\n evtName: string,\n evtId: string\n ): void {\n if (DataStore.hasOneSSTTag() && DataStore.shouldFireSstForEvent(evtName)) {\n Reporter.postSST(\n DataStore.getDataElements(),\n envName,\n envId,\n DataStore.getSSTDownStream(),\n evtName,\n evtId\n ).catch((err: any) => {\n Reporter.reportError('l::postSST', err);\n });\n }\n\n DataStore.setTagManagerProcessing(false);\n Utils.sleep(250).then(async () => {\n try {\n await this.checkAndFireTM();\n } catch (err) {\n Reporter.reportError('i::runTM', err);\n }\n });\n }\n\n static setCustomerInfo(customerInfo: AppCustomerInfo): void {\n this.customerInfo = customerInfo;\n this.recordEvent('idl_attribution_link', customerInfo);\n }\n\n static setFirebaseAppInstanceId(instanceId: string): void {\n this.customerIdentifiers.firebase_instance_id = instanceId;\n }\n\n static setFacebookClientId(fbp: string): void {\n this.customerIdentifiers.fbp = fbp;\n }\n\n private static setAppVersion(appVersion?: string): void {\n if (appVersion && appVersion?.trim()?.length > 0) {\n this.customerIdentifiers.app_version = appVersion;\n }\n }\n\n static recordPageLoad(pageLoadInfo: AppPageLoad): void {\n pageLoadInfo.is_entry = this.firstAppLaunch ? 1 : 0;\n if (this.customerInfo) {\n const newPayload: MapLike = {\n ...pageLoadInfo,\n ...this.customerInfo,\n ...(this.customerIdentifiers ?? {}),\n };\n this.dl.pushEvent('page_load', newPayload);\n } else {\n const newPayload: MapLike = {\n ...pageLoadInfo,\n ...(this.customerIdentifiers ?? {}),\n };\n this.dl.pushEvent('page_load', newPayload);\n }\n this.firstAppLaunch = false;\n }\n}\n\nexport const MagicPixelEventBus = EventBus;\nexport const MagicPixel = MagicPixelImpl;\n"],"mappings":"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"}
@@ -285,7 +285,7 @@ export class TagProcessor {
285
285
  }
286
286
  }
287
287
 
288
- const op = Utils.unflattenObject(paramValueArray);
288
+ const op = Utils.unFlattenObject(paramValueArray);
289
289
  return {
290
290
  isInError: false,
291
291
  content: JSON.stringify(op),
@@ -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","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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"}