@selwise/widget 0.0.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (643) hide show
  1. package/README.md +2 -1
  2. package/dist/npm/cjs/index.cjs +2 -0
  3. package/dist/npm/cjs/index.cjs.LICENSE.txt +1 -0
  4. package/dist/npm/cjs/index.d.ts +59 -0
  5. package/dist/npm/esm/index.d.ts +59 -4
  6. package/dist/npm/esm/index.mjs +2 -0
  7. package/dist/npm/esm/index.mjs.LICENSE.txt +1 -0
  8. package/package.json +14 -16
  9. package/dist/npm/cjs/constants.js +0 -167
  10. package/dist/npm/cjs/constants.js.map +0 -1
  11. package/dist/npm/cjs/core/conflict-resolver.js +0 -203
  12. package/dist/npm/cjs/core/conflict-resolver.js.map +0 -1
  13. package/dist/npm/cjs/core/event-batcher.js +0 -977
  14. package/dist/npm/cjs/core/event-batcher.js.map +0 -1
  15. package/dist/npm/cjs/core/experiment-overrides.js +0 -178
  16. package/dist/npm/cjs/core/experiment-overrides.js.map +0 -1
  17. package/dist/npm/cjs/core/experiments.js +0 -317
  18. package/dist/npm/cjs/core/experiments.js.map +0 -1
  19. package/dist/npm/cjs/core/frequency-caps.js +0 -297
  20. package/dist/npm/cjs/core/frequency-caps.js.map +0 -1
  21. package/dist/npm/cjs/core/index.js +0 -27
  22. package/dist/npm/cjs/core/index.js.map +0 -1
  23. package/dist/npm/cjs/core/indexeddb-queue.js +0 -333
  24. package/dist/npm/cjs/core/indexeddb-queue.js.map +0 -1
  25. package/dist/npm/cjs/core/journey-tracker.js +0 -243
  26. package/dist/npm/cjs/core/journey-tracker.js.map +0 -1
  27. package/dist/npm/cjs/core/page-targeting/index.js +0 -72
  28. package/dist/npm/cjs/core/page-targeting/index.js.map +0 -1
  29. package/dist/npm/cjs/core/script-executor.js +0 -80
  30. package/dist/npm/cjs/core/script-executor.js.map +0 -1
  31. package/dist/npm/cjs/core/segments.js +0 -172
  32. package/dist/npm/cjs/core/segments.js.map +0 -1
  33. package/dist/npm/cjs/core/tracker.js +0 -798
  34. package/dist/npm/cjs/core/tracker.js.map +0 -1
  35. package/dist/npm/cjs/datalayer/basket.js +0 -385
  36. package/dist/npm/cjs/datalayer/basket.js.map +0 -1
  37. package/dist/npm/cjs/datalayer/cart-association.js +0 -226
  38. package/dist/npm/cjs/datalayer/cart-association.js.map +0 -1
  39. package/dist/npm/cjs/datalayer/checkout.js +0 -382
  40. package/dist/npm/cjs/datalayer/checkout.js.map +0 -1
  41. package/dist/npm/cjs/datalayer/constants.js +0 -163
  42. package/dist/npm/cjs/datalayer/constants.js.map +0 -1
  43. package/dist/npm/cjs/datalayer/index.js +0 -1010
  44. package/dist/npm/cjs/datalayer/index.js.map +0 -1
  45. package/dist/npm/cjs/datalayer/listener.js +0 -416
  46. package/dist/npm/cjs/datalayer/listener.js.map +0 -1
  47. package/dist/npm/cjs/datalayer/page.js +0 -343
  48. package/dist/npm/cjs/datalayer/page.js.map +0 -1
  49. package/dist/npm/cjs/datalayer/product.js +0 -517
  50. package/dist/npm/cjs/datalayer/product.js.map +0 -1
  51. package/dist/npm/cjs/datalayer/reverse-mappings.js +0 -139
  52. package/dist/npm/cjs/datalayer/reverse-mappings.js.map +0 -1
  53. package/dist/npm/cjs/datalayer/search.js +0 -363
  54. package/dist/npm/cjs/datalayer/search.js.map +0 -1
  55. package/dist/npm/cjs/datalayer/types.js +0 -134
  56. package/dist/npm/cjs/datalayer/types.js.map +0 -1
  57. package/dist/npm/cjs/datalayer/user.js +0 -372
  58. package/dist/npm/cjs/datalayer/user.js.map +0 -1
  59. package/dist/npm/cjs/debug/index.js +0 -679
  60. package/dist/npm/cjs/debug/index.js.map +0 -1
  61. package/dist/npm/cjs/entries/cdn.js +0 -72
  62. package/dist/npm/cjs/entries/cdn.js.map +0 -1
  63. package/dist/npm/cjs/index.js +0 -10
  64. package/dist/npm/cjs/index.js.map +0 -1
  65. package/dist/npm/cjs/modules/contract/recommendation-contract.js +0 -119
  66. package/dist/npm/cjs/modules/contract/recommendation-contract.js.map +0 -1
  67. package/dist/npm/cjs/modules/contract/search-contract.js +0 -18
  68. package/dist/npm/cjs/modules/contract/search-contract.js.map +0 -1
  69. package/dist/npm/cjs/modules/contract/tracking-contract.js +0 -16
  70. package/dist/npm/cjs/modules/contract/tracking-contract.js.map +0 -1
  71. package/dist/npm/cjs/modules/contract/vendor/recommendation-contract/configs.js +0 -164
  72. package/dist/npm/cjs/modules/contract/vendor/recommendation-contract/configs.js.map +0 -1
  73. package/dist/npm/cjs/modules/contract/vendor/recommendation-contract/index.js +0 -21
  74. package/dist/npm/cjs/modules/contract/vendor/recommendation-contract/index.js.map +0 -1
  75. package/dist/npm/cjs/modules/contract/vendor/recommendation-contract/types.js +0 -3
  76. package/dist/npm/cjs/modules/contract/vendor/recommendation-contract/types.js.map +0 -1
  77. package/dist/npm/cjs/modules/contract/vendor/recommendation-contract/validators.js +0 -107
  78. package/dist/npm/cjs/modules/contract/vendor/recommendation-contract/validators.js.map +0 -1
  79. package/dist/npm/cjs/modules/contract/vendor/search-contract/configs.js +0 -404
  80. package/dist/npm/cjs/modules/contract/vendor/search-contract/configs.js.map +0 -1
  81. package/dist/npm/cjs/modules/contract/vendor/search-contract/index.js +0 -21
  82. package/dist/npm/cjs/modules/contract/vendor/search-contract/index.js.map +0 -1
  83. package/dist/npm/cjs/modules/contract/vendor/search-contract/types.js +0 -8
  84. package/dist/npm/cjs/modules/contract/vendor/search-contract/types.js.map +0 -1
  85. package/dist/npm/cjs/modules/contract/vendor/search-contract/validators.js +0 -126
  86. package/dist/npm/cjs/modules/contract/vendor/search-contract/validators.js.map +0 -1
  87. package/dist/npm/cjs/modules/contract/vendor/tracking-contract/configs.js +0 -133
  88. package/dist/npm/cjs/modules/contract/vendor/tracking-contract/configs.js.map +0 -1
  89. package/dist/npm/cjs/modules/contract/vendor/tracking-contract/index.js +0 -21
  90. package/dist/npm/cjs/modules/contract/vendor/tracking-contract/index.js.map +0 -1
  91. package/dist/npm/cjs/modules/contract/vendor/tracking-contract/types.js +0 -3
  92. package/dist/npm/cjs/modules/contract/vendor/tracking-contract/types.js.map +0 -1
  93. package/dist/npm/cjs/modules/contract/vendor/tracking-contract/validators.js +0 -154
  94. package/dist/npm/cjs/modules/contract/vendor/tracking-contract/validators.js.map +0 -1
  95. package/dist/npm/cjs/modules/contract/vendor/widget-contract/configs.js +0 -1481
  96. package/dist/npm/cjs/modules/contract/vendor/widget-contract/configs.js.map +0 -1
  97. package/dist/npm/cjs/modules/contract/vendor/widget-contract/index.js +0 -22
  98. package/dist/npm/cjs/modules/contract/vendor/widget-contract/index.js.map +0 -1
  99. package/dist/npm/cjs/modules/contract/vendor/widget-contract/layout.js +0 -21
  100. package/dist/npm/cjs/modules/contract/vendor/widget-contract/layout.js.map +0 -1
  101. package/dist/npm/cjs/modules/contract/vendor/widget-contract/types.js +0 -8
  102. package/dist/npm/cjs/modules/contract/vendor/widget-contract/types.js.map +0 -1
  103. package/dist/npm/cjs/modules/contract/vendor/widget-contract/validators.js +0 -139
  104. package/dist/npm/cjs/modules/contract/vendor/widget-contract/validators.js.map +0 -1
  105. package/dist/npm/cjs/modules/contract/widget-contract.js +0 -10
  106. package/dist/npm/cjs/modules/contract/widget-contract.js.map +0 -1
  107. package/dist/npm/cjs/modules/products/tracking.js +0 -214
  108. package/dist/npm/cjs/modules/products/tracking.js.map +0 -1
  109. package/dist/npm/cjs/modules/recommendation/cart-handlers.js +0 -52
  110. package/dist/npm/cjs/modules/recommendation/cart-handlers.js.map +0 -1
  111. package/dist/npm/cjs/modules/recommendation/components/product-card-renderer.js +0 -287
  112. package/dist/npm/cjs/modules/recommendation/components/product-card-renderer.js.map +0 -1
  113. package/dist/npm/cjs/modules/recommendation/index.js +0 -678
  114. package/dist/npm/cjs/modules/recommendation/index.js.map +0 -1
  115. package/dist/npm/cjs/modules/recommendation/renderers/grid.js +0 -21
  116. package/dist/npm/cjs/modules/recommendation/renderers/grid.js.map +0 -1
  117. package/dist/npm/cjs/modules/recommendation/renderers/list.js +0 -22
  118. package/dist/npm/cjs/modules/recommendation/renderers/list.js.map +0 -1
  119. package/dist/npm/cjs/modules/recommendation/renderers/masonry.js +0 -22
  120. package/dist/npm/cjs/modules/recommendation/renderers/masonry.js.map +0 -1
  121. package/dist/npm/cjs/modules/recommendation/renderers/slider-renderer.js +0 -145
  122. package/dist/npm/cjs/modules/recommendation/renderers/slider-renderer.js.map +0 -1
  123. package/dist/npm/cjs/modules/recommendation/slider-controls.js +0 -201
  124. package/dist/npm/cjs/modules/recommendation/slider-controls.js.map +0 -1
  125. package/dist/npm/cjs/modules/recommendation/tracking.js +0 -247
  126. package/dist/npm/cjs/modules/recommendation/tracking.js.map +0 -1
  127. package/dist/npm/cjs/modules/recommendation/utils/dom.js +0 -70
  128. package/dist/npm/cjs/modules/recommendation/utils/dom.js.map +0 -1
  129. package/dist/npm/cjs/modules/recommendation/utils/format.js +0 -13
  130. package/dist/npm/cjs/modules/recommendation/utils/format.js.map +0 -1
  131. package/dist/npm/cjs/modules/recommendation/utils/index.js +0 -22
  132. package/dist/npm/cjs/modules/recommendation/utils/index.js.map +0 -1
  133. package/dist/npm/cjs/modules/renderer/helpers.js +0 -16
  134. package/dist/npm/cjs/modules/renderer/helpers.js.map +0 -1
  135. package/dist/npm/cjs/modules/renderer/index.js +0 -52
  136. package/dist/npm/cjs/modules/renderer/index.js.map +0 -1
  137. package/dist/npm/cjs/modules/renderer/style-resolver.js +0 -11
  138. package/dist/npm/cjs/modules/renderer/style-resolver.js.map +0 -1
  139. package/dist/npm/cjs/modules/renderer/styles/index.js +0 -254
  140. package/dist/npm/cjs/modules/renderer/styles/index.js.map +0 -1
  141. package/dist/npm/cjs/modules/renderer/styles.js +0 -7
  142. package/dist/npm/cjs/modules/renderer/styles.js.map +0 -1
  143. package/dist/npm/cjs/modules/renderer/utils/helpers.js +0 -243
  144. package/dist/npm/cjs/modules/renderer/utils/helpers.js.map +0 -1
  145. package/dist/npm/cjs/modules/renderer/utils/image-renderer.js +0 -65
  146. package/dist/npm/cjs/modules/renderer/utils/image-renderer.js.map +0 -1
  147. package/dist/npm/cjs/modules/renderer/utils/placement.js +0 -34
  148. package/dist/npm/cjs/modules/renderer/utils/placement.js.map +0 -1
  149. package/dist/npm/cjs/modules/renderer/utils.js +0 -61
  150. package/dist/npm/cjs/modules/renderer/utils.js.map +0 -1
  151. package/dist/npm/cjs/modules/renderer/widgets/announcement-bar.js +0 -84
  152. package/dist/npm/cjs/modules/renderer/widgets/announcement-bar.js.map +0 -1
  153. package/dist/npm/cjs/modules/renderer/widgets/cart-count.js +0 -211
  154. package/dist/npm/cjs/modules/renderer/widgets/cart-count.js.map +0 -1
  155. package/dist/npm/cjs/modules/renderer/widgets/cookie-consent.js +0 -459
  156. package/dist/npm/cjs/modules/renderer/widgets/cookie-consent.js.map +0 -1
  157. package/dist/npm/cjs/modules/renderer/widgets/countdown-timer.js +0 -132
  158. package/dist/npm/cjs/modules/renderer/widgets/countdown-timer.js.map +0 -1
  159. package/dist/npm/cjs/modules/renderer/widgets/custom.js +0 -58
  160. package/dist/npm/cjs/modules/renderer/widgets/custom.js.map +0 -1
  161. package/dist/npm/cjs/modules/renderer/widgets/embedded-card.js +0 -97
  162. package/dist/npm/cjs/modules/renderer/widgets/embedded-card.js.map +0 -1
  163. package/dist/npm/cjs/modules/renderer/widgets/exit-intent-popup.js +0 -151
  164. package/dist/npm/cjs/modules/renderer/widgets/exit-intent-popup.js.map +0 -1
  165. package/dist/npm/cjs/modules/renderer/widgets/floating-button.js +0 -70
  166. package/dist/npm/cjs/modules/renderer/widgets/floating-button.js.map +0 -1
  167. package/dist/npm/cjs/modules/renderer/widgets/helpers.js +0 -87
  168. package/dist/npm/cjs/modules/renderer/widgets/helpers.js.map +0 -1
  169. package/dist/npm/cjs/modules/renderer/widgets/index.js +0 -39
  170. package/dist/npm/cjs/modules/renderer/widgets/index.js.map +0 -1
  171. package/dist/npm/cjs/modules/renderer/widgets/inline-banner.js +0 -124
  172. package/dist/npm/cjs/modules/renderer/widgets/inline-banner.js.map +0 -1
  173. package/dist/npm/cjs/modules/renderer/widgets/newsletter.js +0 -280
  174. package/dist/npm/cjs/modules/renderer/widgets/newsletter.js.map +0 -1
  175. package/dist/npm/cjs/modules/renderer/widgets/product-view-count.js +0 -197
  176. package/dist/npm/cjs/modules/renderer/widgets/product-view-count.js.map +0 -1
  177. package/dist/npm/cjs/modules/renderer/widgets/slide-in.js +0 -105
  178. package/dist/npm/cjs/modules/renderer/widgets/slide-in.js.map +0 -1
  179. package/dist/npm/cjs/modules/renderer/widgets/sticky-footer.js +0 -47
  180. package/dist/npm/cjs/modules/renderer/widgets/sticky-footer.js.map +0 -1
  181. package/dist/npm/cjs/modules/search/cart/index.js +0 -42
  182. package/dist/npm/cjs/modules/search/cart/index.js.map +0 -1
  183. package/dist/npm/cjs/modules/search/components/index.js +0 -13
  184. package/dist/npm/cjs/modules/search/components/index.js.map +0 -1
  185. package/dist/npm/cjs/modules/search/components/search-box.js +0 -28
  186. package/dist/npm/cjs/modules/search/components/search-box.js.map +0 -1
  187. package/dist/npm/cjs/modules/search/components/search-item.js +0 -197
  188. package/dist/npm/cjs/modules/search/components/search-item.js.map +0 -1
  189. package/dist/npm/cjs/modules/search/components/suggestions.js +0 -132
  190. package/dist/npm/cjs/modules/search/components/suggestions.js.map +0 -1
  191. package/dist/npm/cjs/modules/search/index.js +0 -646
  192. package/dist/npm/cjs/modules/search/index.js.map +0 -1
  193. package/dist/npm/cjs/modules/search/renderers/position-renderers.js +0 -229
  194. package/dist/npm/cjs/modules/search/renderers/position-renderers.js.map +0 -1
  195. package/dist/npm/cjs/modules/search/renderers/results-renderer.js +0 -180
  196. package/dist/npm/cjs/modules/search/renderers/results-renderer.js.map +0 -1
  197. package/dist/npm/cjs/modules/search/services/api-service.js +0 -121
  198. package/dist/npm/cjs/modules/search/services/api-service.js.map +0 -1
  199. package/dist/npm/cjs/modules/search/services/tracking-service.js +0 -263
  200. package/dist/npm/cjs/modules/search/services/tracking-service.js.map +0 -1
  201. package/dist/npm/cjs/modules/search/styles.js +0 -864
  202. package/dist/npm/cjs/modules/search/styles.js.map +0 -1
  203. package/dist/npm/cjs/modules/search/utils/helpers.js +0 -100
  204. package/dist/npm/cjs/modules/search/utils/helpers.js.map +0 -1
  205. package/dist/npm/cjs/modules/search/utils/icons.js +0 -41
  206. package/dist/npm/cjs/modules/search/utils/icons.js.map +0 -1
  207. package/dist/npm/cjs/modules/search/utils/index.js +0 -22
  208. package/dist/npm/cjs/modules/search/utils/index.js.map +0 -1
  209. package/dist/npm/cjs/modules/search/utils/storage.js +0 -58
  210. package/dist/npm/cjs/modules/search/utils/storage.js.map +0 -1
  211. package/dist/npm/cjs/selwise.js +0 -1160
  212. package/dist/npm/cjs/selwise.js.map +0 -1
  213. package/dist/npm/cjs/sentry-test.js +0 -118
  214. package/dist/npm/cjs/sentry-test.js.map +0 -1
  215. package/dist/npm/cjs/sentry.js +0 -451
  216. package/dist/npm/cjs/sentry.js.map +0 -1
  217. package/dist/npm/cjs/shared/cart/handlers.js +0 -259
  218. package/dist/npm/cjs/shared/cart/handlers.js.map +0 -1
  219. package/dist/npm/cjs/shared/cart/index.js +0 -23
  220. package/dist/npm/cjs/shared/cart/index.js.map +0 -1
  221. package/dist/npm/cjs/shared/cart/types.js +0 -7
  222. package/dist/npm/cjs/shared/cart/types.js.map +0 -1
  223. package/dist/npm/cjs/shared/product-card/index.js +0 -24
  224. package/dist/npm/cjs/shared/product-card/index.js.map +0 -1
  225. package/dist/npm/cjs/shared/product-card/renderer.js +0 -341
  226. package/dist/npm/cjs/shared/product-card/renderer.js.map +0 -1
  227. package/dist/npm/cjs/shared/product-card/styles.js +0 -195
  228. package/dist/npm/cjs/shared/product-card/styles.js.map +0 -1
  229. package/dist/npm/cjs/shared/product-card/types.js +0 -67
  230. package/dist/npm/cjs/shared/product-card/types.js.map +0 -1
  231. package/dist/npm/cjs/types/config.js +0 -6
  232. package/dist/npm/cjs/types/config.js.map +0 -1
  233. package/dist/npm/cjs/types/experiments.js +0 -17
  234. package/dist/npm/cjs/types/experiments.js.map +0 -1
  235. package/dist/npm/cjs/types/global-api.js +0 -3
  236. package/dist/npm/cjs/types/global-api.js.map +0 -1
  237. package/dist/npm/cjs/types/index.js +0 -27
  238. package/dist/npm/cjs/types/index.js.map +0 -1
  239. package/dist/npm/cjs/types/recommendation.js +0 -6
  240. package/dist/npm/cjs/types/recommendation.js.map +0 -1
  241. package/dist/npm/cjs/types/renderer.js +0 -6
  242. package/dist/npm/cjs/types/renderer.js.map +0 -1
  243. package/dist/npm/cjs/types/search.js +0 -6
  244. package/dist/npm/cjs/types/search.js.map +0 -1
  245. package/dist/npm/cjs/utils/api-url.js +0 -35
  246. package/dist/npm/cjs/utils/api-url.js.map +0 -1
  247. package/dist/npm/cjs/utils/debounce.js +0 -74
  248. package/dist/npm/cjs/utils/debounce.js.map +0 -1
  249. package/dist/npm/cjs/utils/event-id.js +0 -23
  250. package/dist/npm/cjs/utils/event-id.js.map +0 -1
  251. package/dist/npm/cjs/utils/index.js +0 -28
  252. package/dist/npm/cjs/utils/index.js.map +0 -1
  253. package/dist/npm/cjs/utils/logger.js +0 -74
  254. package/dist/npm/cjs/utils/logger.js.map +0 -1
  255. package/dist/npm/cjs/utils/sanitize.js +0 -159
  256. package/dist/npm/cjs/utils/sanitize.js.map +0 -1
  257. package/dist/npm/cjs/utils/storage.js +0 -285
  258. package/dist/npm/cjs/utils/storage.js.map +0 -1
  259. package/dist/npm/cjs/utils/tracking-metadata.js +0 -18
  260. package/dist/npm/cjs/utils/tracking-metadata.js.map +0 -1
  261. package/dist/npm/cjs/utils/url-matcher.js +0 -11
  262. package/dist/npm/cjs/utils/url-matcher.js.map +0 -1
  263. package/dist/npm/esm/constants.d.ts +0 -130
  264. package/dist/npm/esm/constants.js +0 -164
  265. package/dist/npm/esm/constants.js.map +0 -1
  266. package/dist/npm/esm/core/conflict-resolver.d.ts +0 -96
  267. package/dist/npm/esm/core/conflict-resolver.js +0 -198
  268. package/dist/npm/esm/core/conflict-resolver.js.map +0 -1
  269. package/dist/npm/esm/core/event-batcher.d.ts +0 -253
  270. package/dist/npm/esm/core/event-batcher.js +0 -973
  271. package/dist/npm/esm/core/event-batcher.js.map +0 -1
  272. package/dist/npm/esm/core/experiment-overrides.d.ts +0 -7
  273. package/dist/npm/esm/core/experiment-overrides.js +0 -172
  274. package/dist/npm/esm/core/experiment-overrides.js.map +0 -1
  275. package/dist/npm/esm/core/experiments.d.ts +0 -90
  276. package/dist/npm/esm/core/experiments.js +0 -313
  277. package/dist/npm/esm/core/experiments.js.map +0 -1
  278. package/dist/npm/esm/core/frequency-caps.d.ts +0 -124
  279. package/dist/npm/esm/core/frequency-caps.js +0 -292
  280. package/dist/npm/esm/core/frequency-caps.js.map +0 -1
  281. package/dist/npm/esm/core/index.d.ts +0 -10
  282. package/dist/npm/esm/core/index.js +0 -11
  283. package/dist/npm/esm/core/index.js.map +0 -1
  284. package/dist/npm/esm/core/indexeddb-queue.d.ts +0 -83
  285. package/dist/npm/esm/core/indexeddb-queue.js +0 -328
  286. package/dist/npm/esm/core/indexeddb-queue.js.map +0 -1
  287. package/dist/npm/esm/core/journey-tracker.d.ts +0 -102
  288. package/dist/npm/esm/core/journey-tracker.js +0 -237
  289. package/dist/npm/esm/core/journey-tracker.js.map +0 -1
  290. package/dist/npm/esm/core/page-targeting/index.d.ts +0 -8
  291. package/dist/npm/esm/core/page-targeting/index.js +0 -67
  292. package/dist/npm/esm/core/page-targeting/index.js.map +0 -1
  293. package/dist/npm/esm/core/script-executor.d.ts +0 -31
  294. package/dist/npm/esm/core/script-executor.js +0 -76
  295. package/dist/npm/esm/core/script-executor.js.map +0 -1
  296. package/dist/npm/esm/core/segments.d.ts +0 -39
  297. package/dist/npm/esm/core/segments.js +0 -168
  298. package/dist/npm/esm/core/segments.js.map +0 -1
  299. package/dist/npm/esm/core/tracker.d.ts +0 -182
  300. package/dist/npm/esm/core/tracker.js +0 -794
  301. package/dist/npm/esm/core/tracker.js.map +0 -1
  302. package/dist/npm/esm/datalayer/basket.d.ts +0 -104
  303. package/dist/npm/esm/datalayer/basket.js +0 -381
  304. package/dist/npm/esm/datalayer/basket.js.map +0 -1
  305. package/dist/npm/esm/datalayer/cart-association.d.ts +0 -65
  306. package/dist/npm/esm/datalayer/cart-association.js +0 -222
  307. package/dist/npm/esm/datalayer/cart-association.js.map +0 -1
  308. package/dist/npm/esm/datalayer/checkout.d.ts +0 -96
  309. package/dist/npm/esm/datalayer/checkout.js +0 -378
  310. package/dist/npm/esm/datalayer/checkout.js.map +0 -1
  311. package/dist/npm/esm/datalayer/constants.d.ts +0 -77
  312. package/dist/npm/esm/datalayer/constants.js +0 -160
  313. package/dist/npm/esm/datalayer/constants.js.map +0 -1
  314. package/dist/npm/esm/datalayer/index.d.ts +0 -212
  315. package/dist/npm/esm/datalayer/index.js +0 -991
  316. package/dist/npm/esm/datalayer/index.js.map +0 -1
  317. package/dist/npm/esm/datalayer/listener.d.ts +0 -108
  318. package/dist/npm/esm/datalayer/listener.js +0 -411
  319. package/dist/npm/esm/datalayer/listener.js.map +0 -1
  320. package/dist/npm/esm/datalayer/page.d.ts +0 -94
  321. package/dist/npm/esm/datalayer/page.js +0 -339
  322. package/dist/npm/esm/datalayer/page.js.map +0 -1
  323. package/dist/npm/esm/datalayer/product.d.ts +0 -133
  324. package/dist/npm/esm/datalayer/product.js +0 -513
  325. package/dist/npm/esm/datalayer/product.js.map +0 -1
  326. package/dist/npm/esm/datalayer/reverse-mappings.d.ts +0 -62
  327. package/dist/npm/esm/datalayer/reverse-mappings.js +0 -135
  328. package/dist/npm/esm/datalayer/reverse-mappings.js.map +0 -1
  329. package/dist/npm/esm/datalayer/search.d.ts +0 -108
  330. package/dist/npm/esm/datalayer/search.js +0 -359
  331. package/dist/npm/esm/datalayer/search.js.map +0 -1
  332. package/dist/npm/esm/datalayer/types.d.ts +0 -292
  333. package/dist/npm/esm/datalayer/types.js +0 -131
  334. package/dist/npm/esm/datalayer/types.js.map +0 -1
  335. package/dist/npm/esm/datalayer/user.d.ts +0 -104
  336. package/dist/npm/esm/datalayer/user.js +0 -368
  337. package/dist/npm/esm/datalayer/user.js.map +0 -1
  338. package/dist/npm/esm/debug/index.d.ts +0 -173
  339. package/dist/npm/esm/debug/index.js +0 -673
  340. package/dist/npm/esm/debug/index.js.map +0 -1
  341. package/dist/npm/esm/entries/cdn.d.ts +0 -1
  342. package/dist/npm/esm/entries/cdn.js +0 -35
  343. package/dist/npm/esm/entries/cdn.js.map +0 -1
  344. package/dist/npm/esm/index.js +0 -4
  345. package/dist/npm/esm/index.js.map +0 -1
  346. package/dist/npm/esm/modules/contract/recommendation-contract.d.ts +0 -5
  347. package/dist/npm/esm/modules/contract/recommendation-contract.js +0 -107
  348. package/dist/npm/esm/modules/contract/recommendation-contract.js.map +0 -1
  349. package/dist/npm/esm/modules/contract/search-contract.d.ts +0 -1
  350. package/dist/npm/esm/modules/contract/search-contract.js +0 -2
  351. package/dist/npm/esm/modules/contract/search-contract.js.map +0 -1
  352. package/dist/npm/esm/modules/contract/tracking-contract.d.ts +0 -1
  353. package/dist/npm/esm/modules/contract/tracking-contract.js +0 -2
  354. package/dist/npm/esm/modules/contract/tracking-contract.js.map +0 -1
  355. package/dist/npm/esm/modules/contract/vendor/recommendation-contract/configs.d.ts +0 -8
  356. package/dist/npm/esm/modules/contract/vendor/recommendation-contract/configs.js +0 -160
  357. package/dist/npm/esm/modules/contract/vendor/recommendation-contract/configs.js.map +0 -1
  358. package/dist/npm/esm/modules/contract/vendor/recommendation-contract/index.d.ts +0 -3
  359. package/dist/npm/esm/modules/contract/vendor/recommendation-contract/index.js +0 -5
  360. package/dist/npm/esm/modules/contract/vendor/recommendation-contract/index.js.map +0 -1
  361. package/dist/npm/esm/modules/contract/vendor/recommendation-contract/types.d.ts +0 -56
  362. package/dist/npm/esm/modules/contract/vendor/recommendation-contract/types.js +0 -2
  363. package/dist/npm/esm/modules/contract/vendor/recommendation-contract/types.js.map +0 -1
  364. package/dist/npm/esm/modules/contract/vendor/recommendation-contract/validators.d.ts +0 -3
  365. package/dist/npm/esm/modules/contract/vendor/recommendation-contract/validators.js +0 -103
  366. package/dist/npm/esm/modules/contract/vendor/recommendation-contract/validators.js.map +0 -1
  367. package/dist/npm/esm/modules/contract/vendor/search-contract/configs.d.ts +0 -35
  368. package/dist/npm/esm/modules/contract/vendor/search-contract/configs.js +0 -396
  369. package/dist/npm/esm/modules/contract/vendor/search-contract/configs.js.map +0 -1
  370. package/dist/npm/esm/modules/contract/vendor/search-contract/index.d.ts +0 -3
  371. package/dist/npm/esm/modules/contract/vendor/search-contract/index.js +0 -5
  372. package/dist/npm/esm/modules/contract/vendor/search-contract/index.js.map +0 -1
  373. package/dist/npm/esm/modules/contract/vendor/search-contract/types.d.ts +0 -119
  374. package/dist/npm/esm/modules/contract/vendor/search-contract/types.js +0 -7
  375. package/dist/npm/esm/modules/contract/vendor/search-contract/types.js.map +0 -1
  376. package/dist/npm/esm/modules/contract/vendor/search-contract/validators.d.ts +0 -22
  377. package/dist/npm/esm/modules/contract/vendor/search-contract/validators.js +0 -118
  378. package/dist/npm/esm/modules/contract/vendor/search-contract/validators.js.map +0 -1
  379. package/dist/npm/esm/modules/contract/vendor/tracking-contract/configs.d.ts +0 -7
  380. package/dist/npm/esm/modules/contract/vendor/tracking-contract/configs.js +0 -130
  381. package/dist/npm/esm/modules/contract/vendor/tracking-contract/configs.js.map +0 -1
  382. package/dist/npm/esm/modules/contract/vendor/tracking-contract/index.d.ts +0 -3
  383. package/dist/npm/esm/modules/contract/vendor/tracking-contract/index.js +0 -5
  384. package/dist/npm/esm/modules/contract/vendor/tracking-contract/index.js.map +0 -1
  385. package/dist/npm/esm/modules/contract/vendor/tracking-contract/types.d.ts +0 -37
  386. package/dist/npm/esm/modules/contract/vendor/tracking-contract/types.js +0 -2
  387. package/dist/npm/esm/modules/contract/vendor/tracking-contract/types.js.map +0 -1
  388. package/dist/npm/esm/modules/contract/vendor/tracking-contract/validators.d.ts +0 -6
  389. package/dist/npm/esm/modules/contract/vendor/tracking-contract/validators.js +0 -147
  390. package/dist/npm/esm/modules/contract/vendor/tracking-contract/validators.js.map +0 -1
  391. package/dist/npm/esm/modules/contract/vendor/widget-contract/configs.d.ts +0 -22
  392. package/dist/npm/esm/modules/contract/vendor/widget-contract/configs.js +0 -1472
  393. package/dist/npm/esm/modules/contract/vendor/widget-contract/configs.js.map +0 -1
  394. package/dist/npm/esm/modules/contract/vendor/widget-contract/index.d.ts +0 -4
  395. package/dist/npm/esm/modules/contract/vendor/widget-contract/index.js +0 -6
  396. package/dist/npm/esm/modules/contract/vendor/widget-contract/index.js.map +0 -1
  397. package/dist/npm/esm/modules/contract/vendor/widget-contract/layout.d.ts +0 -14
  398. package/dist/npm/esm/modules/contract/vendor/widget-contract/layout.js +0 -18
  399. package/dist/npm/esm/modules/contract/vendor/widget-contract/layout.js.map +0 -1
  400. package/dist/npm/esm/modules/contract/vendor/widget-contract/types.d.ts +0 -128
  401. package/dist/npm/esm/modules/contract/vendor/widget-contract/types.js +0 -7
  402. package/dist/npm/esm/modules/contract/vendor/widget-contract/types.js.map +0 -1
  403. package/dist/npm/esm/modules/contract/vendor/widget-contract/validators.d.ts +0 -11
  404. package/dist/npm/esm/modules/contract/vendor/widget-contract/validators.js +0 -132
  405. package/dist/npm/esm/modules/contract/vendor/widget-contract/validators.js.map +0 -1
  406. package/dist/npm/esm/modules/contract/widget-contract.d.ts +0 -1
  407. package/dist/npm/esm/modules/contract/widget-contract.js +0 -2
  408. package/dist/npm/esm/modules/contract/widget-contract.js.map +0 -1
  409. package/dist/npm/esm/modules/products/tracking.d.ts +0 -122
  410. package/dist/npm/esm/modules/products/tracking.js +0 -203
  411. package/dist/npm/esm/modules/products/tracking.js.map +0 -1
  412. package/dist/npm/esm/modules/recommendation/cart-handlers.d.ts +0 -10
  413. package/dist/npm/esm/modules/recommendation/cart-handlers.js +0 -49
  414. package/dist/npm/esm/modules/recommendation/cart-handlers.js.map +0 -1
  415. package/dist/npm/esm/modules/recommendation/components/product-card-renderer.d.ts +0 -37
  416. package/dist/npm/esm/modules/recommendation/components/product-card-renderer.js +0 -281
  417. package/dist/npm/esm/modules/recommendation/components/product-card-renderer.js.map +0 -1
  418. package/dist/npm/esm/modules/recommendation/index.d.ts +0 -11
  419. package/dist/npm/esm/modules/recommendation/index.js +0 -674
  420. package/dist/npm/esm/modules/recommendation/index.js.map +0 -1
  421. package/dist/npm/esm/modules/recommendation/renderers/grid.d.ts +0 -5
  422. package/dist/npm/esm/modules/recommendation/renderers/grid.js +0 -18
  423. package/dist/npm/esm/modules/recommendation/renderers/grid.js.map +0 -1
  424. package/dist/npm/esm/modules/recommendation/renderers/list.d.ts +0 -5
  425. package/dist/npm/esm/modules/recommendation/renderers/list.js +0 -19
  426. package/dist/npm/esm/modules/recommendation/renderers/list.js.map +0 -1
  427. package/dist/npm/esm/modules/recommendation/renderers/masonry.d.ts +0 -5
  428. package/dist/npm/esm/modules/recommendation/renderers/masonry.js +0 -19
  429. package/dist/npm/esm/modules/recommendation/renderers/masonry.js.map +0 -1
  430. package/dist/npm/esm/modules/recommendation/renderers/slider-renderer.d.ts +0 -10
  431. package/dist/npm/esm/modules/recommendation/renderers/slider-renderer.js +0 -140
  432. package/dist/npm/esm/modules/recommendation/renderers/slider-renderer.js.map +0 -1
  433. package/dist/npm/esm/modules/recommendation/slider-controls.d.ts +0 -17
  434. package/dist/npm/esm/modules/recommendation/slider-controls.js +0 -187
  435. package/dist/npm/esm/modules/recommendation/slider-controls.js.map +0 -1
  436. package/dist/npm/esm/modules/recommendation/tracking.d.ts +0 -28
  437. package/dist/npm/esm/modules/recommendation/tracking.js +0 -237
  438. package/dist/npm/esm/modules/recommendation/tracking.js.map +0 -1
  439. package/dist/npm/esm/modules/recommendation/utils/dom.d.ts +0 -10
  440. package/dist/npm/esm/modules/recommendation/utils/dom.js +0 -63
  441. package/dist/npm/esm/modules/recommendation/utils/dom.js.map +0 -1
  442. package/dist/npm/esm/modules/recommendation/utils/format.d.ts +0 -4
  443. package/dist/npm/esm/modules/recommendation/utils/format.js +0 -10
  444. package/dist/npm/esm/modules/recommendation/utils/format.js.map +0 -1
  445. package/dist/npm/esm/modules/recommendation/utils/index.d.ts +0 -5
  446. package/dist/npm/esm/modules/recommendation/utils/index.js +0 -6
  447. package/dist/npm/esm/modules/recommendation/utils/index.js.map +0 -1
  448. package/dist/npm/esm/modules/renderer/helpers.d.ts +0 -5
  449. package/dist/npm/esm/modules/renderer/helpers.js +0 -6
  450. package/dist/npm/esm/modules/renderer/helpers.js.map +0 -1
  451. package/dist/npm/esm/modules/renderer/index.d.ts +0 -8
  452. package/dist/npm/esm/modules/renderer/index.js +0 -48
  453. package/dist/npm/esm/modules/renderer/index.js.map +0 -1
  454. package/dist/npm/esm/modules/renderer/style-resolver.d.ts +0 -1
  455. package/dist/npm/esm/modules/renderer/style-resolver.js +0 -8
  456. package/dist/npm/esm/modules/renderer/style-resolver.js.map +0 -1
  457. package/dist/npm/esm/modules/renderer/styles/index.d.ts +0 -12
  458. package/dist/npm/esm/modules/renderer/styles/index.js +0 -250
  459. package/dist/npm/esm/modules/renderer/styles/index.js.map +0 -1
  460. package/dist/npm/esm/modules/renderer/styles.d.ts +0 -1
  461. package/dist/npm/esm/modules/renderer/styles.js +0 -2
  462. package/dist/npm/esm/modules/renderer/styles.js.map +0 -1
  463. package/dist/npm/esm/modules/renderer/utils/helpers.d.ts +0 -58
  464. package/dist/npm/esm/modules/renderer/utils/helpers.js +0 -225
  465. package/dist/npm/esm/modules/renderer/utils/helpers.js.map +0 -1
  466. package/dist/npm/esm/modules/renderer/utils/image-renderer.d.ts +0 -17
  467. package/dist/npm/esm/modules/renderer/utils/image-renderer.js +0 -60
  468. package/dist/npm/esm/modules/renderer/utils/image-renderer.js.map +0 -1
  469. package/dist/npm/esm/modules/renderer/utils/placement.d.ts +0 -6
  470. package/dist/npm/esm/modules/renderer/utils/placement.js +0 -31
  471. package/dist/npm/esm/modules/renderer/utils/placement.js.map +0 -1
  472. package/dist/npm/esm/modules/renderer/utils.d.ts +0 -11
  473. package/dist/npm/esm/modules/renderer/utils.js +0 -44
  474. package/dist/npm/esm/modules/renderer/utils.js.map +0 -1
  475. package/dist/npm/esm/modules/renderer/widgets/announcement-bar.d.ts +0 -5
  476. package/dist/npm/esm/modules/renderer/widgets/announcement-bar.js +0 -81
  477. package/dist/npm/esm/modules/renderer/widgets/announcement-bar.js.map +0 -1
  478. package/dist/npm/esm/modules/renderer/widgets/cart-count.d.ts +0 -6
  479. package/dist/npm/esm/modules/renderer/widgets/cart-count.js +0 -208
  480. package/dist/npm/esm/modules/renderer/widgets/cart-count.js.map +0 -1
  481. package/dist/npm/esm/modules/renderer/widgets/cookie-consent.d.ts +0 -18
  482. package/dist/npm/esm/modules/renderer/widgets/cookie-consent.js +0 -454
  483. package/dist/npm/esm/modules/renderer/widgets/cookie-consent.js.map +0 -1
  484. package/dist/npm/esm/modules/renderer/widgets/countdown-timer.d.ts +0 -5
  485. package/dist/npm/esm/modules/renderer/widgets/countdown-timer.js +0 -129
  486. package/dist/npm/esm/modules/renderer/widgets/countdown-timer.js.map +0 -1
  487. package/dist/npm/esm/modules/renderer/widgets/custom.d.ts +0 -5
  488. package/dist/npm/esm/modules/renderer/widgets/custom.js +0 -55
  489. package/dist/npm/esm/modules/renderer/widgets/custom.js.map +0 -1
  490. package/dist/npm/esm/modules/renderer/widgets/embedded-card.d.ts +0 -5
  491. package/dist/npm/esm/modules/renderer/widgets/embedded-card.js +0 -94
  492. package/dist/npm/esm/modules/renderer/widgets/embedded-card.js.map +0 -1
  493. package/dist/npm/esm/modules/renderer/widgets/exit-intent-popup.d.ts +0 -6
  494. package/dist/npm/esm/modules/renderer/widgets/exit-intent-popup.js +0 -147
  495. package/dist/npm/esm/modules/renderer/widgets/exit-intent-popup.js.map +0 -1
  496. package/dist/npm/esm/modules/renderer/widgets/floating-button.d.ts +0 -5
  497. package/dist/npm/esm/modules/renderer/widgets/floating-button.js +0 -67
  498. package/dist/npm/esm/modules/renderer/widgets/floating-button.js.map +0 -1
  499. package/dist/npm/esm/modules/renderer/widgets/helpers.d.ts +0 -29
  500. package/dist/npm/esm/modules/renderer/widgets/helpers.js +0 -82
  501. package/dist/npm/esm/modules/renderer/widgets/helpers.js.map +0 -1
  502. package/dist/npm/esm/modules/renderer/widgets/index.d.ts +0 -17
  503. package/dist/npm/esm/modules/renderer/widgets/index.js +0 -19
  504. package/dist/npm/esm/modules/renderer/widgets/index.js.map +0 -1
  505. package/dist/npm/esm/modules/renderer/widgets/inline-banner.d.ts +0 -5
  506. package/dist/npm/esm/modules/renderer/widgets/inline-banner.js +0 -121
  507. package/dist/npm/esm/modules/renderer/widgets/inline-banner.js.map +0 -1
  508. package/dist/npm/esm/modules/renderer/widgets/newsletter.d.ts +0 -6
  509. package/dist/npm/esm/modules/renderer/widgets/newsletter.js +0 -277
  510. package/dist/npm/esm/modules/renderer/widgets/newsletter.js.map +0 -1
  511. package/dist/npm/esm/modules/renderer/widgets/product-view-count.d.ts +0 -6
  512. package/dist/npm/esm/modules/renderer/widgets/product-view-count.js +0 -194
  513. package/dist/npm/esm/modules/renderer/widgets/product-view-count.js.map +0 -1
  514. package/dist/npm/esm/modules/renderer/widgets/slide-in.d.ts +0 -5
  515. package/dist/npm/esm/modules/renderer/widgets/slide-in.js +0 -102
  516. package/dist/npm/esm/modules/renderer/widgets/slide-in.js.map +0 -1
  517. package/dist/npm/esm/modules/renderer/widgets/sticky-footer.d.ts +0 -5
  518. package/dist/npm/esm/modules/renderer/widgets/sticky-footer.js +0 -44
  519. package/dist/npm/esm/modules/renderer/widgets/sticky-footer.js.map +0 -1
  520. package/dist/npm/esm/modules/search/cart/index.d.ts +0 -26
  521. package/dist/npm/esm/modules/search/cart/index.js +0 -39
  522. package/dist/npm/esm/modules/search/cart/index.js.map +0 -1
  523. package/dist/npm/esm/modules/search/components/index.d.ts +0 -6
  524. package/dist/npm/esm/modules/search/components/index.js +0 -7
  525. package/dist/npm/esm/modules/search/components/index.js.map +0 -1
  526. package/dist/npm/esm/modules/search/components/search-box.d.ts +0 -11
  527. package/dist/npm/esm/modules/search/components/search-box.js +0 -25
  528. package/dist/npm/esm/modules/search/components/search-box.js.map +0 -1
  529. package/dist/npm/esm/modules/search/components/search-item.d.ts +0 -20
  530. package/dist/npm/esm/modules/search/components/search-item.js +0 -193
  531. package/dist/npm/esm/modules/search/components/search-item.js.map +0 -1
  532. package/dist/npm/esm/modules/search/components/suggestions.d.ts +0 -10
  533. package/dist/npm/esm/modules/search/components/suggestions.js +0 -129
  534. package/dist/npm/esm/modules/search/components/suggestions.js.map +0 -1
  535. package/dist/npm/esm/modules/search/index.d.ts +0 -67
  536. package/dist/npm/esm/modules/search/index.js +0 -642
  537. package/dist/npm/esm/modules/search/index.js.map +0 -1
  538. package/dist/npm/esm/modules/search/renderers/position-renderers.d.ts +0 -23
  539. package/dist/npm/esm/modules/search/renderers/position-renderers.js +0 -221
  540. package/dist/npm/esm/modules/search/renderers/position-renderers.js.map +0 -1
  541. package/dist/npm/esm/modules/search/renderers/results-renderer.d.ts +0 -20
  542. package/dist/npm/esm/modules/search/renderers/results-renderer.js +0 -176
  543. package/dist/npm/esm/modules/search/renderers/results-renderer.js.map +0 -1
  544. package/dist/npm/esm/modules/search/services/api-service.d.ts +0 -18
  545. package/dist/npm/esm/modules/search/services/api-service.js +0 -115
  546. package/dist/npm/esm/modules/search/services/api-service.js.map +0 -1
  547. package/dist/npm/esm/modules/search/services/tracking-service.d.ts +0 -16
  548. package/dist/npm/esm/modules/search/services/tracking-service.js +0 -250
  549. package/dist/npm/esm/modules/search/services/tracking-service.js.map +0 -1
  550. package/dist/npm/esm/modules/search/styles.d.ts +0 -13
  551. package/dist/npm/esm/modules/search/styles.js +0 -860
  552. package/dist/npm/esm/modules/search/styles.js.map +0 -1
  553. package/dist/npm/esm/modules/search/utils/helpers.d.ts +0 -24
  554. package/dist/npm/esm/modules/search/utils/helpers.js +0 -93
  555. package/dist/npm/esm/modules/search/utils/helpers.js.map +0 -1
  556. package/dist/npm/esm/modules/search/utils/icons.d.ts +0 -16
  557. package/dist/npm/esm/modules/search/utils/icons.js +0 -36
  558. package/dist/npm/esm/modules/search/utils/icons.js.map +0 -1
  559. package/dist/npm/esm/modules/search/utils/index.d.ts +0 -6
  560. package/dist/npm/esm/modules/search/utils/index.js +0 -7
  561. package/dist/npm/esm/modules/search/utils/index.js.map +0 -1
  562. package/dist/npm/esm/modules/search/utils/storage.d.ts +0 -7
  563. package/dist/npm/esm/modules/search/utils/storage.js +0 -52
  564. package/dist/npm/esm/modules/search/utils/storage.js.map +0 -1
  565. package/dist/npm/esm/package.json +0 -1
  566. package/dist/npm/esm/selwise.d.ts +0 -209
  567. package/dist/npm/esm/selwise.js +0 -1123
  568. package/dist/npm/esm/selwise.js.map +0 -1
  569. package/dist/npm/esm/sentry-test.d.ts +0 -45
  570. package/dist/npm/esm/sentry-test.js +0 -109
  571. package/dist/npm/esm/sentry-test.js.map +0 -1
  572. package/dist/npm/esm/sentry.d.ts +0 -86
  573. package/dist/npm/esm/sentry.js +0 -441
  574. package/dist/npm/esm/sentry.js.map +0 -1
  575. package/dist/npm/esm/shared/cart/handlers.d.ts +0 -46
  576. package/dist/npm/esm/shared/cart/handlers.js +0 -249
  577. package/dist/npm/esm/shared/cart/handlers.js.map +0 -1
  578. package/dist/npm/esm/shared/cart/index.d.ts +0 -6
  579. package/dist/npm/esm/shared/cart/index.js +0 -7
  580. package/dist/npm/esm/shared/cart/index.js.map +0 -1
  581. package/dist/npm/esm/shared/cart/types.d.ts +0 -30
  582. package/dist/npm/esm/shared/cart/types.js +0 -6
  583. package/dist/npm/esm/shared/cart/types.js.map +0 -1
  584. package/dist/npm/esm/shared/product-card/index.d.ts +0 -7
  585. package/dist/npm/esm/shared/product-card/index.js +0 -8
  586. package/dist/npm/esm/shared/product-card/index.js.map +0 -1
  587. package/dist/npm/esm/shared/product-card/renderer.d.ts +0 -35
  588. package/dist/npm/esm/shared/product-card/renderer.js +0 -334
  589. package/dist/npm/esm/shared/product-card/renderer.js.map +0 -1
  590. package/dist/npm/esm/shared/product-card/styles.d.ts +0 -17
  591. package/dist/npm/esm/shared/product-card/styles.js +0 -190
  592. package/dist/npm/esm/shared/product-card/styles.js.map +0 -1
  593. package/dist/npm/esm/shared/product-card/types.d.ts +0 -84
  594. package/dist/npm/esm/shared/product-card/types.js +0 -63
  595. package/dist/npm/esm/shared/product-card/types.js.map +0 -1
  596. package/dist/npm/esm/types/config.d.ts +0 -26
  597. package/dist/npm/esm/types/config.js +0 -5
  598. package/dist/npm/esm/types/config.js.map +0 -1
  599. package/dist/npm/esm/types/experiments.d.ts +0 -47
  600. package/dist/npm/esm/types/experiments.js +0 -14
  601. package/dist/npm/esm/types/experiments.js.map +0 -1
  602. package/dist/npm/esm/types/global-api.d.ts +0 -40
  603. package/dist/npm/esm/types/global-api.js +0 -2
  604. package/dist/npm/esm/types/global-api.js.map +0 -1
  605. package/dist/npm/esm/types/index.d.ts +0 -9
  606. package/dist/npm/esm/types/index.js +0 -11
  607. package/dist/npm/esm/types/index.js.map +0 -1
  608. package/dist/npm/esm/types/recommendation.d.ts +0 -186
  609. package/dist/npm/esm/types/recommendation.js +0 -5
  610. package/dist/npm/esm/types/recommendation.js.map +0 -1
  611. package/dist/npm/esm/types/renderer.d.ts +0 -99
  612. package/dist/npm/esm/types/renderer.js +0 -5
  613. package/dist/npm/esm/types/renderer.js.map +0 -1
  614. package/dist/npm/esm/types/search.d.ts +0 -186
  615. package/dist/npm/esm/types/search.js +0 -5
  616. package/dist/npm/esm/types/search.js.map +0 -1
  617. package/dist/npm/esm/utils/api-url.d.ts +0 -1
  618. package/dist/npm/esm/utils/api-url.js +0 -32
  619. package/dist/npm/esm/utils/api-url.js.map +0 -1
  620. package/dist/npm/esm/utils/debounce.d.ts +0 -27
  621. package/dist/npm/esm/utils/debounce.js +0 -70
  622. package/dist/npm/esm/utils/debounce.js.map +0 -1
  623. package/dist/npm/esm/utils/event-id.d.ts +0 -5
  624. package/dist/npm/esm/utils/event-id.js +0 -20
  625. package/dist/npm/esm/utils/event-id.js.map +0 -1
  626. package/dist/npm/esm/utils/index.d.ts +0 -11
  627. package/dist/npm/esm/utils/index.js +0 -12
  628. package/dist/npm/esm/utils/index.js.map +0 -1
  629. package/dist/npm/esm/utils/logger.d.ts +0 -31
  630. package/dist/npm/esm/utils/logger.js +0 -66
  631. package/dist/npm/esm/utils/logger.js.map +0 -1
  632. package/dist/npm/esm/utils/sanitize.d.ts +0 -38
  633. package/dist/npm/esm/utils/sanitize.js +0 -148
  634. package/dist/npm/esm/utils/sanitize.js.map +0 -1
  635. package/dist/npm/esm/utils/storage.d.ts +0 -72
  636. package/dist/npm/esm/utils/storage.js +0 -271
  637. package/dist/npm/esm/utils/storage.js.map +0 -1
  638. package/dist/npm/esm/utils/tracking-metadata.d.ts +0 -1
  639. package/dist/npm/esm/utils/tracking-metadata.js +0 -15
  640. package/dist/npm/esm/utils/tracking-metadata.js.map +0 -1
  641. package/dist/npm/esm/utils/url-matcher.d.ts +0 -4
  642. package/dist/npm/esm/utils/url-matcher.js +0 -8
  643. package/dist/npm/esm/utils/url-matcher.js.map +0 -1
