@magicpixel/rn-mp-client-sdk 0.7.4 → 0.8.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.
@@ -50,4 +50,6 @@ _defineProperty(Constants, "KEY_MP_IDL_VISIT_ID_INFO", 'mp_idl_visit_info');
50
50
  _defineProperty(Constants, "KEY_MP_DEBUG_ID", 'mp_debug_id');
51
51
 
52
52
  _defineProperty(Constants, "KEY_FBP", 'KEY_FBP');
53
+
54
+ _defineProperty(Constants, "KEY_FIRST_OPEN", 'KEY_FOPEN');
53
55
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Constants","RegExp","customAlphabet","a","b","o"],"sources":["constants.ts"],"sourcesContent":["import { customAlphabet } from 'nanoid/non-secure';\nimport type { BaseResourceParamType } from '../models/mp-client-sdk';\n\nexport class Constants {\n static PLACEHOLDER_REGEX = new RegExp(/({{)([A-Z_0-9 -]+)(}})/gi);\n\n static LARGE_RANDOM_POOL = customAlphabet(\n '1234567090abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',\n 21\n );\n\n static MP_DL_EVT = 'mp_dl_event';\n static CUST_EVT = 'custom_event';\n\n // Tag Report - Status Constants\n static ST_OK = 200; // tag fired successfully\n static ST_VAL_FAIL = 400; // tag validation failed - meaning one of the items marked as mandatory was found empty\n static ST_ERR = 500; // tag was ok, but provider side failure. may be url is constructed wrong, or provider is down\n static ST_DEP_FAIL = 1000; // processing tag dependencies failed - may be missing parameters or attributes\n static ST_PR_BL = 1002; // provider is black listed in the data governance screen\n static ST_PR_EXC = 1001; // tag was found, but no provider was bundled. SDK build issue. Report with high importance\n\n static PR_TYP_JS = 'js';\n static PR_TYP_IMG = 'img';\n static PR_TYP_APP = 'app';\n\n static PR_S_TYP_R = 'r';\n\n static sortAscending = (\n a: BaseResourceParamType,\n b: BaseResourceParamType\n ): number => (a.o > b.o ? 1 : -1);\n\n // this data structure is returned by the api and stored in this key\n // {\"dId\":\"VNiBG7JNfoGAyvqxhxMqd\",\"mId\":\"JW0FRrCtAj9K7uyNmL1ht\",\"st\":0}\n static KEY_MP_IDL_VISITOR_ID_INFO = 'mp_idl_visitor_info';\n\n // visitor info data structure\n // {\"visitId\": \"123123sdfsf\", \"visitCt\": 1, \"visitDepth\": 1, visitVer: 1}\n static KEY_MP_IDL_VISIT_ID_INFO = 'mp_idl_visit_info';\n\n static KEY_MP_DEBUG_ID = 'mp_debug_id';\n static KEY_FBP = 'KEY_FBP';\n}\n"],"mappings":";;;;;;;AAAA;;;;AAGO,MAAMA,SAAN,CAAgB;;;;gBAAVA,S,uBACgB,IAAIC,MAAJ,CAAW,0BAAX,C;;gBADhBD,S,uBAGgB,IAAAE,yBAAA,EACzB,gEADyB,EAEzB,EAFyB,C;;gBAHhBF,S,eAQQ,a;;gBARRA,S,cASO,c;;gBATPA,S,WAYI,G;;gBAZJA,S,iBAaU,G;;gBAbVA,S,YAcK,G;;gBAdLA,S,iBAeU,I;;gBAfVA,S,cAgBO,I;;gBAhBPA,S,eAiBQ,I;;gBAjBRA,S,eAmBQ,I;;gBAnBRA,S,gBAoBS,K;;gBApBTA,S,gBAqBS,K;;gBArBTA,S,gBAuBS,G;;gBAvBTA,S,mBAyBY,CACrBG,CADqB,EAErBC,CAFqB,KAGTD,CAAC,CAACE,CAAF,GAAMD,CAAC,CAACC,CAAR,GAAY,CAAZ,GAAgB,CAAC,C;;gBA5BpBL,S,gCAgCyB,qB;;gBAhCzBA,S,8BAoCuB,mB;;gBApCvBA,S,qBAsCc,a;;gBAtCdA,S,aAuCM,S"}
1
+ {"version":3,"names":["Constants","RegExp","customAlphabet","a","b","o"],"sources":["constants.ts"],"sourcesContent":["import { customAlphabet } from 'nanoid/non-secure';\nimport type { BaseResourceParamType } from '../models/mp-client-sdk';\n\nexport class Constants {\n static PLACEHOLDER_REGEX = new RegExp(/({{)([A-Z_0-9 -]+)(}})/gi);\n\n static LARGE_RANDOM_POOL = customAlphabet(\n '1234567090abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',\n 21\n );\n\n static MP_DL_EVT = 'mp_dl_event';\n static CUST_EVT = 'custom_event';\n\n // Tag Report - Status Constants\n static ST_OK = 200; // tag fired successfully\n static ST_VAL_FAIL = 400; // tag validation failed - meaning one of the items marked as mandatory was found empty\n static ST_ERR = 500; // tag was ok, but provider side failure. may be url is constructed wrong, or provider is down\n static ST_DEP_FAIL = 1000; // processing tag dependencies failed - may be missing parameters or attributes\n static ST_PR_BL = 1002; // provider is black listed in the data governance screen\n static ST_PR_EXC = 1001; // tag was found, but no provider was bundled. SDK build issue. Report with high importance\n\n static PR_TYP_JS = 'js';\n static PR_TYP_IMG = 'img';\n static PR_TYP_APP = 'app';\n\n static PR_S_TYP_R = 'r';\n\n static sortAscending = (\n a: BaseResourceParamType,\n b: BaseResourceParamType\n ): number => (a.o > b.o ? 1 : -1);\n\n // this data structure is returned by the api and stored in this key\n // {\"dId\":\"VNiBG7JNfoGAyvqxhxMqd\",\"mId\":\"JW0FRrCtAj9K7uyNmL1ht\",\"st\":0}\n static KEY_MP_IDL_VISITOR_ID_INFO = 'mp_idl_visitor_info';\n\n // visitor info data structure\n // {\"visitId\": \"123123sdfsf\", \"visitCt\": 1, \"visitDepth\": 1, visitVer: 1}\n static KEY_MP_IDL_VISIT_ID_INFO = 'mp_idl_visit_info';\n\n static KEY_MP_DEBUG_ID = 'mp_debug_id';\n static KEY_FBP = 'KEY_FBP';\n static KEY_FIRST_OPEN = 'KEY_FOPEN';\n}\n"],"mappings":";;;;;;;AAAA;;;;AAGO,MAAMA,SAAN,CAAgB;;;;gBAAVA,S,uBACgB,IAAIC,MAAJ,CAAW,0BAAX,C;;gBADhBD,S,uBAGgB,IAAAE,yBAAA,EACzB,gEADyB,EAEzB,EAFyB,C;;gBAHhBF,S,eAQQ,a;;gBARRA,S,cASO,c;;gBATPA,S,WAYI,G;;gBAZJA,S,iBAaU,G;;gBAbVA,S,YAcK,G;;gBAdLA,S,iBAeU,I;;gBAfVA,S,cAgBO,I;;gBAhBPA,S,eAiBQ,I;;gBAjBRA,S,eAmBQ,I;;gBAnBRA,S,gBAoBS,K;;gBApBTA,S,gBAqBS,K;;gBArBTA,S,gBAuBS,G;;gBAvBTA,S,mBAyBY,CACrBG,CADqB,EAErBC,CAFqB,KAGTD,CAAC,CAACE,CAAF,GAAMD,CAAC,CAACC,CAAR,GAAY,CAAZ,GAAgB,CAAC,C;;gBA5BpBL,S,gCAgCyB,qB;;gBAhCzBA,S,8BAoCuB,mB;;gBApCvBA,S,qBAsCc,a;;gBAtCdA,S,aAuCM,S;;gBAvCNA,S,oBAwCa,W"}
@@ -31,14 +31,18 @@ class MpDataLayerHelper {
31
31
  _defineProperty(this, "eventQueue", []);
32
32
 
33
33
  this.dlInitEvent = dlInitEvent;
34
- }
35
34
 
36
- init(globalEventListeners) {
37
35
  if (this.dlInitMode !== 'manual') {
38
36
  this.isReady = true;
39
- } // register any global event listeners passed through to the init command
37
+ }
40
38
 
39
+ if (this.isReady) {
40
+ this.ready();
41
+ }
42
+ }
41
43
 
