@customerio/cdp-analytics-browser 0.0.0-test-oidc

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 (561) hide show
  1. package/LICENSE.MD +22 -0
  2. package/README.md +36 -0
  3. package/dist/cjs/browser/browser-umd.js +20 -0
  4. package/dist/cjs/browser/browser-umd.js.map +1 -0
  5. package/dist/cjs/browser/index.js +334 -0
  6. package/dist/cjs/browser/index.js.map +1 -0
  7. package/dist/cjs/browser/standalone-analytics.js +62 -0
  8. package/dist/cjs/browser/standalone-analytics.js.map +1 -0
  9. package/dist/cjs/browser/standalone-interface.js +3 -0
  10. package/dist/cjs/browser/standalone-interface.js.map +1 -0
  11. package/dist/cjs/browser/standalone.js +90 -0
  12. package/dist/cjs/browser/standalone.js.map +1 -0
  13. package/dist/cjs/core/analytics/index.js +545 -0
  14. package/dist/cjs/core/analytics/index.js.map +1 -0
  15. package/dist/cjs/core/analytics/interfaces.js +3 -0
  16. package/dist/cjs/core/analytics/interfaces.js.map +1 -0
  17. package/dist/cjs/core/arguments-resolver/index.js +106 -0
  18. package/dist/cjs/core/arguments-resolver/index.js.map +1 -0
  19. package/dist/cjs/core/auto-track.js +108 -0
  20. package/dist/cjs/core/auto-track.js.map +1 -0
  21. package/dist/cjs/core/buffer/index.js +237 -0
  22. package/dist/cjs/core/buffer/index.js.map +1 -0
  23. package/dist/cjs/core/buffer/snippet.js +32 -0
  24. package/dist/cjs/core/buffer/snippet.js.map +1 -0
  25. package/dist/cjs/core/callback/index.js +7 -0
  26. package/dist/cjs/core/callback/index.js.map +1 -0
  27. package/dist/cjs/core/connection/index.js +16 -0
  28. package/dist/cjs/core/connection/index.js.map +1 -0
  29. package/dist/cjs/core/context/index.js +19 -0
  30. package/dist/cjs/core/context/index.js.map +1 -0
  31. package/dist/cjs/core/environment/index.js +12 -0
  32. package/dist/cjs/core/environment/index.js.map +1 -0
  33. package/dist/cjs/core/events/index.js +134 -0
  34. package/dist/cjs/core/events/index.js.map +1 -0
  35. package/dist/cjs/core/events/interfaces.js +3 -0
  36. package/dist/cjs/core/events/interfaces.js.map +1 -0
  37. package/dist/cjs/core/inspector/index.js +14 -0
  38. package/dist/cjs/core/inspector/index.js.map +1 -0
  39. package/dist/cjs/core/plugin/index.js +3 -0
  40. package/dist/cjs/core/plugin/index.js.map +1 -0
  41. package/dist/cjs/core/query-string/gracefulDecodeURIComponent.js +20 -0
  42. package/dist/cjs/core/query-string/gracefulDecodeURIComponent.js.map +1 -0
  43. package/dist/cjs/core/query-string/index.js +48 -0
  44. package/dist/cjs/core/query-string/index.js.map +1 -0
  45. package/dist/cjs/core/query-string/pickPrefix.js +20 -0
  46. package/dist/cjs/core/query-string/pickPrefix.js.map +1 -0
  47. package/dist/cjs/core/queue/event-queue.js +15 -0
  48. package/dist/cjs/core/queue/event-queue.js.map +1 -0
  49. package/dist/cjs/core/stats/index.js +23 -0
  50. package/dist/cjs/core/stats/index.js.map +1 -0
  51. package/dist/cjs/core/stats/remote-metrics.js +107 -0
  52. package/dist/cjs/core/stats/remote-metrics.js.map +1 -0
  53. package/dist/cjs/core/user/index.js +422 -0
  54. package/dist/cjs/core/user/index.js.map +1 -0
  55. package/dist/cjs/core/user/tld.js +64 -0
  56. package/dist/cjs/core/user/tld.js.map +1 -0
  57. package/dist/cjs/generated/version.js +6 -0
  58. package/dist/cjs/generated/version.js.map +1 -0
  59. package/dist/cjs/index.js +15 -0
  60. package/dist/cjs/index.js.map +1 -0
  61. package/dist/cjs/lib/bind-all.js +17 -0
  62. package/dist/cjs/lib/bind-all.js.map +1 -0
  63. package/dist/cjs/lib/browser-polyfill.js +22 -0
  64. package/dist/cjs/lib/browser-polyfill.js.map +1 -0
  65. package/dist/cjs/lib/create-deferred.js +21 -0
  66. package/dist/cjs/lib/create-deferred.js.map +1 -0
  67. package/dist/cjs/lib/csp-detection.js +33 -0
  68. package/dist/cjs/lib/csp-detection.js.map +1 -0
  69. package/dist/cjs/lib/embedded-write-key.js +22 -0
  70. package/dist/cjs/lib/embedded-write-key.js.map +1 -0
  71. package/dist/cjs/lib/fetch.js +19 -0
  72. package/dist/cjs/lib/fetch.js.map +1 -0
  73. package/dist/cjs/lib/get-global.js +21 -0
  74. package/dist/cjs/lib/get-global.js.map +1 -0
  75. package/dist/cjs/lib/get-process-env.js +15 -0
  76. package/dist/cjs/lib/get-process-env.js.map +1 -0
  77. package/dist/cjs/lib/global-analytics-helper.js +34 -0
  78. package/dist/cjs/lib/global-analytics-helper.js.map +1 -0
  79. package/dist/cjs/lib/group-by.js +28 -0
  80. package/dist/cjs/lib/group-by.js.map +1 -0
  81. package/dist/cjs/lib/is-plan-event-enabled.js +20 -0
  82. package/dist/cjs/lib/is-plan-event-enabled.js.map +1 -0
  83. package/dist/cjs/lib/is-thenable.js +15 -0
  84. package/dist/cjs/lib/is-thenable.js.map +1 -0
  85. package/dist/cjs/lib/load-script.js +56 -0
  86. package/dist/cjs/lib/load-script.js.map +1 -0
  87. package/dist/cjs/lib/merged-options.js +31 -0
  88. package/dist/cjs/lib/merged-options.js.map +1 -0
  89. package/dist/cjs/lib/on-page-leave.js +35 -0
  90. package/dist/cjs/lib/on-page-leave.js.map +1 -0
  91. package/dist/cjs/lib/p-while.js +25 -0
  92. package/dist/cjs/lib/p-while.js.map +1 -0
  93. package/dist/cjs/lib/parse-cdn.js +86 -0
  94. package/dist/cjs/lib/parse-cdn.js.map +1 -0
  95. package/dist/cjs/lib/priority-queue/backoff.js +10 -0
  96. package/dist/cjs/lib/priority-queue/backoff.js.map +1 -0
  97. package/dist/cjs/lib/priority-queue/index.js +7 -0
  98. package/dist/cjs/lib/priority-queue/index.js.map +1 -0
  99. package/dist/cjs/lib/priority-queue/persisted.js +108 -0
  100. package/dist/cjs/lib/priority-queue/persisted.js.map +1 -0
  101. package/dist/cjs/lib/sleep.js +10 -0
  102. package/dist/cjs/lib/sleep.js.map +1 -0
  103. package/dist/cjs/lib/to-facade.js +32 -0
  104. package/dist/cjs/lib/to-facade.js.map +1 -0
  105. package/dist/cjs/node/index.js +43 -0
  106. package/dist/cjs/node/index.js.map +1 -0
  107. package/dist/cjs/node/node.browser.js +13 -0
  108. package/dist/cjs/node/node.browser.js.map +1 -0
  109. package/dist/cjs/plugins/ajs-destination/index.js +345 -0
  110. package/dist/cjs/plugins/ajs-destination/index.js.map +1 -0
  111. package/dist/cjs/plugins/ajs-destination/loader.js +110 -0
  112. package/dist/cjs/plugins/ajs-destination/loader.js.map +1 -0
  113. package/dist/cjs/plugins/ajs-destination/types.js +3 -0
  114. package/dist/cjs/plugins/ajs-destination/types.js.map +1 -0
  115. package/dist/cjs/plugins/ajs-destination/utils.js +23 -0
  116. package/dist/cjs/plugins/ajs-destination/utils.js.map +1 -0
  117. package/dist/cjs/plugins/analytics-node/index.js +65 -0
  118. package/dist/cjs/plugins/analytics-node/index.js.map +1 -0
  119. package/dist/cjs/plugins/customerio/batched-dispatcher.js +102 -0
  120. package/dist/cjs/plugins/customerio/batched-dispatcher.js.map +1 -0
  121. package/dist/cjs/plugins/customerio/fetch-dispatcher.js +18 -0
  122. package/dist/cjs/plugins/customerio/fetch-dispatcher.js.map +1 -0
  123. package/dist/cjs/plugins/customerio/index.js +98 -0
  124. package/dist/cjs/plugins/customerio/index.js.map +1 -0
  125. package/dist/cjs/plugins/customerio/normalize.js +176 -0
  126. package/dist/cjs/plugins/customerio/normalize.js.map +1 -0
  127. package/dist/cjs/plugins/customerio/schedule-flush.js +76 -0
  128. package/dist/cjs/plugins/customerio/schedule-flush.js.map +1 -0
  129. package/dist/cjs/plugins/in-app-plugin/events.js +41 -0
  130. package/dist/cjs/plugins/in-app-plugin/events.js.map +1 -0
  131. package/dist/cjs/plugins/in-app-plugin/index.js +237 -0
  132. package/dist/cjs/plugins/in-app-plugin/index.js.map +1 -0
  133. package/dist/cjs/plugins/legacy-video-plugins/index.js +25 -0
  134. package/dist/cjs/plugins/legacy-video-plugins/index.js.map +1 -0
  135. package/dist/cjs/plugins/middleware/index.js +124 -0
  136. package/dist/cjs/plugins/middleware/index.js.map +1 -0
  137. package/dist/cjs/plugins/page-enrichment/index.js +98 -0
  138. package/dist/cjs/plugins/page-enrichment/index.js.map +1 -0
  139. package/dist/cjs/plugins/remote-loader/index.js +211 -0
  140. package/dist/cjs/plugins/remote-loader/index.js.map +1 -0
  141. package/dist/cjs/plugins/remote-middleware/index.js +70 -0
  142. package/dist/cjs/plugins/remote-middleware/index.js.map +1 -0
  143. package/dist/cjs/plugins/routing-middleware/index.js +27 -0
  144. package/dist/cjs/plugins/routing-middleware/index.js.map +1 -0
  145. package/dist/cjs/plugins/schema-filter/index.js +67 -0
  146. package/dist/cjs/plugins/schema-filter/index.js.map +1 -0
  147. package/dist/cjs/plugins/validation/index.js +70 -0
  148. package/dist/cjs/plugins/validation/index.js.map +1 -0
  149. package/dist/cjs/vendor/tsub/tsub.js +645 -0
  150. package/dist/cjs/vendor/tsub/tsub.js.map +1 -0
  151. package/dist/cjs/vendor/tsub/types.js +3 -0
  152. package/dist/cjs/vendor/tsub/types.js.map +1 -0
  153. package/dist/pkg/browser/browser-umd.js +17 -0
  154. package/dist/pkg/browser/browser-umd.js.map +1 -0
  155. package/dist/pkg/browser/index.js +330 -0
  156. package/dist/pkg/browser/index.js.map +1 -0
  157. package/dist/pkg/browser/standalone-analytics.js +58 -0
  158. package/dist/pkg/browser/standalone-analytics.js.map +1 -0
  159. package/dist/pkg/browser/standalone-interface.js +2 -0
  160. package/dist/pkg/browser/standalone-interface.js.map +1 -0
  161. package/dist/pkg/browser/standalone.js +88 -0
  162. package/dist/pkg/browser/standalone.js.map +1 -0
  163. package/dist/pkg/core/analytics/index.js +542 -0
  164. package/dist/pkg/core/analytics/index.js.map +1 -0
  165. package/dist/pkg/core/analytics/interfaces.js +2 -0
  166. package/dist/pkg/core/analytics/interfaces.js.map +1 -0
  167. package/dist/pkg/core/arguments-resolver/index.js +99 -0
  168. package/dist/pkg/core/arguments-resolver/index.js.map +1 -0
  169. package/dist/pkg/core/auto-track.js +103 -0
  170. package/dist/pkg/core/auto-track.js.map +1 -0
  171. package/dist/pkg/core/buffer/index.js +231 -0
  172. package/dist/pkg/core/buffer/index.js.map +1 -0
  173. package/dist/pkg/core/buffer/snippet.js +27 -0
  174. package/dist/pkg/core/buffer/snippet.js.map +1 -0
  175. package/dist/pkg/core/callback/index.js +2 -0
  176. package/dist/pkg/core/callback/index.js.map +1 -0
  177. package/dist/pkg/core/connection/index.js +11 -0
  178. package/dist/pkg/core/connection/index.js.map +1 -0
  179. package/dist/pkg/core/context/index.js +16 -0
  180. package/dist/pkg/core/context/index.js.map +1 -0
  181. package/dist/pkg/core/environment/index.js +7 -0
  182. package/dist/pkg/core/environment/index.js.map +1 -0
  183. package/dist/pkg/core/events/index.js +131 -0
  184. package/dist/pkg/core/events/index.js.map +1 -0
  185. package/dist/pkg/core/events/interfaces.js +2 -0
  186. package/dist/pkg/core/events/interfaces.js.map +1 -0
  187. package/dist/pkg/core/inspector/index.js +10 -0
  188. package/dist/pkg/core/inspector/index.js.map +1 -0
  189. package/dist/pkg/core/plugin/index.js +2 -0
  190. package/dist/pkg/core/plugin/index.js.map +1 -0
  191. package/dist/pkg/core/query-string/gracefulDecodeURIComponent.js +16 -0
  192. package/dist/pkg/core/query-string/gracefulDecodeURIComponent.js.map +1 -0
  193. package/dist/pkg/core/query-string/index.js +44 -0
  194. package/dist/pkg/core/query-string/index.js.map +1 -0
  195. package/dist/pkg/core/query-string/pickPrefix.js +16 -0
  196. package/dist/pkg/core/query-string/pickPrefix.js.map +1 -0
  197. package/dist/pkg/core/queue/event-queue.js +12 -0
  198. package/dist/pkg/core/queue/event-queue.js.map +1 -0
  199. package/dist/pkg/core/stats/index.js +20 -0
  200. package/dist/pkg/core/stats/index.js.map +1 -0
  201. package/dist/pkg/core/stats/remote-metrics.js +104 -0
  202. package/dist/pkg/core/stats/remote-metrics.js.map +1 -0
  203. package/dist/pkg/core/user/index.js +418 -0
  204. package/dist/pkg/core/user/index.js.map +1 -0
  205. package/dist/pkg/core/user/tld.js +59 -0
  206. package/dist/pkg/core/user/tld.js.map +1 -0
  207. package/dist/pkg/generated/version.js +3 -0
  208. package/dist/pkg/generated/version.js.map +1 -0
  209. package/dist/pkg/index.js +10 -0
  210. package/dist/pkg/index.js.map +1 -0
  211. package/dist/pkg/lib/bind-all.js +14 -0
  212. package/dist/pkg/lib/bind-all.js.map +1 -0
  213. package/dist/pkg/lib/browser-polyfill.js +18 -0
  214. package/dist/pkg/lib/browser-polyfill.js.map +1 -0
  215. package/dist/pkg/lib/create-deferred.js +17 -0
  216. package/dist/pkg/lib/create-deferred.js.map +1 -0
  217. package/dist/pkg/lib/csp-detection.js +29 -0
  218. package/dist/pkg/lib/csp-detection.js.map +1 -0
  219. package/dist/pkg/lib/embedded-write-key.js +18 -0
  220. package/dist/pkg/lib/embedded-write-key.js.map +1 -0
  221. package/dist/pkg/lib/fetch.js +14 -0
  222. package/dist/pkg/lib/fetch.js.map +1 -0
  223. package/dist/pkg/lib/get-global.js +17 -0
  224. package/dist/pkg/lib/get-global.js.map +1 -0
  225. package/dist/pkg/lib/get-process-env.js +11 -0
  226. package/dist/pkg/lib/get-process-env.js.map +1 -0
  227. package/dist/pkg/lib/global-analytics-helper.js +28 -0
  228. package/dist/pkg/lib/global-analytics-helper.js.map +1 -0
  229. package/dist/pkg/lib/group-by.js +24 -0
  230. package/dist/pkg/lib/group-by.js.map +1 -0
  231. package/dist/pkg/lib/is-plan-event-enabled.js +16 -0
  232. package/dist/pkg/lib/is-plan-event-enabled.js.map +1 -0
  233. package/dist/pkg/lib/is-thenable.js +11 -0
  234. package/dist/pkg/lib/is-thenable.js.map +1 -0
  235. package/dist/pkg/lib/load-script.js +51 -0
  236. package/dist/pkg/lib/load-script.js.map +1 -0
  237. package/dist/pkg/lib/merged-options.js +27 -0
  238. package/dist/pkg/lib/merged-options.js.map +1 -0
  239. package/dist/pkg/lib/on-page-leave.js +31 -0
  240. package/dist/pkg/lib/on-page-leave.js.map +1 -0
  241. package/dist/pkg/lib/p-while.js +21 -0
  242. package/dist/pkg/lib/p-while.js.map +1 -0
  243. package/dist/pkg/lib/parse-cdn.js +79 -0
  244. package/dist/pkg/lib/parse-cdn.js.map +1 -0
  245. package/dist/pkg/lib/priority-queue/backoff.js +6 -0
  246. package/dist/pkg/lib/priority-queue/backoff.js.map +1 -0
  247. package/dist/pkg/lib/priority-queue/index.js +3 -0
  248. package/dist/pkg/lib/priority-queue/index.js.map +1 -0
  249. package/dist/pkg/lib/priority-queue/persisted.js +105 -0
  250. package/dist/pkg/lib/priority-queue/persisted.js.map +1 -0
  251. package/dist/pkg/lib/sleep.js +6 -0
  252. package/dist/pkg/lib/sleep.js.map +1 -0
  253. package/dist/pkg/lib/to-facade.js +28 -0
  254. package/dist/pkg/lib/to-facade.js.map +1 -0
  255. package/dist/pkg/node/index.js +40 -0
  256. package/dist/pkg/node/index.js.map +1 -0
  257. package/dist/pkg/node/node.browser.js +10 -0
  258. package/dist/pkg/node/node.browser.js.map +1 -0
  259. package/dist/pkg/plugins/ajs-destination/index.js +341 -0
  260. package/dist/pkg/plugins/ajs-destination/index.js.map +1 -0
  261. package/dist/pkg/plugins/ajs-destination/loader.js +102 -0
  262. package/dist/pkg/plugins/ajs-destination/loader.js.map +1 -0
  263. package/dist/pkg/plugins/ajs-destination/types.js +2 -0
  264. package/dist/pkg/plugins/ajs-destination/types.js.map +1 -0
  265. package/dist/pkg/plugins/ajs-destination/utils.js +18 -0
  266. package/dist/pkg/plugins/ajs-destination/utils.js.map +1 -0
  267. package/dist/pkg/plugins/analytics-node/index.js +60 -0
  268. package/dist/pkg/plugins/analytics-node/index.js.map +1 -0
  269. package/dist/pkg/plugins/customerio/batched-dispatcher.js +99 -0
  270. package/dist/pkg/plugins/customerio/batched-dispatcher.js.map +1 -0
  271. package/dist/pkg/plugins/customerio/fetch-dispatcher.js +15 -0
  272. package/dist/pkg/plugins/customerio/fetch-dispatcher.js.map +1 -0
  273. package/dist/pkg/plugins/customerio/index.js +94 -0
  274. package/dist/pkg/plugins/customerio/index.js.map +1 -0
  275. package/dist/pkg/plugins/customerio/normalize.js +168 -0
  276. package/dist/pkg/plugins/customerio/normalize.js.map +1 -0
  277. package/dist/pkg/plugins/customerio/schedule-flush.js +72 -0
  278. package/dist/pkg/plugins/customerio/schedule-flush.js.map +1 -0
  279. package/dist/pkg/plugins/in-app-plugin/events.js +36 -0
  280. package/dist/pkg/plugins/in-app-plugin/events.js.map +1 -0
  281. package/dist/pkg/plugins/in-app-plugin/index.js +233 -0
  282. package/dist/pkg/plugins/in-app-plugin/index.js.map +1 -0
  283. package/dist/pkg/plugins/legacy-video-plugins/index.js +25 -0
  284. package/dist/pkg/plugins/legacy-video-plugins/index.js.map +1 -0
  285. package/dist/pkg/plugins/middleware/index.js +119 -0
  286. package/dist/pkg/plugins/middleware/index.js.map +1 -0
  287. package/dist/pkg/plugins/page-enrichment/index.js +93 -0
  288. package/dist/pkg/plugins/page-enrichment/index.js.map +1 -0
  289. package/dist/pkg/plugins/remote-loader/index.js +207 -0
  290. package/dist/pkg/plugins/remote-loader/index.js.map +1 -0
  291. package/dist/pkg/plugins/remote-middleware/index.js +66 -0
  292. package/dist/pkg/plugins/remote-middleware/index.js.map +1 -0
  293. package/dist/pkg/plugins/routing-middleware/index.js +22 -0
  294. package/dist/pkg/plugins/routing-middleware/index.js.map +1 -0
  295. package/dist/pkg/plugins/schema-filter/index.js +63 -0
  296. package/dist/pkg/plugins/schema-filter/index.js.map +1 -0
  297. package/dist/pkg/plugins/validation/index.js +63 -0
  298. package/dist/pkg/plugins/validation/index.js.map +1 -0
  299. package/dist/pkg/vendor/tsub/tsub.js +645 -0
  300. package/dist/pkg/vendor/tsub/tsub.js.map +1 -0
  301. package/dist/pkg/vendor/tsub/types.js +2 -0
  302. package/dist/pkg/vendor/tsub/types.js.map +1 -0
  303. package/dist/types/browser/browser-umd.d.ts +2 -0
  304. package/dist/types/browser/browser-umd.d.ts.map +1 -0
  305. package/dist/types/browser/index.d.ts +86 -0
  306. package/dist/types/browser/index.d.ts.map +1 -0
  307. package/dist/types/browser/standalone-analytics.d.ts +2 -0
  308. package/dist/types/browser/standalone-analytics.d.ts.map +1 -0
  309. package/dist/types/browser/standalone-interface.d.ts +10 -0
  310. package/dist/types/browser/standalone-interface.d.ts.map +1 -0
  311. package/dist/types/browser/standalone.d.ts +2 -0
  312. package/dist/types/browser/standalone.d.ts.map +1 -0
  313. package/dist/types/core/analytics/index.d.ts +121 -0
  314. package/dist/types/core/analytics/index.d.ts.map +1 -0
  315. package/dist/types/core/analytics/interfaces.d.ts +77 -0
  316. package/dist/types/core/analytics/interfaces.d.ts.map +1 -0
  317. package/dist/types/core/arguments-resolver/index.d.ts +34 -0
  318. package/dist/types/core/arguments-resolver/index.d.ts.map +1 -0
  319. package/dist/types/core/auto-track.d.ts +10 -0
  320. package/dist/types/core/auto-track.d.ts.map +1 -0
  321. package/dist/types/core/buffer/index.d.ts +86 -0
  322. package/dist/types/core/buffer/index.d.ts.map +1 -0
  323. package/dist/types/core/buffer/snippet.d.ts +15 -0
  324. package/dist/types/core/buffer/snippet.d.ts.map +1 -0
  325. package/dist/types/core/callback/index.d.ts +2 -0
  326. package/dist/types/core/callback/index.d.ts.map +1 -0
  327. package/dist/types/core/connection/index.d.ts +3 -0
  328. package/dist/types/core/connection/index.d.ts.map +1 -0
  329. package/dist/types/core/context/index.d.ts +9 -0
  330. package/dist/types/core/context/index.d.ts.map +1 -0
  331. package/dist/types/core/environment/index.d.ts +3 -0
  332. package/dist/types/core/environment/index.d.ts.map +1 -0
  333. package/dist/types/core/events/index.d.ts +21 -0
  334. package/dist/types/core/events/index.d.ts.map +1 -0
  335. package/dist/types/core/events/interfaces.d.ts +9 -0
  336. package/dist/types/core/events/interfaces.d.ts.map +1 -0
  337. package/dist/types/core/inspector/index.d.ts +3 -0
  338. package/dist/types/core/inspector/index.d.ts.map +1 -0
  339. package/dist/types/core/plugin/index.d.ts +11 -0
  340. package/dist/types/core/plugin/index.d.ts.map +1 -0
  341. package/dist/types/core/query-string/gracefulDecodeURIComponent.d.ts +9 -0
  342. package/dist/types/core/query-string/gracefulDecodeURIComponent.d.ts.map +1 -0
  343. package/dist/types/core/query-string/index.d.ts +7 -0
  344. package/dist/types/core/query-string/index.d.ts.map +1 -0
  345. package/dist/types/core/query-string/pickPrefix.d.ts +9 -0
  346. package/dist/types/core/query-string/pickPrefix.d.ts.map +1 -0
  347. package/dist/types/core/queue/event-queue.d.ts +8 -0
  348. package/dist/types/core/queue/event-queue.d.ts.map +1 -0
  349. package/dist/types/core/stats/index.d.ts +7 -0
  350. package/dist/types/core/stats/index.d.ts.map +1 -0
  351. package/dist/types/core/stats/remote-metrics.d.ts +29 -0
  352. package/dist/types/core/stats/remote-metrics.d.ts.map +1 -0
  353. package/dist/types/core/user/index.d.ts +128 -0
  354. package/dist/types/core/user/index.d.ts.map +1 -0
  355. package/dist/types/core/user/tld.d.ts +2 -0
  356. package/dist/types/core/user/tld.d.ts.map +1 -0
  357. package/dist/types/generated/version.d.ts +2 -0
  358. package/dist/types/generated/version.d.ts.map +1 -0
  359. package/dist/types/index.d.ts +11 -0
  360. package/dist/types/index.d.ts.map +1 -0
  361. package/dist/types/lib/bind-all.d.ts +4 -0
  362. package/dist/types/lib/bind-all.d.ts.map +1 -0
  363. package/dist/types/lib/browser-polyfill.d.ts +2 -0
  364. package/dist/types/lib/browser-polyfill.d.ts.map +1 -0
  365. package/dist/types/lib/create-deferred.d.ts +9 -0
  366. package/dist/types/lib/create-deferred.d.ts.map +1 -0
  367. package/dist/types/lib/csp-detection.d.ts +4 -0
  368. package/dist/types/lib/csp-detection.d.ts.map +1 -0
  369. package/dist/types/lib/embedded-write-key.d.ts +7 -0
  370. package/dist/types/lib/embedded-write-key.d.ts.map +1 -0
  371. package/dist/types/lib/fetch.d.ts +5 -0
  372. package/dist/types/lib/fetch.d.ts.map +1 -0
  373. package/dist/types/lib/get-global.d.ts +2 -0
  374. package/dist/types/lib/get-global.d.ts.map +1 -0
  375. package/dist/types/lib/get-process-env.d.ts +8 -0
  376. package/dist/types/lib/get-process-env.d.ts.map +1 -0
  377. package/dist/types/lib/global-analytics-helper.d.ts +18 -0
  378. package/dist/types/lib/global-analytics-helper.d.ts.map +1 -0
  379. package/dist/types/lib/group-by.d.ts +4 -0
  380. package/dist/types/lib/group-by.d.ts.map +1 -0
  381. package/dist/types/lib/is-plan-event-enabled.d.ts +9 -0
  382. package/dist/types/lib/is-plan-event-enabled.d.ts.map +1 -0
  383. package/dist/types/lib/is-thenable.d.ts +6 -0
  384. package/dist/types/lib/is-thenable.d.ts.map +1 -0
  385. package/dist/types/lib/load-script.d.ts +3 -0
  386. package/dist/types/lib/load-script.d.ts.map +1 -0
  387. package/dist/types/lib/merged-options.d.ts +13 -0
  388. package/dist/types/lib/merged-options.d.ts.map +1 -0
  389. package/dist/types/lib/on-page-leave.d.ts +11 -0
  390. package/dist/types/lib/on-page-leave.d.ts.map +1 -0
  391. package/dist/types/lib/p-while.d.ts +2 -0
  392. package/dist/types/lib/p-while.d.ts.map +1 -0
  393. package/dist/types/lib/parse-cdn.d.ts +10 -0
  394. package/dist/types/lib/parse-cdn.d.ts.map +1 -0
  395. package/dist/types/lib/priority-queue/backoff.d.ts +13 -0
  396. package/dist/types/lib/priority-queue/backoff.d.ts.map +1 -0
  397. package/dist/types/lib/priority-queue/index.d.ts +3 -0
  398. package/dist/types/lib/priority-queue/index.d.ts.map +1 -0
  399. package/dist/types/lib/priority-queue/persisted.d.ts +6 -0
  400. package/dist/types/lib/priority-queue/persisted.d.ts.map +1 -0
  401. package/dist/types/lib/sleep.d.ts +2 -0
  402. package/dist/types/lib/sleep.d.ts.map +1 -0
  403. package/dist/types/lib/to-facade.d.ts +7 -0
  404. package/dist/types/lib/to-facade.d.ts.map +1 -0
  405. package/dist/types/node/index.d.ts +8 -0
  406. package/dist/types/node/index.d.ts.map +1 -0
  407. package/dist/types/node/node.browser.d.ts +4 -0
  408. package/dist/types/node/node.browser.d.ts.map +1 -0
  409. package/dist/types/plugins/ajs-destination/index.d.ts +42 -0
  410. package/dist/types/plugins/ajs-destination/index.d.ts.map +1 -0
  411. package/dist/types/plugins/ajs-destination/loader.d.ts +12 -0
  412. package/dist/types/plugins/ajs-destination/loader.d.ts.map +1 -0
  413. package/dist/types/plugins/ajs-destination/types.d.ts +36 -0
  414. package/dist/types/plugins/ajs-destination/types.d.ts.map +1 -0
  415. package/dist/types/plugins/ajs-destination/utils.d.ts +5 -0
  416. package/dist/types/plugins/ajs-destination/utils.d.ts.map +1 -0
  417. package/dist/types/plugins/analytics-node/index.d.ts +12 -0
  418. package/dist/types/plugins/analytics-node/index.d.ts.map +1 -0
  419. package/dist/types/plugins/customerio/batched-dispatcher.d.ts +8 -0
  420. package/dist/types/plugins/customerio/batched-dispatcher.d.ts.map +1 -0
  421. package/dist/types/plugins/customerio/fetch-dispatcher.d.ts +8 -0
  422. package/dist/types/plugins/customerio/fetch-dispatcher.d.ts.map +1 -0
  423. package/dist/types/plugins/customerio/index.d.ts +26 -0
  424. package/dist/types/plugins/customerio/index.d.ts.map +1 -0
  425. package/dist/types/plugins/customerio/normalize.d.ts +12 -0
  426. package/dist/types/plugins/customerio/normalize.d.ts.map +1 -0
  427. package/dist/types/plugins/customerio/schedule-flush.d.ts +5 -0
  428. package/dist/types/plugins/customerio/schedule-flush.d.ts.map +1 -0
  429. package/dist/types/plugins/in-app-plugin/events.d.ts +19 -0
  430. package/dist/types/plugins/in-app-plugin/events.d.ts.map +1 -0
  431. package/dist/types/plugins/in-app-plugin/index.d.ts +12 -0
  432. package/dist/types/plugins/in-app-plugin/index.d.ts.map +1 -0
  433. package/dist/types/plugins/legacy-video-plugins/index.d.ts +3 -0
  434. package/dist/types/plugins/legacy-video-plugins/index.d.ts.map +1 -0
  435. package/dist/types/plugins/middleware/index.d.ts +18 -0
  436. package/dist/types/plugins/middleware/index.d.ts.map +1 -0
  437. package/dist/types/plugins/page-enrichment/index.d.ts +21 -0
  438. package/dist/types/plugins/page-enrichment/index.d.ts.map +1 -0
  439. package/dist/types/plugins/remote-loader/index.d.ts +43 -0
  440. package/dist/types/plugins/remote-loader/index.d.ts.map +1 -0
  441. package/dist/types/plugins/remote-middleware/index.d.ts +5 -0
  442. package/dist/types/plugins/remote-middleware/index.d.ts.map +1 -0
  443. package/dist/types/plugins/routing-middleware/index.d.ts +13 -0
  444. package/dist/types/plugins/routing-middleware/index.d.ts.map +1 -0
  445. package/dist/types/plugins/schema-filter/index.d.ts +5 -0
  446. package/dist/types/plugins/schema-filter/index.d.ts.map +1 -0
  447. package/dist/types/plugins/validation/index.d.ts +7 -0
  448. package/dist/types/plugins/validation/index.d.ts.map +1 -0
  449. package/dist/types/vendor/tsub/tsub.d.ts +1 -0
  450. package/dist/types/vendor/tsub/tsub.d.ts.map +1 -0
  451. package/dist/types/vendor/tsub/types.d.ts +20 -0
  452. package/dist/types/vendor/tsub/types.d.ts.map +1 -0
  453. package/dist/umd/407.js +1 -0
  454. package/dist/umd/407.js.gz +0 -0
  455. package/dist/umd/852.js +1 -0
  456. package/dist/umd/852.js.gz +0 -0
  457. package/dist/umd/ajs-destination.js +1 -0
  458. package/dist/umd/ajs-destination.js.gz +0 -0
  459. package/dist/umd/auto-track.js +1 -0
  460. package/dist/umd/auto-track.js.gz +0 -0
  461. package/dist/umd/inAppPlugin.js +1 -0
  462. package/dist/umd/inAppPlugin.js.gz +0 -0
  463. package/dist/umd/index.js +1 -0
  464. package/dist/umd/index.js.gz +0 -0
  465. package/dist/umd/legacyVideos.js +1 -0
  466. package/dist/umd/legacyVideos.js.gz +0 -0
  467. package/dist/umd/queryString.js +1 -0
  468. package/dist/umd/queryString.js.gz +0 -0
  469. package/dist/umd/remoteMiddleware.js +1 -0
  470. package/dist/umd/remoteMiddleware.js.gz +0 -0
  471. package/dist/umd/schemaFilter.js +1 -0
  472. package/dist/umd/schemaFilter.js.gz +0 -0
  473. package/dist/umd/standalone.js +1 -0
  474. package/dist/umd/standalone.js.gz +0 -0
  475. package/dist/umd/tsub-middleware.js +1 -0
  476. package/dist/umd/tsub-middleware.js.gz +0 -0
  477. package/package.json +106 -0
  478. package/src/browser/browser-umd.ts +19 -0
  479. package/src/browser/index.ts +423 -0
  480. package/src/browser/standalone-analytics.ts +62 -0
  481. package/src/browser/standalone-interface.ts +11 -0
  482. package/src/browser/standalone.ts +90 -0
  483. package/src/core/analytics/index.ts +573 -0
  484. package/src/core/analytics/interfaces.ts +100 -0
  485. package/src/core/arguments-resolver/index.ts +166 -0
  486. package/src/core/auto-track.ts +152 -0
  487. package/src/core/buffer/index.ts +289 -0
  488. package/src/core/buffer/snippet.ts +46 -0
  489. package/src/core/callback/index.ts +1 -0
  490. package/src/core/connection/index.ts +13 -0
  491. package/src/core/context/index.ts +21 -0
  492. package/src/core/environment/index.ts +7 -0
  493. package/src/core/events/index.ts +254 -0
  494. package/src/core/events/interfaces.ts +36 -0
  495. package/src/core/inspector/index.ts +14 -0
  496. package/src/core/plugin/index.ts +12 -0
  497. package/src/core/query-string/gracefulDecodeURIComponent.ts +16 -0
  498. package/src/core/query-string/index.ts +64 -0
  499. package/src/core/query-string/pickPrefix.ts +20 -0
  500. package/src/core/queue/event-queue.ts +11 -0
  501. package/src/core/stats/index.ts +15 -0
  502. package/src/core/stats/remote-metrics.ts +137 -0
  503. package/src/core/user/index.ts +534 -0
  504. package/src/core/user/tld.ts +65 -0
  505. package/src/generated/version.ts +2 -0
  506. package/src/index.ts +12 -0
  507. package/src/lib/bind-all.ts +19 -0
  508. package/src/lib/browser-polyfill.ts +23 -0
  509. package/src/lib/create-deferred.ts +16 -0
  510. package/src/lib/csp-detection.ts +26 -0
  511. package/src/lib/embedded-write-key.ts +24 -0
  512. package/src/lib/fetch.ts +10 -0
  513. package/src/lib/get-global.ts +16 -0
  514. package/src/lib/get-process-env.ts +11 -0
  515. package/src/lib/global-analytics-helper.ts +31 -0
  516. package/src/lib/group-by.ts +30 -0
  517. package/src/lib/is-plan-event-enabled.ts +20 -0
  518. package/src/lib/is-thenable.ts +9 -0
  519. package/src/lib/load-script.ts +66 -0
  520. package/src/lib/merged-options.ts +46 -0
  521. package/src/lib/on-page-leave.ts +29 -0
  522. package/src/lib/p-while.ts +12 -0
  523. package/src/lib/parse-cdn.ts +93 -0
  524. package/src/lib/priority-queue/backoff.ts +24 -0
  525. package/src/lib/priority-queue/index.ts +6 -0
  526. package/src/lib/priority-queue/persisted.ts +127 -0
  527. package/src/lib/sleep.ts +4 -0
  528. package/src/lib/to-facade.ts +53 -0
  529. package/src/node/index.ts +36 -0
  530. package/src/node/node.browser.ts +7 -0
  531. package/src/plugins/ajs-destination/index.ts +388 -0
  532. package/src/plugins/ajs-destination/loader.ts +127 -0
  533. package/src/plugins/ajs-destination/types.ts +44 -0
  534. package/src/plugins/ajs-destination/utils.ts +34 -0
  535. package/src/plugins/analytics-node/index.ts +64 -0
  536. package/src/plugins/customerio/batched-dispatcher.ts +112 -0
  537. package/src/plugins/customerio/fetch-dispatcher.ts +24 -0
  538. package/src/plugins/customerio/index.ts +143 -0
  539. package/src/plugins/customerio/normalize.ts +223 -0
  540. package/src/plugins/customerio/schedule-flush.ts +58 -0
  541. package/src/plugins/in-app-plugin/events.ts +38 -0
  542. package/src/plugins/in-app-plugin/index.ts +241 -0
  543. package/src/plugins/legacy-video-plugins/index.ts +16 -0
  544. package/src/plugins/middleware/index.ts +131 -0
  545. package/src/plugins/page-enrichment/index.ts +127 -0
  546. package/src/plugins/remote-loader/index.ts +240 -0
  547. package/src/plugins/remote-middleware/index.ts +44 -0
  548. package/src/plugins/routing-middleware/index.ts +38 -0
  549. package/src/plugins/schema-filter/index.ts +90 -0
  550. package/src/plugins/validation/index.ts +80 -0
  551. package/src/test-helpers/browser-storage.ts +72 -0
  552. package/src/test-helpers/factories.ts +18 -0
  553. package/src/test-helpers/fetch-parse.ts +8 -0
  554. package/src/test-helpers/fixtures/cdn-settings.ts +299 -0
  555. package/src/test-helpers/fixtures/classic-destination.ts +25 -0
  556. package/src/test-helpers/fixtures/create-fetch-method.ts +24 -0
  557. package/src/test-helpers/test-writekeys.ts +5 -0
  558. package/src/test-helpers/type-assertions.ts +11 -0
  559. package/src/vendor/tsub/tsub.js.LICENSE.txt +53 -0
  560. package/src/vendor/tsub/tsub.ts +7 -0
  561. package/src/vendor/tsub/types.ts +19 -0
