@magicpixel/rn-mp-client-sdk 0.2.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/LICENSE +20 -0
- package/README.md +29 -0
- package/lib/commonjs/common/app-types.js +6 -0
- package/lib/commonjs/common/app-types.js.map +1 -0
- package/lib/commonjs/common/constants.js +51 -0
- package/lib/commonjs/common/constants.js.map +1 -0
- package/lib/commonjs/common/data-store.js +361 -0
- package/lib/commonjs/common/data-store.js.map +1 -0
- package/lib/commonjs/common/event-bus.js +42 -0
- package/lib/commonjs/common/event-bus.js.map +1 -0
- package/lib/commonjs/common/logger.js +30 -0
- package/lib/commonjs/common/logger.js.map +1 -0
- package/lib/commonjs/common/network-service.js +90 -0
- package/lib/commonjs/common/network-service.js.map +1 -0
- package/lib/commonjs/common/reporter.js +107 -0
- package/lib/commonjs/common/reporter.js.map +1 -0
- package/lib/commonjs/common/utils.js +276 -0
- package/lib/commonjs/common/utils.js.map +1 -0
- package/lib/commonjs/coverage/clover.xml +6 -0
- package/lib/commonjs/coverage/coverage-final.json +1 -0
- package/lib/commonjs/coverage/lcov-report/base.css +224 -0
- package/lib/commonjs/coverage/lcov-report/block-navigation.js +83 -0
- package/lib/commonjs/coverage/lcov-report/block-navigation.js.map +1 -0
- package/lib/commonjs/coverage/lcov-report/favicon.png +0 -0
- package/lib/commonjs/coverage/lcov-report/index.html +101 -0
- package/lib/commonjs/coverage/lcov-report/prettify.css +1 -0
- package/lib/commonjs/coverage/lcov-report/prettify.js +995 -0
- package/lib/commonjs/coverage/lcov-report/prettify.js.map +1 -0
- package/lib/commonjs/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/lib/commonjs/coverage/lcov-report/sorter.js +212 -0
- package/lib/commonjs/coverage/lcov-report/sorter.js.map +1 -0
- package/lib/commonjs/coverage/lcov.info +0 -0
- package/lib/commonjs/eedl/eedl.js +262 -0
- package/lib/commonjs/eedl/eedl.js.map +1 -0
- package/lib/commonjs/index.js +214 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/models/mp-client-sdk.js +33 -0
- package/lib/commonjs/models/mp-client-sdk.js.map +1 -0
- package/lib/commonjs/processors/data-element.processor.js +191 -0
- package/lib/commonjs/processors/data-element.processor.js.map +1 -0
- package/lib/commonjs/processors/qc.processor.js +111 -0
- package/lib/commonjs/processors/qc.processor.js.map +1 -0
- package/lib/commonjs/processors/tag.processor.js +432 -0
- package/lib/commonjs/processors/tag.processor.js.map +1 -0
- package/lib/commonjs/processors/trans-function.processor.js +91 -0
- package/lib/commonjs/processors/trans-function.processor.js.map +1 -0
- package/lib/commonjs/processors/visit-id.processor.js +172 -0
- package/lib/commonjs/processors/visit-id.processor.js.map +1 -0
- package/lib/module/common/app-types.js +2 -0
- package/lib/module/common/app-types.js.map +1 -0
- package/lib/module/common/constants.js +41 -0
- package/lib/module/common/constants.js.map +1 -0
- package/lib/module/common/data-store.js +346 -0
- package/lib/module/common/data-store.js.map +1 -0
- package/lib/module/common/event-bus.js +31 -0
- package/lib/module/common/event-bus.js.map +1 -0
- package/lib/module/common/logger.js +21 -0
- package/lib/module/common/logger.js.map +1 -0
- package/lib/module/common/network-service.js +73 -0
- package/lib/module/common/network-service.js.map +1 -0
- package/lib/module/common/reporter.js +88 -0
- package/lib/module/common/reporter.js.map +1 -0
- package/lib/module/common/utils.js +263 -0
- package/lib/module/common/utils.js.map +1 -0
- package/lib/module/coverage/clover.xml +6 -0
- package/lib/module/coverage/coverage-final.json +1 -0
- package/lib/module/coverage/lcov-report/base.css +224 -0
- package/lib/module/coverage/lcov-report/block-navigation.js +81 -0
- package/lib/module/coverage/lcov-report/block-navigation.js.map +1 -0
- package/lib/module/coverage/lcov-report/favicon.png +0 -0
- package/lib/module/coverage/lcov-report/index.html +101 -0
- package/lib/module/coverage/lcov-report/prettify.css +1 -0
- package/lib/module/coverage/lcov-report/prettify.js +993 -0
- package/lib/module/coverage/lcov-report/prettify.js.map +1 -0
- package/lib/module/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/lib/module/coverage/lcov-report/sorter.js +210 -0
- package/lib/module/coverage/lcov-report/sorter.js.map +1 -0
- package/lib/module/coverage/lcov.info +0 -0
- package/lib/module/eedl/eedl.js +246 -0
- package/lib/module/eedl/eedl.js.map +1 -0
- package/lib/module/index.js +176 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/models/mp-client-sdk.js +24 -0
- package/lib/module/models/mp-client-sdk.js.map +1 -0
- package/lib/module/processors/data-element.processor.js +176 -0
- package/lib/module/processors/data-element.processor.js.map +1 -0
- package/lib/module/processors/qc.processor.js +90 -0
- package/lib/module/processors/qc.processor.js.map +1 -0
- package/lib/module/processors/tag.processor.js +396 -0
- package/lib/module/processors/tag.processor.js.map +1 -0
- package/lib/module/processors/trans-function.processor.js +73 -0
- package/lib/module/processors/trans-function.processor.js.map +1 -0
- package/lib/module/processors/visit-id.processor.js +144 -0
- package/lib/module/processors/visit-id.processor.js.map +1 -0
- package/lib/typescript/common/app-types.d.ts +101 -0
- package/lib/typescript/common/constants.d.ts +21 -0
- package/lib/typescript/common/data-store.d.ts +81 -0
- package/lib/typescript/common/event-bus.d.ts +6 -0
- package/lib/typescript/common/logger.d.ts +5 -0
- package/lib/typescript/common/network-service.d.ts +8 -0
- package/lib/typescript/common/reporter.d.ts +12 -0
- package/lib/typescript/common/utils.d.ts +38 -0
- package/lib/typescript/eedl/eedl.d.ts +46 -0
- package/lib/typescript/index.d.ts +18 -0
- package/lib/typescript/models/mp-client-sdk.d.ts +157 -0
- package/lib/typescript/processors/data-element.processor.d.ts +12 -0
- package/lib/typescript/processors/qc.processor.d.ts +4 -0
- package/lib/typescript/processors/tag.processor.d.ts +27 -0
- package/lib/typescript/processors/trans-function.processor.d.ts +12 -0
- package/lib/typescript/processors/visit-id.processor.d.ts +7 -0
- package/package.json +170 -0
- package/src/common/app-types.ts +128 -0
- package/src/common/constants.ts +43 -0
- package/src/common/data-store.ts +333 -0
- package/src/common/event-bus.ts +35 -0
- package/src/common/logger.ts +19 -0
- package/src/common/network-service.ts +85 -0
- package/src/common/reporter.ts +110 -0
- package/src/common/utils.ts +281 -0
- package/src/coverage/clover.xml +6 -0
- package/src/coverage/coverage-final.json +1 -0
- package/src/coverage/lcov-report/base.css +224 -0
- package/src/coverage/lcov-report/block-navigation.js +87 -0
- package/src/coverage/lcov-report/favicon.png +0 -0
- package/src/coverage/lcov-report/index.html +101 -0
- package/src/coverage/lcov-report/prettify.css +1 -0
- package/src/coverage/lcov-report/prettify.js +2 -0
- package/src/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/src/coverage/lcov-report/sorter.js +196 -0
- package/src/coverage/lcov.info +0 -0
- package/src/eedl/eedl.ts +233 -0
- package/src/index.tsx +258 -0
- package/src/models/mp-client-sdk.ts +174 -0
- package/src/processors/data-element.processor.ts +249 -0
- package/src/processors/qc.processor.ts +115 -0
- package/src/processors/tag.processor.ts +527 -0
- package/src/processors/trans-function.processor.ts +85 -0
- package/src/processors/visit-id.processor.ts +164 -0
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
+
|
|
3
|
+
import { MpDataLayerHelper } from './eedl/eedl';
|
|
4
|
+
import { DataStore } from './common/data-store';
|
|
5
|
+
import { Logger } from './common/logger';
|
|
6
|
+
import { Reporter } from './common/reporter';
|
|
7
|
+
import { DataElementProcessor } from './processors/data-element.processor';
|
|
8
|
+
import { TagProcessor } from './processors/tag.processor';
|
|
9
|
+
import { Utils } from './common/utils';
|
|
10
|
+
import { QcProcessor } from './processors/qc.processor';
|
|
11
|
+
import { NetworkService } from './common/network-service';
|
|
12
|
+
import { EventBus } from './common/event-bus';
|
|
13
|
+
import { VisitIdProcessor } from './processors/visit-id.processor';
|
|
14
|
+
|
|
15
|
+
class MagicPixelImpl {
|
|
16
|
+
static async init(options) {
|
|
17
|
+
this.dl = new MpDataLayerHelper('mpDlEvent', 'manual', 'page_load');
|
|
18
|
+
await NetworkService.refreshClientSdkJson(options);
|
|
19
|
+
|
|
20
|
+
if (!DataStore.isDataStoreReady()) {
|
|
21
|
+
throw new Error('MagicPixel SDK is not ready. No tags will be processed');
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const sdk = DataStore.getClientSdk();
|
|
25
|
+
await VisitIdProcessor.init();
|
|
26
|
+
MagicPixelEventBus.on('mpDlEvent', async (evtName, payload) => {
|
|
27
|
+
var _sdk$mpDlE;
|
|
28
|
+
|
|
29
|
+
console.log('mpDlEvent:: ', evtName, JSON.stringify(payload));
|
|
30
|
+
const eventName = payload.eventName;
|
|
31
|
+
const eventDataModel = payload.model ?? {};
|
|
32
|
+
const eventId = eventDataModel['ev._id'];
|
|
33
|
+
Logger.logDbg('Tracking Event:: ', eventName, 'with id:: ', eventId);
|
|
34
|
+
|
|
35
|
+
if (((_sdk$mpDlE = sdk.mpDlE) === null || _sdk$mpDlE === void 0 ? void 0 : _sdk$mpDlE.indexOf(eventName)) > -1) {
|
|
36
|
+
// if this is something the tag manager is interested in - fire tag manager
|
|
37
|
+
DataStore.enQueueTMFire(false, `custom_event_${eventName}`, eventName, eventId, eventDataModel);
|
|
38
|
+
await this.checkAndFireTM();
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
static recordEvent(eventName, payload) {
|
|
44
|
+
if (this.customerInfo) {
|
|
45
|
+
const newPayload = { ...payload,
|
|
46
|
+
...this.customerInfo
|
|
47
|
+
};
|
|
48
|
+
this.dl.pushEvent(eventName, newPayload);
|
|
49
|
+
} else {
|
|
50
|
+
this.dl.pushEvent(eventName, payload);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
static ready() {
|
|
55
|
+
this.dl.ready();
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
static async checkAndFireTM() {
|
|
59
|
+
try {
|
|
60
|
+
if (!DataStore.isTagManagerProcessing()) {
|
|
61
|
+
const item = DataStore.deQueueTMFire();
|
|
62
|
+
|
|
63
|
+
if (item) {
|
|
64
|
+
Logger.logDbg('Executing TM For: ', item.name, ', Event:: ', item.dcrName, ', Event id:: ', item.eventId, 'Payload:: ', item.dcrPayload);
|
|
65
|
+
await this.runTM(item.sseOnly, item.name, item.dcrName, item.eventId, item.dcrPayload);
|
|
66
|
+
}
|
|
67
|
+
} else {
|
|
68
|
+
Logger.logDbg('Tag Manager is processing or is not ready. This event will start after that');
|
|
69
|
+
}
|
|
70
|
+
} catch (err) {
|
|
71
|
+
Logger.logError('Error check and process tm', err);
|
|
72
|
+
Reporter.reportError('m:checkAndFireTM', err);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
static async runTM(sseOnly, triggerName, evtName, evtId, eventData) {
|
|
77
|
+
try {
|
|
78
|
+
Logger.logDbg('Running:: ', sseOnly, triggerName, evtName, evtId, eventData); // set tag manager in process status
|
|
79
|
+
|
|
80
|
+
DataStore.setTagManagerProcessing(true); // process all the data elements and cache them for this run
|
|
81
|
+
|
|
82
|
+
await DataElementProcessor.processDataElements(DataStore.getSdkDataElements(), eventData);
|
|
83
|
+
const sdk = DataStore.getClientSdk();
|
|
84
|
+
const pcKey = DataStore.getSdkPcKey();
|
|
85
|
+
|
|
86
|
+
if (pcKey) {
|
|
87
|
+
const pcVal = DataStore.getDataElementValue(pcKey);
|
|
88
|
+
|
|
89
|
+
if (typeof pcVal !== 'undefined' && pcVal === true) {
|
|
90
|
+
Logger.logDbg('Set: PR Comp: ', true);
|
|
91
|
+
DataStore.setPrivacyCompliance(true);
|
|
92
|
+
} else {
|
|
93
|
+
Logger.logDbg('Set: PR Comp: ', false);
|
|
94
|
+
DataStore.setPrivacyCompliance(false);
|
|
95
|
+
}
|
|
96
|
+
} else {
|
|
97
|
+
Logger.logDbg('Set: PR Comp: ', false);
|
|
98
|
+
DataStore.setPrivacyCompliance(true);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
if (DataStore.getSdkPageLangKey()) {
|
|
102
|
+
DataStore.setDataElement('page_lang_key', DataStore.getSdkPageLangKey());
|
|
103
|
+
DataStore.setPageLang(DataStore.getDataElementValue('page_lang_key'));
|
|
104
|
+
} else {
|
|
105
|
+
DataStore.setDataElement('page_lang_key', null);
|
|
106
|
+
} //set page_browser default data element with page_os because backend expects this
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
DataStore.setDataElement('page_browser', DataStore.getOperatingSystem().toLowerCase());
|
|
110
|
+
Reporter.initReporter(sdk.s.ev, sdk.s.ev_id, DataStore.getDeviceType(), DataStore.getPageLang(), DataStore.getDeviceOs(), DataStore.getPageName(), evtName, evtId, DataStore.getClientDownStream(), DataStore.getCoreVersion(), []);
|
|
111
|
+
const validQCList = QcProcessor.processQc(DataStore.getSdkQC(), evtName, evtId);
|
|
112
|
+
|
|
113
|
+
if ((validQCList === null || validQCList === void 0 ? void 0 : validQCList.length) > 0) {
|
|
114
|
+
Logger.logDbg('Found Valid QCs to process', DataStore.getValidQcInfo());
|
|
115
|
+
TagProcessor.processTags(evtName, evtId).then(() => {
|
|
116
|
+
this._fireTM(sdk.s.ev, sdk.s.ev_id, evtName, evtId);
|
|
117
|
+
}).catch(err => {
|
|
118
|
+
Logger.logError('Error processing tag lists.', err);
|
|
119
|
+
Reporter.reportError('i::processTags', err);
|
|
120
|
+
|
|
121
|
+
this._fireTM(sdk.s.ev, sdk.s.ev_id, evtName, evtId);
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
} catch (runTMErr) {
|
|
125
|
+
Logger.logError('Error in runTM', runTMErr);
|
|
126
|
+
Reporter.reportError('m::runTM', runTMErr);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
static _fireTM(envName, envId, evtName, evtId) {
|
|
131
|
+
if (DataStore.hasOneSSTTag() && DataStore.shouldFireSstForEvent(evtName)) {
|
|
132
|
+
Reporter.postSST(DataStore.getDataElements(), envName, envId, DataStore.getSSTDownStream(), evtName, evtId).catch(err => {
|
|
133
|
+
Reporter.reportError('l::postSST', err);
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
DataStore.setTagManagerProcessing(false);
|
|
138
|
+
Utils.sleep(250).then(async () => {
|
|
139
|
+
try {
|
|
140
|
+
await this.checkAndFireTM();
|
|
141
|
+
} catch (err) {
|
|
142
|
+
Reporter.reportError('i::runTM', err);
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
static setCustomerInfo(customerInfo) {
|
|
148
|
+
this.customerInfo = customerInfo;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
static recordPageLoad(pageLoadInfo) {
|
|
152
|
+
pageLoadInfo.is_entry = this.firstAppLaunch ? 1 : 0;
|
|
153
|
+
|
|
154
|
+
if (this.customerInfo) {
|
|
155
|
+
const newPayload = { ...pageLoadInfo,
|
|
156
|
+
...this.customerInfo
|
|
157
|
+
};
|
|
158
|
+
this.dl.pushEvent('page_load', newPayload);
|
|
159
|
+
} else {
|
|
160
|
+
this.dl.pushEvent('page_load', pageLoadInfo);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
this.firstAppLaunch = false;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
_defineProperty(MagicPixelImpl, "dl", void 0);
|
|
169
|
+
|
|
170
|
+
_defineProperty(MagicPixelImpl, "customerInfo", void 0);
|
|
171
|
+
|
|
172
|
+
_defineProperty(MagicPixelImpl, "firstAppLaunch", true);
|
|
173
|
+
|
|
174
|
+
export const MagicPixelEventBus = EventBus;
|
|
175
|
+
export const MagicPixel = MagicPixelImpl;
|
|
176
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["MpDataLayerHelper","DataStore","Logger","Reporter","DataElementProcessor","TagProcessor","Utils","QcProcessor","NetworkService","EventBus","VisitIdProcessor","MagicPixelImpl","init","options","dl","refreshClientSdkJson","isDataStoreReady","Error","sdk","getClientSdk","MagicPixelEventBus","on","evtName","payload","console","log","JSON","stringify","eventName","eventDataModel","model","eventId","logDbg","mpDlE","indexOf","enQueueTMFire","checkAndFireTM","recordEvent","customerInfo","newPayload","pushEvent","ready","isTagManagerProcessing","item","deQueueTMFire","name","dcrName","dcrPayload","runTM","sseOnly","err","logError","reportError","triggerName","evtId","eventData","setTagManagerProcessing","processDataElements","getSdkDataElements","pcKey","getSdkPcKey","pcVal","getDataElementValue","setPrivacyCompliance","getSdkPageLangKey","setDataElement","setPageLang","getOperatingSystem","toLowerCase","initReporter","s","ev","ev_id","getDeviceType","getPageLang","getDeviceOs","getPageName","getClientDownStream","getCoreVersion","validQCList","processQc","getSdkQC","length","getValidQcInfo","processTags","then","_fireTM","catch","runTMErr","envName","envId","hasOneSSTTag","shouldFireSstForEvent","postSST","getDataElements","getSSTDownStream","sleep","setCustomerInfo","recordPageLoad","pageLoadInfo","is_entry","firstAppLaunch","MagicPixel"],"sources":["index.tsx"],"sourcesContent":["import { MpDataLayerHelper } from './eedl/eedl';\nimport type {\n AppCustomerInfo,\n AppPageLoad,\n MapLike,\n SdkInitOptions,\n} from './common/app-types';\nimport { DataStore } from './common/data-store';\nimport { Logger } from './common/logger';\nimport { Reporter } from './common/reporter';\nimport { DataElementProcessor } from './processors/data-element.processor';\nimport { TagProcessor } from './processors/tag.processor';\nimport { Utils } from './common/utils';\nimport { QcProcessor } from './processors/qc.processor';\nimport { NetworkService } from './common/network-service';\nimport { EventBus } from './common/event-bus';\nimport { VisitIdProcessor } from './processors/visit-id.processor';\n\nclass MagicPixelImpl {\n private static dl: MpDataLayerHelper;\n private static customerInfo: AppCustomerInfo;\n private static firstAppLaunch = true;\n\n static async init(options: SdkInitOptions): Promise<void> {\n this.dl = new MpDataLayerHelper('mpDlEvent', 'manual', 'page_load');\n\n await NetworkService.refreshClientSdkJson(options);\n\n if (!DataStore.isDataStoreReady()) {\n throw new Error('MagicPixel SDK is not ready. No tags will be processed');\n }\n\n const sdk = DataStore.getClientSdk();\n\n await VisitIdProcessor.init();\n\n MagicPixelEventBus.on('mpDlEvent', async (evtName, payload) => {\n console.log('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 (sdk.mpDlE?.indexOf(eventName) > -1) {\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 };\n this.dl.pushEvent(eventName, newPayload);\n } else {\n this.dl.pushEvent(eventName, payload);\n }\n }\n\n static ready(): void {\n this.dl.ready();\n }\n\n static async checkAndFireTM(): Promise<void> {\n try {\n if (!DataStore.isTagManagerProcessing()) {\n const item = DataStore.deQueueTMFire();\n if (item) {\n Logger.logDbg(\n 'Executing TM For: ',\n item.name,\n ', Event:: ',\n item.dcrName,\n ', Event id:: ',\n item.eventId,\n 'Payload:: ',\n item.dcrPayload\n );\n await this.runTM(\n item.sseOnly,\n item.name,\n item.dcrName,\n item.eventId,\n item.dcrPayload\n );\n }\n } else {\n Logger.logDbg(\n 'Tag Manager is processing or is not ready. This event will start after that'\n );\n }\n } catch (err) {\n Logger.logError('Error check and process tm', err);\n Reporter.reportError('m:checkAndFireTM', err);\n }\n }\n\n static async runTM(\n sseOnly: boolean,\n triggerName: string,\n evtName: string,\n evtId: string,\n eventData?: Record<string, any>\n ): Promise<void> {\n try {\n Logger.logDbg(\n 'Running:: ',\n sseOnly,\n triggerName,\n evtName,\n evtId,\n eventData\n );\n\n // set tag manager in process status\n DataStore.setTagManagerProcessing(true);\n\n // process all the data elements and cache them for this run\n await DataElementProcessor.processDataElements(\n DataStore.getSdkDataElements(),\n eventData\n );\n\n const sdk = DataStore.getClientSdk();\n\n const pcKey = DataStore.getSdkPcKey();\n if (pcKey) {\n const pcVal = DataStore.getDataElementValue(pcKey);\n if (typeof pcVal !== 'undefined' && pcVal === true) {\n Logger.logDbg('Set: PR Comp: ', true);\n DataStore.setPrivacyCompliance(true);\n } else {\n Logger.logDbg('Set: PR Comp: ', false);\n DataStore.setPrivacyCompliance(false);\n }\n } else {\n Logger.logDbg('Set: PR Comp: ', false);\n DataStore.setPrivacyCompliance(true);\n }\n\n if (DataStore.getSdkPageLangKey()) {\n DataStore.setDataElement(\n 'page_lang_key',\n DataStore.getSdkPageLangKey()\n );\n DataStore.setPageLang(\n DataStore.getDataElementValue('page_lang_key') as string\n );\n } else {\n DataStore.setDataElement('page_lang_key', null);\n }\n\n //set page_browser default data element with page_os because backend expects this\n DataStore.setDataElement(\n 'page_browser',\n DataStore.getOperatingSystem().toLowerCase()\n );\n\n Reporter.initReporter(\n sdk.s.ev,\n sdk.s.ev_id,\n DataStore.getDeviceType(),\n DataStore.getPageLang(),\n DataStore.getDeviceOs(),\n DataStore.getPageName(),\n evtName,\n evtId,\n DataStore.getClientDownStream(),\n DataStore.getCoreVersion(),\n []\n );\n\n const validQCList = QcProcessor.processQc(\n DataStore.getSdkQC(),\n evtName,\n evtId\n );\n\n if (validQCList?.length > 0) {\n Logger.logDbg('Found Valid QCs to process', DataStore.getValidQcInfo());\n\n TagProcessor.processTags(evtName, evtId)\n .then(() => {\n this._fireTM(sdk.s.ev, sdk.s.ev_id, evtName, evtId);\n })\n .catch((err) => {\n Logger.logError('Error processing tag lists.', err);\n Reporter.reportError('i::processTags', err);\n this._fireTM(sdk.s.ev, sdk.s.ev_id, evtName, evtId);\n });\n }\n } catch (runTMErr) {\n Logger.logError('Error in runTM', runTMErr);\n Reporter.reportError('m::runTM', runTMErr);\n }\n }\n\n static _fireTM(\n envName: string,\n envId: string,\n evtName: string,\n evtId: string\n ): void {\n if (DataStore.hasOneSSTTag() && DataStore.shouldFireSstForEvent(evtName)) {\n Reporter.postSST(\n DataStore.getDataElements(),\n envName,\n envId,\n DataStore.getSSTDownStream(),\n evtName,\n evtId\n ).catch((err: any) => {\n Reporter.reportError('l::postSST', err);\n });\n }\n\n DataStore.setTagManagerProcessing(false);\n Utils.sleep(250).then(async () => {\n try {\n await this.checkAndFireTM();\n } catch (err) {\n Reporter.reportError('i::runTM', err);\n }\n });\n }\n\n static setCustomerInfo(customerInfo: AppCustomerInfo): void {\n this.customerInfo = customerInfo;\n }\n\n static 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 };\n this.dl.pushEvent('page_load', newPayload);\n } else {\n this.dl.pushEvent('page_load', pageLoadInfo);\n }\n this.firstAppLaunch = false;\n }\n}\n\nexport const MagicPixelEventBus = EventBus;\nexport const MagicPixel = MagicPixelImpl;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export let ParamResourceEncodingType;
|
|
2
|
+
|
|
3
|
+
(function (ParamResourceEncodingType) {
|
|
4
|
+
ParamResourceEncodingType["URL_ENC"] = "URL_ENC";
|
|
5
|
+
ParamResourceEncodingType["BASE64"] = "BASE64";
|
|
6
|
+
})(ParamResourceEncodingType || (ParamResourceEncodingType = {}));
|
|
7
|
+
|
|
8
|
+
export let ParamResourceHashType;
|
|
9
|
+
|
|
10
|
+
(function (ParamResourceHashType) {
|
|
11
|
+
ParamResourceHashType["SHA256"] = "SHA256";
|
|
12
|
+
ParamResourceHashType["SHA512"] = "SHA512";
|
|
13
|
+
})(ParamResourceHashType || (ParamResourceHashType = {}));
|
|
14
|
+
|
|
15
|
+
export let ParamResourceValSrc;
|
|
16
|
+
|
|
17
|
+
(function (ParamResourceValSrc) {
|
|
18
|
+
ParamResourceValSrc["STATIC"] = "STATIC";
|
|
19
|
+
ParamResourceValSrc["DE"] = "DE";
|
|
20
|
+
ParamResourceValSrc["TRANS_FUNC"] = "TRANS_FUNC";
|
|
21
|
+
ParamResourceValSrc["CHILDREN"] = "CHILDREN";
|
|
22
|
+
ParamResourceValSrc["TG_JSON_PATH"] = "TG_JSON_PATH";
|
|
23
|
+
})(ParamResourceValSrc || (ParamResourceValSrc = {}));
|
|
24
|
+
//# sourceMappingURL=mp-client-sdk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ParamResourceEncodingType","ParamResourceHashType","ParamResourceValSrc"],"sources":["mp-client-sdk.ts"],"sourcesContent":["import type { MapLike } from '../common/app-types';\n\nexport interface ClientSdkDeItem {\n nm: string;\n typ: string;\n key?: string;\n def?: any;\n cl?: boolean;\n lwcase?: boolean;\n fn?: (deHelper: any, input: any) => any;\n isAsync?: boolean;\n fnTOut?: number;\n}\n\nexport enum ParamResourceEncodingType {\n URL_ENC = 'URL_ENC',\n BASE64 = 'BASE64',\n}\n\nexport enum ParamResourceHashType {\n SHA256 = 'SHA256',\n SHA512 = 'SHA512',\n}\n\nexport enum ParamResourceValSrc {\n STATIC = 'STATIC',\n DE = 'DE',\n TRANS_FUNC = 'TRANS_FUNC',\n CHILDREN = 'CHILDREN',\n TG_JSON_PATH = 'TG_JSON_PATH',\n}\n\nexport interface SdkParamEncodingTransformer {\n nm: string;\n eTyp: 'URL_ENC' | 'BASE64';\n o?: number;\n}\n\nexport interface SdkParamHashingTransformer {\n nm: string;\n hTyp: ParamResourceHashType;\n o?: number;\n}\n\nexport interface SdkParamIgnoreEmptyTransformer {\n nm: string;\n igEmpty: boolean;\n o?: number; // order\n}\n\nexport type TFType = (\n | SdkParamHashingTransformer\n | SdkParamEncodingTransformer\n | SdkParamIgnoreEmptyTransformer\n)[];\n\nexport interface ClientSdkParamItem {\n id: string; // id\n nm: string; // name\n rqd?: boolean; // is mandatory\n tf?: TFType; // transformation array\n prLvl?: boolean; // is provider level attribute\n pId?: string; // parent id\n sv?: string; // static value\n de?: string; // data element id\n tfId?: string; // transformation function id\n children?: ClientSdkParamItem[];\n exclude_from_req_body?: boolean;\n fKey: string; // flat key\n val_src: string;\n}\n\nexport interface ClientSdkQcCondition {\n param: string; // param name\n i?: string[]; // include conditions\n e?: string[]; // exclude conditions\n i_ect: boolean; // is exact match for include\n i_cs?: boolean; // is case-sensitive for include\n e_ect?: boolean; // is exact match for exclude\n e_cs?: boolean; // is case-sensitive for exclude\n}\n\nexport interface ClientSdkPrItem {\n nm: string;\n url?: string; // base url\n typ: string; // js or img provider\n sTyp: string; // r or i sub type\n rParams?: MapLike<ClientSdkParamItem>; // parameters\n hrs?: MapLike<string>; // headers\n ext?: string; // sdk extras joined into a string\n src?: string; // src of the sdk\n sync?: boolean; // should be loaded sync or async\n pr: string; // whitelisted or black listed\n chld?: boolean; // has at least one parameter whose val_src is CHILDREN\n}\n\nexport interface ClientSdkTfnItem {\n nm: string; // name\n fn: (input: any) => any; // js function in case this is a jsv data element\n rParams: MapLike<ClientSdkParamItem>; // parameters\n}\n\nexport interface ClientSdkQcItem {\n nm: string;\n id: string;\n c: ClientSdkQcCondition[];\n}\n\nexport interface ClientSdkTagItem {\n nm: string; // name\n p: string; // provider id\n url: string; // tag url\n rParams?: MapLike<ClientSdkParamItem>;\n st: number; // start time - in epoch seconds\n ex: number; // expiry time - in epoch seconds\n qc: string[];\n img?: boolean; // is image tag\n wrk?: boolean; // is web worker compatible\n chld?: boolean; // has at least one parameter whose val_src is CHILDREN\n}\n\nexport interface ClientSdkSettingsItem {\n dbg: boolean; // debug_enabled\n err: boolean; // error_enabled\n c_dom: string; // default cookie domain\n v_dur: number; // visit duration\n c_url: string; // collector_url\n bare_c_url?: string; // bare collector url - transient variable\n wh_idl?: string[]; // list of whitelisted idl events\n wh_domains?: string[]; // list of white listed domains\n c_url_lkp?: MapLike<{ v: string; ig: boolean; ect: boolean }>; // collector url look up\n v_id: string; // vendor_id\n p_id: string; // project_id\n ev: string; // environment\n ev_id: string; // environment id\n dly: number; // trigger_delay\n sst: boolean; // should enable server side. this will be set to true if there is atleast one sever side tag defined\n idl: boolean; // should enable ID Link service. this will be set to true if the vendor has ID Link enabled\n c_typ?: string; // the type of CSP, example nonce.\n c_src?: string; // the source of CSP, example meta_tag for nonce type.\n c_key?: string; // the data for CSP.\n v: string; // core sdk version\n bld_dt: string; // sdk build date and time from MP - this is not for the core sdk\n p_view?: boolean; // should fire page info call or not to metrics\n dws_c_t: 'j' | 'n'; // client side down stream (j = java, n = node)\n dws_s_t: 'j' | 'n'; // server side down stream (j = java, n = node)\n}\n\nexport interface BaseResourceParamType {\n id: string; // id of param\n nm: string; // name\n o?: number; // order\n pId?: string; // parent id\n children?: BaseResourceParamType[];\n}\n\nexport interface MpClientSdk {\n langKey: string; // language data element id\n pcKey: string; // privacy compliance key\n cDomKey?: string; // collector domain tfn key\n domWListKey?: string; // domain white list tfn function\n d: MapLike<ClientSdkDeItem>; // data element map\n qc?: ClientSdkQcItem[]; // qualification criteria\n t?: MapLike<ClientSdkTagItem>; // tag map\n p?: MapLike<ClientSdkPrItem>; // provider map\n tfn?: MapLike<ClientSdkTfnItem>; // list of transformation functions\n s: ClientSdkSettingsItem; // settings data item\n dtmE: string[]; // list of dtm direct call events magic pixel should be interested in\n ctmE: string[]; // list of custom javascript event magic pixel should be interested in\n mpDlE: string[]; // list of MagicPixel data layer event magic pixel should be interested in\n sseDtmE: string[]; // list of server side dtm events that we should trigger sst tag\n sseCtmE: string[]; // list of custom window events that we should trigger sst tag\n sseMpDlE: string[]; // list of mp dl events that should trigger the sst tag\n}\n"],"mappings":"AAcA,WAAYA,yBAAZ;;WAAYA,yB;EAAAA,yB;EAAAA,yB;GAAAA,yB,KAAAA,yB;;AAKZ,WAAYC,qBAAZ;;WAAYA,qB;EAAAA,qB;EAAAA,qB;GAAAA,qB,KAAAA,qB;;AAKZ,WAAYC,mBAAZ;;WAAYA,mB;EAAAA,mB;EAAAA,mB;EAAAA,mB;EAAAA,mB;EAAAA,mB;GAAAA,mB,KAAAA,mB"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Process data element of type url parameter
|
|
3
|
+
* @param de
|
|
4
|
+
*/
|
|
5
|
+
import { Utils } from '../common/utils';
|
|
6
|
+
import { DataStore } from '../common/data-store';
|
|
7
|
+
import { Logger } from '../common/logger';
|
|
8
|
+
|
|
9
|
+
const deJsvTimeOutPromise = function () {
|
|
10
|
+
let ms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 2000;
|
|
11
|
+
return new Promise((_resolve, reject) => {
|
|
12
|
+
const id = setTimeout(() => {
|
|
13
|
+
clearTimeout(id);
|
|
14
|
+
reject('Timed out in ' + ms + 'ms.');
|
|
15
|
+
}, ms);
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
const dElemProcessors = {
|
|
20
|
+
mpdl: (helper, elem, eventData) => {
|
|
21
|
+
return processMpDl(helper, elem, eventData);
|
|
22
|
+
},
|
|
23
|
+
pg_os: (_helper, _elem, _eventData) => {
|
|
24
|
+
// already browser is in lower case, so no need to do it again
|
|
25
|
+
return DataStore.getOperatingSystem();
|
|
26
|
+
},
|
|
27
|
+
visit_id: (_helper, _elem, _eventData) => {
|
|
28
|
+
return DataStore.getVisitId();
|
|
29
|
+
},
|
|
30
|
+
pg_dtype: (_helper, _elem) => {
|
|
31
|
+
return DataStore.getDeviceType();
|
|
32
|
+
},
|
|
33
|
+
pg_random: (_helper, _elem, _eventData) => {
|
|
34
|
+
return Utils.getUniqueID();
|
|
35
|
+
},
|
|
36
|
+
pg_empty_val: (_helper, _elem, _eventData) => {
|
|
37
|
+
return '';
|
|
38
|
+
},
|
|
39
|
+
mp_dvc_id: (_helper, _elem, _eventData) => {
|
|
40
|
+
return DataStore.getDeviceId();
|
|
41
|
+
},
|
|
42
|
+
mp_vis_id: (_helper, _elem, _eventData) => {
|
|
43
|
+
return DataStore.getMpId();
|
|
44
|
+
},
|
|
45
|
+
mp_org_id: (_helper, _elem, _eventData) => {
|
|
46
|
+
return DataStore.getOrgId();
|
|
47
|
+
},
|
|
48
|
+
mp_c_sdk_v: (_helper, _elem, _eventData) => {
|
|
49
|
+
return DataStore.getCoreVersion();
|
|
50
|
+
},
|
|
51
|
+
mp_c_sdk_env: (_helper, _elem, _eventData) => {
|
|
52
|
+
return DataStore.getMpEnv();
|
|
53
|
+
},
|
|
54
|
+
pg_mp_dl_evt_id: (_helper, _elem, _eventData) => {
|
|
55
|
+
_elem.key = 'ev._id';
|
|
56
|
+
return processMpDl(_helper, _elem, _eventData);
|
|
57
|
+
},
|
|
58
|
+
pg_mp_dl_evt_ts: (_helper, _elem, _eventData) => {
|
|
59
|
+
_elem.key = 'ev._tsMs';
|
|
60
|
+
return processMpDl(_helper, _elem, _eventData);
|
|
61
|
+
},
|
|
62
|
+
pg_mp_dl_evt_name: (_helper, _elem, _eventData) => {
|
|
63
|
+
_elem.key = 'ev._eventName';
|
|
64
|
+
return processMpDl(_helper, _elem, _eventData);
|
|
65
|
+
},
|
|
66
|
+
jsv: async (helper, elem, _eventData) => {
|
|
67
|
+
try {
|
|
68
|
+
if (elem.fn) {
|
|
69
|
+
if (!elem.isAsync) {
|
|
70
|
+
return await elem.fn(helper, undefined);
|
|
71
|
+
} else {
|
|
72
|
+
return await Promise.race([elem.fn(helper, undefined), deJsvTimeOutPromise(elem.fnTOut || undefined)]);
|
|
73
|
+
}
|
|
74
|
+
} else {
|
|
75
|
+
return elem.def || undefined;
|
|
76
|
+
}
|
|
77
|
+
} catch (err) {
|
|
78
|
+
Logger.logError(err);
|
|
79
|
+
return elem.def || undefined;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
function generalCleanAndEscape(helper, de, val) {
|
|
85
|
+
if (typeof de.fn === 'function') {
|
|
86
|
+
val = de.fn(helper, val);
|
|
87
|
+
return val;
|
|
88
|
+
} else {
|
|
89
|
+
if (typeof val === 'string') {
|
|
90
|
+
// clean
|
|
91
|
+
if (de.cl) {
|
|
92
|
+
var _val;
|
|
93
|
+
|
|
94
|
+
val = (_val = val) === null || _val === void 0 ? void 0 : _val.trim(); // see if it has a single quote or double quote, if so, escape it
|
|
95
|
+
|
|
96
|
+
if (val.indexOf(`'`) > -1) {
|
|
97
|
+
val = val.replace(/'/g, '');
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (val.indexOf(`"`) > -1) {
|
|
101
|
+
val = val.replace(/"/g, '');
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
if (de.lwcase) {
|
|
106
|
+
var _val2;
|
|
107
|
+
|
|
108
|
+
val = (_val2 = val) === null || _val2 === void 0 ? void 0 : _val2.toLowerCase();
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return val;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
function processMpDl(helper, de, eventData) {
|
|
117
|
+
try {
|
|
118
|
+
if (de.key) {
|
|
119
|
+
if (eventData && typeof eventData[de.key] !== 'undefined') {
|
|
120
|
+
return generalCleanAndEscape(helper, de, eventData[de.key]);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
} catch (err) {
|
|
124
|
+
Logger.logError('Error processing mp dl variable: ', err);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
return generalCleanAndEscape(helper, de, de.def);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
export class DataElementProcessor {
|
|
131
|
+
/**
|
|
132
|
+
* Process all the data elements at once, or if a set of keys are specified, processes only
|
|
133
|
+
* those keys and updates the dataElements object in global-fns file
|
|
134
|
+
* @param sdkDataElements
|
|
135
|
+
* @param eventData
|
|
136
|
+
* @param optDeKeys
|
|
137
|
+
*/
|
|
138
|
+
static async processDataElements(sdkDataElements, eventData, optDeKeys) {
|
|
139
|
+
const de = DataStore.getDataElements();
|
|
140
|
+
const deKeys = optDeKeys && optDeKeys.length > 0 ? optDeKeys : Object.keys(sdkDataElements);
|
|
141
|
+
|
|
142
|
+
try {
|
|
143
|
+
const deHelper = DataStore.getDataElementHelpers();
|
|
144
|
+
|
|
145
|
+
for (const key of deKeys) {
|
|
146
|
+
try {
|
|
147
|
+
const deItem = sdkDataElements[key];
|
|
148
|
+
|
|
149
|
+
if (deItem) {
|
|
150
|
+
const invokeItem = dElemProcessors[deItem.typ];
|
|
151
|
+
|
|
152
|
+
if (dElemProcessors[deItem.typ]) {
|
|
153
|
+
Logger.logDbg('Processing data element: ', deItem.nm);
|
|
154
|
+
|
|
155
|
+
if (invokeItem) {
|
|
156
|
+
de[key] = await invokeItem(deHelper, deItem, eventData);
|
|
157
|
+
}
|
|
158
|
+
} else {
|
|
159
|
+
Logger.logError('No processor found for de typ: ', deItem.typ);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
} catch (err) {
|
|
163
|
+
Logger.logError('Error processing data element: ', key, ' with error: ', err);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
} catch (err) {
|
|
167
|
+
Logger.logError('Error processing data elements: ', err);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
DataStore.setDataElements(de);
|
|
171
|
+
Logger.logDbg('Data Elements: ', de);
|
|
172
|
+
return de;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=data-element.processor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Utils","DataStore","Logger","deJsvTimeOutPromise","ms","Promise","_resolve","reject","id","setTimeout","clearTimeout","dElemProcessors","mpdl","helper","elem","eventData","processMpDl","pg_os","_helper","_elem","_eventData","getOperatingSystem","visit_id","getVisitId","pg_dtype","getDeviceType","pg_random","getUniqueID","pg_empty_val","mp_dvc_id","getDeviceId","mp_vis_id","getMpId","mp_org_id","getOrgId","mp_c_sdk_v","getCoreVersion","mp_c_sdk_env","getMpEnv","pg_mp_dl_evt_id","key","pg_mp_dl_evt_ts","pg_mp_dl_evt_name","jsv","fn","isAsync","undefined","race","fnTOut","def","err","logError","generalCleanAndEscape","de","val","cl","trim","indexOf","replace","lwcase","toLowerCase","DataElementProcessor","processDataElements","sdkDataElements","optDeKeys","getDataElements","deKeys","length","Object","keys","deHelper","getDataElementHelpers","deItem","invokeItem","typ","logDbg","nm","setDataElements"],"sources":["data-element.processor.ts"],"sourcesContent":["/**\n * Process data element of type url parameter\n * @param de\n */\nimport { Utils } from '../common/utils';\nimport type { DeJsvHelper, MapLike } from '../common/app-types';\nimport type { ClientSdkDeItem } from '../models/mp-client-sdk';\nimport { DataStore } from '../common/data-store';\nimport { Logger } from '../common/logger';\n\nconst deJsvTimeOutPromise = (ms = 2000): Promise<any> => {\n return new Promise((_resolve, reject) => {\n const id = setTimeout(() => {\n clearTimeout(id);\n reject('Timed out in ' + ms + 'ms.');\n }, ms);\n });\n};\n\nconst dElemProcessors: MapLike<\n (\n helper: DeJsvHelper,\n elem: ClientSdkDeItem,\n eventData?: Record<string, any>\n ) => any\n> = {\n mpdl: (\n helper: DeJsvHelper,\n elem: ClientSdkDeItem,\n eventData?: Record<string, any>\n ): any => {\n return processMpDl(helper, elem, eventData);\n },\n pg_os: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n // already browser is in lower case, so no need to do it again\n return DataStore.getOperatingSystem();\n },\n visit_id: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return DataStore.getVisitId();\n },\n pg_dtype: (_helper: DeJsvHelper, _elem: ClientSdkDeItem): any => {\n return DataStore.getDeviceType();\n },\n pg_random: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return Utils.getUniqueID();\n },\n pg_empty_val: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return '';\n },\n mp_dvc_id: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return DataStore.getDeviceId();\n },\n mp_vis_id: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return DataStore.getMpId();\n },\n mp_org_id: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return DataStore.getOrgId();\n },\n mp_c_sdk_v: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return DataStore.getCoreVersion();\n },\n mp_c_sdk_env: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n return DataStore.getMpEnv();\n },\n pg_mp_dl_evt_id: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n _elem.key = 'ev._id';\n return processMpDl(_helper, _elem, _eventData);\n },\n pg_mp_dl_evt_ts: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n _elem.key = 'ev._tsMs';\n return processMpDl(_helper, _elem, _eventData);\n },\n pg_mp_dl_evt_name: (\n _helper: DeJsvHelper,\n _elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): any => {\n _elem.key = 'ev._eventName';\n return processMpDl(_helper, _elem, _eventData);\n },\n jsv: async (\n helper: DeJsvHelper,\n elem: ClientSdkDeItem,\n _eventData?: Record<string, any>\n ): Promise<any> => {\n try {\n if (elem.fn) {\n if (!elem.isAsync) {\n return await elem.fn(helper, undefined);\n } else {\n return await Promise.race([\n elem.fn(helper, undefined),\n deJsvTimeOutPromise(elem.fnTOut || undefined),\n ]);\n }\n } else {\n return elem.def || undefined;\n }\n } catch (err) {\n Logger.logError(err);\n return elem.def || undefined;\n }\n },\n};\n\nfunction generalCleanAndEscape(\n helper: DeJsvHelper,\n de: ClientSdkDeItem,\n val: any\n): string {\n if (typeof de.fn === 'function') {\n val = de.fn(helper, val);\n return val;\n } else {\n if (typeof val === 'string') {\n // clean\n if (de.cl) {\n val = val?.trim();\n // see if it has a single quote or double quote, if so, escape it\n if (val.indexOf(`'`) > -1) {\n val = val.replace(/'/g, '');\n }\n\n if (val.indexOf(`\"`) > -1) {\n val = val.replace(/\"/g, '');\n }\n }\n if (de.lwcase) {\n val = val?.toLowerCase();\n }\n }\n return val;\n }\n}\n\nfunction processMpDl(\n helper: DeJsvHelper,\n de: ClientSdkDeItem,\n eventData?: Record<string, any>\n): any {\n try {\n if (de.key) {\n if (eventData && typeof eventData[de.key] !== 'undefined') {\n return generalCleanAndEscape(helper, de, eventData[de.key]);\n }\n }\n } catch (err) {\n Logger.logError('Error processing mp dl variable: ', err);\n }\n return generalCleanAndEscape(helper, de, de.def);\n}\n\nexport class DataElementProcessor {\n /**\n * Process all the data elements at once, or if a set of keys are specified, processes only\n * those keys and updates the dataElements object in global-fns file\n * @param sdkDataElements\n * @param eventData\n * @param optDeKeys\n */\n static async processDataElements(\n sdkDataElements: MapLike<ClientSdkDeItem>,\n eventData?: Record<string, any>,\n optDeKeys?: string[]\n ): Promise<MapLike<any>> {\n const de = DataStore.getDataElements();\n const deKeys =\n optDeKeys && optDeKeys.length > 0\n ? optDeKeys\n : Object.keys(sdkDataElements);\n\n try {\n const deHelper = DataStore.getDataElementHelpers();\n for (const key of deKeys) {\n try {\n const deItem = sdkDataElements[key];\n if (deItem) {\n const invokeItem = dElemProcessors[deItem.typ];\n if (dElemProcessors[deItem.typ]) {\n Logger.logDbg('Processing data element: ', deItem.nm);\n if (invokeItem) {\n de[key] = await invokeItem(deHelper, deItem, eventData);\n }\n } else {\n Logger.logError('No processor found for de typ: ', deItem.typ);\n }\n }\n } catch (err) {\n Logger.logError(\n 'Error processing data element: ',\n key,\n ' with error: ',\n err\n );\n }\n }\n } catch (err) {\n Logger.logError('Error processing data elements: ', err);\n }\n\n DataStore.setDataElements(de);\n Logger.logDbg('Data Elements: ', de);\n return de;\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { DataStore } from '../common/data-store';
|
|
2
|
+
import { Logger } from '../common/logger';
|
|
3
|
+
import { Utils } from '../common/utils';
|
|
4
|
+
import { Constants } from '../common/constants';
|
|
5
|
+
import { Reporter } from '../common/reporter';
|
|
6
|
+
export class QcProcessor {
|
|
7
|
+
static processQc(sdkQc, eventName, evtId) {
|
|
8
|
+
const validQcList = [];
|
|
9
|
+
const validQcInfo = [];
|
|
10
|
+
|
|
11
|
+
try {
|
|
12
|
+
Logger.logDbg('Processing qc lists for eventId:: ', evtId);
|
|
13
|
+
|
|
14
|
+
for (const qc of sdkQc) {
|
|
15
|
+
let notMatching = true;
|
|
16
|
+
Logger.logDbg('Processing QC: ', qc.nm);
|
|
17
|
+
|
|
18
|
+
for (const qcCondition of qc.c) {
|
|
19
|
+
let deVal;
|
|
20
|
+
|
|
21
|
+
if (qcCondition.param === Constants.CUST_EVT || qcCondition.param === Constants.MP_DL_EVT) {
|
|
22
|
+
if (!eventName) {
|
|
23
|
+
// this qc has an event condition but no eventName was supplied. so it is not going to match
|
|
24
|
+
notMatching = true;
|
|
25
|
+
break;
|
|
26
|
+
} else {
|
|
27
|
+
deVal = eventName;
|
|
28
|
+
}
|
|
29
|
+
} else {
|
|
30
|
+
deVal = DataStore.getDataElementValue(qcCondition.param);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
if (typeof deVal === 'undefined' || deVal === null || deVal === '') {
|
|
34
|
+
Logger.logDbg('DE ', qcCondition.param, 'was used, but has no value. QC will not qualify');
|
|
35
|
+
notMatching = true;
|
|
36
|
+
continue;
|
|
37
|
+
} // check exclude conditions first
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
if (qcCondition.e && qcCondition.e.length > 0) {
|
|
41
|
+
if (Utils.isMatch(deVal.toString(), qcCondition.e, !qcCondition.e_cs, qcCondition.e_ect)) {
|
|
42
|
+
Logger.logDbg('QC:Exc: ', qcCondition.param, ' did not qualify. QC: ', qc.nm);
|
|
43
|
+
notMatching = true;
|
|
44
|
+
continue;
|
|
45
|
+
} else {
|
|
46
|
+
notMatching = false;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (qcCondition.i && qcCondition.i.length > 0) {
|
|
51
|
+
if (!Utils.isMatch(deVal.toString(), qcCondition.i, !qcCondition.i_cs, qcCondition.i_ect)) {
|
|
52
|
+
Logger.logDbg('QC:Inc: ', qcCondition.param, ' did not qualify. QC: ', qc.nm);
|
|
53
|
+
notMatching = true;
|
|
54
|
+
break;
|
|
55
|
+
} else {
|
|
56
|
+
notMatching = false;
|
|
57
|
+
}
|
|
58
|
+
} else {
|
|
59
|
+
// if there is no qc, auto include
|
|
60
|
+
notMatching = false;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (!notMatching) {
|
|
65
|
+
validQcList.push(qc.id);
|
|
66
|
+
validQcInfo.push({
|
|
67
|
+
id: qc.id,
|
|
68
|
+
nm: qc.nm,
|
|
69
|
+
st: true
|
|
70
|
+
});
|
|
71
|
+
} else {
|
|
72
|
+
validQcInfo.push({
|
|
73
|
+
id: qc.id,
|
|
74
|
+
nm: qc.nm,
|
|
75
|
+
st: false
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
} catch (err) {
|
|
80
|
+
Logger.logDbg('Error processing qc criteria: ', err);
|
|
81
|
+
Reporter.reportError('m:processQC', err);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
Logger.logDbg('QC Status: ', validQcInfo);
|
|
85
|
+
DataStore.setValidQc(validQcList, validQcInfo);
|
|
86
|
+
return validQcList;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=qc.processor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["DataStore","Logger","Utils","Constants","Reporter","QcProcessor","processQc","sdkQc","eventName","evtId","validQcList","validQcInfo","logDbg","qc","notMatching","nm","qcCondition","c","deVal","param","CUST_EVT","MP_DL_EVT","getDataElementValue","e","length","isMatch","toString","e_cs","e_ect","i","i_cs","i_ect","push","id","st","err","reportError","setValidQc"],"sources":["qc.processor.ts"],"sourcesContent":["import { DataStore } from '../common/data-store';\nimport { Logger } from '../common/logger';\nimport { Utils } from '../common/utils';\nimport type { ClientSdkQcItem } from '../models/mp-client-sdk';\nimport { Constants } from '../common/constants';\nimport { Reporter } from '../common/reporter';\n\nexport class QcProcessor {\n static processQc(\n sdkQc: ClientSdkQcItem[],\n eventName: string,\n evtId: string\n ): string[] {\n const validQcList: string[] = [];\n const validQcInfo: Array<{ nm: string; id: string; st: boolean }> = [];\n try {\n Logger.logDbg('Processing qc lists for eventId:: ', evtId);\n for (const qc of sdkQc) {\n let notMatching = true;\n Logger.logDbg('Processing QC: ', qc.nm);\n\n for (const qcCondition of qc.c) {\n let deVal: string | number | boolean;\n\n if (\n qcCondition.param === Constants.CUST_EVT ||\n qcCondition.param === Constants.MP_DL_EVT\n ) {\n if (!eventName) {\n // this qc has an event condition but no eventName was supplied. so it is not going to match\n notMatching = true;\n break;\n } else {\n deVal = eventName;\n }\n } else {\n deVal = DataStore.getDataElementValue(qcCondition.param);\n }\n\n if (typeof deVal === 'undefined' || deVal === null || deVal === '') {\n Logger.logDbg(\n 'DE ',\n qcCondition.param,\n 'was used, but has no value. QC will not qualify'\n );\n notMatching = true;\n continue;\n }\n\n // check exclude conditions first\n if (qcCondition.e && qcCondition.e.length > 0) {\n if (\n Utils.isMatch(\n deVal.toString(),\n qcCondition.e,\n !qcCondition.e_cs,\n qcCondition.e_ect\n )\n ) {\n Logger.logDbg(\n 'QC:Exc: ',\n qcCondition.param,\n ' did not qualify. QC: ',\n qc.nm\n );\n notMatching = true;\n continue;\n } else {\n notMatching = false;\n }\n }\n\n if (qcCondition.i && qcCondition.i.length > 0) {\n if (\n !Utils.isMatch(\n deVal.toString(),\n qcCondition.i,\n !qcCondition.i_cs,\n qcCondition.i_ect\n )\n ) {\n Logger.logDbg(\n 'QC:Inc: ',\n qcCondition.param,\n ' did not qualify. QC: ',\n qc.nm\n );\n notMatching = true;\n break;\n } else {\n notMatching = false;\n }\n } else {\n // if there is no qc, auto include\n notMatching = false;\n }\n }\n\n if (!notMatching) {\n validQcList.push(qc.id);\n validQcInfo.push({ id: qc.id, nm: qc.nm, st: true });\n } else {\n validQcInfo.push({ id: qc.id, nm: qc.nm, st: false });\n }\n }\n } catch (err) {\n Logger.logDbg('Error processing qc criteria: ', err);\n Reporter.reportError('m:processQC', err);\n }\n\n Logger.logDbg('QC Status: ', validQcInfo);\n DataStore.setValidQc(validQcList, validQcInfo);\n return validQcList;\n }\n}\n"],"mappings":"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"}
|