@schibsted/pulse-sdk 8.0.0-rc.2 → 8.0.0-rc.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (390) hide show
  1. package/dist/cjs/Tracker.js +578 -303
  2. package/dist/cjs/app-integration.js +3 -3
  3. package/dist/cjs/builders/actor.js +6 -6
  4. package/dist/cjs/builders/consents.js +8 -8
  5. package/dist/cjs/builders/device-browser.js +8 -8
  6. package/dist/cjs/builders/device-node.js +3 -3
  7. package/dist/cjs/builders/events-anonymous-node.js +3 -3
  8. package/dist/cjs/builders/events-node.js +7 -7
  9. package/dist/cjs/builders/experimentMetadata.js +2 -2
  10. package/dist/cjs/builders/experiments.js +1 -0
  11. package/dist/cjs/builders/objects/objects-anonymous-browser.js +2 -2
  12. package/dist/cjs/builders/objects/objects-anonymous-node.js +9 -9
  13. package/dist/cjs/builders/objects/objects-browser.js +2 -2
  14. package/dist/cjs/builders/objects/objects-node.js +10 -10
  15. package/dist/cjs/builders/objects/utils.js +3 -3
  16. package/dist/cjs/builders/origin-browser.js +2 -2
  17. package/dist/cjs/builders/origin-node.js +4 -4
  18. package/dist/cjs/builders/session-browser.js +6 -5
  19. package/dist/cjs/cis-sync/cis-browser.js +219 -0
  20. package/{node_modules/@schibsted/pulse-cis-sync/dist/cjs → dist/cjs/cis-sync}/cis.js +0 -1
  21. package/dist/cjs/cis-sync/eventEmitter.js +37 -0
  22. package/{node_modules/@schibsted/pulse-cis-sync/dist/cjs → dist/cjs/cis-sync}/index.js +0 -1
  23. package/{node_modules/@schibsted/pulse-cis-sync/dist/cjs → dist/cjs/cis-sync}/pulse-cookie.js +53 -63
  24. package/{node_modules/@schibsted/pulse-cis-sync/dist/cjs → dist/cjs/cis-sync}/storage/pulseStorage.js +28 -21
  25. package/dist/cjs/cis-sync/storage/storage.js +24 -0
  26. package/dist/cjs/createPulseTracker.js +4 -4
  27. package/dist/cjs/identity/actor.js +20 -8
  28. package/dist/cjs/identity/advertising.js +1 -1
  29. package/dist/cjs/identity/cis.js +7 -6
  30. package/dist/cjs/index.js +3 -3
  31. package/dist/cjs/leaveTracking/index.js +10 -10
  32. package/dist/cjs/leaveTrackingTpaas/constants.js +2 -7
  33. package/dist/cjs/leaveTrackingTpaas/index.js +70 -46
  34. package/dist/cjs/network-browser.js +3 -3
  35. package/dist/cjs/remoteConfig/index.js +5 -5
  36. package/dist/cjs/tpaas-builders/builders/catalogVersion.js +9 -0
  37. package/{node_modules/@schibsted/tpaas-event-builder/dist/cjs → dist/cjs/tpaas-builders}/builders/device.js +11 -5
  38. package/{node_modules/@schibsted/tpaas-event-builder/dist/cjs → dist/cjs/tpaas-builders}/builders/navigationType.js +2 -3
  39. package/dist/cjs/tpaas-builders/builders/pageContent.js +7 -0
  40. package/{node_modules/@schibsted/tpaas-event-builder/dist/cjs → dist/cjs/tpaas-builders}/builders/pageInfo.js +2 -2
  41. package/dist/cjs/tpaas-builders/builders/pageSports.js +7 -0
  42. package/dist/cjs/tpaas-builders/builders/provider.js +19 -0
  43. package/dist/cjs/tpaas-builders/builders/referrer.js +17 -0
  44. package/{node_modules/@schibsted/tpaas-event-builder/dist/cjs → dist/cjs/tpaas-builders}/builders/session.js +23 -20
  45. package/{node_modules/@schibsted/tpaas-event-builder/dist/cjs → dist/cjs/tpaas-builders}/builders/trackerBuilder.js +2 -3
  46. package/{node_modules/@schibsted/tpaas-event-builder/dist/cjs → dist/cjs/tpaas-builders}/builders/user.js +1 -1
  47. package/{node_modules/@schibsted/tpaas-event-builder/dist/cjs → dist/cjs/tpaas-builders}/builders/utm.js +3 -3
  48. package/dist/cjs/tpaas-builders/builders.js +339 -0
  49. package/dist/cjs/tpaas-builders/guards.js +7 -0
  50. package/{node_modules/@schibsted/tpaas-event-builder/dist/cjs → dist/cjs/tpaas-builders}/index.js +3 -0
  51. package/{node_modules/@schibsted/pulse-cis-sync/dist/cjs → dist/cjs/tpaas-builders}/types.js +0 -1
  52. package/{node_modules/@schibsted/tpaas-schemas/dist/cjs → dist/cjs/tpaas-schemas}/constants.js +193 -155
  53. package/{node_modules/@schibsted/tpaas-schemas/dist/cjs → dist/cjs/tpaas-schemas}/index.js +1 -0
  54. package/dist/cjs/tpaas-schemas/types.js +2 -0
  55. package/dist/cjs/tracker-proxy/consts.js +29 -6
  56. package/dist/cjs/tracker-proxy/proxy-provider.js +2 -2
  57. package/{node_modules/@schibsted/pulse-utils/dist/cjs → dist/cjs/utils}/index.js +4 -1
  58. package/dist/cjs/utils/xDomainId.js +15 -0
  59. package/dist/cjs/version.js +1 -1
  60. package/dist/cjs/visibility-observer/index.js +9 -7
  61. package/dist/cjs/wrapper/types/event.js +5 -0
  62. package/dist/cjs/wrapper/utils/map-page-to-page-ref.js +13 -0
  63. package/dist/ejs/Tracker.js +510 -235
  64. package/dist/ejs/app-integration.js +1 -1
  65. package/dist/ejs/builders/actor.js +3 -3
  66. package/dist/ejs/builders/consents.js +4 -4
  67. package/dist/ejs/builders/device-browser.js +2 -2
  68. package/dist/ejs/builders/device-node.js +1 -1
  69. package/dist/ejs/builders/events-anonymous-node.js +1 -1
  70. package/dist/ejs/builders/events-node.js +4 -4
  71. package/dist/ejs/builders/experimentMetadata.js +1 -1
  72. package/dist/ejs/builders/experiments.js +1 -1
  73. package/dist/ejs/builders/objects/objects-anonymous-browser.js +1 -1
  74. package/dist/ejs/builders/objects/objects-anonymous-node.js +1 -1
  75. package/dist/ejs/builders/objects/objects-browser.js +1 -1
  76. package/dist/ejs/builders/objects/objects-node.js +1 -1
  77. package/dist/ejs/builders/objects/utils.js +1 -1
  78. package/dist/ejs/builders/origin-browser.js +1 -1
  79. package/dist/ejs/builders/origin-node.js +1 -1
  80. package/dist/ejs/builders/session-browser.js +2 -1
  81. package/{node_modules/@schibsted/pulse-cis-sync/dist/ejs → dist/ejs/cis-sync}/cis-browser.js +17 -4
  82. package/{node_modules/@schibsted/pulse-cis-sync/dist/ejs → dist/ejs/cis-sync}/cis.js +0 -1
  83. package/{node_modules/@schibsted/pulse-cis-sync/dist/ejs → dist/ejs/cis-sync}/eventEmitter.js +0 -1
  84. package/{node_modules/@schibsted/pulse-cis-sync/dist/ejs → dist/ejs/cis-sync}/index.js +0 -1
  85. package/{node_modules/@schibsted/pulse-cis-sync/dist/ejs → dist/ejs/cis-sync}/pulse-cookie.js +1 -2
  86. package/{node_modules/@schibsted/pulse-cis-sync/dist/ejs → dist/ejs/cis-sync}/storage/pulseStorage.js +12 -4
  87. package/{node_modules/@schibsted/pulse-cis-sync/dist/ejs → dist/ejs/cis-sync}/storage/storage.js +6 -2
  88. package/dist/ejs/createPulseTracker.js +1 -1
  89. package/dist/ejs/identity/actor.js +21 -9
  90. package/dist/ejs/identity/advertising.js +1 -1
  91. package/dist/ejs/identity/cis.js +4 -3
  92. package/dist/ejs/index.js +4 -3
  93. package/dist/ejs/leaveTracking/index.js +1 -1
  94. package/dist/ejs/leaveTrackingTpaas/constants.js +1 -5
  95. package/dist/ejs/leaveTrackingTpaas/index.js +65 -41
  96. package/dist/ejs/network-browser.js +1 -1
  97. package/dist/ejs/remoteConfig/index.js +1 -1
  98. package/dist/ejs/tpaas-builders/builders/catalogVersion.js +6 -0
  99. package/{node_modules/@schibsted/tpaas-event-builder/dist/ejs → dist/ejs/tpaas-builders}/builders/device.js +10 -4
  100. package/{node_modules/@schibsted/tpaas-event-builder/dist/ejs → dist/ejs/tpaas-builders}/builders/navigationType.js +2 -3
  101. package/dist/ejs/tpaas-builders/builders/pageContent.js +3 -0
  102. package/{node_modules/@schibsted/tpaas-event-builder/dist/ejs → dist/ejs/tpaas-builders}/builders/pageInfo.js +1 -1
  103. package/dist/ejs/tpaas-builders/builders/pageSports.js +3 -0
  104. package/dist/ejs/tpaas-builders/builders/provider.js +16 -0
  105. package/dist/ejs/tpaas-builders/builders/referrer.js +13 -0
  106. package/{node_modules/@schibsted/tpaas-event-builder/dist/ejs → dist/ejs/tpaas-builders}/builders/session.js +18 -15
  107. package/dist/ejs/tpaas-builders/builders/trackerBuilder.js +10 -0
  108. package/{node_modules/@schibsted/tpaas-event-builder/dist/ejs → dist/ejs/tpaas-builders}/builders/user.js +1 -1
  109. package/{node_modules/@schibsted/tpaas-event-builder/dist/ejs → dist/ejs/tpaas-builders}/builders/utm.js +2 -2
  110. package/dist/ejs/tpaas-builders/builders.js +271 -0
  111. package/dist/ejs/tpaas-builders/guards.js +4 -0
  112. package/dist/ejs/tpaas-builders/index.js +2 -0
  113. package/{node_modules/@schibsted/tpaas-schemas/dist/ejs → dist/ejs/tpaas-schemas}/constants.js +191 -153
  114. package/{node_modules/@schibsted/tpaas-schemas/dist/ejs → dist/ejs/tpaas-schemas}/index.js +1 -0
  115. package/dist/ejs/tpaas-schemas/types.js +1 -0
  116. package/dist/ejs/tracker-proxy/consts.js +29 -6
  117. package/dist/ejs/tracker-proxy/proxy-provider.js +1 -1
  118. package/{node_modules/@schibsted/pulse-utils/dist/ejs → dist/ejs/utils}/index.js +1 -0
  119. package/dist/ejs/utils/xDomainId.js +11 -0
  120. package/dist/ejs/version.js +1 -1
  121. package/dist/ejs/visibility-observer/index.js +9 -7
  122. package/dist/ejs/wrapper/types/event.js +4 -1
  123. package/dist/ejs/wrapper/utils/map-page-to-page-ref.js +10 -0
  124. package/dist/types/Tracker.d.ts +178 -77
  125. package/dist/types/builders/actor.d.ts +3 -2
  126. package/dist/types/builders/consents.d.ts +3 -3
  127. package/dist/types/builders/device-node.d.ts +2 -2
  128. package/dist/types/builders/events-anonymous-node.d.ts +4 -4
  129. package/dist/types/builders/events-node.d.ts +5 -5
  130. package/dist/types/builders/experiments.d.ts +1 -0
  131. package/dist/types/builders/index.d.ts +1 -1
  132. package/dist/types/builders/objects/objects-anonymous-node.d.ts +1 -1
  133. package/dist/types/builders/objects/objects-node.d.ts +1 -1
  134. package/dist/types/builders/origin-node.d.ts +1 -1
  135. package/dist/types/builders/session-browser.d.ts +1 -0
  136. package/{node_modules/@schibsted/pulse-cis-sync/dist/types → dist/types/cis-sync}/cis-browser.d.ts +1 -0
  137. package/{node_modules/@schibsted/pulse-cis-sync/dist/types → dist/types/cis-sync}/storage/pulseStorage.d.ts +12 -4
  138. package/{node_modules/@schibsted/pulse-cis-sync/dist/cjs → dist/types/cis-sync}/storage/storage.d.ts +2 -1
  139. package/dist/types/config.d.ts +1 -1
  140. package/dist/types/createPulseTracker.d.ts +1 -1
  141. package/dist/types/identity/actor.d.ts +3 -3
  142. package/dist/types/identity/advertising.d.ts +2 -2
  143. package/dist/types/identity/cis.d.ts +4 -4
  144. package/dist/types/index.d.ts +7 -8
  145. package/dist/types/leaveTrackingTpaas/constants.d.ts +1 -5
  146. package/dist/types/leaveTrackingTpaas/index.d.ts +6 -6
  147. package/dist/types/leaveTrackingTpaas/types.d.ts +2 -10
  148. package/dist/types/tpaas-builders/builders/anonymous.d.ts +3 -0
  149. package/dist/types/tpaas-builders/builders/baseEvent.d.ts +3 -0
  150. package/dist/types/tpaas-builders/builders/catalogVersion.d.ts +3 -0
  151. package/dist/types/tpaas-builders/builders/consents.d.ts +5 -0
  152. package/dist/types/tpaas-builders/builders/device.d.ts +5 -0
  153. package/dist/types/tpaas-builders/builders/experiments.d.ts +9 -0
  154. package/dist/types/tpaas-builders/builders/navigationType.d.ts +6 -0
  155. package/dist/types/tpaas-builders/builders/pageContent.d.ts +6 -0
  156. package/dist/types/tpaas-builders/builders/pageInfo.d.ts +6 -0
  157. package/dist/types/tpaas-builders/builders/pageSports.d.ts +6 -0
  158. package/dist/types/tpaas-builders/builders/pageviewId.d.ts +6 -0
  159. package/dist/types/tpaas-builders/builders/provider.d.ts +5 -0
  160. package/dist/types/tpaas-builders/builders/referrer.d.ts +6 -0
  161. package/dist/types/tpaas-builders/builders/session.d.ts +15 -0
  162. package/dist/types/tpaas-builders/builders/time.d.ts +4 -0
  163. package/dist/types/tpaas-builders/builders/trackerBuilder.d.ts +5 -0
  164. package/dist/types/tpaas-builders/builders/user.d.ts +5 -0
  165. package/dist/types/tpaas-builders/builders/utm.d.ts +6 -0
  166. package/dist/types/tpaas-builders/builders.d.ts +141 -0
  167. package/dist/types/tpaas-builders/guards.d.ts +2 -0
  168. package/dist/types/tpaas-builders/index.d.ts +3 -0
  169. package/dist/types/tpaas-builders/types.d.ts +36 -0
  170. package/dist/types/tpaas-schemas/constants.d.ts +478 -0
  171. package/dist/types/tpaas-schemas/index.d.ts +5 -0
  172. package/dist/types/tpaas-schemas/types/ITpaasEvent.d.ts +132 -0
  173. package/dist/types/tpaas-schemas/types/schemas/IAnonymousViewUIElement.d.ts +58 -0
  174. package/dist/types/tpaas-schemas/types/schemas/ICompletedHealthAction.d.ts +139 -0
  175. package/dist/types/tpaas-schemas/types/schemas/IEngagementAd.d.ts +117 -0
  176. package/dist/types/tpaas-schemas/types/schemas/IEngagementAffiliate.d.ts +144 -0
  177. package/dist/types/tpaas-schemas/types/schemas/IEngagementAudio.d.ts +209 -0
  178. package/dist/types/tpaas-schemas/types/schemas/IEngagementForm.d.ts +111 -0
  179. package/dist/types/tpaas-schemas/types/schemas/IEngagementHealthUIElement.d.ts +133 -0
  180. package/dist/types/tpaas-schemas/types/schemas/IEngagementOffer.d.ts +107 -0
  181. package/dist/types/tpaas-schemas/types/schemas/IEngagementSchoolUIElement.d.ts +107 -0
  182. package/dist/types/tpaas-schemas/types/schemas/IEngagementSportsUIElement.d.ts +157 -0
  183. package/dist/types/tpaas-schemas/types/schemas/IEngagementTeaser.d.ts +114 -0
  184. package/dist/types/tpaas-schemas/types/schemas/IEngagementTvModule.d.ts +130 -0
  185. package/dist/types/tpaas-schemas/types/schemas/IEngagementTvSearch.d.ts +142 -0
  186. package/dist/types/tpaas-schemas/types/schemas/IEngagementUIElement.d.ts +105 -0
  187. package/dist/types/tpaas-schemas/types/schemas/IEngagementVideo.d.ts +234 -0
  188. package/dist/types/tpaas-schemas/types/schemas/IEngagementVideoAd.d.ts +145 -0
  189. package/dist/types/tpaas-schemas/types/schemas/IEngagementWidget.d.ts +91 -0
  190. package/dist/types/tpaas-schemas/types/schemas/IHeartbeatCommercialArticle.d.ts +96 -0
  191. package/dist/types/tpaas-schemas/types/schemas/IImpressionAd.d.ts +115 -0
  192. package/dist/types/tpaas-schemas/types/schemas/IImpressionAdSlot.d.ts +89 -0
  193. package/dist/types/tpaas-schemas/types/schemas/IImpressionAffiliate.d.ts +142 -0
  194. package/dist/types/tpaas-schemas/types/schemas/IImpressionForm.d.ts +113 -0
  195. package/dist/types/tpaas-schemas/types/schemas/IImpressionHealthUIElement.d.ts +138 -0
  196. package/dist/types/tpaas-schemas/types/schemas/IImpressionOffer.d.ts +109 -0
  197. package/dist/types/tpaas-schemas/types/schemas/IImpressionPlayer.d.ts +108 -0
  198. package/dist/types/tpaas-schemas/types/schemas/IImpressionSchoolUIElement.d.ts +109 -0
  199. package/dist/types/tpaas-schemas/types/schemas/IImpressionSportsUIElement.d.ts +159 -0
  200. package/dist/types/tpaas-schemas/types/schemas/IImpressionTeaser.d.ts +112 -0
  201. package/dist/types/tpaas-schemas/types/schemas/IImpressionUIElement.d.ts +107 -0
  202. package/dist/types/tpaas-schemas/types/schemas/IImpressionWidget.d.ts +89 -0
  203. package/dist/types/tpaas-schemas/types/schemas/ILeaveArticle.d.ts +133 -0
  204. package/dist/types/tpaas-schemas/types/schemas/ILeaveAudioPage.d.ts +88 -0
  205. package/dist/types/tpaas-schemas/types/schemas/ILeaveError.d.ts +95 -0
  206. package/dist/types/tpaas-schemas/types/schemas/ILeaveFrontpage.d.ts +83 -0
  207. package/dist/types/tpaas-schemas/types/schemas/ILeaveLandingpage.d.ts +90 -0
  208. package/dist/types/tpaas-schemas/types/schemas/ILeaveListing.d.ts +123 -0
  209. package/dist/types/tpaas-schemas/types/schemas/ILeaveLockedArticle.d.ts +139 -0
  210. package/dist/types/tpaas-schemas/types/schemas/ILeaveLockedAudioPage.d.ts +97 -0
  211. package/dist/types/tpaas-schemas/types/schemas/ILeaveLockedPage.d.ts +90 -0
  212. package/dist/types/tpaas-schemas/types/schemas/ILeaveLockedVideoPage.d.ts +97 -0
  213. package/dist/types/tpaas-schemas/types/schemas/ILeavePage.d.ts +82 -0
  214. package/dist/types/tpaas-schemas/types/schemas/ILeaveSchoolPage.d.ts +84 -0
  215. package/dist/types/tpaas-schemas/types/schemas/ILeaveSportsPage.d.ts +137 -0
  216. package/dist/types/tpaas-schemas/types/schemas/ILeaveVideoPage.d.ts +91 -0
  217. package/dist/types/tpaas-schemas/types/schemas/ILeaveWeather.d.ts +94 -0
  218. package/dist/types/tpaas-schemas/types/schemas/ILoadAd.d.ts +119 -0
  219. package/dist/types/tpaas-schemas/types/schemas/IRequestAd.d.ts +95 -0
  220. package/dist/types/tpaas-schemas/types/schemas/IViewArticle.d.ts +133 -0
  221. package/dist/types/tpaas-schemas/types/schemas/IViewAudioPage.d.ts +87 -0
  222. package/dist/types/tpaas-schemas/types/schemas/IViewError.d.ts +90 -0
  223. package/dist/types/tpaas-schemas/types/schemas/IViewFrontpage.d.ts +80 -0
  224. package/dist/types/tpaas-schemas/types/schemas/IViewHealthPage.d.ts +119 -0
  225. package/dist/types/tpaas-schemas/types/schemas/IViewLandingpage.d.ts +76 -0
  226. package/dist/types/tpaas-schemas/types/schemas/IViewListing.d.ts +118 -0
  227. package/dist/types/tpaas-schemas/types/schemas/IViewLockedArticle.d.ts +139 -0
  228. package/dist/types/tpaas-schemas/types/schemas/IViewLockedAudioPage.d.ts +95 -0
  229. package/dist/types/tpaas-schemas/types/schemas/IViewLockedPage.d.ts +94 -0
  230. package/dist/types/tpaas-schemas/types/schemas/IViewLockedVideoPage.d.ts +95 -0
  231. package/dist/types/tpaas-schemas/types/schemas/IViewPage.d.ts +86 -0
  232. package/dist/types/tpaas-schemas/types/schemas/IViewSchoolPage.d.ts +88 -0
  233. package/dist/types/tpaas-schemas/types/schemas/IViewSportsPage.d.ts +135 -0
  234. package/dist/types/tpaas-schemas/types/schemas/IViewTitle.d.ts +92 -0
  235. package/dist/types/tpaas-schemas/types/schemas/IViewVideoPage.d.ts +87 -0
  236. package/dist/types/tpaas-schemas/types/schemas/IViewWeather.d.ts +94 -0
  237. package/dist/types/tpaas-schemas/types/schemas/index.d.ts +64 -0
  238. package/dist/types/tpaas-schemas/types/templates/IBranded.d.ts +42 -0
  239. package/dist/types/tpaas-schemas/types/templates/IConsents.d.ts +34 -0
  240. package/dist/types/tpaas-schemas/types/templates/IContent.d.ts +56 -0
  241. package/dist/types/tpaas-schemas/types/templates/IDevice.d.ts +62 -0
  242. package/dist/types/tpaas-schemas/types/templates/IEngagement.d.ts +21 -0
  243. package/dist/types/tpaas-schemas/types/templates/IExperiments.d.ts +35 -0
  244. package/dist/types/tpaas-schemas/types/templates/IHealthFood.d.ts +55 -0
  245. package/dist/types/tpaas-schemas/types/templates/IHealthOrigin.d.ts +27 -0
  246. package/dist/types/tpaas-schemas/types/templates/IHealthPhysicalActivity.d.ts +36 -0
  247. package/dist/types/tpaas-schemas/types/templates/IHealthTraining.d.ts +74 -0
  248. package/dist/types/tpaas-schemas/types/templates/IHealthUserData.d.ts +25 -0
  249. package/dist/types/tpaas-schemas/types/templates/ILeave.d.ts +54 -0
  250. package/dist/types/tpaas-schemas/types/templates/ILeaveAudio.d.ts +37 -0
  251. package/dist/types/tpaas-schemas/types/templates/ILeaveStories.d.ts +34 -0
  252. package/dist/types/tpaas-schemas/types/templates/ILocation.d.ts +21 -0
  253. package/dist/types/tpaas-schemas/types/templates/IMetrics.d.ts +32 -0
  254. package/dist/types/tpaas-schemas/types/templates/IPageRef.d.ts +46 -0
  255. package/dist/types/tpaas-schemas/types/templates/IPlacement.d.ts +45 -0
  256. package/dist/types/tpaas-schemas/types/templates/IProvider.d.ts +73 -0
  257. package/dist/types/tpaas-schemas/types/templates/ISchool.d.ts +74 -0
  258. package/dist/types/tpaas-schemas/types/templates/ISession.d.ts +33 -0
  259. package/dist/types/tpaas-schemas/types/templates/ISports.d.ts +98 -0
  260. package/dist/types/tpaas-schemas/types/templates/ISportsUserFeatures.d.ts +28 -0
  261. package/dist/types/tpaas-schemas/types/templates/ITime.d.ts +32 -0
  262. package/dist/types/tpaas-schemas/types/templates/ITracker.d.ts +37 -0
  263. package/dist/types/tpaas-schemas/types/templates/IUser.d.ts +34 -0
  264. package/dist/types/tpaas-schemas/types/templates/IUtmTags.d.ts +38 -0
  265. package/dist/types/tpaas-schemas/types/templates/index.d.ts +27 -0
  266. package/dist/types/tpaas-schemas/types.d.ts +42 -0
  267. package/dist/types/tracker-proxy/consts.d.ts +2 -2
  268. package/dist/types/types.d.ts +19 -13
  269. package/{node_modules/@schibsted/pulse-utils/dist/types → dist/types/utils}/index.d.ts +1 -0
  270. package/dist/types/utils/xDomainId.d.ts +2 -0
  271. package/dist/types/version.d.ts +1 -1
  272. package/dist/types/visibility-observer/index.d.ts +6 -1
  273. package/dist/types/wrapper/engagement/ui-element/types.d.ts +1 -1
  274. package/dist/types/wrapper/types/base-event.d.ts +1 -1
  275. package/dist/types/wrapper/types/event.d.ts +4 -2
  276. package/dist/types/wrapper/types/utils.d.ts +1 -1
  277. package/dist/types/wrapper/utils/map-page-to-page-ref.d.ts +3 -0
  278. package/dist/types/wrapper/view/article/types.d.ts +1 -1
  279. package/dist/types/wrapper/view/frontpage/types.d.ts +1 -1
  280. package/dist/types/wrapper/view/listing/types.d.ts +1 -1
  281. package/dist/types/wrapper/view/loginposter/types.d.ts +1 -1
  282. package/dist/types/wrapper/view/page/types.d.ts +1 -1
  283. package/dist/types/wrapper/view/salesposter/types.d.ts +1 -1
  284. package/dist/types/wrapper/view/ui-element/types.d.ts +1 -1
  285. package/package.json +21 -20
  286. package/dist/cjs/Tracker.test-d.js +0 -76
  287. package/dist/ejs/Tracker.test-d.js +0 -71
  288. package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/cis-browser.d.ts +0 -26
  289. package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/cis-browser.js +0 -273
  290. package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/cis-browser.js.map +0 -1
  291. package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/cis.js.map +0 -1
  292. package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/eventEmitter.js +0 -39
  293. package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/eventEmitter.js.map +0 -1
  294. package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/index.js.map +0 -1
  295. package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/pulse-cookie.js.map +0 -1
  296. package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/storage/pulseStorage.d.ts +0 -36
  297. package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/storage/pulseStorage.js.map +0 -1
  298. package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/storage/storage.js +0 -21
  299. package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/storage/storage.js.map +0 -1
  300. package/node_modules/@schibsted/pulse-cis-sync/dist/cjs/types.js.map +0 -1
  301. package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/cis-browser.d.ts +0 -26
  302. package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/cis-browser.js.map +0 -1
  303. package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/cis.d.ts +0 -10
  304. package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/cis.js.map +0 -1
  305. package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/eventEmitter.d.ts +0 -14
  306. package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/eventEmitter.js.map +0 -1
  307. package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/index.d.ts +0 -4
  308. package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/index.js.map +0 -1
  309. package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/pulse-cookie.d.ts +0 -55
  310. package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/pulse-cookie.js.map +0 -1
  311. package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/storage/pulseStorage.d.ts +0 -36
  312. package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/storage/pulseStorage.js.map +0 -1
  313. package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/storage/storage.d.ts +0 -6
  314. package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/storage/storage.js.map +0 -1
  315. package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/types.d.ts +0 -24
  316. package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/types.js +0 -2
  317. package/node_modules/@schibsted/pulse-cis-sync/dist/ejs/types.js.map +0 -1
  318. package/node_modules/@schibsted/pulse-cis-sync/dist/types/cis.d.ts +0 -10
  319. package/node_modules/@schibsted/pulse-cis-sync/dist/types/eventEmitter.d.ts +0 -14
  320. package/node_modules/@schibsted/pulse-cis-sync/dist/types/index.d.ts +0 -4
  321. package/node_modules/@schibsted/pulse-cis-sync/dist/types/pulse-cookie.d.ts +0 -55
  322. package/node_modules/@schibsted/pulse-cis-sync/dist/types/storage/storage.d.ts +0 -6
  323. package/node_modules/@schibsted/pulse-cis-sync/dist/types/types.d.ts +0 -24
  324. package/node_modules/@schibsted/pulse-cis-sync/package.json +0 -44
  325. package/node_modules/@schibsted/pulse-utils/package.json +0 -36
  326. package/node_modules/@schibsted/tpaas-event-builder/dist/cjs/builders/provider.js +0 -12
  327. package/node_modules/@schibsted/tpaas-event-builder/dist/cjs/builders/referrer.js +0 -19
  328. package/node_modules/@schibsted/tpaas-event-builder/dist/cjs/builders.js +0 -272
  329. package/node_modules/@schibsted/tpaas-event-builder/dist/ejs/builders/provider.js +0 -9
  330. package/node_modules/@schibsted/tpaas-event-builder/dist/ejs/builders/referrer.js +0 -15
  331. package/node_modules/@schibsted/tpaas-event-builder/dist/ejs/builders/trackerBuilder.js +0 -11
  332. package/node_modules/@schibsted/tpaas-event-builder/dist/ejs/builders.js +0 -215
  333. package/node_modules/@schibsted/tpaas-event-builder/dist/ejs/index.js +0 -1
  334. package/node_modules/@schibsted/tpaas-event-builder/dist/index.d.ts +0 -5403
  335. package/node_modules/@schibsted/tpaas-event-builder/package.json +0 -40
  336. package/node_modules/@schibsted/tpaas-schemas/dist/index.d.ts +0 -6176
  337. package/node_modules/@schibsted/tpaas-schemas/package.json +0 -35
  338. /package/{node_modules/@schibsted/tpaas-event-builder/dist/cjs → dist/cjs/cis-sync}/types.js +0 -0
  339. /package/{node_modules/@schibsted/tpaas-event-builder/dist/cjs → dist/cjs/tpaas-builders}/builders/anonymous.js +0 -0
  340. /package/{node_modules/@schibsted/tpaas-event-builder/dist/cjs → dist/cjs/tpaas-builders}/builders/baseEvent.js +0 -0
  341. /package/{node_modules/@schibsted/tpaas-event-builder/dist/cjs → dist/cjs/tpaas-builders}/builders/consents.js +0 -0
  342. /package/{node_modules/@schibsted/tpaas-event-builder/dist/cjs → dist/cjs/tpaas-builders}/builders/experiments.js +0 -0
  343. /package/{node_modules/@schibsted/tpaas-event-builder/dist/cjs → dist/cjs/tpaas-builders}/builders/pageviewId.js +0 -0
  344. /package/{node_modules/@schibsted/tpaas-event-builder/dist/cjs → dist/cjs/tpaas-builders}/builders/time.js +0 -0
  345. /package/{node_modules/@schibsted/pulse-utils/dist/cjs → dist/cjs/utils}/cookie-config.js +0 -0
  346. /package/{node_modules/@schibsted/pulse-utils/dist/cjs → dist/cjs/utils}/cookie.js +0 -0
  347. /package/{node_modules/@schibsted/pulse-utils/dist/cjs → dist/cjs/utils}/events.js +0 -0
  348. /package/{node_modules/@schibsted/pulse-utils/dist/cjs → dist/cjs/utils}/get.js +0 -0
  349. /package/{node_modules/@schibsted/pulse-utils/dist/cjs → dist/cjs/utils}/getRootDomain.js +0 -0
  350. /package/{node_modules/@schibsted/pulse-utils/dist/cjs → dist/cjs/utils}/merge.js +0 -0
  351. /package/{node_modules/@schibsted/pulse-utils/dist/cjs → dist/cjs/utils}/objects.js +0 -0
  352. /package/{node_modules/@schibsted/pulse-utils/dist/cjs → dist/cjs/utils}/omit.js +0 -0
  353. /package/{node_modules/@schibsted/pulse-utils/dist/cjs → dist/cjs/utils}/randomString.js +0 -0
  354. /package/{node_modules/@schibsted/pulse-utils/dist/cjs → dist/cjs/utils}/throttle.js +0 -0
  355. /package/{node_modules/@schibsted/pulse-utils/dist/cjs → dist/cjs/utils}/webApi.js +0 -0
  356. /package/{node_modules/@schibsted/tpaas-event-builder/dist/ejs → dist/ejs/cis-sync}/types.js +0 -0
  357. /package/{node_modules/@schibsted/tpaas-event-builder/dist/ejs → dist/ejs/tpaas-builders}/builders/anonymous.js +0 -0
  358. /package/{node_modules/@schibsted/tpaas-event-builder/dist/ejs → dist/ejs/tpaas-builders}/builders/baseEvent.js +0 -0
  359. /package/{node_modules/@schibsted/tpaas-event-builder/dist/ejs → dist/ejs/tpaas-builders}/builders/consents.js +0 -0
  360. /package/{node_modules/@schibsted/tpaas-event-builder/dist/ejs → dist/ejs/tpaas-builders}/builders/experiments.js +0 -0
  361. /package/{node_modules/@schibsted/tpaas-event-builder/dist/ejs → dist/ejs/tpaas-builders}/builders/pageviewId.js +0 -0
  362. /package/{node_modules/@schibsted/tpaas-event-builder/dist/ejs → dist/ejs/tpaas-builders}/builders/time.js +0 -0
  363. /package/dist/{types/Tracker.test-d.d.ts → ejs/tpaas-builders/types.js} +0 -0
  364. /package/{node_modules/@schibsted/pulse-utils/dist/ejs → dist/ejs/utils}/cookie-config.js +0 -0
  365. /package/{node_modules/@schibsted/pulse-utils/dist/ejs → dist/ejs/utils}/cookie.js +0 -0
  366. /package/{node_modules/@schibsted/pulse-utils/dist/ejs → dist/ejs/utils}/events.js +0 -0
  367. /package/{node_modules/@schibsted/pulse-utils/dist/ejs → dist/ejs/utils}/get.js +0 -0
  368. /package/{node_modules/@schibsted/pulse-utils/dist/ejs → dist/ejs/utils}/getRootDomain.js +0 -0
  369. /package/{node_modules/@schibsted/pulse-utils/dist/ejs → dist/ejs/utils}/merge.js +0 -0
  370. /package/{node_modules/@schibsted/pulse-utils/dist/ejs → dist/ejs/utils}/objects.js +0 -0
  371. /package/{node_modules/@schibsted/pulse-utils/dist/ejs → dist/ejs/utils}/omit.js +0 -0
  372. /package/{node_modules/@schibsted/pulse-utils/dist/ejs → dist/ejs/utils}/randomString.js +0 -0
  373. /package/{node_modules/@schibsted/pulse-utils/dist/ejs → dist/ejs/utils}/throttle.js +0 -0
  374. /package/{node_modules/@schibsted/pulse-utils/dist/ejs → dist/ejs/utils}/webApi.js +0 -0
  375. /package/{node_modules/@schibsted/pulse-cis-sync/dist/cjs → dist/types/cis-sync}/cis.d.ts +0 -0
  376. /package/{node_modules/@schibsted/pulse-cis-sync/dist/cjs → dist/types/cis-sync}/eventEmitter.d.ts +0 -0
  377. /package/{node_modules/@schibsted/pulse-cis-sync/dist/cjs → dist/types/cis-sync}/index.d.ts +0 -0
  378. /package/{node_modules/@schibsted/pulse-cis-sync/dist/cjs → dist/types/cis-sync}/pulse-cookie.d.ts +0 -0
  379. /package/{node_modules/@schibsted/pulse-cis-sync/dist/cjs → dist/types/cis-sync}/types.d.ts +0 -0
  380. /package/{node_modules/@schibsted/pulse-utils/dist/types → dist/types/utils}/cookie-config.d.ts +0 -0
  381. /package/{node_modules/@schibsted/pulse-utils/dist/types → dist/types/utils}/cookie.d.ts +0 -0
  382. /package/{node_modules/@schibsted/pulse-utils/dist/types → dist/types/utils}/events.d.ts +0 -0
  383. /package/{node_modules/@schibsted/pulse-utils/dist/types → dist/types/utils}/get.d.ts +0 -0
  384. /package/{node_modules/@schibsted/pulse-utils/dist/types → dist/types/utils}/getRootDomain.d.ts +0 -0
  385. /package/{node_modules/@schibsted/pulse-utils/dist/types → dist/types/utils}/merge.d.ts +0 -0
  386. /package/{node_modules/@schibsted/pulse-utils/dist/types → dist/types/utils}/objects.d.ts +0 -0
  387. /package/{node_modules/@schibsted/pulse-utils/dist/types → dist/types/utils}/omit.d.ts +0 -0
  388. /package/{node_modules/@schibsted/pulse-utils/dist/types → dist/types/utils}/randomString.d.ts +0 -0
  389. /package/{node_modules/@schibsted/pulse-utils/dist/types → dist/types/utils}/throttle.d.ts +0 -0
  390. /package/{node_modules/@schibsted/pulse-utils/dist/types → dist/types/utils}/webApi.d.ts +0 -0
