@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.
Files changed (138) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +29 -0
  3. package/lib/commonjs/common/app-types.js +6 -0
  4. package/lib/commonjs/common/app-types.js.map +1 -0
  5. package/lib/commonjs/common/constants.js +51 -0
  6. package/lib/commonjs/common/constants.js.map +1 -0
  7. package/lib/commonjs/common/data-store.js +361 -0
  8. package/lib/commonjs/common/data-store.js.map +1 -0
  9. package/lib/commonjs/common/event-bus.js +42 -0
  10. package/lib/commonjs/common/event-bus.js.map +1 -0
  11. package/lib/commonjs/common/logger.js +30 -0
  12. package/lib/commonjs/common/logger.js.map +1 -0
  13. package/lib/commonjs/common/network-service.js +90 -0
  14. package/lib/commonjs/common/network-service.js.map +1 -0
  15. package/lib/commonjs/common/reporter.js +107 -0
  16. package/lib/commonjs/common/reporter.js.map +1 -0
  17. package/lib/commonjs/common/utils.js +276 -0
  18. package/lib/commonjs/common/utils.js.map +1 -0
  19. package/lib/commonjs/coverage/clover.xml +6 -0
  20. package/lib/commonjs/coverage/coverage-final.json +1 -0
  21. package/lib/commonjs/coverage/lcov-report/base.css +224 -0
  22. package/lib/commonjs/coverage/lcov-report/block-navigation.js +83 -0
  23. package/lib/commonjs/coverage/lcov-report/block-navigation.js.map +1 -0
  24. package/lib/commonjs/coverage/lcov-report/favicon.png +0 -0
  25. package/lib/commonjs/coverage/lcov-report/index.html +101 -0
  26. package/lib/commonjs/coverage/lcov-report/prettify.css +1 -0
  27. package/lib/commonjs/coverage/lcov-report/prettify.js +995 -0
  28. package/lib/commonjs/coverage/lcov-report/prettify.js.map +1 -0
  29. package/lib/commonjs/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  30. package/lib/commonjs/coverage/lcov-report/sorter.js +212 -0
  31. package/lib/commonjs/coverage/lcov-report/sorter.js.map +1 -0
  32. package/lib/commonjs/coverage/lcov.info +0 -0
  33. package/lib/commonjs/eedl/eedl.js +262 -0
  34. package/lib/commonjs/eedl/eedl.js.map +1 -0
  35. package/lib/commonjs/index.js +214 -0
  36. package/lib/commonjs/index.js.map +1 -0
  37. package/lib/commonjs/models/mp-client-sdk.js +33 -0
  38. package/lib/commonjs/models/mp-client-sdk.js.map +1 -0
  39. package/lib/commonjs/processors/data-element.processor.js +191 -0
  40. package/lib/commonjs/processors/data-element.processor.js.map +1 -0
  41. package/lib/commonjs/processors/qc.processor.js +111 -0
  42. package/lib/commonjs/processors/qc.processor.js.map +1 -0
  43. package/lib/commonjs/processors/tag.processor.js +432 -0
  44. package/lib/commonjs/processors/tag.processor.js.map +1 -0
  45. package/lib/commonjs/processors/trans-function.processor.js +91 -0
  46. package/lib/commonjs/processors/trans-function.processor.js.map +1 -0
  47. package/lib/commonjs/processors/visit-id.processor.js +172 -0
  48. package/lib/commonjs/processors/visit-id.processor.js.map +1 -0
  49. package/lib/module/common/app-types.js +2 -0
  50. package/lib/module/common/app-types.js.map +1 -0
  51. package/lib/module/common/constants.js +41 -0
  52. package/lib/module/common/constants.js.map +1 -0
  53. package/lib/module/common/data-store.js +346 -0
  54. package/lib/module/common/data-store.js.map +1 -0
  55. package/lib/module/common/event-bus.js +31 -0
  56. package/lib/module/common/event-bus.js.map +1 -0
  57. package/lib/module/common/logger.js +21 -0
  58. package/lib/module/common/logger.js.map +1 -0
  59. package/lib/module/common/network-service.js +73 -0
  60. package/lib/module/common/network-service.js.map +1 -0
  61. package/lib/module/common/reporter.js +88 -0
  62. package/lib/module/common/reporter.js.map +1 -0
  63. package/lib/module/common/utils.js +263 -0
  64. package/lib/module/common/utils.js.map +1 -0
  65. package/lib/module/coverage/clover.xml +6 -0
  66. package/lib/module/coverage/coverage-final.json +1 -0
  67. package/lib/module/coverage/lcov-report/base.css +224 -0
  68. package/lib/module/coverage/lcov-report/block-navigation.js +81 -0
  69. package/lib/module/coverage/lcov-report/block-navigation.js.map +1 -0
  70. package/lib/module/coverage/lcov-report/favicon.png +0 -0
  71. package/lib/module/coverage/lcov-report/index.html +101 -0
  72. package/lib/module/coverage/lcov-report/prettify.css +1 -0
  73. package/lib/module/coverage/lcov-report/prettify.js +993 -0
  74. package/lib/module/coverage/lcov-report/prettify.js.map +1 -0
  75. package/lib/module/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  76. package/lib/module/coverage/lcov-report/sorter.js +210 -0
  77. package/lib/module/coverage/lcov-report/sorter.js.map +1 -0
  78. package/lib/module/coverage/lcov.info +0 -0
  79. package/lib/module/eedl/eedl.js +246 -0
  80. package/lib/module/eedl/eedl.js.map +1 -0
  81. package/lib/module/index.js +176 -0
  82. package/lib/module/index.js.map +1 -0
  83. package/lib/module/models/mp-client-sdk.js +24 -0
  84. package/lib/module/models/mp-client-sdk.js.map +1 -0
  85. package/lib/module/processors/data-element.processor.js +176 -0
  86. package/lib/module/processors/data-element.processor.js.map +1 -0
  87. package/lib/module/processors/qc.processor.js +90 -0
  88. package/lib/module/processors/qc.processor.js.map +1 -0
  89. package/lib/module/processors/tag.processor.js +396 -0
  90. package/lib/module/processors/tag.processor.js.map +1 -0
  91. package/lib/module/processors/trans-function.processor.js +73 -0
  92. package/lib/module/processors/trans-function.processor.js.map +1 -0
  93. package/lib/module/processors/visit-id.processor.js +144 -0
  94. package/lib/module/processors/visit-id.processor.js.map +1 -0
  95. package/lib/typescript/common/app-types.d.ts +101 -0
  96. package/lib/typescript/common/constants.d.ts +21 -0
  97. package/lib/typescript/common/data-store.d.ts +81 -0
  98. package/lib/typescript/common/event-bus.d.ts +6 -0
  99. package/lib/typescript/common/logger.d.ts +5 -0
  100. package/lib/typescript/common/network-service.d.ts +8 -0
  101. package/lib/typescript/common/reporter.d.ts +12 -0
  102. package/lib/typescript/common/utils.d.ts +38 -0
  103. package/lib/typescript/eedl/eedl.d.ts +46 -0
  104. package/lib/typescript/index.d.ts +18 -0
  105. package/lib/typescript/models/mp-client-sdk.d.ts +157 -0
  106. package/lib/typescript/processors/data-element.processor.d.ts +12 -0
  107. package/lib/typescript/processors/qc.processor.d.ts +4 -0
  108. package/lib/typescript/processors/tag.processor.d.ts +27 -0
  109. package/lib/typescript/processors/trans-function.processor.d.ts +12 -0
  110. package/lib/typescript/processors/visit-id.processor.d.ts +7 -0
  111. package/package.json +170 -0
  112. package/src/common/app-types.ts +128 -0
  113. package/src/common/constants.ts +43 -0
  114. package/src/common/data-store.ts +333 -0
  115. package/src/common/event-bus.ts +35 -0
  116. package/src/common/logger.ts +19 -0
  117. package/src/common/network-service.ts +85 -0
  118. package/src/common/reporter.ts +110 -0
  119. package/src/common/utils.ts +281 -0
  120. package/src/coverage/clover.xml +6 -0
  121. package/src/coverage/coverage-final.json +1 -0
  122. package/src/coverage/lcov-report/base.css +224 -0
  123. package/src/coverage/lcov-report/block-navigation.js +87 -0
  124. package/src/coverage/lcov-report/favicon.png +0 -0
  125. package/src/coverage/lcov-report/index.html +101 -0
  126. package/src/coverage/lcov-report/prettify.css +1 -0
  127. package/src/coverage/lcov-report/prettify.js +2 -0
  128. package/src/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  129. package/src/coverage/lcov-report/sorter.js +196 -0
  130. package/src/coverage/lcov.info +0 -0
  131. package/src/eedl/eedl.ts +233 -0
  132. package/src/index.tsx +258 -0
  133. package/src/models/mp-client-sdk.ts +174 -0
  134. package/src/processors/data-element.processor.ts +249 -0
  135. package/src/processors/qc.processor.ts +115 -0
  136. package/src/processors/tag.processor.ts +527 -0
  137. package/src/processors/trans-function.processor.ts +85 -0
  138. package/src/processors/visit-id.processor.ts +164 -0
