@schibsted/pulse-sdk 8.0.0-rc.19 → 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 (52) hide show
  1. package/dist/cjs/Tracker.js +18 -0
  2. package/dist/cjs/builders/session-browser.js +1 -0
  3. package/dist/cjs/tpaas-builders/builders/session.js +3 -13
  4. package/dist/cjs/tpaas-builders/builders.js +10 -0
  5. package/dist/cjs/tpaas-schemas/constants.js +82 -66
  6. package/dist/cjs/tracker-proxy/consts.js +2 -0
  7. package/dist/cjs/utils/index.js +4 -1
  8. package/dist/cjs/utils/xDomainId.js +15 -0
  9. package/dist/cjs/version.js +1 -1
  10. package/dist/ejs/Tracker.js +19 -1
  11. package/dist/ejs/builders/session-browser.js +2 -1
  12. package/dist/ejs/tpaas-builders/builders/session.js +3 -13
  13. package/dist/ejs/tpaas-builders/builders.js +9 -1
  14. package/dist/ejs/tpaas-schemas/constants.js +80 -64
  15. package/dist/ejs/tracker-proxy/consts.js +2 -0
  16. package/dist/ejs/utils/index.js +1 -0
  17. package/dist/ejs/utils/xDomainId.js +11 -0
  18. package/dist/ejs/version.js +1 -1
  19. package/dist/types/Tracker.d.ts +13 -3
  20. package/dist/types/builders/session-browser.d.ts +1 -0
  21. package/dist/types/tpaas-builders/builders/provider.d.ts +1 -1
  22. package/dist/types/tpaas-builders/builders.d.ts +7 -5
  23. package/dist/types/tpaas-builders/types.d.ts +2 -2
  24. package/dist/types/tpaas-schemas/constants.d.ts +79 -65
  25. package/dist/types/tpaas-schemas/types/ITpaasEvent.d.ts +4 -0
  26. package/dist/types/tpaas-schemas/types/schemas/IEngagementAffiliate.d.ts +2 -0
  27. package/dist/types/tpaas-schemas/types/schemas/IEngagementAudio.d.ts +3 -11
  28. package/dist/types/tpaas-schemas/types/schemas/IEngagementTeaser.d.ts +4 -2
  29. package/dist/types/tpaas-schemas/types/schemas/IEngagementTvSearch.d.ts +142 -0
  30. package/dist/types/tpaas-schemas/types/schemas/IEngagementVideo.d.ts +5 -11
  31. package/dist/types/tpaas-schemas/types/schemas/IEngagementVideoAd.d.ts +1 -9
  32. package/dist/types/tpaas-schemas/types/schemas/IEngagementWidget.d.ts +1 -1
  33. package/dist/types/tpaas-schemas/types/schemas/IHeartbeatCommercialArticle.d.ts +96 -0
  34. package/dist/types/tpaas-schemas/types/schemas/IImpressionAdSlot.d.ts +1 -1
  35. package/dist/types/tpaas-schemas/types/schemas/IImpressionAffiliate.d.ts +2 -0
  36. package/dist/types/tpaas-schemas/types/schemas/IImpressionTeaser.d.ts +4 -2
  37. package/dist/types/tpaas-schemas/types/schemas/IImpressionWidget.d.ts +1 -1
  38. package/dist/types/tpaas-schemas/types/schemas/ILeaveArticle.d.ts +2 -0
  39. package/dist/types/tpaas-schemas/types/schemas/IViewArticle.d.ts +2 -0
  40. package/dist/types/tpaas-schemas/types/schemas/index.d.ts +2 -0
  41. package/dist/types/tpaas-schemas/types/templates/IBranded.d.ts +42 -0
  42. package/dist/types/tpaas-schemas/types/templates/IDevice.d.ts +1 -1
  43. package/dist/types/tpaas-schemas/types/templates/IPageRef.d.ts +3 -1
  44. package/dist/types/tpaas-schemas/types/templates/ISchool.d.ts +2 -1
  45. package/dist/types/tpaas-schemas/types/templates/ISports.d.ts +6 -6
  46. package/dist/types/tpaas-schemas/types/templates/index.d.ts +1 -0
  47. package/dist/types/tpaas-schemas/types.d.ts +2 -2
  48. package/dist/types/tracker-proxy/consts.d.ts +1 -1
  49. package/dist/types/utils/index.d.ts +1 -0
  50. package/dist/types/utils/xDomainId.d.ts +2 -0
  51. package/dist/types/version.d.ts +1 -1
  52. package/package.json +1 -1