@@ -0,0 +1,573 @@
1
+ import {
2
+ AliasParams,
3
+ DispatchedEvent,
4
+ EventParams,
5
+ GroupParams,
6
+ PageParams,
7
+ resolveAliasArguments,
8
+ resolveArguments,
9
+ resolvePageArguments,
10
+ resolveUserArguments,
11
+ IdentifyParams,
12
+ } from '../arguments-resolver'
13
+ import type { FormArgs, LinkArgs } from '../auto-track'
14
+ import { isOffline } from '../connection'
15
+ import { Context } from '../context'
16
+ import { dispatch, Emitter } from '@customerio/cdp-analytics-core'
17
+ import {
18
+ Callback,
19
+ EventFactory,
20
+ Integrations,
21
+ Plan,
22
+ EventProperties,
23
+ CustomerioEvent,
24
+ } from '../events'
25
+ import type { Plugin } from '../plugin'
26
+ import { EventQueue } from '../queue/event-queue'
27
+ import {
28
+ CookieOptions,
29
+ getAvailableStorageOptions,
30
+ Group,
31
+ ID,
32
+ UniversalStorage,
33
+ User,
34
+ UserOptions,
35
+ } from '../user'
36
+ import autoBind from '../../lib/bind-all'
37
+ import { PersistedPriorityQueue } from '../../lib/priority-queue/persisted'
38
+ import type { LegacyDestination } from '../../plugins/ajs-destination'
39
+ import type {
40
+ LegacyIntegration,
41
+ ClassicIntegrationSource,
42
+ } from '../../plugins/ajs-destination/types'
43
+ import type {
44
+ DestinationMiddlewareFunction,
45
+ MiddlewareFunction,
46
+ } from '../../plugins/middleware'
47
+ import { version } from '../../generated/version'
48
+ import { PriorityQueue } from '../../lib/priority-queue'
49
+ import { getGlobal } from '../../lib/get-global'
50
+ import { AnalyticsClassic, AnalyticsCore } from './interfaces'
51
+ import { setGlobalAnalytics } from '../../lib/global-analytics-helper'
52
+
53
+ const deprecationWarning =
54
+ 'This is being deprecated and will be not be available in future releases of Analytics JS'
55
+
56
+ // reference any pre-existing "analytics" object so a user can restore the reference
57
+ const global: any = getGlobal()
58
+ const _analytics = global?.analytics
59
+
60
+ function createDefaultQueue(retryQueue = false, disablePersistance = false) {
61
+ const maxAttempts = retryQueue ? 4 : 1
62
+ const priorityQueue = disablePersistance
63
+ ? new PriorityQueue(maxAttempts, [])
64
+ : new PersistedPriorityQueue(maxAttempts, 'event-queue')
65
+ return new EventQueue(priorityQueue)
66
+ }
67
+
68
+ export interface AnalyticsSettings {
69
+ writeKey: string
70
+ timeout?: number
71
+ plugins?: Plugin[]
72
+ classicIntegrations?: ClassicIntegrationSource[]
73
+ }
74
+
75
+ export interface InitOptions {
76
+ /**
77
+ * Disables storing any data on the client-side via cookies or localstorage.
78
+ * Defaults to `false`.
79
+ *
80
+ */
81
+ disableClientPersistence?: boolean
82
+ /**
83
+ * Disables automatically converting ISO string event properties into Dates.
84
+ * ISO string to Date conversions occur right before sending events to a classic device mode integration,
85
+ * after any destination middleware have been ran.
86
+ * Defaults to `false`.
87
+ */
88
+ disableAutoISOConversion?: boolean
89
+ initialPageview?: boolean
90
+ cookie?: CookieOptions
91
+ user?: UserOptions
92
+ group?: UserOptions
93
+ integrations?: Integrations
94
+ plan?: Plan
95
+ retryQueue?: boolean
96
+ obfuscate?: boolean
97
+ /**
98
+ * Disables or sets constraints on processing of query string parameters
99
+ */
100
+ useQueryString?:
101
+ | boolean
102
+ | {
103
+ aid?: RegExp
104
+ uid?: RegExp
105
+ }
106
+ /**
107
+ * When using the snippet, this is the key that points to the global analytics instance (e.g. window.analytics).
108
+ * default: analytics
109
+ */
110
+ globalAnalyticsKey?: string
111
+ }
112
+
113
+ /* analytics-classic stubs */
114
+ function _stub(this: never) {
115
+ console.warn(deprecationWarning)
116
+ }
117
+
118
+ export class Analytics
119
+ extends Emitter
120
+ implements AnalyticsCore, AnalyticsClassic {
121
+ protected settings: AnalyticsSettings
122
+ private _user: User
123
+ private _group: Group
124
+ private eventFactory: EventFactory
125
+ private _debug = false
126
+ private _universalStorage: UniversalStorage<{
127
+ [k: string]: unknown
128
+ }>
129
+
130
+ initialized = false
131
+ integrations: Integrations
132
+ options: InitOptions
133
+ queue: EventQueue
134
+
135
+ constructor(
136
+ settings: AnalyticsSettings,
137
+ options?: InitOptions,
138
+ queue?: EventQueue,
139
+ user?: User,
140
+ group?: Group
141
+ ) {
142
+ super()
143
+ const cookieOptions = options?.cookie
144
+ const disablePersistance = options?.disableClientPersistence ?? false
145
+ this.settings = settings
146
+ this.settings.timeout = this.settings.timeout ?? 300
147
+ this.queue =
148
+ queue ?? createDefaultQueue(options?.retryQueue, disablePersistance)
149
+
150
+ this._universalStorage = new UniversalStorage(
151
+ disablePersistance ? ['memory'] : ['localStorage', 'cookie', 'memory'],
152
+ getAvailableStorageOptions(cookieOptions)
153
+ )
154
+
155
+ this._user =
156
+ user ??
157
+ new User(
158
+ disablePersistance
159
+ ? { ...options?.user, persist: false }
160
+ : options?.user,
161
+ cookieOptions
162
+ ).load()
163
+ this._group =
164
+ group ??
165
+ new Group(
166
+ disablePersistance
167
+ ? { ...options?.group, persist: false }
168
+ : options?.group,
169
+ cookieOptions
170
+ ).load()
171
+ this.eventFactory = new EventFactory(this._user)
172
+ this.integrations = options?.integrations ?? {}
173
+ this.options = options ?? {}
174
+
175
+ autoBind(this)
176
+ }
177
+
178
+ user = (): User => {
179
+ return this._user
180
+ }
181
+
182
+ get storage(): UniversalStorage {
183
+ return this._universalStorage
184
+ }
185
+
186
+ async track(...args: EventParams): Promise<DispatchedEvent> {
187
+ const [name, data, opts, cb] = resolveArguments(...args)
188
+
189
+ const CustomerioEvent = this.eventFactory.track(
190
+ name,
191
+ data as EventProperties,
192
+ opts,
193
+ this.integrations
194
+ )
195
+
196
+ return this._dispatch(CustomerioEvent, cb).then((ctx) => {
197
+ this.emit('track', name, ctx.event.properties, ctx.event.options)
198
+ return ctx
199
+ })
200
+ }
201
+
202
+ async page(...args: PageParams): Promise<DispatchedEvent> {
203
+ const [category, page, properties, options, callback] =
204
+ resolvePageArguments(...args)
205
+
206
+ const CustomerioEvent = this.eventFactory.page(
207
+ category,
208
+ page,
209
+ properties,
210
+ options,
211
+ this.integrations
212
+ )
213
+
214
+ return this._dispatch(CustomerioEvent, callback).then((ctx) => {
215
+ this.emit('page', category, page, ctx.event.properties, ctx.event.options)
216
+ return ctx
217
+ })
218
+ }
219
+
220
+ async identify(...args: IdentifyParams): Promise<DispatchedEvent> {
221
+ const [id, _traits, options, callback] = resolveUserArguments(this._user)(
222
+ ...args
223
+ )
224
+
225
+ this._user.identify(id, _traits)
226
+ const CustomerioEvent = this.eventFactory.identify(
227
+ this._user.id(),
228
+ this._user.traits(),
229
+ options,
230
+ this.integrations
231
+ )
232
+
233
+ return this._dispatch(CustomerioEvent, callback).then((ctx) => {
234
+ this.emit(
235
+ 'identify',
236
+ ctx.event.userId,
237
+ ctx.event.traits,
238
+ ctx.event.options
239
+ )
240
+ return ctx
241
+ })
242
+ }
243
+
244
+ group(): Group
245
+ group(...args: GroupParams): Promise<DispatchedEvent>
246
+ group(...args: GroupParams): Promise<DispatchedEvent> | Group {
247
+ if (args.length === 0) {
248
+ return this._group
249
+ }
250
+
251
+ const [id, _traits, options, callback] = resolveUserArguments(this._group)(
252
+ ...args
253
+ )
254
+
255
+ this._group.identify(id, _traits)
256
+ const groupId = this._group.id()
257
+ const groupTraits = this._group.traits()
258
+
259
+ const CustomerioEvent = this.eventFactory.group(
260
+ groupId,
261
+ groupTraits,
262
+ options,
263
+ this.integrations
264
+ )
265
+
266
+ return this._dispatch(CustomerioEvent, callback).then((ctx) => {
267
+ this.emit('group', ctx.event.groupId, ctx.event.traits, ctx.event.options)
268
+ return ctx
269
+ })
270
+ }
271
+
272
+ async alias(...args: AliasParams): Promise<DispatchedEvent> {
273
+ const [to, from, options, callback] = resolveAliasArguments(...args)
274
+ const CustomerioEvent = this.eventFactory.alias(
275
+ to,
276
+ from,
277
+ options,
278
+ this.integrations
279
+ )
280
+ return this._dispatch(CustomerioEvent, callback).then((ctx) => {
281
+ this.emit('alias', to, from, ctx.event.options)
282
+ return ctx
283
+ })
284
+ }
285
+
286
+ async screen(...args: PageParams): Promise<DispatchedEvent> {
287
+ const [category, page, properties, options, callback] =
288
+ resolvePageArguments(...args)
289
+
290
+ const CustomerioEvent = this.eventFactory.screen(
291
+ category,
292
+ page,
293
+ properties,
294
+ options,
295
+ this.integrations
296
+ )
297
+ return this._dispatch(CustomerioEvent, callback).then((ctx) => {
298
+ this.emit(
299
+ 'screen',
300
+ category,
301
+ page,
302
+ ctx.event.properties,
303
+ ctx.event.options
304
+ )
305
+ return ctx
306
+ })
307
+ }
308
+
309
+ async trackClick(...args: LinkArgs): Promise<Analytics> {
310
+ const autotrack = await import(
311
+ /* webpackChunkName: "auto-track" */ '../auto-track'
312
+ )
313
+ return autotrack.link.call(this, ...args)
314
+ }
315
+
316
+ async trackLink(...args: LinkArgs): Promise<Analytics> {
317
+ const autotrack = await import(
318
+ /* webpackChunkName: "auto-track" */ '../auto-track'
319
+ )
320
+ return autotrack.link.call(this, ...args)
321
+ }
322
+
323
+ async trackSubmit(...args: FormArgs): Promise<Analytics> {
324
+ const autotrack = await import(
325
+ /* webpackChunkName: "auto-track" */ '../auto-track'
326
+ )
327
+ return autotrack.form.call(this, ...args)
328
+ }
329
+
330
+ async trackForm(...args: FormArgs): Promise<Analytics> {
331
+ const autotrack = await import(
332
+ /* webpackChunkName: "auto-track" */ '../auto-track'
333
+ )
334
+ return autotrack.form.call(this, ...args)
335
+ }
336
+
337
+ async register(...plugins: Plugin[]): Promise<Context> {
338
+ const ctx = Context.system()
339
+
340
+ const registrations = plugins.map((xt) =>
341
+ this.queue.register(ctx, xt, this)
342
+ )
343
+ await Promise.all(registrations)
344
+
345
+ return ctx
346
+ }
347
+
348
+ async deregister(...plugins: string[]): Promise<Context> {
349
+ const ctx = Context.system()
350
+
351
+ const deregistrations = plugins.map((pl) => {
352
+ const plugin = this.queue.plugins.find((p) => p.name === pl)
353
+ if (plugin) {
354
+ return this.queue.deregister(ctx, plugin, this)
355
+ } else {
356
+ ctx.log('warn', `plugin ${pl} not found`)
357
+ }
358
+ })
359
+
360
+ await Promise.all(deregistrations)
361
+
362
+ return ctx
363
+ }
364
+
365
+ debug(toggle: boolean): Analytics {
366
+ // Make sure legacy ajs debug gets turned off if it was enabled before upgrading.
367
+ if (toggle === false && localStorage.getItem('debug')) {
368
+ localStorage.removeItem('debug')
369
+ }
370
+ this._debug = toggle
371
+ return this
372
+ }
373
+
374
+ reset(): void {
375
+ this._user.reset()
376
+ this._group.reset()
377
+ this.emit('reset')
378
+ }
379
+
380
+ timeout(timeout: number): void {
381
+ this.settings.timeout = timeout
382
+ }
383
+
384
+ private async _dispatch(
385
+ event: CustomerioEvent,
386
+ callback?: Callback
387
+ ): Promise<DispatchedEvent> {
388
+ const ctx = new Context(event)
389
+ if (isOffline() && !this.options.retryQueue) {
390
+ return ctx
391
+ }
392
+ return dispatch(ctx, this.queue, this, {
393
+ callback,
394
+ debug: this._debug,
395
+ timeout: this.settings.timeout,
396
+ })
397
+ }
398
+
399
+ async addSourceMiddleware(fn: MiddlewareFunction): Promise<Analytics> {
400
+ await this.queue.criticalTasks.run(async () => {
401
+ const { sourceMiddlewarePlugin } = await import(
402
+ /* webpackChunkName: "middleware" */ '../../plugins/middleware'
403
+ )
404
+
405
+ const integrations: Record<string, boolean> = {}
406
+ this.queue.plugins.forEach((plugin) => {
407
+ if (plugin.type === 'destination') {
408
+ return (integrations[plugin.name] = true)
409
+ }
410
+ })
411
+
412
+ const plugin = sourceMiddlewarePlugin(fn, integrations)
413
+ await this.register(plugin)
414
+ })
415
+
416
+ return this
417
+ }
418
+
419
+ /* TODO: This does not have to return a promise? */
420
+ addDestinationMiddleware(
421
+ integrationName: string,
422
+ ...middlewares: DestinationMiddlewareFunction[]
423
+ ): Promise<Analytics> {
424
+ const legacyDestinations = this.queue.plugins.filter(
425
+ (xt) => xt.name.toLowerCase() === integrationName.toLowerCase()
426
+ ) as LegacyDestination[]
427
+
428
+ legacyDestinations.forEach((destination) => {
429
+ destination.addMiddleware(...middlewares)
430
+ })
431
+ return Promise.resolve(this)
432
+ }
433
+
434
+ setAnonymousId(id?: string): ID {
435
+ return this._user.anonymousId(id)
436
+ }
437
+
438
+ async queryString(query: string): Promise<Context[]> {
439
+ if (this.options.useQueryString === false) {
440
+ return []
441
+ }
442
+
443
+ const { queryString } = await import(
444
+ /* webpackChunkName: "queryString" */ '../query-string'
445
+ )
446
+ return queryString(this, query)
447
+ }
448
+
449
+ /**
450
+ * @deprecated This function does not register a destination plugin.
451
+ *
452
+ * Instantiates a legacy Analytics.js destination.
453
+ *
454
+ * This function does not register the destination as an Analytics.JS plugin,
455
+ * all the it does it to invoke the factory function back.
456
+ */
457
+ use(legacyPluginFactory: (analytics: Analytics) => void): Analytics {
458
+ legacyPluginFactory(this)
459
+ return this
460
+ }
461
+
462
+ async ready(
463
+ callback: Function = (res: Promise<unknown>[]): Promise<unknown>[] => res
464
+ ): Promise<unknown> {
465
+ return Promise.all(
466
+ this.queue.plugins.map((i) => (i.ready ? i.ready() : Promise.resolve()))
467
+ ).then((res) => {
468
+ callback(res)
469
+ return res
470
+ })
471
+ }
472
+
473
+ // analytics-classic api
474
+
475
+ noConflict(): Analytics {
476
+ console.warn(deprecationWarning)
477
+ setGlobalAnalytics(_analytics ?? this)
478
+ return this
479
+ }
480
+
481
+ normalize(msg: CustomerioEvent): CustomerioEvent {
482
+ console.warn(deprecationWarning)
483
+ return this.eventFactory.normalize(msg)
484
+ }
485
+
486
+ get failedInitializations(): string[] {
487
+ console.warn(deprecationWarning)
488
+ return this.queue.failedInitializations
489
+ }
490
+
491
+ get VERSION(): string {
492
+ return version
493
+ }
494
+
495
+ /* @deprecated - noop */
496
+ async initialize(
497
+ _settings?: AnalyticsSettings,
498
+ _options?: InitOptions
499
+ ): Promise<Analytics> {
500
+ console.warn(deprecationWarning)
501
+ return Promise.resolve(this)
502
+ }
503
+
504
+ init = this.initialize.bind(this)
505
+
506
+ async pageview(url: string): Promise<Analytics> {
507
+ console.warn(deprecationWarning)
508
+ await this.page({ path: url })
509
+ return this
510
+ }
511
+
512
+ get plugins() {
513
+ console.warn(deprecationWarning)
514
+ // @ts-expect-error
515
+ return this._plugins ?? {}
516
+ }
517
+
518
+ get Integrations() {
519
+ console.warn(deprecationWarning)
520
+ const integrations = this.queue.plugins
521
+ .filter((plugin) => plugin.type === 'destination')
522
+ .reduce((acc, plugin) => {
523
+ const name = `${plugin.name
524
+ .toLowerCase()
525
+ .replace('.', '')
526
+ .split(' ')
527
+ .join('-')}Integration`
528
+
529
+ // @ts-expect-error
530
+ const integration = window[name] as
531
+ | (LegacyIntegration & { Integration?: LegacyIntegration })
532
+ | undefined
533
+
534
+ if (!integration) {
535
+ return acc
536
+ }
537
+
538
+ const nested = integration.Integration // hack - Google Analytics function resides in the "Integration" field
539
+ if (nested) {
540
+ acc[plugin.name] = nested
541
+ return acc
542
+ }
543
+
544
+ acc[plugin.name] = integration as LegacyIntegration
545
+ return acc
546
+ }, {} as Record<string, LegacyIntegration>)
547
+
548
+ return integrations
549
+ }
550
+
551
+ log = _stub
552
+ addIntegrationMiddleware = _stub
553
+ listeners = _stub
554
+ addEventListener = _stub
555
+ removeAllListeners = _stub
556
+ removeListener = _stub
557
+ removeEventListener = _stub
558
+ hasListeners = _stub
559
+ add = _stub
560
+ addIntegration = _stub
561
+
562
+ // snippet function
563
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
564
+ push(args: any[]) {
565
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
566
+ const an = this as any
567
+ const method = args.shift()
568
+ if (method) {
569
+ if (!an[method]) return
570
+ }
571
+ an[method].apply(this, args)
572
+ }
573
+ }
@@ -0,0 +1,100 @@
1
+ import type { Analytics, AnalyticsSettings, InitOptions } from '.'
2
+ import type { Plugin } from '../plugin'
3
+ import type {
4
+ EventParams,
5
+ DispatchedEvent,
6
+ PageParams,
7
+ IdentifyParams,
8
+ AliasParams,
9
+ GroupParams,
10
+ } from '../arguments-resolver'
11
+ import type { Context } from '../context'
12
+ import type { CustomerioEvent } from '../events'
13
+ import type { Group, User } from '../user'
14
+ import type { LegacyIntegration } from '../../plugins/ajs-destination/types'
15
+ import { CoreAnalytics } from '@customerio/cdp-analytics-core'
16
+
17
+ // we can define a contract because:
18
+ // - it gives us a neat place to put all our typedocs (they end up being inherited by the class that implements them).
19
+ // - it makes it easy to reason about what's being shared between browser and node
20
+
21
+ /**
22
+ * All of these methods are a no-op.
23
+ */
24
+ /** @deprecated */
25
+ interface AnalyticsClassicStubs {
26
+ /** @deprecated */
27
+ log(this: never): void
28
+ /** @deprecated */
29
+ addIntegrationMiddleware(this: never): void
30
+ /** @deprecated */
31
+ listeners(this: never): void
32
+ /** @deprecated */
33
+ addEventListener(this: never): void
34
+ /** @deprecated */
35
+ removeAllListeners(this: never): void
36
+ /** @deprecated */
37
+ removeListener(this: never): void
38
+ /** @deprecated */
39
+ removeEventListener(this: never): void
40
+ /** @deprecated */
41
+ hasListeners(this: never): void
42
+ /** @deprecated */
43
+ // This function is only used to add GA and Appcue, but these are already being added to Integrations by AJSN
44
+ addIntegration(this: never): void
45
+ /** @deprecated */
46
+ add(this: never): void
47
+ }
48
+
49
+ /** @deprecated */
50
+ export interface AnalyticsClassic extends AnalyticsClassicStubs {
51
+ /** @deprecated */
52
+ initialize(
53
+ settings?: AnalyticsSettings,
54
+ options?: InitOptions
55
+ ): Promise<Analytics>
56
+
57
+ /** @deprecated */
58
+ noConflict(): Analytics
59
+
60
+ /** @deprecated */
61
+ normalize(msg: CustomerioEvent): CustomerioEvent
62
+
63
+ /** @deprecated */
64
+ readonly failedInitializations: string[]
65
+
66
+ /** @deprecated */
67
+ pageview(url: string): Promise<Analytics>
68
+
69
+ /** @deprecated*/
70
+ readonly plugins: any
71
+
72
+ /** @deprecated */
73
+ readonly Integrations: Record<string, LegacyIntegration>
74
+ }
75
+
76
+ /**
77
+ * Interface implemented by concrete Analytics class (commonly accessible if you use "await" on AnalyticsBrowser.load())
78
+ */
79
+ export interface AnalyticsCore extends CoreAnalytics {
80
+ track(...args: EventParams): Promise<DispatchedEvent>
81
+ page(...args: PageParams): Promise<DispatchedEvent>
82
+ identify(...args: IdentifyParams): Promise<DispatchedEvent>
83
+ group(): Group
84
+ group(...args: GroupParams): Promise<DispatchedEvent>
85
+ alias(...args: AliasParams): Promise<DispatchedEvent>
86
+ screen(...args: PageParams): Promise<DispatchedEvent>
87
+ register(...plugins: Plugin[]): Promise<Context>
88
+ deregister(...plugins: string[]): Promise<Context>
89
+ user(): User
90
+ readonly VERSION: string
91
+ }
92
+
93
+ /**
94
+ * Interface implemented by AnalyticsBrowser (buffered version of analytics) (commonly accessible through AnalyticsBrowser.load())
95
+ */
96
+ export type AnalyticsBrowserCore = Omit<AnalyticsCore, 'group' | 'user'> & {
97
+ group(): Promise<Group>
98
+ group(...args: GroupParams): Promise<DispatchedEvent>
99
+ user(): Promise<User>
100
+ }