castled-js-sdk 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (660) hide show
  1. package/.env.example +8 -0
  2. package/.eslintignore +15 -0
  3. package/.eslintrc.json +41 -0
  4. package/.github/ISSUE_TEMPLATE/bug_report.md +50 -0
  5. package/.github/ISSUE_TEMPLATE/feature_request.md +19 -0
  6. package/.github/pull_request_template.md +22 -0
  7. package/.github/workflows/build-and-quality-checks.yml +50 -0
  8. package/.github/workflows/deploy-beta.yml +55 -0
  9. package/.github/workflows/deploy-cdn.yml +113 -0
  10. package/.github/workflows/deploy-npm.yml +80 -0
  11. package/.github/workflows/deploy-sanity-suite.yml +46 -0
  12. package/.github/workflows/test.yml +39 -0
  13. package/.husky/commit-msg +4 -0
  14. package/.husky/pre-commit +4 -0
  15. package/.nvmrc +1 -0
  16. package/.prettierignore +10 -0
  17. package/.prettierrc +7 -0
  18. package/.size-limit.js +30 -0
  19. package/.versionrc +12 -0
  20. package/LICENSE +67 -0
  21. package/README.md +102 -22
  22. package/__mocks__/BraveBrowser.js +9 -0
  23. package/__mocks__/fixtures.js +130 -0
  24. package/__mocks__/msw.handlers.js +34 -0
  25. package/__mocks__/msw.server.js +6 -0
  26. package/__tests__/camelcase.test.js +29 -0
  27. package/__tests__/data-residency.test.js +238 -0
  28. package/__tests__/features/core/metrics/errorReporting/ErrorReportingService.test.js +80 -0
  29. package/__tests__/integrations/BingAds/__mocks__/data.js +17 -0
  30. package/__tests__/integrations/BingAds/browser.test.js +148 -0
  31. package/__tests__/integrations/BingAds/utils.test.js +138 -0
  32. package/__tests__/integrations/Braze/Braze.test.js +462 -0
  33. package/__tests__/integrations/FacebookPixel/FacebookPixel.test.js +347 -0
  34. package/__tests__/integrations/FacebookPixel/utils.test.js +688 -0
  35. package/__tests__/integrations/Fullstory/fullstory.test.js +147 -0
  36. package/__tests__/integrations/GA4/__mocks__/data.js +1480 -0
  37. package/__tests__/integrations/GA4/browser.test.js +94 -0
  38. package/__tests__/integrations/GA4/utils.test.js +337 -0
  39. package/__tests__/integrations/GoogleAds/__mocks__/data.js +235 -0
  40. package/__tests__/integrations/GoogleAds/browser.test.js +202 -0
  41. package/__tests__/integrations/GoogleAds/utils.test.js +110 -0
  42. package/__tests__/integrations/LaunchDarkly/__mocks__/data.js +61 -0
  43. package/__tests__/integrations/LaunchDarkly/browser.test.js +148 -0
  44. package/__tests__/integrations/LaunchDarkly/utils.test.js +36 -0
  45. package/__tests__/integrations/Lemnisk/lemnisk.test.js +156 -0
  46. package/__tests__/integrations/Mixpanel/browser.test.js +60 -0
  47. package/__tests__/integrations/PinterestTag/__mocks__/data.js +24 -0
  48. package/__tests__/integrations/PinterestTag/utils.test.js +19 -0
  49. package/__tests__/integrations/TikTokAds/tiktokads.test.js +231 -0
  50. package/__tests__/ketchConsent.test.js +49 -0
  51. package/__tests__/oneTrustCookieConsent.test.js +89 -0
  52. package/__tests__/script.test.js +167 -0
  53. package/__tests__/service-worker/__mocks__/fixtures.js +79 -0
  54. package/__tests__/service-worker/__mocks__/msw.server.js +12 -0
  55. package/__tests__/service-worker/index.test.js +109 -0
  56. package/__tests__/transformationHandler.test.js +169 -0
  57. package/__tests__/utils/IntegrationsData.test.js +105 -0
  58. package/__tests__/utils/ObjectUtils.test.js +227 -0
  59. package/__tests__/utils/cdnPaths.test.js +63 -0
  60. package/__tests__/utils/clientHint.test.js +87 -0
  61. package/__tests__/utils/commonUtils.test.js +271 -0
  62. package/__tests__/utils/errorHandler.test.js +60 -0
  63. package/__tests__/utils/eventProcessorUtils.test.js +266 -0
  64. package/__tests__/utils/navigator.test.js +38 -0
  65. package/__tests__/utils/preProcessQueue.test.js +78 -0
  66. package/__tests__/utils/screenDetails.test.js +19 -0
  67. package/__tests__/utils/utils.test.js +348 -0
  68. package/assets/integrations/AdobeAnalytics/adobe-analytics-heartbeat.js +12384 -0
  69. package/assets/integrations/AdobeAnalytics/adobe-analytics-js.js +5046 -0
  70. package/babel.config.json +34 -0
  71. package/commitlint.config.js +3 -0
  72. package/examples/SampleEventsTest.Html +133 -0
  73. package/examples/TC/TC_001.js +4 -0
  74. package/examples/TC/TC_002.js +4 -0
  75. package/examples/TC/TC_003.js +4 -0
  76. package/examples/TC/TC_004.js +4 -0
  77. package/examples/TC/TC_005.js +4 -0
  78. package/examples/chrome-extension/USAGE.md +131 -0
  79. package/examples/chrome-extension/background-script/LICENSE +21 -0
  80. package/examples/chrome-extension/background-script/README.md +101 -0
  81. package/examples/chrome-extension/background-script/foreground.js +7 -0
  82. package/examples/chrome-extension/background-script/logo/logo-128.png +0 -0
  83. package/examples/chrome-extension/background-script/logo/logo-16.png +0 -0
  84. package/examples/chrome-extension/background-script/logo/logo-48.png +0 -0
  85. package/examples/chrome-extension/background-script/logo/logo.svg +138 -0
  86. package/examples/chrome-extension/background-script/manifest.json +37 -0
  87. package/examples/chrome-extension/background-script/popup/popup.css +11 -0
  88. package/examples/chrome-extension/background-script/popup/popup.html +11 -0
  89. package/examples/chrome-extension/background-script/rudderAnalytics.js +5345 -0
  90. package/examples/chrome-extension/background-script/service-worker.js +32 -0
  91. package/examples/chrome-extension/background-script/settings/settings.css +8 -0
  92. package/examples/chrome-extension/background-script/settings/settings.html +12 -0
  93. package/examples/chrome-extension/background-script-websockets/LICENSE +21 -0
  94. package/examples/chrome-extension/background-script-websockets/README.md +101 -0
  95. package/examples/chrome-extension/background-script-websockets/foreground.js +7 -0
  96. package/examples/chrome-extension/background-script-websockets/logo/logo-128.png +0 -0
  97. package/examples/chrome-extension/background-script-websockets/logo/logo-16.png +0 -0
  98. package/examples/chrome-extension/background-script-websockets/logo/logo-48.png +0 -0
  99. package/examples/chrome-extension/background-script-websockets/logo/logo.svg +138 -0
  100. package/examples/chrome-extension/background-script-websockets/manifest.json +37 -0
  101. package/examples/chrome-extension/background-script-websockets/popup/popup.css +11 -0
  102. package/examples/chrome-extension/background-script-websockets/popup/popup.html +11 -0
  103. package/{service-worker/index.es.js → examples/chrome-extension/background-script-websockets/rudderAnalytics.js} +1283 -1274
  104. package/examples/chrome-extension/background-script-websockets/service-worker.js +60 -0
  105. package/examples/chrome-extension/background-script-websockets/settings/settings.css +8 -0
  106. package/examples/chrome-extension/background-script-websockets/settings/settings.html +12 -0
  107. package/examples/chrome-extension/content-script/LICENSE +21 -0
  108. package/examples/chrome-extension/content-script/README.md +101 -0
  109. package/examples/chrome-extension/content-script/foreground.js +65 -0
  110. package/examples/chrome-extension/content-script/logo/logo-128.png +0 -0
  111. package/examples/chrome-extension/content-script/logo/logo-16.png +0 -0
  112. package/examples/chrome-extension/content-script/logo/logo-48.png +0 -0
  113. package/examples/chrome-extension/content-script/logo/logo.svg +138 -0
  114. package/examples/chrome-extension/content-script/manifest.json +39 -0
  115. package/examples/chrome-extension/content-script/popup/popup.css +11 -0
  116. package/examples/chrome-extension/content-script/popup/popup.html +11 -0
  117. package/examples/chrome-extension/content-script/service-worker-utils.js +17 -0
  118. package/examples/chrome-extension/content-script/service-worker.js +12 -0
  119. package/examples/chrome-extension/content-script/settings/settings.css +8 -0
  120. package/examples/chrome-extension/content-script/settings/settings.html +12 -0
  121. package/examples/chrome-extension/websocket-server/server.mjs +19 -0
  122. package/examples/html/autotrack-test.html +96 -0
  123. package/examples/html/ecomm_test.html +358 -0
  124. package/examples/html/script-test.html +968 -0
  125. package/examples/html/segment.html +177 -0
  126. package/examples/html/test_poster.jpg +0 -0
  127. package/examples/umd/index.js +11 -0
  128. package/examples/umd/package.json +42 -0
  129. package/examples/umd/rollup.config.js +36 -0
  130. package/examples/umd/tests/test.html +5 -0
  131. package/examples/v1.1/tc1.html +139 -0
  132. package/examples/v1.1/tc2.1.html +140 -0
  133. package/examples/v1.1/tc2.2.html +139 -0
  134. package/examples/v1.1/tc2.3.html +143 -0
  135. package/examples/v1.1/tc3.1.html +139 -0
  136. package/examples/v1.1/tc3.2.html +142 -0
  137. package/examples/v1.1/tc3.3.html +142 -0
  138. package/examples/v1.1/tc3.4.html +144 -0
  139. package/examples/v1.1/tc3.5.html +142 -0
  140. package/examples/v1.1/tc4.html +142 -0
  141. package/examples/v1.1/tc5.html +150 -0
  142. package/github-release.config.js +5 -0
  143. package/jest/jest.global-setup.js +3 -0
  144. package/jest/jest.polyfills.js +10 -0
  145. package/jest/jest.setup-dom.js +49 -0
  146. package/jest.config.js +196 -0
  147. package/package.json +198 -39
  148. package/packages/npm/README.md +125 -0
  149. package/packages/npm/package.json +50 -0
  150. package/patches/@segment+localstorage-retry+1.3.0.patch +73 -0
  151. package/patches/@segment+top-domain+3.0.1.patch +34 -0
  152. package/public/index.html +136 -0
  153. package/public/list_integration_sdks.html +390 -0
  154. package/rollup-configs/rollup.integrations.config.js +29 -0
  155. package/rollup-configs/rollup.sdk.browser.js +32 -0
  156. package/rollup-configs/rollup.sdk.npm.js +43 -0
  157. package/rollup-configs/rollup.utilities.js +120 -0
  158. package/rollup-configs/rollup.worker.config.js +37 -0
  159. package/sanity-suite/.babelrc +33 -0
  160. package/sanity-suite/.env.example +6 -0
  161. package/sanity-suite/__mocks__/alias1.json +137 -0
  162. package/sanity-suite/__mocks__/alias2.json +97 -0
  163. package/sanity-suite/__mocks__/alias5.json +103 -0
  164. package/sanity-suite/__mocks__/alias6.json +137 -0
  165. package/sanity-suite/__mocks__/group1.json +120 -0
  166. package/sanity-suite/__mocks__/group2.json +86 -0
  167. package/sanity-suite/__mocks__/group4.json +101 -0
  168. package/sanity-suite/__mocks__/group5.json +67 -0
  169. package/sanity-suite/__mocks__/group6.json +66 -0
  170. package/sanity-suite/__mocks__/identify1.json +136 -0
  171. package/sanity-suite/__mocks__/identify2.json +102 -0
  172. package/sanity-suite/__mocks__/identify3.json +99 -0
  173. package/sanity-suite/__mocks__/identify4.json +65 -0
  174. package/sanity-suite/__mocks__/identify5.json +102 -0
  175. package/sanity-suite/__mocks__/identify6.json +103 -0
  176. package/sanity-suite/__mocks__/identify7.json +102 -0
  177. package/sanity-suite/__mocks__/identify8.json +103 -0
  178. package/sanity-suite/__mocks__/page1.json +119 -0
  179. package/sanity-suite/__mocks__/page2.json +86 -0
  180. package/sanity-suite/__mocks__/page4.json +112 -0
  181. package/sanity-suite/__mocks__/page5.json +79 -0
  182. package/sanity-suite/__mocks__/page6.json +77 -0
  183. package/sanity-suite/__mocks__/page7.json +77 -0
  184. package/sanity-suite/__mocks__/page8.json +75 -0
  185. package/sanity-suite/__mocks__/page9.json +155 -0
  186. package/sanity-suite/__mocks__/sourceConfig1.json +988 -0
  187. package/sanity-suite/__mocks__/track1.json +150 -0
  188. package/sanity-suite/__mocks__/track2.json +118 -0
  189. package/sanity-suite/__mocks__/track4.json +134 -0
  190. package/sanity-suite/__mocks__/track5.json +102 -0
  191. package/sanity-suite/__mocks__/track6.json +81 -0
  192. package/sanity-suite/__mocks__/track7.json +81 -0
  193. package/sanity-suite/package-lock.json +7951 -0
  194. package/sanity-suite/package.json +67 -0
  195. package/sanity-suite/public/eventFiltering/index-cdn.html +112 -0
  196. package/sanity-suite/public/eventFiltering/index-local.html +109 -0
  197. package/sanity-suite/public/eventFiltering/index-npm.html +92 -0
  198. package/sanity-suite/public/index-cdn.html +112 -0
  199. package/sanity-suite/public/index-local.html +109 -0
  200. package/sanity-suite/public/index-npm.html +92 -0
  201. package/sanity-suite/public/preloadBuffer/index-cdn.html +112 -0
  202. package/sanity-suite/public/preloadBuffer/index-local.html +109 -0
  203. package/sanity-suite/public/preloadBuffer/index-npm.html +92 -0
  204. package/sanity-suite/rollup.config.js +199 -0
  205. package/sanity-suite/src/index-npm.js +65 -0
  206. package/sanity-suite/src/index.js +5 -0
  207. package/sanity-suite/src/testBook/ResultAssertions.js +51 -0
  208. package/sanity-suite/src/testBook/TestBook.js +345 -0
  209. package/sanity-suite/src/testBook/ignoredProperties.js +150 -0
  210. package/sanity-suite/src/testBook/index.js +11 -0
  211. package/sanity-suite/src/testBookSuites/alias.js +287 -0
  212. package/sanity-suite/src/testBookSuites/group.js +240 -0
  213. package/sanity-suite/src/testBookSuites/identify.js +455 -0
  214. package/sanity-suite/src/testBookSuites/index.js +31 -0
  215. package/sanity-suite/src/testBookSuites/page.js +258 -0
  216. package/sanity-suite/src/testBookSuites/sourceConfig.js +84 -0
  217. package/sanity-suite/src/testBookSuites/track.js +451 -0
  218. package/scripts/integrationBuildScript.js +77 -0
  219. package/scripts/run_tests.sh +6 -0
  220. package/src/core/analytics.js +1668 -0
  221. package/src/features/core/cookieConsent/CookieConsentFactory.js +32 -0
  222. package/src/features/core/cookieConsent/OneTrust/browser.js +102 -0
  223. package/src/features/core/cookieConsent/OneTrust/index.js +3 -0
  224. package/src/features/core/cookieConsent/ketch/browser.js +114 -0
  225. package/src/features/core/cookieConsent/ketch/index.js +1 -0
  226. package/src/features/core/deviceModeTransformation/transformationHandler.js +189 -0
  227. package/src/features/core/deviceModeTransformation/util.js +23 -0
  228. package/src/features/core/metrics/errorReporting/ErrorReportingService.js +116 -0
  229. package/src/features/core/metrics/errorReporting/providers/Bugsnag.js +240 -0
  230. package/src/features/core/session/index.js +207 -0
  231. package/src/integrations/ActiveCampaign/browser.js +52 -0
  232. package/src/integrations/ActiveCampaign/constants.js +14 -0
  233. package/src/integrations/ActiveCampaign/index.js +3 -0
  234. package/src/integrations/ActiveCampaign/nativeSdkLoader.js +24 -0
  235. package/src/integrations/AdobeAnalytics/browser.js +276 -0
  236. package/src/integrations/AdobeAnalytics/constants.js +14 -0
  237. package/src/integrations/AdobeAnalytics/eCommHandle.js +56 -0
  238. package/src/integrations/AdobeAnalytics/heartbeatHandle.js +266 -0
  239. package/src/integrations/AdobeAnalytics/index.js +1 -0
  240. package/src/integrations/AdobeAnalytics/util.js +678 -0
  241. package/src/integrations/Adroll/browser.js +125 -0
  242. package/src/integrations/Adroll/constants.js +10 -0
  243. package/src/integrations/Adroll/index.js +1 -0
  244. package/src/integrations/Adroll/util.js +48 -0
  245. package/src/integrations/Amplitude/browser.js +352 -0
  246. package/src/integrations/Amplitude/constants.js +9 -0
  247. package/src/integrations/Amplitude/index.js +1 -0
  248. package/src/integrations/Amplitude/nativeSdkLoader.js +112 -0
  249. package/src/integrations/Amplitude/test/test_amplitude.html +157 -0
  250. package/src/integrations/Amplitude/utils.js +25 -0
  251. package/src/integrations/Appcues/browser.js +79 -0
  252. package/src/integrations/Appcues/constants.js +9 -0
  253. package/src/integrations/Appcues/index.js +1 -0
  254. package/src/integrations/Axeptio/browser.js +61 -0
  255. package/src/integrations/Axeptio/constants.js +8 -0
  256. package/src/integrations/Axeptio/index.js +1 -0
  257. package/src/integrations/Axeptio/nativeSdkLoader.js +14 -0
  258. package/src/integrations/Axeptio/utils.js +16 -0
  259. package/src/integrations/BingAds/browser.js +79 -0
  260. package/src/integrations/BingAds/constants.js +12 -0
  261. package/src/integrations/BingAds/index.js +1 -0
  262. package/src/integrations/BingAds/nativeSdkLoader.js +30 -0
  263. package/src/integrations/BingAds/utils.js +101 -0
  264. package/src/integrations/Braze/browser.js +284 -0
  265. package/src/integrations/Braze/constants.js +11 -0
  266. package/src/integrations/Braze/index.js +1 -0
  267. package/src/integrations/Braze/nativeSdkLoader.js +35 -0
  268. package/src/integrations/Braze/utils.js +51 -0
  269. package/src/integrations/Bugsnag/browser.js +60 -0
  270. package/src/integrations/Bugsnag/constants.js +8 -0
  271. package/src/integrations/Bugsnag/index.js +1 -0
  272. package/src/integrations/Chartbeat/browser.js +148 -0
  273. package/src/integrations/Chartbeat/constants.js +10 -0
  274. package/src/integrations/Chartbeat/index.js +1 -0
  275. package/src/integrations/Chartbeat/nativeSdkLoader.js +7 -0
  276. package/src/integrations/Clevertap/browser.js +206 -0
  277. package/src/integrations/Clevertap/constants.js +8 -0
  278. package/src/integrations/Clevertap/index.js +1 -0
  279. package/src/integrations/Comscore/browser.js +130 -0
  280. package/src/integrations/Comscore/constants.js +11 -0
  281. package/src/integrations/Comscore/index.js +1 -0
  282. package/src/integrations/Comscore/nativeSdkLoader.js +10 -0
  283. package/src/integrations/ConvertFlow/browser.js +59 -0
  284. package/src/integrations/ConvertFlow/constants.js +15 -0
  285. package/src/integrations/ConvertFlow/index.js +1 -0
  286. package/src/integrations/ConvertFlow/utils.js +107 -0
  287. package/src/integrations/Criteo/browser.js +155 -0
  288. package/src/integrations/Criteo/constants.js +11 -0
  289. package/src/integrations/Criteo/index.js +1 -0
  290. package/src/integrations/Criteo/utils.js +343 -0
  291. package/src/integrations/CustomerIO/browser.js +74 -0
  292. package/src/integrations/CustomerIO/constants.js +10 -0
  293. package/src/integrations/CustomerIO/index.js +1 -0
  294. package/src/integrations/CustomerIO/nativeSdkLoader.js +31 -0
  295. package/src/integrations/DCMFloodlight/browser.js +240 -0
  296. package/src/integrations/DCMFloodlight/constants.js +15 -0
  297. package/src/integrations/DCMFloodlight/index.js +1 -0
  298. package/src/integrations/DCMFloodlight/utils.js +336 -0
  299. package/src/integrations/Drip/browser.js +169 -0
  300. package/src/integrations/Drip/constants.js +8 -0
  301. package/src/integrations/Drip/index.js +1 -0
  302. package/src/integrations/Drip/nativeSdkLoader.js +10 -0
  303. package/src/integrations/Drip/utils.js +29 -0
  304. package/src/integrations/Engage/browser.js +124 -0
  305. package/src/integrations/Engage/constants.js +16 -0
  306. package/src/integrations/Engage/index.js +1 -0
  307. package/src/integrations/Engage/nativeSdkLoader.js +25 -0
  308. package/src/integrations/Engage/utils.js +69 -0
  309. package/src/integrations/FacebookPixel/browser.js +313 -0
  310. package/src/integrations/FacebookPixel/constants.js +77 -0
  311. package/src/integrations/FacebookPixel/index.js +1 -0
  312. package/src/integrations/FacebookPixel/utils.js +310 -0
  313. package/src/integrations/Fullstory/browser.js +169 -0
  314. package/src/integrations/Fullstory/constants.js +13 -0
  315. package/src/integrations/Fullstory/index.js +1 -0
  316. package/src/integrations/Fullstory/nativeSdkLoader.js +69 -0
  317. package/src/integrations/GA/browser.js +816 -0
  318. package/src/integrations/GA/constants.js +10 -0
  319. package/src/integrations/GA/index.js +1 -0
  320. package/src/integrations/GA/index.test.js +184 -0
  321. package/src/integrations/GA360/browser.js +58 -0
  322. package/src/integrations/GA360/constants.js +14 -0
  323. package/src/integrations/GA360/index.js +1 -0
  324. package/src/integrations/GA4/browser.js +264 -0
  325. package/src/integrations/GA4/config.js +296 -0
  326. package/src/integrations/GA4/constants.js +15 -0
  327. package/src/integrations/GA4/index.js +1 -0
  328. package/src/integrations/GA4/utils.js +329 -0
  329. package/src/integrations/GoogleAds/browser.js +212 -0
  330. package/src/integrations/GoogleAds/constants.js +11 -0
  331. package/src/integrations/GoogleAds/index.js +1 -0
  332. package/src/integrations/GoogleAds/nativeSdkLoader.js +26 -0
  333. package/src/integrations/GoogleAds/utils.js +117 -0
  334. package/src/integrations/GoogleOptimize/browser.js +79 -0
  335. package/src/integrations/GoogleOptimize/constants.js +13 -0
  336. package/src/integrations/GoogleOptimize/index.js +1 -0
  337. package/src/integrations/GoogleTagManager/browser.js +95 -0
  338. package/src/integrations/GoogleTagManager/constants.js +10 -0
  339. package/src/integrations/GoogleTagManager/index.js +1 -0
  340. package/src/integrations/GoogleTagManager/nativeSdkLoader.js +21 -0
  341. package/src/integrations/Heap/browser.js +67 -0
  342. package/src/integrations/Heap/constants.js +9 -0
  343. package/src/integrations/Heap/index.js +1 -0
  344. package/src/integrations/Heap/nativeSdkLoader.js +40 -0
  345. package/src/integrations/Heap/util.js +23 -0
  346. package/src/integrations/Hotjar/browser.js +86 -0
  347. package/src/integrations/Hotjar/constants.js +10 -0
  348. package/src/integrations/Hotjar/index.js +1 -0
  349. package/src/integrations/Hotjar/nativeSdkLoader.js +21 -0
  350. package/src/integrations/HubSpot/browser.js +96 -0
  351. package/src/integrations/HubSpot/constants.js +11 -0
  352. package/src/integrations/HubSpot/index.js +1 -0
  353. package/src/integrations/INTERCOM/browser.js +107 -0
  354. package/src/integrations/INTERCOM/constants.js +8 -0
  355. package/src/integrations/INTERCOM/index.js +1 -0
  356. package/src/integrations/INTERCOM/nativeSdkLoader.js +46 -0
  357. package/src/integrations/INTERCOM/utils.js +68 -0
  358. package/src/integrations/Iterable/browser.js +185 -0
  359. package/src/integrations/Iterable/constants.js +8 -0
  360. package/src/integrations/Iterable/index.js +1 -0
  361. package/src/integrations/Iterable/utils.js +111 -0
  362. package/src/integrations/June/browser.js +98 -0
  363. package/src/integrations/June/constants.js +8 -0
  364. package/src/integrations/June/index.js +1 -0
  365. package/src/integrations/Keen/browser.js +153 -0
  366. package/src/integrations/Keen/constants.js +10 -0
  367. package/src/integrations/Keen/index.js +1 -0
  368. package/src/integrations/Kissmetrics/browser.js +254 -0
  369. package/src/integrations/Kissmetrics/constants.js +8 -0
  370. package/src/integrations/Kissmetrics/index.js +1 -0
  371. package/src/integrations/Kissmetrics/nativeSdkLoader.js +23 -0
  372. package/src/integrations/Klaviyo/browser.js +195 -0
  373. package/src/integrations/Klaviyo/constants.js +8 -0
  374. package/src/integrations/Klaviyo/index.js +1 -0
  375. package/src/integrations/Klaviyo/util.js +91 -0
  376. package/src/integrations/LaunchDarkly/browser.js +74 -0
  377. package/src/integrations/LaunchDarkly/constants.js +11 -0
  378. package/src/integrations/LaunchDarkly/index.js +1 -0
  379. package/src/integrations/LaunchDarkly/utils.js +24 -0
  380. package/src/integrations/Lemnisk/browser.js +85 -0
  381. package/src/integrations/Lemnisk/constants.js +13 -0
  382. package/src/integrations/Lemnisk/index.js +1 -0
  383. package/src/integrations/Lemnisk/nativeSdkLoader.js +34 -0
  384. package/src/integrations/LinkedInInsightTag/browser.js +71 -0
  385. package/src/integrations/LinkedInInsightTag/constants.js +16 -0
  386. package/src/integrations/LinkedInInsightTag/index.js +1 -0
  387. package/src/integrations/LiveChat/browser.js +82 -0
  388. package/src/integrations/LiveChat/constants.js +12 -0
  389. package/src/integrations/LiveChat/index.js +1 -0
  390. package/src/integrations/LiveChat/nativeSdkLoader.js +40 -0
  391. package/src/integrations/LiveChat/util.js +71 -0
  392. package/src/integrations/Lotame/LotameStorage.js +21 -0
  393. package/src/integrations/Lotame/browser.js +172 -0
  394. package/src/integrations/Lotame/constants.js +8 -0
  395. package/src/integrations/Lotame/index.js +1 -0
  396. package/src/integrations/Lytics/browser.js +87 -0
  397. package/src/integrations/Lytics/constants.js +8 -0
  398. package/src/integrations/Lytics/index.js +1 -0
  399. package/src/integrations/Lytics/nativeSdkLoader.js +77 -0
  400. package/src/integrations/Lytics/test/script-test-lytics.html +250 -0
  401. package/src/integrations/Matomo/browser.js +188 -0
  402. package/src/integrations/Matomo/constants.js +8 -0
  403. package/src/integrations/Matomo/index.js +1 -0
  404. package/src/integrations/Matomo/nativeSdkLoader.js +20 -0
  405. package/src/integrations/Matomo/util.js +417 -0
  406. package/src/integrations/MicrosoftClarity/browser.js +70 -0
  407. package/src/integrations/MicrosoftClarity/constants.js +14 -0
  408. package/src/integrations/MicrosoftClarity/index.js +1 -0
  409. package/src/integrations/MicrosoftClarity/nativeSdkLoader.js +22 -0
  410. package/src/integrations/Mixpanel/browser.js +326 -0
  411. package/src/integrations/Mixpanel/constants.js +11 -0
  412. package/src/integrations/Mixpanel/index.js +1 -0
  413. package/src/integrations/Mixpanel/nativeSdkLoader.js +71 -0
  414. package/src/integrations/Mixpanel/util.js +178 -0
  415. package/src/integrations/MoEngage/browser.js +133 -0
  416. package/src/integrations/MoEngage/constants.js +12 -0
  417. package/src/integrations/MoEngage/index.js +1 -0
  418. package/src/integrations/MoEngage/nativeSdkLoader.js +66 -0
  419. package/src/integrations/MoEngage/test/script-test-moengage.html +216 -0
  420. package/src/integrations/Mouseflow/browser.js +98 -0
  421. package/src/integrations/Mouseflow/constants.js +14 -0
  422. package/src/integrations/Mouseflow/index.js +1 -0
  423. package/src/integrations/Mouseflow/utils.js +27 -0
  424. package/src/integrations/Olark/browser.js +94 -0
  425. package/src/integrations/Olark/constants.js +8 -0
  426. package/src/integrations/Olark/index.js +1 -0
  427. package/src/integrations/Olark/nativeSdkLoader.js +31 -0
  428. package/src/integrations/Olark/utils.js +51 -0
  429. package/src/integrations/Optimizely/browser.js +230 -0
  430. package/src/integrations/Optimizely/constants.js +8 -0
  431. package/src/integrations/Optimizely/index.js +1 -0
  432. package/src/integrations/Optimizely/utils.js +23 -0
  433. package/src/integrations/Pendo/browser.js +119 -0
  434. package/src/integrations/Pendo/constants.js +8 -0
  435. package/src/integrations/Pendo/index.js +1 -0
  436. package/src/integrations/Pendo/nativeSdkLoader.js +32 -0
  437. package/src/integrations/PinterestTag/browser.js +241 -0
  438. package/src/integrations/PinterestTag/constants.js +19 -0
  439. package/src/integrations/PinterestTag/index.js +1 -0
  440. package/src/integrations/PinterestTag/nativeSdkLoader.js +19 -0
  441. package/src/integrations/PinterestTag/propertyMappingConfig.js +57 -0
  442. package/src/integrations/PinterestTag/test/input.js +180 -0
  443. package/src/integrations/PinterestTag/test/output.js +129 -0
  444. package/src/integrations/PinterestTag/utils.js +47 -0
  445. package/src/integrations/Podsights/browser.js +178 -0
  446. package/src/integrations/Podsights/constants.js +206 -0
  447. package/src/integrations/Podsights/index.js +1 -0
  448. package/src/integrations/Podsights/utils.js +65 -0
  449. package/src/integrations/PostAffiliatePro/browser.js +133 -0
  450. package/src/integrations/PostAffiliatePro/constants.js +13 -0
  451. package/src/integrations/PostAffiliatePro/index.js +1 -0
  452. package/src/integrations/PostAffiliatePro/utils.js +40 -0
  453. package/src/integrations/Posthog/browser.js +154 -0
  454. package/src/integrations/Posthog/constants.js +12 -0
  455. package/src/integrations/Posthog/index.js +1 -0
  456. package/src/integrations/Posthog/nativeSdkLoader.js +48 -0
  457. package/src/integrations/Posthog/test/test_posthog.html +77 -0
  458. package/src/integrations/Posthog/utils.js +36 -0
  459. package/src/integrations/ProfitWell/browser.js +72 -0
  460. package/src/integrations/ProfitWell/constants.js +12 -0
  461. package/src/integrations/ProfitWell/index.js +1 -0
  462. package/src/integrations/ProfitWell/nativeSdkLoader.js +25 -0
  463. package/src/integrations/Qualaroo/browser.js +116 -0
  464. package/src/integrations/Qualaroo/constants.js +8 -0
  465. package/src/integrations/Qualaroo/index.js +1 -0
  466. package/src/integrations/Qualaroo/utils.js +83 -0
  467. package/src/integrations/Qualtrics/browser.js +89 -0
  468. package/src/integrations/Qualtrics/constants.js +8 -0
  469. package/src/integrations/Qualtrics/index.js +1 -0
  470. package/src/integrations/Qualtrics/nativeSdkLoader.js +79 -0
  471. package/src/integrations/QuantumMetric/browser.js +63 -0
  472. package/src/integrations/QuantumMetric/constants.js +13 -0
  473. package/src/integrations/QuantumMetric/index.js +1 -0
  474. package/src/integrations/QuoraPixel/browser.js +64 -0
  475. package/src/integrations/QuoraPixel/constants.js +15 -0
  476. package/src/integrations/QuoraPixel/index.js +1 -0
  477. package/src/integrations/QuoraPixel/nativeSdkLoader.js +21 -0
  478. package/src/integrations/RedditPixel/browser.js +98 -0
  479. package/src/integrations/RedditPixel/constants.js +13 -0
  480. package/src/integrations/RedditPixel/index.js +1 -0
  481. package/src/integrations/RedditPixel/nativeSdkLoader.js +21 -0
  482. package/src/integrations/Refiner/browser.js +119 -0
  483. package/src/integrations/Refiner/constants.js +8 -0
  484. package/src/integrations/Refiner/index.js +1 -0
  485. package/src/integrations/Refiner/nativeSdkLoader.js +20 -0
  486. package/src/integrations/Refiner/utils.js +44 -0
  487. package/src/integrations/Rockerbox/browser.js +89 -0
  488. package/src/integrations/Rockerbox/constants.js +12 -0
  489. package/src/integrations/Rockerbox/index.js +1 -0
  490. package/src/integrations/Rockerbox/nativeSdkLoader.js +32 -0
  491. package/src/integrations/RollBar/browser.js +92 -0
  492. package/src/integrations/RollBar/constants.js +13 -0
  493. package/src/integrations/RollBar/index.js +1 -0
  494. package/src/integrations/RollBar/nativeSdkLoader.js +383 -0
  495. package/src/integrations/Satismeter/browser.js +94 -0
  496. package/src/integrations/Satismeter/constants.js +9 -0
  497. package/src/integrations/Satismeter/index.js +1 -0
  498. package/src/integrations/Satismeter/nativeSdkLoader.js +23 -0
  499. package/src/integrations/Satismeter/util.js +54 -0
  500. package/src/integrations/Sendinblue/browser.js +111 -0
  501. package/src/integrations/Sendinblue/constants.js +25 -0
  502. package/src/integrations/Sendinblue/index.js +1 -0
  503. package/src/integrations/Sendinblue/nativeSdkLoader.js +36 -0
  504. package/src/integrations/Sendinblue/utils.js +112 -0
  505. package/src/integrations/Sentry/browser.js +118 -0
  506. package/src/integrations/Sentry/constants.js +8 -0
  507. package/src/integrations/Sentry/index.js +1 -0
  508. package/src/integrations/Sentry/utils.js +80 -0
  509. package/src/integrations/Shynet/browser.js +97 -0
  510. package/src/integrations/Shynet/constants.js +15 -0
  511. package/src/integrations/Shynet/index.js +1 -0
  512. package/src/integrations/SnapEngage/browser.js +75 -0
  513. package/src/integrations/SnapEngage/constants.js +12 -0
  514. package/src/integrations/SnapEngage/index.js +1 -0
  515. package/src/integrations/SnapEngage/nativeSdkLoader.js +24 -0
  516. package/src/integrations/SnapEngage/util.js +63 -0
  517. package/src/integrations/SnapPixel/browser.js +232 -0
  518. package/src/integrations/SnapPixel/constants.js +13 -0
  519. package/src/integrations/SnapPixel/index.js +1 -0
  520. package/src/integrations/SnapPixel/nativeSdkLoader.js +20 -0
  521. package/src/integrations/SnapPixel/util.js +211 -0
  522. package/src/integrations/TVSquared/browser.js +96 -0
  523. package/src/integrations/TVSquared/constants.js +14 -0
  524. package/src/integrations/TVSquared/index.js +1 -0
  525. package/src/integrations/TVSquared/utils.js +40 -0
  526. package/src/integrations/TiktokAds/browser.js +103 -0
  527. package/src/integrations/TiktokAds/constants.js +86 -0
  528. package/src/integrations/TiktokAds/index.js +1 -0
  529. package/src/integrations/TiktokAds/nativeSdkLoader.js +52 -0
  530. package/src/integrations/TiktokAds/util.js +71 -0
  531. package/src/integrations/VWO/browser.js +131 -0
  532. package/src/integrations/VWO/constants.js +13 -0
  533. package/src/integrations/VWO/index.js +1 -0
  534. package/src/integrations/VWO/nativeSdkLoader.js +64 -0
  535. package/src/integrations/Vero/browser.js +165 -0
  536. package/src/integrations/Vero/constants.js +8 -0
  537. package/src/integrations/Vero/index.js +1 -0
  538. package/src/integrations/Woopra/browser.js +83 -0
  539. package/src/integrations/Woopra/constants.js +8 -0
  540. package/src/integrations/Woopra/index.js +1 -0
  541. package/src/integrations/Woopra/nativeSdkLoader.js +43 -0
  542. package/src/integrations/YandexMetrica/browser.js +143 -0
  543. package/src/integrations/YandexMetrica/constants.js +10 -0
  544. package/src/integrations/YandexMetrica/index.js +1 -0
  545. package/src/integrations/YandexMetrica/nativeSdkLoader.js +35 -0
  546. package/src/integrations/YandexMetrica/utils.js +138 -0
  547. package/src/integrations/index.js +155 -0
  548. package/src/service-worker/index.js +466 -0
  549. package/src/utils/EventRepository.js +78 -0
  550. package/src/utils/HtElement.js +33 -0
  551. package/src/utils/HtElementBuilder.js +29 -0
  552. package/src/utils/IntegrationsData.js +61 -0
  553. package/src/utils/JSFileLoader.js +66 -0
  554. package/src/utils/ObjectUtils.js +68 -0
  555. package/src/utils/PreProcessQueue.js +66 -0
  556. package/src/utils/RudderApp.js +9 -0
  557. package/src/utils/RudderContext.js +21 -0
  558. package/src/utils/RudderInfo.js +41 -0
  559. package/src/utils/RudderMessage.js +28 -0
  560. package/src/utils/ScriptLoader.js +53 -0
  561. package/src/utils/beaconQueue.js +133 -0
  562. package/src/utils/camelcase.js +48 -0
  563. package/src/utils/cdnPaths.js +43 -0
  564. package/src/utils/clientHint.js +28 -0
  565. package/src/utils/client_server_name.js +78 -0
  566. package/src/utils/commonUtils.js +207 -0
  567. package/src/utils/config_to_integration_names.js +80 -0
  568. package/src/utils/constants.js +82 -0
  569. package/src/utils/errorHandler.js +88 -0
  570. package/src/utils/eventProcessorUtils.js +53 -0
  571. package/src/utils/integration_cname.js +156 -0
  572. package/src/utils/linker/base64decoder.js +31 -0
  573. package/src/utils/linker/crc32.js +42 -0
  574. package/src/utils/linker/index.js +134 -0
  575. package/src/utils/linker/userLib.js +20 -0
  576. package/src/utils/logUtil.js +51 -0
  577. package/src/utils/logger.js +106 -0
  578. package/src/utils/navigator.js +32 -0
  579. package/src/utils/notifyError.js +16 -0
  580. package/src/utils/pageProperties.js +74 -0
  581. package/src/utils/screenDetails.js +23 -0
  582. package/src/utils/storage/cookie.js +93 -0
  583. package/src/utils/storage/index.js +3 -0
  584. package/src/utils/storage/storage.js +459 -0
  585. package/src/utils/storage/store.js +72 -0
  586. package/src/utils/storage/v3DecryptionUtils.js +19 -0
  587. package/src/utils/utils.js +966 -0
  588. package/src/utils/xhrModule.js +111 -0
  589. package/stats/AdobeAnalytics.html +4044 -0
  590. package/stats/Adroll.html +4044 -0
  591. package/stats/Amplitude.html +4044 -0
  592. package/stats/Appcues.html +4044 -0
  593. package/stats/BingAds.html +4044 -0
  594. package/stats/Braze.html +4044 -0
  595. package/stats/Bugsnag.html +4044 -0
  596. package/stats/Chartbeat.html +4044 -0
  597. package/stats/Clevertap.html +4044 -0
  598. package/stats/Comscore.html +4044 -0
  599. package/stats/ConvertFlow.html +4044 -0
  600. package/stats/Criteo.html +4044 -0
  601. package/stats/CustomerIO.html +4044 -0
  602. package/stats/DCMFloodlight.html +4044 -0
  603. package/stats/Drip.html +4044 -0
  604. package/stats/Engage.html +4044 -0
  605. package/stats/FacebookPixel.html +4044 -0
  606. package/stats/Fullstory.html +4044 -0
  607. package/stats/GA.html +4044 -0
  608. package/stats/GA360.html +4044 -0
  609. package/stats/GA4.html +4044 -0
  610. package/stats/GoogleAds.html +4044 -0
  611. package/stats/GoogleOptimize.html +4044 -0
  612. package/stats/GoogleTagManager.html +4044 -0
  613. package/stats/Heap.html +4044 -0
  614. package/stats/Hotjar.html +4044 -0
  615. package/stats/HubSpot.html +4044 -0
  616. package/stats/INTERCOM.html +4044 -0
  617. package/stats/Iterable.html +4044 -0
  618. package/stats/June.html +4044 -0
  619. package/stats/Keen.html +4044 -0
  620. package/stats/Kissmetrics.html +4044 -0
  621. package/stats/Klaviyo.html +4044 -0
  622. package/stats/LaunchDarkly.html +4044 -0
  623. package/stats/LinkedInInsightTag.html +4044 -0
  624. package/stats/LiveChat.html +4044 -0
  625. package/stats/Lotame.html +4044 -0
  626. package/stats/Lytics.html +4044 -0
  627. package/stats/Matomo.html +4044 -0
  628. package/stats/Mixpanel.html +4044 -0
  629. package/stats/MoEngage.html +4044 -0
  630. package/stats/Mouseflow.html +4044 -0
  631. package/stats/Optimizely.html +4044 -0
  632. package/stats/Pendo.html +4044 -0
  633. package/stats/PinterestTag.html +4044 -0
  634. package/stats/Podsights.html +4044 -0
  635. package/stats/PostAffiliatePro.html +4044 -0
  636. package/stats/Posthog.html +4044 -0
  637. package/stats/ProfitWell.html +4044 -0
  638. package/stats/Qualaroo.html +4044 -0
  639. package/stats/Qualtrics.html +4044 -0
  640. package/stats/QuantumMetric.html +4044 -0
  641. package/stats/QuoraPixel.html +4044 -0
  642. package/stats/RedditPixel.html +4044 -0
  643. package/stats/Refiner.html +4044 -0
  644. package/stats/Rockerbox.html +4044 -0
  645. package/stats/RollBar.html +4044 -0
  646. package/stats/Sentry.html +4044 -0
  647. package/stats/Shynet.html +4044 -0
  648. package/stats/SnapEngage.html +4044 -0
  649. package/stats/SnapPixel.html +4044 -0
  650. package/stats/TVSquared.html +4044 -0
  651. package/stats/VWO.html +4044 -0
  652. package/stats/Vero.html +4044 -0
  653. package/stats/Woopra.html +4044 -0
  654. package/stats/YandexMetrica.html +4044 -0
  655. package/stats/rudder-analytics.html +4044 -0
  656. package/index.es.js +0 -1
  657. package/index.js +0 -1
  658. package/service-worker/index.js +0 -5346
  659. /package/{index.d.ts → packages/npm/index.d.ts} +0 -0
  660. /package/{service-worker → src/service-worker}/index.d.ts +0 -0