@@ -1836,6 +1836,15 @@ class Tracker {
1836
1836
  const event = (0, tpaas_builders_1.buildEngagementTvModuleEvent)(input, dependencies);
1837
1837
  return this.sendTpaasEvent(event);
1838
1838
  }
1839
+ /**
1840
+ * @param input
1841
+ * @category TPaaS Tracking
1842
+ */
1843
+ async trackEngagementTvSearch(input) {
1844
+ const dependencies = await this.prepareTpaasEvent();
1845
+ const event = (0, tpaas_builders_1.buildEngagementTvSearchEvent)(input, dependencies);
1846
+ return this.sendTpaasEvent(event);
1847
+ }
1839
1848
  /**
1840
1849
  * @param input
1841
1850
  * @category TPaaS Tracking
@@ -1872,6 +1881,15 @@ class Tracker {
1872
1881
  const event = (0, tpaas_builders_1.buildEngagementWidgetEvent)(input, dependencies);
1873
1882
  return this.sendTpaasEvent(event);
1874
1883
  }
1884
+ /**
1885
+ * @param input
1886
+ * @category TPaaS Tracking
1887
+ */
1888
+ async trackHeartbeatCommercialArticle(input) {
1889
+ const dependencies = await this.prepareTpaasEvent();
1890
+ const event = (0, tpaas_builders_1.buildHeartbeatCommercialArticleEvent)(input, dependencies);
1891
+ return this.sendTpaasEvent(event);
1892
+ }
1875
1893
  /**
1876
1894
  * this is the method that actually sends the event to the server
1877
1895
  * @private
@@ -93,5 +93,6 @@ function session(_input, eventCreationDate) {
93
93
  return {
94
94
  '@id': id,
95
95
  startTime: startTime.toISOString(),
96
+ xDomainId: (0, utils_1.getXDomainId)(),
96
97
  };
97
98
  }
@@ -5,8 +5,7 @@ const uuid_1 = require("uuid");
5
5
  const utils_1 = require("../../utils");
6
6
  const { USE_LOCALSTORAGE } = utils_1.cookieConfig;
7
7
  const SESSION_STORAGE_KEY = '_pulsesession';
8
- const SDRN_PREFIX = 'sdrn:schibsted:session:';
9
- const generateSessionSDRN = (sessionId) => `${SDRN_PREFIX}${sessionId}`;
8
+ const generateSessionSDRN = (sessionId) => `${utils_1.SESSION_SDRN_PREFIX}${sessionId}`;
10
9
  // 1. there are pros and cons to outputting { session: ISession } instead of just ISession
11
10
  // this allows us to always have the session builde populate the same property (in this case '.session')
12
11
  // if in the future we want the session builder to populate other properties, we should just output ISession and move the mapping logic in index.ts, as part of buildersByEventType
@@ -22,20 +21,11 @@ const builder = (createdAt) => {
22
21
  isFirstEvent,
23
22
  sessionId,
24
23
  startTime,
25
- xDomainId: getXDomainId(),
24
+ xDomainId: (0, utils_1.getXDomainId)(),
26
25
  },
27
26
  };
28
27
  };
29
28
  exports.builder = builder;
30
- // TODO: do we need to save this in the session, as part of the localStorage?
31
- // or should we just read it from the URL params every time?
32
- const getXDomainId = () => {
33
- if (!utils_1.isBrowser) {
34
- return;
35
- }
36
- const urlParams = new URLSearchParams(window?.location?.search ?? '');
37
- return urlParams.get('x_domain_id')?.replace(SDRN_PREFIX, '');
38
- };
39
29
  // Return parsed json from cookie (or localStorage if enabled), or undefined.
40
30
  // exported for testing purposes.
41
31
  const readAndParse = (storageKey) => {
@@ -70,7 +60,7 @@ const readSession = () => {
70
60
  return {
71
61
  // to ensure backwards compatibility between the new TPaaS sessionId format and old sessions
72
62
  // we need to remove the SDRN prefix from old sessionIds before using it
73
- sessionId: sessionId.replace(SDRN_PREFIX, ''),
63
+ sessionId: sessionId.replace(utils_1.SESSION_SDRN_PREFIX, ''),
74
64
  startTime: startTime.toISOString(),
75
65
  lastEventTime,
76
66
  isFirstEvent: false,
@@ -42,10 +42,12 @@ exports.buildEngagementSportsUIElementEvent = buildEngagementSportsUIElementEven
42
42
  exports.buildEngagementSchoolUIElementEvent = buildEngagementSchoolUIElementEvent;
43
43
  exports.buildEngagementTeaserEvent = buildEngagementTeaserEvent;
44
44
  exports.buildEngagementTvModuleEvent = buildEngagementTvModuleEvent;
45
+ exports.buildEngagementTvSearchEvent = buildEngagementTvSearchEvent;
45
46
  exports.buildEngagementUIElementEvent = buildEngagementUIElementEvent;
46
47
  exports.buildEngagementVideoEvent = buildEngagementVideoEvent;
47
48
  exports.buildEngagementVideoAdEvent = buildEngagementVideoAdEvent;
48
49
  exports.buildEngagementWidgetEvent = buildEngagementWidgetEvent;
50
+ exports.buildHeartbeatCommercialArticleEvent = buildHeartbeatCommercialArticleEvent;
49
51
  exports.buildCompletedHealthActionEvent = buildCompletedHealthActionEvent;
50
52
  exports.buildEngagementHealthUIElementEvent = buildEngagementHealthUIElementEvent;
51
53
  exports.buildViewHealthPageEvent = buildViewHealthPageEvent;
@@ -257,6 +259,9 @@ function buildEngagementTeaserEvent(input, dependencies) {
257
259
  function buildEngagementTvModuleEvent(input, dependencies) {
258
260
  return (0, ts_deepmerge_1.merge)(tpaas_schemas_1.EngagementTvModule, getElementEventBuildersOutput(new Date(), dependencies, input), normalizePageInput(input));
259
261
  }
262
+ function buildEngagementTvSearchEvent(input, dependencies) {
263
+ return (0, ts_deepmerge_1.merge)(tpaas_schemas_1.EngagementTvSearch, getElementEventBuildersOutput(new Date(), dependencies, input), normalizePageInput(input));
264
+ }
260
265
  function buildEngagementUIElementEvent(input, dependencies) {
261
266
  return (0, ts_deepmerge_1.merge)(tpaas_schemas_1.EngagementUIElement, getElementEventBuildersOutput(new Date(), dependencies, input), normalizePageInput(input));
262
267
  }
@@ -270,6 +275,11 @@ function buildEngagementWidgetEvent(input, dependencies) {
270
275
  return (0, ts_deepmerge_1.merge)(tpaas_schemas_1.EngagementWidget, getElementEventBuildersOutput(new Date(), dependencies, input), normalizePageInput(input));
271
276
  }
272
277
  // #endregion
278
+ // #region Heartbeat Event Builders
279
+ function buildHeartbeatCommercialArticleEvent(input, dependencies) {
280
+ return (0, ts_deepmerge_1.merge)(tpaas_schemas_1.HeartbeatCommercialArticle, (0, exports.getCommonBuildersOutput)(new Date(), dependencies, input), normalizePageInput(input), (0, navigationType_1.builder)(input.page?.navigationType));
281
+ }
282
+ // #endregion
273
283
  // #region Health Event Builders
274
284
  function buildCompletedHealthActionEvent(input, dependencies) {
275
285
  return (0, ts_deepmerge_1.merge)(tpaas_schemas_1.CompletedHealthAction, (0, exports.getCommonBuildersOutput)(new Date(), dependencies, input), normalizePageInput(input));