@sitecore-content-sdk/events 2.0.0-canary.12

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 (103) hide show
  1. package/LICENSE.MD +202 -0
  2. package/README.md +91 -0
  3. package/browser.d.ts +2 -0
  4. package/dist/cjs/package.json +80 -0
  5. package/dist/cjs/src/browser.js +9 -0
  6. package/dist/cjs/src/consts.js +21 -0
  7. package/dist/cjs/src/debug.js +12 -0
  8. package/dist/cjs/src/eventStorage/addToEventQueue.js +25 -0
  9. package/dist/cjs/src/eventStorage/clearEventQueue.js +15 -0
  10. package/dist/cjs/src/eventStorage/eventStorage.js +67 -0
  11. package/dist/cjs/src/eventStorage/processEventQueue.js +16 -0
  12. package/dist/cjs/src/events/base-event.js +35 -0
  13. package/dist/cjs/src/events/common-interfaces.js +2 -0
  14. package/dist/cjs/src/events/consts.js +5 -0
  15. package/dist/cjs/src/events/custom-event/custom-event.js +62 -0
  16. package/dist/cjs/src/events/custom-event/event.js +27 -0
  17. package/dist/cjs/src/events/custom-event/form.js +38 -0
  18. package/dist/cjs/src/events/identity/identity-event.js +93 -0
  19. package/dist/cjs/src/events/identity/identity.js +27 -0
  20. package/dist/cjs/src/events/index.js +11 -0
  21. package/dist/cjs/src/events/page-view/page-view-event.js +131 -0
  22. package/dist/cjs/src/events/page-view/page-view.js +30 -0
  23. package/dist/cjs/src/events/send-event/sendEvent.js +36 -0
  24. package/dist/cjs/src/index.js +13 -0
  25. package/dist/cjs/src/initialization/const.js +8 -0
  26. package/dist/cjs/src/initialization/plugin.js +56 -0
  27. package/dist/cjs/src/initialization/types.js +2 -0
  28. package/dist/cjs/src/internal.js +8 -0
  29. package/dist/esm/package.json +80 -0
  30. package/dist/esm/src/browser.js +3 -0
  31. package/dist/esm/src/consts.js +15 -0
  32. package/dist/esm/src/debug.js +9 -0
  33. package/dist/esm/src/eventStorage/addToEventQueue.js +22 -0
  34. package/dist/esm/src/eventStorage/clearEventQueue.js +12 -0
  35. package/dist/esm/src/eventStorage/eventStorage.js +64 -0
  36. package/dist/esm/src/eventStorage/processEventQueue.js +13 -0
  37. package/dist/esm/src/events/base-event.js +31 -0
  38. package/dist/esm/src/events/common-interfaces.js +1 -0
  39. package/dist/esm/src/events/consts.js +2 -0
  40. package/dist/esm/src/events/custom-event/custom-event.js +58 -0
  41. package/dist/esm/src/events/custom-event/event.js +24 -0
  42. package/dist/esm/src/events/custom-event/form.js +35 -0
  43. package/dist/esm/src/events/identity/identity-event.js +89 -0
  44. package/dist/esm/src/events/identity/identity.js +24 -0
  45. package/dist/esm/src/events/index.js +4 -0
  46. package/dist/esm/src/events/page-view/page-view-event.js +127 -0
  47. package/dist/esm/src/events/page-view/page-view.js +27 -0
  48. package/dist/esm/src/events/send-event/sendEvent.js +33 -0
  49. package/dist/esm/src/index.js +5 -0
  50. package/dist/esm/src/initialization/const.js +5 -0
  51. package/dist/esm/src/initialization/plugin.js +52 -0
  52. package/dist/esm/src/initialization/types.js +1 -0
  53. package/dist/esm/src/internal.js +2 -0
  54. package/internal.d.ts +2 -0
  55. package/package.json +80 -0
  56. package/types/src/browser.d.ts +4 -0
  57. package/types/src/browser.d.ts.map +1 -0
  58. package/types/src/consts.d.ts +15 -0
  59. package/types/src/consts.d.ts.map +1 -0
  60. package/types/src/debug.d.ts +9 -0
  61. package/types/src/debug.d.ts.map +1 -0
  62. package/types/src/eventStorage/addToEventQueue.d.ts +8 -0
  63. package/types/src/eventStorage/addToEventQueue.d.ts.map +1 -0
  64. package/types/src/eventStorage/clearEventQueue.d.ts +6 -0
  65. package/types/src/eventStorage/clearEventQueue.d.ts.map +1 -0
  66. package/types/src/eventStorage/eventStorage.d.ts +31 -0
  67. package/types/src/eventStorage/eventStorage.d.ts.map +1 -0
  68. package/types/src/eventStorage/processEventQueue.d.ts +7 -0
  69. package/types/src/eventStorage/processEventQueue.d.ts.map +1 -0
  70. package/types/src/events/base-event.d.ts +35 -0
  71. package/types/src/events/base-event.d.ts.map +1 -0
  72. package/types/src/events/common-interfaces.d.ts +53 -0
  73. package/types/src/events/common-interfaces.d.ts.map +1 -0
  74. package/types/src/events/consts.d.ts +3 -0
  75. package/types/src/events/consts.d.ts.map +1 -0
  76. package/types/src/events/custom-event/custom-event.d.ts +79 -0
  77. package/types/src/events/custom-event/custom-event.d.ts.map +1 -0
  78. package/types/src/events/custom-event/event.d.ts +10 -0
  79. package/types/src/events/custom-event/event.d.ts.map +1 -0
  80. package/types/src/events/custom-event/form.d.ts +11 -0
  81. package/types/src/events/custom-event/form.d.ts.map +1 -0
  82. package/types/src/events/identity/identity-event.d.ts +184 -0
  83. package/types/src/events/identity/identity-event.d.ts.map +1 -0
  84. package/types/src/events/identity/identity.d.ts +10 -0
  85. package/types/src/events/identity/identity.d.ts.map +1 -0
  86. package/types/src/events/index.d.ts +10 -0
  87. package/types/src/events/index.d.ts.map +1 -0
  88. package/types/src/events/page-view/page-view-event.d.ts +125 -0
  89. package/types/src/events/page-view/page-view-event.d.ts.map +1 -0
  90. package/types/src/events/page-view/page-view.d.ts +11 -0
  91. package/types/src/events/page-view/page-view.d.ts.map +1 -0
  92. package/types/src/events/send-event/sendEvent.d.ts +22 -0
  93. package/types/src/events/send-event/sendEvent.d.ts.map +1 -0
  94. package/types/src/index.d.ts +10 -0
  95. package/types/src/index.d.ts.map +1 -0
  96. package/types/src/initialization/const.d.ts +6 -0
  97. package/types/src/initialization/const.d.ts.map +1 -0
  98. package/types/src/initialization/plugin.d.ts +35 -0
  99. package/types/src/initialization/plugin.d.ts.map +1 -0
  100. package/types/src/initialization/types.d.ts +22 -0
  101. package/types/src/initialization/types.d.ts.map +1 -0
  102. package/types/src/internal.d.ts +3 -0
  103. package/types/src/internal.d.ts.map +1 -0
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.event = event;
4
+ const internal_1 = require("@sitecore-content-sdk/analytics-core/internal");
5
+ const sendEvent_1 = require("../send-event/sendEvent");
6
+ const custom_event_1 = require("./custom-event");
7
+ const core_1 = require("@sitecore-content-sdk/core");
8
+ const plugin_1 = require("../../initialization/plugin");
9
+ /**
10
+ * A function that sends an event to the SitecoreCloud API with the specified type
11
+ * @param {EventData} eventData - The required/optional attributes to be sent to the SitecoreCloud API
12
+ * @returns The response object that Sitecore Edge Proxy returns
13
+ * @public
14
+ */
15
+ async function event(eventData) {
16
+ const coreContext = (0, core_1.getCoreContext)();
17
+ await coreContext.readyPromise;
18
+ (0, plugin_1.getEventsPlugin)();
19
+ const { options, adapter } = (0, internal_1.getAnalyticsPlugin)();
20
+ const id = adapter.getClientId() || '';
21
+ return new custom_event_1.CustomEvent({
22
+ eventData,
23
+ id,
24
+ sendEvent: sendEvent_1.sendEvent,
25
+ config: Object.assign(Object.assign({}, coreContext.config), options),
26
+ }).send();
27
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.form = form;
4
+ const internal_1 = require("@sitecore-content-sdk/analytics-core/internal");
5
+ const sendEvent_1 = require("../send-event/sendEvent");
6
+ const custom_event_1 = require("./custom-event");
7
+ const core_1 = require("@sitecore-content-sdk/core");
8
+ const plugin_1 = require("../../initialization/plugin");
9
+ /**
10
+ * A function that sends a form event to the SitecoreCloud API
11
+ * @param {string} formId - The required form ID string
12
+ * @param {'VIEWED' | 'SUBMITTED'} interactionType - The required interaction type string. Possible values: `VIEWED`, `SUBMITTED`
13
+ * @param {string} componentInstanceId - The required component instance ID string
14
+ * @returns The response object that Sitecore Edge Proxy returns or null
15
+ * @public
16
+ */
17
+ async function form(formId, interactionType, componentInstanceId) {
18
+ const coreContext = (0, core_1.getCoreContext)();
19
+ await coreContext.readyPromise;
20
+ (0, plugin_1.getEventsPlugin)();
21
+ const { options, adapter } = (0, internal_1.getAnalyticsPlugin)();
22
+ const id = adapter.getClientId() || '';
23
+ const formEvent = new custom_event_1.CustomEvent({
24
+ eventData: {
25
+ extensionData: {
26
+ componentInstanceId,
27
+ formId,
28
+ interactionType: interactionType.toUpperCase(),
29
+ },
30
+ type: 'FORM',
31
+ },
32
+ id,
33
+ sendEvent: sendEvent_1.sendEvent,
34
+ config: Object.assign(Object.assign({}, coreContext.config), options),
35
+ });
36
+ formEvent.page = undefined;
37
+ return formEvent.send();
38
+ }
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IdentityEvent = void 0;
4
+ const utils_1 = require("@sitecore-content-sdk/analytics-core/utils");
5
+ const base_event_1 = require("../base-event");
6
+ const consts_1 = require("../consts");
7
+ const core_1 = require("@sitecore-content-sdk/core");
8
+ const { ERROR_MESSAGES } = core_1.constants;
9
+ /**
10
+ * A class that extends from {@link BaseEvent} and has all the required functionality to send an IDENTITY event
11
+ */
12
+ class IdentityEvent extends base_event_1.BaseEvent {
13
+ /**
14
+ * A class that extends from {@link BaseEvent} and has all the required functionality to send an IDENTITY event
15
+ * @param {IdentityEventArguments} args - Unified object containing the required properties
16
+ */
17
+ constructor(args) {
18
+ const { channel, currency, language, page, extensionData } = args.identityData;
19
+ super({ channel, currency, language, page }, args.id);
20
+ this.extensionData = {};
21
+ this.numberOfExtensionDataProperties = 0;
22
+ this.validateAttributes(args.identityData);
23
+ this.identityData = args.identityData;
24
+ this.sendEvent = args.sendEvent;
25
+ this.config = args.config;
26
+ if (extensionData)
27
+ this.extensionData = (0, utils_1.flattenObject)({ object: extensionData });
28
+ this.numberOfExtensionDataProperties = Object.entries(this.extensionData).length;
29
+ if (this.numberOfExtensionDataProperties > consts_1.MAX_EXT_ATTRIBUTES)
30
+ throw new Error(ERROR_MESSAGES.IV_006(consts_1.MAX_EXT_ATTRIBUTES));
31
+ }
32
+ /**
33
+ * Sends the event to Sitecore Edge Proxy
34
+ * @returns - A promise that resolves with either the Sitecore Edge Proxy response object or null
35
+ */
36
+ async send() {
37
+ const baseAttr = this.mapBaseEventPayload();
38
+ const eventAttrs = this.mapAttributes();
39
+ const fetchBody = Object.assign({}, eventAttrs, baseAttr);
40
+ return await this.sendEvent(fetchBody, this.config);
41
+ }
42
+ /**
43
+ * Function that validates the identifiers object, email, and date attributes for CDN users
44
+ * @param {IdentityData} identityData - The data to be validated
45
+ */
46
+ validateAttributes(identityData) {
47
+ if (identityData.identifiers.length === 0)
48
+ throw new Error(ERROR_MESSAGES.MV_003);
49
+ if (identityData.dob !== undefined && !(0, utils_1.isShortISODateString)(identityData.dob))
50
+ throw new Error(ERROR_MESSAGES.IV_003);
51
+ identityData.identifiers.forEach((identifier) => {
52
+ if (identifier.expiryDate && !(0, utils_1.isShortISODateString)(identifier.expiryDate))
53
+ throw new Error(ERROR_MESSAGES.IV_005);
54
+ });
55
+ if (identityData.email && !(0, utils_1.isValidEmail)(identityData.email))
56
+ throw new Error(ERROR_MESSAGES.IV_004);
57
+ }
58
+ /**
59
+ * A function that maps the identity event input data with the payload sent to the API
60
+ * @returns - The payload object
61
+ */
62
+ mapAttributes() {
63
+ const identityPayload = {
64
+ city: this.identityData.city,
65
+ country: this.identityData.country,
66
+ dob: this.identityData.dob,
67
+ email: this.identityData.email,
68
+ firstname: this.identityData.firstName,
69
+ gender: this.identityData.gender,
70
+ identifiers: this.identityData.identifiers.map((value) => {
71
+ return {
72
+ // eslint-disable-next-line @typescript-eslint/naming-convention
73
+ expiry_date: value.expiryDate,
74
+ id: value.id,
75
+ provider: value.provider,
76
+ };
77
+ }),
78
+ lastname: this.identityData.lastName,
79
+ mobile: this.identityData.mobile,
80
+ phone: this.identityData.phone,
81
+ // eslint-disable-next-line @typescript-eslint/naming-convention
82
+ postal_code: this.identityData.postalCode,
83
+ state: this.identityData.state,
84
+ street: this.identityData.street,
85
+ title: this.identityData.title,
86
+ type: 'IDENTITY',
87
+ };
88
+ if (this.numberOfExtensionDataProperties > 0)
89
+ identityPayload.ext = this.extensionData;
90
+ return identityPayload;
91
+ }
92
+ }
93
+ exports.IdentityEvent = IdentityEvent;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.identity = identity;
4
+ const internal_1 = require("@sitecore-content-sdk/analytics-core/internal");
5
+ const sendEvent_1 = require("../send-event/sendEvent");
6
+ const identity_event_1 = require("./identity-event");
7
+ const core_1 = require("@sitecore-content-sdk/core");
8
+ const plugin_1 = require("../../initialization/plugin");
9
+ /**
10
+ * A function that sends an IDENTITY event to the SitecoreCloud API
11
+ * @param {IdentityData} identityData - The required/optional attributes to be sent to the SitecoreCloud API
12
+ * @returns The response object that Sitecore Edge Proxy returns
13
+ * @public
14
+ */
15
+ async function identity(identityData) {
16
+ const coreContext = (0, core_1.getCoreContext)();
17
+ await coreContext.readyPromise;
18
+ (0, plugin_1.getEventsPlugin)();
19
+ const { options, adapter } = (0, internal_1.getAnalyticsPlugin)();
20
+ const id = adapter.getClientId() || '';
21
+ return new identity_event_1.IdentityEvent({
22
+ id,
23
+ identityData,
24
+ sendEvent: sendEvent_1.sendEvent,
25
+ config: Object.assign(Object.assign({}, coreContext.config), options),
26
+ }).send();
27
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IdentityEvent = exports.CustomEvent = exports.PageViewEvent = exports.BaseEvent = void 0;
4
+ var base_event_1 = require("./base-event");
5
+ Object.defineProperty(exports, "BaseEvent", { enumerable: true, get: function () { return base_event_1.BaseEvent; } });
6
+ var page_view_event_1 = require("./page-view/page-view-event");
7
+ Object.defineProperty(exports, "PageViewEvent", { enumerable: true, get: function () { return page_view_event_1.PageViewEvent; } });
8
+ var custom_event_1 = require("./custom-event/custom-event");
9
+ Object.defineProperty(exports, "CustomEvent", { enumerable: true, get: function () { return custom_event_1.CustomEvent; } });
10
+ var identity_event_1 = require("./identity/identity-event");
11
+ Object.defineProperty(exports, "IdentityEvent", { enumerable: true, get: function () { return identity_event_1.IdentityEvent; } });
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PageViewEvent = void 0;
4
+ const consts_1 = require("../consts");
5
+ const base_event_1 = require("../base-event");
6
+ const utils_1 = require("@sitecore-content-sdk/analytics-core/utils");
7
+ const core_1 = require("@sitecore-content-sdk/core");
8
+ const { ERROR_MESSAGES } = core_1.constants;
9
+ /**
10
+ * A class that extends from {@link BaseEvent} and has all the required functionality to send a VIEW event
11
+ */
12
+ class PageViewEvent extends base_event_1.BaseEvent {
13
+ /**
14
+ * A class that extends from {@link BaseEvent} and has all the required functionality to send a VIEW event
15
+ * @param {PageViewEventArguments} args - Unified object containing the required properties
16
+ */
17
+ constructor(args) {
18
+ var _a;
19
+ const { channel, currency, language, page, extensionData } = Object.assign({}, args.pageViewData);
20
+ super({
21
+ channel,
22
+ currency,
23
+ language,
24
+ page,
25
+ }, args.id);
26
+ this.extensionData = {};
27
+ this.pageViewData = args.pageViewData;
28
+ this.sendEvent = args.sendEvent;
29
+ this.config = args.config;
30
+ this.urlSearchParams = new URLSearchParams(decodeURI(args.searchParams));
31
+ if (extensionData)
32
+ this.extensionData = (0, utils_1.flattenObject)({ object: extensionData });
33
+ const numberOfExtensionDataProperties = Object.entries(this.extensionData).length;
34
+ if (numberOfExtensionDataProperties > consts_1.MAX_EXT_ATTRIBUTES)
35
+ throw new Error(ERROR_MESSAGES.IV_006(consts_1.MAX_EXT_ATTRIBUTES));
36
+ this.includeUTMParameters =
37
+ (_a = (args.pageViewData && args.pageViewData.includeUTMParameters)) !== null && _a !== void 0 ? _a : true;
38
+ }
39
+ /**
40
+ * Sends the event to Sitecore Edge Proxy
41
+ * @returns - A promise that resolves with either the Sitecore Edge Proxy response object or null
42
+ */
43
+ async send() {
44
+ const baseAttr = this.mapBaseEventPayload();
45
+ const eventAttrs = this.mapAttributes();
46
+ PageViewEvent.isFirstPageView = false;
47
+ return await this.sendEvent(Object.assign(Object.assign({}, baseAttr), eventAttrs), this.config);
48
+ }
49
+ /**
50
+ * Gets the variant ID from the url if not passed by the developer
51
+ * Gets the variant ID from the extension data if not found from the url
52
+ * @param {string} [pageVariantIdFromPageViewData] - The variant ID from the page view data
53
+ * @param {string} [pageVariantIdFromExt] - The variant ID from extension data
54
+ * @returns - variant ID or null
55
+ */
56
+ getPageVariantId(pageVariantIdFromPageViewData, pageVariantIdFromExt) {
57
+ if (pageVariantIdFromPageViewData)
58
+ return pageVariantIdFromPageViewData;
59
+ const pageVariantIdFromURL = this.urlSearchParams.get('variantid');
60
+ if (pageVariantIdFromURL)
61
+ return pageVariantIdFromURL;
62
+ if (pageVariantIdFromExt)
63
+ return pageVariantIdFromExt;
64
+ return null;
65
+ }
66
+ /**
67
+ * Returns the referrer if exists on page view event else null if on server and no referrer is on event, else
68
+ * returns the href if on client side and the document referrer is different from the window location hostname
69
+ * @returns - the referrer
70
+ */
71
+ getReferrer() {
72
+ var _a;
73
+ if ((_a = this.pageViewData) === null || _a === void 0 ? void 0 : _a.referrer)
74
+ return this.pageViewData.referrer;
75
+ if (typeof window === 'undefined')
76
+ return null;
77
+ if (!PageViewEvent.isFirstPageView || !document.referrer)
78
+ return null;
79
+ const { hostname, href } = new URL(document.referrer);
80
+ return window.location.hostname !== hostname ? href : null;
81
+ }
82
+ /**
83
+ * Maps parameters given as input to corresponding attributes send to the API
84
+ * @returns the mapped object to be sent as payload
85
+ */
86
+ mapAttributes() {
87
+ var _a;
88
+ let pageViewPayload = {
89
+ type: 'VIEW',
90
+ };
91
+ const pageVariantId = this.pageViewData &&
92
+ this.getPageVariantId(this.pageViewData.pageVariantId, this.extensionData.pageVariantId);
93
+ if (pageVariantId !== null)
94
+ pageViewPayload.ext = Object.assign(Object.assign({}, pageViewPayload.ext), { pageVariantId });
95
+ if (Object.keys(this.extensionData).length > 0) {
96
+ delete this.extensionData.pageVariantId;
97
+ pageViewPayload.ext = Object.assign(Object.assign({}, pageViewPayload.ext), this.extensionData);
98
+ }
99
+ if (this.includeUTMParameters) {
100
+ const utmParameters = this.getUTMParameters();
101
+ pageViewPayload = Object.assign(Object.assign({}, pageViewPayload), utmParameters);
102
+ }
103
+ const referrer = this.getReferrer();
104
+ if (referrer !== null)
105
+ pageViewPayload = Object.assign(Object.assign({}, pageViewPayload), { referrer });
106
+ if ((_a = this.pageViewData) === null || _a === void 0 ? void 0 : _a.searchData)
107
+ pageViewPayload.sc_search = {
108
+ data: this.pageViewData.searchData,
109
+ metadata: {
110
+ // eslint-disable-next-line @typescript-eslint/naming-convention
111
+ ut_api_version: '1.0',
112
+ },
113
+ };
114
+ return pageViewPayload;
115
+ }
116
+ /**
117
+ * Retrieves UTM parameters from the url query string
118
+ * @returns - an object containing the UTM parameters if they exist
119
+ */
120
+ getUTMParameters() {
121
+ const utmParameters = {};
122
+ this.urlSearchParams.forEach((value, key) => {
123
+ const param = key.toLowerCase();
124
+ if (param.indexOf(consts_1.UTM_PREFIX) === 0)
125
+ utmParameters[param] = value;
126
+ });
127
+ return utmParameters;
128
+ }
129
+ }
130
+ exports.PageViewEvent = PageViewEvent;
131
+ PageViewEvent.isFirstPageView = true;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pageView = pageView;
4
+ const internal_1 = require("@sitecore-content-sdk/analytics-core/internal");
5
+ const sendEvent_1 = require("../send-event/sendEvent");
6
+ const page_view_event_1 = require("./page-view-event");
7
+ const core_1 = require("@sitecore-content-sdk/core");
8
+ const plugin_1 = require("../../initialization/plugin");
9
+ /**
10
+ * A function that sends a VIEW event to the SitecoreCloud API
11
+ * @param {PageViewData} [pageViewData] - The optional attributes to be sent to the SitecoreCloud API
12
+ * This object will be flattened and sent in the ext object of the payload
13
+ * @returns The response object that Sitecore Edge Proxy returns
14
+ * @public
15
+ */
16
+ async function pageView(pageViewData) {
17
+ const coreContext = (0, core_1.getCoreContext)();
18
+ await coreContext.readyPromise;
19
+ (0, plugin_1.getEventsPlugin)();
20
+ const { options, adapter } = (0, internal_1.getAnalyticsPlugin)();
21
+ const id = adapter.getClientId() || '';
22
+ const searchParams = adapter.location.getSearchParams();
23
+ return new page_view_event_1.PageViewEvent({
24
+ id,
25
+ pageViewData,
26
+ searchParams,
27
+ sendEvent: sendEvent_1.sendEvent,
28
+ config: Object.assign(Object.assign({}, coreContext.config), options),
29
+ }).send();
30
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sendEvent = sendEvent;
4
+ const internal_1 = require("@sitecore-content-sdk/analytics-core/internal");
5
+ const consts_1 = require("../../consts");
6
+ const core_1 = require("@sitecore-content-sdk/core");
7
+ const debug_1 = require("../../debug");
8
+ /**
9
+ * This function sends an event to Sitecore Edge Proxy
10
+ * @param {EPFetchBody & BasePayload} body - The event data to send
11
+ * @param {CoreContext['config']} config - The global configuration
12
+ * @internal
13
+ */
14
+ async function sendEvent(body, config) {
15
+ // eslint-disable-next-line max-len
16
+ const eventUrl = `${config.edgeUrl}/v1/events/${internal_1.API_VERSION}/events?siteId=${config.siteName}`;
17
+ const fetchOptions = {
18
+ body: JSON.stringify(body),
19
+ headers: {
20
+ 'Content-Type': 'application/json',
21
+ 'X-Client-Software-ID': consts_1.X_CLIENT_SOFTWARE_ID,
22
+ 'X-Library-Version': consts_1.PACKAGE_VERSION,
23
+ 'x-sitecore-contextid': config.contextId,
24
+ },
25
+ method: 'POST',
26
+ };
27
+ const fetcher = new core_1.NativeDataFetcher({ debugger: debug_1.debug.events });
28
+ return await fetcher
29
+ .fetch(eventUrl, fetchOptions)
30
+ .then(async (response) => {
31
+ return response.data;
32
+ })
33
+ .catch(() => {
34
+ return null;
35
+ });
36
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.eventsPlugin = exports.pageView = exports.identity = exports.event = exports.form = void 0;
4
+ var form_1 = require("./events/custom-event/form");
5
+ Object.defineProperty(exports, "form", { enumerable: true, get: function () { return form_1.form; } });
6
+ var event_1 = require("./events/custom-event/event");
7
+ Object.defineProperty(exports, "event", { enumerable: true, get: function () { return event_1.event; } });
8
+ var identity_1 = require("./events/identity/identity");
9
+ Object.defineProperty(exports, "identity", { enumerable: true, get: function () { return identity_1.identity; } });
10
+ var page_view_1 = require("./events/page-view/page-view");
11
+ Object.defineProperty(exports, "pageView", { enumerable: true, get: function () { return page_view_1.pageView; } });
12
+ var plugin_1 = require("./initialization/plugin");
13
+ Object.defineProperty(exports, "eventsPlugin", { enumerable: true, get: function () { return plugin_1.eventsPlugin; } });
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EVENTS_PLUGIN_NAME = void 0;
4
+ /**
5
+ * The name of the Events plugin.
6
+ * @public
7
+ */
8
+ exports.EVENTS_PLUGIN_NAME = 'EventsPlugin';
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.eventsPlugin = eventsPlugin;
4
+ exports.getEventsPlugin = getEventsPlugin;
5
+ const core_1 = require("@sitecore-content-sdk/core");
6
+ const const_1 = require("./const");
7
+ const consts_1 = require("../consts");
8
+ const event_1 = require("../events/custom-event/event");
9
+ const form_1 = require("../events/custom-event/form");
10
+ const identity_1 = require("../events/identity/identity");
11
+ const page_view_1 = require("../events/page-view/page-view");
12
+ const addToEventQueue_1 = require("../eventStorage/addToEventQueue");
13
+ const clearEventQueue_1 = require("../eventStorage/clearEventQueue");
14
+ const processEventQueue_1 = require("../eventStorage/processEventQueue");
15
+ const internal_1 = require("@sitecore-content-sdk/analytics-core/internal");
16
+ const { ERROR_MESSAGES } = core_1.constants;
17
+ /**
18
+ * Initializes the events plugin with the provided options.
19
+ * @internal
20
+ */
21
+ async function init() {
22
+ if (typeof window !== 'undefined')
23
+ window.scContentSDK = Object.assign(Object.assign({}, window.scContentSDK), { events: {
24
+ addToEventQueue: addToEventQueue_1.addToEventQueue,
25
+ clearEventQueue: clearEventQueue_1.clearEventQueue,
26
+ event: event_1.event,
27
+ form: form_1.form,
28
+ identity: identity_1.identity,
29
+ pageView: page_view_1.pageView,
30
+ processEventQueue: processEventQueue_1.processEventQueue,
31
+ version: consts_1.PACKAGE_VERSION,
32
+ } });
33
+ }
34
+ /**
35
+ * Creates an events plugin with the provided options.
36
+ * @returns {EventsPlugin} The events plugin instance.
37
+ * @public
38
+ */
39
+ function eventsPlugin() {
40
+ return {
41
+ name: const_1.EVENTS_PLUGIN_NAME,
42
+ init,
43
+ dependencies: [internal_1.ANALYTICS_PLUGIN_NAME],
44
+ };
45
+ }
46
+ /**
47
+ * Retrieves the events plugin instance from the core context.
48
+ * @returns {EventsPlugin} The events plugin instance.
49
+ * @internal
50
+ */
51
+ function getEventsPlugin() {
52
+ const plugin = (0, core_1.getCoreContext)().plugins.get(const_1.EVENTS_PLUGIN_NAME);
53
+ if (!plugin)
54
+ throw new Error(ERROR_MESSAGES.IE_004(const_1.EVENTS_PLUGIN_NAME));
55
+ return plugin;
56
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PACKAGE_NAME = exports.PACKAGE_VERSION = exports.EVENTS_PLUGIN_NAME = void 0;
4
+ var const_1 = require("./initialization/const");
5
+ Object.defineProperty(exports, "EVENTS_PLUGIN_NAME", { enumerable: true, get: function () { return const_1.EVENTS_PLUGIN_NAME; } });
6
+ var consts_1 = require("./consts");
7
+ Object.defineProperty(exports, "PACKAGE_VERSION", { enumerable: true, get: function () { return consts_1.PACKAGE_VERSION; } });
8
+ Object.defineProperty(exports, "PACKAGE_NAME", { enumerable: true, get: function () { return consts_1.PACKAGE_NAME; } });
@@ -0,0 +1,80 @@
1
+ {
2
+ "author": {
3
+ "name": "Sitecore Corporation",
4
+ "url": "https://doc.sitecore.com/xmc/en/developers/content-sdk/index.html"
5
+ },
6
+ "bugs": {
7
+ "url": "https://github.com/Sitecore/content-sdk/issues"
8
+ },
9
+ "dependencies": {
10
+ "@sitecore-content-sdk/analytics-core": "2.0.0-canary.12",
11
+ "@sitecore-content-sdk/core": "2.0.0-canary.12",
12
+ "debug": "^4.4.3"
13
+ },
14
+ "description": "Enables real-time, unified tracking to send events to Sitecore.",
15
+ "devDependencies": {
16
+ "@jest/globals": "^30.2.0",
17
+ "@jest/types": "^29.6.3",
18
+ "@stylistic/eslint-plugin": "^5.2.2",
19
+ "@types/debug": "^4.1.12",
20
+ "@types/jest": "^29.5.12",
21
+ "@typescript-eslint/eslint-plugin": "8.39.0",
22
+ "@typescript-eslint/parser": "8.39.0",
23
+ "del-cli": "^6.0.0",
24
+ "eslint": "^9.32.0",
25
+ "eslint-config-prettier": "^10.1.8",
26
+ "eslint-plugin-import": "2.32.0",
27
+ "eslint-plugin-jsdoc": "52.0.3",
28
+ "eslint-plugin-prettier": "^4.0.0",
29
+ "jest": "^29.7.0",
30
+ "jest-environment-jsdom": "^29.7.0",
31
+ "jest-environment-node": "^29.7.0",
32
+ "ts-jest": "^29.4.6",
33
+ "ts-node": "^10.9.2"
34
+ },
35
+ "main": "dist/cjs/index.js",
36
+ "module": "dist/esm/index.js",
37
+ "types": "types/src/index.d.ts",
38
+ "exports": {
39
+ ".": {
40
+ "import": "./dist/esm/src/index.js",
41
+ "require": "./dist/cjs/src/index.js",
42
+ "types": "./types/src/index.d.ts"
43
+ },
44
+ "./browser": {
45
+ "import": "./dist/esm/src/browser.js",
46
+ "require": "./dist/cjs/src/browser.js",
47
+ "types": "./types/src/browser.d.ts"
48
+ },
49
+ "./internal": {
50
+ "import": "./dist/esm/src/internal.js",
51
+ "require": "./dist/cjs/src/internal.js",
52
+ "types": "./types/src/internal.d.ts"
53
+ }
54
+ },
55
+ "files": [
56
+ "dist",
57
+ "types",
58
+ "/*.d.ts"
59
+ ],
60
+ "homepage": "https://doc.sitecore.com/xmc/en/developers/content-sdk/index.html",
61
+ "license": "Apache-2.0",
62
+ "name": "@sitecore-content-sdk/events",
63
+ "publishConfig": {
64
+ "access": "public",
65
+ "registry": "https://registry.npmjs.org/"
66
+ },
67
+ "scripts": {
68
+ "build": "npm run clean && tsc -p tsconfig.json && tsc -p tsconfig-esm.json",
69
+ "clean": "del-cli dist types",
70
+ "coverage": "jest --config jest.config.ts --coverage",
71
+ "generate-docs": "npx typedoc --plugin typedoc-plugin-markdown --outputFileStrategy Members --parametersFormat table --readme none --out ../../ref-docs/events --entryPoints src/browser.ts --entryPoints src/internal.ts --entryPoints src/index.ts --githubPages false",
72
+ "lint": "eslint \"./src/**/*.ts\"",
73
+ "prepublishOnly": "npm run build",
74
+ "test": "jest --config jest.config.ts",
75
+ "api-extractor": "npm run build && api-extractor run --local --verbose",
76
+ "api-extractor:verify": "api-extractor run"
77
+ },
78
+ "version": "2.0.0-canary.12",
79
+ "gitHead": "4a26005860f4931f25d8c63d765a030e04a5b1f4"
80
+ }
@@ -0,0 +1,3 @@
1
+ export { addToEventQueue } from './eventStorage/addToEventQueue';
2
+ export { processEventQueue } from './eventStorage/processEventQueue';
3
+ export { clearEventQueue } from './eventStorage/clearEventQueue';
@@ -0,0 +1,15 @@
1
+ import packageJson from '../package.json';
2
+ /**
3
+ * The package version.
4
+ * @internal
5
+ */
6
+ export const PACKAGE_VERSION = packageJson.version;
7
+ /**
8
+ * The package version.
9
+ * @internal
10
+ */
11
+ export const PACKAGE_NAME = packageJson.name;
12
+ /**
13
+ * Returns the name & version of the library in a String.
14
+ */
15
+ export const X_CLIENT_SOFTWARE_ID = `${PACKAGE_NAME} ${PACKAGE_VERSION}`;
@@ -0,0 +1,9 @@
1
+ import { debugNamespace, debugModule } from '@sitecore-content-sdk/core';
2
+ export const EVENTS_NAMESPACE = 'events';
3
+ /**
4
+ * Debug module for events package
5
+ * @public
6
+ */
7
+ export const debug = {
8
+ events: debugModule(`${debugNamespace}:${EVENTS_NAMESPACE}`),
9
+ };
@@ -0,0 +1,22 @@
1
+ import { getAnalyticsPlugin } from '@sitecore-content-sdk/analytics-core/internal';
2
+ import { eventQueue } from './eventStorage';
3
+ import { getCoreContext } from '@sitecore-content-sdk/core';
4
+ import { getEventsPlugin } from '../initialization/plugin';
5
+ /**
6
+ * A function that adds an event to the queue
7
+ * @param {EventData} eventData - The required/optional attributes in order to be sent to SitecoreCloud API
8
+ * @public
9
+ */
10
+ export async function addToEventQueue(eventData) {
11
+ const coreContext = getCoreContext();
12
+ await coreContext.readyPromise;
13
+ getEventsPlugin();
14
+ const { options, adapter } = getAnalyticsPlugin();
15
+ const id = adapter.getClientId() || '';
16
+ const queueEventPayload = {
17
+ eventData,
18
+ id,
19
+ config: Object.assign(Object.assign({}, coreContext.config), options),
20
+ };
21
+ eventQueue.enqueueEvent(queueEventPayload);
22
+ }
@@ -0,0 +1,12 @@
1
+ import { getCoreContext } from '@sitecore-content-sdk/core';
2
+ import { eventQueue } from './eventStorage';
3
+ import { getEventsPlugin } from '../initialization/plugin';
4
+ /**
5
+ * Deletes the queue from session.
6
+ * @public
7
+ */
8
+ export async function clearEventQueue() {
9
+ await getCoreContext().readyPromise;
10
+ getEventsPlugin();
11
+ eventQueue.clearQueue();
12
+ }