@@ -0,0 +1,219 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.syncWithCis = syncWithCis;
4
+ const utils_1 = require("../utils");
5
+ const pulse_cookie_1 = require("./pulse-cookie");
6
+ const { PULSE_COOKIE_KEY } = utils_1.cookieConfig;
7
+ const CIS_HOST = 'https://cis.schibsted.com';
8
+ const CIS_PATH = '/api/v2/identify';
9
+ let preferredCISHost = 'cis.schibsted.com';
10
+ /**
11
+ * CIS has two endpoints:
12
+ * - anonymous identifier keys (/identify/guest),
13
+ * - identifiable keys (/identify/user)
14
+ */
15
+ const CISActorType = {
16
+ USER: 'user',
17
+ GUEST: 'guest',
18
+ };
19
+ /**
20
+ * Resolves CIS path param
21
+ * @param actorId
22
+ */
23
+ const getActorPath = (actorId) => {
24
+ let endpoint = CISActorType.GUEST;
25
+ if (actorId) {
26
+ endpoint = CISActorType.USER;
27
+ }
28
+ return `${CIS_PATH}/${endpoint}`;
29
+ };
30
+ const cisFetchHeaders = new Headers({
31
+ 'Content-Type': 'application/json',
32
+ });
33
+ const CIS_MAX_REDIRECT_ATTEMPTS = 2;
34
+ const CIS_DEFAULT_REALM = 'schibsted.com';
35
+ const cisRequestMap = new Map();
36
+ /**
37
+ * Call CIS with the current user information.
38
+ *
39
+ * @private
40
+ */
41
+ async function cisFetch({ adChoicesEnabled, cisLocation, clientId, includeAdvertising, resolvedJwe: jwe, trackerType, trackerVersion, userId, vendors, } = {}) {
42
+ const basePath = cisLocation?.endsWith('/') ? cisLocation.slice(0, -1) : cisLocation;
43
+ const path = `${basePath}${getActorPath(userId)}`;
44
+ const features = adChoicesEnabled === true ? ['COP'] : undefined;
45
+ // Using 'toString' here to make unit test mock comparisons easier
46
+ return fetch(new URL(path).toString(), {
47
+ method: 'POST',
48
+ credentials: 'include',
49
+ headers: cisFetchHeaders,
50
+ body: JSON.stringify({
51
+ clientId,
52
+ features,
53
+ includeAdvertising,
54
+ jwe,
55
+ trackerType,
56
+ trackerVersion,
57
+ userId,
58
+ vendors,
59
+ }),
60
+ });
61
+ }
62
+ /** Identify recursively until no `redirectToHost` field */
63
+ async function cisFetchWithRedirect({ adChoicesEnabled, cisLocation, clientId, includeAdvertising, resolvedJwe, trackerType, trackerVersion, userId, vendors, }, redirectAttempts = 0) {
64
+ if (redirectAttempts > CIS_MAX_REDIRECT_ATTEMPTS) {
65
+ throw new Error('Too many CIS redirects');
66
+ }
67
+ const response = await cisFetch({
68
+ adChoicesEnabled,
69
+ cisLocation,
70
+ clientId,
71
+ includeAdvertising,
72
+ resolvedJwe,
73
+ trackerType,
74
+ trackerVersion,
75
+ userId,
76
+ vendors,
77
+ });
78
+ const { data: responseData } = await response.json();
79
+ if (responseData.redirectToHost) {
80
+ preferredCISHost = responseData.redirectToHost;
81
+ return cisFetchWithRedirect({
82
+ adChoicesEnabled,
83
+ resolvedJwe,
84
+ userId,
85
+ cisLocation: `https://${preferredCISHost}`,
86
+ clientId,
87
+ trackerType,
88
+ trackerVersion,
89
+ includeAdvertising,
90
+ vendors,
91
+ }, redirectAttempts + 1);
92
+ }
93
+ return responseData;
94
+ }
95
+ let currentCisRequest = Promise.resolve((0, pulse_cookie_1.parsePulseCookies)());
96
+ /**
97
+ * Call CIS serially if needed, 'needed' being evaluated when the call reaches the top of the queue.
98
+ *
99
+ * @private
100
+ */
101
+ async function serialSyncWithCis(shortUserId,
102
+ // biome-ignore lint/style/useDefaultParameterLast: -
103
+ forceSync = false, cisLocation, nativeJwe, realm, clientId, trackerType, trackerVersion, options) {
104
+ // Re-read our sync state as the previous cis request might have
105
+ // made this sync obsolete.
106
+ const cookie = (0, utils_1.readCookie)(PULSE_COOKIE_KEY);
107
+ const { syncWithCis: shouldSyncWithCIS, syncWithCisReason: requestReason } = (0, pulse_cookie_1.getSyncState)(shortUserId, {
108
+ cookie,
109
+ ...options,
110
+ });
111
+ const { jwe, prevUserId } = (0, pulse_cookie_1.parsePulseCookies)(cookie);
112
+ const requestHandlerFn = async () => {
113
+ // For reason === login, we know shortUserId should be set and should be trusted.
114
+ // For reason === logout, we know shortUserId is unset, but should be trusted.
115
+ // For reason === initialise, we can't trust shortUserId and should use prevUserId instead.
116
+ // For reason === refresh, we could use either as they should be in sync, but using
117
+ // prevUserId makes it possible to do regular syncs without access to an event, so we use that.
118
+ const resolvedJwe = nativeJwe || jwe; // always send a nativeJwe when present. Hybrid app use case;
119
+ let prominentUserId = shortUserId;
120
+ if (requestReason !== pulse_cookie_1.CisSyncReason.Login && requestReason !== pulse_cookie_1.CisSyncReason.Logout) {
121
+ prominentUserId = prevUserId;
122
+ }
123
+ const userId = prominentUserId && `sdrn:${realm}:user:${prominentUserId}`;
124
+ if (shouldSyncWithCIS || forceSync) {
125
+ try {
126
+ const cisResponseData = await cisFetchWithRedirect({
127
+ resolvedJwe,
128
+ userId,
129
+ cisLocation,
130
+ clientId,
131
+ adChoicesEnabled: options?.adChoicesEnabled,
132
+ trackerType,
133
+ trackerVersion,
134
+ includeAdvertising: options?.includeAdvertising,
135
+ vendors: options?.vendors,
136
+ });
137
+ const refreshAfterTimestamp = cisResponseData.refreshAfter
138
+ ? new Date(cisResponseData.refreshAfter).getTime()
139
+ : 0;
140
+ const storageData = {
141
+ ppId: {},
142
+ ...cisResponseData,
143
+ prevUserId: shortUserId,
144
+ refreshAfterTimestamp,
145
+ includeAdvertising: options?.includeAdvertising,
146
+ };
147
+ /**
148
+ * AdChoices restricts the issuing of PPID.
149
+ * When the user has NOT consented to advertising purpose, and the application runs with AdChoices rules, the sdk
150
+ * cannot delegate or persist the PPID in localStorage.
151
+ * `adChoicesEnabled` must be explicitly set to `true`. No room for truthy values here.
152
+ */
153
+ if (options?.adChoicesEnabled === true && options?.includeAdvertising !== true) {
154
+ storageData.ppId = {};
155
+ }
156
+ (0, pulse_cookie_1.serializePulseCookie)(storageData);
157
+ return storageData;
158
+ }
159
+ catch (_err) {
160
+ // silent error.
161
+ }
162
+ finally {
163
+ if (options?.trackerId) {
164
+ cisRequestMap.delete(options.trackerId);
165
+ }
166
+ }
167
+ }
168
+ return (0, pulse_cookie_1.parsePulseCookies)();
169
+ };
170
+ if (options?.trackerId) {
171
+ const { request, requestReason: onGoingRequestReason } = cisRequestMap.get(options.trackerId) || {};
172
+ let ongoingRequest = request;
173
+ if (!ongoingRequest || onGoingRequestReason !== requestReason || forceSync) {
174
+ ongoingRequest = requestHandlerFn();
175
+ cisRequestMap.set(options.trackerId, { request: ongoingRequest, requestReason });
176
+ }
177
+ return ongoingRequest;
178
+ }
179
+ // maintaining the old behaviour for when there is no "internalId" passed to the tracker.
180
+ currentCisRequest = currentCisRequest.then(requestHandlerFn);
181
+ return currentCisRequest;
182
+ }
183
+ /**
184
+ * Sync with CIS
185
+ *
186
+ * This method deals with all communication and communication with dependent systems (currently AppNexus and Norstat).
187
+ *
188
+ * An optional user id should be provided if a tracker have received a logged in state. Providing a new user id
189
+ * (different from a previous user id, serialized to the pulse cookie) will cause a "blocking call" to CIS (the
190
+ * returned promise will not resolve before the communication is done). This is done because CIS could provide new data
191
+ * regarding opt-out.
192
+ *
193
+ * The returned promise will also be blocking if no pulse cookie is found. Pulse requires environmentIds generated
194
+ * server side so one have to wait to be allocated to one.
195
+ *
196
+ * In other context CIS could or could not be called but the returned promise will resolve immediately. If CIS have
197
+ * been called recently there is no point in calling it again. In a different case, if a refresh call to CIS is required
198
+ * it doesn't mean that other systems have to wait of it. Both cases will return a promise that resolves more or less
199
+ * immediately.
200
+ */
201
+ async function syncWithCis(shortUserId, nativeJwe, userServiceLocation, realm = CIS_DEFAULT_REALM, clientId, trackerType, trackerVersion, options) {
202
+ const { syncWithCis: shouldSyncWithCIS, waitForCis: shouldWaitForCIS } = (0, pulse_cookie_1.getSyncState)(shortUserId, options);
203
+ const storageData = (0, pulse_cookie_1.parsePulseCookies)();
204
+ const cisLocation = userServiceLocation || CIS_HOST;
205
+ let cisRequest = Promise.resolve(storageData);
206
+ if (shouldSyncWithCIS || options?.forceSync) {
207
+ cisRequest = serialSyncWithCis(shortUserId, Boolean(options?.forceSync), cisLocation, nativeJwe, realm, clientId || '', trackerType || '', trackerVersion || '', options);
208
+ }
209
+ // If `shouldWaitForCIS` is false the update with CIS is only a "soft sync" and
210
+ // shouldn't block other operations. This is the case when the browser has a
211
+ // _pulse2data cookie and the user haven't logged in or out. When the user do
212
+ // log in we have to wait to avoid sending events with user ids after logging
213
+ // out or without ids after logging in.
214
+ let ongoingCISRequest = Promise.resolve(storageData);
215
+ if (shouldWaitForCIS || options?.forceSync) {
216
+ ongoingCISRequest = cisRequest;
217
+ }
218
+ return ongoingCISRequest;
219
+ }
@@ -4,4 +4,3 @@ exports.syncWithCis = syncWithCis;
4
4
  function syncWithCis() {
5
5
  return Promise.reject(new Error('CIS is not implemented for non-browser environments'));
6
6
  }
