@schibsted/pulse-sdk 8.0.0-alpha.16 → 8.0.0-alpha.18
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/dist/cjs/EventBus/EventBus.js +146 -0
- package/dist/cjs/Tracker.js +2499 -0
- package/dist/cjs/Tracker.test-d.js +76 -0
- package/dist/cjs/app-integration.js +40 -0
- package/dist/cjs/builders/actor.js +60 -0
- package/dist/cjs/builders/consent-manager.js +134 -0
- package/dist/cjs/builders/consents.js +149 -0
- package/dist/cjs/builders/device-browser.js +89 -0
- package/dist/cjs/builders/device-node.js +63 -0
- package/dist/cjs/builders/device.js +23 -0
- package/dist/cjs/builders/events-anonymous-browser.js +6 -0
- package/dist/cjs/builders/events-anonymous-node.js +88 -0
- package/dist/cjs/builders/events-anonymous.js +17 -0
- package/dist/cjs/builders/events-browser.js +8 -0
- package/dist/cjs/builders/events-node.js +127 -0
- package/dist/cjs/builders/events.js +17 -0
- package/dist/cjs/builders/experimentMetadata.js +25 -0
- package/dist/cjs/builders/experiments.js +32 -0
- package/dist/cjs/builders/index.js +52 -0
- package/dist/cjs/builders/location.js +38 -0
- package/dist/cjs/builders/objects/objects-anonymous-browser.js +36 -0
- package/dist/cjs/builders/objects/objects-anonymous-node.js +95 -0
- package/dist/cjs/builders/objects/objects-anonymous.js +23 -0
- package/dist/cjs/builders/objects/objects-browser.js +36 -0
- package/dist/cjs/builders/objects/objects-node.js +126 -0
- package/dist/cjs/builders/objects/objects.js +23 -0
- package/dist/cjs/builders/objects/utils.js +23 -0
- package/dist/cjs/builders/origin-browser.js +28 -0
- package/dist/cjs/builders/origin-node.js +29 -0
- package/dist/cjs/builders/origin.js +23 -0
- package/dist/cjs/builders/provider.js +24 -0
- package/dist/cjs/builders/session-browser.js +97 -0
- package/dist/cjs/builders/session-node.js +9 -0
- package/dist/cjs/builders/session.js +23 -0
- package/dist/cjs/builders/tracker-browser.js +34 -0
- package/dist/cjs/builders/tracker-node.js +22 -0
- package/dist/cjs/builders/trackerBuilder.js +23 -0
- package/dist/cjs/config-browser.js +26 -0
- package/dist/cjs/config.js +9 -0
- package/dist/cjs/createPulseTracker.js +50 -0
- package/dist/cjs/defer.js +20 -0
- package/dist/cjs/getPulseTracker.js +74 -0
- package/dist/cjs/identity/actor.js +60 -0
- package/dist/cjs/identity/advertising.js +62 -0
- package/dist/cjs/identity/cis.js +66 -0
- package/dist/cjs/identity/device.js +20 -0
- package/dist/cjs/identity/index.js +20 -0
- package/dist/cjs/index.js +57 -0
- package/dist/cjs/leaveTracking/constants.js +26 -0
- package/dist/cjs/leaveTracking/index.js +368 -0
- package/dist/cjs/leaveTracking/types.js +19 -0
- package/dist/cjs/leaveTrackingTpaas/constants.js +18 -0
- package/dist/cjs/leaveTrackingTpaas/index.js +341 -0
- package/dist/cjs/leaveTrackingTpaas/types.js +19 -0
- package/dist/cjs/network-browser.js +35 -0
- package/dist/cjs/network.js +15 -0
- package/dist/cjs/remoteConfig/index.js +124 -0
- package/dist/cjs/tracker-proxy/consts.js +72 -0
- package/dist/cjs/tracker-proxy/proxy-provider.js +68 -0
- package/dist/cjs/types.js +2 -0
- package/dist/cjs/version.json +1 -0
- package/dist/cjs/visibility-observer/index.js +101 -0
- package/dist/cjs/warnOnce.js +11 -0
- package/dist/cjs/wrapper/engagement/ui-element/event-builder.js +21 -0
- package/dist/cjs/wrapper/engagement/ui-element/types.js +2 -0
- package/dist/cjs/wrapper/types/base-event.js +2 -0
- package/dist/cjs/wrapper/types/engagement-event.js +2 -0
- package/dist/cjs/wrapper/types/event.js +2 -0
- package/dist/cjs/wrapper/types/index.js +19 -0
- package/dist/cjs/wrapper/types/utils.js +2 -0
- package/dist/cjs/wrapper/utils/get-navigation-type.js +32 -0
- package/dist/cjs/wrapper/utils/page-from-page-view.js +9 -0
- package/dist/cjs/wrapper/view/article/event-builder.js +19 -0
- package/dist/cjs/wrapper/view/article/types.js +2 -0
- package/dist/cjs/wrapper/view/frontpage/event-builder.js +16 -0
- package/dist/cjs/wrapper/view/frontpage/types.js +2 -0
- package/dist/cjs/wrapper/view/listing/event-builder.js +14 -0
- package/dist/cjs/wrapper/view/listing/types.js +2 -0
- package/dist/cjs/wrapper/view/loginposter/event-builder.js +11 -0
- package/dist/cjs/wrapper/view/loginposter/types.js +2 -0
- package/dist/cjs/wrapper/view/page/event-builder.js +18 -0
- package/dist/cjs/wrapper/view/page/types.js +2 -0
- package/dist/cjs/wrapper/view/salesposter/event-builder.js +18 -0
- package/dist/cjs/wrapper/view/salesposter/types.js +2 -0
- package/dist/cjs/wrapper/view/ui-element/event-builder.js +15 -0
- package/dist/cjs/wrapper/view/ui-element/types.js +2 -0
- package/dist/ejs/EventBus/EventBus.js +140 -0
- package/dist/ejs/Tracker.js +2455 -0
- package/dist/ejs/Tracker.test-d.js +71 -0
- package/dist/ejs/app-integration.js +33 -0
- package/dist/ejs/builders/actor.js +53 -0
- package/dist/ejs/builders/consent-manager.js +125 -0
- package/dist/ejs/builders/consents.js +138 -0
- package/dist/ejs/builders/device-browser.js +69 -0
- package/dist/ejs/builders/device-node.js +57 -0
- package/dist/ejs/builders/device.js +2 -0
- package/dist/ejs/builders/events-anonymous-browser.js +1 -0
- package/dist/ejs/builders/events-anonymous-node.js +48 -0
- package/dist/ejs/builders/events-anonymous.js +1 -0
- package/dist/ejs/builders/events-browser.js +1 -0
- package/dist/ejs/builders/events-node.js +84 -0
- package/dist/ejs/builders/events.js +1 -0
- package/dist/ejs/builders/experimentMetadata.js +21 -0
- package/dist/ejs/builders/experiments.js +27 -0
- package/dist/ejs/builders/index.js +12 -0
- package/dist/ejs/builders/location.js +34 -0
- package/dist/ejs/builders/objects/objects-anonymous-browser.js +14 -0
- package/dist/ejs/builders/objects/objects-anonymous-node.js +90 -0
- package/dist/ejs/builders/objects/objects-anonymous.js +2 -0
- package/dist/ejs/builders/objects/objects-browser.js +14 -0
- package/dist/ejs/builders/objects/objects-node.js +121 -0
- package/dist/ejs/builders/objects/objects.js +2 -0
- package/dist/ejs/builders/objects/utils.js +20 -0
- package/dist/ejs/builders/origin-browser.js +6 -0
- package/dist/ejs/builders/origin-node.js +24 -0
- package/dist/ejs/builders/origin.js +2 -0
- package/dist/ejs/builders/provider.js +18 -0
- package/dist/ejs/builders/session-browser.js +90 -0
- package/dist/ejs/builders/session-node.js +4 -0
- package/dist/ejs/builders/session.js +2 -0
- package/dist/ejs/builders/tracker-browser.js +13 -0
- package/dist/ejs/builders/tracker-node.js +14 -0
- package/dist/ejs/builders/trackerBuilder.js +2 -0
- package/dist/ejs/config-browser.js +23 -0
- package/dist/ejs/config.js +6 -0
- package/dist/ejs/createPulseTracker.js +44 -0
- package/dist/ejs/defer.js +17 -0
- package/dist/ejs/getPulseTracker.js +71 -0
- package/dist/ejs/identity/actor.js +51 -0
- package/dist/ejs/identity/advertising.js +57 -0
- package/dist/ejs/identity/cis.js +58 -0
- package/dist/ejs/identity/device.js +17 -0
- package/dist/ejs/identity/index.js +4 -0
- package/dist/ejs/index.js +9 -0
- package/dist/ejs/leaveTracking/constants.js +19 -0
- package/dist/ejs/leaveTracking/index.js +319 -0
- package/dist/ejs/leaveTracking/types.js +16 -0
- package/dist/ejs/leaveTrackingTpaas/constants.js +13 -0
- package/dist/ejs/leaveTrackingTpaas/index.js +291 -0
- package/dist/ejs/leaveTrackingTpaas/types.js +16 -0
- package/dist/ejs/network-browser.js +32 -0
- package/dist/ejs/network.js +12 -0
- package/dist/ejs/remoteConfig/index.js +111 -0
- package/dist/ejs/tracker-proxy/consts.js +68 -0
- package/dist/ejs/tracker-proxy/proxy-provider.js +62 -0
- package/dist/ejs/types.js +1 -0
- package/dist/ejs/version.json +1 -0
- package/dist/ejs/visibility-observer/index.js +97 -0
- package/dist/ejs/warnOnce.js +9 -0
- package/dist/ejs/wrapper/engagement/ui-element/event-builder.js +17 -0
- package/dist/ejs/wrapper/engagement/ui-element/types.js +1 -0
- package/dist/ejs/wrapper/types/base-event.js +1 -0
- package/dist/ejs/wrapper/types/engagement-event.js +1 -0
- package/dist/ejs/wrapper/types/event.js +1 -0
- package/dist/ejs/wrapper/types/index.js +3 -0
- package/dist/ejs/wrapper/types/utils.js +1 -0
- package/dist/ejs/wrapper/utils/get-navigation-type.js +29 -0
- package/dist/ejs/wrapper/utils/page-from-page-view.js +6 -0
- package/dist/ejs/wrapper/view/article/event-builder.js +15 -0
- package/dist/ejs/wrapper/view/article/types.js +1 -0
- package/dist/ejs/wrapper/view/frontpage/event-builder.js +12 -0
- package/dist/ejs/wrapper/view/frontpage/types.js +1 -0
- package/dist/ejs/wrapper/view/listing/event-builder.js +10 -0
- package/dist/ejs/wrapper/view/listing/types.js +1 -0
- package/dist/ejs/wrapper/view/loginposter/event-builder.js +7 -0
- package/dist/ejs/wrapper/view/loginposter/types.js +1 -0
- package/dist/ejs/wrapper/view/page/event-builder.js +14 -0
- package/dist/ejs/wrapper/view/page/types.js +1 -0
- package/dist/ejs/wrapper/view/salesposter/event-builder.js +14 -0
- package/dist/ejs/wrapper/view/salesposter/types.js +1 -0
- package/dist/ejs/wrapper/view/ui-element/event-builder.js +11 -0
- package/dist/ejs/wrapper/view/ui-element/types.js +1 -0
- package/dist/types/EventBus/EventBus.d.ts +106 -0
- package/dist/types/Tracker.d.ts +1418 -0
- package/dist/types/Tracker.test-d.d.ts +1 -0
- package/dist/types/app-integration.d.ts +10 -0
- package/dist/types/builders/actor.d.ts +39 -0
- package/dist/types/builders/consent-manager.d.ts +49 -0
- package/dist/types/builders/consents.d.ts +107 -0
- package/dist/types/builders/device-browser.d.ts +6 -0
- package/dist/types/builders/device-node.d.ts +65 -0
- package/dist/types/builders/device.d.ts +2 -0
- package/dist/types/builders/events-anonymous-browser.d.ts +1 -0
- package/dist/types/builders/events-anonymous-node.d.ts +82 -0
- package/dist/types/builders/events-anonymous.d.ts +1 -0
- package/dist/types/builders/events-browser.d.ts +1 -0
- package/dist/types/builders/events-node.d.ts +130 -0
- package/dist/types/builders/events.d.ts +1 -0
- package/dist/types/builders/experimentMetadata.d.ts +25 -0
- package/dist/types/builders/experiments.d.ts +24 -0
- package/dist/types/builders/index.d.ts +23 -0
- package/dist/types/builders/location.d.ts +34 -0
- package/dist/types/builders/objects/objects-anonymous-browser.d.ts +11 -0
- package/dist/types/builders/objects/objects-anonymous-node.d.ts +52 -0
- package/dist/types/builders/objects/objects-anonymous.d.ts +2 -0
- package/dist/types/builders/objects/objects-browser.d.ts +11 -0
- package/dist/types/builders/objects/objects-node.d.ts +60 -0
- package/dist/types/builders/objects/objects.d.ts +2 -0
- package/dist/types/builders/objects/utils.d.ts +1 -0
- package/dist/types/builders/origin-browser.d.ts +5 -0
- package/dist/types/builders/origin-node.d.ts +18 -0
- package/dist/types/builders/origin.d.ts +2 -0
- package/dist/types/builders/provider.d.ts +14 -0
- package/dist/types/builders/session-browser.d.ts +20 -0
- package/dist/types/builders/session-node.d.ts +3 -0
- package/dist/types/builders/session.d.ts +2 -0
- package/dist/types/builders/tracker-browser.d.ts +2 -0
- package/dist/types/builders/tracker-node.d.ts +14 -0
- package/dist/types/builders/trackerBuilder.d.ts +2 -0
- package/dist/types/config-browser.d.ts +23 -0
- package/dist/types/config.d.ts +6 -0
- package/dist/types/createPulseTracker.d.ts +21 -0
- package/dist/types/defer.d.ts +28 -0
- package/dist/types/getPulseTracker.d.ts +59 -0
- package/dist/types/identity/actor.d.ts +28 -0
- package/dist/types/identity/advertising.d.ts +30 -0
- package/dist/types/identity/cis.d.ts +21 -0
- package/dist/types/identity/device.d.ts +12 -0
- package/dist/types/identity/index.d.ts +4 -0
- package/dist/types/index.d.ts +31 -0
- package/dist/types/leaveTracking/constants.d.ts +26 -0
- package/dist/types/leaveTracking/index.d.ts +23 -0
- package/dist/types/leaveTracking/types.d.ts +78 -0
- package/dist/types/leaveTrackingTpaas/constants.d.ts +13 -0
- package/dist/types/leaveTrackingTpaas/index.d.ts +28 -0
- package/dist/types/leaveTrackingTpaas/types.d.ts +45 -0
- package/dist/types/network-browser.d.ts +5 -0
- package/dist/types/network.d.ts +4 -0
- package/dist/types/remoteConfig/index.d.ts +32 -0
- package/dist/types/tracker-proxy/consts.d.ts +45 -0
- package/dist/types/tracker-proxy/proxy-provider.d.ts +2 -0
- package/dist/types/types.d.ts +93 -0
- package/dist/types/visibility-observer/index.d.ts +38 -0
- package/dist/types/warnOnce.d.ts +2 -0
- package/dist/types/wrapper/engagement/ui-element/event-builder.d.ts +3 -0
- package/dist/types/wrapper/engagement/ui-element/types.d.ts +29 -0
- package/dist/types/wrapper/types/base-event.d.ts +74 -0
- package/dist/types/wrapper/types/engagement-event.d.ts +5 -0
- package/dist/types/wrapper/types/event.d.ts +41 -0
- package/dist/types/wrapper/types/index.d.ts +3 -0
- package/dist/types/wrapper/types/utils.d.ts +5 -0
- package/dist/types/wrapper/utils/get-navigation-type.d.ts +3 -0
- package/dist/types/wrapper/utils/page-from-page-view.d.ts +3 -0
- package/dist/types/wrapper/view/article/event-builder.d.ts +2 -0
- package/dist/types/wrapper/view/article/types.d.ts +27 -0
- package/dist/types/wrapper/view/frontpage/event-builder.d.ts +2 -0
- package/dist/types/wrapper/view/frontpage/types.d.ts +18 -0
- package/dist/types/wrapper/view/listing/event-builder.d.ts +2 -0
- package/dist/types/wrapper/view/listing/types.d.ts +27 -0
- package/dist/types/wrapper/view/loginposter/event-builder.d.ts +2 -0
- package/dist/types/wrapper/view/loginposter/types.d.ts +14 -0
- package/dist/types/wrapper/view/page/event-builder.d.ts +2 -0
- package/dist/types/wrapper/view/page/types.d.ts +16 -0
- package/dist/types/wrapper/view/salesposter/event-builder.d.ts +2 -0
- package/dist/types/wrapper/view/salesposter/types.d.ts +15 -0
- package/dist/types/wrapper/view/ui-element/event-builder.d.ts +3 -0
- package/dist/types/wrapper/view/ui-element/types.d.ts +28 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/cis-browser.d.ts +26 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/cis-browser.js +273 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/cis-browser.js.map +1 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/cis.d.ts +10 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/cis.js +7 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/cis.js.map +1 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/eventEmitter.d.ts +14 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/eventEmitter.js +39 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/eventEmitter.js.map +1 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/index.d.ts +4 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/index.js +12 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/index.js.map +1 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/pulse-cookie.d.ts +55 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/pulse-cookie.js +276 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/pulse-cookie.js.map +1 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/storage/pulseStorage.d.ts +36 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/storage/pulseStorage.js +87 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/storage/pulseStorage.js.map +1 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/storage/storage.d.ts +6 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/storage/storage.js +21 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/storage/storage.js.map +1 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/types.d.ts +24 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/types.js +3 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/types.js.map +1 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/cis-browser.d.ts +26 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/cis-browser.js +203 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/cis-browser.js.map +1 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/cis.d.ts +10 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/cis.js +4 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/cis.js.map +1 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/eventEmitter.d.ts +14 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/eventEmitter.js +35 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/eventEmitter.js.map +1 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/index.d.ts +4 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/index.js +3 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/index.js.map +1 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/pulse-cookie.d.ts +55 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/pulse-cookie.js +254 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/pulse-cookie.js.map +1 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/storage/pulseStorage.d.ts +36 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/storage/pulseStorage.js +50 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/storage/pulseStorage.js.map +1 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/storage/storage.d.ts +6 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/storage/storage.js +17 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/storage/storage.js.map +1 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/types.d.ts +24 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/types.js +2 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/types.js.map +1 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/types/cis-browser.d.ts +26 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/types/cis.d.ts +10 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/types/eventEmitter.d.ts +14 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/types/index.d.ts +4 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/types/pulse-cookie.d.ts +55 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/types/storage/pulseStorage.d.ts +36 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/types/storage/storage.d.ts +6 -0
- package/node_modules/@schibsted/pulse-cis-sync/dist/types/types.d.ts +24 -0
- package/node_modules/@schibsted/pulse-cis-sync/package.json +44 -0
- package/node_modules/@schibsted/pulse-utils/dist/cjs/cookie-config.js +10 -0
- package/node_modules/@schibsted/pulse-utils/dist/cjs/cookie.js +86 -0
- package/node_modules/@schibsted/pulse-utils/dist/cjs/events.js +109 -0
- package/node_modules/@schibsted/pulse-utils/dist/cjs/get.js +18 -0
- package/node_modules/@schibsted/pulse-utils/dist/cjs/getRootDomain.js +54 -0
- package/node_modules/@schibsted/pulse-utils/dist/cjs/index.js +38 -0
- package/node_modules/@schibsted/pulse-utils/dist/cjs/merge.js +38 -0
- package/node_modules/@schibsted/pulse-utils/dist/cjs/objects.js +34 -0
- package/node_modules/@schibsted/pulse-utils/dist/cjs/omit.js +9 -0
- package/node_modules/@schibsted/pulse-utils/dist/cjs/randomString.js +18 -0
- package/node_modules/@schibsted/pulse-utils/dist/cjs/throttle.js +34 -0
- package/node_modules/@schibsted/pulse-utils/dist/cjs/webApi.js +21 -0
- package/node_modules/@schibsted/pulse-utils/dist/ejs/cookie-config.js +7 -0
- package/node_modules/@schibsted/pulse-utils/dist/ejs/cookie.js +81 -0
- package/node_modules/@schibsted/pulse-utils/dist/ejs/events.js +103 -0
- package/node_modules/@schibsted/pulse-utils/dist/ejs/get.js +15 -0
- package/node_modules/@schibsted/pulse-utils/dist/ejs/getRootDomain.js +49 -0
- package/node_modules/@schibsted/pulse-utils/dist/ejs/index.js +11 -0
- package/node_modules/@schibsted/pulse-utils/dist/ejs/merge.js +35 -0
- package/node_modules/@schibsted/pulse-utils/dist/ejs/objects.js +26 -0
- package/node_modules/@schibsted/pulse-utils/dist/ejs/omit.js +6 -0
- package/node_modules/@schibsted/pulse-utils/dist/ejs/randomString.js +15 -0
- package/node_modules/@schibsted/pulse-utils/dist/ejs/throttle.js +31 -0
- package/node_modules/@schibsted/pulse-utils/dist/ejs/webApi.js +17 -0
- package/node_modules/@schibsted/pulse-utils/dist/types/cookie-config.d.ts +7 -0
- package/node_modules/@schibsted/pulse-utils/dist/types/cookie.d.ts +23 -0
- package/node_modules/@schibsted/pulse-utils/dist/types/events.d.ts +17 -0
- package/node_modules/@schibsted/pulse-utils/dist/types/get.d.ts +1 -0
- package/node_modules/@schibsted/pulse-utils/dist/types/getRootDomain.d.ts +13 -0
- package/node_modules/@schibsted/pulse-utils/dist/types/index.d.ts +11 -0
- package/node_modules/@schibsted/pulse-utils/dist/types/merge.d.ts +4 -0
- package/node_modules/@schibsted/pulse-utils/dist/types/objects.d.ts +6 -0
- package/node_modules/@schibsted/pulse-utils/dist/types/omit.d.ts +3 -0
- package/node_modules/@schibsted/pulse-utils/dist/types/randomString.d.ts +1 -0
- package/node_modules/@schibsted/pulse-utils/dist/types/throttle.d.ts +3 -0
- package/node_modules/@schibsted/pulse-utils/dist/types/webApi.d.ts +10 -0
- package/node_modules/@schibsted/pulse-utils/package.json +36 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/cjs/builders/anonymous.js +8 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/cjs/builders/baseEvent.js +9 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/cjs/builders/consents.js +15 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/cjs/builders/device.js +211 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/cjs/builders/experiments.js +11 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/cjs/builders/navigationType.js +52 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/cjs/builders/pageInfo.js +24 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/cjs/builders/pageviewId.js +11 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/cjs/builders/provider.js +12 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/cjs/builders/referrer.js +19 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/cjs/builders/session.js +114 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/cjs/builders/time.js +15 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/cjs/builders/trackerBuilder.js +15 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/cjs/builders/user.js +26 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/cjs/builders/utm.js +35 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/cjs/builders.js +264 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/cjs/index.js +17 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/cjs/types.js +2 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/ejs/builders/anonymous.js +5 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/ejs/builders/baseEvent.js +6 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/ejs/builders/consents.js +12 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/ejs/builders/device.js +174 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/ejs/builders/experiments.js +7 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/ejs/builders/navigationType.js +48 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/ejs/builders/pageInfo.js +20 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/ejs/builders/pageviewId.js +7 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/ejs/builders/provider.js +9 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/ejs/builders/referrer.js +15 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/ejs/builders/session.js +108 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/ejs/builders/time.js +11 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/ejs/builders/trackerBuilder.js +11 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/ejs/builders/user.js +22 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/ejs/builders/utm.js +31 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/ejs/builders.js +209 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/ejs/index.js +1 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/ejs/types.js +1 -0
- package/node_modules/@schibsted/tpaas-event-builder/dist/index.d.ts +5171 -0
- package/node_modules/@schibsted/tpaas-event-builder/package.json +40 -0
- package/node_modules/@schibsted/tpaas-schemas/dist/cjs/constants.js +62 -1
- package/node_modules/@schibsted/tpaas-schemas/dist/ejs/constants.js +61 -0
- package/node_modules/@schibsted/tpaas-schemas/dist/index.d.ts +128 -0
- package/package.json +58 -13
- package/CHANGELOG.md +0 -1035
- package/dist/index.d.ts +0 -13
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -47
- package/dist/index.js.map +0 -1
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.calculateScrollPosition = exports.calculateScrolledPixels = exports.resetViewedContent = void 0;
|
|
37
|
+
exports.addPageLeaveTracking = addPageLeaveTracking;
|
|
38
|
+
exports.leaveTrackingIsActive = leaveTrackingIsActive;
|
|
39
|
+
exports.removePageLeaveTracking = removePageLeaveTracking;
|
|
40
|
+
exports.updatePageLeaveTracking = updatePageLeaveTracking;
|
|
41
|
+
exports.updatePageLeaveEvent = updatePageLeaveEvent;
|
|
42
|
+
exports.trackActivePageLeave = trackActivePageLeave;
|
|
43
|
+
exports.trackPageLeave = trackPageLeave;
|
|
44
|
+
exports.updateViewedContent = updateViewedContent;
|
|
45
|
+
exports.addEventListeners = addEventListeners;
|
|
46
|
+
exports.removeEventListeners = removeEventListeners;
|
|
47
|
+
const pulse_utils_1 = require("@schibsted/pulse-utils");
|
|
48
|
+
const logger = __importStar(require("loglevel"));
|
|
49
|
+
const Tracker_1 = require("../Tracker");
|
|
50
|
+
const constants_1 = require("./constants");
|
|
51
|
+
const types_1 = require("./types");
|
|
52
|
+
let pageLeaveListeners = [];
|
|
53
|
+
let updateViewedContentListeners = [];
|
|
54
|
+
let activityListeners = [];
|
|
55
|
+
let resizeObserver = null;
|
|
56
|
+
let throttledUpdateFn = (0, pulse_utils_1.throttle)(() => undefined, 0);
|
|
57
|
+
let startTime = 0;
|
|
58
|
+
let activityDuration = (0, constants_1.DEFAULT_ACTIVITY_DURATION)();
|
|
59
|
+
let currentPageLeaveEvent = (0, constants_1.DEFAULT_PAGE_LEAVE_EVENT)();
|
|
60
|
+
let originalUseBeacon;
|
|
61
|
+
let currentLeaveEventBuilder = (0, constants_1.DEFAULT_LEAVE_EVENT_BUILDER)();
|
|
62
|
+
let additionalHeightBuilder;
|
|
63
|
+
/*
|
|
64
|
+
Add page leave tracking
|
|
65
|
+
*/
|
|
66
|
+
function addPageLeaveTracking(tracker, objectElement, pageElement, eventBuilder, options = {}) {
|
|
67
|
+
additionalHeightBuilder = options.additionalHeightBuilder;
|
|
68
|
+
if (!leaveTrackingIsActive()) {
|
|
69
|
+
originalUseBeacon = tracker.state.useBeacon;
|
|
70
|
+
tracker.state.useBeacon = true;
|
|
71
|
+
currentLeaveEventBuilder = eventBuilder || (0, constants_1.DEFAULT_LEAVE_EVENT_BUILDER)();
|
|
72
|
+
addPageLeaveListeners(tracker);
|
|
73
|
+
addUpdateEventListeners(objectElement, pageElement, options.objectResizable);
|
|
74
|
+
startTime = resetTime();
|
|
75
|
+
logger.debug('addPageLeaveTracking:after:state', currentPageLeaveEvent);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
logger.warn('addPageLeaveTracking was called while leave-tracking was already active. Consider using updatePageLeaveTracking with resetProperties=false if you want to update the page/object element!');
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function leaveTrackingIsActive() {
|
|
82
|
+
return !(pageLeaveListeners.length === 0 &&
|
|
83
|
+
updateViewedContentListeners.length === 0 &&
|
|
84
|
+
activityListeners.length === 0);
|
|
85
|
+
}
|
|
86
|
+
/*
|
|
87
|
+
Remove page leave tracking
|
|
88
|
+
*/
|
|
89
|
+
function removePageLeaveTracking(tracker) {
|
|
90
|
+
tracker.state.useBeacon = originalUseBeacon;
|
|
91
|
+
removePageLeaveListeners();
|
|
92
|
+
removeUpdateEventListeners();
|
|
93
|
+
resetEventDefaults();
|
|
94
|
+
currentLeaveEventBuilder = (0, constants_1.DEFAULT_LEAVE_EVENT_BUILDER)();
|
|
95
|
+
logger.debug('removePageLeaveTracking:after:state', currentLeaveEventBuilder());
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Update page leave tracking
|
|
99
|
+
* @param objectElement new object element to track
|
|
100
|
+
* @param pageElement new page element to track
|
|
101
|
+
* @param resetProperties if ALL engagement properties should be reset (duration, scroll etc.)
|
|
102
|
+
*/
|
|
103
|
+
function updatePageLeaveTracking(objectElement, pageElement, resetProperties) {
|
|
104
|
+
if (updateViewedContentListeners.length > 0) {
|
|
105
|
+
removeUpdateEventListeners();
|
|
106
|
+
if (resetProperties) {
|
|
107
|
+
resetEventDefaults();
|
|
108
|
+
}
|
|
109
|
+
addUpdateEventListeners(objectElement, pageElement);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/*
|
|
113
|
+
Add event listeners to the relevant browser events
|
|
114
|
+
When the browser event triggers, we want to send the Leave event
|
|
115
|
+
with the event supplied by the user and the name of the triggered browser event
|
|
116
|
+
*/
|
|
117
|
+
function addPageLeaveListeners(tracker) {
|
|
118
|
+
const beforeUnloadListener = addEventListeners([types_1.BrowserEvents.BEFORE_UNLOAD], () => trackPageLeave(tracker, currentLeaveEventBuilder(), types_1.BrowserEvents.BEFORE_UNLOAD), { capture: true });
|
|
119
|
+
const pageHideListener = addEventListeners([types_1.BrowserEvents.PAGE_HIDE], () => trackPageLeave(tracker, currentLeaveEventBuilder(), types_1.BrowserEvents.PAGE_HIDE), { capture: true });
|
|
120
|
+
const popStateListener = addEventListeners([types_1.BrowserEvents.POP_STATE], () => trackPageLeave(tracker, currentLeaveEventBuilder(), types_1.BrowserEvents.POP_STATE), { capture: true });
|
|
121
|
+
const visibilityChangeListener = addEventListeners([types_1.BrowserEvents.VISIBILITY_CHANGE], () => {
|
|
122
|
+
if (document.visibilityState === 'hidden') {
|
|
123
|
+
trackPageLeave(tracker, currentLeaveEventBuilder(), types_1.BrowserEvents.VISIBILITY_CHANGE);
|
|
124
|
+
}
|
|
125
|
+
}, { capture: true });
|
|
126
|
+
pageLeaveListeners.push(...beforeUnloadListener);
|
|
127
|
+
pageLeaveListeners.push(...pageHideListener);
|
|
128
|
+
pageLeaveListeners.push(...popStateListener);
|
|
129
|
+
pageLeaveListeners.push(...visibilityChangeListener);
|
|
130
|
+
}
|
|
131
|
+
/*
|
|
132
|
+
Remove all Leave event listeners
|
|
133
|
+
*/
|
|
134
|
+
function removePageLeaveListeners() {
|
|
135
|
+
pageLeaveListeners = removeEventListeners(pageLeaveListeners, { capture: true });
|
|
136
|
+
}
|
|
137
|
+
function removeResizeObserver() {
|
|
138
|
+
if (resizeObserver) {
|
|
139
|
+
resizeObserver.disconnect();
|
|
140
|
+
resizeObserver = null;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/*
|
|
144
|
+
Add handlers to update the default event.
|
|
145
|
+
The fields that are included can be found here: https://pages.github.schibsted.io/mpt-data/pulse-standard/#leave-article
|
|
146
|
+
*/
|
|
147
|
+
function addUpdateEventListeners(objectElement, pageElement, objectResizable = false) {
|
|
148
|
+
addUpdateViewedContentListeners(objectElement, pageElement, objectResizable);
|
|
149
|
+
addUpdateActivityDurationListeners();
|
|
150
|
+
}
|
|
151
|
+
/*
|
|
152
|
+
Remove all handlers for tracking viewed content and durations
|
|
153
|
+
*/
|
|
154
|
+
function removeUpdateEventListeners() {
|
|
155
|
+
updateViewedContentListeners = removeEventListeners(updateViewedContentListeners);
|
|
156
|
+
activityListeners = removeEventListeners(activityListeners);
|
|
157
|
+
removeResizeObserver();
|
|
158
|
+
}
|
|
159
|
+
/*
|
|
160
|
+
Reset the default leave tracking state.
|
|
161
|
+
*/
|
|
162
|
+
const resetEventDefaults = () => {
|
|
163
|
+
currentPageLeaveEvent = (0, constants_1.DEFAULT_PAGE_LEAVE_EVENT)();
|
|
164
|
+
startTime = resetTime();
|
|
165
|
+
activityDuration = resetActivityDuration();
|
|
166
|
+
};
|
|
167
|
+
const resetActivityDuration = () => {
|
|
168
|
+
clearInterval(activityDuration.interval);
|
|
169
|
+
return (0, constants_1.DEFAULT_ACTIVITY_DURATION)();
|
|
170
|
+
};
|
|
171
|
+
const resetViewedContent = () => {
|
|
172
|
+
currentPageLeaveEvent.engagement = Object.assign({}, currentPageLeaveEvent.engagement, (0, constants_1.DEFAULT_VIEWED_CONTENT)());
|
|
173
|
+
};
|
|
174
|
+
exports.resetViewedContent = resetViewedContent;
|
|
175
|
+
const resetTime = () => Date.now();
|
|
176
|
+
/*
|
|
177
|
+
Update the default Leave event with an event supplied by the brand
|
|
178
|
+
*/
|
|
179
|
+
function updatePageLeaveEvent(leaveEvent) {
|
|
180
|
+
(0, pulse_utils_1.pulseMerge)(currentPageLeaveEvent, leaveEvent);
|
|
181
|
+
}
|
|
182
|
+
/*
|
|
183
|
+
Send a Leave event only if Page Leave tracking is active in the SDK
|
|
184
|
+
The event that is ultimately sent is a merge between the default event
|
|
185
|
+
saved in this file and the event supplied by the brand, with preference going
|
|
186
|
+
to the brand event. After the event has been sent, leave page tracking is removed
|
|
187
|
+
and must be explicitly re-added if needed.
|
|
188
|
+
*/
|
|
189
|
+
function trackActivePageLeave(tracker, providedEvent, eventName) {
|
|
190
|
+
if (leaveTrackingIsActive()) {
|
|
191
|
+
trackPageLeave(tracker, providedEvent, eventName);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
/*
|
|
195
|
+
Send a Leave event regardless of whether Page Leave tracking is active in the SDK
|
|
196
|
+
The event that is ultimately sent is a merge between the default event
|
|
197
|
+
saved in this file and the event supplied by the brand, with preference going
|
|
198
|
+
to the brand event. After the event has been sent, leave page tracking is removed
|
|
199
|
+
and must be explicitly re-added if needed.
|
|
200
|
+
*/
|
|
201
|
+
async function trackPageLeave(tracker, providedEvent, eventName) {
|
|
202
|
+
const endTime = Date.now();
|
|
203
|
+
const duration = endTime - startTime;
|
|
204
|
+
const leaveEvent = providedEvent || currentLeaveEventBuilder();
|
|
205
|
+
const mergedEvent = (0, pulse_utils_1.pulseMerge)({
|
|
206
|
+
...currentPageLeaveEvent,
|
|
207
|
+
engagement: {
|
|
208
|
+
duration,
|
|
209
|
+
activityDuration: activityDuration.value,
|
|
210
|
+
...currentPageLeaveEvent.engagement,
|
|
211
|
+
},
|
|
212
|
+
object: {
|
|
213
|
+
...(eventName && {
|
|
214
|
+
'spt:custom': {
|
|
215
|
+
'spt:eventName': eventName,
|
|
216
|
+
},
|
|
217
|
+
}),
|
|
218
|
+
},
|
|
219
|
+
}, leaveEvent);
|
|
220
|
+
logger.debug('trackPageLeave: event', mergedEvent);
|
|
221
|
+
tracker.track('trackerEvent', mergedEvent, { applyBookmarkKey: Tracker_1.BookmarkKeys.PAGE_VIEW });
|
|
222
|
+
removePageLeaveTracking(tracker);
|
|
223
|
+
}
|
|
224
|
+
/*
|
|
225
|
+
Add listeners to update the viewed content fields in the default event
|
|
226
|
+
We listen to 'scroll' and 'resize' browser events
|
|
227
|
+
*/
|
|
228
|
+
function addUpdateViewedContentListeners(objectElement, pageElement, objectResizable) {
|
|
229
|
+
updateViewedContent(objectElement, pageElement);
|
|
230
|
+
throttledUpdateFn = (0, pulse_utils_1.throttle)(() => updateViewedContent(objectElement, pageElement), 500);
|
|
231
|
+
updateViewedContentListeners = addEventListeners([types_1.BrowserEvents.SCROLL, types_1.BrowserEvents.RESIZE], throttledUpdateFn);
|
|
232
|
+
if (objectResizable) {
|
|
233
|
+
if (!resizeObserver) {
|
|
234
|
+
resizeObserver = new ResizeObserver(() => {
|
|
235
|
+
(0, exports.resetViewedContent)();
|
|
236
|
+
throttledUpdateFn();
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
resizeObserver.observe(objectElement);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
/*
|
|
243
|
+
Update the viewed content fields that are used in the default event.
|
|
244
|
+
The includes fields are:
|
|
245
|
+
{pageScrollPosition} The absolute scroll position on the page in pixels.
|
|
246
|
+
{maxPageScrollPosition} The maximum scroll position the user has been on in pixels.
|
|
247
|
+
{objectViewPercentage} The relative scroll position of the supplied DOM element in pixels.
|
|
248
|
+
{maxObjectViewPercentage} The maximum relative scroll position of the supplied DOM element in pixels.
|
|
249
|
+
{pageViewPercentage} The relative scroll position of the user in %.
|
|
250
|
+
{maxPageViewPercentage} The maximum relative scroll position the user has seen in %.
|
|
251
|
+
*/
|
|
252
|
+
function updateViewedContent(objectElement, pageElement) {
|
|
253
|
+
const { totalHeight: additionalTotalHeight, viewedHeight: additionalViewedHeight } = (0, pulse_utils_1.isFunction)(additionalHeightBuilder)
|
|
254
|
+
? additionalHeightBuilder()
|
|
255
|
+
: { totalHeight: 0, viewedHeight: 0 };
|
|
256
|
+
const objectScrolledPixels = (0, exports.calculateScrolledPixels)(objectElement) + additionalViewedHeight;
|
|
257
|
+
const pageScrolledPixels = (0, exports.calculateScrolledPixels)(pageElement) + additionalViewedHeight;
|
|
258
|
+
const pageScrollPosition = (0, exports.calculateScrollPosition)(pageElement) + additionalViewedHeight;
|
|
259
|
+
const maxPageScrollPosition = Math.max(pageScrollPosition, Number(currentPageLeaveEvent.engagement.maxPageScrollPosition));
|
|
260
|
+
const objectViewPercentage = calculateViewPercentage(objectScrolledPixels, objectElement.scrollHeight + additionalTotalHeight);
|
|
261
|
+
const maxObjectViewPercentage = Math.max(objectViewPercentage, Number(currentPageLeaveEvent.engagement.maxObjectViewPercentage));
|
|
262
|
+
const pageViewPercentage = calculateViewPercentage(pageScrolledPixels, pageElement.scrollHeight + additionalTotalHeight);
|
|
263
|
+
const maxPageViewPercentage = Math.max(pageViewPercentage, Number(currentPageLeaveEvent.engagement.maxPageViewPercentage));
|
|
264
|
+
logger.debug('updateViewedContent:before:engagement', { ...currentPageLeaveEvent.engagement });
|
|
265
|
+
(0, pulse_utils_1.pulseMerge)(currentPageLeaveEvent.engagement, {
|
|
266
|
+
pageScrollPosition,
|
|
267
|
+
maxPageScrollPosition,
|
|
268
|
+
objectViewPercentage,
|
|
269
|
+
maxObjectViewPercentage,
|
|
270
|
+
pageViewPercentage,
|
|
271
|
+
maxPageViewPercentage,
|
|
272
|
+
});
|
|
273
|
+
logger.debug('updateViewedContent:after:engagement', { ...currentPageLeaveEvent.engagement });
|
|
274
|
+
}
|
|
275
|
+
const calculateScrolledPixels = (element) => {
|
|
276
|
+
const rect = element.getBoundingClientRect();
|
|
277
|
+
const scrolledPixels = pulse_utils_1.isBrowser ? element.scrollHeight - rect.bottom + window.innerHeight : 0;
|
|
278
|
+
if (scrolledPixels <= 0) {
|
|
279
|
+
return 0;
|
|
280
|
+
}
|
|
281
|
+
return Math.min(scrolledPixels, element.scrollHeight);
|
|
282
|
+
};
|
|
283
|
+
exports.calculateScrolledPixels = calculateScrolledPixels;
|
|
284
|
+
const calculateScrollPosition = (element) => Math.abs(Math.min(element.getBoundingClientRect().top, 0));
|
|
285
|
+
exports.calculateScrollPosition = calculateScrollPosition;
|
|
286
|
+
/*
|
|
287
|
+
Track the user's activity duration on the page.
|
|
288
|
+
The activity duration is the active time the user spends on the page.
|
|
289
|
+
Active means less than 30 seconds since the user triggered one of the
|
|
290
|
+
'mousedown', 'mousemove', 'keydown', 'scroll' and/or 'touchstart' browser events.
|
|
291
|
+
*/
|
|
292
|
+
function addUpdateActivityDurationListeners() {
|
|
293
|
+
if (activityDuration.interval !== undefined) {
|
|
294
|
+
// If the interval is already set, do not set it again
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
const interval = 1000;
|
|
298
|
+
const activityTimeout = 30 * 1000;
|
|
299
|
+
activityDuration.interval = window.setInterval(() => {
|
|
300
|
+
activityDuration.timeSinceLastActivity += interval;
|
|
301
|
+
if (activityDuration.timeSinceLastActivity < activityTimeout) {
|
|
302
|
+
activityDuration.value += interval;
|
|
303
|
+
}
|
|
304
|
+
}, interval);
|
|
305
|
+
const activityEvents = [
|
|
306
|
+
types_1.BrowserEvents.SCROLL,
|
|
307
|
+
types_1.BrowserEvents.MOUSEDOWN,
|
|
308
|
+
types_1.BrowserEvents.MOUSEMOVE,
|
|
309
|
+
types_1.BrowserEvents.KEYDOWN,
|
|
310
|
+
types_1.BrowserEvents.TOUCHSTART,
|
|
311
|
+
];
|
|
312
|
+
const passiveSupported = isPassiveSupported();
|
|
313
|
+
activityListeners = addEventListeners(activityEvents, () => {
|
|
314
|
+
activityDuration = resetLastActivity(activityDuration);
|
|
315
|
+
}, passiveSupported ? { passive: true } : false);
|
|
316
|
+
}
|
|
317
|
+
function resetLastActivity(activityDuration) {
|
|
318
|
+
return {
|
|
319
|
+
...activityDuration,
|
|
320
|
+
timeSinceLastActivity: 0,
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
/*
|
|
324
|
+
Add listeners to a set of browser events.
|
|
325
|
+
*/
|
|
326
|
+
function addEventListeners(events, handler, options) {
|
|
327
|
+
return events.map((eventName) => {
|
|
328
|
+
if (pulse_utils_1.isBrowser) {
|
|
329
|
+
window.addEventListener(eventName, handler, options);
|
|
330
|
+
}
|
|
331
|
+
return [eventName, handler];
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
/*
|
|
335
|
+
Remove a set of listeners for browser events.
|
|
336
|
+
*/
|
|
337
|
+
function removeEventListeners(eventListeners, options = {}) {
|
|
338
|
+
for (const [eventName, listener] of eventListeners) {
|
|
339
|
+
if (pulse_utils_1.isBrowser) {
|
|
340
|
+
window.removeEventListener(eventName, listener, options);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
throttledUpdateFn.cancel();
|
|
344
|
+
return [];
|
|
345
|
+
}
|
|
346
|
+
const calculateViewPercentage = (scrolledPixels, scrollHeight) => Math.round((100 * scrolledPixels) / scrollHeight);
|
|
347
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#safely_detecting_option_support
|
|
348
|
+
const isPassiveSupported = () => {
|
|
349
|
+
let passiveSupported;
|
|
350
|
+
if (passiveSupported !== undefined) {
|
|
351
|
+
return passiveSupported;
|
|
352
|
+
}
|
|
353
|
+
try {
|
|
354
|
+
const options = {
|
|
355
|
+
get passive() {
|
|
356
|
+
passiveSupported = true;
|
|
357
|
+
return false;
|
|
358
|
+
},
|
|
359
|
+
};
|
|
360
|
+
const noop = () => { };
|
|
361
|
+
window.addEventListener('test', noop, options);
|
|
362
|
+
window.removeEventListener('test', noop);
|
|
363
|
+
}
|
|
364
|
+
catch (_err) {
|
|
365
|
+
passiveSupported = false;
|
|
366
|
+
}
|
|
367
|
+
return passiveSupported;
|
|
368
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BrowserEvents = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Currently supported browser events
|
|
6
|
+
*/
|
|
7
|
+
var BrowserEvents;
|
|
8
|
+
(function (BrowserEvents) {
|
|
9
|
+
BrowserEvents["BEFORE_UNLOAD"] = "beforeunload";
|
|
10
|
+
BrowserEvents["PAGE_HIDE"] = "pagehide";
|
|
11
|
+
BrowserEvents["POP_STATE"] = "popstate";
|
|
12
|
+
BrowserEvents["VISIBILITY_CHANGE"] = "visibilitychange";
|
|
13
|
+
BrowserEvents["SCROLL"] = "scroll";
|
|
14
|
+
BrowserEvents["RESIZE"] = "resize";
|
|
15
|
+
BrowserEvents["MOUSEDOWN"] = "mousedown";
|
|
16
|
+
BrowserEvents["MOUSEMOVE"] = "mousemove";
|
|
17
|
+
BrowserEvents["KEYDOWN"] = "keydown";
|
|
18
|
+
BrowserEvents["TOUCHSTART"] = "touchstart";
|
|
19
|
+
})(BrowserEvents || (exports.BrowserEvents = BrowserEvents = {}));
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_PAGE_LEAVE_EVENT = exports.DEFAULT_ACTIVITY_DURATION = void 0;
|
|
4
|
+
const DEFAULT_ACTIVITY_DURATION = () => ({
|
|
5
|
+
value: 0,
|
|
6
|
+
interval: undefined,
|
|
7
|
+
timeSinceLastActivity: 0,
|
|
8
|
+
});
|
|
9
|
+
exports.DEFAULT_ACTIVITY_DURATION = DEFAULT_ACTIVITY_DURATION;
|
|
10
|
+
const DEFAULT_PAGE_LEAVE_EVENT = () => ({
|
|
11
|
+
objectViewPercentage: 0,
|
|
12
|
+
maxObjectViewPercentage: 0,
|
|
13
|
+
pageViewPercentage: 0,
|
|
14
|
+
maxPageViewPercentage: 0,
|
|
15
|
+
pageScrollPosition: 0,
|
|
16
|
+
maxPageScrollPosition: 0,
|
|
17
|
+
});
|
|
18
|
+
exports.DEFAULT_PAGE_LEAVE_EVENT = DEFAULT_PAGE_LEAVE_EVENT;
|