44
+ init(globalEventListeners) {
45
+ // register any global event listeners passed through to the init command
42
46
  const globalEventListenerKeys = Object.keys(globalEventListeners || {});
43
47
 
44
48
  if ((globalEventListenerKeys === null || globalEventListenerKeys === void 0 ? void 0 : globalEventListenerKeys.length) > 0) {
@@ -250,8 +254,6 @@ class MpDataLayerHelper {
250
254
 
251
255
 
252
256
  for (const item of _temp) {
253
- _logger.Logger.logDbg('drainQueue... for loop...');
254
-
255
257
  this.processQItems(item[0], item[1]);
256
258
  }
257
259
  }
@@ -1 +1 @@
1
- {"version":3,"names":["MpDataLayerHelper","constructor","dlEventName","dlInitMode","dlInitEvent","init","globalEventListeners","isReady","globalEventListenerKeys","Object","keys","length","key","registerProcessor","pushEvent","eventName","payload","Logger","logDbg","JSON","stringify","processQItems","receivedInitialEvent","eventQueue","push","ready","setDl","eventProcessor","err","logError","obj","_tmp","Utils","flattenObject","_masterDataLayer","assign","getDl","model","reset","undefined","ev","getUniqueID","Date","now","_clone","eventTs","eventPayload","stateTracker","triggerEvent","eventProcessors","processor","safeExecute","overrideDlInitEvent","eventType","fn","get","getState","hasEventHappened","find","i","drainQueue","_temp","splice","initialEventObjectIndex","findIndex","e","item"],"sources":["eedl.ts"],"sourcesContent":["import { Utils } from '../common/utils';\nimport type { EventProcessorFn, MapLike, TypedAny } from '../common/app-types';\nimport { Logger } from '../common/logger';\n\nexport class MpDataLayerHelper {\n isReady = false;\n _masterDataLayer: MapLike = {};\n eventProcessors: Record<string, any> = {};\n stateTracker: Array<any> = [];\n dlInitEvent: string;\n receivedInitialEvent = false;\n eventQueue: Array<any> = [];\n\n constructor(\n private readonly dlEventName: string,\n private readonly dlInitMode: string,\n dlInitEvent: string\n ) {\n this.dlInitEvent = dlInitEvent;\n }\n\n init(globalEventListeners: Record<string, EventProcessorFn>): void {\n if (this.dlInitMode !== 'manual') {\n this.isReady = true;\n }\n\n // register any global event listeners passed through to the init command\n const globalEventListenerKeys = Object.keys(globalEventListeners || {});\n if (globalEventListenerKeys?.length > 0) {\n for (const key of globalEventListenerKeys) {\n if (typeof globalEventListeners[key] !== 'undefined') {\n this.registerProcessor(key, globalEventListeners[key] as any);\n }\n }\n }\n }\n\n pushEvent(eventName: string, payload: MapLike): void {\n Logger.logDbg('EV Push Event:: ', JSON.stringify(payload));\n if (eventName === 'set') {\n // process regardless\n this.processQItems(eventName, payload);\n } else {\n if (!this.receivedInitialEvent) {\n // set only if this is not true already\n this.receivedInitialEvent = eventName === this.dlInitEvent;\n this.eventQueue.push([eventName, payload]);\n if (this.isReady && this.receivedInitialEvent) {\n this.ready();\n }\n } else if (!this.isReady) {\n this.eventQueue.push([eventName, payload]);\n } else {\n this.processQItems(eventName, payload);\n }\n }\n }\n\n processQItems(eventName: string, payload: MapLike): void {\n try {\n if (eventName === 'set') {\n this.setDl(payload);\n } else {\n this.eventProcessor(eventName, payload);\n }\n /* Make sure nothing is written below this line. If you do so, remember to return on error conditions above */\n } catch (err) {\n Logger.logError('Error performing init setup on dl', err);\n }\n }\n\n /**\n * Private Processor for 'set' command object\n */\n setDl(obj: TypedAny | undefined): boolean {\n if (!obj) {\n return false;\n }\n const _tmp = Utils.flattenObject(obj);\n this._masterDataLayer = Object.assign({}, this._masterDataLayer, _tmp);\n return true;\n }\n\n getDl(): TypedAny {\n return this._masterDataLayer;\n }\n\n /**\n * Private event processor. Idea is that whenever an event is detected, we create a copy of the master data layer,\n * add the event variables, and trigger the event requested when initializing the data layer helper\n * @param eventName\n * @param model\n */\n eventProcessor(eventName: string, model: TypedAny | undefined): void {\n /**\n * The following If block clears the data layer when the initial event is received.\n * This is done to prevent value carry overs from one page to another in single page apps\n */\n if (eventName === 'reset' || eventName === this.dlInitEvent) {\n this.reset();\n this.setDl(model);\n model = undefined;\n }\n\n if (model) {\n model = {\n ev: (model || {}) as any,\n };\n } else {\n model = {};\n }\n\n // generate a unique id for each event automatically\n model['ev._id'] = Utils.getUniqueID();\n\n // add the event ts also for every event\n model['ev._tsMs'] = Date.now();\n\n model['ev._eventName'] = eventName;\n\n model = Utils.flattenObject(model);\n\n // create a clone of master data layer and merge event model to it\n const _clone = Object.assign({}, this._masterDataLayer, model);\n const eventTs = Date.now();\n\n const eventPayload = {\n eventName: eventName,\n eventTs: eventTs,\n model: _clone,\n };\n\n // add to state tracker\n this.stateTracker.push(eventPayload);\n\n // trigger an event that can be listened to by other listeners\n Utils.triggerEvent(this.dlEventName, eventPayload);\n\n // see if there are any other registered processors and invoke them\n if (this.eventProcessors[eventName]) {\n for (const processor of this.eventProcessors[eventName]) {\n Utils.safeExecute(processor, eventPayload);\n }\n }\n }\n\n overrideDlInitEvent(eventName: string): string {\n if (eventName && eventName.length > 0) {\n this.dlInitEvent = eventName;\n return 'Dl Init Event Override Successful';\n }\n return 'Dl Init Event Override Failed';\n }\n\n /**\n * Exposed method for registering custom processors for events\n * @param eventType\n * @param fn\n */\n registerProcessor(eventType: string, fn: EventProcessorFn): void {\n if (!eventType || !fn || typeof fn !== 'function') {\n Logger.logError('EventType and Fn are mandatory');\n return;\n }\n if (!this.eventProcessors[eventType]) {\n this.eventProcessors[eventType] = [];\n }\n\n this.eventProcessors[eventType].push(fn);\n }\n\n /**\n * Exposed getter for getting values from data layer\n * @param key\n * @returns {*|undefined}\n */\n get(key: string): MapLike | undefined {\n return this._masterDataLayer[key] || undefined;\n }\n\n getState(): TypedAny[] {\n return this.stateTracker;\n }\n\n hasEventHappened(key: string): boolean {\n return !!this.stateTracker.find((i) => i.eventName === key);\n }\n\n reset(): boolean {\n this._masterDataLayer = {};\n return true;\n }\n\n ready(): void {\n this.isReady = true;\n if (this.receivedInitialEvent) {\n Logger.logDbg('Initial event received: ', this.dlInitEvent);\n // drain queue only if the initial configured event has been received,\n // otherwise mark isReady but dont drain the queue. queue will be drained first when the init\n // event is received\n this.drainQueue();\n } else {\n Logger.logDbg(\n `Initial event (${this.dlInitEvent}) NOT received. Events will be queued`\n );\n }\n }\n\n drainQueue(): void {\n Logger.logDbg('drainQueue...');\n // create a copy of the array\n const _temp = [...this.eventQueue];\n // clean the array\n this.eventQueue.splice(0, this.eventQueue.length);\n // find the event with dlInit event and execute it first, rest continues\n const initialEventObjectIndex = _temp.findIndex(\n (e) => [e][0]?.[0] === this.dlInitEvent\n );\n if (initialEventObjectIndex > -1) {\n // splice and execute it\n this.processQItems(\n _temp[initialEventObjectIndex][0],\n _temp[initialEventObjectIndex][1]\n );\n _temp.splice(initialEventObjectIndex, 1);\n }\n // continue with other items\n for (const item of _temp) {\n Logger.logDbg('drainQueue... for loop...');\n this.processQItems(item[0], item[1]);\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["MpDataLayerHelper","constructor","dlEventName","dlInitMode","dlInitEvent","isReady","ready","init","globalEventListeners","globalEventListenerKeys","Object","keys","length","key","registerProcessor","pushEvent","eventName","payload","Logger","logDbg","JSON","stringify","processQItems","receivedInitialEvent","eventQueue","push","setDl","eventProcessor","err","logError","obj","_tmp","Utils","flattenObject","_masterDataLayer","assign","getDl","model","reset","undefined","ev","getUniqueID","Date","now","_clone","eventTs","eventPayload","stateTracker","triggerEvent","eventProcessors","processor","safeExecute","overrideDlInitEvent","eventType","fn","get","getState","hasEventHappened","find","i","drainQueue","_temp","splice","initialEventObjectIndex","findIndex","e","item"],"sources":["eedl.ts"],"sourcesContent":["import { Utils } from '../common/utils';\nimport type { EventProcessorFn, MapLike, TypedAny } from '../common/app-types';\nimport { Logger } from '../common/logger';\n\nexport class MpDataLayerHelper {\n isReady = false;\n _masterDataLayer: MapLike = {};\n eventProcessors: Record<string, any> = {};\n stateTracker: Array<any> = [];\n dlInitEvent: string;\n receivedInitialEvent = false;\n eventQueue: Array<any> = [];\n\n constructor(\n private readonly dlEventName: string,\n private readonly dlInitMode: string,\n dlInitEvent: string\n ) {\n this.dlInitEvent = dlInitEvent;\n\n if (this.dlInitMode !== 'manual') {\n this.isReady = true;\n }\n\n if (this.isReady) {\n this.ready();\n }\n }\n\n init(globalEventListeners: Record<string, EventProcessorFn>): void {\n // register any global event listeners passed through to the init command\n const globalEventListenerKeys = Object.keys(globalEventListeners || {});\n if (globalEventListenerKeys?.length > 0) {\n for (const key of globalEventListenerKeys) {\n if (typeof globalEventListeners[key] !== 'undefined') {\n this.registerProcessor(key, globalEventListeners[key] as any);\n }\n }\n }\n }\n\n pushEvent(eventName: string, payload: MapLike): void {\n Logger.logDbg('EV Push Event:: ', JSON.stringify(payload));\n if (eventName === 'set') {\n // process regardless\n this.processQItems(eventName, payload);\n } else {\n if (!this.receivedInitialEvent) {\n // set only if this is not true already\n this.receivedInitialEvent = eventName === this.dlInitEvent;\n this.eventQueue.push([eventName, payload]);\n if (this.isReady && this.receivedInitialEvent) {\n this.ready();\n }\n } else if (!this.isReady) {\n this.eventQueue.push([eventName, payload]);\n } else {\n this.processQItems(eventName, payload);\n }\n }\n }\n\n processQItems(eventName: string, payload: MapLike): void {\n try {\n if (eventName === 'set') {\n this.setDl(payload);\n } else {\n this.eventProcessor(eventName, payload);\n }\n /* Make sure nothing is written below this line. If you do so, remember to return on error conditions above */\n } catch (err) {\n Logger.logError('Error performing init setup on dl', err);\n }\n }\n\n /**\n * Private Processor for 'set' command object\n */\n setDl(obj: TypedAny | undefined): boolean {\n if (!obj) {\n return false;\n }\n const _tmp = Utils.flattenObject(obj);\n this._masterDataLayer = Object.assign({}, this._masterDataLayer, _tmp);\n return true;\n }\n\n getDl(): TypedAny {\n return this._masterDataLayer;\n }\n\n /**\n * Private event processor. Idea is that whenever an event is detected, we create a copy of the master data layer,\n * add the event variables, and trigger the event requested when initializing the data layer helper\n * @param eventName\n * @param model\n */\n eventProcessor(eventName: string, model: TypedAny | undefined): void {\n /**\n * The following If block clears the data layer when the initial event is received.\n * This is done to prevent value carry overs from one page to another in single page apps\n */\n if (eventName === 'reset' || eventName === this.dlInitEvent) {\n this.reset();\n this.setDl(model);\n model = undefined;\n }\n\n if (model) {\n model = {\n ev: (model || {}) as any,\n };\n } else {\n model = {};\n }\n\n // generate a unique id for each event automatically\n model['ev._id'] = Utils.getUniqueID();\n\n // add the event ts also for every event\n model['ev._tsMs'] = Date.now();\n\n model['ev._eventName'] = eventName;\n\n model = Utils.flattenObject(model);\n\n // create a clone of master data layer and merge event model to it\n const _clone = Object.assign({}, this._masterDataLayer, model);\n const eventTs = Date.now();\n\n const eventPayload = {\n eventName: eventName,\n eventTs: eventTs,\n model: _clone,\n };\n\n // add to state tracker\n this.stateTracker.push(eventPayload);\n\n // trigger an event that can be listened to by other listeners\n Utils.triggerEvent(this.dlEventName, eventPayload);\n\n // see if there are any other registered processors and invoke them\n if (this.eventProcessors[eventName]) {\n for (const processor of this.eventProcessors[eventName]) {\n Utils.safeExecute(processor, eventPayload);\n }\n }\n }\n\n overrideDlInitEvent(eventName: string): string {\n if (eventName && eventName.length > 0) {\n this.dlInitEvent = eventName;\n return 'Dl Init Event Override Successful';\n }\n return 'Dl Init Event Override Failed';\n }\n\n /**\n * Exposed method for registering custom processors for events\n * @param eventType\n * @param fn\n */\n registerProcessor(eventType: string, fn: EventProcessorFn): void {\n if (!eventType || !fn || typeof fn !== 'function') {\n Logger.logError('EventType and Fn are mandatory');\n return;\n }\n if (!this.eventProcessors[eventType]) {\n this.eventProcessors[eventType] = [];\n }\n\n this.eventProcessors[eventType].push(fn);\n }\n\n /**\n * Exposed getter for getting values from data layer\n * @param key\n * @returns {*|undefined}\n */\n get(key: string): MapLike | undefined {\n return this._masterDataLayer[key] || undefined;\n }\n\n getState(): TypedAny[] {\n return this.stateTracker;\n }\n\n hasEventHappened(key: string): boolean {\n return !!this.stateTracker.find((i) => i.eventName === key);\n }\n\n reset(): boolean {\n this._masterDataLayer = {};\n return true;\n }\n\n ready(): void {\n this.isReady = true;\n if (this.receivedInitialEvent) {\n Logger.logDbg('Initial event received: ', this.dlInitEvent);\n // drain queue only if the initial configured event has been received,\n // otherwise mark isReady but dont drain the queue. queue will be drained first when the init\n // event is received\n this.drainQueue();\n } else {\n Logger.logDbg(\n `Initial event (${this.dlInitEvent}) NOT received. Events will be queued`\n );\n }\n }\n\n drainQueue(): void {\n Logger.logDbg('drainQueue...');\n // create a copy of the array\n const _temp = [...this.eventQueue];\n // clean the array\n this.eventQueue.splice(0, this.eventQueue.length);\n // find the event with dlInit event and execute it first, rest continues\n const initialEventObjectIndex = _temp.findIndex(\n (e) => [e][0]?.[0] === this.dlInitEvent\n );\n if (initialEventObjectIndex > -1) {\n // splice and execute it\n this.processQItems(\n _temp[initialEventObjectIndex][0],\n _temp[initialEventObjectIndex][1]\n );\n _temp.splice(initialEventObjectIndex, 1);\n }\n // continue with other items\n for (const item of _temp) {\n this.processQItems(item[0], item[1]);\n }\n }\n}\n"],"mappings":"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"}
@@ -35,7 +35,6 @@ class MagicPixelImpl {
35
35
  static async init(options) {
36
36
  var _options$device_type;
37
37
 
38
- this.dl = new _eedl.MpDataLayerHelper('mpDlEvent', 'manual', DL_INIT_EVENT);
39
38
  await _networkService.NetworkService.refreshClientSdkJson(options);
40
39
 
41
40
  if (!_dataStore.DataStore.isDataStoreReady()) {
@@ -74,6 +73,15 @@ class MagicPixelImpl {
74
73
  await this.checkAndFireTM();
75
74
  }
76
75
  });
76
+ const isFirstOpen = await _visitId.VisitIdProcessor.isFirstOpenAfterInstall();
77
+
78
+ if (isFirstOpen) {
79
+ _logger.Logger.logDbg('First open event fired');
80
+
81
+ this.recordEvent('app_first_open', {});
82
+ }
83
+
84
+ this.ready();
77
85
  }
78
86
 
79
87
  static recordEvent(eventName, payload) {
@@ -259,7 +267,7 @@ class MagicPixelImpl {
259
267
 
260
268
  }
261
269
 
262
- _defineProperty(MagicPixelImpl, "dl", void 0);
270
+ _defineProperty(MagicPixelImpl, "dl", new _eedl.MpDataLayerHelper('mpDlEvent', 'manual', DL_INIT_EVENT));
263
271
 
264
272
  _defineProperty(MagicPixelImpl, "customerInfo", void 0);
265
273
 
@@ -1 +1 @@
1
- {"version":3,"names":["DL_INIT_EVENT","MagicPixelImpl","init","options","dl","MpDataLayerHelper","NetworkService","refreshClientSdkJson","DataStore","isDataStoreReady","Error","device_type","trim","length","overrideDeviceType","setAppVersion","app_version","VisitIdProcessor","orgId","fbp","getFacebookFBP","Logger","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","Reporter","reportError","triggerName","evtId","eventData","setTagManagerProcessing","DataElementProcessor","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","QcProcessor","processQc","getSdkQC","getValidQcInfo","TagProcessor","processTags","then","_fireTM","catch","runTMErr","envName","envId","incrementVisitDepth","finally","_fireTMPrivate","hasOneSSTTag","shouldFireSstForEvent","postSST","getDataElements","getSSTDownStream","Utils","sleep","setCustomerInfo","setFirebaseAppInstanceId","instanceId","firebase_instance_id","appVersion","recordPageLoad","pageLoadInfo","is_entry","firstAppLaunch","EventBus","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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"}
1
+ {"version":3,"names":["DL_INIT_EVENT","MagicPixelImpl","init","options","NetworkService","refreshClientSdkJson","DataStore","isDataStoreReady","Error","device_type","trim","length","overrideDeviceType","setAppVersion","app_version","VisitIdProcessor","orgId","fbp","getFacebookFBP","Logger","logDbg","setFacebookClientId","MagicPixelEventBus","on","evtName","payload","JSON","stringify","eventName","eventDataModel","model","eventId","shouldExecuteTMForEvent","enQueueTMFire","checkAndFireTM","isFirstOpen","isFirstOpenAfterInstall","recordEvent","ready","customerInfo","newPayload","customerIdentifiers","dl","pushEvent","getDebugId","isTagManagerProcessing","item","deQueueTMFire","name","dcrName","dcrPayload","runTM","sseOnly","err","logError","Reporter","reportError","triggerName","evtId","eventData","setTagManagerProcessing","DataElementProcessor","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","QcProcessor","processQc","getSdkQC","getValidQcInfo","TagProcessor","processTags","then","_fireTM","catch","runTMErr","envName","envId","incrementVisitDepth","finally","_fireTMPrivate","hasOneSSTTag","shouldFireSstForEvent","postSST","getDataElements","getSSTDownStream","Utils","sleep","setCustomerInfo","setFirebaseAppInstanceId","instanceId","firebase_instance_id","appVersion","recordPageLoad","pageLoadInfo","is_entry","firstAppLaunch","MpDataLayerHelper","EventBus","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 = new MpDataLayerHelper(\n 'mpDlEvent',\n 'manual',\n DL_INIT_EVENT\n );\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 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 const isFirstOpen = await VisitIdProcessor.isFirstOpenAfterInstall();\n if (isFirstOpen) {\n Logger.logDbg('First open event fired');\n this.recordEvent('app_first_open', {});\n }\n\n this.ready();\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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"}
@@ -24,6 +24,21 @@ class VisitIdProcessor {
24
24
  await this.setOrResetVisitInfo(false);
25
25
  }
26
26
 
27
+ static async isFirstOpenAfterInstall() {
28
+ try {
29
+ const firstOpenFlag = await _dataStore.DataStore.getDataFromStorage(_constants.Constants.KEY_FIRST_OPEN);
30
+
31
+ if (!firstOpenFlag) {
32
+ await _dataStore.DataStore.storeData(_constants.Constants.KEY_FIRST_OPEN, 'No');
33
+ return true;
34
+ }
35
+ } catch (err) {
36
+ _logger.Logger.logError('Unable to determine first open after install flag', err);
37
+ }
38
+
39
+ return false;
40
+ }
41
+
27
42
  static async getFacebookFBP() {
28
43
  try {
29
44
  let fbp = await _dataStore.DataStore.getDataFromStorage(_constants.Constants.KEY_FBP);
@@ -1 +1 @@
1
- {"version":3,"names":["VisitIdProcessor","init","orgId","initDebugId","setOrResetVisitorId","setOrResetVisitInfo","getFacebookFBP","fbp","DataStore","getDataFromStorage","Constants","KEY_FBP","Date","now","storeData","addCommonCookie","err","Logger","logError","debugId","KEY_MP_DEBUG_ID","indexOf","undefined","Utils","getSimpleDebugId","setDebugId","incrementDepth","visitInfo","KEY_MP_IDL_VISIT_ID_INFO","visitId","getUniqueID","visitCt","visitDepth","visitTs","visitVer","setVisitInfo","visitInfoToString","Reporter","reportError","incrementVisitDepth","visitorInfoData","KEY_MP_IDL_VISITOR_ID_INFO","mId","logDbg","NetworkService","fetchIdlInfo","getIdlUrl","setVisitorInfo","cookieValue","encodeURIComponent","JSON","stringify","dId"],"sources":["visit-id.processor.ts"],"sourcesContent":["import { Logger } from '../common/logger';\nimport { DataStore } from '../common/data-store';\nimport { Constants } from '../common/constants';\nimport { Reporter } from '../common/reporter';\nimport { NetworkService } from '../common/network-service';\nimport type { VisitInfo, VisitorInfo } from '../common/app-types';\nimport { Utils } from '../common/utils';\n\nexport class VisitIdProcessor {\n static async init(orgId: string): Promise<void> {\n await this.initDebugId(orgId);\n await this.setOrResetVisitorId();\n await this.setOrResetVisitInfo(false);\n }\n\n static async getFacebookFBP(): Promise<string> {\n try {\n let fbp = await DataStore.getDataFromStorage<string>(Constants.KEY_FBP);\n\n if (!fbp) {\n fbp = `fb.1.${Date.now()}.${Date.now()}`;\n }\n\n await DataStore.storeData(Constants.KEY_FBP, fbp);\n\n DataStore.addCommonCookie('x-fbp', fbp);\n\n return fbp;\n } catch (err) {\n Logger.logError('Error initializing debug id.', err);\n }\n return '';\n }\n\n static async initDebugId(orgId: string): Promise<void> {\n try {\n let debugId = await DataStore.getDataFromStorage<string>(\n Constants.KEY_MP_DEBUG_ID\n );\n\n if (debugId && debugId.indexOf(orgId) !== 0) {\n // re-generate debug id if it is not of the simple variety\n debugId = undefined;\n }\n\n if (!debugId) {\n debugId = Utils.getSimpleDebugId(orgId);\n }\n\n await DataStore.storeData(Constants.KEY_MP_DEBUG_ID, debugId);\n DataStore.setDebugId(debugId);\n } catch (err) {\n Logger.logError('Error initializing debug id.', err);\n }\n }\n\n static async setOrResetVisitInfo(incrementDepth: boolean): Promise<void> {\n try {\n let visitInfo: VisitInfo = await DataStore.getDataFromStorage(\n Constants.KEY_MP_IDL_VISIT_ID_INFO\n );\n\n if (!visitInfo) {\n // may be first time visit, set up a new visit info object and return\n visitInfo = {\n visitId: Utils.getUniqueID(),\n visitCt: 1,\n visitDepth: 1,\n visitTs: Date.now(),\n visitVer: 1,\n };\n } else {\n // reset visit id anyway, but retain the visitCt and depth setting\n visitInfo.visitId = Utils.getUniqueID();\n if (incrementDepth) {\n visitInfo.visitDepth = (visitInfo?.visitDepth ?? 0) + 1;\n } else {\n visitInfo.visitCt = visitInfo.visitCt + 1;\n visitInfo.visitDepth = 1;\n }\n visitInfo.visitTs = Date.now();\n visitInfo.visitVer = 1;\n }\n\n DataStore.setVisitInfo(visitInfo);\n await DataStore.storeData(Constants.KEY_MP_IDL_VISIT_ID_INFO, visitInfo);\n DataStore.addCommonCookie('x-mp-vid', DataStore.visitInfoToString());\n } catch (err) {\n Logger.logError(err);\n DataStore.setVisitInfo(null);\n Reporter.reportError('setOrResetVisitInfo', err);\n }\n }\n\n static async incrementVisitDepth(): Promise<void> {\n return this.setOrResetVisitInfo(true);\n }\n\n static async setOrResetVisitorId(): Promise<void> {\n try {\n let visitorInfoData: VisitorInfo = await DataStore.getDataFromStorage(\n Constants.KEY_MP_IDL_VISITOR_ID_INFO\n );\n\n if (\n !visitorInfoData ||\n (visitorInfoData && visitorInfoData?.mId.indexOf('-') === -1)\n ) {\n Logger.logDbg('VisitorInfo not found. Refreshing from server');\n // get a new visit id and device id from server and store it in storage\n visitorInfoData = await NetworkService.fetchIdlInfo(\n DataStore.getIdlUrl()\n );\n }\n\n if (!visitorInfoData) {\n return;\n } else {\n DataStore.setVisitorInfo(visitorInfoData);\n // store to db as well\n await DataStore.storeData(\n Constants.KEY_MP_IDL_VISITOR_ID_INFO,\n visitorInfoData\n );\n\n const cookieValue = encodeURIComponent(JSON.stringify(visitorInfoData));\n DataStore.addCommonCookie('x-mplidl', cookieValue);\n DataStore.addCommonCookie('x-mpidl', cookieValue);\n DataStore.addCommonCookie('x-lmid', visitorInfoData.mId);\n DataStore.addCommonCookie('x-ldid', visitorInfoData.dId);\n }\n } catch (err) {\n Logger.logError(err);\n DataStore.setVisitorInfo(null);\n Reporter.reportError('setOrResetVisitorId', err);\n }\n }\n}\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AAEO,MAAMA,gBAAN,CAAuB;EACX,aAAJC,IAAI,CAACC,KAAD,EAA+B;IAC9C,MAAM,KAAKC,WAAL,CAAiBD,KAAjB,CAAN;IACA,MAAM,KAAKE,mBAAL,EAAN;IACA,MAAM,KAAKC,mBAAL,CAAyB,KAAzB,CAAN;EACD;;EAE0B,aAAdC,cAAc,GAAoB;IAC7C,IAAI;MACF,IAAIC,GAAG,GAAG,MAAMC,oBAAA,CAAUC,kBAAV,CAAqCC,oBAAA,CAAUC,OAA/C,CAAhB;;MAEA,IAAI,CAACJ,GAAL,EAAU;QACRA,GAAG,GAAI,QAAOK,IAAI,CAACC,GAAL,EAAW,IAAGD,IAAI,CAACC,GAAL,EAAW,EAAvC;MACD;;MAED,MAAML,oBAAA,CAAUM,SAAV,CAAoBJ,oBAAA,CAAUC,OAA9B,EAAuCJ,GAAvC,CAAN;;MAEAC,oBAAA,CAAUO,eAAV,CAA0B,OAA1B,EAAmCR,GAAnC;;MAEA,OAAOA,GAAP;IACD,CAZD,CAYE,OAAOS,GAAP,EAAY;MACZC,cAAA,CAAOC,QAAP,CAAgB,8BAAhB,EAAgDF,GAAhD;IACD;;IACD,OAAO,EAAP;EACD;;EAEuB,aAAXb,WAAW,CAACD,KAAD,EAA+B;IACrD,IAAI;MACF,IAAIiB,OAAO,GAAG,MAAMX,oBAAA,CAAUC,kBAAV,CAClBC,oBAAA,CAAUU,eADQ,CAApB;;MAIA,IAAID,OAAO,IAAIA,OAAO,CAACE,OAAR,CAAgBnB,KAAhB,MAA2B,CAA1C,EAA6C;QAC3C;QACAiB,OAAO,GAAGG,SAAV;MACD;;MAED,IAAI,CAACH,OAAL,EAAc;QACZA,OAAO,GAAGI,YAAA,CAAMC,gBAAN,CAAuBtB,KAAvB,CAAV;MACD;;MAED,MAAMM,oBAAA,CAAUM,SAAV,CAAoBJ,oBAAA,CAAUU,eAA9B,EAA+CD,OAA/C,CAAN;;MACAX,oBAAA,CAAUiB,UAAV,CAAqBN,OAArB;IACD,CAhBD,CAgBE,OAAOH,GAAP,EAAY;MACZC,cAAA,CAAOC,QAAP,CAAgB,8BAAhB,EAAgDF,GAAhD;IACD;EACF;;EAE+B,aAAnBX,mBAAmB,CAACqB,cAAD,EAAyC;IACvE,IAAI;MACF,IAAIC,SAAoB,GAAG,MAAMnB,oBAAA,CAAUC,kBAAV,CAC/BC,oBAAA,CAAUkB,wBADqB,CAAjC;;MAIA,IAAI,CAACD,SAAL,EAAgB;QACd;QACAA,SAAS,GAAG;UACVE,OAAO,EAAEN,YAAA,CAAMO,WAAN,EADC;UAEVC,OAAO,EAAE,CAFC;UAGVC,UAAU,EAAE,CAHF;UAIVC,OAAO,EAAErB,IAAI,CAACC,GAAL,EAJC;UAKVqB,QAAQ,EAAE;QALA,CAAZ;MAOD,CATD,MASO;QACL;QACAP,SAAS,CAACE,OAAV,GAAoBN,YAAA,CAAMO,WAAN,EAApB;;QACA,IAAIJ,cAAJ,EAAoB;UAAA;;UAClBC,SAAS,CAACK,UAAV,GAAuB,CAAC,eAAAL,SAAS,UAAT,gDAAWK,UAAX,KAAyB,CAA1B,IAA+B,CAAtD;QACD,CAFD,MAEO;UACLL,SAAS,CAACI,OAAV,GAAoBJ,SAAS,CAACI,OAAV,GAAoB,CAAxC;UACAJ,SAAS,CAACK,UAAV,GAAuB,CAAvB;QACD;;QACDL,SAAS,CAACM,OAAV,GAAoBrB,IAAI,CAACC,GAAL,EAApB;QACAc,SAAS,CAACO,QAAV,GAAqB,CAArB;MACD;;MAED1B,oBAAA,CAAU2B,YAAV,CAAuBR,SAAvB;;MACA,MAAMnB,oBAAA,CAAUM,SAAV,CAAoBJ,oBAAA,CAAUkB,wBAA9B,EAAwDD,SAAxD,CAAN;;MACAnB,oBAAA,CAAUO,eAAV,CAA0B,UAA1B,EAAsCP,oBAAA,CAAU4B,iBAAV,EAAtC;IACD,CA9BD,CA8BE,OAAOpB,GAAP,EAAY;MACZC,cAAA,CAAOC,QAAP,CAAgBF,GAAhB;;MACAR,oBAAA,CAAU2B,YAAV,CAAuB,IAAvB;;MACAE,kBAAA,CAASC,WAAT,CAAqB,qBAArB,EAA4CtB,GAA5C;IACD;EACF;;EAE+B,aAAnBuB,mBAAmB,GAAkB;IAChD,OAAO,KAAKlC,mBAAL,CAAyB,IAAzB,CAAP;EACD;;EAE+B,aAAnBD,mBAAmB,GAAkB;IAChD,IAAI;MAAA;;MACF,IAAIoC,eAA4B,GAAG,MAAMhC,oBAAA,CAAUC,kBAAV,CACvCC,oBAAA,CAAU+B,0BAD6B,CAAzC;;MAIA,IACE,CAACD,eAAD,IACCA,eAAe,IAAI,qBAAAA,eAAe,UAAf,4DAAiBE,GAAjB,CAAqBrB,OAArB,CAA6B,GAA7B,OAAsC,CAAC,CAF7D,EAGE;QACAJ,cAAA,CAAO0B,MAAP,CAAc,+CAAd,EADA,CAEA;;;QACAH,eAAe,GAAG,MAAMI,8BAAA,CAAeC,YAAf,CACtBrC,oBAAA,CAAUsC,SAAV,EADsB,CAAxB;MAGD;;MAED,IAAI,CAACN,eAAL,EAAsB;QACpB;MACD,CAFD,MAEO;QACLhC,oBAAA,CAAUuC,cAAV,CAAyBP,eAAzB,EADK,CAEL;;;QACA,MAAMhC,oBAAA,CAAUM,SAAV,CACJJ,oBAAA,CAAU+B,0BADN,EAEJD,eAFI,CAAN;QAKA,MAAMQ,WAAW,GAAGC,kBAAkB,CAACC,IAAI,CAACC,SAAL,CAAeX,eAAf,CAAD,CAAtC;;QACAhC,oBAAA,CAAUO,eAAV,CAA0B,UAA1B,EAAsCiC,WAAtC;;QACAxC,oBAAA,CAAUO,eAAV,CAA0B,SAA1B,EAAqCiC,WAArC;;QACAxC,oBAAA,CAAUO,eAAV,CAA0B,QAA1B,EAAoCyB,eAAe,CAACE,GAApD;;QACAlC,oBAAA,CAAUO,eAAV,CAA0B,QAA1B,EAAoCyB,eAAe,CAACY,GAApD;MACD;IACF,CAhCD,CAgCE,OAAOpC,GAAP,EAAY;MACZC,cAAA,CAAOC,QAAP,CAAgBF,GAAhB;;MACAR,oBAAA,CAAUuC,cAAV,CAAyB,IAAzB;;MACAV,kBAAA,CAASC,WAAT,CAAqB,qBAArB,EAA4CtB,GAA5C;IACD;EACF;;AAhI2B"}
1
+ {"version":3,"names":["VisitIdProcessor","init","orgId","initDebugId","setOrResetVisitorId","setOrResetVisitInfo","isFirstOpenAfterInstall","firstOpenFlag","DataStore","getDataFromStorage","Constants","KEY_FIRST_OPEN","storeData","err","Logger","logError","getFacebookFBP","fbp","KEY_FBP","Date","now","addCommonCookie","debugId","KEY_MP_DEBUG_ID","indexOf","undefined","Utils","getSimpleDebugId","setDebugId","incrementDepth","visitInfo","KEY_MP_IDL_VISIT_ID_INFO","visitId","getUniqueID","visitCt","visitDepth","visitTs","visitVer","setVisitInfo","visitInfoToString","Reporter","reportError","incrementVisitDepth","visitorInfoData","KEY_MP_IDL_VISITOR_ID_INFO","mId","logDbg","NetworkService","fetchIdlInfo","getIdlUrl","setVisitorInfo","cookieValue","encodeURIComponent","JSON","stringify","dId"],"sources":["visit-id.processor.ts"],"sourcesContent":["import { Logger } from '../common/logger';\nimport { DataStore } from '../common/data-store';\nimport { Constants } from '../common/constants';\nimport { Reporter } from '../common/reporter';\nimport { NetworkService } from '../common/network-service';\nimport type { VisitInfo, VisitorInfo } from '../common/app-types';\nimport { Utils } from '../common/utils';\n\nexport class VisitIdProcessor {\n static async init(orgId: string): Promise<void> {\n await this.initDebugId(orgId);\n await this.setOrResetVisitorId();\n await this.setOrResetVisitInfo(false);\n }\n\n static async isFirstOpenAfterInstall(): Promise<boolean> {\n try {\n const firstOpenFlag = await DataStore.getDataFromStorage<string>(\n Constants.KEY_FIRST_OPEN\n );\n\n if (!firstOpenFlag) {\n await DataStore.storeData(Constants.KEY_FIRST_OPEN, 'No');\n return true;\n }\n } catch (err) {\n Logger.logError('Unable to determine first open after install flag', err);\n }\n return false;\n }\n\n static async getFacebookFBP(): Promise<string> {\n try {\n let fbp = await DataStore.getDataFromStorage<string>(Constants.KEY_FBP);\n\n if (!fbp) {\n fbp = `fb.1.${Date.now()}.${Date.now()}`;\n }\n\n await DataStore.storeData(Constants.KEY_FBP, fbp);\n\n DataStore.addCommonCookie('x-fbp', fbp);\n\n return fbp;\n } catch (err) {\n Logger.logError('Error initializing debug id.', err);\n }\n return '';\n }\n\n static async initDebugId(orgId: string): Promise<void> {\n try {\n let debugId = await DataStore.getDataFromStorage<string>(\n Constants.KEY_MP_DEBUG_ID\n );\n\n if (debugId && debugId.indexOf(orgId) !== 0) {\n // re-generate debug id if it is not of the simple variety\n debugId = undefined;\n }\n\n if (!debugId) {\n debugId = Utils.getSimpleDebugId(orgId);\n }\n\n await DataStore.storeData(Constants.KEY_MP_DEBUG_ID, debugId);\n DataStore.setDebugId(debugId);\n } catch (err) {\n Logger.logError('Error initializing debug id.', err);\n }\n }\n\n static async setOrResetVisitInfo(incrementDepth: boolean): Promise<void> {\n try {\n let visitInfo: VisitInfo = await DataStore.getDataFromStorage(\n Constants.KEY_MP_IDL_VISIT_ID_INFO\n );\n\n if (!visitInfo) {\n // may be first time visit, set up a new visit info object and return\n visitInfo = {\n visitId: Utils.getUniqueID(),\n visitCt: 1,\n visitDepth: 1,\n visitTs: Date.now(),\n visitVer: 1,\n };\n } else {\n // reset visit id anyway, but retain the visitCt and depth setting\n visitInfo.visitId = Utils.getUniqueID();\n if (incrementDepth) {\n visitInfo.visitDepth = (visitInfo?.visitDepth ?? 0) + 1;\n } else {\n visitInfo.visitCt = visitInfo.visitCt + 1;\n visitInfo.visitDepth = 1;\n }\n visitInfo.visitTs = Date.now();\n visitInfo.visitVer = 1;\n }\n\n DataStore.setVisitInfo(visitInfo);\n await DataStore.storeData(Constants.KEY_MP_IDL_VISIT_ID_INFO, visitInfo);\n DataStore.addCommonCookie('x-mp-vid', DataStore.visitInfoToString());\n } catch (err) {\n Logger.logError(err);\n DataStore.setVisitInfo(null);\n Reporter.reportError('setOrResetVisitInfo', err);\n }\n }\n\n static async incrementVisitDepth(): Promise<void> {\n return this.setOrResetVisitInfo(true);\n }\n\n static async setOrResetVisitorId(): Promise<void> {\n try {\n let visitorInfoData: VisitorInfo = await DataStore.getDataFromStorage(\n Constants.KEY_MP_IDL_VISITOR_ID_INFO\n );\n\n if (\n !visitorInfoData ||\n (visitorInfoData && visitorInfoData?.mId.indexOf('-') === -1)\n ) {\n Logger.logDbg('VisitorInfo not found. Refreshing from server');\n // get a new visit id and device id from server and store it in storage\n visitorInfoData = await NetworkService.fetchIdlInfo(\n DataStore.getIdlUrl()\n );\n }\n\n if (!visitorInfoData) {\n return;\n } else {\n DataStore.setVisitorInfo(visitorInfoData);\n // store to db as well\n await DataStore.storeData(\n Constants.KEY_MP_IDL_VISITOR_ID_INFO,\n visitorInfoData\n );\n\n const cookieValue = encodeURIComponent(JSON.stringify(visitorInfoData));\n DataStore.addCommonCookie('x-mplidl', cookieValue);\n DataStore.addCommonCookie('x-mpidl', cookieValue);\n DataStore.addCommonCookie('x-lmid', visitorInfoData.mId);\n DataStore.addCommonCookie('x-ldid', visitorInfoData.dId);\n }\n } catch (err) {\n Logger.logError(err);\n DataStore.setVisitorInfo(null);\n Reporter.reportError('setOrResetVisitorId', err);\n }\n }\n}\n"],"mappings":"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"}
@@ -40,4 +40,6 @@ _defineProperty(Constants, "KEY_MP_IDL_VISIT_ID_INFO", 'mp_idl_visit_info');
40
40
  _defineProperty(Constants, "KEY_MP_DEBUG_ID", 'mp_debug_id');
41
41
 
42
42
  _defineProperty(Constants, "KEY_FBP", 'KEY_FBP');
43
+
44
+ _defineProperty(Constants, "KEY_FIRST_OPEN", 'KEY_FOPEN');
43
45
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["customAlphabet","Constants","RegExp","a","b","o"],"sources":["constants.ts"],"sourcesContent":["import { customAlphabet } from 'nanoid/non-secure';\nimport type { BaseResourceParamType } from '../models/mp-client-sdk';\n\nexport class Constants {\n static PLACEHOLDER_REGEX = new RegExp(/({{)([A-Z_0-9 -]+)(}})/gi);\n\n static LARGE_RANDOM_POOL = customAlphabet(\n '1234567090abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',\n 21\n );\n\n static MP_DL_EVT = 'mp_dl_event';\n static CUST_EVT = 'custom_event';\n\n // Tag Report - Status Constants\n static ST_OK = 200; // tag fired successfully\n static ST_VAL_FAIL = 400; // tag validation failed - meaning one of the items marked as mandatory was found empty\n static ST_ERR = 500; // tag was ok, but provider side failure. may be url is constructed wrong, or provider is down\n static ST_DEP_FAIL = 1000; // processing tag dependencies failed - may be missing parameters or attributes\n static ST_PR_BL = 1002; // provider is black listed in the data governance screen\n static ST_PR_EXC = 1001; // tag was found, but no provider was bundled. SDK build issue. Report with high importance\n\n static PR_TYP_JS = 'js';\n static PR_TYP_IMG = 'img';\n static PR_TYP_APP = 'app';\n\n static PR_S_TYP_R = 'r';\n\n static sortAscending = (\n a: BaseResourceParamType,\n b: BaseResourceParamType\n ): number => (a.o > b.o ? 1 : -1);\n\n // this data structure is returned by the api and stored in this key\n // {\"dId\":\"VNiBG7JNfoGAyvqxhxMqd\",\"mId\":\"JW0FRrCtAj9K7uyNmL1ht\",\"st\":0}\n static KEY_MP_IDL_VISITOR_ID_INFO = 'mp_idl_visitor_info';\n\n // visitor info data structure\n // {\"visitId\": \"123123sdfsf\", \"visitCt\": 1, \"visitDepth\": 1, visitVer: 1}\n static KEY_MP_IDL_VISIT_ID_INFO = 'mp_idl_visit_info';\n\n static KEY_MP_DEBUG_ID = 'mp_debug_id';\n static KEY_FBP = 'KEY_FBP';\n}\n"],"mappings":";;AAAA,SAASA,cAAT,QAA+B,mBAA/B;AAGA,OAAO,MAAMC,SAAN,CAAgB;;gBAAVA,S,uBACgB,IAAIC,MAAJ,CAAW,0BAAX,C;;gBADhBD,S,uBAGgBD,cAAc,CACvC,gEADuC,EAEvC,EAFuC,C;;gBAH9BC,S,eAQQ,a;;gBARRA,S,cASO,c;;gBATPA,S,WAYI,G;;gBAZJA,S,iBAaU,G;;gBAbVA,S,YAcK,G;;gBAdLA,S,iBAeU,I;;gBAfVA,S,cAgBO,I;;gBAhBPA,S,eAiBQ,I;;gBAjBRA,S,eAmBQ,I;;gBAnBRA,S,gBAoBS,K;;gBApBTA,S,gBAqBS,K;;gBArBTA,S,gBAuBS,G;;gBAvBTA,S,mBAyBY,CACrBE,CADqB,EAErBC,CAFqB,KAGTD,CAAC,CAACE,CAAF,GAAMD,CAAC,CAACC,CAAR,GAAY,CAAZ,GAAgB,CAAC,C;;gBA5BpBJ,S,gCAgCyB,qB;;gBAhCzBA,S,8BAoCuB,mB;;gBApCvBA,S,qBAsCc,a;;gBAtCdA,S,aAuCM,S"}
1
+ {"version":3,"names":["customAlphabet","Constants","RegExp","a","b","o"],"sources":["constants.ts"],"sourcesContent":["import { customAlphabet } from 'nanoid/non-secure';\nimport type { BaseResourceParamType } from '../models/mp-client-sdk';\n\nexport class Constants {\n static PLACEHOLDER_REGEX = new RegExp(/({{)([A-Z_0-9 -]+)(}})/gi);\n\n static LARGE_RANDOM_POOL = customAlphabet(\n '1234567090abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',\n 21\n );\n\n static MP_DL_EVT = 'mp_dl_event';\n static CUST_EVT = 'custom_event';\n\n // Tag Report - Status Constants\n static ST_OK = 200; // tag fired successfully\n static ST_VAL_FAIL = 400; // tag validation failed - meaning one of the items marked as mandatory was found empty\n static ST_ERR = 500; // tag was ok, but provider side failure. may be url is constructed wrong, or provider is down\n static ST_DEP_FAIL = 1000; // processing tag dependencies failed - may be missing parameters or attributes\n static ST_PR_BL = 1002; // provider is black listed in the data governance screen\n static ST_PR_EXC = 1001; // tag was found, but no provider was bundled. SDK build issue. Report with high importance\n\n static PR_TYP_JS = 'js';\n static PR_TYP_IMG = 'img';\n static PR_TYP_APP = 'app';\n\n static PR_S_TYP_R = 'r';\n\n static sortAscending = (\n a: BaseResourceParamType,\n b: BaseResourceParamType\n ): number => (a.o > b.o ? 1 : -1);\n\n // this data structure is returned by the api and stored in this key\n // {\"dId\":\"VNiBG7JNfoGAyvqxhxMqd\",\"mId\":\"JW0FRrCtAj9K7uyNmL1ht\",\"st\":0}\n static KEY_MP_IDL_VISITOR_ID_INFO = 'mp_idl_visitor_info';\n\n // visitor info data structure\n // {\"visitId\": \"123123sdfsf\", \"visitCt\": 1, \"visitDepth\": 1, visitVer: 1}\n static KEY_MP_IDL_VISIT_ID_INFO = 'mp_idl_visit_info';\n\n static KEY_MP_DEBUG_ID = 'mp_debug_id';\n static KEY_FBP = 'KEY_FBP';\n static KEY_FIRST_OPEN = 'KEY_FOPEN';\n}\n"],"mappings":";;AAAA,SAASA,cAAT,QAA+B,mBAA/B;AAGA,OAAO,MAAMC,SAAN,CAAgB;;gBAAVA,S,uBACgB,IAAIC,MAAJ,CAAW,0BAAX,C;;gBADhBD,S,uBAGgBD,cAAc,CACvC,gEADuC,EAEvC,EAFuC,C;;gBAH9BC,S,eAQQ,a;;gBARRA,S,cASO,c;;gBATPA,S,WAYI,G;;gBAZJA,S,iBAaU,G;;gBAbVA,S,YAcK,G;;gBAdLA,S,iBAeU,I;;gBAfVA,S,cAgBO,I;;gBAhBPA,S,eAiBQ,I;;gBAjBRA,S,eAmBQ,I;;gBAnBRA,S,gBAoBS,K;;gBApBTA,S,gBAqBS,K;;gBArBTA,S,gBAuBS,G;;gBAvBTA,S,mBAyBY,CACrBE,CADqB,EAErBC,CAFqB,KAGTD,CAAC,CAACE,CAAF,GAAMD,CAAC,CAACC,CAAR,GAAY,CAAZ,GAAgB,CAAC,C;;gBA5BpBJ,S,gCAgCyB,qB;;gBAhCzBA,S,8BAoCuB,mB;;gBApCvBA,S,qBAsCc,a;;gBAtCdA,S,aAuCM,S;;gBAvCNA,S,oBAwCa,W"}
@@ -22,14 +22,18 @@ export class MpDataLayerHelper {
22
22
  _defineProperty(this, "eventQueue", []);
23
23
 
24
24
  this.dlInitEvent = dlInitEvent;
25
- }
26
25
 
27
- init(globalEventListeners) {
28
26
  if (this.dlInitMode !== 'manual') {
29
27
  this.isReady = true;
30
- } // register any global event listeners passed through to the init command
28
+ }
31
29
 
30
+ if (this.isReady) {
31
+ this.ready();
32
+ }
33
+ }
32
34
 
35
+ init(globalEventListeners) {
36
+ // register any global event listeners passed through to the init command
33
37
  const globalEventListenerKeys = Object.keys(globalEventListeners || {});
34
38
 
35
39
  if ((globalEventListenerKeys === null || globalEventListenerKeys === void 0 ? void 0 : globalEventListenerKeys.length) > 0) {
@@ -237,7 +241,6 @@ export class MpDataLayerHelper {
237
241
 
238
242
 
239
243
  for (const item of _temp) {
240
- Logger.logDbg('drainQueue... for loop...');
241
244
  this.processQItems(item[0], item[1]);
242
245
  }
243
246
  }
@@ -1 +1 @@
1
- {"version":3,"names":["Utils","Logger","MpDataLayerHelper","constructor","dlEventName","dlInitMode","dlInitEvent","init","globalEventListeners","isReady","globalEventListenerKeys","Object","keys","length","key","registerProcessor","pushEvent","eventName","payload","logDbg","JSON","stringify","processQItems","receivedInitialEvent","eventQueue","push","ready","setDl","eventProcessor","err","logError","obj","_tmp","flattenObject","_masterDataLayer","assign","getDl","model","reset","undefined","ev","getUniqueID","Date","now","_clone","eventTs","eventPayload","stateTracker","triggerEvent","eventProcessors","processor","safeExecute","overrideDlInitEvent","eventType","fn","get","getState","hasEventHappened","find","i","drainQueue","_temp","splice","initialEventObjectIndex","findIndex","e","item"],"sources":["eedl.ts"],"sourcesContent":["import { Utils } from '../common/utils';\nimport type { EventProcessorFn, MapLike, TypedAny } from '../common/app-types';\nimport { Logger } from '../common/logger';\n\nexport class MpDataLayerHelper {\n isReady = false;\n _masterDataLayer: MapLike = {};\n eventProcessors: Record<string, any> = {};\n stateTracker: Array<any> = [];\n dlInitEvent: string;\n receivedInitialEvent = false;\n eventQueue: Array<any> = [];\n\n constructor(\n private readonly dlEventName: string,\n private readonly dlInitMode: string,\n dlInitEvent: string\n ) {\n this.dlInitEvent = dlInitEvent;\n }\n\n init(globalEventListeners: Record<string, EventProcessorFn>): void {\n if (this.dlInitMode !== 'manual') {\n this.isReady = true;\n }\n\n // register any global event listeners passed through to the init command\n const globalEventListenerKeys = Object.keys(globalEventListeners || {});\n if (globalEventListenerKeys?.length > 0) {\n for (const key of globalEventListenerKeys) {\n if (typeof globalEventListeners[key] !== 'undefined') {\n this.registerProcessor(key, globalEventListeners[key] as any);\n }\n }\n }\n }\n\n pushEvent(eventName: string, payload: MapLike): void {\n Logger.logDbg('EV Push Event:: ', JSON.stringify(payload));\n if (eventName === 'set') {\n // process regardless\n this.processQItems(eventName, payload);\n } else {\n if (!this.receivedInitialEvent) {\n // set only if this is not true already\n this.receivedInitialEvent = eventName === this.dlInitEvent;\n this.eventQueue.push([eventName, payload]);\n if (this.isReady && this.receivedInitialEvent) {\n this.ready();\n }\n } else if (!this.isReady) {\n this.eventQueue.push([eventName, payload]);\n } else {\n this.processQItems(eventName, payload);\n }\n }\n }\n\n processQItems(eventName: string, payload: MapLike): void {\n try {\n if (eventName === 'set') {\n this.setDl(payload);\n } else {\n this.eventProcessor(eventName, payload);\n }\n /* Make sure nothing is written below this line. If you do so, remember to return on error conditions above */\n } catch (err) {\n Logger.logError('Error performing init setup on dl', err);\n }\n }\n\n /**\n * Private Processor for 'set' command object\n */\n setDl(obj: TypedAny | undefined): boolean {\n if (!obj) {\n return false;\n }\n const _tmp = Utils.flattenObject(obj);\n this._masterDataLayer = Object.assign({}, this._masterDataLayer, _tmp);\n return true;\n }\n\n getDl(): TypedAny {\n return this._masterDataLayer;\n }\n\n /**\n * Private event processor. Idea is that whenever an event is detected, we create a copy of the master data layer,\n * add the event variables, and trigger the event requested when initializing the data layer helper\n * @param eventName\n * @param model\n */\n eventProcessor(eventName: string, model: TypedAny | undefined): void {\n /**\n * The following If block clears the data layer when the initial event is received.\n * This is done to prevent value carry overs from one page to another in single page apps\n */\n if (eventName === 'reset' || eventName === this.dlInitEvent) {\n this.reset();\n this.setDl(model);\n model = undefined;\n }\n\n if (model) {\n model = {\n ev: (model || {}) as any,\n };\n } else {\n model = {};\n }\n\n // generate a unique id for each event automatically\n model['ev._id'] = Utils.getUniqueID();\n\n // add the event ts also for every event\n model['ev._tsMs'] = Date.now();\n\n model['ev._eventName'] = eventName;\n\n model = Utils.flattenObject(model);\n\n // create a clone of master data layer and merge event model to it\n const _clone = Object.assign({}, this._masterDataLayer, model);\n const eventTs = Date.now();\n\n const eventPayload = {\n eventName: eventName,\n eventTs: eventTs,\n model: _clone,\n };\n\n // add to state tracker\n this.stateTracker.push(eventPayload);\n\n // trigger an event that can be listened to by other listeners\n Utils.triggerEvent(this.dlEventName, eventPayload);\n\n // see if there are any other registered processors and invoke them\n if (this.eventProcessors[eventName]) {\n for (const processor of this.eventProcessors[eventName]) {\n Utils.safeExecute(processor, eventPayload);\n }\n }\n }\n\n overrideDlInitEvent(eventName: string): string {\n if (eventName && eventName.length > 0) {\n this.dlInitEvent = eventName;\n return 'Dl Init Event Override Successful';\n }\n return 'Dl Init Event Override Failed';\n }\n\n /**\n * Exposed method for registering custom processors for events\n * @param eventType\n * @param fn\n */\n registerProcessor(eventType: string, fn: EventProcessorFn): void {\n if (!eventType || !fn || typeof fn !== 'function') {\n Logger.logError('EventType and Fn are mandatory');\n return;\n }\n if (!this.eventProcessors[eventType]) {\n this.eventProcessors[eventType] = [];\n }\n\n this.eventProcessors[eventType].push(fn);\n }\n\n /**\n * Exposed getter for getting values from data layer\n * @param key\n * @returns {*|undefined}\n */\n get(key: string): MapLike | undefined {\n return this._masterDataLayer[key] || undefined;\n }\n\n getState(): TypedAny[] {\n return this.stateTracker;\n }\n\n hasEventHappened(key: string): boolean {\n return !!this.stateTracker.find((i) => i.eventName === key);\n }\n\n reset(): boolean {\n this._masterDataLayer = {};\n return true;\n }\n\n ready(): void {\n this.isReady = true;\n if (this.receivedInitialEvent) {\n Logger.logDbg('Initial event received: ', this.dlInitEvent);\n // drain queue only if the initial configured event has been received,\n // otherwise mark isReady but dont drain the queue. queue will be drained first when the init\n // event is received\n this.drainQueue();\n } else {\n Logger.logDbg(\n `Initial event (${this.dlInitEvent}) NOT received. Events will be queued`\n );\n }\n }\n\n drainQueue(): void {\n Logger.logDbg('drainQueue...');\n // create a copy of the array\n const _temp = [...this.eventQueue];\n // clean the array\n this.eventQueue.splice(0, this.eventQueue.length);\n // find the event with dlInit event and execute it first, rest continues\n const initialEventObjectIndex = _temp.findIndex(\n (e) => [e][0]?.[0] === this.dlInitEvent\n );\n if (initialEventObjectIndex > -1) {\n // splice and execute it\n this.processQItems(\n _temp[initialEventObjectIndex][0],\n _temp[initialEventObjectIndex][1]\n );\n _temp.splice(initialEventObjectIndex, 1);\n }\n // continue with other items\n for (const item of _temp) {\n Logger.logDbg('drainQueue... for loop...');\n this.processQItems(item[0], item[1]);\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["Utils","Logger","MpDataLayerHelper","constructor","dlEventName","dlInitMode","dlInitEvent","isReady","ready","init","globalEventListeners","globalEventListenerKeys","Object","keys","length","key","registerProcessor","pushEvent","eventName","payload","logDbg","JSON","stringify","processQItems","receivedInitialEvent","eventQueue","push","setDl","eventProcessor","err","logError","obj","_tmp","flattenObject","_masterDataLayer","assign","getDl","model","reset","undefined","ev","getUniqueID","Date","now","_clone","eventTs","eventPayload","stateTracker","triggerEvent","eventProcessors","processor","safeExecute","overrideDlInitEvent","eventType","fn","get","getState","hasEventHappened","find","i","drainQueue","_temp","splice","initialEventObjectIndex","findIndex","e","item"],"sources":["eedl.ts"],"sourcesContent":["import { Utils } from '../common/utils';\nimport type { EventProcessorFn, MapLike, TypedAny } from '../common/app-types';\nimport { Logger } from '../common/logger';\n\nexport class MpDataLayerHelper {\n isReady = false;\n _masterDataLayer: MapLike = {};\n eventProcessors: Record<string, any> = {};\n stateTracker: Array<any> = [];\n dlInitEvent: string;\n receivedInitialEvent = false;\n eventQueue: Array<any> = [];\n\n constructor(\n private readonly dlEventName: string,\n private readonly dlInitMode: string,\n dlInitEvent: string\n ) {\n this.dlInitEvent = dlInitEvent;\n\n if (this.dlInitMode !== 'manual') {\n this.isReady = true;\n }\n\n if (this.isReady) {\n this.ready();\n }\n }\n\n init(globalEventListeners: Record<string, EventProcessorFn>): void {\n // register any global event listeners passed through to the init command\n const globalEventListenerKeys = Object.keys(globalEventListeners || {});\n if (globalEventListenerKeys?.length > 0) {\n for (const key of globalEventListenerKeys) {\n if (typeof globalEventListeners[key] !== 'undefined') {\n this.registerProcessor(key, globalEventListeners[key] as any);\n }\n }\n }\n }\n\n pushEvent(eventName: string, payload: MapLike): void {\n Logger.logDbg('EV Push Event:: ', JSON.stringify(payload));\n if (eventName === 'set') {\n // process regardless\n this.processQItems(eventName, payload);\n } else {\n if (!this.receivedInitialEvent) {\n // set only if this is not true already\n this.receivedInitialEvent = eventName === this.dlInitEvent;\n this.eventQueue.push([eventName, payload]);\n if (this.isReady && this.receivedInitialEvent) {\n this.ready();\n }\n } else if (!this.isReady) {\n this.eventQueue.push([eventName, payload]);\n } else {\n this.processQItems(eventName, payload);\n }\n }\n }\n\n processQItems(eventName: string, payload: MapLike): void {\n try {\n if (eventName === 'set') {\n this.setDl(payload);\n } else {\n this.eventProcessor(eventName, payload);\n }\n /* Make sure nothing is written below this line. If you do so, remember to return on error conditions above */\n } catch (err) {\n Logger.logError('Error performing init setup on dl', err);\n }\n }\n\n /**\n * Private Processor for 'set' command object\n */\n setDl(obj: TypedAny | undefined): boolean {\n if (!obj) {\n return false;\n }\n const _tmp = Utils.flattenObject(obj);\n this._masterDataLayer = Object.assign({}, this._masterDataLayer, _tmp);\n return true;\n }\n\n getDl(): TypedAny {\n return this._masterDataLayer;\n }\n\n /**\n * Private event processor. Idea is that whenever an event is detected, we create a copy of the master data layer,\n * add the event variables, and trigger the event requested when initializing the data layer helper\n * @param eventName\n * @param model\n */\n eventProcessor(eventName: string, model: TypedAny | undefined): void {\n /**\n * The following If block clears the data layer when the initial event is received.\n * This is done to prevent value carry overs from one page to another in single page apps\n */\n if (eventName === 'reset' || eventName === this.dlInitEvent) {\n this.reset();\n this.setDl(model);\n model = undefined;\n }\n\n if (model) {\n model = {\n ev: (model || {}) as any,\n };\n } else {\n model = {};\n }\n\n // generate a unique id for each event automatically\n model['ev._id'] = Utils.getUniqueID();\n\n // add the event ts also for every event\n model['ev._tsMs'] = Date.now();\n\n model['ev._eventName'] = eventName;\n\n model = Utils.flattenObject(model);\n\n // create a clone of master data layer and merge event model to it\n const _clone = Object.assign({}, this._masterDataLayer, model);\n const eventTs = Date.now();\n\n const eventPayload = {\n eventName: eventName,\n eventTs: eventTs,\n model: _clone,\n };\n\n // add to state tracker\n this.stateTracker.push(eventPayload);\n\n // trigger an event that can be listened to by other listeners\n Utils.triggerEvent(this.dlEventName, eventPayload);\n\n // see if there are any other registered processors and invoke them\n if (this.eventProcessors[eventName]) {\n for (const processor of this.eventProcessors[eventName]) {\n Utils.safeExecute(processor, eventPayload);\n }\n }\n }\n\n overrideDlInitEvent(eventName: string): string {\n if (eventName && eventName.length > 0) {\n this.dlInitEvent = eventName;\n return 'Dl Init Event Override Successful';\n }\n return 'Dl Init Event Override Failed';\n }\n\n /**\n * Exposed method for registering custom processors for events\n * @param eventType\n * @param fn\n */\n registerProcessor(eventType: string, fn: EventProcessorFn): void {\n if (!eventType || !fn || typeof fn !== 'function') {\n Logger.logError('EventType and Fn are mandatory');\n return;\n }\n if (!this.eventProcessors[eventType]) {\n this.eventProcessors[eventType] = [];\n }\n\n this.eventProcessors[eventType].push(fn);\n }\n\n /**\n * Exposed getter for getting values from data layer\n * @param key\n * @returns {*|undefined}\n */\n get(key: string): MapLike | undefined {\n return this._masterDataLayer[key] || undefined;\n }\n\n getState(): TypedAny[] {\n return this.stateTracker;\n }\n\n hasEventHappened(key: string): boolean {\n return !!this.stateTracker.find((i) => i.eventName === key);\n }\n\n reset(): boolean {\n this._masterDataLayer = {};\n return true;\n }\n\n ready(): void {\n this.isReady = true;\n if (this.receivedInitialEvent) {\n Logger.logDbg('Initial event received: ', this.dlInitEvent);\n // drain queue only if the initial configured event has been received,\n // otherwise mark isReady but dont drain the queue. queue will be drained first when the init\n // event is received\n this.drainQueue();\n } else {\n Logger.logDbg(\n `Initial event (${this.dlInitEvent}) NOT received. Events will be queued`\n );\n }\n }\n\n drainQueue(): void {\n Logger.logDbg('drainQueue...');\n // create a copy of the array\n const _temp = [...this.eventQueue];\n // clean the array\n this.eventQueue.splice(0, this.eventQueue.length);\n // find the event with dlInit event and execute it first, rest continues\n const initialEventObjectIndex = _temp.findIndex(\n (e) => [e][0]?.[0] === this.dlInitEvent\n );\n if (initialEventObjectIndex > -1) {\n // splice and execute it\n this.processQItems(\n _temp[initialEventObjectIndex][0],\n _temp[initialEventObjectIndex][1]\n );\n _temp.splice(initialEventObjectIndex, 1);\n }\n // continue with other items\n for (const item of _temp) {\n this.processQItems(item[0], item[1]);\n }\n }\n}\n"],"mappings":"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"}
@@ -17,7 +17,6 @@ class MagicPixelImpl {
17
17
  static async init(options) {
18
18
  var _options$device_type;
19
19
 
20
- this.dl = new MpDataLayerHelper('mpDlEvent', 'manual', DL_INIT_EVENT);
21
20
  await NetworkService.refreshClientSdkJson(options);
22
21
 
23
22
  if (!DataStore.isDataStoreReady()) {
@@ -52,6 +51,14 @@ class MagicPixelImpl {
52
51
  await this.checkAndFireTM();
53
52
  }
54
53
  });
54
+ const isFirstOpen = await VisitIdProcessor.isFirstOpenAfterInstall();
55
+
56
+ if (isFirstOpen) {
57
+ Logger.logDbg('First open event fired');
58
+ this.recordEvent('app_first_open', {});
59
+ }
60
+
61
+ this.ready();
55
62
  }
56
63
 
57
64
  static recordEvent(eventName, payload) {
@@ -221,7 +228,7 @@ class MagicPixelImpl {
221
228
 
222
229
  }
223
230
 
224
- _defineProperty(MagicPixelImpl, "dl", void 0);
231
+ _defineProperty(MagicPixelImpl, "dl", new MpDataLayerHelper('mpDlEvent', 'manual', DL_INIT_EVENT));
225
232
 
226
233
  _defineProperty(MagicPixelImpl, "customerInfo", void 0);
227
234
 
@@ -1 +1 @@
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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"}
1
+ {"version":3,"names":["MpDataLayerHelper","DataStore","Logger","Reporter","DataElementProcessor","TagProcessor","Utils","QcProcessor","NetworkService","EventBus","VisitIdProcessor","DL_INIT_EVENT","MagicPixelImpl","init","options","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","isFirstOpen","isFirstOpenAfterInstall","recordEvent","ready","customerInfo","newPayload","customerIdentifiers","dl","pushEvent","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 = new MpDataLayerHelper(\n 'mpDlEvent',\n 'manual',\n DL_INIT_EVENT\n );\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 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 const isFirstOpen = await VisitIdProcessor.isFirstOpenAfterInstall();\n if (isFirstOpen) {\n Logger.logDbg('First open event fired');\n this.recordEvent('app_first_open', {});\n }\n\n this.ready();\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":";;AAAA,SAASA,iBAAT,QAAkC,aAAlC;AAOA,SAASC,SAAT,QAA0B,qBAA1B;AACA,SAASC,MAAT,QAAuB,iBAAvB;AACA,SAASC,QAAT,QAAyB,mBAAzB;AACA,SAASC,oBAAT,QAAqC,qCAArC;AACA,SAASC,YAAT,QAA6B,4BAA7B;AACA,SAASC,KAAT,QAAsB,gBAAtB;AACA,SAASC,WAAT,QAA4B,2BAA5B;AACA,SAASC,cAAT,QAA+B,0BAA/B;AACA,SAASC,QAAT,QAAyB,oBAAzB;AACA,SAASC,gBAAT,QAAiC,iCAAjC;AAEA,MAAMC,aAAa,GAAG,WAAtB;;AAEA,MAAMC,cAAN,CAAqB;EAUF,aAAJC,IAAI,CAACC,OAAD,EAAyC;IAAA;;IACxD,MAAMN,cAAc,CAACO,oBAAf,CAAoCD,OAApC,CAAN;;IAEA,IAAI,CAACb,SAAS,CAACe,gBAAV,EAAL,EAAmC;MACjC,MAAM,IAAIC,KAAJ,CAAU,wDAAV,CAAN;IACD;;IAED,IACEH,OAAO,IACPA,OAAO,CAACI,WADR,IAEA,yBAAAJ,OAAO,CAACI,WAAR,8EAAqBC,IAArB,GAA4BC,MAA5B,IAAqC,CAHvC,EAIE;MACAnB,SAAS,CAACoB,kBAAV,CAA6BP,OAAO,CAACI,WAArC;IACD;;IAED,KAAKI,aAAL,CAAmBR,OAAO,CAACS,WAA3B;IAEA,MAAMb,gBAAgB,CAACG,IAAjB,CAAsBC,OAAtB,aAAsBA,OAAtB,uBAAsBA,OAAO,CAAEU,KAA/B,CAAN;IAEA,MAAMC,GAAG,GAAG,MAAMf,gBAAgB,CAACgB,cAAjB,EAAlB;;IACA,IAAID,GAAJ,EAAS;MACPvB,MAAM,CAACyB,MAAP,CAAc,4BAAd,EAA4CF,GAA5C;MACA,KAAKG,mBAAL,CAAyBH,GAAzB;IACD,CAHD,MAGO;MACLvB,MAAM,CAACyB,MAAP,CAAc,0CAAd;IACD;;IAEDE,kBAAkB,CAACC,EAAnB,CAAsB,WAAtB,EAAmC,OAAOC,OAAP,EAAgBC,OAAhB,KAA4B;MAC7D9B,MAAM,CAACyB,MAAP,CAAc,cAAd,EAA8BI,OAA9B,EAAuCE,IAAI,CAACC,SAAL,CAAeF,OAAf,CAAvC;MACA,MAAMG,SAAiB,GAAGH,OAAO,CAACG,SAAlC;MACA,MAAMC,cAAuB,GAAGJ,OAAO,CAACK,KAAR,IAAiB,EAAjD;MACA,MAAMC,OAAO,GAAGF,cAAc,CAAC,QAAD,CAA9B;MAEAlC,MAAM,CAACyB,MAAP,CAAc,mBAAd,EAAmCQ,SAAnC,EAA8C,YAA9C,EAA4DG,OAA5D;;MAEA,IAAIrC,SAAS,CAACsC,uBAAV,CAAkCJ,SAAlC,CAAJ,EAAkD;QAChD;QACAlC,SAAS,CAACuC,aAAV,CACE,KADF,EAEG,gBAAeL,SAAU,EAF5B,EAGEA,SAHF,EAIEG,OAJF,EAKEF,cALF;QAOA,MAAM,KAAKK,cAAL,EAAN;MACD;IACF,CAnBD;IAqBA,MAAMC,WAAW,GAAG,MAAMhC,gBAAgB,CAACiC,uBAAjB,EAA1B;;IACA,IAAID,WAAJ,EAAiB;MACfxC,MAAM,CAACyB,MAAP,CAAc,wBAAd;MACA,KAAKiB,WAAL,CAAiB,gBAAjB,EAAmC,EAAnC;IACD;;IAED,KAAKC,KAAL;EACD;;EAEiB,OAAXD,WAAW,CAACT,SAAD,EAAoBH,OAApB,EAA4C;IAC5D,IAAI,KAAKc,YAAT,EAAuB;MACrB,MAAMC,UAAmB,GAAG,EAC1B,GAAGf,OADuB;QAE1B,GAAG,KAAKc,YAFkB;QAG1B,IAAI,KAAKE,mBAAL,IAA4B,EAAhC;MAH0B,CAA5B;MAKA,KAAKC,EAAL,CAAQC,SAAR,CAAkBf,SAAlB,EAA6BY,UAA7B;IACD,CAPD,MAOO;MACL,MAAMA,UAAmB,GAAG,EAC1B,GAAGf,OADuB;QAE1B,IAAI,KAAKgB,mBAAL,IAA4B,EAAhC;MAF0B,CAA5B;MAIA,KAAKC,EAAL,CAAQC,SAAR,CAAkBf,SAAlB,EAA6BY,UAA7B;IACD;EACF;;EAEW,OAALF,KAAK,GAAS;IACnB,KAAKI,EAAL,CAAQJ,KAAR;EACD;;EAEgB,OAAVM,UAAU,GAAW;IAC1B,OAAOlD,SAAS,CAACkD,UAAV,EAAP;EACD;;EAEkC,aAAdV,cAAc,GAAkB;IACnD,IAAI;MACF,IAAI,CAACxC,SAAS,CAACmD,sBAAV,EAAL,EAAyC;QACvC,MAAMC,IAAI,GAAGpD,SAAS,CAACqD,aAAV,EAAb;;QACA,IAAID,IAAJ,EAAU;UACRnD,MAAM,CAACyB,MAAP,CACE,oBADF,EAEE0B,IAAI,CAACE,IAFP,EAGE,YAHF,EAIEF,IAAI,CAACG,OAJP,EAKE,eALF,EAMEH,IAAI,CAACf,OANP,EAOE,YAPF,EAQEe,IAAI,CAACI,UARP;UAUA,MAAM,KAAKC,KAAL,CACJL,IAAI,CAACM,OADD,EAEJN,IAAI,CAACE,IAFD,EAGJF,IAAI,CAACG,OAHD,EAIJH,IAAI,CAACf,OAJD,EAKJe,IAAI,CAACI,UALD,CAAN;QAOD;MACF,CArBD,MAqBO;QACLvD,MAAM,CAACyB,MAAP,CACE,6EADF;MAGD;IACF,CA3BD,CA2BE,OAAOiC,GAAP,EAAY;MACZ1D,MAAM,CAAC2D,QAAP,CAAgB,4BAAhB,EAA8CD,GAA9C;MACAzD,QAAQ,CAAC2D,WAAT,CAAqB,kBAArB,EAAyCF,GAAzC;IACD;EACF;;EAEyB,aAALF,KAAK,CACxBC,OADwB,EAExBI,WAFwB,EAGxBhC,OAHwB,EAIxBiC,KAJwB,EAKxBC,SALwB,EAMT;IACf,IAAI;MACF/D,MAAM,CAACyB,MAAP,CACE,YADF,EAEEgC,OAFF,EAGEI,WAHF,EAIEhC,OAJF,EAKEiC,KALF,EAMEC,SANF,EADE,CAUF;;MACAhE,SAAS,CAACiE,uBAAV,CAAkC,IAAlC,EAXE,CAaF;;MACA,MAAM9D,oBAAoB,CAAC+D,mBAArB,CACJlE,SAAS,CAACmE,kBAAV,EADI,EAEJH,SAFI,CAAN;MAKA,MAAMI,GAAG,GAAGpE,SAAS,CAACqE,YAAV,EAAZ;MAEA,MAAMC,KAAK,GAAGtE,SAAS,CAACuE,WAAV,EAAd;;MACA,IAAID,KAAJ,EAAW;QACT,MAAME,KAAK,GAAGxE,SAAS,CAACyE,mBAAV,CAA8BH,KAA9B,CAAd;;QACA,IAAI,OAAOE,KAAP,KAAiB,WAAjB,IAAgCA,KAAK,KAAK,IAA9C,EAAoD;UAClDvE,MAAM,CAACyB,MAAP,CAAc,gBAAd,EAAgC,IAAhC;UACA1B,SAAS,CAAC0E,oBAAV,CAA+B,IAA/B;QACD,CAHD,MAGO;UACLzE,MAAM,CAACyB,MAAP,CAAc,gBAAd,EAAgC,KAAhC;UACA1B,SAAS,CAAC0E,oBAAV,CAA+B,KAA/B;QACD;MACF,CATD,MASO;QACLzE,MAAM,CAACyB,MAAP,CAAc,gBAAd,EAAgC,KAAhC;QACA1B,SAAS,CAAC0E,oBAAV,CAA+B,IAA/B;MACD;;MAED,IAAI1E,SAAS,CAAC2E,iBAAV,EAAJ,EAAmC;QACjC3E,SAAS,CAAC4E,cAAV,CACE,eADF,EAEE5E,SAAS,CAAC2E,iBAAV,EAFF;QAIA3E,SAAS,CAAC6E,WAAV,CACE7E,SAAS,CAACyE,mBAAV,CAA8B,eAA9B,CADF;MAGD,CARD,MAQO;QACLzE,SAAS,CAAC4E,cAAV,CAAyB,eAAzB,EAA0C,IAA1C;MACD,CA9CC,CAgDF;;;MACA5E,SAAS,CAAC4E,cAAV,CACE,cADF,EAEE5E,SAAS,CAAC8E,kBAAV,GAA+BC,WAA/B,EAFF;MAKA7E,QAAQ,CAAC8E,YAAT,CACEZ,GAAG,CAACa,CAAJ,CAAMC,EADR,EAEEd,GAAG,CAACa,CAAJ,CAAME,KAFR,EAGEnF,SAAS,CAACoF,aAAV,EAHF,EAIEpF,SAAS,CAACqF,WAAV,EAJF,EAKErF,SAAS,CAACsF,WAAV,EALF,EAMEtF,SAAS,CAACuF,WAAV,EANF,EAOEzD,OAPF,EAQEiC,KARF,EASE/D,SAAS,CAACwF,mBAAV,EATF,EAUExF,SAAS,CAACyF,cAAV,EAVF,EAWE,EAXF;MAcA,MAAMC,WAAW,GAAGpF,WAAW,CAACqF,SAAZ,CAClB3F,SAAS,CAAC4F,QAAV,EADkB,EAElB9D,OAFkB,EAGlBiC,KAHkB,CAApB;;MAMA,IAAI,CAAA2B,WAAW,SAAX,IAAAA,WAAW,WAAX,YAAAA,WAAW,CAAEvE,MAAb,IAAsB,CAA1B,EAA6B;QAC3BlB,MAAM,CAACyB,MAAP,CAAc,4BAAd,EAA4C1B,SAAS,CAAC6F,cAAV,EAA5C;QAEAzF,YAAY,CAAC0F,WAAb,CAAyBhE,OAAzB,EAAkCiC,KAAlC,EACGgC,IADH,CACQ,MAAM;UACV,KAAKC,OAAL,CAAa5B,GAAG,CAACa,CAAJ,CAAMC,EAAnB,EAAuBd,GAAG,CAACa,CAAJ,CAAME,KAA7B,EAAoCrD,OAApC,EAA6CiC,KAA7C;QACD,CAHH,EAIGkC,KAJH,CAIUtC,GAAD,IAAS;UACd1D,MAAM,CAAC2D,QAAP,CAAgB,6BAAhB,EAA+CD,GAA/C;UACAzD,QAAQ,CAAC2D,WAAT,CAAqB,gBAArB,EAAuCF,GAAvC;;UACA,KAAKqC,OAAL,CAAa5B,GAAG,CAACa,CAAJ,CAAMC,EAAnB,EAAuBd,GAAG,CAACa,CAAJ,CAAME,KAA7B,EAAoCrD,OAApC,EAA6CiC,KAA7C;QACD,CARH;MASD,CAZD,MAYO;QACL,KAAKiC,OAAL,CAAa5B,GAAG,CAACa,CAAJ,CAAMC,EAAnB,EAAuBd,GAAG,CAACa,CAAJ,CAAME,KAA7B,EAAoCrD,OAApC,EAA6CiC,KAA7C;MACD;IACF,CAzFD,CAyFE,OAAOmC,QAAP,EAAiB;MACjBjG,MAAM,CAAC2D,QAAP,CAAgB,gBAAhB,EAAkCsC,QAAlC;MACAhG,QAAQ,CAAC2D,WAAT,CAAqB,UAArB,EAAiCqC,QAAjC;IACD;EACF;;EAEqB,OAAPF,OAAO,CACpBG,OADoB,EAEpBC,KAFoB,EAGpBtE,OAHoB,EAIpBiC,KAJoB,EAKd;IACN;IACA,IAAIjC,OAAO,KAAKpB,aAAhB,EAA+B;MAC7BD,gBAAgB,CAAC4F,mBAAjB,GAAuCC,OAAvC,CAA+C,MAAM;QACnD,KAAKC,cAAL,CAAoBJ,OAApB,EAA6BC,KAA7B,EAAoCtE,OAApC,EAA6CiC,KAA7C;MACD,CAFD;IAGD,CAJD,MAIO;MACL,KAAKwC,cAAL,CAAoBJ,OAApB,EAA6BC,KAA7B,EAAoCtE,OAApC,EAA6CiC,KAA7C;IACD;EACF;;EAE4B,OAAdwC,cAAc,CAC3BJ,OAD2B,EAE3BC,KAF2B,EAG3BtE,OAH2B,EAI3BiC,KAJ2B,EAKrB;IACN,IAAI/D,SAAS,CAACwG,YAAV,MAA4BxG,SAAS,CAACyG,qBAAV,CAAgC3E,OAAhC,CAAhC,EAA0E;MACxE5B,QAAQ,CAACwG,OAAT,CACE1G,SAAS,CAAC2G,eAAV,EADF,EAEER,OAFF,EAGEC,KAHF,EAIEpG,SAAS,CAAC4G,gBAAV,EAJF,EAKE9E,OALF,EAMEiC,KANF,EAOEkC,KAPF,CAOStC,GAAD,IAAc;QACpBzD,QAAQ,CAAC2D,WAAT,CAAqB,YAArB,EAAmCF,GAAnC;MACD,CATD;IAUD;;IAED3D,SAAS,CAACiE,uBAAV,CAAkC,KAAlC;IACA5D,KAAK,CAACwG,KAAN,CAAY,GAAZ,EAAiBd,IAAjB,CAAsB,YAAY;MAChC,IAAI;QACF,MAAM,KAAKvD,cAAL,EAAN;MACD,CAFD,CAEE,OAAOmB,GAAP,EAAY;QACZzD,QAAQ,CAAC2D,WAAT,CAAqB,UAArB,EAAiCF,GAAjC;MACD;IACF,CAND;EAOD;;EAEqB,OAAfmD,eAAe,CAACjE,YAAD,EAAsC;IAC1D,KAAKA,YAAL,GAAoBA,YAApB;IACA,KAAKF,WAAL,CAAiB,sBAAjB,EAAyCE,YAAzC;EACD;;EAE8B,OAAxBkE,wBAAwB,CAACC,UAAD,EAA2B;IACxD,KAAKjE,mBAAL,CAAyBkE,oBAAzB,GAAgDD,UAAhD;EACD;;EAEyB,OAAnBrF,mBAAmB,CAACH,GAAD,EAAoB;IAC5C,KAAKuB,mBAAL,CAAyBvB,GAAzB,GAA+BA,GAA/B;EACD;;EAE2B,OAAbH,aAAa,CAAC6F,UAAD,EAA4B;IAAA;;IACtD,IAAIA,UAAU,IAAI,CAAAA,UAAU,SAAV,IAAAA,UAAU,WAAV,gCAAAA,UAAU,CAAEhG,IAAZ,wEAAoBC,MAApB,IAA6B,CAA/C,EAAkD;MAChD,KAAK4B,mBAAL,CAAyBzB,WAAzB,GAAuC4F,UAAvC;IACD;EACF;;EAEoB,OAAdC,cAAc,CAACC,YAAD,EAAkC;IACrDA,YAAY,CAACC,QAAb,GAAwB,KAAKC,cAAL,GAAsB,CAAtB,GAA0B,CAAlD;;IACA,IAAI,KAAKzE,YAAT,EAAuB;MACrB,MAAMC,UAAmB,GAAG,EAC1B,GAAGsE,YADuB;QAE1B,GAAG,KAAKvE,YAFkB;QAG1B,IAAI,KAAKE,mBAAL,IAA4B,EAAhC;MAH0B,CAA5B;MAKA,KAAKC,EAAL,CAAQC,SAAR,CAAkB,WAAlB,EAA+BH,UAA/B;IACD,CAPD,MAOO;MACL,MAAMA,UAAmB,GAAG,EAC1B,GAAGsE,YADuB;QAE1B,IAAI,KAAKrE,mBAAL,IAA4B,EAAhC;MAF0B,CAA5B;MAIA,KAAKC,EAAL,CAAQC,SAAR,CAAkB,WAAlB,EAA+BH,UAA/B;IACD;;IACD,KAAKwE,cAAL,GAAsB,KAAtB;EACD;;AArTkB;;gBAAf3G,c,QACmC,IAAIZ,iBAAJ,CACrC,WADqC,EAErC,QAFqC,EAGrCW,aAHqC,C;;gBADnCC,c;;gBAAAA,c,yBAO0C,E;;gBAP1CA,c,oBAQ4B,I;;AAgTlC,OAAO,MAAMiB,kBAAkB,GAAGpB,QAA3B;AACP,OAAO,MAAM+G,UAAU,GAAG5G,cAAnB"}
@@ -11,6 +11,21 @@ export class VisitIdProcessor {
11
11
  await this.setOrResetVisitInfo(false);
12
12
  }
13
13
 
14
+ static async isFirstOpenAfterInstall() {
15
+ try {
16
+ const firstOpenFlag = await DataStore.getDataFromStorage(Constants.KEY_FIRST_OPEN);
17
+
18
+ if (!firstOpenFlag) {
19
+ await DataStore.storeData(Constants.KEY_FIRST_OPEN, 'No');
20
+ return true;
21
+ }
22
+ } catch (err) {
23
+ Logger.logError('Unable to determine first open after install flag', err);
24
+ }
25
+
26
+ return false;
27
+ }
28
+
14
29
  static async getFacebookFBP() {
15
30
  try {
16
31
  let fbp = await DataStore.getDataFromStorage(Constants.KEY_FBP);
@@ -1 +1 @@
1
- {"version":3,"names":["Logger","DataStore","Constants","Reporter","NetworkService","Utils","VisitIdProcessor","init","orgId","initDebugId","setOrResetVisitorId","setOrResetVisitInfo","getFacebookFBP","fbp","getDataFromStorage","KEY_FBP","Date","now","storeData","addCommonCookie","err","logError","debugId","KEY_MP_DEBUG_ID","indexOf","undefined","getSimpleDebugId","setDebugId","incrementDepth","visitInfo","KEY_MP_IDL_VISIT_ID_INFO","visitId","getUniqueID","visitCt","visitDepth","visitTs","visitVer","setVisitInfo","visitInfoToString","reportError","incrementVisitDepth","visitorInfoData","KEY_MP_IDL_VISITOR_ID_INFO","mId","logDbg","fetchIdlInfo","getIdlUrl","setVisitorInfo","cookieValue","encodeURIComponent","JSON","stringify","dId"],"sources":["visit-id.processor.ts"],"sourcesContent":["import { Logger } from '../common/logger';\nimport { DataStore } from '../common/data-store';\nimport { Constants } from '../common/constants';\nimport { Reporter } from '../common/reporter';\nimport { NetworkService } from '../common/network-service';\nimport type { VisitInfo, VisitorInfo } from '../common/app-types';\nimport { Utils } from '../common/utils';\n\nexport class VisitIdProcessor {\n static async init(orgId: string): Promise<void> {\n await this.initDebugId(orgId);\n await this.setOrResetVisitorId();\n await this.setOrResetVisitInfo(false);\n }\n\n static async getFacebookFBP(): Promise<string> {\n try {\n let fbp = await DataStore.getDataFromStorage<string>(Constants.KEY_FBP);\n\n if (!fbp) {\n fbp = `fb.1.${Date.now()}.${Date.now()}`;\n }\n\n await DataStore.storeData(Constants.KEY_FBP, fbp);\n\n DataStore.addCommonCookie('x-fbp', fbp);\n\n return fbp;\n } catch (err) {\n Logger.logError('Error initializing debug id.', err);\n }\n return '';\n }\n\n static async initDebugId(orgId: string): Promise<void> {\n try {\n let debugId = await DataStore.getDataFromStorage<string>(\n Constants.KEY_MP_DEBUG_ID\n );\n\n if (debugId && debugId.indexOf(orgId) !== 0) {\n // re-generate debug id if it is not of the simple variety\n debugId = undefined;\n }\n\n if (!debugId) {\n debugId = Utils.getSimpleDebugId(orgId);\n }\n\n await DataStore.storeData(Constants.KEY_MP_DEBUG_ID, debugId);\n DataStore.setDebugId(debugId);\n } catch (err) {\n Logger.logError('Error initializing debug id.', err);\n }\n }\n\n static async setOrResetVisitInfo(incrementDepth: boolean): Promise<void> {\n try {\n let visitInfo: VisitInfo = await DataStore.getDataFromStorage(\n Constants.KEY_MP_IDL_VISIT_ID_INFO\n );\n\n if (!visitInfo) {\n // may be first time visit, set up a new visit info object and return\n visitInfo = {\n visitId: Utils.getUniqueID(),\n visitCt: 1,\n visitDepth: 1,\n visitTs: Date.now(),\n visitVer: 1,\n };\n } else {\n // reset visit id anyway, but retain the visitCt and depth setting\n visitInfo.visitId = Utils.getUniqueID();\n if (incrementDepth) {\n visitInfo.visitDepth = (visitInfo?.visitDepth ?? 0) + 1;\n } else {\n visitInfo.visitCt = visitInfo.visitCt + 1;\n visitInfo.visitDepth = 1;\n }\n visitInfo.visitTs = Date.now();\n visitInfo.visitVer = 1;\n }\n\n DataStore.setVisitInfo(visitInfo);\n await DataStore.storeData(Constants.KEY_MP_IDL_VISIT_ID_INFO, visitInfo);\n DataStore.addCommonCookie('x-mp-vid', DataStore.visitInfoToString());\n } catch (err) {\n Logger.logError(err);\n DataStore.setVisitInfo(null);\n Reporter.reportError('setOrResetVisitInfo', err);\n }\n }\n\n static async incrementVisitDepth(): Promise<void> {\n return this.setOrResetVisitInfo(true);\n }\n\n static async setOrResetVisitorId(): Promise<void> {\n try {\n let visitorInfoData: VisitorInfo = await DataStore.getDataFromStorage(\n Constants.KEY_MP_IDL_VISITOR_ID_INFO\n );\n\n if (\n !visitorInfoData ||\n (visitorInfoData && visitorInfoData?.mId.indexOf('-') === -1)\n ) {\n Logger.logDbg('VisitorInfo not found. Refreshing from server');\n // get a new visit id and device id from server and store it in storage\n visitorInfoData = await NetworkService.fetchIdlInfo(\n DataStore.getIdlUrl()\n );\n }\n\n if (!visitorInfoData) {\n return;\n } else {\n DataStore.setVisitorInfo(visitorInfoData);\n // store to db as well\n await DataStore.storeData(\n Constants.KEY_MP_IDL_VISITOR_ID_INFO,\n visitorInfoData\n );\n\n const cookieValue = encodeURIComponent(JSON.stringify(visitorInfoData));\n DataStore.addCommonCookie('x-mplidl', cookieValue);\n DataStore.addCommonCookie('x-mpidl', cookieValue);\n DataStore.addCommonCookie('x-lmid', visitorInfoData.mId);\n DataStore.addCommonCookie('x-ldid', visitorInfoData.dId);\n }\n } catch (err) {\n Logger.logError(err);\n DataStore.setVisitorInfo(null);\n Reporter.reportError('setOrResetVisitorId', err);\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["Logger","DataStore","Constants","Reporter","NetworkService","Utils","VisitIdProcessor","init","orgId","initDebugId","setOrResetVisitorId","setOrResetVisitInfo","isFirstOpenAfterInstall","firstOpenFlag","getDataFromStorage","KEY_FIRST_OPEN","storeData","err","logError","getFacebookFBP","fbp","KEY_FBP","Date","now","addCommonCookie","debugId","KEY_MP_DEBUG_ID","indexOf","undefined","getSimpleDebugId","setDebugId","incrementDepth","visitInfo","KEY_MP_IDL_VISIT_ID_INFO","visitId","getUniqueID","visitCt","visitDepth","visitTs","visitVer","setVisitInfo","visitInfoToString","reportError","incrementVisitDepth","visitorInfoData","KEY_MP_IDL_VISITOR_ID_INFO","mId","logDbg","fetchIdlInfo","getIdlUrl","setVisitorInfo","cookieValue","encodeURIComponent","JSON","stringify","dId"],"sources":["visit-id.processor.ts"],"sourcesContent":["import { Logger } from '../common/logger';\nimport { DataStore } from '../common/data-store';\nimport { Constants } from '../common/constants';\nimport { Reporter } from '../common/reporter';\nimport { NetworkService } from '../common/network-service';\nimport type { VisitInfo, VisitorInfo } from '../common/app-types';\nimport { Utils } from '../common/utils';\n\nexport class VisitIdProcessor {\n static async init(orgId: string): Promise<void> {\n await this.initDebugId(orgId);\n await this.setOrResetVisitorId();\n await this.setOrResetVisitInfo(false);\n }\n\n static async isFirstOpenAfterInstall(): Promise<boolean> {\n try {\n const firstOpenFlag = await DataStore.getDataFromStorage<string>(\n Constants.KEY_FIRST_OPEN\n );\n\n if (!firstOpenFlag) {\n await DataStore.storeData(Constants.KEY_FIRST_OPEN, 'No');\n return true;\n }\n } catch (err) {\n Logger.logError('Unable to determine first open after install flag', err);\n }\n return false;\n }\n\n static async getFacebookFBP(): Promise<string> {\n try {\n let fbp = await DataStore.getDataFromStorage<string>(Constants.KEY_FBP);\n\n if (!fbp) {\n fbp = `fb.1.${Date.now()}.${Date.now()}`;\n }\n\n await DataStore.storeData(Constants.KEY_FBP, fbp);\n\n DataStore.addCommonCookie('x-fbp', fbp);\n\n return fbp;\n } catch (err) {\n Logger.logError('Error initializing debug id.', err);\n }\n return '';\n }\n\n static async initDebugId(orgId: string): Promise<void> {\n try {\n let debugId = await DataStore.getDataFromStorage<string>(\n Constants.KEY_MP_DEBUG_ID\n );\n\n if (debugId && debugId.indexOf(orgId) !== 0) {\n // re-generate debug id if it is not of the simple variety\n debugId = undefined;\n }\n\n if (!debugId) {\n debugId = Utils.getSimpleDebugId(orgId);\n }\n\n await DataStore.storeData(Constants.KEY_MP_DEBUG_ID, debugId);\n DataStore.setDebugId(debugId);\n } catch (err) {\n Logger.logError('Error initializing debug id.', err);\n }\n }\n\n static async setOrResetVisitInfo(incrementDepth: boolean): Promise<void> {\n try {\n let visitInfo: VisitInfo = await DataStore.getDataFromStorage(\n Constants.KEY_MP_IDL_VISIT_ID_INFO\n );\n\n if (!visitInfo) {\n // may be first time visit, set up a new visit info object and return\n visitInfo = {\n visitId: Utils.getUniqueID(),\n visitCt: 1,\n visitDepth: 1,\n visitTs: Date.now(),\n visitVer: 1,\n };\n } else {\n // reset visit id anyway, but retain the visitCt and depth setting\n visitInfo.visitId = Utils.getUniqueID();\n if (incrementDepth) {\n visitInfo.visitDepth = (visitInfo?.visitDepth ?? 0) + 1;\n } else {\n visitInfo.visitCt = visitInfo.visitCt + 1;\n visitInfo.visitDepth = 1;\n }\n visitInfo.visitTs = Date.now();\n visitInfo.visitVer = 1;\n }\n\n DataStore.setVisitInfo(visitInfo);\n await DataStore.storeData(Constants.KEY_MP_IDL_VISIT_ID_INFO, visitInfo);\n DataStore.addCommonCookie('x-mp-vid', DataStore.visitInfoToString());\n } catch (err) {\n Logger.logError(err);\n DataStore.setVisitInfo(null);\n Reporter.reportError('setOrResetVisitInfo', err);\n }\n }\n\n static async incrementVisitDepth(): Promise<void> {\n return this.setOrResetVisitInfo(true);\n }\n\n static async setOrResetVisitorId(): Promise<void> {\n try {\n let visitorInfoData: VisitorInfo = await DataStore.getDataFromStorage(\n Constants.KEY_MP_IDL_VISITOR_ID_INFO\n );\n\n if (\n !visitorInfoData ||\n (visitorInfoData && visitorInfoData?.mId.indexOf('-') === -1)\n ) {\n Logger.logDbg('VisitorInfo not found. Refreshing from server');\n // get a new visit id and device id from server and store it in storage\n visitorInfoData = await NetworkService.fetchIdlInfo(\n DataStore.getIdlUrl()\n );\n }\n\n if (!visitorInfoData) {\n return;\n } else {\n DataStore.setVisitorInfo(visitorInfoData);\n // store to db as well\n await DataStore.storeData(\n Constants.KEY_MP_IDL_VISITOR_ID_INFO,\n visitorInfoData\n );\n\n const cookieValue = encodeURIComponent(JSON.stringify(visitorInfoData));\n DataStore.addCommonCookie('x-mplidl', cookieValue);\n DataStore.addCommonCookie('x-mpidl', cookieValue);\n DataStore.addCommonCookie('x-lmid', visitorInfoData.mId);\n DataStore.addCommonCookie('x-ldid', visitorInfoData.dId);\n }\n } catch (err) {\n Logger.logError(err);\n DataStore.setVisitorInfo(null);\n Reporter.reportError('setOrResetVisitorId', err);\n }\n }\n}\n"],"mappings":"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"}
@@ -19,4 +19,5 @@ export declare class Constants {
19
19
  static KEY_MP_IDL_VISIT_ID_INFO: string;
20
20
  static KEY_MP_DEBUG_ID: string;
21
21
  static KEY_FBP: string;
22
+ static KEY_FIRST_OPEN: string;
22
23
  }
@@ -1,5 +1,6 @@
1
1
  export declare class VisitIdProcessor {
2
2
  static init(orgId: string): Promise<void>;
3
+ static isFirstOpenAfterInstall(): Promise<boolean>;
3
4
  static getFacebookFBP(): Promise<string>;
4
5
  static initDebugId(orgId: string): Promise<void>;
5
6
  static setOrResetVisitInfo(incrementDepth: boolean): Promise<void>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@magicpixel/rn-mp-client-sdk",
3
- "version": "0.7.4",
3
+ "version": "0.8.0",
4
4
  "description": "test",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -41,4 +41,5 @@ export class Constants {
41
41
 
42
42
  static KEY_MP_DEBUG_ID = 'mp_debug_id';
43
43
  static KEY_FBP = 'KEY_FBP';
44
+ static KEY_FIRST_OPEN = 'KEY_FOPEN';
44
45
  }
package/src/eedl/eedl.ts CHANGED
@@ -17,13 +17,17 @@ export class MpDataLayerHelper {
17
17
  dlInitEvent: string
18
18
  ) {
19
19
  this.dlInitEvent = dlInitEvent;
20
- }
21
20
 
22
- init(globalEventListeners: Record<string, EventProcessorFn>): void {
23
21
  if (this.dlInitMode !== 'manual') {
24
22
  this.isReady = true;
25
23
  }
26
24
 
25
+ if (this.isReady) {
26
+ this.ready();
27
+ }
28
+ }
29
+
30
+ init(globalEventListeners: Record<string, EventProcessorFn>): void {
27
31
  // register any global event listeners passed through to the init command
28
32
  const globalEventListenerKeys = Object.keys(globalEventListeners || {});
29
33
  if (globalEventListenerKeys?.length > 0) {
@@ -226,7 +230,6 @@ export class MpDataLayerHelper {
226
230
  }
227
231
  // continue with other items
228
232
  for (const item of _temp) {
229
- Logger.logDbg('drainQueue... for loop...');
230
233
  this.processQItems(item[0], item[1]);
231
234
  }
232
235
  }
package/src/index.tsx CHANGED
@@ -19,14 +19,16 @@ import { VisitIdProcessor } from './processors/visit-id.processor';
19
19
  const DL_INIT_EVENT = 'page_load';
20
20
 
21
21
  class MagicPixelImpl {
22
- private static dl: MpDataLayerHelper;
22
+ private static dl: MpDataLayerHelper = new MpDataLayerHelper(
23
+ 'mpDlEvent',
24
+ 'manual',
25
+ DL_INIT_EVENT
26
+ );
23
27
  private static customerInfo: AppCustomerInfo;
24
28
  private static customerIdentifiers: MapLike = {};
25
29
  private static firstAppLaunch = true;
26
30
 
27
31
  static async init(options: SdkInitOptions): Promise<void> {
28
- this.dl = new MpDataLayerHelper('mpDlEvent', 'manual', DL_INIT_EVENT);
29
-
30
32
  await NetworkService.refreshClientSdkJson(options);
31
33
 
32
34
  if (!DataStore.isDataStoreReady()) {
@@ -73,6 +75,14 @@ class MagicPixelImpl {
73
75
  await this.checkAndFireTM();
74
76
  }
75
77
  });
78
+
79
+ const isFirstOpen = await VisitIdProcessor.isFirstOpenAfterInstall();
80
+ if (isFirstOpen) {
81
+ Logger.logDbg('First open event fired');
82
+ this.recordEvent('app_first_open', {});
83
+ }
84
+
85
+ this.ready();
76
86
  }
77
87
 
78
88
  static recordEvent(eventName: string, payload: MapLike): void {
@@ -13,6 +13,22 @@ export class VisitIdProcessor {
13
13
  await this.setOrResetVisitInfo(false);
14
14
  }
15
15
 
16
+ static async isFirstOpenAfterInstall(): Promise<boolean> {
17
+ try {
18
+ const firstOpenFlag = await DataStore.getDataFromStorage<string>(
19
+ Constants.KEY_FIRST_OPEN
20
+ );
21
+
22
+ if (!firstOpenFlag) {
23
+ await DataStore.storeData(Constants.KEY_FIRST_OPEN, 'No');
24
+ return true;
25
+ }
26
+ } catch (err) {
27
+ Logger.logError('Unable to determine first open after install flag', err);
28
+ }
29
+ return false;
30
+ }
31
+
16
32
  static async getFacebookFBP(): Promise<string> {
17
33
  try {
18
34
  let fbp = await DataStore.getDataFromStorage<string>(Constants.KEY_FBP);