@@ -0,0 +1,966 @@
1
+ /* eslint-disable unicorn/no-for-loop */
2
+ /* eslint-disable sonarjs/no-redundant-boolean */
3
+ /* eslint-disable eqeqeq */
4
+ /* eslint-disable no-param-reassign */
5
+ import get from 'get-value';
6
+ import { v4 as uuid } from '@lukeed/uuid';
7
+ import { v4 as uuidSecure } from '@lukeed/uuid/secure';
8
+ import logger from './logUtil';
9
+ import { commonNames } from './integration_cname';
10
+ import { clientToServerNames } from './client_server_name';
11
+ import {
12
+ CONFIG_URL,
13
+ RESERVED_KEYS,
14
+ DEFAULT_REGION,
15
+ RESIDENCY_SERVERS,
16
+ SUPPORTED_CONSENT_MANAGERS,
17
+ FAILED_REQUEST_ERR_MSG_PREFIX,
18
+ } from './constants';
19
+ import { handleError } from './errorHandler';
20
+
21
+ /**
22
+ *
23
+ * Utility method for excluding null and empty values in JSON
24
+ * @param {*} key
25
+ * @param {*} value
26
+ * @returns
27
+ */
28
+ function replacer(key, value) {
29
+ if (value === null || value === undefined) {
30
+ return undefined;
31
+ }
32
+ return value;
33
+ }
34
+
35
+ /**
36
+ * Utility method to remove '/' at the end of URL
37
+ * @param {*} inURL
38
+ */
39
+ function removeTrailingSlashes(inURL) {
40
+ return inURL && inURL.endsWith('/') ? inURL.replace(/\/+$/, '') : inURL;
41
+ }
42
+
43
+ /**
44
+ *
45
+ * Utility function for UUID generation
46
+ * @returns
47
+ */
48
+ function generateUUID() {
49
+ if (window.crypto && typeof window.crypto.getRandomValues === 'function') {
50
+ return uuidSecure();
51
+ }
52
+
53
+ return uuid();
54
+ }
55
+
56
+ /**
57
+ *
58
+ * Utility function to get current time (formatted) for including in sent_at field
59
+ * @returns
60
+ */
61
+ function getCurrentTimeFormatted() {
62
+ const curDateTime = new Date().toISOString();
63
+ return curDateTime;
64
+ }
65
+
66
+ /**
67
+ *
68
+ * Utility function to retrieve configuration JSON from server
69
+ * @param {*} url
70
+ * @param {*} wrappers
71
+ * @param {*} isLoaded
72
+ * @param {*} callback
73
+ */
74
+ function getJSON(url, wrappers, isLoaded, callback) {
75
+ // server-side integration, XHR is node module
76
+
77
+ const xhr = new XMLHttpRequest();
78
+
79
+ xhr.open('GET', url, false);
80
+ xhr.onload = function () {
81
+ const { status, responseText } = xhr;
82
+ if (status === 200) {
83
+ // logger.debug("status 200");
84
+ callback(null, responseText, wrappers, isLoaded);
85
+ } else {
86
+ callback(status);
87
+ }
88
+ };
89
+ xhr.send();
90
+ }
91
+
92
+ /**
93
+ *
94
+ * Utility function to retrieve configuration JSON from server
95
+ * @param {*} context
96
+ * @param {*} url
97
+ * @param {*} callback
98
+ */
99
+ function getJSONTrimmed(context, url, writeKey, callback) {
100
+ // server-side integration, XHR is node module
101
+ // eslint-disable-next-line no-underscore-dangle
102
+ const cb_ = callback.bind(context);
103
+
104
+ const xhr = new XMLHttpRequest();
105
+
106
+ xhr.open('GET', url, true);
107
+ xhr.setRequestHeader(
108
+ 'Authorization',
109
+ `Basic ${btoa(`${writeKey}:`)}`,
110
+ // `Basic ${Buffer.from(`${writeKey}:`).toString("base64")}`
111
+ );
112
+
113
+ // eslint-disable-next-line func-names
114
+ xhr.onload = function () {
115
+ const { status, responseText } = xhr;
116
+ if (status === 200) {
117
+ // logger.debug("status 200 " + "calling callback");
118
+ cb_(200, responseText);
119
+ } else {
120
+ handleError(new Error(`${FAILED_REQUEST_ERR_MSG_PREFIX} ${status} for url: ${url}`));
121
+ cb_(status);
122
+ }
123
+ };
124
+ xhr.send();
125
+ }
126
+
127
+ function getCurrency(val) {
128
+ if (!val) {
129
+ return null;
130
+ }
131
+
132
+ if (typeof val === 'number') {
133
+ return val;
134
+ }
135
+
136
+ if (typeof val === 'string') {
137
+ const parsedValue = parseFloat(val.replace(/\$/g, ''));
138
+
139
+ if (!Number.isNaN(parsedValue)) {
140
+ return parsedValue;
141
+ }
142
+ }
143
+
144
+ return null;
145
+ }
146
+
147
+ function getRevenue(properties, eventName) {
148
+ let { revenue } = properties;
149
+ const { total } = properties;
150
+ const orderCompletedRegExp = /^[ _]?completed[ _]?order[ _]?|^[ _]?order[ _]?completed[ _]?$/i;
151
+
152
+ // it's always revenue, unless it's called during an order completion.
153
+ if (!revenue && eventName && eventName.match(orderCompletedRegExp)) {
154
+ revenue = total;
155
+ }
156
+
157
+ return getCurrency(revenue);
158
+ }
159
+
160
+ function transformNamesCore(integrationObject, namesObj) {
161
+ Object.keys(integrationObject).forEach((key) => {
162
+ // eslint-disable-next-line no-prototype-builtins
163
+ if (integrationObject.hasOwnProperty(key)) {
164
+ if (namesObj[key]) {
165
+ integrationObject[namesObj[key]] = integrationObject[key];
166
+ }
167
+ if (
168
+ key !== 'All' && // delete user supplied keys except All and if except those where oldkeys are not present or oldkeys are same as transformed keys
169
+ namesObj[key] !== undefined &&
170
+ namesObj[key] !== key
171
+ ) {
172
+ delete integrationObject[key];
173
+ }
174
+ }
175
+ });
176
+ }
177
+
178
+ /**
179
+ *
180
+ *
181
+ * @param {*} integrationObject
182
+ */
183
+ function transformToRudderNames(integrationObject) {
184
+ transformNamesCore(integrationObject, commonNames);
185
+ }
186
+
187
+ function transformToServerNames(integrationObject) {
188
+ transformNamesCore(integrationObject, clientToServerNames);
189
+ }
190
+
191
+ /**
192
+ *
193
+ * @param {*} sdkSuppliedIntegrations
194
+ * @param {*} configPlaneEnabledIntegrations
195
+ */
196
+ function findAllEnabledDestinations(sdkSuppliedIntegrations, configPlaneEnabledIntegrations) {
197
+ const enabledList = [];
198
+ if (!configPlaneEnabledIntegrations || configPlaneEnabledIntegrations.length === 0) {
199
+ return enabledList;
200
+ }
201
+ let allValue = true;
202
+ if (sdkSuppliedIntegrations.All !== undefined) {
203
+ allValue = sdkSuppliedIntegrations.All;
204
+ }
205
+ const intgData = [];
206
+ if (typeof configPlaneEnabledIntegrations[0] === 'string') {
207
+ configPlaneEnabledIntegrations.forEach((intg) => {
208
+ intgData.push({
209
+ intgName: intg,
210
+ intObj: intg,
211
+ });
212
+ });
213
+ } else if (typeof configPlaneEnabledIntegrations[0] === 'object') {
214
+ configPlaneEnabledIntegrations.forEach((intg) => {
215
+ intgData.push({
216
+ intgName: intg.name,
217
+ intObj: intg,
218
+ });
219
+ });
220
+ }
221
+
222
+ intgData.forEach(({ intgName, intObj }) => {
223
+ if (!allValue) {
224
+ // All false ==> check if intg true supplied
225
+ if (
226
+ sdkSuppliedIntegrations[intgName] !== undefined &&
227
+ Boolean(sdkSuppliedIntegrations[intgName]) === true
228
+ ) {
229
+ enabledList.push(intObj);
230
+ }
231
+ } else {
232
+ // All true ==> intg true by default
233
+ let intgValue = true;
234
+ // check if intg false supplied
235
+ if (
236
+ sdkSuppliedIntegrations[intgName] !== undefined &&
237
+ Boolean(sdkSuppliedIntegrations[intgName]) === false
238
+ ) {
239
+ intgValue = false;
240
+ }
241
+ if (intgValue) {
242
+ enabledList.push(intObj);
243
+ }
244
+ }
245
+ });
246
+
247
+ return enabledList;
248
+ }
249
+
250
+ /**
251
+ * check type of object incoming in the rejectArr function
252
+ * @param {} val
253
+ */
254
+ function type(val) {
255
+ switch (Object.prototype.toString.call(val)) {
256
+ case '[object Function]':
257
+ return 'function';
258
+ case '[object Date]':
259
+ return 'date';
260
+ case '[object RegExp]':
261
+ return 'regexp';
262
+ case '[object Arguments]':
263
+ return 'arguments';
264
+ case '[object Array]':
265
+ return 'array';
266
+ default:
267
+ }
268
+
269
+ if (val === null) return 'null';
270
+ if (val === undefined) return 'undefined';
271
+ if (val === Object(val)) return 'object';
272
+
273
+ return typeof val;
274
+ }
275
+
276
+ function compact(value) {
277
+ return value == null;
278
+ }
279
+
280
+ /**
281
+ * particular case when rejecting an array
282
+ * @param {} arr
283
+ * @param {} fn
284
+ */
285
+ const rejectArray = (arr, fn) => arr.filter((value, index) => !fn(value, index));
286
+
287
+ /**
288
+ * Rejecting null from any object other than arrays
289
+ * @param {} obj
290
+ * @param {} fn
291
+ *
292
+ */
293
+ const rejectObject = (obj, fn) =>
294
+ Object.entries(obj).reduce((acc, [key, value]) => {
295
+ if (!fn(value, key)) {
296
+ acc[key] = value;
297
+ }
298
+ return acc;
299
+ }, {});
300
+
301
+ /**
302
+ * reject all null values from array/object
303
+ * @param {} obj
304
+ * @param {} fn
305
+ */
306
+ function rejectArr(obj, fn) {
307
+ fn = fn || compact;
308
+ return type(obj) === 'array' ? rejectArray(obj, fn) : rejectObject(obj, fn);
309
+ }
310
+
311
+ function getUserProvidedConfigUrl(configUrl, defConfigUrl) {
312
+ let url = configUrl;
313
+ if (url.indexOf('sourceConfig') === -1) {
314
+ url = `${removeTrailingSlashes(url)}/sourceConfig/`;
315
+ }
316
+ url = url.slice(-1) === '/' ? url : `${url}/`;
317
+ const defQueryParams = defConfigUrl.split('?')[1];
318
+ const urlSplitItems = url.split('?');
319
+ if (urlSplitItems.length > 1 && urlSplitItems[1] !== defQueryParams) {
320
+ url = `${urlSplitItems[0]}?${defQueryParams}`;
321
+ } else {
322
+ url = `${url}?${defQueryParams}`;
323
+ }
324
+ return url;
325
+ }
326
+ /**
327
+ * Check if a reserved keyword is present in properties/traits
328
+ * @param {*} properties
329
+ * @param {*} reservedKeywords
330
+ * @param {*} type
331
+ */
332
+ function checkReservedKeywords(message, messageType) {
333
+ // properties, traits, contextualTraits are either undefined or object
334
+ const { properties, traits, context } = message;
335
+ if (properties) {
336
+ Object.keys(properties).forEach((property) => {
337
+ if (RESERVED_KEYS.indexOf(property.toLowerCase()) >= 0) {
338
+ logger.error(
339
+ `Warning! : Reserved keyword used in properties--> ${property} with ${messageType} call`,
340
+ );
341
+ }
342
+ });
343
+ }
344
+ if (traits) {
345
+ Object.keys(traits).forEach((trait) => {
346
+ if (RESERVED_KEYS.indexOf(trait.toLowerCase()) >= 0) {
347
+ logger.error(
348
+ `Warning! : Reserved keyword used in traits--> ${trait} with ${messageType} call`,
349
+ );
350
+ }
351
+ });
352
+ }
353
+
354
+ const contextualTraits = context.traits;
355
+ if (contextualTraits) {
356
+ Object.keys(contextualTraits).forEach((contextTrait) => {
357
+ if (RESERVED_KEYS.indexOf(contextTrait.toLowerCase()) >= 0) {
358
+ logger.error(
359
+ `Warning! : Reserved keyword used in traits --> ${contextTrait} with ${messageType} call`,
360
+ );
361
+ }
362
+ });
363
+ }
364
+ }
365
+
366
+ /* ------- Start FlattenJson -----------
367
+ * This function flatten given json object to single level.
368
+ * So if there is nested object or array, all will appear in first level properties of an object.
369
+ * Following is case we are handling in this function ::
370
+ * condition 1: String
371
+ * condition 2: Array
372
+ * condition 3: Nested object
373
+ */
374
+ function recurse(cur, prop, result) {
375
+ const res = result;
376
+ if (Object(cur) !== cur) {
377
+ res[prop] = cur;
378
+ } else if (Array.isArray(cur)) {
379
+ const l = cur.length;
380
+ for (let i = 0; i < l; i += 1) recurse(cur[i], prop ? `${prop}.${i}` : `${i}`, res);
381
+ if (l === 0) res[prop] = [];
382
+ } else {
383
+ let isEmpty = true;
384
+ Object.keys(cur).forEach((key) => {
385
+ isEmpty = false;
386
+ recurse(cur[key], prop ? `${prop}.${key}` : key, res);
387
+ });
388
+ if (isEmpty) res[prop] = {};
389
+ }
390
+ return res;
391
+ }
392
+
393
+ function flattenJsonPayload(data, property = '') {
394
+ return recurse(data, property, {});
395
+ }
396
+ /* ------- End FlattenJson ----------- */
397
+ /**
398
+ *
399
+ * @param {*} message
400
+ * @param {*} destination
401
+ * @param {*} keys
402
+ * @param {*} exclusionFields
403
+ * Extract fields from message with exclusions
404
+ * Pass the keys of message for extraction and
405
+ * exclusion fields to exclude and the payload to map into
406
+ * -----------------Example-------------------
407
+ * extractCustomFields(message,payload,["traits", "context.traits", "properties"], "email",
408
+ * ["firstName",
409
+ * "lastName",
410
+ * "phone",
411
+ * "title",
412
+ * "organization",
413
+ * "city",
414
+ * "region",
415
+ * "country",
416
+ * "zip",
417
+ * "image",
418
+ * "timezone"])
419
+ * -------------------------------------------
420
+ * The above call will map the fields other than the
421
+ * exclusion list from the given keys to the destination payload
422
+ *
423
+ */
424
+
425
+ function extractCustomFields(message, dest, keys, exclusionFields) {
426
+ const mappingKeys = [];
427
+ const destination = dest || {};
428
+ if (Array.isArray(keys)) {
429
+ keys.forEach((key) => {
430
+ const messageContext = get(message, key);
431
+ if (messageContext) {
432
+ Object.keys(messageContext).forEach((k) => {
433
+ if (!exclusionFields.includes(k)) mappingKeys.push(k);
434
+ });
435
+ mappingKeys.forEach((mappingKey) => {
436
+ if (!(typeof messageContext[mappingKey] === 'undefined')) {
437
+ destination[mappingKey] = get(messageContext, mappingKey);
438
+ }
439
+ });
440
+ }
441
+ });
442
+ } else if (keys === 'root') {
443
+ Object.keys(message).forEach((k) => {
444
+ if (!exclusionFields.includes(k)) mappingKeys.push(k);
445
+ });
446
+ mappingKeys.forEach((mappingKey) => {
447
+ if (!(typeof message[mappingKey] === 'undefined')) {
448
+ destination[mappingKey] = get(message, mappingKey);
449
+ }
450
+ });
451
+ } else {
452
+ logger.debug('unable to parse keys');
453
+ }
454
+ return destination;
455
+ }
456
+ /**
457
+ *
458
+ * @param {*} message
459
+ *
460
+ * Use get-value to retrieve defined traits from message traits
461
+ */
462
+ function getDefinedTraits(message) {
463
+ const traitsValue = {
464
+ userId:
465
+ get(message, 'userId') ||
466
+ get(message, 'context.traits.userId') ||
467
+ get(message, 'anonymousId'),
468
+ userIdOnly: get(message, 'userId') || get(message, 'context.traits.userId'),
469
+ email:
470
+ get(message, 'context.traits.email') ||
471
+ get(message, 'context.traits.Email') ||
472
+ get(message, 'context.traits.E-mail'),
473
+ phone: get(message, 'context.traits.phone') || get(message, 'context.traits.Phone'),
474
+ firstName:
475
+ get(message, 'context.traits.firstName') ||
476
+ get(message, 'context.traits.firstname') ||
477
+ get(message, 'context.traits.first_name'),
478
+ lastName:
479
+ get(message, 'context.traits.lastName') ||
480
+ get(message, 'context.traits.lastname') ||
481
+ get(message, 'context.traits.last_name'),
482
+ name: get(message, 'context.traits.name') || get(message, 'context.traits.Name'),
483
+ state:
484
+ get(message, 'context.traits.state') ||
485
+ get(message, 'context.traits.State') ||
486
+ get(message, 'context.traits.address.state') ||
487
+ get(message, 'context.traits.address.State'),
488
+ city:
489
+ get(message, 'context.traits.city') ||
490
+ get(message, 'context.traits.City') ||
491
+ get(message, 'context.traits.address.city') ||
492
+ get(message, 'context.traits.address.City'),
493
+ country:
494
+ get(message, 'context.traits.country') ||
495
+ get(message, 'context.traits.Country') ||
496
+ get(message, 'context.traits.address.country') ||
497
+ get(message, 'context.traits.address.Country'),
498
+ };
499
+
500
+ if (!get(traitsValue, 'name') && get(traitsValue, 'firstName') && get(traitsValue, 'lastName')) {
501
+ traitsValue.name = `${get(traitsValue, 'firstName')} ${get(traitsValue, 'lastName')}`;
502
+ }
503
+ return traitsValue;
504
+ }
505
+
506
+ /**
507
+ * To check if a variable is storing object or not
508
+ */
509
+ const isObject = (obj) => type(obj) === 'object';
510
+
511
+ /**
512
+ * Returns true for empty object {}
513
+ * @param {*} obj
514
+ * @returns
515
+ */
516
+ const isEmptyObject = (obj) => {
517
+ if (!obj) {
518
+ logger.warn('input is undefined or null');
519
+ return true;
520
+ }
521
+ return Object.keys(obj).length === 0;
522
+ };
523
+
524
+ /**
525
+ * To check if a variable is storing array or not
526
+ */
527
+ const isArray = (obj) => type(obj) === 'array';
528
+
529
+ const isDefined = (x) => x !== undefined;
530
+ const isNotNull = (x) => x !== null;
531
+ const isDefinedAndNotNull = (x) => isDefined(x) && isNotNull(x);
532
+
533
+ const getDataFromSource = (src, dest, properties) => {
534
+ const data = {};
535
+ if (isArray(src)) {
536
+ for (let index = 0; index < src.length; index += 1) {
537
+ if (properties[src[index]]) {
538
+ data[dest] = properties[src[index]];
539
+ if (data) {
540
+ // return only if the value is valid.
541
+ // else look for next possible source in precedence
542
+ return data;
543
+ }
544
+ }
545
+ }
546
+ } else if (typeof src === 'string' && properties[src]) {
547
+ data[dest] = properties[src];
548
+ }
549
+ return data;
550
+ };
551
+
552
+ const getConfigUrl = (writeKey) =>
553
+ CONFIG_URL.concat(CONFIG_URL.includes('?') ? '&' : '?').concat(
554
+ writeKey ? `writeKey=${writeKey}` : '',
555
+ );
556
+
557
+ const getSDKUrlInfo = () => {
558
+ const scripts = document.getElementsByTagName('script');
559
+ let sdkURL;
560
+ let isStaging = false;
561
+ for (let i = 0; i < scripts.length; i += 1) {
562
+ const curScriptSrc = removeTrailingSlashes(scripts[i].getAttribute('src'));
563
+ if (curScriptSrc) {
564
+ const urlMatches = curScriptSrc.match(/^.*events(-staging)?(\.min)?\.js$/);
565
+ if (urlMatches) {
566
+ sdkURL = curScriptSrc;
567
+ isStaging = urlMatches[1] !== undefined;
568
+ break;
569
+ }
570
+ }
571
+ }
572
+ return { sdkURL, isStaging };
573
+ };
574
+
575
+ /**
576
+ * This method handles the operations between two keys from the sourceKeys. One of the possible
577
+ * Use case is to calculate the value from the "price" and "quantity"
578
+ * Definition of the operation object is as follows
579
+ * {
580
+ * "operation": "multiplication",
581
+ * "args": [
582
+ * {
583
+ * "sourceKeys": "properties.price"
584
+ * },
585
+ * {
586
+ * "sourceKeys": "properties.quantity",
587
+ * "defaultVal": 1
588
+ * }
589
+ * ]
590
+ * }
591
+ * Supported operations are "addition", "multiplication"
592
+ * @param {*} param0
593
+ * @returns
594
+ */
595
+ const handleSourceKeysOperation = ({ message, operationObject }) => {
596
+ const { operation, args } = operationObject;
597
+
598
+ // populate the values from the arguments
599
+ // in the same order it is populated
600
+ const argValues = args.map((arg) => {
601
+ const { sourceKeys, defaultVal } = arg;
602
+ const val = get(message, sourceKeys);
603
+ if (val || val === false || val === 0) {
604
+ return val;
605
+ }
606
+ return defaultVal;
607
+ });
608
+
609
+ // quick sanity check for the undefined values in the list.
610
+ // if there is any undefined values, return null
611
+ // without going further for operations
612
+ const isAllDefined = argValues.every((value) => isDefinedAndNotNull(value));
613
+ if (!isAllDefined) {
614
+ return null;
615
+ }
616
+
617
+ // start handling operations
618
+ let result = null;
619
+ switch (operation) {
620
+ case 'multiplication':
621
+ result = 1;
622
+ // eslint-disable-next-line no-restricted-syntax
623
+ for (const v of argValues) {
624
+ if (typeof v === 'number') {
625
+ result *= v;
626
+ } else {
627
+ // if there is a non number argument simply return null
628
+ // non numbers can't be operated arithmatically
629
+ return null;
630
+ }
631
+ }
632
+ return result.toFixed(2);
633
+ case 'addition':
634
+ result = 0;
635
+ // eslint-disable-next-line no-restricted-syntax
636
+ for (const v of argValues) {
637
+ if (typeof v === 'number') {
638
+ result += v;
639
+ } else {
640
+ // if there is a non number argument simply return null
641
+ // non numbers can't be operated arithmatically
642
+ return null;
643
+ }
644
+ }
645
+ return result.toFixed(2);
646
+ default:
647
+ return null;
648
+ }
649
+ };
650
+
651
+ /**
652
+ * Handle type and format
653
+ * @param {*} formattedVal
654
+ * @param {*} formattingType
655
+ * @returns
656
+ */
657
+ const formatValues = (formattedVal, formattingType) => {
658
+ let curFormattedVal = formattedVal;
659
+
660
+ const formattingFunctions = {
661
+ jsonStringify: () => {
662
+ curFormattedVal = JSON.stringify(formattedVal);
663
+ },
664
+ jsonStringifyOnObject: () => {
665
+ if (typeof formattedVal !== 'string') {
666
+ curFormattedVal = JSON.stringify(formattedVal);
667
+ }
668
+ },
669
+ toString: () => {
670
+ curFormattedVal = String(formattedVal);
671
+ },
672
+ toNumber: () => {
673
+ curFormattedVal = Number(formattedVal);
674
+ },
675
+ toFloat: () => {
676
+ curFormattedVal = parseFloat(formattedVal);
677
+ },
678
+ toInt: () => {
679
+ curFormattedVal = parseInt(formattedVal, 10);
680
+ },
681
+ toLower: () => {
682
+ curFormattedVal = formattedVal.toString().toLowerCase();
683
+ },
684
+ trim: () => {
685
+ if (typeof formattedVal === 'string') {
686
+ curFormattedVal = formattedVal.trim();
687
+ }
688
+ },
689
+ IsBoolean: () => {
690
+ curFormattedVal = true;
691
+ if (!(typeof formattedVal === 'boolean')) {
692
+ logger.debug('Boolean value missing, so dropping it');
693
+ curFormattedVal = false;
694
+ }
695
+ },
696
+ };
697
+
698
+ if (formattingType in formattingFunctions) {
699
+ const formattingFunction = formattingFunctions[formattingType];
700
+ formattingFunction();
701
+ }
702
+
703
+ return curFormattedVal;
704
+ };
705
+
706
+ /**
707
+ * format the value as per the metadata values
708
+ * Expected metadata keys are: (according to precedence)
709
+ * type, typeFormat: expected data type
710
+ * @param {*} value
711
+ * @param {*} metadata
712
+ * @returns
713
+ */
714
+ const handleMetadataForValue = (value, metadata) => {
715
+ if (!metadata) {
716
+ return value;
717
+ }
718
+
719
+ const { type: valFormat, defaultValue } = metadata;
720
+
721
+ // if value is null and defaultValue is supplied - use that
722
+ if (!isDefinedAndNotNull(value)) {
723
+ return defaultValue || value;
724
+ }
725
+
726
+ // we've got a correct value. start processing
727
+ let formattedVal = value;
728
+ if (valFormat) {
729
+ if (Array.isArray(valFormat)) {
730
+ valFormat.forEach((eachType) => {
731
+ formattedVal = formatValues(formattedVal, eachType);
732
+ });
733
+ } else {
734
+ formattedVal = formatValues(formattedVal, valFormat);
735
+ }
736
+ }
737
+
738
+ return formattedVal;
739
+ };
740
+
741
+ /**
742
+ * Finds and returns the value of key from message
743
+ * @param {*} message
744
+ * @param {*} sourceKeys
745
+ * @returns
746
+ */
747
+ const getValueFromMessage = (message, sourceKeys) => {
748
+ if (Array.isArray(sourceKeys) && sourceKeys.length > 0) {
749
+ // eslint-disable-next-line no-restricted-syntax
750
+ for (const sourceKey of sourceKeys) {
751
+ let val;
752
+ if (typeof sourceKey === 'object') {
753
+ val = handleSourceKeysOperation({
754
+ message,
755
+ operationObject: sourceKey,
756
+ });
757
+ } else {
758
+ val = get(message, sourceKey);
759
+ }
760
+ if (val || val === false || val === 0) {
761
+ // return only if the value is valid.
762
+ // else look for next possible source in precedence
763
+ return val;
764
+ }
765
+ }
766
+ return null;
767
+ }
768
+
769
+ if (typeof sourceKeys === 'object') {
770
+ // if the sourceKey is an object we expect it to be a operation
771
+ return handleSourceKeysOperation({ message, operationObject: sourceKeys });
772
+ }
773
+
774
+ return get(message, sourceKeys);
775
+ };
776
+
777
+ /**
778
+ * Using this function we can create a payload from a mapping object.
779
+ * @param {*} object = {
780
+ traits:{
781
+ name: "abcd efgh",
782
+ address: {
783
+ city: "xyz"
784
+ }
785
+ }
786
+ }
787
+ * @param {*} mapper = [
788
+ {
789
+ destKey: "userName",
790
+ sourceKeys: "traits.name",
791
+ },
792
+ {
793
+ destKey: "city",
794
+ sourceKeys: "traits.address.city",
795
+ },
796
+ ]
797
+ * @returns {
798
+ userName : "abcd efgh",
799
+ city : "xyz"
800
+ }
801
+
802
+ */
803
+ const constructPayload = (message, mapper) => {
804
+ const payload = {};
805
+ // Mapping JSON should be an array
806
+ if (Array.isArray(mapper) && mapper.length > 0) {
807
+ mapper.forEach((mapping) => {
808
+ const { sourceKeys, destKey, metadata } = mapping;
809
+ const value = handleMetadataForValue(getValueFromMessage(message, sourceKeys), metadata);
810
+ if ((value || value === 0 || value === false) && destKey) {
811
+ // set the value only if correct
812
+ payload[destKey] = value;
813
+ }
814
+ });
815
+ }
816
+ return payload;
817
+ };
818
+
819
+ const countDigits = (number) => (number ? number.toString().length : 0);
820
+
821
+ /**
822
+ * A function to convert non-string IDs to string format
823
+ * @param {any} id
824
+ * @returns
825
+ */
826
+ const getStringId = (id) =>
827
+ typeof id === 'string' || typeof id === 'undefined' || id === null ? id : JSON.stringify(id);
828
+
829
+ /**
830
+ * A function to validate and return Residency server input
831
+ * @returns string/undefined
832
+ */
833
+ const getResidencyServer = (options) => {
834
+ const region = options ? options.residencyServer : undefined;
835
+ if (region) {
836
+ if (typeof region !== 'string' || !RESIDENCY_SERVERS.includes(region.toUpperCase())) {
837
+ logger.error('Invalid residencyServer input');
838
+ return undefined;
839
+ }
840
+ return region.toUpperCase();
841
+ }
842
+ return undefined;
843
+ };
844
+
845
+ const isValidServerUrl = (serverUrl) =>
846
+ typeof serverUrl === 'string' && serverUrl.trim().length > 0;
847
+
848
+ /**
849
+ * A function to get url from source config response
850
+ * @param {array} urls An array of objects containing urls
851
+ * @returns
852
+ */
853
+ const getDefaultUrlofRegion = (urls) => {
854
+ let url;
855
+ if (Array.isArray(urls) && urls.length > 0) {
856
+ const obj = urls.find((elem) => elem.default === true);
857
+ if (obj && isValidServerUrl(obj.url)) {
858
+ return obj.url;
859
+ }
860
+ }
861
+ return url;
862
+ };
863
+
864
+ /**
865
+ * A function to determine the dataPlaneUrl
866
+ * @param {Object} dataPlaneUrls An object containing dataPlaneUrl for different region
867
+ * @returns string
868
+ */
869
+ const resolveDataPlaneUrl = (response, serverUrl, options) => {
870
+ try {
871
+ const dataPlanes = response.source.dataplanes || {};
872
+ // Check if dataPlanes object is present in source config
873
+ if (Object.keys(dataPlanes).length > 0) {
874
+ const inputRegion = getResidencyServer(options);
875
+ const regionUrlArr = dataPlanes[inputRegion] || dataPlanes[DEFAULT_REGION];
876
+
877
+ if (regionUrlArr) {
878
+ const defaultUrl = getDefaultUrlofRegion(regionUrlArr);
879
+ if (defaultUrl) {
880
+ return defaultUrl;
881
+ }
882
+ }
883
+ }
884
+ // return the dataPlaneUrl provided in load API(if available)
885
+ if (isValidServerUrl(serverUrl)) {
886
+ return serverUrl;
887
+ }
888
+ // return the default dataPlaneUrl
889
+ // return DEFAULT_DATAPLANE_URL; // we do not want to divert the events to hosted data plane url
890
+
891
+ // Throw error if correct data plane url is not provided
892
+ throw Error('Unable to load the SDK due to invalid data plane url');
893
+ } catch (e) {
894
+ throw Error(e);
895
+ }
896
+ };
897
+
898
+ /**
899
+ * Function to return the state of consent management based on config passed in load options
900
+ * @param {Object} cookieConsentOptions
901
+ * @returns
902
+ */
903
+ const fetchCookieConsentState = (cookieConsentOptions) => {
904
+ let isEnabled = false;
905
+ // eslint-disable-next-line consistent-return
906
+ Object.keys(cookieConsentOptions).forEach((e) => {
907
+ const isSupportedAndEnabled =
908
+ SUPPORTED_CONSENT_MANAGERS.includes(e) &&
909
+ typeof cookieConsentOptions[e].enabled === 'boolean' &&
910
+ cookieConsentOptions[e].enabled === true;
911
+
912
+ if (isSupportedAndEnabled) {
913
+ isEnabled = true;
914
+ }
915
+ });
916
+ return isEnabled;
917
+ };
918
+
919
+ const parseQueryString = (url) => {
920
+ const result = {};
921
+ try {
922
+ const urlObj = new URL(url);
923
+ urlObj.searchParams.forEach((value, qParam) => {
924
+ result[qParam] = value;
925
+ });
926
+ } catch (err) {
927
+ // Do nothing
928
+ }
929
+ return result;
930
+ };
931
+
932
+ export {
933
+ replacer,
934
+ generateUUID,
935
+ getCurrentTimeFormatted,
936
+ getJSONTrimmed,
937
+ getJSON,
938
+ getRevenue,
939
+ getUserProvidedConfigUrl,
940
+ findAllEnabledDestinations,
941
+ transformToRudderNames,
942
+ transformToServerNames,
943
+ rejectArr,
944
+ type,
945
+ flattenJsonPayload,
946
+ checkReservedKeywords,
947
+ extractCustomFields,
948
+ getDefinedTraits,
949
+ isObject,
950
+ isArray,
951
+ isDefinedAndNotNull,
952
+ getDataFromSource,
953
+ removeTrailingSlashes,
954
+ constructPayload,
955
+ getConfigUrl,
956
+ getSDKUrlInfo,
957
+ countDigits,
958
+ getStringId,
959
+ resolveDataPlaneUrl,
960
+ fetchCookieConsentState,
961
+ parseQueryString,
962
+ isEmptyObject,
963
+ };
964
+
965
+ export { commonNames } from './integration_cname';
966
+ export { default as get } from 'get-value';