7
- //# sourceMappingURL=cis.js.map
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class EventEmitter {
4
+ constructor() {
5
+ this.events = {};
6
+ }
7
+ on(event, callback) {
8
+ if (typeof this.events[event] !== 'object') {
9
+ this.events[event] = [];
10
+ }
11
+ this.events[event].push(callback);
12
+ }
13
+ off(event, callback) {
14
+ this.removeListener(event, callback);
15
+ }
16
+ removeListener(event, callback) {
17
+ if (typeof this.events[event] === 'object') {
18
+ const index = this.events[event].indexOf(callback);
19
+ if (index !== -1) {
20
+ this.events[event].splice(index, 1);
21
+ }
22
+ }
23
+ }
24
+ removeAllListeners() {
25
+ this.events = {};
26
+ }
27
+ emit(event, value) {
28
+ if (typeof this.events[event] === 'object') {
29
+ this.events[event]
30
+ .filter((cb) => cb != null)
31
+ .forEach((cb) => {
32
+ cb(value);
33
+ });
34
+ }
35
+ }
36
+ }
37
+ exports.default = EventEmitter;
@@ -9,4 +9,3 @@ Object.defineProperty(exports, "clearCookieJweIfStale", { enumerable: true, get:
9
9
  Object.defineProperty(exports, "eventEmitter", { enumerable: true, get: function () { return pulse_cookie_1.eventEmitter; } });
10
10
  Object.defineProperty(exports, "parsePulseCookies", { enumerable: true, get: function () { return pulse_cookie_1.parsePulseCookies; } });
11
11
  Object.defineProperty(exports, "resetRefreshAfter", { enumerable: true, get: function () { return pulse_cookie_1.resetRefreshAfter; } });
12
- //# sourceMappingURL=index.js.map
@@ -1,15 +1,4 @@
1
1
  "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
14
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
15
4
  };
@@ -22,50 +11,46 @@ exports.clearCookieAdvertisingIds = clearCookieAdvertisingIds;
22
11
  exports.clearCookieJweIfStale = clearCookieJweIfStale;
23
12
  exports.resetRefreshAfter = resetRefreshAfter;
24
13
  exports.getSyncState = getSyncState;
25
- var pulse_utils_1 = require("@schibsted/pulse-utils");
26
- var eventEmitter_1 = __importDefault(require("./eventEmitter"));
27
- var pulseStorage_1 = __importDefault(require("./storage/pulseStorage"));
28
- var PULSE_COOKIE_KEY = pulse_utils_1.cookieConfig.PULSE_COOKIE_KEY, ENV_COOKIE_KEY = pulse_utils_1.cookieConfig.ENV_COOKIE_KEY;
29
- var CIS_POLL_INTERVAL = 900000; // 15 minutes
14
+ const utils_1 = require("../utils");
15
+ const eventEmitter_1 = __importDefault(require("./eventEmitter"));
16
+ const pulseStorage_1 = __importDefault(require("./storage/pulseStorage"));
17
+ const { PULSE_COOKIE_KEY, ENV_COOKIE_KEY } = utils_1.cookieConfig;
18
+ const CIS_POLL_INTERVAL = 900000; // 15 minutes
30
19
  /**
31
20
  * Responsible for subscribing to, and emitting events.
32
21
  */
33
22
  exports.eventEmitter = new eventEmitter_1.default();
34
23
  function cacheOldEnvironmentId(id) {
35
24
  try {
36
- var envCookie = '';
37
- var oldIds_1 = {};
25
+ let envCookie = '';
26
+ let oldIds = {};
38
27
  try {
39
- envCookie = (0, pulse_utils_1.readCookie)(ENV_COOKIE_KEY);
28
+ envCookie = (0, utils_1.readCookie)(ENV_COOKIE_KEY);
40
29
  }
41
30
  catch (_e) { }
42
31
  try {
43
- oldIds_1 = envCookie ? JSON.parse(envCookie) : [];
32
+ oldIds = envCookie ? JSON.parse(envCookie) : [];
44
33
  }
45
34
  catch (_e) { }
46
- oldIds_1[id] = Date.now();
47
- var idsToCache = Object.keys(oldIds_1)
48
- .map(function (envId) { return ({ id: envId, date: oldIds_1[envId] }); })
49
- .sort(function (o) { return o.date; })
35
+ oldIds[id] = Date.now();
36
+ const idsToCache = Object.keys(oldIds)
37
+ .map((envId) => ({ id: envId, date: oldIds[envId] }))
38
+ .sort((o) => o.date)
50
39
  .slice(0, 5)
51
40
  // biome-ignore lint/performance/noAccumulatingSpread: -
52
- .reduce(function (accl, o) {
53
- var _a;
54
- return (__assign(__assign({}, accl), (_a = {}, _a[o.id] = o.date, _a)));
55
- }, {});
56
- (0, pulse_utils_1.writeCookie)(ENV_COOKIE_KEY, JSON.stringify(idsToCache), (0, pulse_utils_1.getRootDomain)(), 365);
41
+ .reduce((accl, o) => ({ ...accl, [o.id]: o.date }), {});
42
+ (0, utils_1.writeCookie)(ENV_COOKIE_KEY, JSON.stringify(idsToCache), (0, utils_1.getRootDomain)(), 365);
57
43
  }
58
44
  catch (_e) { }
59
45
  }
60
- function parsePulseCookies(cookie) {
61
- if (cookie === void 0) { cookie = (0, pulse_utils_1.readCookie)(PULSE_COOKIE_KEY); }
62
- var values = decodeURIComponent(cookie).split(',');
46
+ function parsePulseCookies(cookie = (0, utils_1.readCookie)(PULSE_COOKIE_KEY)) {
47
+ let values = decodeURIComponent(cookie).split(',');
63
48
  // Cookie is in an unknown, possibly old format. Will be ignored.
64
49
  if (values.length !== 10) {
65
50
  values = [];
66
51
  }
67
- var altEnvCookie = (0, pulse_utils_1.readCookie)(ENV_COOKIE_KEY);
68
- var altEnvIds;
52
+ const altEnvCookie = (0, utils_1.readCookie)(ENV_COOKIE_KEY);
53
+ let altEnvIds;
69
54
  if (altEnvIds) {
70
55
  try {
71
56
  altEnvIds = JSON.parse(altEnvCookie);
@@ -74,8 +59,8 @@ function parsePulseCookies(cookie) {
74
59
  altEnvIds = undefined;
75
60
  }
76
61
  }
77
- var ppId = pulseStorage_1.default.getPPIDsFromStorage();
78
- var cisCache = pulseStorage_1.default.getCisCacheFromStorage();
62
+ const ppId = pulseStorage_1.default.getPPIDsFromStorage();
63
+ const cisCache = pulseStorage_1.default.getCisCacheFromStorage();
79
64
  return {
80
65
  environmentId: values[0],
81
66
  prevUserId: values[2] ? values[2] : undefined,
@@ -86,17 +71,17 @@ function parsePulseCookies(cookie) {
86
71
  doTracking: true,
87
72
  pixelInjected: values[8] ? values[8] === 'true' : undefined,
88
73
  adId: values[9],
89
- altEnvIds: altEnvIds,
74
+ altEnvIds,
90
75
  visitorIdPlaceholder: values[1],
91
- ppId: ppId,
92
- includeAdvertising: cisCache === null || cisCache === void 0 ? void 0 : cisCache.includeAdvertising,
76
+ ppId,
77
+ includeAdvertising: cisCache?.includeAdvertising,
93
78
  };
94
79
  }
95
80
  function serializePulseCookie(input) {
96
- var _a = input || {}, _b = _a.environmentId, environmentId = _b === void 0 ? '' : _b, _c = _a.prevUserId, prevUserId = _c === void 0 ? '' : _c, _d = _a.jwe, jwe = _d === void 0 ? '' : _d, _f = _a.pixelInjected, pixelInjected = _f === void 0 ? '' : _f, _g = _a.adId, adId = _g === void 0 ? '' : _g, _h = _a.visitorIdPlaceholder, visitorIdPlaceholder = _h === void 0 ? 'v' : _h, _j = _a.ppId, ppId = _j === void 0 ? {} : _j, refreshAfterTimestamp = _a.refreshAfterTimestamp, includeAdvertising = _a.includeAdvertising;
97
- var now = Date.now();
98
- var refreshCisAfterTimestamp = refreshAfterTimestamp || new Date(now + CIS_POLL_INTERVAL).getTime();
99
- var cookieString = [
81
+ const { environmentId = '', prevUserId = '', jwe = '', pixelInjected = '', adId = '', visitorIdPlaceholder = 'v', ppId = {}, refreshAfterTimestamp, includeAdvertising, } = input || {};
82
+ const now = Date.now();
83
+ const refreshCisAfterTimestamp = refreshAfterTimestamp || new Date(now + CIS_POLL_INTERVAL).getTime();
84
+ const cookieString = [
100
85
  environmentId,
101
86
  visitorIdPlaceholder,
102
87
  prevUserId,
@@ -109,8 +94,8 @@ function serializePulseCookie(input) {
109
94
  adId,
110
95
  ].join(',');
111
96
  pulseStorage_1.default.setPPIDsToStorage(ppId);
112
- pulseStorage_1.default.setCisCacheToStorage({ includeAdvertising: includeAdvertising });
113
- (0, pulse_utils_1.writeCookie)(PULSE_COOKIE_KEY, cookieString, (0, pulse_utils_1.getRootDomain)(), 2 * 365);
97
+ pulseStorage_1.default.setCisCacheToStorage({ includeAdvertising });
98
+ (0, utils_1.writeCookie)(PULSE_COOKIE_KEY, cookieString, (0, utils_1.getRootDomain)(), 2 * 365);
114
99
  exports.eventEmitter.emit('environmentIdSet', environmentId);
115
100
  exports.eventEmitter.emit('jweSet', jwe);
116
101
  }
@@ -128,7 +113,14 @@ var CisSyncReason;
128
113
  * @deprecated Advertising Identifiers methods will be removed in the next major version.
129
114
  */
130
115
  function clearCookieAdvertisingIds() {
131
- var cookieValues = __assign(__assign({}, parsePulseCookies()), { adId: '', anId: '', includeAdvertising: false, jwe: '', syncWithAppNexus: 0 });
116
+ const cookieValues = {
117
+ ...parsePulseCookies(),
118
+ adId: '',
119
+ anId: '',
120
+ includeAdvertising: false,
121
+ jwe: '',
122
+ syncWithAppNexus: 0,
123
+ };
132
124
  serializePulseCookie(cookieValues);
133
125
  return cookieValues;
134
126
  }
@@ -142,9 +134,8 @@ function clearCookieAdvertisingIds() {
142
134
  * send any nativeJwe in config.
143
135
  * @deprecated Advertising Identifiers methods will be removed in the next major version.
144
136
  */
145
- function clearCookieJweIfStale(jwe) {
146
- if (jwe === void 0) { jwe = ''; }
147
- var currentJwe = parsePulseCookies().jwe;
137
+ function clearCookieJweIfStale(jwe = '') {
138
+ const { jwe: currentJwe } = parsePulseCookies();
148
139
  if (jwe && currentJwe !== jwe) {
149
140
  clearCookieAdvertisingIds();
150
141
  }
@@ -154,7 +145,10 @@ function clearCookieJweIfStale(jwe) {
154
145
  * @param refreshAfterDateTime
155
146
  */
156
147
  function resetRefreshAfter(refreshAfterDateTime) {
157
- var cookieValues = __assign(__assign({}, parsePulseCookies()), { refreshAfterTimestamp: refreshAfterDateTime ? refreshAfterDateTime.getTime() : Date.now() });
148
+ const cookieValues = {
149
+ ...parsePulseCookies(),
150
+ refreshAfterTimestamp: refreshAfterDateTime ? refreshAfterDateTime.getTime() : Date.now(),
151
+ };
158
152
  serializePulseCookie(cookieValues);
159
153
  return cookieValues;
160
154
  }
@@ -164,7 +158,7 @@ function resetRefreshAfter(refreshAfterDateTime) {
164
158
  * @param prevUserId previous user's id stored in the application
165
159
  * @returns
166
160
  */
167
- var shouldLogin = function (userId, prevUserId) {
161
+ const shouldLogin = (userId, prevUserId) => {
168
162
  return Boolean(userId) && String(userId) !== String(prevUserId);
169
163
  };
170
164
  /**
@@ -173,7 +167,7 @@ var shouldLogin = function (userId, prevUserId) {
173
167
  * @param prevUserId previous user's id stored in the application
174
168
  * @returns
175
169
  */
176
- var shouldLogout = function (userId, prevUserId) {
170
+ const shouldLogout = (userId, prevUserId) => {
177
171
  return !userId && String(userId) !== String(prevUserId);
178
172
  };
179
173
  /**
@@ -181,7 +175,7 @@ var shouldLogout = function (userId, prevUserId) {
181
175
  * @param currentTimestamp now, expressed as timestamp in ms
182
176
  * @param refreshAfterTimestamp threshold, expressed as timestamp in ms
183
177
  */
184
- var shouldRefresh = function (currentTimestamp, refreshAfterTimestamp) {
178
+ const shouldRefresh = (currentTimestamp, refreshAfterTimestamp) => {
185
179
  return refreshAfterTimestamp && currentTimestamp > refreshAfterTimestamp;
186
180
  };
187
181
  /**
@@ -190,7 +184,7 @@ var shouldRefresh = function (currentTimestamp, refreshAfterTimestamp) {
190
184
  * @param updatedIncludeAdvertising newly processed value for includeAdvertising
191
185
  * @deprecated Advertising Identifiers methods will be removed in the next major version.
192
186
  */
193
- var shouldRefetchAdvertisingIdentifiers = function (currentIncludeAdvertising, updatedIncludeAdvertising) {
187
+ const shouldRefetchAdvertisingIdentifiers = (currentIncludeAdvertising, updatedIncludeAdvertising) => {
194
188
  return currentIncludeAdvertising !== updatedIncludeAdvertising;
195
189
  };
196
190
  /**
@@ -200,9 +194,7 @@ var shouldRefetchAdvertisingIdentifiers = function (currentIncludeAdvertising, u
200
194
  * @param includeAdvertising expresses whether advertising ids are expected in the stored state of the application
201
195
  * @param vendors for which vendors the application is expecting advertising ids
202
196
  */
203
- var shouldInitialise = function (cookieInput, currentCookie, includeAdvertising, vendors) {
204
- if (includeAdvertising === void 0) { includeAdvertising = false; }
205
- if (vendors === void 0) { vendors = []; }
197
+ const shouldInitialise = (cookieInput, currentCookie, includeAdvertising = false, vendors = []) => {
206
198
  return (!cookieInput ||
207
199
  cookieInput.indexOf('undefined') !== -1 || // 'undefined' should not be a value in the raw cookie. Treat as invalid.
208
200
  !currentCookie.environmentId ||
@@ -215,11 +207,10 @@ var shouldInitialise = function (cookieInput, currentCookie, includeAdvertising,
215
207
  * @param options
216
208
  * @returns {SyncState}
217
209
  */
218
- function getSyncState(userId, options) {
219
- if (options === void 0) { options = {}; }
220
- var _a = options.cookie, cookieInput = _a === void 0 ? (0, pulse_utils_1.readCookie)(PULSE_COOKIE_KEY) : _a, includeAdvertising = options.includeAdvertising, vendors = options.vendors;
221
- var currentCookie = parsePulseCookies(cookieInput);
222
- var currentTimestamp = Date.now();
210
+ function getSyncState(userId, options = {}) {
211
+ const { cookie: cookieInput = (0, utils_1.readCookie)(PULSE_COOKIE_KEY), includeAdvertising, vendors } = options;
212
+ const currentCookie = parsePulseCookies(cookieInput);
213
+ const currentTimestamp = Date.now();
223
214
  /*
224
215
  * This case only handles login. For example when we don't necessarily have an event (tracker.update({actor: ...})
225
216
  * 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
@@ -273,4 +264,3 @@ function getSyncState(userId, options) {
273
264
  syncWithCis: false,
274
265
  };
275
266
  }
276
- //# sourceMappingURL=pulse-cookie.js.map
@@ -33,45 +33,53 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- var storage = __importStar(require("./storage"));
37
- var pulseStorageKeys = {
36
+ exports.pulseStorageKeys = void 0;
37
+ const storage = __importStar(require("./storage"));
38
+ exports.pulseStorageKeys = {
38
39
  PULSE_PPID_STORAGE_KEY: '_pulse.internal.identity.ppid',
39
40
  PULSE_CIS_CACHE_STORAGE_KEY: '_pulse.internal.identity.cis',
40
41
  };
41
- var getPPIDsFromStorage = function () {
42
- var _a;
42
+ const getPPIDsFromStorage = () => {
43
43
  try {
44
- var webStorage = storage.getStorage();
45
- return JSON.parse((_a = webStorage.getItem(pulseStorageKeys.PULSE_PPID_STORAGE_KEY)) !== null && _a !== void 0 ? _a : '');
44
+ const webStorage = storage.getStorage();
45
+ return JSON.parse(webStorage.getItem(exports.pulseStorageKeys.PULSE_PPID_STORAGE_KEY) ?? '{}');
46
46
  }
47
47
  catch (_err) {
48
48
  return {};
49
49
  }
50
50
  };
51
- var setPPIDsToStorage = function (ppid) {
51
+ const setPPIDsToStorage = (ppid) => {
52
52
  try {
53
- var webStorage = storage.getStorage();
54
- webStorage.setItem(pulseStorageKeys.PULSE_PPID_STORAGE_KEY, JSON.stringify(ppid));
53
+ const webStorage = storage.getStorage();
54
+ /**
55
+ * we maintain the interface consistent with the ppId api, but there is no need to persist an empty object in
56
+ * localStorage. We normalise back when we read the value.
57
+ * @see getPPIDsFromStorage
58
+ */
59
+ if (Object.keys(ppid).length === 0) {
60
+ webStorage.removeItem(exports.pulseStorageKeys.PULSE_PPID_STORAGE_KEY);
61
+ return true;
62
+ }
63
+ webStorage.setItem(exports.pulseStorageKeys.PULSE_PPID_STORAGE_KEY, JSON.stringify(ppid));
55
64
  return true;
56
65
  }
57
66
  catch (_err) {
58
67
  return false;
59
68
  }
60
69
  };
61
- var getCisCacheFromStorage = function () {
62
- var _a;
70
+ const getCisCacheFromStorage = () => {
63
71
  try {
64
- var webStorage = storage.getStorage();
65
- return JSON.parse((_a = webStorage.getItem(pulseStorageKeys.PULSE_CIS_CACHE_STORAGE_KEY)) !== null && _a !== void 0 ? _a : '');
72
+ const webStorage = storage.getStorage();
73
+ return JSON.parse(webStorage.getItem(exports.pulseStorageKeys.PULSE_CIS_CACHE_STORAGE_KEY) ?? '{}');
66
74
  }
67
75
  catch (_err) {
68
76
  return {};
69
77
  }
70
78
  };
71
- var setCisCacheToStorage = function (cisPayload) {
79
+ const setCisCacheToStorage = (cisPayload) => {
72
80
  try {
73
- var webStorage = storage.getStorage();
74
- webStorage.setItem(pulseStorageKeys.PULSE_CIS_CACHE_STORAGE_KEY, JSON.stringify(cisPayload));
81
+ const webStorage = storage.getStorage();
82
+ webStorage.setItem(exports.pulseStorageKeys.PULSE_CIS_CACHE_STORAGE_KEY, JSON.stringify(cisPayload));
75
83
  return true;
76
84
  }
77
85
  catch (_err) {
@@ -79,9 +87,8 @@ var setCisCacheToStorage = function (cisPayload) {
79
87
  }
80
88
  };
81
89
  exports.default = {
82
- getCisCacheFromStorage: getCisCacheFromStorage,
83
- setCisCacheToStorage: setCisCacheToStorage,
84
- getPPIDsFromStorage: getPPIDsFromStorage,
85
- setPPIDsToStorage: setPPIDsToStorage,
90
+ getCisCacheFromStorage,
91
+ setCisCacheToStorage,
92
+ getPPIDsFromStorage,
93
+ setPPIDsToStorage,
86
94
  };
87
- //# sourceMappingURL=pulseStorage.js.map
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getStorage = void 0;
4
+ const utils_1 = require("../../utils");
5
+ const getStorage = (storageType = 'localStorage') => {
6
+ const storage = utils_1.webApi[storageType];
7
+ const getItem = (key) => {
8
+ return utils_1.isBrowser && storage ? storage.getItem(key) : undefined;
9
+ };
10
+ const removeItem = (key) => {
11
+ if (utils_1.isBrowser && storage)
12
+ storage.removeItem(key);
13
+ };
14
+ const setItem = (key, value) => {
15
+ if (utils_1.isBrowser && storage)
16
+ storage.setItem(key, value);
17
+ };
18
+ return {
19
+ getItem,
20
+ removeItem,
21
+ setItem,
22
+ };
23
+ };
24
+ exports.getStorage = getStorage;
@@ -10,20 +10,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.createPulseTracker = createPulseTracker;
13
- const pulse_utils_1 = require("@schibsted/pulse-utils/");
14
13
  const Tracker_1 = __importDefault(require("./Tracker"));
14
+ const utils_1 = require("./utils");
15
15
  /**
16
16
  * Flags whether the Pulse Tracker creation process has been started.
17
17
  */
18
18
  function isTrackerCreated() {
19
- return pulse_utils_1.isBrowser && !!window.__pulseTracker;
19
+ return utils_1.isBrowser && !!window.__pulseTracker;
20
20
  }
21
21
  /**
22
22
  * Make the given tracker instance globally accessible
23
23
  * @param singleton
24
24
  */
25
25
  function attachTrackerToWindow(singleton) {
26
- if (pulse_utils_1.isBrowser) {
26
+ if (utils_1.isBrowser) {
27
27
  window.__pulseTracker = singleton;
28
28
  }
29
29
  }
@@ -36,7 +36,7 @@ function attachTrackerToWindow(singleton) {
36
36
  * @throws - If the Pulse Tracker has already been created (or creation is already in progress).
37
37
  */
38
38
  async function createPulseTracker({ clientId, config, builders }) {
39
- if (!pulse_utils_1.isBrowser) {
39
+ if (!utils_1.isBrowser) {
40
40
  throw new Error('createPulseTracker is only available in browser environments');
41
41
  }
42
42
  if (isTrackerCreated()) {