@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,203 @@
|
|
|
1
|
+
import { cookieConfig, readCookie } from '@schibsted/pulse-utils';
|
|
2
|
+
import { CisSyncReason, getSyncState, parsePulseCookies, serializePulseCookie } from './pulse-cookie';
|
|
3
|
+
const { PULSE_COOKIE_KEY } = cookieConfig;
|
|
4
|
+
const CIS_HOST = 'https://cis.schibsted.com';
|
|
5
|
+
const CIS_PATH = '/api/v2/identify';
|
|
6
|
+
let preferredCISHost = 'cis.schibsted.com';
|
|
7
|
+
/**
|
|
8
|
+
* CIS has two endpoints:
|
|
9
|
+
* - anonymous identifier keys (/identify/guest),
|
|
10
|
+
* - identifiable keys (/identify/user)
|
|
11
|
+
*/
|
|
12
|
+
const CISActorType = {
|
|
13
|
+
USER: 'user',
|
|
14
|
+
GUEST: 'guest',
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Resolves CIS path param
|
|
18
|
+
* @param actorId
|
|
19
|
+
*/
|
|
20
|
+
const getActorPath = (actorId) => {
|
|
21
|
+
let endpoint = CISActorType.GUEST;
|
|
22
|
+
if (actorId) {
|
|
23
|
+
endpoint = CISActorType.USER;
|
|
24
|
+
}
|
|
25
|
+
return `${CIS_PATH}/${endpoint}`;
|
|
26
|
+
};
|
|
27
|
+
const cisFetchHeaders = new Headers({
|
|
28
|
+
'Content-Type': 'application/json',
|
|
29
|
+
});
|
|
30
|
+
const CIS_MAX_REDIRECT_ATTEMPTS = 2;
|
|
31
|
+
const CIS_DEFAULT_REALM = 'schibsted.com';
|
|
32
|
+
const cisRequestMap = new Map();
|
|
33
|
+
/**
|
|
34
|
+
* Call CIS with the current user information.
|
|
35
|
+
*
|
|
36
|
+
* @private
|
|
37
|
+
*/
|
|
38
|
+
async function cisFetch({ cisLocation, clientId, includeAdvertising, resolvedJwe: jwe, trackerType, trackerVersion, userId, vendors, } = {}) {
|
|
39
|
+
const basePath = cisLocation?.endsWith('/') ? cisLocation.slice(0, -1) : cisLocation;
|
|
40
|
+
const path = `${basePath}${getActorPath(userId)}`;
|
|
41
|
+
// Using 'toString' here to make unit test mock comparisons easier
|
|
42
|
+
return fetch(new URL(path).toString(), {
|
|
43
|
+
method: 'POST',
|
|
44
|
+
credentials: 'include',
|
|
45
|
+
headers: cisFetchHeaders,
|
|
46
|
+
body: JSON.stringify({
|
|
47
|
+
clientId,
|
|
48
|
+
includeAdvertising,
|
|
49
|
+
jwe,
|
|
50
|
+
trackerType,
|
|
51
|
+
trackerVersion,
|
|
52
|
+
userId,
|
|
53
|
+
vendors,
|
|
54
|
+
}),
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
/** Identify recursively until no `redirectToHost` field */
|
|
58
|
+
async function cisFetchWithRedirect({ cisLocation, clientId, includeAdvertising, resolvedJwe, trackerType, trackerVersion, userId, vendors, }, redirectAttempts = 0) {
|
|
59
|
+
if (redirectAttempts > CIS_MAX_REDIRECT_ATTEMPTS) {
|
|
60
|
+
throw new Error('Too many CIS redirects');
|
|
61
|
+
}
|
|
62
|
+
const response = await cisFetch({
|
|
63
|
+
cisLocation,
|
|
64
|
+
clientId,
|
|
65
|
+
includeAdvertising,
|
|
66
|
+
resolvedJwe,
|
|
67
|
+
trackerType,
|
|
68
|
+
trackerVersion,
|
|
69
|
+
userId,
|
|
70
|
+
vendors,
|
|
71
|
+
});
|
|
72
|
+
const { data: responseData } = await response.json();
|
|
73
|
+
if (responseData.redirectToHost) {
|
|
74
|
+
preferredCISHost = responseData.redirectToHost;
|
|
75
|
+
return cisFetchWithRedirect({
|
|
76
|
+
resolvedJwe,
|
|
77
|
+
userId,
|
|
78
|
+
cisLocation: `https://${preferredCISHost}`,
|
|
79
|
+
clientId,
|
|
80
|
+
trackerType,
|
|
81
|
+
trackerVersion,
|
|
82
|
+
includeAdvertising,
|
|
83
|
+
vendors,
|
|
84
|
+
}, redirectAttempts + 1);
|
|
85
|
+
}
|
|
86
|
+
return responseData;
|
|
87
|
+
}
|
|
88
|
+
let currentCisRequest = Promise.resolve(parsePulseCookies());
|
|
89
|
+
/**
|
|
90
|
+
* Call CIS serially if needed, 'needed' being evaluated when the call reaches the top of the queue.
|
|
91
|
+
*
|
|
92
|
+
* @private
|
|
93
|
+
*/
|
|
94
|
+
async function serialSyncWithCis(shortUserId,
|
|
95
|
+
// biome-ignore lint/style/useDefaultParameterLast: -
|
|
96
|
+
forceSync = false, cisLocation, nativeJwe, realm, clientId, trackerType, trackerVersion, options) {
|
|
97
|
+
// Re-read our sync state as the previous cis request might have
|
|
98
|
+
// made this sync obsolete.
|
|
99
|
+
const cookie = readCookie(PULSE_COOKIE_KEY);
|
|
100
|
+
const { syncWithCis: shouldSyncWithCIS, syncWithCisReason: requestReason } = getSyncState(shortUserId, {
|
|
101
|
+
cookie,
|
|
102
|
+
...options,
|
|
103
|
+
});
|
|
104
|
+
const { jwe, prevUserId } = parsePulseCookies(cookie);
|
|
105
|
+
const requestHandlerFn = async () => {
|
|
106
|
+
// For reason === login, we know shortUserId should be set and should be trusted.
|
|
107
|
+
// For reason === logout, we know shortUserId is unset, but should be trusted.
|
|
108
|
+
// For reason === initialise, we can't trust shortUserId and should use prevUserId instead.
|
|
109
|
+
// For reason === refresh, we could use either as they should be in sync, but using
|
|
110
|
+
// prevUserId makes it possible to do regular syncs without access to an event, so we use that.
|
|
111
|
+
const resolvedJwe = nativeJwe || jwe; // always send a nativeJwe when present. Hybrid app use case;
|
|
112
|
+
let prominentUserId = shortUserId;
|
|
113
|
+
if (requestReason !== CisSyncReason.Login && requestReason !== CisSyncReason.Logout) {
|
|
114
|
+
prominentUserId = prevUserId;
|
|
115
|
+
}
|
|
116
|
+
const userId = prominentUserId && `sdrn:${realm}:user:${prominentUserId}`;
|
|
117
|
+
if (shouldSyncWithCIS || forceSync) {
|
|
118
|
+
try {
|
|
119
|
+
const cisResponseData = await cisFetchWithRedirect({
|
|
120
|
+
resolvedJwe,
|
|
121
|
+
userId,
|
|
122
|
+
cisLocation,
|
|
123
|
+
clientId,
|
|
124
|
+
trackerType,
|
|
125
|
+
trackerVersion,
|
|
126
|
+
includeAdvertising: options?.includeAdvertising,
|
|
127
|
+
vendors: options?.vendors,
|
|
128
|
+
});
|
|
129
|
+
const refreshAfterTimestamp = cisResponseData.refreshAfter
|
|
130
|
+
? new Date(cisResponseData.refreshAfter).getTime()
|
|
131
|
+
: 0;
|
|
132
|
+
const storageData = {
|
|
133
|
+
ppId: {},
|
|
134
|
+
...cisResponseData,
|
|
135
|
+
prevUserId: shortUserId,
|
|
136
|
+
refreshAfterTimestamp,
|
|
137
|
+
includeAdvertising: options?.includeAdvertising,
|
|
138
|
+
};
|
|
139
|
+
serializePulseCookie(storageData);
|
|
140
|
+
return storageData;
|
|
141
|
+
}
|
|
142
|
+
catch (_err) {
|
|
143
|
+
// silent error.
|
|
144
|
+
}
|
|
145
|
+
finally {
|
|
146
|
+
if (options?.trackerId) {
|
|
147
|
+
cisRequestMap.delete(options.trackerId);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return parsePulseCookies();
|
|
152
|
+
};
|
|
153
|
+
if (options?.trackerId) {
|
|
154
|
+
const { request, requestReason: onGoingRequestReason } = cisRequestMap.get(options.trackerId) || {};
|
|
155
|
+
let ongoingRequest = request;
|
|
156
|
+
if (!ongoingRequest || onGoingRequestReason !== requestReason || forceSync) {
|
|
157
|
+
ongoingRequest = requestHandlerFn();
|
|
158
|
+
cisRequestMap.set(options.trackerId, { request: ongoingRequest, requestReason });
|
|
159
|
+
}
|
|
160
|
+
return ongoingRequest;
|
|
161
|
+
}
|
|
162
|
+
// maintaining the old behaviour for when there is no "internalId" passed to the tracker.
|
|
163
|
+
currentCisRequest = currentCisRequest.then(requestHandlerFn);
|
|
164
|
+
return currentCisRequest;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Sync with CIS
|
|
168
|
+
*
|
|
169
|
+
* This method deals with all communication and communication with dependent systems (currently AppNexus and Norstat).
|
|
170
|
+
*
|
|
171
|
+
* An optional user id should be provided if a tracker have received a logged in state. Providing a new user id
|
|
172
|
+
* (different from a previous user id, serialized to the pulse cookie) will cause a "blocking call" to CIS (the
|
|
173
|
+
* returned promise will not resolve before the communication is done). This is done because CIS could provide new data
|
|
174
|
+
* regarding opt-out.
|
|
175
|
+
*
|
|
176
|
+
* The returned promise will also be blocking if no pulse cookie is found. Pulse requires environmentIds generated
|
|
177
|
+
* server side so one have to wait to be allocated to one.
|
|
178
|
+
*
|
|
179
|
+
* In other context CIS could or could not be called but the returned promise will resolve immediately. If CIS have
|
|
180
|
+
* been called recently there is no point in calling it again. In a different case, if a refresh call to CIS is required
|
|
181
|
+
* it doesn't mean that other systems have to wait of it. Both cases will return a promise that resolves more or less
|
|
182
|
+
* immediately.
|
|
183
|
+
*/
|
|
184
|
+
export async function syncWithCis(shortUserId, nativeJwe, userServiceLocation, realm = CIS_DEFAULT_REALM, clientId, trackerType, trackerVersion, options) {
|
|
185
|
+
const { syncWithCis: shouldSyncWithCIS, waitForCis: shouldWaitForCIS } = getSyncState(shortUserId, options);
|
|
186
|
+
const storageData = parsePulseCookies();
|
|
187
|
+
const cisLocation = userServiceLocation || CIS_HOST;
|
|
188
|
+
let cisRequest = Promise.resolve(storageData);
|
|
189
|
+
if (shouldSyncWithCIS || options?.forceSync) {
|
|
190
|
+
cisRequest = serialSyncWithCis(shortUserId, Boolean(options?.forceSync), cisLocation, nativeJwe, realm, clientId || '', trackerType || '', trackerVersion || '', options);
|
|
191
|
+
}
|
|
192
|
+
// If `shouldWaitForCIS` is false the update with CIS is only a "soft sync" and
|
|
193
|
+
// shouldn't block other operations. This is the case when the browser has a
|
|
194
|
+
// _pulse2data cookie and the user haven't logged in or out. When the user do
|
|
195
|
+
// log in we have to wait to avoid sending events with user ids after logging
|
|
196
|
+
// out or without ids after logging in.
|
|
197
|
+
let ongoingCISRequest = Promise.resolve(storageData);
|
|
198
|
+
if (shouldWaitForCIS || options?.forceSync) {
|
|
199
|
+
ongoingCISRequest = cisRequest;
|
|
200
|
+
}
|
|
201
|
+
return ongoingCISRequest;
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=cis-browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cis-browser.js","sourceRoot":"","sources":["../../src/cis-browser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Entry point to module on Node.js
|
|
3
|
+
*
|
|
4
|
+
* This **have not been implemented** on Node.js because CIS expects a normal
|
|
5
|
+
* browser environment with cookies.
|
|
6
|
+
*
|
|
7
|
+
* @returns rejected promise
|
|
8
|
+
*/
|
|
9
|
+
import type { PulseStorage } from './storage/pulseStorage';
|
|
10
|
+
export declare function syncWithCis(): Promise<PulseStorage>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cis.js","sourceRoot":"","sources":["../../src/cis.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,WAAW;IACzB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC,CAAC;AAC1F,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
type EventType = 'environmentIdSet' | 'jweSet';
|
|
2
|
+
type EventCallback = (event: string) => void;
|
|
3
|
+
export default class EventEmitter {
|
|
4
|
+
events: {
|
|
5
|
+
[key: string]: unknown[];
|
|
6
|
+
};
|
|
7
|
+
constructor();
|
|
8
|
+
on(event: EventType, callback: EventCallback): void;
|
|
9
|
+
off(event: EventType, callback: EventCallback): void;
|
|
10
|
+
removeListener(event: EventType, callback: EventCallback): void;
|
|
11
|
+
removeAllListeners(): void;
|
|
12
|
+
emit(event: EventType, value: string): void;
|
|
13
|
+
}
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export default class EventEmitter {
|
|
2
|
+
constructor() {
|
|
3
|
+
this.events = {};
|
|
4
|
+
}
|
|
5
|
+
on(event, callback) {
|
|
6
|
+
if (typeof this.events[event] !== 'object') {
|
|
7
|
+
this.events[event] = [];
|
|
8
|
+
}
|
|
9
|
+
this.events[event].push(callback);
|
|
10
|
+
}
|
|
11
|
+
off(event, callback) {
|
|
12
|
+
this.removeListener(event, callback);
|
|
13
|
+
}
|
|
14
|
+
removeListener(event, callback) {
|
|
15
|
+
if (typeof this.events[event] === 'object') {
|
|
16
|
+
const index = this.events[event].indexOf(callback);
|
|
17
|
+
if (index !== -1) {
|
|
18
|
+
this.events[event].splice(index, 1);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
removeAllListeners() {
|
|
23
|
+
this.events = {};
|
|
24
|
+
}
|
|
25
|
+
emit(event, value) {
|
|
26
|
+
if (typeof this.events[event] === 'object') {
|
|
27
|
+
this.events[event]
|
|
28
|
+
.filter((cb) => cb != null)
|
|
29
|
+
.forEach((cb) => {
|
|
30
|
+
cb(value);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=eventEmitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eventEmitter.js","sourceRoot":"","sources":["../../src/eventEmitter.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,OAAO,OAAO,YAAY;IAG/B;QACE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,EAAE,CAAC,KAAgB,EAAE,QAAuB;QAC1C,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,GAAG,CAAC,KAAgB,EAAE,QAAuB;QAC3C,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED,cAAc,CAAC,KAAgB,EAAE,QAAuB;QACtD,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;gBACjB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,KAAgB,EAAE,KAAa;QAClC,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;iBACf,MAAM,CAAC,CAAC,EAAW,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC;iBACnC,OAAO,CAAC,CAAC,EAAW,EAAE,EAAE;gBACtB,EAAoB,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;QACP,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { syncWithCis } from './cis';
|
|
2
|
+
export { clearCookieAdvertisingIds, clearCookieJweIfStale, eventEmitter, parsePulseCookies, resetRefreshAfter, } from './pulse-cookie';
|
|
3
|
+
export type { PulseCookie, PulseStorage } from './storage/pulseStorage';
|
|
4
|
+
export type { AdvertisingIdentifiers, AdvertisingVendor, PPIDsByVendor } from './types';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import EventEmitter from './eventEmitter';
|
|
2
|
+
import type { PulseStorage } from './storage/pulseStorage';
|
|
3
|
+
import type { AdvertisingVendor } from './types';
|
|
4
|
+
/**
|
|
5
|
+
* Responsible for subscribing to, and emitting events.
|
|
6
|
+
*/
|
|
7
|
+
export declare const eventEmitter: EventEmitter;
|
|
8
|
+
export declare function cacheOldEnvironmentId(id: string): void;
|
|
9
|
+
export declare function parsePulseCookies(cookie?: string): PulseStorage;
|
|
10
|
+
export declare function serializePulseCookie(input?: PulseStorage): void;
|
|
11
|
+
export declare enum CisSyncReason {
|
|
12
|
+
Initialise = "initialise",
|
|
13
|
+
Login = "login",
|
|
14
|
+
Logout = "logout",
|
|
15
|
+
Refresh = "refresh",
|
|
16
|
+
includeAdvertisingChange = "includeAdvertisingChange"
|
|
17
|
+
}
|
|
18
|
+
export type SyncState = {
|
|
19
|
+
syncWithCis: boolean;
|
|
20
|
+
waitForCis?: boolean;
|
|
21
|
+
syncWithCisReason?: CisSyncReason;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Clears all relevant advertisement identifiers from cookie storage, returning the new storage state
|
|
25
|
+
* @returns {PulseCookie}
|
|
26
|
+
* @deprecated Advertising Identifiers methods will be removed in the next major version.
|
|
27
|
+
*/
|
|
28
|
+
export declare function clearCookieAdvertisingIds(): PulseStorage;
|
|
29
|
+
/**
|
|
30
|
+
* Runs actions related to a new JWE, divergent from the one persisted in the browser storage
|
|
31
|
+
* @param jwe
|
|
32
|
+
*
|
|
33
|
+
* @privateRemarks
|
|
34
|
+
* if there is no jwe, or in other words, no nativeJwe was provided in config, no action will be taken. That's the
|
|
35
|
+
* behaviour with plain Web applications. The scenario not covered here is when we do have a hybrid app, and they don't
|
|
36
|
+
* send any nativeJwe in config.
|
|
37
|
+
* @deprecated Advertising Identifiers methods will be removed in the next major version.
|
|
38
|
+
*/
|
|
39
|
+
export declare function clearCookieJweIfStale(jwe?: string): void;
|
|
40
|
+
/**
|
|
41
|
+
* Runs actions related to a new JWE, divergent from the one persisted in the browser storage
|
|
42
|
+
* @param refreshAfterDateTime
|
|
43
|
+
*/
|
|
44
|
+
export declare function resetRefreshAfter(refreshAfterDateTime?: Date): PulseStorage;
|
|
45
|
+
/**
|
|
46
|
+
* Determines whether CIS should be called to update identity values.
|
|
47
|
+
* @param userId
|
|
48
|
+
* @param options
|
|
49
|
+
* @returns {SyncState}
|
|
50
|
+
*/
|
|
51
|
+
export declare function getSyncState(userId?: string | number, options?: {
|
|
52
|
+
cookie?: string;
|
|
53
|
+
includeAdvertising?: boolean;
|
|
54
|
+
vendors?: AdvertisingVendor[];
|
|
55
|
+
}): SyncState;
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
import { cookieConfig, getRootDomain, readCookie, writeCookie } from '@schibsted/pulse-utils';
|
|
2
|
+
import EventEmitter from './eventEmitter';
|
|
3
|
+
import storage from './storage/pulseStorage';
|
|
4
|
+
const { PULSE_COOKIE_KEY, ENV_COOKIE_KEY } = cookieConfig;
|
|
5
|
+
const CIS_POLL_INTERVAL = 900000; // 15 minutes
|
|
6
|
+
/**
|
|
7
|
+
* Responsible for subscribing to, and emitting events.
|
|
8
|
+
*/
|
|
9
|
+
export const eventEmitter = new EventEmitter();
|
|
10
|
+
export function cacheOldEnvironmentId(id) {
|
|
11
|
+
try {
|
|
12
|
+
let envCookie = '';
|
|
13
|
+
let oldIds = {};
|
|
14
|
+
try {
|
|
15
|
+
envCookie = readCookie(ENV_COOKIE_KEY);
|
|
16
|
+
}
|
|
17
|
+
catch (_e) { }
|
|
18
|
+
try {
|
|
19
|
+
oldIds = envCookie ? JSON.parse(envCookie) : [];
|
|
20
|
+
}
|
|
21
|
+
catch (_e) { }
|
|
22
|
+
oldIds[id] = Date.now();
|
|
23
|
+
const idsToCache = Object.keys(oldIds)
|
|
24
|
+
.map((envId) => ({ id: envId, date: oldIds[envId] }))
|
|
25
|
+
.sort((o) => o.date)
|
|
26
|
+
.slice(0, 5)
|
|
27
|
+
// biome-ignore lint/performance/noAccumulatingSpread: -
|
|
28
|
+
.reduce((accl, o) => ({ ...accl, [o.id]: o.date }), {});
|
|
29
|
+
writeCookie(ENV_COOKIE_KEY, JSON.stringify(idsToCache), getRootDomain(), 365);
|
|
30
|
+
}
|
|
31
|
+
catch (_e) { }
|
|
32
|
+
}
|
|
33
|
+
export function parsePulseCookies(cookie = readCookie(PULSE_COOKIE_KEY)) {
|
|
34
|
+
let values = decodeURIComponent(cookie).split(',');
|
|
35
|
+
// Cookie is in an unknown, possibly old format. Will be ignored.
|
|
36
|
+
if (values.length !== 10) {
|
|
37
|
+
values = [];
|
|
38
|
+
}
|
|
39
|
+
const altEnvCookie = readCookie(ENV_COOKIE_KEY);
|
|
40
|
+
let altEnvIds;
|
|
41
|
+
if (altEnvIds) {
|
|
42
|
+
try {
|
|
43
|
+
altEnvIds = JSON.parse(altEnvCookie);
|
|
44
|
+
}
|
|
45
|
+
catch (_e) {
|
|
46
|
+
altEnvIds = undefined;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const ppId = storage.getPPIDsFromStorage();
|
|
50
|
+
const cisCache = storage.getCisCacheFromStorage();
|
|
51
|
+
return {
|
|
52
|
+
environmentId: values[0],
|
|
53
|
+
prevUserId: values[2] ? values[2] : undefined,
|
|
54
|
+
refreshAfterTimestamp: values[3] ? Number.parseInt(values[3], 10) : undefined,
|
|
55
|
+
jwe: values[4],
|
|
56
|
+
anId: undefined,
|
|
57
|
+
syncWithAppNexus: 0,
|
|
58
|
+
doTracking: true,
|
|
59
|
+
pixelInjected: values[8] ? values[8] === 'true' : undefined,
|
|
60
|
+
adId: values[9],
|
|
61
|
+
altEnvIds,
|
|
62
|
+
visitorIdPlaceholder: values[1],
|
|
63
|
+
ppId,
|
|
64
|
+
includeAdvertising: cisCache?.includeAdvertising,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
export function serializePulseCookie(input) {
|
|
68
|
+
const { environmentId = '', prevUserId = '', jwe = '', pixelInjected = '', adId = '', visitorIdPlaceholder = 'v', ppId = {}, refreshAfterTimestamp, includeAdvertising, } = input || {};
|
|
69
|
+
const now = Date.now();
|
|
70
|
+
const refreshCisAfterTimestamp = refreshAfterTimestamp || new Date(now + CIS_POLL_INTERVAL).getTime();
|
|
71
|
+
const cookieString = [
|
|
72
|
+
environmentId,
|
|
73
|
+
visitorIdPlaceholder,
|
|
74
|
+
prevUserId,
|
|
75
|
+
refreshCisAfterTimestamp,
|
|
76
|
+
jwe,
|
|
77
|
+
'', // anId: not used anymore, but required for cookie payload validity
|
|
78
|
+
0, // syncWithAppNexus: not used anymore, but required for cookie payload validity
|
|
79
|
+
true, // doTracking: not used anymore, but required for cookie payload validity
|
|
80
|
+
pixelInjected,
|
|
81
|
+
adId,
|
|
82
|
+
].join(',');
|
|
83
|
+
storage.setPPIDsToStorage(ppId);
|
|
84
|
+
storage.setCisCacheToStorage({ includeAdvertising });
|
|
85
|
+
writeCookie(PULSE_COOKIE_KEY, cookieString, getRootDomain(), 2 * 365);
|
|
86
|
+
eventEmitter.emit('environmentIdSet', environmentId);
|
|
87
|
+
eventEmitter.emit('jweSet', jwe);
|
|
88
|
+
}
|
|
89
|
+
export var CisSyncReason;
|
|
90
|
+
(function (CisSyncReason) {
|
|
91
|
+
CisSyncReason["Initialise"] = "initialise";
|
|
92
|
+
CisSyncReason["Login"] = "login";
|
|
93
|
+
CisSyncReason["Logout"] = "logout";
|
|
94
|
+
CisSyncReason["Refresh"] = "refresh";
|
|
95
|
+
CisSyncReason["includeAdvertisingChange"] = "includeAdvertisingChange";
|
|
96
|
+
})(CisSyncReason || (CisSyncReason = {}));
|
|
97
|
+
/**
|
|
98
|
+
* Clears all relevant advertisement identifiers from cookie storage, returning the new storage state
|
|
99
|
+
* @returns {PulseCookie}
|
|
100
|
+
* @deprecated Advertising Identifiers methods will be removed in the next major version.
|
|
101
|
+
*/
|
|
102
|
+
export function clearCookieAdvertisingIds() {
|
|
103
|
+
const cookieValues = {
|
|
104
|
+
...parsePulseCookies(),
|
|
105
|
+
adId: '',
|
|
106
|
+
anId: '',
|
|
107
|
+
includeAdvertising: false,
|
|
108
|
+
jwe: '',
|
|
109
|
+
syncWithAppNexus: 0,
|
|
110
|
+
};
|
|
111
|
+
serializePulseCookie(cookieValues);
|
|
112
|
+
return cookieValues;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Runs actions related to a new JWE, divergent from the one persisted in the browser storage
|
|
116
|
+
* @param jwe
|
|
117
|
+
*
|
|
118
|
+
* @privateRemarks
|
|
119
|
+
* if there is no jwe, or in other words, no nativeJwe was provided in config, no action will be taken. That's the
|
|
120
|
+
* behaviour with plain Web applications. The scenario not covered here is when we do have a hybrid app, and they don't
|
|
121
|
+
* send any nativeJwe in config.
|
|
122
|
+
* @deprecated Advertising Identifiers methods will be removed in the next major version.
|
|
123
|
+
*/
|
|
124
|
+
export function clearCookieJweIfStale(jwe = '') {
|
|
125
|
+
const { jwe: currentJwe } = parsePulseCookies();
|
|
126
|
+
if (jwe && currentJwe !== jwe) {
|
|
127
|
+
clearCookieAdvertisingIds();
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Runs actions related to a new JWE, divergent from the one persisted in the browser storage
|
|
132
|
+
* @param refreshAfterDateTime
|
|
133
|
+
*/
|
|
134
|
+
export function resetRefreshAfter(refreshAfterDateTime) {
|
|
135
|
+
const cookieValues = {
|
|
136
|
+
...parsePulseCookies(),
|
|
137
|
+
refreshAfterTimestamp: refreshAfterDateTime ? refreshAfterDateTime.getTime() : Date.now(),
|
|
138
|
+
};
|
|
139
|
+
serializePulseCookie(cookieValues);
|
|
140
|
+
return cookieValues;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Checks whether the login conditions are met.
|
|
144
|
+
* @param userId current user's id
|
|
145
|
+
* @param prevUserId previous user's id stored in the application
|
|
146
|
+
* @returns
|
|
147
|
+
*/
|
|
148
|
+
const shouldLogin = (userId, prevUserId) => {
|
|
149
|
+
return Boolean(userId) && String(userId) !== String(prevUserId);
|
|
150
|
+
};
|
|
151
|
+
/**
|
|
152
|
+
* Checks whether the logout conditions are met.
|
|
153
|
+
* @param userId current user's id
|
|
154
|
+
* @param prevUserId previous user's id stored in the application
|
|
155
|
+
* @returns
|
|
156
|
+
*/
|
|
157
|
+
const shouldLogout = (userId, prevUserId) => {
|
|
158
|
+
return !userId && String(userId) !== String(prevUserId);
|
|
159
|
+
};
|
|
160
|
+
/**
|
|
161
|
+
* Checks whether the refresh conditions are met.
|
|
162
|
+
* @param currentTimestamp now, expressed as timestamp in ms
|
|
163
|
+
* @param refreshAfterTimestamp threshold, expressed as timestamp in ms
|
|
164
|
+
*/
|
|
165
|
+
const shouldRefresh = (currentTimestamp, refreshAfterTimestamp) => {
|
|
166
|
+
return refreshAfterTimestamp && currentTimestamp > refreshAfterTimestamp;
|
|
167
|
+
};
|
|
168
|
+
/**
|
|
169
|
+
* Checks whether privacy context for emitting Advertising Identifiers has changed.
|
|
170
|
+
* @param currentIncludeAdvertising cached value for includeAdvertising
|
|
171
|
+
* @param updatedIncludeAdvertising newly processed value for includeAdvertising
|
|
172
|
+
* @deprecated Advertising Identifiers methods will be removed in the next major version.
|
|
173
|
+
*/
|
|
174
|
+
const shouldRefetchAdvertisingIdentifiers = (currentIncludeAdvertising, updatedIncludeAdvertising) => {
|
|
175
|
+
return currentIncludeAdvertising !== updatedIncludeAdvertising;
|
|
176
|
+
};
|
|
177
|
+
/**
|
|
178
|
+
* Checks whether the initialisation conditions are met.
|
|
179
|
+
* @param cookieInput a raw cookie input, expressing the stored state of the application
|
|
180
|
+
* @param currentCookie a parsed cookie
|
|
181
|
+
* @param includeAdvertising expresses whether advertising ids are expected in the stored state of the application
|
|
182
|
+
* @param vendors for which vendors the application is expecting advertising ids
|
|
183
|
+
*/
|
|
184
|
+
const shouldInitialise = (cookieInput, currentCookie, includeAdvertising = false, vendors = []) => {
|
|
185
|
+
return (!cookieInput ||
|
|
186
|
+
cookieInput.indexOf('undefined') !== -1 || // 'undefined' should not be a value in the raw cookie. Treat as invalid.
|
|
187
|
+
!currentCookie.environmentId ||
|
|
188
|
+
!currentCookie.jwe ||
|
|
189
|
+
(includeAdvertising && vendors.length > 0 && Object.keys(currentCookie.ppId).length === 0));
|
|
190
|
+
};
|
|
191
|
+
/**
|
|
192
|
+
* Determines whether CIS should be called to update identity values.
|
|
193
|
+
* @param userId
|
|
194
|
+
* @param options
|
|
195
|
+
* @returns {SyncState}
|
|
196
|
+
*/
|
|
197
|
+
export function getSyncState(userId, options = {}) {
|
|
198
|
+
const { cookie: cookieInput = readCookie(PULSE_COOKIE_KEY), includeAdvertising, vendors } = options;
|
|
199
|
+
const currentCookie = parsePulseCookies(cookieInput);
|
|
200
|
+
const currentTimestamp = Date.now();
|
|
201
|
+
/*
|
|
202
|
+
* This case only handles login. For example when we don't necessarily have an event (tracker.update({actor: ...})
|
|
203
|
+
* might or might not have been called), then we only want to sync if we DO have a userId, and if that userId is not
|
|
204
|
+
* in our cookie.
|
|
205
|
+
* Blocking call on login/new user to get opt out status and on logout, as SPAs rely on that state to be accurate
|
|
206
|
+
* on all PPID methods after updates.
|
|
207
|
+
*/
|
|
208
|
+
if (shouldLogin(userId, currentCookie.prevUserId)) {
|
|
209
|
+
return {
|
|
210
|
+
syncWithCis: true,
|
|
211
|
+
waitForCis: true,
|
|
212
|
+
syncWithCisReason: CisSyncReason.Login,
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
/*
|
|
216
|
+
* Blocking call on login/new user to get opt out status and on logout, as SPAs rely on that state to be accurate
|
|
217
|
+
* on all PPID methods after updates.
|
|
218
|
+
*/
|
|
219
|
+
if (shouldLogout(userId, currentCookie.prevUserId)) {
|
|
220
|
+
return {
|
|
221
|
+
syncWithCis: true,
|
|
222
|
+
waitForCis: true,
|
|
223
|
+
syncWithCisReason: CisSyncReason.Logout,
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
/*
|
|
227
|
+
* Blocking call on login/new user to get opt out status, non-blocking call on logout to get a new JWE.
|
|
228
|
+
*/
|
|
229
|
+
if (shouldRefresh(currentTimestamp, currentCookie.refreshAfterTimestamp)) {
|
|
230
|
+
return {
|
|
231
|
+
syncWithCis: true,
|
|
232
|
+
waitForCis: true,
|
|
233
|
+
syncWithCisReason: CisSyncReason.Refresh,
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
if (shouldInitialise(cookieInput, currentCookie, includeAdvertising, vendors)) {
|
|
237
|
+
return {
|
|
238
|
+
syncWithCis: true,
|
|
239
|
+
waitForCis: true,
|
|
240
|
+
syncWithCisReason: CisSyncReason.Initialise,
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
if (shouldRefetchAdvertisingIdentifiers(currentCookie.includeAdvertising, includeAdvertising)) {
|
|
244
|
+
return {
|
|
245
|
+
syncWithCis: true,
|
|
246
|
+
waitForCis: true,
|
|
247
|
+
syncWithCisReason: CisSyncReason.includeAdvertisingChange,
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
return {
|
|
251
|
+
syncWithCis: false,
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
//# sourceMappingURL=pulse-cookie.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pulse-cookie.js","sourceRoot":"","sources":["../../src/pulse-cookie.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC9F,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAE1C,OAAO,OAAO,MAAM,wBAAwB,CAAC;AAG7C,MAAM,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,YAAY,CAAC;AAC1D,MAAM,iBAAiB,GAAG,MAAM,CAAC,CAAC,aAAa;AAE/C;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;AAE/C,MAAM,UAAU,qBAAqB,CAAC,EAAU;IAC9C,IAAI,CAAC;QACH,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,IAAI,MAAM,GAA2B,EAAE,CAAC;QACxC,IAAI,CAAC;YACH,SAAS,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC,CAAA,CAAC;QACf,IAAI,CAAC;YACH,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC,CAAA,CAAC;QAEf,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACxB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;aACnC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;aACpD,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aACnB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;YACZ,wDAAwD;aACvD,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1D,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,aAAa,EAAE,EAAE,GAAG,CAAC,CAAC;IAChF,CAAC;IAAC,OAAO,EAAE,EAAE,CAAC,CAAA,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,SAAiB,UAAU,CAAC,gBAAgB,CAAC;IAC7E,IAAI,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnD,iEAAiE;IACjE,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACzB,MAAM,GAAG,EAAE,CAAC;IACd,CAAC;IACD,MAAM,YAAY,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IAChD,IAAI,SAA+B,CAAC;IACpC,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,CAAC;YACH,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC;YACZ,SAAS,GAAG,SAAS,CAAC;QACxB,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAElD,OAAO;QACL,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;QACxB,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;QAC7C,qBAAqB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;QAC7E,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;QACd,IAAI,EAAE,SAAS;QACf,gBAAgB,EAAE,CAAC;QACnB,UAAU,EAAE,IAAI;QAChB,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS;QAC3D,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACf,SAAS;QACT,oBAAoB,EAAE,MAAM,CAAC,CAAC,CAAC;QAC/B,IAAI;QACJ,kBAAkB,EAAE,QAAQ,EAAE,kBAAkB;KACjD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAoB;IACvD,MAAM,EACJ,aAAa,GAAG,EAAE,EAClB,UAAU,GAAG,EAAE,EACf,GAAG,GAAG,EAAE,EACR,aAAa,GAAG,EAAE,EAClB,IAAI,GAAG,EAAE,EACT,oBAAoB,GAAG,GAAG,EAC1B,IAAI,GAAG,EAAE,EACT,qBAAqB,EACrB,kBAAkB,GACnB,GAAG,KAAK,IAAI,EAAE,CAAC;IAChB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,wBAAwB,GAAW,qBAAqB,IAAI,IAAI,IAAI,CAAC,GAAG,GAAG,iBAAiB,CAAC,CAAC,OAAO,EAAE,CAAC;IAC9G,MAAM,YAAY,GAAG;QACnB,aAAa;QACb,oBAAoB;QACpB,UAAU;QACV,wBAAwB;QACxB,GAAG;QACH,EAAE,EAAE,mEAAmE;QACvE,CAAC,EAAE,+EAA+E;QAClF,IAAI,EAAE,yEAAyE;QAC/E,aAAa;QACb,IAAI;KACL,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEZ,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,CAAC,oBAAoB,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACrD,WAAW,CAAC,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;IACtE,YAAY,CAAC,IAAI,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;IACrD,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,CAAN,IAAY,aAMX;AAND,WAAY,aAAa;IACvB,0CAAyB,CAAA;IACzB,gCAAe,CAAA;IACf,kCAAiB,CAAA;IACjB,oCAAmB,CAAA;IACnB,sEAAqD,CAAA;AACvD,CAAC,EANW,aAAa,KAAb,aAAa,QAMxB;AAQD;;;;GAIG;AACH,MAAM,UAAU,yBAAyB;IACvC,MAAM,YAAY,GAAG;QACnB,GAAG,iBAAiB,EAAE;QACtB,IAAI,EAAE,EAAE;QACR,IAAI,EAAE,EAAE;QACR,kBAAkB,EAAE,KAAK;QACzB,GAAG,EAAE,EAAE;QACP,gBAAgB,EAAE,CAAC;KACpB,CAAC;IACF,oBAAoB,CAAC,YAAY,CAAC,CAAC;IACnC,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAG,GAAG,EAAE;IAC5C,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAChD,IAAI,GAAG,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QAC9B,yBAAyB,EAAE,CAAC;IAC9B,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,oBAA2B;IAC3D,MAAM,YAAY,GAAG;QACnB,GAAG,iBAAiB,EAAE;QACtB,qBAAqB,EAAE,oBAAoB,CAAC,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;KAC1F,CAAC;IACF,oBAAoB,CAAC,YAAY,CAAC,CAAC;IACnC,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;GAKG;AACH,MAAM,WAAW,GAAG,CAAC,MAAwB,EAAE,UAA4B,EAAW,EAAE;IACtF,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,UAAU,CAAC,CAAC;AAClE,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,YAAY,GAAG,CAAC,MAAwB,EAAE,UAA4B,EAAW,EAAE;IACvF,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,UAAU,CAAC,CAAC;AAC1D,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,aAAa,GAAG,CAAC,gBAAwB,EAAE,qBAA8B,EAAE,EAAE;IACjF,OAAO,qBAAqB,IAAI,gBAAgB,GAAG,qBAAqB,CAAC;AAC3E,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,mCAAmC,GAAG,CAC1C,yBAAmC,EACnC,yBAAmC,EACnC,EAAE;IACF,OAAO,yBAAyB,KAAK,yBAAyB,CAAC;AACjE,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,gBAAgB,GAAG,CACvB,WAAmB,EACnB,aAA2B,EAC3B,kBAAkB,GAAG,KAAK,EAC1B,UAA+B,EAAE,EACxB,EAAE;IACX,OAAO,CACL,CAAC,WAAW;QACZ,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,yEAAyE;QACpH,CAAC,aAAa,CAAC,aAAa;QAC5B,CAAC,aAAa,CAAC,GAAG;QAClB,CAAC,kBAAkB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAC3F,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAwB,EACxB,UAII,EAAE;IAEN,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,UAAU,CAAC,gBAAgB,CAAC,EAAE,kBAAkB,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACpG,MAAM,aAAa,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEpC;;;;;;OAMG;IACH,IAAI,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;QAClD,OAAO;YACL,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE,IAAI;YAChB,iBAAiB,EAAE,aAAa,CAAC,KAAK;SACvC,CAAC;IACJ,CAAC;IACD;;;OAGG;IACH,IAAI,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;QACnD,OAAO;YACL,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE,IAAI;YAChB,iBAAiB,EAAE,aAAa,CAAC,MAAM;SACxC,CAAC;IACJ,CAAC;IACD;;OAEG;IACH,IAAI,aAAa,CAAC,gBAAgB,EAAE,aAAa,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACzE,OAAO;YACL,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE,IAAI;YAChB,iBAAiB,EAAE,aAAa,CAAC,OAAO;SACzC,CAAC;IACJ,CAAC;IAED,IAAI,gBAAgB,CAAC,WAAW,EAAE,aAAa,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,CAAC;QAC9E,OAAO;YACL,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE,IAAI;YAChB,iBAAiB,EAAE,aAAa,CAAC,UAAU;SAC5C,CAAC;IACJ,CAAC;IAED,IAAI,mCAAmC,CAAC,aAAa,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,EAAE,CAAC;QAC9F,OAAO;YACL,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE,IAAI;YAChB,iBAAiB,EAAE,aAAa,CAAC,wBAAwB;SAC1D,CAAC;IACJ,CAAC;IAED,OAAO;QACL,WAAW,EAAE,KAAK;KACnB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { AdvertisingIdentifiers, PPIDsByVendor } from '../types';
|
|
2
|
+
export type PulseCookie = {
|
|
3
|
+
environmentId: string;
|
|
4
|
+
prevUserId?: string;
|
|
5
|
+
refreshAfterTimestamp?: number;
|
|
6
|
+
jwe: string;
|
|
7
|
+
anId?: string;
|
|
8
|
+
syncWithAppNexus?: number;
|
|
9
|
+
doTracking?: boolean;
|
|
10
|
+
pixelInjected?: boolean;
|
|
11
|
+
adId: string;
|
|
12
|
+
altEnvIds?: string[];
|
|
13
|
+
visitorIdPlaceholder?: string;
|
|
14
|
+
};
|
|
15
|
+
type PPID = {
|
|
16
|
+
ppId: PPIDsByVendor;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Defines properties from the CIS response that are persisted as state/cache in the browser.
|
|
20
|
+
*
|
|
21
|
+
* @privateRemarks
|
|
22
|
+
* Only "includeAdvertising" is considered now for this increment. Some work needs to be done to redefine the role of
|
|
23
|
+
* "_pulse2data" cookie, and the impact of caching more things to "avoid state mismatch between components" (namely CIS,
|
|
24
|
+
* PulseSDK, SchibstedAccount and CMP).
|
|
25
|
+
*/
|
|
26
|
+
export type CisCache = {
|
|
27
|
+
includeAdvertising?: boolean;
|
|
28
|
+
};
|
|
29
|
+
export type PulseStorage = PulseCookie & PPID & CisCache;
|
|
30
|
+
declare const _default: {
|
|
31
|
+
getCisCacheFromStorage: () => CisCache;
|
|
32
|
+
setCisCacheToStorage: (cisPayload: CisCache) => boolean;
|
|
33
|
+
getPPIDsFromStorage: () => AdvertisingIdentifiers;
|
|
34
|
+
setPPIDsToStorage: (ppid: AdvertisingIdentifiers) => boolean;
|
|
35
|
+
};
|
|
36
|
+
export default _default;
|