@selwise/widget 0.0.3 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/package.json +18 -16
- package/dist/npm/cjs/constants.js +0 -167
- package/dist/npm/cjs/constants.js.map +0 -1
- package/dist/npm/cjs/core/conflict-resolver.js +0 -203
- package/dist/npm/cjs/core/conflict-resolver.js.map +0 -1
- package/dist/npm/cjs/core/event-batcher.js +0 -977
- package/dist/npm/cjs/core/event-batcher.js.map +0 -1
- package/dist/npm/cjs/core/experiment-overrides.js +0 -178
- package/dist/npm/cjs/core/experiment-overrides.js.map +0 -1
- package/dist/npm/cjs/core/experiments.js +0 -317
- package/dist/npm/cjs/core/experiments.js.map +0 -1
- package/dist/npm/cjs/core/frequency-caps.js +0 -297
- package/dist/npm/cjs/core/frequency-caps.js.map +0 -1
- package/dist/npm/cjs/core/index.js +0 -27
- package/dist/npm/cjs/core/index.js.map +0 -1
- package/dist/npm/cjs/core/indexeddb-queue.js +0 -333
- package/dist/npm/cjs/core/indexeddb-queue.js.map +0 -1
- package/dist/npm/cjs/core/journey-tracker.js +0 -243
- package/dist/npm/cjs/core/journey-tracker.js.map +0 -1
- package/dist/npm/cjs/core/page-targeting/index.js +0 -72
- package/dist/npm/cjs/core/page-targeting/index.js.map +0 -1
- package/dist/npm/cjs/core/script-executor.js +0 -80
- package/dist/npm/cjs/core/script-executor.js.map +0 -1
- package/dist/npm/cjs/core/segments.js +0 -172
- package/dist/npm/cjs/core/segments.js.map +0 -1
- package/dist/npm/cjs/core/tracker.js +0 -798
- package/dist/npm/cjs/core/tracker.js.map +0 -1
- package/dist/npm/cjs/datalayer/basket.js +0 -385
- package/dist/npm/cjs/datalayer/basket.js.map +0 -1
- package/dist/npm/cjs/datalayer/cart-association.js +0 -226
- package/dist/npm/cjs/datalayer/cart-association.js.map +0 -1
- package/dist/npm/cjs/datalayer/checkout.js +0 -382
- package/dist/npm/cjs/datalayer/checkout.js.map +0 -1
- package/dist/npm/cjs/datalayer/constants.js +0 -163
- package/dist/npm/cjs/datalayer/constants.js.map +0 -1
- package/dist/npm/cjs/datalayer/index.js +0 -1010
- package/dist/npm/cjs/datalayer/index.js.map +0 -1
- package/dist/npm/cjs/datalayer/listener.js +0 -416
- package/dist/npm/cjs/datalayer/listener.js.map +0 -1
- package/dist/npm/cjs/datalayer/page.js +0 -343
- package/dist/npm/cjs/datalayer/page.js.map +0 -1
- package/dist/npm/cjs/datalayer/product.js +0 -517
- package/dist/npm/cjs/datalayer/product.js.map +0 -1
- package/dist/npm/cjs/datalayer/reverse-mappings.js +0 -139
- package/dist/npm/cjs/datalayer/reverse-mappings.js.map +0 -1
- package/dist/npm/cjs/datalayer/search.js +0 -363
- package/dist/npm/cjs/datalayer/search.js.map +0 -1
- package/dist/npm/cjs/datalayer/types.js +0 -134
- package/dist/npm/cjs/datalayer/types.js.map +0 -1
- package/dist/npm/cjs/datalayer/user.js +0 -372
- package/dist/npm/cjs/datalayer/user.js.map +0 -1
- package/dist/npm/cjs/debug/index.js +0 -679
- package/dist/npm/cjs/debug/index.js.map +0 -1
- package/dist/npm/cjs/entries/cdn.js +0 -72
- package/dist/npm/cjs/entries/cdn.js.map +0 -1
- package/dist/npm/cjs/index.js +0 -55
- package/dist/npm/cjs/index.js.map +0 -1
- package/dist/npm/cjs/modules/contract/recommendation-contract.js +0 -119
- package/dist/npm/cjs/modules/contract/recommendation-contract.js.map +0 -1
- package/dist/npm/cjs/modules/contract/search-contract.js +0 -18
- package/dist/npm/cjs/modules/contract/search-contract.js.map +0 -1
- package/dist/npm/cjs/modules/contract/tracking-contract.js +0 -16
- package/dist/npm/cjs/modules/contract/tracking-contract.js.map +0 -1
- package/dist/npm/cjs/modules/contract/vendor/recommendation-contract/configs.js +0 -164
- package/dist/npm/cjs/modules/contract/vendor/recommendation-contract/configs.js.map +0 -1
- package/dist/npm/cjs/modules/contract/vendor/recommendation-contract/index.js +0 -21
- package/dist/npm/cjs/modules/contract/vendor/recommendation-contract/index.js.map +0 -1
- package/dist/npm/cjs/modules/contract/vendor/recommendation-contract/types.js +0 -3
- package/dist/npm/cjs/modules/contract/vendor/recommendation-contract/types.js.map +0 -1
- package/dist/npm/cjs/modules/contract/vendor/recommendation-contract/validators.js +0 -107
- package/dist/npm/cjs/modules/contract/vendor/recommendation-contract/validators.js.map +0 -1
- package/dist/npm/cjs/modules/contract/vendor/search-contract/configs.js +0 -404
- package/dist/npm/cjs/modules/contract/vendor/search-contract/configs.js.map +0 -1
- package/dist/npm/cjs/modules/contract/vendor/search-contract/index.js +0 -21
- package/dist/npm/cjs/modules/contract/vendor/search-contract/index.js.map +0 -1
- package/dist/npm/cjs/modules/contract/vendor/search-contract/types.js +0 -8
- package/dist/npm/cjs/modules/contract/vendor/search-contract/types.js.map +0 -1
- package/dist/npm/cjs/modules/contract/vendor/search-contract/validators.js +0 -126
- package/dist/npm/cjs/modules/contract/vendor/search-contract/validators.js.map +0 -1
- package/dist/npm/cjs/modules/contract/vendor/tracking-contract/configs.js +0 -133
- package/dist/npm/cjs/modules/contract/vendor/tracking-contract/configs.js.map +0 -1
- package/dist/npm/cjs/modules/contract/vendor/tracking-contract/index.js +0 -21
- package/dist/npm/cjs/modules/contract/vendor/tracking-contract/index.js.map +0 -1
- package/dist/npm/cjs/modules/contract/vendor/tracking-contract/types.js +0 -3
- package/dist/npm/cjs/modules/contract/vendor/tracking-contract/types.js.map +0 -1
- package/dist/npm/cjs/modules/contract/vendor/tracking-contract/validators.js +0 -154
- package/dist/npm/cjs/modules/contract/vendor/tracking-contract/validators.js.map +0 -1
- package/dist/npm/cjs/modules/contract/vendor/widget-contract/configs.js +0 -1481
- package/dist/npm/cjs/modules/contract/vendor/widget-contract/configs.js.map +0 -1
- package/dist/npm/cjs/modules/contract/vendor/widget-contract/index.js +0 -22
- package/dist/npm/cjs/modules/contract/vendor/widget-contract/index.js.map +0 -1
- package/dist/npm/cjs/modules/contract/vendor/widget-contract/layout.js +0 -21
- package/dist/npm/cjs/modules/contract/vendor/widget-contract/layout.js.map +0 -1
- package/dist/npm/cjs/modules/contract/vendor/widget-contract/types.js +0 -8
- package/dist/npm/cjs/modules/contract/vendor/widget-contract/types.js.map +0 -1
- package/dist/npm/cjs/modules/contract/vendor/widget-contract/validators.js +0 -139
- package/dist/npm/cjs/modules/contract/vendor/widget-contract/validators.js.map +0 -1
- package/dist/npm/cjs/modules/contract/widget-contract.js +0 -10
- package/dist/npm/cjs/modules/contract/widget-contract.js.map +0 -1
- package/dist/npm/cjs/modules/products/tracking.js +0 -214
- package/dist/npm/cjs/modules/products/tracking.js.map +0 -1
- package/dist/npm/cjs/modules/recommendation/cart-handlers.js +0 -52
- package/dist/npm/cjs/modules/recommendation/cart-handlers.js.map +0 -1
- package/dist/npm/cjs/modules/recommendation/components/product-card-renderer.js +0 -287
- package/dist/npm/cjs/modules/recommendation/components/product-card-renderer.js.map +0 -1
- package/dist/npm/cjs/modules/recommendation/index.js +0 -678
- package/dist/npm/cjs/modules/recommendation/index.js.map +0 -1
- package/dist/npm/cjs/modules/recommendation/renderers/grid.js +0 -21
- package/dist/npm/cjs/modules/recommendation/renderers/grid.js.map +0 -1
- package/dist/npm/cjs/modules/recommendation/renderers/list.js +0 -22
- package/dist/npm/cjs/modules/recommendation/renderers/list.js.map +0 -1
- package/dist/npm/cjs/modules/recommendation/renderers/masonry.js +0 -22
- package/dist/npm/cjs/modules/recommendation/renderers/masonry.js.map +0 -1
- package/dist/npm/cjs/modules/recommendation/renderers/slider-renderer.js +0 -145
- package/dist/npm/cjs/modules/recommendation/renderers/slider-renderer.js.map +0 -1
- package/dist/npm/cjs/modules/recommendation/slider-controls.js +0 -201
- package/dist/npm/cjs/modules/recommendation/slider-controls.js.map +0 -1
- package/dist/npm/cjs/modules/recommendation/tracking.js +0 -247
- package/dist/npm/cjs/modules/recommendation/tracking.js.map +0 -1
- package/dist/npm/cjs/modules/recommendation/utils/dom.js +0 -70
- package/dist/npm/cjs/modules/recommendation/utils/dom.js.map +0 -1
- package/dist/npm/cjs/modules/recommendation/utils/format.js +0 -13
- package/dist/npm/cjs/modules/recommendation/utils/format.js.map +0 -1
- package/dist/npm/cjs/modules/recommendation/utils/index.js +0 -22
- package/dist/npm/cjs/modules/recommendation/utils/index.js.map +0 -1
- package/dist/npm/cjs/modules/renderer/helpers.js +0 -16
- package/dist/npm/cjs/modules/renderer/helpers.js.map +0 -1
- package/dist/npm/cjs/modules/renderer/index.js +0 -52
- package/dist/npm/cjs/modules/renderer/index.js.map +0 -1
- package/dist/npm/cjs/modules/renderer/style-resolver.js +0 -11
- package/dist/npm/cjs/modules/renderer/style-resolver.js.map +0 -1
- package/dist/npm/cjs/modules/renderer/styles/index.js +0 -254
- package/dist/npm/cjs/modules/renderer/styles/index.js.map +0 -1
- package/dist/npm/cjs/modules/renderer/styles.js +0 -7
- package/dist/npm/cjs/modules/renderer/styles.js.map +0 -1
- package/dist/npm/cjs/modules/renderer/utils/helpers.js +0 -243
- package/dist/npm/cjs/modules/renderer/utils/helpers.js.map +0 -1
- package/dist/npm/cjs/modules/renderer/utils/image-renderer.js +0 -65
- package/dist/npm/cjs/modules/renderer/utils/image-renderer.js.map +0 -1
- package/dist/npm/cjs/modules/renderer/utils/placement.js +0 -34
- package/dist/npm/cjs/modules/renderer/utils/placement.js.map +0 -1
- package/dist/npm/cjs/modules/renderer/utils.js +0 -61
- package/dist/npm/cjs/modules/renderer/utils.js.map +0 -1
- package/dist/npm/cjs/modules/renderer/widgets/announcement-bar.js +0 -84
- package/dist/npm/cjs/modules/renderer/widgets/announcement-bar.js.map +0 -1
- package/dist/npm/cjs/modules/renderer/widgets/cart-count.js +0 -211
- package/dist/npm/cjs/modules/renderer/widgets/cart-count.js.map +0 -1
- package/dist/npm/cjs/modules/renderer/widgets/cookie-consent.js +0 -459
- package/dist/npm/cjs/modules/renderer/widgets/cookie-consent.js.map +0 -1
- package/dist/npm/cjs/modules/renderer/widgets/countdown-timer.js +0 -132
- package/dist/npm/cjs/modules/renderer/widgets/countdown-timer.js.map +0 -1
- package/dist/npm/cjs/modules/renderer/widgets/custom.js +0 -58
- package/dist/npm/cjs/modules/renderer/widgets/custom.js.map +0 -1
- package/dist/npm/cjs/modules/renderer/widgets/embedded-card.js +0 -97
- package/dist/npm/cjs/modules/renderer/widgets/embedded-card.js.map +0 -1
- package/dist/npm/cjs/modules/renderer/widgets/exit-intent-popup.js +0 -151
- package/dist/npm/cjs/modules/renderer/widgets/exit-intent-popup.js.map +0 -1
- package/dist/npm/cjs/modules/renderer/widgets/floating-button.js +0 -70
- package/dist/npm/cjs/modules/renderer/widgets/floating-button.js.map +0 -1
- package/dist/npm/cjs/modules/renderer/widgets/helpers.js +0 -87
- package/dist/npm/cjs/modules/renderer/widgets/helpers.js.map +0 -1
- package/dist/npm/cjs/modules/renderer/widgets/index.js +0 -39
- package/dist/npm/cjs/modules/renderer/widgets/index.js.map +0 -1
- package/dist/npm/cjs/modules/renderer/widgets/inline-banner.js +0 -124
- package/dist/npm/cjs/modules/renderer/widgets/inline-banner.js.map +0 -1
- package/dist/npm/cjs/modules/renderer/widgets/newsletter.js +0 -280
- package/dist/npm/cjs/modules/renderer/widgets/newsletter.js.map +0 -1
- package/dist/npm/cjs/modules/renderer/widgets/product-view-count.js +0 -197
- package/dist/npm/cjs/modules/renderer/widgets/product-view-count.js.map +0 -1
- package/dist/npm/cjs/modules/renderer/widgets/slide-in.js +0 -105
- package/dist/npm/cjs/modules/renderer/widgets/slide-in.js.map +0 -1
- package/dist/npm/cjs/modules/renderer/widgets/sticky-footer.js +0 -47
- package/dist/npm/cjs/modules/renderer/widgets/sticky-footer.js.map +0 -1
- package/dist/npm/cjs/modules/search/cart/index.js +0 -42
- package/dist/npm/cjs/modules/search/cart/index.js.map +0 -1
- package/dist/npm/cjs/modules/search/components/index.js +0 -13
- package/dist/npm/cjs/modules/search/components/index.js.map +0 -1
- package/dist/npm/cjs/modules/search/components/search-box.js +0 -28
- package/dist/npm/cjs/modules/search/components/search-box.js.map +0 -1
- package/dist/npm/cjs/modules/search/components/search-item.js +0 -197
- package/dist/npm/cjs/modules/search/components/search-item.js.map +0 -1
- package/dist/npm/cjs/modules/search/components/suggestions.js +0 -132
- package/dist/npm/cjs/modules/search/components/suggestions.js.map +0 -1
- package/dist/npm/cjs/modules/search/index.js +0 -646
- package/dist/npm/cjs/modules/search/index.js.map +0 -1
- package/dist/npm/cjs/modules/search/renderers/position-renderers.js +0 -229
- package/dist/npm/cjs/modules/search/renderers/position-renderers.js.map +0 -1
- package/dist/npm/cjs/modules/search/renderers/results-renderer.js +0 -180
- package/dist/npm/cjs/modules/search/renderers/results-renderer.js.map +0 -1
- package/dist/npm/cjs/modules/search/services/api-service.js +0 -121
- package/dist/npm/cjs/modules/search/services/api-service.js.map +0 -1
- package/dist/npm/cjs/modules/search/services/tracking-service.js +0 -263
- package/dist/npm/cjs/modules/search/services/tracking-service.js.map +0 -1
- package/dist/npm/cjs/modules/search/styles.js +0 -864
- package/dist/npm/cjs/modules/search/styles.js.map +0 -1
- package/dist/npm/cjs/modules/search/utils/helpers.js +0 -100
- package/dist/npm/cjs/modules/search/utils/helpers.js.map +0 -1
- package/dist/npm/cjs/modules/search/utils/icons.js +0 -41
- package/dist/npm/cjs/modules/search/utils/icons.js.map +0 -1
- package/dist/npm/cjs/modules/search/utils/index.js +0 -22
- package/dist/npm/cjs/modules/search/utils/index.js.map +0 -1
- package/dist/npm/cjs/modules/search/utils/storage.js +0 -58
- package/dist/npm/cjs/modules/search/utils/storage.js.map +0 -1
- package/dist/npm/cjs/selwise.js +0 -1166
- package/dist/npm/cjs/selwise.js.map +0 -1
- package/dist/npm/cjs/sentry-test.js +0 -118
- package/dist/npm/cjs/sentry-test.js.map +0 -1
- package/dist/npm/cjs/sentry.js +0 -451
- package/dist/npm/cjs/sentry.js.map +0 -1
- package/dist/npm/cjs/shared/cart/handlers.js +0 -259
- package/dist/npm/cjs/shared/cart/handlers.js.map +0 -1
- package/dist/npm/cjs/shared/cart/index.js +0 -23
- package/dist/npm/cjs/shared/cart/index.js.map +0 -1
- package/dist/npm/cjs/shared/cart/types.js +0 -7
- package/dist/npm/cjs/shared/cart/types.js.map +0 -1
- package/dist/npm/cjs/shared/product-card/index.js +0 -24
- package/dist/npm/cjs/shared/product-card/index.js.map +0 -1
- package/dist/npm/cjs/shared/product-card/renderer.js +0 -341
- package/dist/npm/cjs/shared/product-card/renderer.js.map +0 -1
- package/dist/npm/cjs/shared/product-card/styles.js +0 -195
- package/dist/npm/cjs/shared/product-card/styles.js.map +0 -1
- package/dist/npm/cjs/shared/product-card/types.js +0 -67
- package/dist/npm/cjs/shared/product-card/types.js.map +0 -1
- package/dist/npm/cjs/types/config.js +0 -6
- package/dist/npm/cjs/types/config.js.map +0 -1
- package/dist/npm/cjs/types/experiments.js +0 -17
- package/dist/npm/cjs/types/experiments.js.map +0 -1
- package/dist/npm/cjs/types/global-api.js +0 -3
- package/dist/npm/cjs/types/global-api.js.map +0 -1
- package/dist/npm/cjs/types/index.js +0 -27
- package/dist/npm/cjs/types/index.js.map +0 -1
- package/dist/npm/cjs/types/recommendation.js +0 -6
- package/dist/npm/cjs/types/recommendation.js.map +0 -1
- package/dist/npm/cjs/types/renderer.js +0 -6
- package/dist/npm/cjs/types/renderer.js.map +0 -1
- package/dist/npm/cjs/types/search.js +0 -6
- package/dist/npm/cjs/types/search.js.map +0 -1
- package/dist/npm/cjs/utils/api-url.js +0 -35
- package/dist/npm/cjs/utils/api-url.js.map +0 -1
- package/dist/npm/cjs/utils/debounce.js +0 -74
- package/dist/npm/cjs/utils/debounce.js.map +0 -1
- package/dist/npm/cjs/utils/event-id.js +0 -23
- package/dist/npm/cjs/utils/event-id.js.map +0 -1
- package/dist/npm/cjs/utils/index.js +0 -28
- package/dist/npm/cjs/utils/index.js.map +0 -1
- package/dist/npm/cjs/utils/logger.js +0 -74
- package/dist/npm/cjs/utils/logger.js.map +0 -1
- package/dist/npm/cjs/utils/sanitize.js +0 -159
- package/dist/npm/cjs/utils/sanitize.js.map +0 -1
- package/dist/npm/cjs/utils/storage.js +0 -285
- package/dist/npm/cjs/utils/storage.js.map +0 -1
- package/dist/npm/cjs/utils/tracking-metadata.js +0 -18
- package/dist/npm/cjs/utils/tracking-metadata.js.map +0 -1
- package/dist/npm/cjs/utils/url-matcher.js +0 -11
- package/dist/npm/cjs/utils/url-matcher.js.map +0 -1
- package/dist/npm/esm/constants.d.ts +0 -130
- package/dist/npm/esm/constants.js +0 -164
- package/dist/npm/esm/constants.js.map +0 -1
- package/dist/npm/esm/core/conflict-resolver.d.ts +0 -96
- package/dist/npm/esm/core/conflict-resolver.js +0 -198
- package/dist/npm/esm/core/conflict-resolver.js.map +0 -1
- package/dist/npm/esm/core/event-batcher.d.ts +0 -253
- package/dist/npm/esm/core/event-batcher.js +0 -973
- package/dist/npm/esm/core/event-batcher.js.map +0 -1
- package/dist/npm/esm/core/experiment-overrides.d.ts +0 -7
- package/dist/npm/esm/core/experiment-overrides.js +0 -172
- package/dist/npm/esm/core/experiment-overrides.js.map +0 -1
- package/dist/npm/esm/core/experiments.d.ts +0 -90
- package/dist/npm/esm/core/experiments.js +0 -313
- package/dist/npm/esm/core/experiments.js.map +0 -1
- package/dist/npm/esm/core/frequency-caps.d.ts +0 -124
- package/dist/npm/esm/core/frequency-caps.js +0 -292
- package/dist/npm/esm/core/frequency-caps.js.map +0 -1
- package/dist/npm/esm/core/index.d.ts +0 -10
- package/dist/npm/esm/core/index.js +0 -11
- package/dist/npm/esm/core/index.js.map +0 -1
- package/dist/npm/esm/core/indexeddb-queue.d.ts +0 -83
- package/dist/npm/esm/core/indexeddb-queue.js +0 -328
- package/dist/npm/esm/core/indexeddb-queue.js.map +0 -1
- package/dist/npm/esm/core/journey-tracker.d.ts +0 -102
- package/dist/npm/esm/core/journey-tracker.js +0 -237
- package/dist/npm/esm/core/journey-tracker.js.map +0 -1
- package/dist/npm/esm/core/page-targeting/index.d.ts +0 -8
- package/dist/npm/esm/core/page-targeting/index.js +0 -67
- package/dist/npm/esm/core/page-targeting/index.js.map +0 -1
- package/dist/npm/esm/core/script-executor.d.ts +0 -31
- package/dist/npm/esm/core/script-executor.js +0 -76
- package/dist/npm/esm/core/script-executor.js.map +0 -1
- package/dist/npm/esm/core/segments.d.ts +0 -39
- package/dist/npm/esm/core/segments.js +0 -168
- package/dist/npm/esm/core/segments.js.map +0 -1
- package/dist/npm/esm/core/tracker.d.ts +0 -182
- package/dist/npm/esm/core/tracker.js +0 -794
- package/dist/npm/esm/core/tracker.js.map +0 -1
- package/dist/npm/esm/datalayer/basket.d.ts +0 -104
- package/dist/npm/esm/datalayer/basket.js +0 -381
- package/dist/npm/esm/datalayer/basket.js.map +0 -1
- package/dist/npm/esm/datalayer/cart-association.d.ts +0 -65
- package/dist/npm/esm/datalayer/cart-association.js +0 -222
- package/dist/npm/esm/datalayer/cart-association.js.map +0 -1
- package/dist/npm/esm/datalayer/checkout.d.ts +0 -96
- package/dist/npm/esm/datalayer/checkout.js +0 -378
- package/dist/npm/esm/datalayer/checkout.js.map +0 -1
- package/dist/npm/esm/datalayer/constants.d.ts +0 -77
- package/dist/npm/esm/datalayer/constants.js +0 -160
- package/dist/npm/esm/datalayer/constants.js.map +0 -1
- package/dist/npm/esm/datalayer/index.d.ts +0 -212
- package/dist/npm/esm/datalayer/index.js +0 -991
- package/dist/npm/esm/datalayer/index.js.map +0 -1
- package/dist/npm/esm/datalayer/listener.d.ts +0 -108
- package/dist/npm/esm/datalayer/listener.js +0 -411
- package/dist/npm/esm/datalayer/listener.js.map +0 -1
- package/dist/npm/esm/datalayer/page.d.ts +0 -94
- package/dist/npm/esm/datalayer/page.js +0 -339
- package/dist/npm/esm/datalayer/page.js.map +0 -1
- package/dist/npm/esm/datalayer/product.d.ts +0 -133
- package/dist/npm/esm/datalayer/product.js +0 -513
- package/dist/npm/esm/datalayer/product.js.map +0 -1
- package/dist/npm/esm/datalayer/reverse-mappings.d.ts +0 -62
- package/dist/npm/esm/datalayer/reverse-mappings.js +0 -135
- package/dist/npm/esm/datalayer/reverse-mappings.js.map +0 -1
- package/dist/npm/esm/datalayer/search.d.ts +0 -108
- package/dist/npm/esm/datalayer/search.js +0 -359
- package/dist/npm/esm/datalayer/search.js.map +0 -1
- package/dist/npm/esm/datalayer/types.d.ts +0 -292
- package/dist/npm/esm/datalayer/types.js +0 -131
- package/dist/npm/esm/datalayer/types.js.map +0 -1
- package/dist/npm/esm/datalayer/user.d.ts +0 -104
- package/dist/npm/esm/datalayer/user.js +0 -368
- package/dist/npm/esm/datalayer/user.js.map +0 -1
- package/dist/npm/esm/debug/index.d.ts +0 -173
- package/dist/npm/esm/debug/index.js +0 -673
- package/dist/npm/esm/debug/index.js.map +0 -1
- package/dist/npm/esm/entries/cdn.d.ts +0 -1
- package/dist/npm/esm/entries/cdn.js +0 -35
- package/dist/npm/esm/entries/cdn.js.map +0 -1
- package/dist/npm/esm/index.d.ts +0 -7
- package/dist/npm/esm/index.js +0 -17
- package/dist/npm/esm/index.js.map +0 -1
- package/dist/npm/esm/modules/contract/recommendation-contract.d.ts +0 -5
- package/dist/npm/esm/modules/contract/recommendation-contract.js +0 -107
- package/dist/npm/esm/modules/contract/recommendation-contract.js.map +0 -1
- package/dist/npm/esm/modules/contract/search-contract.d.ts +0 -1
- package/dist/npm/esm/modules/contract/search-contract.js +0 -2
- package/dist/npm/esm/modules/contract/search-contract.js.map +0 -1
- package/dist/npm/esm/modules/contract/tracking-contract.d.ts +0 -1
- package/dist/npm/esm/modules/contract/tracking-contract.js +0 -2
- package/dist/npm/esm/modules/contract/tracking-contract.js.map +0 -1
- package/dist/npm/esm/modules/contract/vendor/recommendation-contract/configs.d.ts +0 -8
- package/dist/npm/esm/modules/contract/vendor/recommendation-contract/configs.js +0 -160
- package/dist/npm/esm/modules/contract/vendor/recommendation-contract/configs.js.map +0 -1
- package/dist/npm/esm/modules/contract/vendor/recommendation-contract/index.d.ts +0 -3
- package/dist/npm/esm/modules/contract/vendor/recommendation-contract/index.js +0 -5
- package/dist/npm/esm/modules/contract/vendor/recommendation-contract/index.js.map +0 -1
- package/dist/npm/esm/modules/contract/vendor/recommendation-contract/types.d.ts +0 -56
- package/dist/npm/esm/modules/contract/vendor/recommendation-contract/types.js +0 -2
- package/dist/npm/esm/modules/contract/vendor/recommendation-contract/types.js.map +0 -1
- package/dist/npm/esm/modules/contract/vendor/recommendation-contract/validators.d.ts +0 -3
- package/dist/npm/esm/modules/contract/vendor/recommendation-contract/validators.js +0 -103
- package/dist/npm/esm/modules/contract/vendor/recommendation-contract/validators.js.map +0 -1
- package/dist/npm/esm/modules/contract/vendor/search-contract/configs.d.ts +0 -35
- package/dist/npm/esm/modules/contract/vendor/search-contract/configs.js +0 -396
- package/dist/npm/esm/modules/contract/vendor/search-contract/configs.js.map +0 -1
- package/dist/npm/esm/modules/contract/vendor/search-contract/index.d.ts +0 -3
- package/dist/npm/esm/modules/contract/vendor/search-contract/index.js +0 -5
- package/dist/npm/esm/modules/contract/vendor/search-contract/index.js.map +0 -1
- package/dist/npm/esm/modules/contract/vendor/search-contract/types.d.ts +0 -119
- package/dist/npm/esm/modules/contract/vendor/search-contract/types.js +0 -7
- package/dist/npm/esm/modules/contract/vendor/search-contract/types.js.map +0 -1
- package/dist/npm/esm/modules/contract/vendor/search-contract/validators.d.ts +0 -22
- package/dist/npm/esm/modules/contract/vendor/search-contract/validators.js +0 -118
- package/dist/npm/esm/modules/contract/vendor/search-contract/validators.js.map +0 -1
- package/dist/npm/esm/modules/contract/vendor/tracking-contract/configs.d.ts +0 -7
- package/dist/npm/esm/modules/contract/vendor/tracking-contract/configs.js +0 -130
- package/dist/npm/esm/modules/contract/vendor/tracking-contract/configs.js.map +0 -1
- package/dist/npm/esm/modules/contract/vendor/tracking-contract/index.d.ts +0 -3
- package/dist/npm/esm/modules/contract/vendor/tracking-contract/index.js +0 -5
- package/dist/npm/esm/modules/contract/vendor/tracking-contract/index.js.map +0 -1
- package/dist/npm/esm/modules/contract/vendor/tracking-contract/types.d.ts +0 -37
- package/dist/npm/esm/modules/contract/vendor/tracking-contract/types.js +0 -2
- package/dist/npm/esm/modules/contract/vendor/tracking-contract/types.js.map +0 -1
- package/dist/npm/esm/modules/contract/vendor/tracking-contract/validators.d.ts +0 -6
- package/dist/npm/esm/modules/contract/vendor/tracking-contract/validators.js +0 -147
- package/dist/npm/esm/modules/contract/vendor/tracking-contract/validators.js.map +0 -1
- package/dist/npm/esm/modules/contract/vendor/widget-contract/configs.d.ts +0 -22
- package/dist/npm/esm/modules/contract/vendor/widget-contract/configs.js +0 -1472
- package/dist/npm/esm/modules/contract/vendor/widget-contract/configs.js.map +0 -1
- package/dist/npm/esm/modules/contract/vendor/widget-contract/index.d.ts +0 -4
- package/dist/npm/esm/modules/contract/vendor/widget-contract/index.js +0 -6
- package/dist/npm/esm/modules/contract/vendor/widget-contract/index.js.map +0 -1
- package/dist/npm/esm/modules/contract/vendor/widget-contract/layout.d.ts +0 -14
- package/dist/npm/esm/modules/contract/vendor/widget-contract/layout.js +0 -18
- package/dist/npm/esm/modules/contract/vendor/widget-contract/layout.js.map +0 -1
- package/dist/npm/esm/modules/contract/vendor/widget-contract/types.d.ts +0 -128
- package/dist/npm/esm/modules/contract/vendor/widget-contract/types.js +0 -7
- package/dist/npm/esm/modules/contract/vendor/widget-contract/types.js.map +0 -1
- package/dist/npm/esm/modules/contract/vendor/widget-contract/validators.d.ts +0 -11
- package/dist/npm/esm/modules/contract/vendor/widget-contract/validators.js +0 -132
- package/dist/npm/esm/modules/contract/vendor/widget-contract/validators.js.map +0 -1
- package/dist/npm/esm/modules/contract/widget-contract.d.ts +0 -1
- package/dist/npm/esm/modules/contract/widget-contract.js +0 -2
- package/dist/npm/esm/modules/contract/widget-contract.js.map +0 -1
- package/dist/npm/esm/modules/products/tracking.d.ts +0 -122
- package/dist/npm/esm/modules/products/tracking.js +0 -203
- package/dist/npm/esm/modules/products/tracking.js.map +0 -1
- package/dist/npm/esm/modules/recommendation/cart-handlers.d.ts +0 -10
- package/dist/npm/esm/modules/recommendation/cart-handlers.js +0 -49
- package/dist/npm/esm/modules/recommendation/cart-handlers.js.map +0 -1
- package/dist/npm/esm/modules/recommendation/components/product-card-renderer.d.ts +0 -37
- package/dist/npm/esm/modules/recommendation/components/product-card-renderer.js +0 -281
- package/dist/npm/esm/modules/recommendation/components/product-card-renderer.js.map +0 -1
- package/dist/npm/esm/modules/recommendation/index.d.ts +0 -11
- package/dist/npm/esm/modules/recommendation/index.js +0 -674
- package/dist/npm/esm/modules/recommendation/index.js.map +0 -1
- package/dist/npm/esm/modules/recommendation/renderers/grid.d.ts +0 -5
- package/dist/npm/esm/modules/recommendation/renderers/grid.js +0 -18
- package/dist/npm/esm/modules/recommendation/renderers/grid.js.map +0 -1
- package/dist/npm/esm/modules/recommendation/renderers/list.d.ts +0 -5
- package/dist/npm/esm/modules/recommendation/renderers/list.js +0 -19
- package/dist/npm/esm/modules/recommendation/renderers/list.js.map +0 -1
- package/dist/npm/esm/modules/recommendation/renderers/masonry.d.ts +0 -5
- package/dist/npm/esm/modules/recommendation/renderers/masonry.js +0 -19
- package/dist/npm/esm/modules/recommendation/renderers/masonry.js.map +0 -1
- package/dist/npm/esm/modules/recommendation/renderers/slider-renderer.d.ts +0 -10
- package/dist/npm/esm/modules/recommendation/renderers/slider-renderer.js +0 -140
- package/dist/npm/esm/modules/recommendation/renderers/slider-renderer.js.map +0 -1
- package/dist/npm/esm/modules/recommendation/slider-controls.d.ts +0 -17
- package/dist/npm/esm/modules/recommendation/slider-controls.js +0 -187
- package/dist/npm/esm/modules/recommendation/slider-controls.js.map +0 -1
- package/dist/npm/esm/modules/recommendation/tracking.d.ts +0 -28
- package/dist/npm/esm/modules/recommendation/tracking.js +0 -237
- package/dist/npm/esm/modules/recommendation/tracking.js.map +0 -1
- package/dist/npm/esm/modules/recommendation/utils/dom.d.ts +0 -10
- package/dist/npm/esm/modules/recommendation/utils/dom.js +0 -63
- package/dist/npm/esm/modules/recommendation/utils/dom.js.map +0 -1
- package/dist/npm/esm/modules/recommendation/utils/format.d.ts +0 -4
- package/dist/npm/esm/modules/recommendation/utils/format.js +0 -10
- package/dist/npm/esm/modules/recommendation/utils/format.js.map +0 -1
- package/dist/npm/esm/modules/recommendation/utils/index.d.ts +0 -5
- package/dist/npm/esm/modules/recommendation/utils/index.js +0 -6
- package/dist/npm/esm/modules/recommendation/utils/index.js.map +0 -1
- package/dist/npm/esm/modules/renderer/helpers.d.ts +0 -5
- package/dist/npm/esm/modules/renderer/helpers.js +0 -6
- package/dist/npm/esm/modules/renderer/helpers.js.map +0 -1
- package/dist/npm/esm/modules/renderer/index.d.ts +0 -8
- package/dist/npm/esm/modules/renderer/index.js +0 -48
- package/dist/npm/esm/modules/renderer/index.js.map +0 -1
- package/dist/npm/esm/modules/renderer/style-resolver.d.ts +0 -1
- package/dist/npm/esm/modules/renderer/style-resolver.js +0 -8
- package/dist/npm/esm/modules/renderer/style-resolver.js.map +0 -1
- package/dist/npm/esm/modules/renderer/styles/index.d.ts +0 -12
- package/dist/npm/esm/modules/renderer/styles/index.js +0 -250
- package/dist/npm/esm/modules/renderer/styles/index.js.map +0 -1
- package/dist/npm/esm/modules/renderer/styles.d.ts +0 -1
- package/dist/npm/esm/modules/renderer/styles.js +0 -2
- package/dist/npm/esm/modules/renderer/styles.js.map +0 -1
- package/dist/npm/esm/modules/renderer/utils/helpers.d.ts +0 -58
- package/dist/npm/esm/modules/renderer/utils/helpers.js +0 -225
- package/dist/npm/esm/modules/renderer/utils/helpers.js.map +0 -1
- package/dist/npm/esm/modules/renderer/utils/image-renderer.d.ts +0 -17
- package/dist/npm/esm/modules/renderer/utils/image-renderer.js +0 -60
- package/dist/npm/esm/modules/renderer/utils/image-renderer.js.map +0 -1
- package/dist/npm/esm/modules/renderer/utils/placement.d.ts +0 -6
- package/dist/npm/esm/modules/renderer/utils/placement.js +0 -31
- package/dist/npm/esm/modules/renderer/utils/placement.js.map +0 -1
- package/dist/npm/esm/modules/renderer/utils.d.ts +0 -11
- package/dist/npm/esm/modules/renderer/utils.js +0 -44
- package/dist/npm/esm/modules/renderer/utils.js.map +0 -1
- package/dist/npm/esm/modules/renderer/widgets/announcement-bar.d.ts +0 -5
- package/dist/npm/esm/modules/renderer/widgets/announcement-bar.js +0 -81
- package/dist/npm/esm/modules/renderer/widgets/announcement-bar.js.map +0 -1
- package/dist/npm/esm/modules/renderer/widgets/cart-count.d.ts +0 -6
- package/dist/npm/esm/modules/renderer/widgets/cart-count.js +0 -208
- package/dist/npm/esm/modules/renderer/widgets/cart-count.js.map +0 -1
- package/dist/npm/esm/modules/renderer/widgets/cookie-consent.d.ts +0 -18
- package/dist/npm/esm/modules/renderer/widgets/cookie-consent.js +0 -454
- package/dist/npm/esm/modules/renderer/widgets/cookie-consent.js.map +0 -1
- package/dist/npm/esm/modules/renderer/widgets/countdown-timer.d.ts +0 -5
- package/dist/npm/esm/modules/renderer/widgets/countdown-timer.js +0 -129
- package/dist/npm/esm/modules/renderer/widgets/countdown-timer.js.map +0 -1
- package/dist/npm/esm/modules/renderer/widgets/custom.d.ts +0 -5
- package/dist/npm/esm/modules/renderer/widgets/custom.js +0 -55
- package/dist/npm/esm/modules/renderer/widgets/custom.js.map +0 -1
- package/dist/npm/esm/modules/renderer/widgets/embedded-card.d.ts +0 -5
- package/dist/npm/esm/modules/renderer/widgets/embedded-card.js +0 -94
- package/dist/npm/esm/modules/renderer/widgets/embedded-card.js.map +0 -1
- package/dist/npm/esm/modules/renderer/widgets/exit-intent-popup.d.ts +0 -6
- package/dist/npm/esm/modules/renderer/widgets/exit-intent-popup.js +0 -147
- package/dist/npm/esm/modules/renderer/widgets/exit-intent-popup.js.map +0 -1
- package/dist/npm/esm/modules/renderer/widgets/floating-button.d.ts +0 -5
- package/dist/npm/esm/modules/renderer/widgets/floating-button.js +0 -67
- package/dist/npm/esm/modules/renderer/widgets/floating-button.js.map +0 -1
- package/dist/npm/esm/modules/renderer/widgets/helpers.d.ts +0 -29
- package/dist/npm/esm/modules/renderer/widgets/helpers.js +0 -82
- package/dist/npm/esm/modules/renderer/widgets/helpers.js.map +0 -1
- package/dist/npm/esm/modules/renderer/widgets/index.d.ts +0 -17
- package/dist/npm/esm/modules/renderer/widgets/index.js +0 -19
- package/dist/npm/esm/modules/renderer/widgets/index.js.map +0 -1
- package/dist/npm/esm/modules/renderer/widgets/inline-banner.d.ts +0 -5
- package/dist/npm/esm/modules/renderer/widgets/inline-banner.js +0 -121
- package/dist/npm/esm/modules/renderer/widgets/inline-banner.js.map +0 -1
- package/dist/npm/esm/modules/renderer/widgets/newsletter.d.ts +0 -6
- package/dist/npm/esm/modules/renderer/widgets/newsletter.js +0 -277
- package/dist/npm/esm/modules/renderer/widgets/newsletter.js.map +0 -1
- package/dist/npm/esm/modules/renderer/widgets/product-view-count.d.ts +0 -6
- package/dist/npm/esm/modules/renderer/widgets/product-view-count.js +0 -194
- package/dist/npm/esm/modules/renderer/widgets/product-view-count.js.map +0 -1
- package/dist/npm/esm/modules/renderer/widgets/slide-in.d.ts +0 -5
- package/dist/npm/esm/modules/renderer/widgets/slide-in.js +0 -102
- package/dist/npm/esm/modules/renderer/widgets/slide-in.js.map +0 -1
- package/dist/npm/esm/modules/renderer/widgets/sticky-footer.d.ts +0 -5
- package/dist/npm/esm/modules/renderer/widgets/sticky-footer.js +0 -44
- package/dist/npm/esm/modules/renderer/widgets/sticky-footer.js.map +0 -1
- package/dist/npm/esm/modules/search/cart/index.d.ts +0 -26
- package/dist/npm/esm/modules/search/cart/index.js +0 -39
- package/dist/npm/esm/modules/search/cart/index.js.map +0 -1
- package/dist/npm/esm/modules/search/components/index.d.ts +0 -6
- package/dist/npm/esm/modules/search/components/index.js +0 -7
- package/dist/npm/esm/modules/search/components/index.js.map +0 -1
- package/dist/npm/esm/modules/search/components/search-box.d.ts +0 -11
- package/dist/npm/esm/modules/search/components/search-box.js +0 -25
- package/dist/npm/esm/modules/search/components/search-box.js.map +0 -1
- package/dist/npm/esm/modules/search/components/search-item.d.ts +0 -20
- package/dist/npm/esm/modules/search/components/search-item.js +0 -193
- package/dist/npm/esm/modules/search/components/search-item.js.map +0 -1
- package/dist/npm/esm/modules/search/components/suggestions.d.ts +0 -10
- package/dist/npm/esm/modules/search/components/suggestions.js +0 -129
- package/dist/npm/esm/modules/search/components/suggestions.js.map +0 -1
- package/dist/npm/esm/modules/search/index.d.ts +0 -67
- package/dist/npm/esm/modules/search/index.js +0 -642
- package/dist/npm/esm/modules/search/index.js.map +0 -1
- package/dist/npm/esm/modules/search/renderers/position-renderers.d.ts +0 -23
- package/dist/npm/esm/modules/search/renderers/position-renderers.js +0 -221
- package/dist/npm/esm/modules/search/renderers/position-renderers.js.map +0 -1
- package/dist/npm/esm/modules/search/renderers/results-renderer.d.ts +0 -20
- package/dist/npm/esm/modules/search/renderers/results-renderer.js +0 -176
- package/dist/npm/esm/modules/search/renderers/results-renderer.js.map +0 -1
- package/dist/npm/esm/modules/search/services/api-service.d.ts +0 -18
- package/dist/npm/esm/modules/search/services/api-service.js +0 -115
- package/dist/npm/esm/modules/search/services/api-service.js.map +0 -1
- package/dist/npm/esm/modules/search/services/tracking-service.d.ts +0 -16
- package/dist/npm/esm/modules/search/services/tracking-service.js +0 -250
- package/dist/npm/esm/modules/search/services/tracking-service.js.map +0 -1
- package/dist/npm/esm/modules/search/styles.d.ts +0 -13
- package/dist/npm/esm/modules/search/styles.js +0 -860
- package/dist/npm/esm/modules/search/styles.js.map +0 -1
- package/dist/npm/esm/modules/search/utils/helpers.d.ts +0 -24
- package/dist/npm/esm/modules/search/utils/helpers.js +0 -93
- package/dist/npm/esm/modules/search/utils/helpers.js.map +0 -1
- package/dist/npm/esm/modules/search/utils/icons.d.ts +0 -16
- package/dist/npm/esm/modules/search/utils/icons.js +0 -36
- package/dist/npm/esm/modules/search/utils/icons.js.map +0 -1
- package/dist/npm/esm/modules/search/utils/index.d.ts +0 -6
- package/dist/npm/esm/modules/search/utils/index.js +0 -7
- package/dist/npm/esm/modules/search/utils/index.js.map +0 -1
- package/dist/npm/esm/modules/search/utils/storage.d.ts +0 -7
- package/dist/npm/esm/modules/search/utils/storage.js +0 -52
- package/dist/npm/esm/modules/search/utils/storage.js.map +0 -1
- package/dist/npm/esm/package.json +0 -1
- package/dist/npm/esm/selwise.d.ts +0 -235
- package/dist/npm/esm/selwise.js +0 -1129
- package/dist/npm/esm/selwise.js.map +0 -1
- package/dist/npm/esm/sentry-test.d.ts +0 -45
- package/dist/npm/esm/sentry-test.js +0 -109
- package/dist/npm/esm/sentry-test.js.map +0 -1
- package/dist/npm/esm/sentry.d.ts +0 -86
- package/dist/npm/esm/sentry.js +0 -441
- package/dist/npm/esm/sentry.js.map +0 -1
- package/dist/npm/esm/shared/cart/handlers.d.ts +0 -46
- package/dist/npm/esm/shared/cart/handlers.js +0 -249
- package/dist/npm/esm/shared/cart/handlers.js.map +0 -1
- package/dist/npm/esm/shared/cart/index.d.ts +0 -6
- package/dist/npm/esm/shared/cart/index.js +0 -7
- package/dist/npm/esm/shared/cart/index.js.map +0 -1
- package/dist/npm/esm/shared/cart/types.d.ts +0 -30
- package/dist/npm/esm/shared/cart/types.js +0 -6
- package/dist/npm/esm/shared/cart/types.js.map +0 -1
- package/dist/npm/esm/shared/product-card/index.d.ts +0 -7
- package/dist/npm/esm/shared/product-card/index.js +0 -8
- package/dist/npm/esm/shared/product-card/index.js.map +0 -1
- package/dist/npm/esm/shared/product-card/renderer.d.ts +0 -35
- package/dist/npm/esm/shared/product-card/renderer.js +0 -334
- package/dist/npm/esm/shared/product-card/renderer.js.map +0 -1
- package/dist/npm/esm/shared/product-card/styles.d.ts +0 -17
- package/dist/npm/esm/shared/product-card/styles.js +0 -190
- package/dist/npm/esm/shared/product-card/styles.js.map +0 -1
- package/dist/npm/esm/shared/product-card/types.d.ts +0 -84
- package/dist/npm/esm/shared/product-card/types.js +0 -63
- package/dist/npm/esm/shared/product-card/types.js.map +0 -1
- package/dist/npm/esm/types/config.d.ts +0 -26
- package/dist/npm/esm/types/config.js +0 -5
- package/dist/npm/esm/types/config.js.map +0 -1
- package/dist/npm/esm/types/experiments.d.ts +0 -47
- package/dist/npm/esm/types/experiments.js +0 -14
- package/dist/npm/esm/types/experiments.js.map +0 -1
- package/dist/npm/esm/types/global-api.d.ts +0 -40
- package/dist/npm/esm/types/global-api.js +0 -2
- package/dist/npm/esm/types/global-api.js.map +0 -1
- package/dist/npm/esm/types/index.d.ts +0 -9
- package/dist/npm/esm/types/index.js +0 -11
- package/dist/npm/esm/types/index.js.map +0 -1
- package/dist/npm/esm/types/recommendation.d.ts +0 -186
- package/dist/npm/esm/types/recommendation.js +0 -5
- package/dist/npm/esm/types/recommendation.js.map +0 -1
- package/dist/npm/esm/types/renderer.d.ts +0 -99
- package/dist/npm/esm/types/renderer.js +0 -5
- package/dist/npm/esm/types/renderer.js.map +0 -1
- package/dist/npm/esm/types/search.d.ts +0 -186
- package/dist/npm/esm/types/search.js +0 -5
- package/dist/npm/esm/types/search.js.map +0 -1
- package/dist/npm/esm/utils/api-url.d.ts +0 -1
- package/dist/npm/esm/utils/api-url.js +0 -32
- package/dist/npm/esm/utils/api-url.js.map +0 -1
- package/dist/npm/esm/utils/debounce.d.ts +0 -27
- package/dist/npm/esm/utils/debounce.js +0 -70
- package/dist/npm/esm/utils/debounce.js.map +0 -1
- package/dist/npm/esm/utils/event-id.d.ts +0 -5
- package/dist/npm/esm/utils/event-id.js +0 -20
- package/dist/npm/esm/utils/event-id.js.map +0 -1
- package/dist/npm/esm/utils/index.d.ts +0 -11
- package/dist/npm/esm/utils/index.js +0 -12
- package/dist/npm/esm/utils/index.js.map +0 -1
- package/dist/npm/esm/utils/logger.d.ts +0 -31
- package/dist/npm/esm/utils/logger.js +0 -66
- package/dist/npm/esm/utils/logger.js.map +0 -1
- package/dist/npm/esm/utils/sanitize.d.ts +0 -38
- package/dist/npm/esm/utils/sanitize.js +0 -148
- package/dist/npm/esm/utils/sanitize.js.map +0 -1
- package/dist/npm/esm/utils/storage.d.ts +0 -72
- package/dist/npm/esm/utils/storage.js +0 -271
- package/dist/npm/esm/utils/storage.js.map +0 -1
- package/dist/npm/esm/utils/tracking-metadata.d.ts +0 -1
- package/dist/npm/esm/utils/tracking-metadata.js +0 -15
- package/dist/npm/esm/utils/tracking-metadata.js.map +0 -1
- package/dist/npm/esm/utils/url-matcher.d.ts +0 -4
- package/dist/npm/esm/utils/url-matcher.js +0 -8
- 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
|