@@ -0,0 +1,31 @@
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 { Logger } from './logger';
4
+ export class EventBus {
5
+ static on(eventName, callback) {
6
+ Logger.logDbg(`Registering Listener for event: ${eventName}`);
7
+
8
+ if (!this.eventRegister.has(eventName)) {
9
+ this.eventRegister.set(eventName, [callback]);
10
+ } else {
11
+ this.eventRegister.get(eventName).push(callback);
12
+ }
13
+ }
14
+
15
+ static triggerEvent(eventName, payload) {
16
+ if (this.eventRegister.has(eventName)) {
17
+ for (const cb of this.eventRegister.get(eventName)) {
18
+ try {
19
+ Logger.logDbg(`Sending event ${eventName} to all listeners. Count = ${this.eventRegister.get(eventName).length}`);
20
+ cb(eventName, payload);
21
+ } catch (err) {
22
+ Logger.logError('Unable to process callback for event: ' + eventName);
23
+ }
24
+ }
25
+ }
26
+ }
27
+
28
+ }
29
+
30
+ _defineProperty(EventBus, "eventRegister", new Map());
31
+ //# sourceMappingURL=event-bus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Logger","EventBus","on","eventName","callback","logDbg","eventRegister","has","set","get","push","triggerEvent","payload","cb","length","err","logError","Map"],"sources":["event-bus.ts"],"sourcesContent":["import type { EventBusCallback } from './app-types';\nimport { Logger } from './logger';\n\nexport class EventBus {\n private static eventRegister: Map<string, Array<EventBusCallback>> = new Map<\n string,\n Array<EventBusCallback>\n >();\n\n static on(eventName: string, callback: EventBusCallback): void {\n Logger.logDbg(`Registering Listener for event: ${eventName}`);\n if (!this.eventRegister.has(eventName)) {\n this.eventRegister.set(eventName, [callback]);\n } else {\n this.eventRegister.get(eventName).push(callback);\n }\n }\n\n static triggerEvent(eventName: string, payload: any): void {\n if (this.eventRegister.has(eventName)) {\n for (const cb of this.eventRegister.get(eventName)) {\n try {\n Logger.logDbg(\n `Sending event ${eventName} to all listeners. Count = ${\n this.eventRegister.get(eventName).length\n }`\n );\n cb(eventName, payload);\n } catch (err) {\n Logger.logError('Unable to process callback for event: ' + eventName);\n }\n }\n }\n }\n}\n"],"mappings":";;AACA,SAASA,MAAT,QAAuB,UAAvB;AAEA,OAAO,MAAMC,QAAN,CAAe;EAMX,OAAFC,EAAE,CAACC,SAAD,EAAoBC,QAApB,EAAsD;IAC7DJ,MAAM,CAACK,MAAP,CAAe,mCAAkCF,SAAU,EAA3D;;IACA,IAAI,CAAC,KAAKG,aAAL,CAAmBC,GAAnB,CAAuBJ,SAAvB,CAAL,EAAwC;MACtC,KAAKG,aAAL,CAAmBE,GAAnB,CAAuBL,SAAvB,EAAkC,CAACC,QAAD,CAAlC;IACD,CAFD,MAEO;MACL,KAAKE,aAAL,CAAmBG,GAAnB,CAAuBN,SAAvB,EAAkCO,IAAlC,CAAuCN,QAAvC;IACD;EACF;;EAEkB,OAAZO,YAAY,CAACR,SAAD,EAAoBS,OAApB,EAAwC;IACzD,IAAI,KAAKN,aAAL,CAAmBC,GAAnB,CAAuBJ,SAAvB,CAAJ,EAAuC;MACrC,KAAK,MAAMU,EAAX,IAAiB,KAAKP,aAAL,CAAmBG,GAAnB,CAAuBN,SAAvB,CAAjB,EAAoD;QAClD,IAAI;UACFH,MAAM,CAACK,MAAP,CACG,iBAAgBF,SAAU,8BACzB,KAAKG,aAAL,CAAmBG,GAAnB,CAAuBN,SAAvB,EAAkCW,MACnC,EAHH;UAKAD,EAAE,CAACV,SAAD,EAAYS,OAAZ,CAAF;QACD,CAPD,CAOE,OAAOG,GAAP,EAAY;UACZf,MAAM,CAACgB,QAAP,CAAgB,2CAA2Cb,SAA3D;QACD;MACF;IACF;EACF;;AA9BmB;;gBAATF,Q,mBAC0D,IAAIgB,GAAJ,E"}
@@ -0,0 +1,21 @@
1
+ export class Logger {
2
+ static logDbg() {
3
+ if (console && console.log) {
4
+ console.log(...arguments);
5
+ }
6
+ }
7
+
8
+ static logWarn() {
9
+ if (console && console.warn) {
10
+ console.warn(...arguments);
11
+ }
12
+ }
13
+
14
+ static logError() {
15
+ if (console && console.error) {
16
+ console.error(...arguments);
17
+ }
18
+ }
19
+
20
+ }
21
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Logger","logDbg","console","log","logWarn","warn","logError","error"],"sources":["logger.ts"],"sourcesContent":["export class Logger {\n static logDbg(...args: any): void {\n if (console && console.log) {\n console.log(...args);\n }\n }\n\n static logWarn(...args: any): void {\n if (console && console.warn) {\n console.warn(...args);\n }\n }\n\n static logError(...args: any): void {\n if (console && console.error) {\n console.error(...args);\n }\n }\n}\n"],"mappings":"AAAA,OAAO,MAAMA,MAAN,CAAa;EACL,OAANC,MAAM,GAAqB;IAChC,IAAIC,OAAO,IAAIA,OAAO,CAACC,GAAvB,EAA4B;MAC1BD,OAAO,CAACC,GAAR,CAAY,YAAZ;IACD;EACF;;EAEa,OAAPC,OAAO,GAAqB;IACjC,IAAIF,OAAO,IAAIA,OAAO,CAACG,IAAvB,EAA6B;MAC3BH,OAAO,CAACG,IAAR,CAAa,YAAb;IACD;EACF;;EAEc,OAARC,QAAQ,GAAqB;IAClC,IAAIJ,OAAO,IAAIA,OAAO,CAACK,KAAvB,EAA8B;MAC5BL,OAAO,CAACK,KAAR,CAAc,YAAd;IACD;EACF;;AAjBiB"}
@@ -0,0 +1,73 @@
1
+ import { Logger } from './logger';
2
+ import { DataStore } from './data-store';
3
+ import { Reporter } from './reporter';
4
+ import { Utils } from './utils';
5
+ export class NetworkService {
6
+ static async fetchIdlInfo(url) {
7
+ const response = await NetworkService.sendNetworkRequest('get', url);
8
+
9
+ if (response) {
10
+ return response.json();
11
+ } else {
12
+ return null;
13
+ }
14
+ }
15
+
16
+ static async refreshClientSdkJson(sdkInitOptions) {
17
+ try {
18
+ const response = await this.sendNetworkRequest('get', `${sdkInitOptions.baseUrl}/${sdkInitOptions.projectId}${sdkInitOptions.env === 'staging' ? '-staging' : ''}.json?cb=${Utils.getUniqueID()}`);
19
+
20
+ if (response) {
21
+ const sdkJson = await response.json();
22
+ Logger.logDbg('Client Sdk:: ', sdkJson); // sdkJson.s.c_url = 'http://localhost:3001';
23
+
24
+ await DataStore.init(sdkJson);
25
+ }
26
+ } catch (err) {
27
+ Reporter.reportError('refreshClientSdk', err);
28
+ throw new Error('Unable to fetch MagicPixel SDK at this time.');
29
+ }
30
+ }
31
+
32
+ static sendPostRequest(url, body) {
33
+ this.sendNetworkRequest('post', url, body).catch(err => {
34
+ Logger.logError(err);
35
+ });
36
+ }
37
+
38
+ static sendGetRequest(url) {
39
+ this.sendNetworkRequest('get', url).catch(err => {
40
+ Logger.logError(err);
41
+ });
42
+ }
43
+
44
+ static async sendNetworkRequest(method, url, body) {
45
+ try {
46
+ Logger.logDbg(`Sending ${method} request to ${url} with body ${JSON.stringify(body)}`);
47
+
48
+ if (method === 'get') {
49
+ return await fetch(url, {
50
+ headers: {
51
+ 'cache-control': 'no-store'
52
+ }
53
+ });
54
+ } else if (method === 'post') {
55
+ return await fetch(url, {
56
+ method: 'POST',
57
+ headers: {
58
+ 'Content-Type': 'text/plain',
59
+ 'cache-control': 'no-store'
60
+ },
61
+ body: JSON.stringify(body ?? '{}')
62
+ });
63
+ } else {
64
+ throw new Error('Unsupported method: ' + method);
65
+ }
66
+ } catch (err) {
67
+ Logger.logError(err);
68
+ return null;
69
+ }
70
+ }
71
+
72
+ }
73
+ //# sourceMappingURL=network-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Logger","DataStore","Reporter","Utils","NetworkService","fetchIdlInfo","url","response","sendNetworkRequest","json","refreshClientSdkJson","sdkInitOptions","baseUrl","projectId","env","getUniqueID","sdkJson","logDbg","init","err","reportError","Error","sendPostRequest","body","catch","logError","sendGetRequest","method","JSON","stringify","fetch","headers"],"sources":["network-service.ts"],"sourcesContent":["import { Logger } from './logger';\nimport type { MapLike, SdkInitOptions, VisitorInfo } from './app-types';\nimport { DataStore } from './data-store';\nimport { Reporter } from './reporter';\nimport { Utils } from './utils';\nimport type { MpClientSdk } from '../models/mp-client-sdk';\n\nexport class NetworkService {\n public static async fetchIdlInfo(url: string): Promise<VisitorInfo> {\n const response = await NetworkService.sendNetworkRequest('get', url);\n if (response) {\n return response.json();\n } else {\n return null;\n }\n }\n\n public static async refreshClientSdkJson(\n sdkInitOptions: SdkInitOptions\n ): Promise<void> {\n try {\n const response = await this.sendNetworkRequest(\n 'get',\n `${sdkInitOptions.baseUrl}/${sdkInitOptions.projectId}${\n sdkInitOptions.env === 'staging' ? '-staging' : ''\n }.json?cb=${Utils.getUniqueID()}`\n );\n\n if (response) {\n const sdkJson: MpClientSdk = await response.json();\n Logger.logDbg('Client Sdk:: ', sdkJson);\n // sdkJson.s.c_url = 'http://localhost:3001';\n await DataStore.init(sdkJson);\n }\n } catch (err) {\n Reporter.reportError('refreshClientSdk', err);\n throw new Error('Unable to fetch MagicPixel SDK at this time.');\n }\n }\n\n public static sendPostRequest(url: string, body: MapLike): void {\n this.sendNetworkRequest('post', url, body).catch((err) => {\n Logger.logError(err);\n });\n }\n\n public static sendGetRequest(url: string): void {\n this.sendNetworkRequest('get', url).catch((err) => {\n Logger.logError(err);\n });\n }\n\n private static async sendNetworkRequest(\n method: 'get' | 'post',\n url: string,\n body?: MapLike\n ): Promise<any> {\n try {\n Logger.logDbg(\n `Sending ${method} request to ${url} with body ${JSON.stringify(body)}`\n );\n if (method === 'get') {\n return await fetch(url, {\n headers: {\n 'cache-control': 'no-store',\n },\n });\n } else if (method === 'post') {\n return await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'text/plain',\n 'cache-control': 'no-store',\n },\n body: JSON.stringify(body ?? '{}'),\n });\n } else {\n throw new Error('Unsupported method: ' + method);\n }\n } catch (err) {\n Logger.logError(err);\n return null;\n }\n }\n}\n"],"mappings":"AAAA,SAASA,MAAT,QAAuB,UAAvB;AAEA,SAASC,SAAT,QAA0B,cAA1B;AACA,SAASC,QAAT,QAAyB,YAAzB;AACA,SAASC,KAAT,QAAsB,SAAtB;AAGA,OAAO,MAAMC,cAAN,CAAqB;EACM,aAAZC,YAAY,CAACC,GAAD,EAAoC;IAClE,MAAMC,QAAQ,GAAG,MAAMH,cAAc,CAACI,kBAAf,CAAkC,KAAlC,EAAyCF,GAAzC,CAAvB;;IACA,IAAIC,QAAJ,EAAc;MACZ,OAAOA,QAAQ,CAACE,IAAT,EAAP;IACD,CAFD,MAEO;MACL,OAAO,IAAP;IACD;EACF;;EAEuC,aAApBC,oBAAoB,CACtCC,cADsC,EAEvB;IACf,IAAI;MACF,MAAMJ,QAAQ,GAAG,MAAM,KAAKC,kBAAL,CACrB,KADqB,EAEpB,GAAEG,cAAc,CAACC,OAAQ,IAAGD,cAAc,CAACE,SAAU,GACpDF,cAAc,CAACG,GAAf,KAAuB,SAAvB,GAAmC,UAAnC,GAAgD,EACjD,YAAWX,KAAK,CAACY,WAAN,EAAoB,EAJX,CAAvB;;MAOA,IAAIR,QAAJ,EAAc;QACZ,MAAMS,OAAoB,GAAG,MAAMT,QAAQ,CAACE,IAAT,EAAnC;QACAT,MAAM,CAACiB,MAAP,CAAc,eAAd,EAA+BD,OAA/B,EAFY,CAGZ;;QACA,MAAMf,SAAS,CAACiB,IAAV,CAAeF,OAAf,CAAN;MACD;IACF,CAdD,CAcE,OAAOG,GAAP,EAAY;MACZjB,QAAQ,CAACkB,WAAT,CAAqB,kBAArB,EAAyCD,GAAzC;MACA,MAAM,IAAIE,KAAJ,CAAU,8CAAV,CAAN;IACD;EACF;;EAE4B,OAAfC,eAAe,CAAChB,GAAD,EAAciB,IAAd,EAAmC;IAC9D,KAAKf,kBAAL,CAAwB,MAAxB,EAAgCF,GAAhC,EAAqCiB,IAArC,EAA2CC,KAA3C,CAAkDL,GAAD,IAAS;MACxDnB,MAAM,CAACyB,QAAP,CAAgBN,GAAhB;IACD,CAFD;EAGD;;EAE2B,OAAdO,cAAc,CAACpB,GAAD,EAAoB;IAC9C,KAAKE,kBAAL,CAAwB,KAAxB,EAA+BF,GAA/B,EAAoCkB,KAApC,CAA2CL,GAAD,IAAS;MACjDnB,MAAM,CAACyB,QAAP,CAAgBN,GAAhB;IACD,CAFD;EAGD;;EAEsC,aAAlBX,kBAAkB,CACrCmB,MADqC,EAErCrB,GAFqC,EAGrCiB,IAHqC,EAIvB;IACd,IAAI;MACFvB,MAAM,CAACiB,MAAP,CACG,WAAUU,MAAO,eAAcrB,GAAI,cAAasB,IAAI,CAACC,SAAL,CAAeN,IAAf,CAAqB,EADxE;;MAGA,IAAII,MAAM,KAAK,KAAf,EAAsB;QACpB,OAAO,MAAMG,KAAK,CAACxB,GAAD,EAAM;UACtByB,OAAO,EAAE;YACP,iBAAiB;UADV;QADa,CAAN,CAAlB;MAKD,CAND,MAMO,IAAIJ,MAAM,KAAK,MAAf,EAAuB;QAC5B,OAAO,MAAMG,KAAK,CAACxB,GAAD,EAAM;UACtBqB,MAAM,EAAE,MADc;UAEtBI,OAAO,EAAE;YACP,gBAAgB,YADT;YAEP,iBAAiB;UAFV,CAFa;UAMtBR,IAAI,EAAEK,IAAI,CAACC,SAAL,CAAeN,IAAI,IAAI,IAAvB;QANgB,CAAN,CAAlB;MAQD,CATM,MASA;QACL,MAAM,IAAIF,KAAJ,CAAU,yBAAyBM,MAAnC,CAAN;MACD;IACF,CAtBD,CAsBE,OAAOR,GAAP,EAAY;MACZnB,MAAM,CAACyB,QAAP,CAAgBN,GAAhB;MACA,OAAO,IAAP;IACD;EACF;;AA5EyB"}
@@ -0,0 +1,88 @@
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 { Logger } from './logger';
4
+ import { DataStore } from './data-store';
5
+ import { Utils } from './utils';
6
+ import { NetworkService } from './network-service';
7
+ export class Reporter {
8
+ static initReporter(envName, envId, deviceType, language, deviceOs, // device os is being used as a browser proxy
9
+ pageName, evtName, evtId, clientTagsDownStream, clientSdkVersion) {
10
+ let initialItems = arguments.length > 10 && arguments[10] !== undefined ? arguments[10] : [];
11
+ this.reportMap[evtId] = {
12
+ envName,
13
+ envId,
14
+ pname: pageName || 'none',
15
+ evt: evtName,
16
+ evtId: evtId,
17
+ bw: Utils.bwToNum(deviceOs),
18
+ dt: Utils.dtToNum(deviceType),
19
+ ln: Utils.langToNum(language),
20
+ dm: 'na',
21
+ items: initialItems || [],
22
+ dws: clientTagsDownStream,
23
+ v: clientSdkVersion,
24
+ tagCt: 0
25
+ };
26
+ }
27
+
28
+ static setExpectedTagCount(ct, evtId) {
29
+ const reportParent = this.reportMap[evtId];
30
+
31
+ if (reportParent) {
32
+ reportParent.tagCt = ct;
33
+ }
34
+ }
35
+
36
+ static reportItem(item, evtId) {
37
+ const reportParent = this.reportMap[evtId];
38
+
39
+ if (reportParent) {
40
+ var _reportParent$items, _reportParent$items2;
41
+
42
+ reportParent.items.push(item);
43
+
44
+ if ((reportParent === null || reportParent === void 0 ? void 0 : (_reportParent$items = reportParent.items) === null || _reportParent$items === void 0 ? void 0 : _reportParent$items.length) === (reportParent === null || reportParent === void 0 ? void 0 : reportParent.tagCt) && (reportParent === null || reportParent === void 0 ? void 0 : (_reportParent$items2 = reportParent.items) === null || _reportParent$items2 === void 0 ? void 0 : _reportParent$items2.length) > 0) {
45
+ Logger.logDbg('Hit expected tag count. Reporting');
46
+ this.publishReport(evtId);
47
+ }
48
+ }
49
+ }
50
+
51
+ static publishReport(evtId) {
52
+ const data = this.reportMap[evtId] || {};
53
+ const postUrl = `${DataStore.getUrlInfo().rptUrl}/${data.dws ?? 'n'}/${Utils.getUniqueID()}`;
54
+ Logger.logDbg('Posting Info: ', postUrl);
55
+ data.debugId = DataStore.getDebugId();
56
+ NetworkService.sendPostRequest(postUrl, data);
57
+ }
58
+
59
+ static reportError(methodMetaData, err) {
60
+ Logger.logDbg('Reporting...', methodMetaData, err);
61
+ const data = {
62
+ message: err === null || err === void 0 ? void 0 : err.message,
63
+ stack: (err === null || err === void 0 ? void 0 : err.stack) || undefined,
64
+ version: DataStore.getSdkVersion()
65
+ };
66
+ NetworkService.sendPostRequest(`${DataStore.getErrorReportUrl()}/${Utils.getUniqueID()}`, data);
67
+ }
68
+
69
+ static async postSST(data, envName, envId, serverTagDownStream, eventName, evtId) {
70
+ data.env = envName;
71
+ data.envId = envId;
72
+ data.evtName = eventName;
73
+ data.dws = serverTagDownStream;
74
+ data.debugId = DataStore.getDebugId();
75
+ data.dm = 'n/a';
76
+ data.v = DataStore.getCoreVersion(); // return postHttp(`${getUrlInfo().tfUrl}/${getUniqueID()}`, 'POST', data);
77
+
78
+ NetworkService.sendPostRequest(`${DataStore.getSSTUrl()}/${data.dws ?? 'n'}/${evtId}`, data);
79
+ }
80
+
81
+ static postAttrInfo(payload) {
82
+ return NetworkService.sendPostRequest(DataStore.getAttrInfoUrl(), payload);
83
+ }
84
+
85
+ }
86
+
87
+ _defineProperty(Reporter, "reportMap", {});
88
+ //# sourceMappingURL=reporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Logger","DataStore","Utils","NetworkService","Reporter","initReporter","envName","envId","deviceType","language","deviceOs","pageName","evtName","evtId","clientTagsDownStream","clientSdkVersion","initialItems","reportMap","pname","evt","bw","bwToNum","dt","dtToNum","ln","langToNum","dm","items","dws","v","tagCt","setExpectedTagCount","ct","reportParent","reportItem","item","push","length","logDbg","publishReport","data","postUrl","getUrlInfo","rptUrl","getUniqueID","debugId","getDebugId","sendPostRequest","reportError","methodMetaData","err","message","stack","undefined","version","getSdkVersion","getErrorReportUrl","postSST","serverTagDownStream","eventName","env","getCoreVersion","getSSTUrl","postAttrInfo","payload","getAttrInfoUrl"],"sources":["reporter.ts"],"sourcesContent":["import type { MapLike, Report, ReportTagItem } from './app-types';\nimport { Logger } from './logger';\nimport { DataStore } from './data-store';\nimport { Utils } from './utils';\nimport { NetworkService } from './network-service';\n\nexport class Reporter {\n static reportMap: MapLike<Report> = {};\n\n static initReporter(\n envName: string,\n envId: string,\n deviceType: string,\n language: string,\n deviceOs: string, // device os is being used as a browser proxy\n pageName: string,\n evtName: string,\n evtId: string,\n clientTagsDownStream: 'j' | 'n',\n clientSdkVersion: string,\n initialItems: ReportTagItem[] = []\n ): void {\n this.reportMap[evtId] = {\n envName,\n envId,\n pname: pageName || 'none',\n evt: evtName,\n evtId: evtId,\n bw: Utils.bwToNum(deviceOs),\n dt: Utils.dtToNum(deviceType),\n ln: Utils.langToNum(language),\n dm: 'na',\n items: initialItems || [],\n dws: clientTagsDownStream,\n v: clientSdkVersion,\n tagCt: 0,\n };\n }\n\n static setExpectedTagCount(ct: number, evtId: string): void {\n const reportParent = this.reportMap[evtId];\n if (reportParent) {\n reportParent.tagCt = ct;\n }\n }\n\n static reportItem(item: ReportTagItem, evtId: string): void {\n const reportParent = this.reportMap[evtId];\n if (reportParent) {\n reportParent.items.push(item);\n if (\n reportParent?.items?.length === reportParent?.tagCt &&\n reportParent?.items?.length > 0\n ) {\n Logger.logDbg('Hit expected tag count. Reporting');\n this.publishReport(evtId);\n }\n }\n }\n\n static publishReport(evtId: string): void {\n const data = (this.reportMap[evtId] || {}) as MapLike;\n const postUrl = `${DataStore.getUrlInfo().rptUrl}/${\n data.dws ?? 'n'\n }/${Utils.getUniqueID()}`;\n Logger.logDbg('Posting Info: ', postUrl);\n data.debugId = DataStore.getDebugId();\n NetworkService.sendPostRequest(postUrl, data);\n }\n\n static reportError(methodMetaData: string, err: any): void {\n Logger.logDbg('Reporting...', methodMetaData, err);\n const data = {\n message: err?.message,\n stack: err?.stack || undefined,\n version: DataStore.getSdkVersion(),\n };\n\n NetworkService.sendPostRequest(\n `${DataStore.getErrorReportUrl()}/${Utils.getUniqueID()}`,\n data\n );\n }\n\n static async postSST(\n data: MapLike,\n envName: string,\n envId: string,\n serverTagDownStream: 'j' | 'n',\n eventName: string,\n evtId: string\n ): Promise<void> {\n data.env = envName;\n data.envId = envId;\n data.evtName = eventName;\n data.dws = serverTagDownStream;\n data.debugId = DataStore.getDebugId();\n data.dm = 'n/a';\n data.v = DataStore.getCoreVersion();\n // return postHttp(`${getUrlInfo().tfUrl}/${getUniqueID()}`, 'POST', data);\n NetworkService.sendPostRequest(\n `${DataStore.getSSTUrl()}/${data.dws ?? 'n'}/${evtId}`,\n data\n );\n }\n\n static postAttrInfo(payload: MapLike): void {\n return NetworkService.sendPostRequest(DataStore.getAttrInfoUrl(), payload);\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,263 @@
1
+ import { Constants } from './constants';
2
+ import { Logger } from './logger';
3
+ import { unflatten } from 'flat';
4
+ import { EventBus } from './event-bus';
5
+ export class Utils {
6
+ static triggerEvent(eventName, payload) {
7
+ EventBus.triggerEvent(eventName, payload);
8
+ }
9
+
10
+ static sleep() {
11
+ let delay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1000;
12
+ return new Promise(resolve => {
13
+ setTimeout(() => {
14
+ return resolve();
15
+ }, delay);
16
+ });
17
+ }
18
+ /**
19
+ * deviceTypesMappings = {'1':'Desktop Web','2':'Mobile Web','3':'Tablet','4':'Other'};
20
+ * @param deviceType
21
+ */
22
+
23
+
24
+ static dtToNum(deviceType) {
25
+ switch (deviceType) {
26
+ case 'desktop':
27
+ return 1;
28
+
29
+ case 'mobile':
30
+ return 2;
31
+
32
+ case 'tablet':
33
+ return 3;
34
+
35
+ default:
36
+ return 4;
37
+ }
38
+ }
39
+ /**
40
+ * static browserToOsMappings = {'101': 'ios','102': 'android', '7': 'Other'};
41
+ * @param browser
42
+ */
43
+
44
+
45
+ static bwToNum(browser) {
46
+ switch (browser) {
47
+ case 'ios':
48
+ return 101;
49
+
50
+ case 'android':
51
+ return 102;
52
+
53
+ default:
54
+ return 7;
55
+ }
56
+ }
57
+
58
+ static langToNum(language) {
59
+ if (language === 'en') {
60
+ return 1;
61
+ } else if (language === 'es') {
62
+ return 2;
63
+ } else {
64
+ return 3;
65
+ }
66
+ }
67
+
68
+ static mergeMaps(input) {
69
+ if (!input) {
70
+ input = {};
71
+ }
72
+
73
+ for (var _len = arguments.length, toMerge = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
74
+ toMerge[_key - 1] = arguments[_key];
75
+ }
76
+
77
+ for (const mapObject of toMerge) {
78
+ if (mapObject) {
79
+ Object.keys(mapObject).forEach(key => {
80
+ input[key] = mapObject[key];
81
+ });
82
+ }
83
+ }
84
+
85
+ return input;
86
+ }
87
+
88
+ static applyTransformationResourceParam(paramValue, tf) {
89
+ if (!tf || tf.length === 0) {
90
+ return paramValue;
91
+ }
92
+
93
+ if (typeof paramValue === 'undefined') {
94
+ return paramValue;
95
+ } // transformers here are expected to be ordered when we get it from the server after build
96
+
97
+
98
+ for (let tfItem of tf) {
99
+ if (tfItem.nm === 'enc') {
100
+ // only url encode is implemented now
101
+ tfItem = tfItem;
102
+
103
+ if (tfItem.eTyp === 'URL_ENC') {
104
+ paramValue = encodeURIComponent(paramValue);
105
+ } else if (tfItem.eTyp === 'BASE64') {
106
+ paramValue = Buffer.from(paramValue).toString('base64');
107
+ }
108
+ }
109
+ }
110
+
111
+ return paramValue;
112
+ }
113
+ /**
114
+ * Verifies if the given 'toTest' string exists in any of the input array of strings.
115
+ * By default, this method does a case sensitive match unless specified by the ignoreCase param.
116
+ * @param toTest
117
+ * @param inputs
118
+ * @param ignoreCase - pass a value of 'true' to perform case-insensitive matching.
119
+ * @param fullMatch
120
+ */
121
+
122
+
123
+ static isMatch(toTest, inputs, ignoreCase, fullMatch) {
124
+ if (!toTest) {
125
+ return false;
126
+ }
127
+
128
+ let isMatched = false;
129
+
130
+ for (let i = 0; i < inputs.length; i += 1) {
131
+ const _val = inputs[i];
132
+
133
+ if (_val) {
134
+ if (this.convertToRegex(_val, ignoreCase, fullMatch).test(toTest)) {
135
+ isMatched = true;
136
+ break;
137
+ }
138
+ }
139
+ }
140
+
141
+ return isMatched;
142
+ }
143
+
144
+ static regExpEscape(input) {
145
+ return input.replace(/[|\\{}()[\]^$+*?.]/g, '\\$&');
146
+ }
147
+
148
+ static convertToRegex(input, ignoreCase, fullMatch) {
149
+ if (fullMatch) {
150
+ return new RegExp('^' + input.split(/\*+/).map(this.regExpEscape).join('.*') + '$', ignoreCase ? 'i' : '');
151
+ } else {
152
+ return new RegExp(input.split(/\*+/).map(this.regExpEscape).join('.*'), ignoreCase ? 'i' : '');
153
+ }
154
+ }
155
+
156
+ static safeExecute(fn, payload) {
157
+ try {
158
+ return fn(payload);
159
+ } catch (err) {
160
+ Logger.logError('Error executing function: ', err);
161
+ }
162
+ }
163
+
164
+ static getUniqueID() {
165
+ return Constants.LARGE_RANDOM_POOL();
166
+ }
167
+
168
+ static unFlattenResourceParams(input) {
169
+ if (!input || input.length === 0) {
170
+ return {};
171
+ }
172
+
173
+ const transformMap = {};
174
+ const op = {}; // convert input into a map for quick search O(1)
175
+
176
+ for (const item of input) {
177
+ if (item.pId) {
178
+ if (!transformMap[item.pId]) {
179
+ item.children = [];
180
+ transformMap[item.id] = item;
181
+ } else {
182
+ transformMap[item.pId].children.push(item);
183
+ }
184
+ } else {
185
+ item.children = [];
186
+ transformMap[item.id] = item;
187
+ }
188
+ } // sort children according to child_order inside children if they have any children
189
+
190
+
191
+ for (const item of Object.values(transformMap)) {
192
+ if (item.children && item.children.length > 0) {
193
+ item.children = item.children.sort(Constants.sortAscending);
194
+ op[item.nm] = item;
195
+ } else {
196
+ op[item.nm] = item;
197
+ }
198
+ }
199
+
200
+ return op;
201
+ }
202
+
203
+ static unflattenObject(obj) {
204
+ try {
205
+ return unflatten(obj, {
206
+ object: false,
207
+ delimiter: '.'
208
+ });
209
+ } catch (e) {}
210
+
211
+ return null;
212
+ }
213
+
214
+ static flattenObject(obj) {
215
+ if (!obj) {
216
+ return {};
217
+ }
218
+
219
+ return this.flatten(obj, {
220
+ maxDepth: 5,
221
+ safe: true
222
+ });
223
+ }
224
+
225
+ static flatten(target, opts) {
226
+ opts = opts || {};
227
+ const delimiter = opts.delimiter || '.';
228
+ const maxDepth = opts.maxDepth;
229
+ const transformKey = opts.transformKey || this.keyIdentity;
230
+ const output = {};
231
+
232
+ const step = (object, prev, currentDepth) => {
233
+ currentDepth = currentDepth || 1;
234
+ Object.keys(object).forEach(key => {
235
+ const value = object[key];
236
+ const isarray = opts.safe && Array.isArray(value);
237
+ const type = Object.prototype.toString.call(value);
238
+ const isBuffer = this.isBuffer(value);
239
+ const isobject = type === '[object Object]' || type === '[object Array]';
240
+ const newKey = prev ? prev + delimiter + transformKey(key) : transformKey(key);
241
+
242
+ if (!isarray && !isBuffer && isobject && Object.keys(value).length && (!opts.maxDepth || currentDepth < maxDepth)) {
243
+ return step(value, newKey, currentDepth + 1);
244
+ }
245
+
246
+ output[newKey] = value;
247
+ });
248
+ };
249
+
250
+ step(target);
251
+ return output;
252
+ }
253
+
254
+ static keyIdentity(key) {
255
+ return key;
256
+ }
257
+
258
+ static isBuffer(obj) {
259
+ return obj && obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj);
260
+ }
261
+
262
+ }
263
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Constants","Logger","unflatten","EventBus","Utils","triggerEvent","eventName","payload","sleep","delay","Promise","resolve","setTimeout","dtToNum","deviceType","bwToNum","browser","langToNum","language","mergeMaps","input","toMerge","mapObject","Object","keys","forEach","key","applyTransformationResourceParam","paramValue","tf","length","tfItem","nm","eTyp","encodeURIComponent","Buffer","from","toString","isMatch","toTest","inputs","ignoreCase","fullMatch","isMatched","i","_val","convertToRegex","test","regExpEscape","replace","RegExp","split","map","join","safeExecute","fn","err","logError","getUniqueID","LARGE_RANDOM_POOL","unFlattenResourceParams","transformMap","op","item","pId","children","id","push","values","sort","sortAscending","unflattenObject","obj","object","delimiter","e","flattenObject","flatten","maxDepth","safe","target","opts","transformKey","keyIdentity","output","step","prev","currentDepth","value","isarray","Array","isArray","type","prototype","call","isBuffer","isobject","newKey","constructor"],"sources":["utils.ts"],"sourcesContent":["import { Constants } from './constants';\nimport { Logger } from './logger';\nimport type {\n BaseResourceParamType,\n SdkParamEncodingTransformer,\n TFType,\n} from '../models/mp-client-sdk';\nimport type { MapLike } from './app-types';\nimport { unflatten } from 'flat';\nimport { EventBus } from './event-bus';\n\nexport class Utils {\n static triggerEvent(eventName: string, payload: any): void {\n EventBus.triggerEvent(eventName, payload);\n }\n\n static sleep(delay = 1000): Promise<void> {\n return new Promise((resolve: (val?: any) => void) => {\n setTimeout(() => {\n return resolve();\n }, delay);\n });\n }\n\n /**\n * deviceTypesMappings = {'1':'Desktop Web','2':'Mobile Web','3':'Tablet','4':'Other'};\n * @param deviceType\n */\n static dtToNum(deviceType: string): number {\n switch (deviceType) {\n case 'desktop':\n return 1;\n case 'mobile':\n return 2;\n case 'tablet':\n return 3;\n default:\n return 4;\n }\n }\n\n /**\n * static browserToOsMappings = {'101': 'ios','102': 'android', '7': 'Other'};\n * @param browser\n */\n static bwToNum(browser: string): number {\n switch (browser) {\n case 'ios':\n return 101;\n case 'android':\n return 102;\n default:\n return 7;\n }\n }\n\n static langToNum(language: string): number {\n if (language === 'en') {\n return 1;\n } else if (language === 'es') {\n return 2;\n } else {\n return 3;\n }\n }\n\n static mergeMaps<T>(\n input: MapLike<T>,\n ...toMerge: Array<MapLike<T>>\n ): MapLike<T> {\n if (!input) {\n input = {} as MapLike<T>;\n }\n for (const mapObject of toMerge) {\n if (mapObject) {\n Object.keys(mapObject).forEach((key: string) => {\n input[key] = mapObject[key];\n });\n }\n }\n return input;\n }\n\n static applyTransformationResourceParam(\n paramValue: string,\n tf: TFType | undefined\n ): any {\n if (!tf || tf.length === 0) {\n return paramValue;\n }\n\n if (typeof paramValue === 'undefined') {\n return paramValue;\n }\n\n // transformers here are expected to be ordered when we get it from the server after build\n for (let tfItem of tf) {\n if (tfItem.nm === 'enc') {\n // only url encode is implemented now\n tfItem = tfItem as SdkParamEncodingTransformer;\n if (tfItem.eTyp === 'URL_ENC') {\n paramValue = encodeURIComponent(paramValue);\n } else if (tfItem.eTyp === 'BASE64') {\n paramValue = Buffer.from(paramValue).toString('base64');\n }\n }\n }\n\n return paramValue;\n }\n\n /**\n * Verifies if the given 'toTest' string exists in any of the input array of strings.\n * By default, this method does a case sensitive match unless specified by the ignoreCase param.\n * @param toTest\n * @param inputs\n * @param ignoreCase - pass a value of 'true' to perform case-insensitive matching.\n * @param fullMatch\n */\n static isMatch(\n toTest: string,\n inputs: string[],\n ignoreCase: boolean,\n fullMatch: boolean\n ): boolean {\n if (!toTest) {\n return false;\n }\n let isMatched = false;\n for (let i = 0; i < inputs.length; i += 1) {\n const _val = inputs[i];\n if (_val) {\n if (this.convertToRegex(_val, ignoreCase, fullMatch).test(toTest)) {\n isMatched = true;\n break;\n }\n }\n }\n return isMatched;\n }\n\n static regExpEscape(input: string): string {\n return input.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n }\n\n static convertToRegex(\n input: string,\n ignoreCase: boolean,\n fullMatch: boolean\n ): RegExp {\n if (fullMatch) {\n return new RegExp(\n '^' + input.split(/\\*+/).map(this.regExpEscape).join('.*') + '$',\n ignoreCase ? 'i' : ''\n );\n } else {\n return new RegExp(\n input.split(/\\*+/).map(this.regExpEscape).join('.*'),\n ignoreCase ? 'i' : ''\n );\n }\n }\n\n static safeExecute(fn: (payload: any) => any, payload: any): any {\n try {\n return fn(payload);\n } catch (err) {\n Logger.logError('Error executing function: ', err);\n }\n }\n\n static getUniqueID(): string {\n return Constants.LARGE_RANDOM_POOL();\n }\n\n static unFlattenResourceParams<T extends BaseResourceParamType>(\n input: T[]\n ): MapLike<T> {\n if (!input || input.length === 0) {\n return {};\n }\n\n const transformMap: MapLike<T> = {};\n const op: MapLike<T> = {};\n // convert input into a map for quick search O(1)\n for (const item of input) {\n if (item.pId) {\n if (!transformMap[item.pId]) {\n item.children = [];\n transformMap[item.id] = item;\n } else {\n transformMap[item.pId].children.push(item);\n }\n } else {\n item.children = [];\n transformMap[item.id] = item;\n }\n }\n\n // sort children according to child_order inside children if they have any children\n for (const item of Object.values(transformMap)) {\n if (item.children && item.children.length > 0) {\n item.children = item.children.sort(Constants.sortAscending);\n op[item.nm] = item;\n } else {\n op[item.nm] = item;\n }\n }\n\n return op;\n }\n\n static unflattenObject(obj: Record<string, any>): Record<string, any> {\n try {\n return unflatten(obj, { object: false, delimiter: '.' });\n } catch (e) {}\n return null;\n }\n\n static flattenObject(obj: any): Record<string, any> {\n if (!obj) {\n return {};\n }\n return this.flatten(obj, { maxDepth: 5, safe: true });\n }\n\n private static flatten(target: any, opts: any): any {\n opts = opts || {};\n\n const delimiter = opts.delimiter || '.';\n const maxDepth = opts.maxDepth;\n const transformKey = opts.transformKey || this.keyIdentity;\n const output: any = {};\n\n const step = (object: any, prev?: any, currentDepth?: any): any => {\n currentDepth = currentDepth || 1;\n Object.keys(object).forEach((key) => {\n const value = object[key];\n const isarray = opts.safe && Array.isArray(value);\n const type = Object.prototype.toString.call(value);\n const isBuffer = this.isBuffer(value);\n\n const isobject =\n type === '[object Object]' || type === '[object Array]';\n\n const newKey = prev\n ? prev + delimiter + transformKey(key)\n : transformKey(key);\n\n if (\n !isarray &&\n !isBuffer &&\n isobject &&\n Object.keys(value).length &&\n (!opts.maxDepth || currentDepth < maxDepth)\n ) {\n return step(value, newKey, currentDepth + 1);\n }\n\n output[newKey] = value;\n });\n };\n\n step(target);\n\n return output;\n }\n\n static keyIdentity(key: any): any {\n return key;\n }\n\n static isBuffer(obj: any): boolean {\n return (\n obj &&\n obj.constructor &&\n typeof obj.constructor.isBuffer === 'function' &&\n obj.constructor.isBuffer(obj)\n );\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <coverage generated="1664403593806" clover="3.2.0">
3
+ <project timestamp="1664403593806" name="All files">
4
+ <metrics statements="0" coveredstatements="0" conditionals="0" coveredconditionals="0" methods="0" coveredmethods="0" elements="0" coveredelements="0" complexity="0" loc="0" ncloc="0" packages="0" files="0" classes="0"/>
5
+ </project>
6
+ </coverage>