@@ -1,1010 +0,0 @@
1
- "use strict";
2
- /**
3
- * Data Layer Manager for Selwise Client Widget
4
- * Provides GTM-style data layer functionality with window.selwiseLayer
5
- */
6
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
- if (k2 === undefined) k2 = k;
8
- var desc = Object.getOwnPropertyDescriptor(m, k);
9
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
- desc = { enumerable: true, get: function() { return m[k]; } };
11
- }
12
- Object.defineProperty(o, k2, desc);
13
- }) : (function(o, m, k, k2) {
14
- if (k2 === undefined) k2 = k;
15
- o[k2] = m[k];
16
- }));
17
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
18
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
19
- };
20
- Object.defineProperty(exports, "__esModule", { value: true });
21
- exports.ConsentCategory = exports.DataLayerManager = void 0;
22
- const constants_1 = require("./constants");
23
- const page_1 = require("./page");
24
- const product_1 = require("./product");
25
- const basket_1 = require("./basket");
26
- const checkout_1 = require("./checkout");
27
- const user_1 = require("./user");
28
- const search_1 = require("./search");
29
- const listener_1 = require("./listener");
30
- const cart_association_1 = require("./cart-association");
31
- const logger_1 = require("../utils/logger");
32
- const tracking_contract_1 = require("../modules/contract/tracking-contract");
33
- // Event throttle tracking to prevent duplicate events
34
- const EVENT_THROTTLE_MAP = new Map();
35
- const EVENT_THROTTLE_MS = 1000; // 1 second throttle for similar events
36
- /**
37
- * Check if an event should be throttled
38
- */
39
- function shouldThrottleEvent(eventName, entityId) {
40
- const key = entityId ? `${eventName}:${entityId}` : eventName;
41
- const lastTime = EVENT_THROTTLE_MAP.get(key) || 0;
42
- const now = Date.now();
43
- if (now - lastTime < EVENT_THROTTLE_MS) {
44
- return true;
45
- }
46
- EVENT_THROTTLE_MAP.set(key, now);
47
- return false;
48
- }
49
- /**
50
- * Generate a throttle key from data layer event data
51
- */
52
- function getEventThrottleKey(data) {
53
- if (data.product?.id)
54
- return `${data.event}:${data.product.id}`;
55
- if (data.basket?.id)
56
- return `${data.event}:${data.basket.id}`;
57
- if (data.checkout?.orderNo)
58
- return `${data.event}:${data.checkout.orderNo}`;
59
- if (data.user?.id)
60
- return `${data.event}:${data.user.id}`;
61
- if (data.search?.query)
62
- return `${data.event}:${data.search.query}`;
63
- return data.event || 'unknown';
64
- }
65
- class DataLayerManager {
66
- constructor(tracker, siteKey, apiUrl, options = {}) {
67
- this.isInitialized = false;
68
- this.isDestroyed = false;
69
- // DOM observation
70
- this.observer = null;
71
- this.debounceTimer = null;
72
- this.lastProcessedIndex = 0;
73
- this.originalPush = null;
74
- // Last tracked page info for change detection
75
- this.lastPageUrl = '';
76
- this.lastPageTitle = '';
77
- this.consentState = null;
78
- this.consentTimeoutTimer = null;
79
- this.lastConsentValue = null; // For change detection
80
- // Event buffering
81
- this.eventBuffer = [];
82
- this.flushTimer = null;
83
- this.tracker = tracker;
84
- this.siteKey = siteKey;
85
- this.apiUrl = apiUrl;
86
- // Get variable name or use default
87
- this.dataLayerName = options.variableName || 'selwiseLayer';
88
- const normalizedTrackingModules = this.normalizeTrackingModules(options.trackingModules);
89
- const normalizedPageTypePatterns = this.normalizePageTypePatterns(options.pageTypePatterns);
90
- // Merge config with defaults
91
- this.config = {
92
- enabled: options.enabled ?? true,
93
- variableName: options.variableName,
94
- pageDetection: options.pageDetection ?? 'auto',
95
- autoPageTracking: options.autoPageTracking ?? true,
96
- cartAbandonmentTimeout: options.cartAbandonmentTimeout ?? 30,
97
- pageTypePatterns: normalizedPageTypePatterns,
98
- debugMode: options.debugMode ?? false,
99
- cookieConsent: options.cookieConsent,
100
- trackingModules: normalizedTrackingModules,
101
- bufferSize: options.bufferSize ?? 10,
102
- flushInterval: options.flushInterval ?? 1000,
103
- reverseEventMapping: options.reverseEventMapping,
104
- externalDataLayerName: options.externalDataLayerName,
105
- };
106
- // Store references for quick access
107
- this.cookieConsent = options.cookieConsent;
108
- this.trackingModules = normalizedTrackingModules;
109
- this.log('DataLayerManager constructor called with config:', this.config);
110
- }
111
- normalizeTrackingModules(modules) {
112
- return {
113
- page: { ...tracking_contract_1.TRACKING_MODULES.page, ...(modules?.page || {}) },
114
- product: { ...tracking_contract_1.TRACKING_MODULES.product, ...(modules?.product || {}) },
115
- basket: { ...tracking_contract_1.TRACKING_MODULES.basket, ...(modules?.basket || {}) },
116
- checkout: { ...tracking_contract_1.TRACKING_MODULES.checkout, ...(modules?.checkout || {}) },
117
- user: { ...tracking_contract_1.TRACKING_MODULES.user, ...(modules?.user || {}) },
118
- search: { ...tracking_contract_1.TRACKING_MODULES.search, ...(modules?.search || {}) },
119
- };
120
- }
121
- normalizePageTypePatterns(patterns) {
122
- const source = patterns && Object.keys(patterns).length > 0 ? patterns : constants_1.DEFAULT_PAGE_PATTERNS;
123
- const normalized = {};
124
- for (const [pageType, pattern] of Object.entries(source)) {
125
- if (pattern instanceof RegExp) {
126
- normalized[pageType] = pattern;
127
- continue;
128
- }
129
- if (typeof pattern === 'string' && pattern.trim().length > 0) {
130
- try {
131
- normalized[pageType] = new RegExp(pattern, 'i');
132
- }
133
- catch {
134
- this.log(`Invalid regex for page type "${pageType}", using default pattern`);
135
- normalized[pageType] = constants_1.DEFAULT_PAGE_PATTERNS[pageType] || constants_1.DEFAULT_PAGE_PATTERNS.home;
136
- }
137
- }
138
- }
139
- return Object.keys(normalized).length > 0 ? normalized : { ...constants_1.DEFAULT_PAGE_PATTERNS };
140
- }
141
- isModuleEnabled(module) {
142
- return Boolean(this.trackingModules?.[module]?.enabled);
143
- }
144
- shouldAutoTrackPageViews() {
145
- if (!this.config.autoPageTracking || !this.pageTracker || !this.isModuleEnabled('page')) {
146
- return false;
147
- }
148
- if (this.config.pageDetection === 'manual') {
149
- return false;
150
- }
151
- if (this.config.pageDetection === 'patterns') {
152
- const fullPath = `${window.location.pathname}${window.location.search}`;
153
- return Object.values(this.config.pageTypePatterns || {}).some((pattern) => pattern.test(fullPath));
154
- }
155
- return true;
156
- }
157
- shouldObservePageChanges() {
158
- return (this.shouldAutoTrackPageViews() ||
159
- this.isModuleEnabled('product') ||
160
- this.isModuleEnabled('checkout'));
161
- }
162
- /**
163
- * Initialize the data layer
164
- */
165
- init() {
166
- if (this.isInitialized) {
167
- this.log('DataLayerManager already initialized');
168
- return;
169
- }
170
- if (this.isDestroyed) {
171
- this.log('DataLayerManager was destroyed, cannot reinitialize');
172
- return;
173
- }
174
- if (!this.config.enabled) {
175
- this.log('Data layer is disabled by config');
176
- return;
177
- }
178
- this.log('Initializing DataLayerManager...');
179
- try {
180
- // Initialize the data layer array on window
181
- this.initializeDataLayer();
182
- // Setup push interception
183
- this.setupPushInterception();
184
- // Setup SPA navigation observer
185
- this.setupObserver();
186
- // Initialize sub-trackers
187
- this.initializeSubTrackers();
188
- // Process any existing events in the layer
189
- this.processLayer();
190
- // Track initial page view based on page detection mode
191
- if (this.shouldAutoTrackPageViews()) {
192
- this.trackInitialPageView();
193
- }
194
- // Run auto-detection hooks for product/checkout modules on first load
195
- this.runAutomaticModuleTracking();
196
- // Expose public API
197
- this.exposePublicApi();
198
- // Check for abandoned cart on session start
199
- this.checkCartAbandonment();
200
- // Initialize external data layer listener if reverse mapping is configured
201
- this.initExternalListener();
202
- // Initialize cookie consent tracking (Phase 8)
203
- this.initConsentTracking();
204
- this.isInitialized = true;
205
- this.log('DataLayerManager initialized successfully');
206
- }
207
- catch (error) {
208
- // Log error but don't crash the entire widget
209
- (0, logger_1.testModeError)('DataLayerManager', 'Initialization failed:', error);
210
- this.isInitialized = false;
211
- }
212
- }
213
- /**
214
- * Initialize the data layer array with configured variable name
215
- */
216
- initializeDataLayer() {
217
- const layerName = this.dataLayerName;
218
- // Create the data layer on window with the configured name
219
- if (!window[layerName]) {
220
- window[layerName] = [];
221
- this.log(`Created window.${layerName} array`);
222
- }
223
- else {
224
- this.log(`window.${layerName} already exists, length:`, window[layerName].length);
225
- }
226
- }
227
- /**
228
- * Get the data layer array
229
- */
230
- getDataLayer() {
231
- return window[this.dataLayerName] || [];
232
- }
233
- /**
234
- * Setup Array.prototype.push interception to catch data layer pushes
235
- */
236
- setupPushInterception() {
237
- const layer = this.getDataLayer();
238
- if (!layer || !layer.push)
239
- return;
240
- // Store the original push method
241
- this.originalPush = layer.push.bind(layer);
242
- // Override push to intercept events
243
- layer.push = (...items) => {
244
- const result = this.originalPush(...items);
245
- // Schedule processing of new items
246
- this.scheduleProcess();
247
- return result;
248
- };
249
- this.log('Setup push interception');
250
- }
251
- /**
252
- * Setup MutationObserver for SPA navigation detection
253
- */
254
- setupObserver() {
255
- // Observer for detecting page changes in SPAs
256
- this.observer = new MutationObserver(() => {
257
- if (this.shouldObservePageChanges()) {
258
- this.checkPageChange();
259
- }
260
- });
261
- this.observer.observe(document, {
262
- childList: true,
263
- subtree: true,
264
- });
265
- // Also listen to History API changes
266
- const originalPushState = history.pushState;
267
- const originalReplaceState = history.replaceState;
268
- history.pushState = (...args) => {
269
- originalPushState.apply(history, args);
270
- this.onHistoryChange();
271
- };
272
- history.replaceState = (...args) => {
273
- originalReplaceState.apply(history, args);
274
- this.onHistoryChange();
275
- };
276
- // Listen to popstate (back/forward buttons)
277
- window.addEventListener('popstate', () => {
278
- this.onHistoryChange();
279
- });
280
- this.log('Setup MutationObserver and History API listeners');
281
- }
282
- /**
283
- * Handle History API changes (SPA navigation)
284
- */
285
- onHistoryChange() {
286
- if (this.shouldObservePageChanges()) {
287
- this.checkPageChange();
288
- }
289
- // Also process any pushed events around navigation.
290
- this.scheduleProcess();
291
- }
292
- /**
293
- * Check if page has changed and track new page view
294
- */
295
- checkPageChange() {
296
- const currentUrl = window.location.href;
297
- const currentTitle = document.title;
298
- if (currentUrl !== this.lastPageUrl || currentTitle !== this.lastPageTitle) {
299
- this.log('Page change detected:', currentUrl);
300
- if (this.shouldAutoTrackPageViews()) {
301
- // Clear throttle for page views to allow tracking
302
- EVENT_THROTTLE_MAP.delete('page_view:');
303
- }
304
- this.lastPageUrl = currentUrl;
305
- this.lastPageTitle = currentTitle;
306
- // Cleanup dwell time tracking on SPA navigation
307
- if (this.productTracker) {
308
- this.productTracker.stopDwellTimeTracking();
309
- }
310
- if (this.shouldAutoTrackPageViews() && this.pageTracker) {
311
- this.pageTracker.trackPageView();
312
- }
313
- this.runAutomaticModuleTracking();
314
- }
315
- }
316
- /**
317
- * Initialize all sub-tracker modules based on tracking modules config
318
- */
319
- initializeSubTrackers() {
320
- const commonConfig = {
321
- siteKey: this.siteKey,
322
- apiUrl: this.apiUrl,
323
- tracker: this.tracker,
324
- config: this.config,
325
- scheduleProcess: () => this.scheduleProcess(),
326
- };
327
- if (this.isModuleEnabled('page')) {
328
- this.pageTracker = new page_1.PageTracker(commonConfig);
329
- this.log('Page tracker enabled');
330
- }
331
- if (this.isModuleEnabled('product')) {
332
- this.productTracker = new product_1.ProductTracker(commonConfig);
333
- this.log('Product tracker enabled');
334
- }
335
- if (this.isModuleEnabled('basket')) {
336
- this.basketTracker = new basket_1.BasketTracker(commonConfig);
337
- this.log('Basket tracker enabled');
338
- }
339
- if (this.isModuleEnabled('checkout')) {
340
- this.checkoutTracker = new checkout_1.CheckoutTracker(commonConfig);
341
- this.log('Checkout tracker enabled');
342
- }
343
- if (this.isModuleEnabled('user')) {
344
- this.userTracker = new user_1.UserTracker(commonConfig);
345
- this.log('User tracker enabled');
346
- }
347
- if (this.isModuleEnabled('search')) {
348
- this.searchTracker = new search_1.SearchTracker(commonConfig);
349
- this.log('Search tracker enabled');
350
- }
351
- // Cart association tracker follows basket module toggle.
352
- if (this.isModuleEnabled('basket')) {
353
- this.cartAssociationTracker = new cart_association_1.CartAssociationTracker(commonConfig);
354
- this.log('Cart association tracker enabled');
355
- }
356
- this.log('Initialized sub-trackers');
357
- }
358
- /**
359
- * Track the initial page view on load
360
- */
361
- trackInitialPageView() {
362
- this.lastPageUrl = window.location.href;
363
- this.lastPageTitle = document.title;
364
- if (this.pageTracker) {
365
- this.pageTracker.trackPageView();
366
- }
367
- }
368
- /**
369
- * Check for abandoned cart on session start
370
- */
371
- checkCartAbandonment() {
372
- if (this.basketTracker) {
373
- this.basketTracker.checkCartAbandonment();
374
- this.basketTracker.startCartMonitoring();
375
- }
376
- }
377
- runAutomaticModuleTracking() {
378
- if (this.checkoutTracker) {
379
- this.checkoutTracker.autoTrackCheckoutStep();
380
- }
381
- if (this.productTracker && this.productTracker.isProductPage()) {
382
- this.productTracker.trackProductView();
383
- }
384
- }
385
- /**
386
- * Initialize external data layer listener for listening to site's existing dataLayer
387
- */
388
- initExternalListener() {
389
- // Get the reverse mapping from config
390
- const reverseMapping = this.config.reverseEventMapping;
391
- const externalDataLayerName = this.config.externalDataLayerName || 'dataLayer';
392
- if (!reverseMapping || Object.keys(reverseMapping).length === 0) {
393
- this.log('No reverse event mapping configured, skipping external listener');
394
- return;
395
- }
396
- try {
397
- this.externalListener = new listener_1.ExternalDataLayerListener({
398
- tracker: this.tracker,
399
- reverseMapping,
400
- dataLayerName: externalDataLayerName,
401
- debugMode: this.config.debugMode,
402
- enabled: true,
403
- });
404
- this.externalListener.init();
405
- this.log('External dataLayer listener initialized with mapping:', reverseMapping);
406
- }
407
- catch (error) {
408
- this.log('Failed to initialize external dataLayer listener:', error);
409
- }
410
- }
411
- /**
412
- * Schedule processing of the data layer
413
- */
414
- scheduleProcess() {
415
- if (this.debounceTimer) {
416
- clearTimeout(this.debounceTimer);
417
- }
418
- this.debounceTimer = window.setTimeout(() => {
419
- this.processLayer();
420
- this.debounceTimer = null;
421
- }, constants_1.DEFAULT_CONFIG.DEBOUNCE_MS);
422
- }
423
- /**
424
- * Process all new events in the data layer
425
- */
426
- processLayer() {
427
- if (this.isDestroyed)
428
- return;
429
- const layer = this.getDataLayer();
430
- if (!layer)
431
- return;
432
- // Process events from lastProcessedIndex to current length
433
- const newEvents = layer.slice(this.lastProcessedIndex);
434
- if (newEvents.length === 0)
435
- return;
436
- this.log('Processing', newEvents.length, 'new data layer events');
437
- for (const eventData of newEvents) {
438
- this.enqueueEvent(eventData);
439
- }
440
- this.lastProcessedIndex = layer.length;
441
- }
442
- enqueueEvent(eventData) {
443
- this.eventBuffer.push(eventData);
444
- const maxBufferSize = Math.max(1, this.config.bufferSize || 1);
445
- const flushIntervalMs = Math.max(100, this.config.flushInterval || 1000);
446
- if (this.eventBuffer.length >= maxBufferSize) {
447
- this.flushEventBuffer();
448
- return;
449
- }
450
- if (this.flushTimer) {
451
- return;
452
- }
453
- this.flushTimer = window.setTimeout(() => {
454
- this.flushEventBuffer();
455
- }, flushIntervalMs);
456
- }
457
- flushEventBuffer() {
458
- if (this.flushTimer) {
459
- clearTimeout(this.flushTimer);
460
- this.flushTimer = null;
461
- }
462
- if (this.eventBuffer.length === 0) {
463
- return;
464
- }
465
- const eventsToProcess = [...this.eventBuffer];
466
- this.eventBuffer = [];
467
- for (const eventData of eventsToProcess) {
468
- this.processEvent(eventData);
469
- }
470
- }
471
- /**
472
- * Check if cookie consent is given
473
- * Enhanced with granular consent support (Phase 8)
474
- */
475
- hasConsent(requiredCategory) {
476
- if (!this.cookieConsent?.enabled) {
477
- return true; // No consent check required
478
- }
479
- // Load current consent state
480
- const currentConsent = this.loadConsentState();
481
- if (!currentConsent) {
482
- // No consent state yet
483
- const consentVarName = this.cookieConsent.variableName || '__wcmp_consent';
484
- const consentValue = window[consentVarName];
485
- // Simple consent mode
486
- if (consentValue === true || consentValue === 'granted' || consentValue === 1) {
487
- return true;
488
- }
489
- if (this.cookieConsent.defaultConsent && consentValue === undefined) {
490
- return true;
491
- }
492
- this.log('Cookie consent not given, blocking event');
493
- return false;
494
- }
495
- // Granular consent mode
496
- if (this.cookieConsent.granularEnabled && requiredCategory) {
497
- // Check specific category
498
- const hasCategoryConsent = currentConsent[requiredCategory];
499
- if (!hasCategoryConsent) {
500
- this.log(`Consent denied for category: ${requiredCategory}`);
501
- }
502
- return hasCategoryConsent;
503
- }
504
- // Check if analytics category is granted (default for tracking)
505
- return currentConsent.analytics || currentConsent.necessary;
506
- }
507
- /**
508
- * Initialize cookie consent tracking with timeout and change detection (Phase 8)
509
- */
510
- initConsentTracking() {
511
- if (!this.cookieConsent?.enabled) {
512
- return;
513
- }
514
- this.log('Initializing cookie consent tracking...');
515
- // Load stored consent state
516
- this.consentState = this.loadConsentState();
517
- // Set up timeout for consent waiting
518
- if (this.cookieConsent.waitForConsent && this.cookieConsent.timeoutMs) {
519
- this.consentTimeoutTimer = window.setTimeout(() => {
520
- this.log('Consent timeout reached, using default consent');
521
- if (!this.consentState && this.cookieConsent?.defaultConsent) {
522
- // Apply default consent
523
- this.consentState = {
524
- necessary: true,
525
- analytics: this.cookieConsent.defaultConsent,
526
- marketing: false,
527
- preferences: false,
528
- };
529
- }
530
- // Process queued and buffered events
531
- this.processLayer();
532
- this.flushEventBuffer();
533
- }, this.cookieConsent.timeoutMs);
534
- }
535
- // Set up consent change detection
536
- this.setupConsentChangeDetection();
537
- // Initialize from window variable if available
538
- const consentVarName = this.cookieConsent.variableName || '__wcmp_consent';
539
- const consentValue = window[consentVarName];
540
- if (consentValue !== undefined) {
541
- this.updateConsentFromWindow(consentValue);
542
- }
543
- this.log('Cookie consent tracking initialized');
544
- }
545
- /**
546
- * Setup consent change detection using polling (Phase 8)
547
- */
548
- setupConsentChangeDetection() {
549
- // Check for consent changes every second
550
- const checkInterval = setInterval(() => {
551
- if (this.isDestroyed) {
552
- clearInterval(checkInterval);
553
- return;
554
- }
555
- const consentVarName = this.cookieConsent?.variableName || '__wcmp_consent';
556
- const currentConsentValue = window[consentVarName];
557
- // Check if consent value changed
558
- if (currentConsentValue !== this.lastConsentValue) {
559
- this.lastConsentValue = currentConsentValue;
560
- this.updateConsentFromWindow(currentConsentValue);
561
- }
562
- // Also check localStorage for changes
563
- const storageKey = this.cookieConsent?.storageKey || 'selwise_consent';
564
- const storedConsent = this.loadStoredConsent(storageKey);
565
- if (storedConsent) {
566
- const oldStateJson = JSON.stringify(this.consentState);
567
- this.consentState = storedConsent.granted;
568
- const newStateJson = JSON.stringify(this.consentState);
569
- if (oldStateJson !== newStateJson) {
570
- this.log('Consent state changed from storage');
571
- this.onConsentChange(storedConsent);
572
- }
573
- }
574
- }, 1000);
575
- // Store interval ID for cleanup (not tracked as class property to avoid type issues)
576
- this.consentCheckInterval = checkInterval;
577
- }
578
- /**
579
- * Update consent state from window variable (Phase 8)
580
- */
581
- updateConsentFromWindow(value) {
582
- this.log('Updating consent from window variable:', value);
583
- if (typeof value === 'boolean') {
584
- // Simple consent mode
585
- this.consentState = {
586
- necessary: true,
587
- analytics: value,
588
- marketing: value,
589
- preferences: value,
590
- };
591
- }
592
- else if (value && typeof value === 'object') {
593
- // Granular consent mode
594
- this.consentState = {
595
- necessary: true, // Always true
596
- analytics: value.analytics ?? value.all ?? false,
597
- marketing: value.marketing ?? value.all ?? false,
598
- preferences: value.preferences ?? value.all ?? false,
599
- };
600
- }
601
- else if (value === 'granted' || value === 1) {
602
- this.consentState = {
603
- necessary: true,
604
- analytics: true,
605
- marketing: true,
606
- preferences: true,
607
- };
608
- }
609
- else if (value === 'denied' || value === 0) {
610
- this.consentState = {
611
- necessary: true,
612
- analytics: false,
613
- marketing: false,
614
- preferences: false,
615
- };
616
- }
617
- // Call consent change callback if configured
618
- this.callConsentChangeCallback();
619
- // Process any buffered events
620
- this.processLayer();
621
- this.flushEventBuffer();
622
- }
623
- /**
624
- * Load stored consent from localStorage (Phase 8)
625
- */
626
- loadStoredConsent(storageKey) {
627
- try {
628
- const stored = localStorage.getItem(storageKey);
629
- if (!stored)
630
- return null;
631
- const parsed = JSON.parse(stored);
632
- // Check if expired
633
- if (parsed.expiresAt && Date.now() > parsed.expiresAt) {
634
- localStorage.removeItem(storageKey);
635
- return null;
636
- }
637
- return parsed;
638
- }
639
- catch {
640
- return null;
641
- }
642
- }
643
- /**
644
- * Load consent state from storage or window (Phase 8)
645
- */
646
- loadConsentState() {
647
- if (this.consentState) {
648
- return this.consentState;
649
- }
650
- // Try loading from localStorage
651
- const storageKey = this.cookieConsent?.storageKey || 'selwise_consent';
652
- const storedConsent = this.loadStoredConsent(storageKey);
653
- if (storedConsent) {
654
- return storedConsent.granted;
655
- }
656
- return null;
657
- }
658
- /**
659
- * Handle consent change event (Phase 8)
660
- */
661
- onConsentChange(consent) {
662
- this.log('Consent changed:', consent);
663
- // Call user-defined callback if available
664
- this.callConsentChangeCallback();
665
- // Process any buffered events that may now be allowed
666
- this.processLayer();
667
- this.flushEventBuffer();
668
- }
669
- /**
670
- * Call user-defined consent change callback (Phase 8)
671
- */
672
- callConsentChangeCallback() {
673
- const callbackName = this.cookieConsent?.consentChangeCallback;
674
- if (!callbackName)
675
- return;
676
- try {
677
- const callback = window[callbackName];
678
- if (typeof callback === 'function') {
679
- callback(this.consentState);
680
- this.log(`Called consent change callback: ${callbackName}`);
681
- }
682
- }
683
- catch (error) {
684
- this.log('Error calling consent change callback:', error);
685
- }
686
- }
687
- /**
688
- * Get current consent state (public API for Phase 8)
689
- */
690
- getConsentState() {
691
- return this.consentState;
692
- }
693
- /**
694
- * Grant consent programmatically (public API for Phase 8)
695
- */
696
- grantConsent(categories) {
697
- this.consentState = {
698
- necessary: true,
699
- analytics: true,
700
- marketing: false,
701
- preferences: false,
702
- ...categories,
703
- };
704
- // Store in localStorage
705
- const storageKey = this.cookieConsent?.storageKey || 'selwise_consent';
706
- const stored = {
707
- granted: this.consentState,
708
- timestamp: Date.now(),
709
- expiresAt: Date.now() + 365 * 24 * 60 * 60 * 1000, // 1 year
710
- };
711
- localStorage.setItem(storageKey, JSON.stringify(stored));
712
- this.log('Consent granted:', this.consentState);
713
- // Call callback
714
- this.callConsentChangeCallback();
715
- // Process buffered events
716
- this.processLayer();
717
- this.flushEventBuffer();
718
- }
719
- /**
720
- * Revoke consent programmatically (public API for Phase 8)
721
- */
722
- revokeConsent(categories) {
723
- if (!this.consentState) {
724
- return; // Nothing to revoke
725
- }
726
- if (categories) {
727
- // Revoke specific categories
728
- for (const category of categories) {
729
- if (category !== 'necessary') {
730
- this.consentState[category] = false;
731
- }
732
- }
733
- }
734
- else {
735
- // Revoke all except necessary
736
- this.consentState.analytics = false;
737
- this.consentState.marketing = false;
738
- this.consentState.preferences = false;
739
- }
740
- // Store in localStorage
741
- const storageKey = this.cookieConsent?.storageKey || 'selwise_consent';
742
- const stored = {
743
- granted: this.consentState,
744
- timestamp: Date.now(),
745
- expiresAt: Date.now() + 365 * 24 * 60 * 60 * 1000, // 1 year
746
- };
747
- localStorage.setItem(storageKey, JSON.stringify(stored));
748
- this.log('Consent revoked:', this.consentState);
749
- // Call callback
750
- this.callConsentChangeCallback();
751
- }
752
- /**
753
- * Process a single data layer event
754
- */
755
- processEvent(data) {
756
- if (!data.event) {
757
- this.log('Skipping event without event name:', data);
758
- return;
759
- }
760
- // Check cookie consent before processing
761
- if (!this.hasConsent()) {
762
- this.log('Event blocked due to cookie consent:', data.event);
763
- return;
764
- }
765
- // Check throttle
766
- const throttleKey = getEventThrottleKey(data);
767
- if (shouldThrottleEvent(throttleKey)) {
768
- this.log('Throttled event:', throttleKey);
769
- return;
770
- }
771
- this.log('Processing event:', data.event);
772
- // Route to appropriate tracker based on event type
773
- switch (data.event) {
774
- // Page events
775
- case 'page_view':
776
- case 'virtual_page_view':
777
- this.pageTracker?.processDataLayer(data);
778
- break;
779
- // Product events
780
- case 'product_view':
781
- case 'product_click':
782
- case 'product_impression':
783
- this.productTracker?.processDataLayer(data);
784
- break;
785
- // Basket events
786
- case 'add_to_cart':
787
- case 'remove_from_cart':
788
- case 'update_cart':
789
- case 'cart_abandon':
790
- case 'cart_restore':
791
- this.basketTracker?.processDataLayer(data);
792
- // Also process through cart association tracker for "added to cart together" analytics
793
- this.cartAssociationTracker?.processDataLayer(data);
794
- break;
795
- // Checkout events
796
- case 'checkout_begin':
797
- case 'checkout_progress':
798
- case 'checkout_option':
799
- case 'purchase':
800
- this.checkoutTracker?.processDataLayer(data);
801
- break;
802
- // User events
803
- case 'user_signup':
804
- case 'user_login':
805
- case 'user_logout':
806
- case 'user_update':
807
- this.userTracker?.processDataLayer(data);
808
- break;
809
- // Search events
810
- case 'search_instant_open':
811
- case 'search_query':
812
- case 'search_filter':
813
- case 'search_sort':
814
- case 'search_page':
815
- case 'search_results':
816
- this.searchTracker?.processDataLayer(data);
817
- break;
818
- // Custom events
819
- case 'custom':
820
- this.trackCustomEvent(data);
821
- break;
822
- default:
823
- // Unknown event type - track as custom
824
- this.log('Unknown event type, tracking as custom:', data.event);
825
- this.trackCustomEvent(data);
826
- }
827
- }
828
- /**
829
- * Track a custom event
830
- */
831
- trackCustomEvent(data) {
832
- const eventName = data.custom?.type || data.custom?.name || data.event || 'custom';
833
- this.tracker.track(eventName, {
834
- entityType: 'custom',
835
- entityId: data.custom?.name || undefined,
836
- metadata: {
837
- dataSource: constants_1.DATA_SOURCE,
838
- pageUrl: window.location.href,
839
- referrer: document.referrer,
840
- timestamp: Date.now(),
841
- ...data.custom?.params,
842
- ...data,
843
- },
844
- });
845
- }
846
- /**
847
- * Expose public API methods to window.Selwise
848
- */
849
- exposePublicApi() {
850
- if (!window.Selwise) {
851
- window.Selwise = {};
852
- }
853
- const layerName = this.dataLayerName;
854
- // Manual push method for external scripts
855
- window.Selwise.pushDataLayer = (data) => {
856
- if (!Array.isArray(window[layerName])) {
857
- window[layerName] = [];
858
- }
859
- window[layerName].push(data);
860
- };
861
- // Get current data layer state
862
- window.Selwise.getDataLayer = () => {
863
- return this.getDataLayer();
864
- };
865
- // Phase 8: Cookie consent API
866
- // Get current consent state
867
- window.Selwise.getConsentState = () => {
868
- return this.getConsentState();
869
- };
870
- // Grant consent programmatically
871
- window.Selwise.grantConsent = (categories) => {
872
- this.grantConsent(categories);
873
- };
874
- // Revoke consent programmatically
875
- window.Selwise.revokeConsent = (categories) => {
876
- this.revokeConsent(categories);
877
- };
878
- this.log('Exposed public API');
879
- }
880
- /**
881
- * Update configuration dynamically
882
- */
883
- updateConfig(options) {
884
- if (options.enabled !== undefined) {
885
- this.config.enabled = options.enabled;
886
- }
887
- if (options.variableName !== undefined) {
888
- this.config.variableName = options.variableName;
889
- this.dataLayerName = options.variableName || 'selwiseLayer';
890
- }
891
- if (options.pageDetection !== undefined) {
892
- this.config.pageDetection = options.pageDetection;
893
- }
894
- if (options.autoPageTracking !== undefined) {
895
- this.config.autoPageTracking = options.autoPageTracking;
896
- }
897
- if (options.cartAbandonmentTimeout !== undefined) {
898
- this.config.cartAbandonmentTimeout = options.cartAbandonmentTimeout;
899
- }
900
- if (options.pageTypePatterns !== undefined) {
901
- this.config.pageTypePatterns = this.normalizePageTypePatterns(options.pageTypePatterns);
902
- }
903
- if (options.debugMode !== undefined) {
904
- this.config.debugMode = options.debugMode;
905
- }
906
- if (options.cookieConsent !== undefined) {
907
- this.config.cookieConsent = options.cookieConsent;
908
- this.cookieConsent = options.cookieConsent;
909
- }
910
- if (options.trackingModules !== undefined) {
911
- const normalizedTrackingModules = this.normalizeTrackingModules(options.trackingModules);
912
- this.config.trackingModules = normalizedTrackingModules;
913
- this.trackingModules = normalizedTrackingModules;
914
- }
915
- if (options.bufferSize !== undefined) {
916
- this.config.bufferSize = options.bufferSize;
917
- }
918
- if (options.flushInterval !== undefined) {
919
- this.config.flushInterval = options.flushInterval;
920
- }
921
- this.log('Config updated:', this.config);
922
- }
923
- /**
924
- * Get current configuration
925
- */
926
- getConfig() {
927
- return { ...this.config };
928
- }
929
- /**
930
- * Get data layer state (last N events)
931
- */
932
- getLayerState(maxEvents = 100) {
933
- const layer = this.getDataLayer();
934
- if (!layer.length)
935
- return [];
936
- return layer.slice(-maxEvents);
937
- }
938
- /**
939
- * Manually push an event to the data layer
940
- */
941
- push(data) {
942
- if (!Array.isArray(window[this.dataLayerName])) {
943
- window[this.dataLayerName] = [];
944
- }
945
- window[this.dataLayerName].push(data);
946
- }
947
- /**
948
- * Log messages in debug mode or test mode
949
- */
950
- log(...args) {
951
- (0, logger_1.testModeLog)('DataLayerManager', ...args);
952
- }
953
- /**
954
- * Cleanup and destroy the data layer manager
955
- */
956
- destroy() {
957
- this.log('Destroying DataLayerManager...');
958
- // Disconnect observer
959
- if (this.observer) {
960
- this.observer.disconnect();
961
- this.observer = null;
962
- }
963
- // Clear debounce timer
964
- if (this.debounceTimer) {
965
- clearTimeout(this.debounceTimer);
966
- this.debounceTimer = null;
967
- }
968
- // Flush buffered events before shutting down trackers.
969
- this.flushEventBuffer();
970
- // Clear consent timeout timer (Phase 8)
971
- if (this.consentTimeoutTimer) {
972
- clearTimeout(this.consentTimeoutTimer);
973
- this.consentTimeoutTimer = null;
974
- }
975
- // Clear consent check interval (Phase 8)
976
- const consentCheckInterval = this.consentCheckInterval;
977
- if (consentCheckInterval) {
978
- clearInterval(consentCheckInterval);
979
- this.consentCheckInterval = null;
980
- }
981
- // Restore original push method on the dynamic layer
982
- const layer = this.getDataLayer();
983
- if (layer.length && this.originalPush) {
984
- window[this.dataLayerName].push = this.originalPush;
985
- this.originalPush = null;
986
- }
987
- // Cleanup sub-trackers
988
- this.pageTracker?.destroy();
989
- this.productTracker?.destroy();
990
- this.basketTracker?.destroy();
991
- this.checkoutTracker?.destroy();
992
- this.userTracker?.destroy();
993
- this.searchTracker?.destroy();
994
- this.cartAssociationTracker?.destroy();
995
- // Cleanup external data layer listener
996
- this.externalListener?.destroy();
997
- // Clear throttle map
998
- EVENT_THROTTLE_MAP.clear();
999
- // Clear event buffer
1000
- this.eventBuffer = [];
1001
- this.isDestroyed = true;
1002
- this.isInitialized = false;
1003
- this.log('DataLayerManager destroyed');
1004
- }
1005
- }
1006
- exports.DataLayerManager = DataLayerManager;
1007
- var types_1 = require("./types");
1008
- Object.defineProperty(exports, "ConsentCategory", { enumerable: true, get: function () { return types_1.ConsentCategory; } });
1009
- __exportStar(require("./constants"), exports);
1010
- //# sourceMappingURL=index.js.map