@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.
- package/lib/commonjs/common/constants.js +2 -0
- package/lib/commonjs/common/constants.js.map +1 -1
- package/lib/commonjs/eedl/eedl.js +7 -5
- package/lib/commonjs/eedl/eedl.js.map +1 -1
- package/lib/commonjs/index.js +10 -2
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/processors/visit-id.processor.js +15 -0
- package/lib/commonjs/processors/visit-id.processor.js.map +1 -1
- package/lib/module/common/constants.js +2 -0
- package/lib/module/common/constants.js.map +1 -1
- package/lib/module/eedl/eedl.js +7 -4
- package/lib/module/eedl/eedl.js.map +1 -1
- package/lib/module/index.js +9 -2
- package/lib/module/index.js.map +1 -1
- package/lib/module/processors/visit-id.processor.js +15 -0
- package/lib/module/processors/visit-id.processor.js.map +1 -1
- package/lib/typescript/common/constants.d.ts +1 -0
- package/lib/typescript/processors/visit-id.processor.d.ts +1 -0
- package/package.json +1 -1
- package/src/common/constants.ts +1 -0
- package/src/eedl/eedl.ts +6 -3
- package/src/index.tsx +13 -3
- package/src/processors/visit-id.processor.ts +16 -0
|
@@ -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
|
-
}
|
|
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":";;;;;;;AAAA;;AAEA;;;;AAEO,MAAMA,iBAAN,CAAwB;EAS7BC,WAAW,CACQC,WADR,EAEQC,UAFR,EAGTC,WAHS,EAIT;IAAA,KAHiBF,WAGjB,GAHiBA,WAGjB;IAAA,KAFiBC,UAEjB,GAFiBA,UAEjB;;IAAA,iCAZQ,KAYR;;IAAA,0CAX0B,EAW1B;;IAAA,yCAVqC,EAUrC;;IAAA,sCATyB,EASzB;;IAAA;;IAAA,8CAPqB,KAOrB;;IAAA,oCANuB,EAMvB;;IACA,KAAKC,WAAL,GAAmBA,WAAnB;;IAEA,IAAI,KAAKD,UAAL,KAAoB,QAAxB,EAAkC;MAChC,KAAKE,OAAL,GAAe,IAAf;IACD;;IAED,IAAI,KAAKA,OAAT,EAAkB;MAChB,KAAKC,KAAL;IACD;EACF;;EAEDC,IAAI,CAACC,oBAAD,EAA+D;IACjE;IACA,MAAMC,uBAAuB,GAAGC,MAAM,CAACC,IAAP,CAAYH,oBAAoB,IAAI,EAApC,CAAhC;;IACA,IAAI,CAAAC,uBAAuB,SAAvB,IAAAA,uBAAuB,WAAvB,YAAAA,uBAAuB,CAAEG,MAAzB,IAAkC,CAAtC,EAAyC;MACvC,KAAK,MAAMC,GAAX,IAAkBJ,uBAAlB,EAA2C;QACzC,IAAI,OAAOD,oBAAoB,CAACK,GAAD,CAA3B,KAAqC,WAAzC,EAAsD;UACpD,KAAKC,iBAAL,CAAuBD,GAAvB,EAA4BL,oBAAoB,CAACK,GAAD,CAAhD;QACD;MACF;IACF;EACF;;EAEDE,SAAS,CAACC,SAAD,EAAoBC,OAApB,EAA4C;IACnDC,cAAA,CAAOC,MAAP,CAAc,kBAAd,EAAkCC,IAAI,CAACC,SAAL,CAAeJ,OAAf,CAAlC;;IACA,IAAID,SAAS,KAAK,KAAlB,EAAyB;MACvB;MACA,KAAKM,aAAL,CAAmBN,SAAnB,EAA8BC,OAA9B;IACD,CAHD,MAGO;MACL,IAAI,CAAC,KAAKM,oBAAV,EAAgC;QAC9B;QACA,KAAKA,oBAAL,GAA4BP,SAAS,KAAK,KAAKZ,WAA/C;QACA,KAAKoB,UAAL,CAAgBC,IAAhB,CAAqB,CAACT,SAAD,EAAYC,OAAZ,CAArB;;QACA,IAAI,KAAKZ,OAAL,IAAgB,KAAKkB,oBAAzB,EAA+C;UAC7C,KAAKjB,KAAL;QACD;MACF,CAPD,MAOO,IAAI,CAAC,KAAKD,OAAV,EAAmB;QACxB,KAAKmB,UAAL,CAAgBC,IAAhB,CAAqB,CAACT,SAAD,EAAYC,OAAZ,CAArB;MACD,CAFM,MAEA;QACL,KAAKK,aAAL,CAAmBN,SAAnB,EAA8BC,OAA9B;MACD;IACF;EACF;;EAEDK,aAAa,CAACN,SAAD,EAAoBC,OAApB,EAA4C;IACvD,IAAI;MACF,IAAID,SAAS,KAAK,KAAlB,EAAyB;QACvB,KAAKU,KAAL,CAAWT,OAAX;MACD,CAFD,MAEO;QACL,KAAKU,cAAL,CAAoBX,SAApB,EAA+BC,OAA/B;MACD;MACD;;IACD,CAPD,CAOE,OAAOW,GAAP,EAAY;MACZV,cAAA,CAAOW,QAAP,CAAgB,mCAAhB,EAAqDD,GAArD;IACD;EACF;EAED;AACF;AACA;;;EACEF,KAAK,CAACI,GAAD,EAAqC;IACxC,IAAI,CAACA,GAAL,EAAU;MACR,OAAO,KAAP;IACD;;IACD,MAAMC,IAAI,GAAGC,YAAA,CAAMC,aAAN,CAAoBH,GAApB,CAAb;;IACA,KAAKI,gBAAL,GAAwBxB,MAAM,CAACyB,MAAP,CAAc,EAAd,EAAkB,KAAKD,gBAAvB,EAAyCH,IAAzC,CAAxB;IACA,OAAO,IAAP;EACD;;EAEDK,KAAK,GAAa;IAChB,OAAO,KAAKF,gBAAZ;EACD;EAED;AACF;AACA;AACA;AACA;AACA;;;EACEP,cAAc,CAACX,SAAD,EAAoBqB,KAApB,EAAuD;IACnE;AACJ;AACA;AACA;IACI,IAAIrB,SAAS,KAAK,OAAd,IAAyBA,SAAS,KAAK,KAAKZ,WAAhD,EAA6D;MAC3D,KAAKkC,KAAL;MACA,KAAKZ,KAAL,CAAWW,KAAX;MACAA,KAAK,GAAGE,SAAR;IACD;;IAED,IAAIF,KAAJ,EAAW;MACTA,KAAK,GAAG;QACNG,EAAE,EAAGH,KAAK,IAAI;MADR,CAAR;IAGD,CAJD,MAIO;MACLA,KAAK,GAAG,EAAR;IACD,CAjBkE,CAmBnE;;;IACAA,KAAK,CAAC,QAAD,CAAL,GAAkBL,YAAA,CAAMS,WAAN,EAAlB,CApBmE,CAsBnE;;IACAJ,KAAK,CAAC,UAAD,CAAL,GAAoBK,IAAI,CAACC,GAAL,EAApB;IAEAN,KAAK,CAAC,eAAD,CAAL,GAAyBrB,SAAzB;IAEAqB,KAAK,GAAGL,YAAA,CAAMC,aAAN,CAAoBI,KAApB,CAAR,CA3BmE,CA6BnE;;IACA,MAAMO,MAAM,GAAGlC,MAAM,CAACyB,MAAP,CAAc,EAAd,EAAkB,KAAKD,gBAAvB,EAAyCG,KAAzC,CAAf;;IACA,MAAMQ,OAAO,GAAGH,IAAI,CAACC,GAAL,EAAhB;IAEA,MAAMG,YAAY,GAAG;MACnB9B,SAAS,EAAEA,SADQ;MAEnB6B,OAAO,EAAEA,OAFU;MAGnBR,KAAK,EAAEO;IAHY,CAArB,CAjCmE,CAuCnE;;IACA,KAAKG,YAAL,CAAkBtB,IAAlB,CAAuBqB,YAAvB,EAxCmE,CA0CnE;;IACAd,YAAA,CAAMgB,YAAN,CAAmB,KAAK9C,WAAxB,EAAqC4C,YAArC,EA3CmE,CA6CnE;;;IACA,IAAI,KAAKG,eAAL,CAAqBjC,SAArB,CAAJ,EAAqC;MACnC,KAAK,MAAMkC,SAAX,IAAwB,KAAKD,eAAL,CAAqBjC,SAArB,CAAxB,EAAyD;QACvDgB,YAAA,CAAMmB,WAAN,CAAkBD,SAAlB,EAA6BJ,YAA7B;MACD;IACF;EACF;;EAEDM,mBAAmB,CAACpC,SAAD,EAA4B;IAC7C,IAAIA,SAAS,IAAIA,SAAS,CAACJ,MAAV,GAAmB,CAApC,EAAuC;MACrC,KAAKR,WAAL,GAAmBY,SAAnB;MACA,OAAO,mCAAP;IACD;;IACD,OAAO,+BAAP;EACD;EAED;AACF;AACA;AACA;AACA;;;EACEF,iBAAiB,CAACuC,SAAD,EAAoBC,EAApB,EAAgD;IAC/D,IAAI,CAACD,SAAD,IAAc,CAACC,EAAf,IAAqB,OAAOA,EAAP,KAAc,UAAvC,EAAmD;MACjDpC,cAAA,CAAOW,QAAP,CAAgB,gCAAhB;;MACA;IACD;;IACD,IAAI,CAAC,KAAKoB,eAAL,CAAqBI,SAArB,CAAL,EAAsC;MACpC,KAAKJ,eAAL,CAAqBI,SAArB,IAAkC,EAAlC;IACD;;IAED,KAAKJ,eAAL,CAAqBI,SAArB,EAAgC5B,IAAhC,CAAqC6B,EAArC;EACD;EAED;AACF;AACA;AACA;AACA;;;EACEC,GAAG,CAAC1C,GAAD,EAAmC;IACpC,OAAO,KAAKqB,gBAAL,CAAsBrB,GAAtB,KAA8B0B,SAArC;EACD;;EAEDiB,QAAQ,GAAe;IACrB,OAAO,KAAKT,YAAZ;EACD;;EAEDU,gBAAgB,CAAC5C,GAAD,EAAuB;IACrC,OAAO,CAAC,CAAC,KAAKkC,YAAL,CAAkBW,IAAlB,CAAwBC,CAAD,IAAOA,CAAC,CAAC3C,SAAF,KAAgBH,GAA9C,CAAT;EACD;;EAEDyB,KAAK,GAAY;IACf,KAAKJ,gBAAL,GAAwB,EAAxB;IACA,OAAO,IAAP;EACD;;EAED5B,KAAK,GAAS;IACZ,KAAKD,OAAL,GAAe,IAAf;;IACA,IAAI,KAAKkB,oBAAT,EAA+B;MAC7BL,cAAA,CAAOC,MAAP,CAAc,0BAAd,EAA0C,KAAKf,WAA/C,EAD6B,CAE7B;MACA;MACA;;;MACA,KAAKwD,UAAL;IACD,CAND,MAMO;MACL1C,cAAA,CAAOC,MAAP,CACG,kBAAiB,KAAKf,WAAY,uCADrC;IAGD;EACF;;EAEDwD,UAAU,GAAS;IACjB1C,cAAA,CAAOC,MAAP,CAAc,eAAd,EADiB,CAEjB;;;IACA,MAAM0C,KAAK,GAAG,CAAC,GAAG,KAAKrC,UAAT,CAAd,CAHiB,CAIjB;;IACA,KAAKA,UAAL,CAAgBsC,MAAhB,CAAuB,CAAvB,EAA0B,KAAKtC,UAAL,CAAgBZ,MAA1C,EALiB,CAMjB;;IACA,MAAMmD,uBAAuB,GAAGF,KAAK,CAACG,SAAN,CAC7BC,CAAD;MAAA;;MAAA,OAAO,OAACA,CAAD,EAAI,CAAJ,yCAAS,CAAT,OAAgB,KAAK7D,WAA5B;IAAA,CAD8B,CAAhC;;IAGA,IAAI2D,uBAAuB,GAAG,CAAC,CAA/B,EAAkC;MAChC;MACA,KAAKzC,aAAL,CACEuC,KAAK,CAACE,uBAAD,CAAL,CAA+B,CAA/B,CADF,EAEEF,KAAK,CAACE,uBAAD,CAAL,CAA+B,CAA/B,CAFF;;MAIAF,KAAK,CAACC,MAAN,CAAaC,uBAAb,EAAsC,CAAtC;IACD,CAjBgB,CAkBjB;;;IACA,KAAK,MAAMG,IAAX,IAAmBL,KAAnB,EAA0B;MACxB,KAAKvC,aAAL,CAAmB4C,IAAI,CAAC,CAAD,CAAvB,EAA4BA,IAAI,CAAC,CAAD,CAAhC;IACD;EACF;;AAtO4B"}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -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",
|
|
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","
|
|
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":";;;;;;;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;;EAEmC,aAAvBC,uBAAuB,GAAqB;IACvD,IAAI;MACF,MAAMC,aAAa,GAAG,MAAMC,oBAAA,CAAUC,kBAAV,CAC1BC,oBAAA,CAAUC,cADgB,CAA5B;;MAIA,IAAI,CAACJ,aAAL,EAAoB;QAClB,MAAMC,oBAAA,CAAUI,SAAV,CAAoBF,oBAAA,CAAUC,cAA9B,EAA8C,IAA9C,CAAN;QACA,OAAO,IAAP;MACD;IACF,CATD,CASE,OAAOE,GAAP,EAAY;MACZC,cAAA,CAAOC,QAAP,CAAgB,mDAAhB,EAAqEF,GAArE;IACD;;IACD,OAAO,KAAP;EACD;;EAE0B,aAAdG,cAAc,GAAoB;IAC7C,IAAI;MACF,IAAIC,GAAG,GAAG,MAAMT,oBAAA,CAAUC,kBAAV,CAAqCC,oBAAA,CAAUQ,OAA/C,CAAhB;;MAEA,IAAI,CAACD,GAAL,EAAU;QACRA,GAAG,GAAI,QAAOE,IAAI,CAACC,GAAL,EAAW,IAAGD,IAAI,CAACC,GAAL,EAAW,EAAvC;MACD;;MAED,MAAMZ,oBAAA,CAAUI,SAAV,CAAoBF,oBAAA,CAAUQ,OAA9B,EAAuCD,GAAvC,CAAN;;MAEAT,oBAAA,CAAUa,eAAV,CAA0B,OAA1B,EAAmCJ,GAAnC;;MAEA,OAAOA,GAAP;IACD,CAZD,CAYE,OAAOJ,GAAP,EAAY;MACZC,cAAA,CAAOC,QAAP,CAAgB,8BAAhB,EAAgDF,GAAhD;IACD;;IACD,OAAO,EAAP;EACD;;EAEuB,aAAXV,WAAW,CAACD,KAAD,EAA+B;IACrD,IAAI;MACF,IAAIoB,OAAO,GAAG,MAAMd,oBAAA,CAAUC,kBAAV,CAClBC,oBAAA,CAAUa,eADQ,CAApB;;MAIA,IAAID,OAAO,IAAIA,OAAO,CAACE,OAAR,CAAgBtB,KAAhB,MAA2B,CAA1C,EAA6C;QAC3C;QACAoB,OAAO,GAAGG,SAAV;MACD;;MAED,IAAI,CAACH,OAAL,EAAc;QACZA,OAAO,GAAGI,YAAA,CAAMC,gBAAN,CAAuBzB,KAAvB,CAAV;MACD;;MAED,MAAMM,oBAAA,CAAUI,SAAV,CAAoBF,oBAAA,CAAUa,eAA9B,EAA+CD,OAA/C,CAAN;;MACAd,oBAAA,CAAUoB,UAAV,CAAqBN,OAArB;IACD,CAhBD,CAgBE,OAAOT,GAAP,EAAY;MACZC,cAAA,CAAOC,QAAP,CAAgB,8BAAhB,EAAgDF,GAAhD;IACD;EACF;;EAE+B,aAAnBR,mBAAmB,CAACwB,cAAD,EAAyC;IACvE,IAAI;MACF,IAAIC,SAAoB,GAAG,MAAMtB,oBAAA,CAAUC,kBAAV,CAC/BC,oBAAA,CAAUqB,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,EAAEjB,IAAI,CAACC,GAAL,EAJC;UAKViB,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,GAAoBjB,IAAI,CAACC,GAAL,EAApB;QACAU,SAAS,CAACO,QAAV,GAAqB,CAArB;MACD;;MAED7B,oBAAA,CAAU8B,YAAV,CAAuBR,SAAvB;;MACA,MAAMtB,oBAAA,CAAUI,SAAV,CAAoBF,oBAAA,CAAUqB,wBAA9B,EAAwDD,SAAxD,CAAN;;MACAtB,oBAAA,CAAUa,eAAV,CAA0B,UAA1B,EAAsCb,oBAAA,CAAU+B,iBAAV,EAAtC;IACD,CA9BD,CA8BE,OAAO1B,GAAP,EAAY;MACZC,cAAA,CAAOC,QAAP,CAAgBF,GAAhB;;MACAL,oBAAA,CAAU8B,YAAV,CAAuB,IAAvB;;MACAE,kBAAA,CAASC,WAAT,CAAqB,qBAArB,EAA4C5B,GAA5C;IACD;EACF;;EAE+B,aAAnB6B,mBAAmB,GAAkB;IAChD,OAAO,KAAKrC,mBAAL,CAAyB,IAAzB,CAAP;EACD;;EAE+B,aAAnBD,mBAAmB,GAAkB;IAChD,IAAI;MAAA;;MACF,IAAIuC,eAA4B,GAAG,MAAMnC,oBAAA,CAAUC,kBAAV,CACvCC,oBAAA,CAAUkC,0BAD6B,CAAzC;;MAIA,IACE,CAACD,eAAD,IACCA,eAAe,IAAI,qBAAAA,eAAe,UAAf,4DAAiBE,GAAjB,CAAqBrB,OAArB,CAA6B,GAA7B,OAAsC,CAAC,CAF7D,EAGE;QACAV,cAAA,CAAOgC,MAAP,CAAc,+CAAd,EADA,CAEA;;;QACAH,eAAe,GAAG,MAAMI,8BAAA,CAAeC,YAAf,CACtBxC,oBAAA,CAAUyC,SAAV,EADsB,CAAxB;MAGD;;MAED,IAAI,CAACN,eAAL,EAAsB;QACpB;MACD,CAFD,MAEO;QACLnC,oBAAA,CAAU0C,cAAV,CAAyBP,eAAzB,EADK,CAEL;;;QACA,MAAMnC,oBAAA,CAAUI,SAAV,CACJF,oBAAA,CAAUkC,0BADN,EAEJD,eAFI,CAAN;QAKA,MAAMQ,WAAW,GAAGC,kBAAkB,CAACC,IAAI,CAACC,SAAL,CAAeX,eAAf,CAAD,CAAtC;;QACAnC,oBAAA,CAAUa,eAAV,CAA0B,UAA1B,EAAsC8B,WAAtC;;QACA3C,oBAAA,CAAUa,eAAV,CAA0B,SAA1B,EAAqC8B,WAArC;;QACA3C,oBAAA,CAAUa,eAAV,CAA0B,QAA1B,EAAoCsB,eAAe,CAACE,GAApD;;QACArC,oBAAA,CAAUa,eAAV,CAA0B,QAA1B,EAAoCsB,eAAe,CAACY,GAApD;MACD;IACF,CAhCD,CAgCE,OAAO1C,GAAP,EAAY;MACZC,cAAA,CAAOC,QAAP,CAAgBF,GAAhB;;MACAL,oBAAA,CAAU0C,cAAV,CAAyB,IAAzB;;MACAV,kBAAA,CAASC,WAAT,CAAqB,qBAArB,EAA4C5B,GAA5C;IACD;EACF;;AAhJ2B"}
|
|
@@ -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"}
|
package/lib/module/eedl/eedl.js
CHANGED
|
@@ -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
|
-
}
|
|
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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"}
|
package/lib/module/index.js
CHANGED
|
@@ -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",
|
|
231
|
+
_defineProperty(MagicPixelImpl, "dl", new MpDataLayerHelper('mpDlEvent', 'manual', DL_INIT_EVENT));
|
|
225
232
|
|
|
226
233
|
_defineProperty(MagicPixelImpl, "customerInfo", void 0);
|
|
227
234
|
|
package/lib/module/index.js.map
CHANGED
|
@@ -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":"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"}
|
|
@@ -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","
|
|
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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"}
|
|
@@ -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
package/src/common/constants.ts
CHANGED
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);
|