@sitecore-cloudsdk/events 0.1.2 → 0.1.4

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 (76) hide show
  1. package/README.md +31 -24
  2. package/dist/cjs/package.json +8 -4
  3. package/dist/cjs/src/lib/consts.d.ts +10 -0
  4. package/dist/cjs/src/lib/consts.js +13 -1
  5. package/dist/cjs/src/lib/eventStorage/addToEventQueue.d.ts +1 -1
  6. package/dist/cjs/src/lib/eventStorage/addToEventQueue.js +8 -3
  7. package/dist/cjs/src/lib/eventStorage/clearEventQueue.d.ts +1 -1
  8. package/dist/cjs/src/lib/eventStorage/clearEventQueue.js +4 -3
  9. package/dist/cjs/src/lib/eventStorage/eventStorage.d.ts +4 -8
  10. package/dist/cjs/src/lib/eventStorage/eventStorage.js +15 -15
  11. package/dist/cjs/src/lib/eventStorage/processEventQueue.d.ts +1 -1
  12. package/dist/cjs/src/lib/eventStorage/processEventQueue.js +4 -3
  13. package/dist/cjs/src/lib/events/base-event.d.ts +1 -3
  14. package/dist/cjs/src/lib/events/base-event.js +1 -2
  15. package/dist/cjs/src/lib/events/custom-event/custom-event.d.ts +4 -3
  16. package/dist/cjs/src/lib/events/custom-event/custom-event.js +6 -4
  17. package/dist/cjs/src/lib/events/custom-event/event.js +7 -3
  18. package/dist/cjs/src/lib/events/custom-event/eventServer.js +4 -4
  19. package/dist/cjs/src/lib/events/custom-event/form.js +8 -4
  20. package/dist/cjs/src/lib/events/identity/identity-event.d.ts +4 -3
  21. package/dist/cjs/src/lib/events/identity/identity-event.js +10 -8
  22. package/dist/cjs/src/lib/events/identity/identity.js +8 -5
  23. package/dist/cjs/src/lib/events/identity/identityServer.js +3 -3
  24. package/dist/cjs/src/lib/events/page-view/page-view-event.d.ts +4 -3
  25. package/dist/cjs/src/lib/events/page-view/page-view-event.js +6 -5
  26. package/dist/cjs/src/lib/events/page-view/page-view-server.js +3 -3
  27. package/dist/cjs/src/lib/events/page-view/page-view.js +9 -4
  28. package/dist/cjs/src/lib/events/send-event/sendEvent.d.ts +17 -0
  29. package/dist/cjs/src/lib/events/send-event/sendEvent.js +29 -0
  30. package/dist/cjs/src/lib/getGuestId/getGuestId.js +6 -4
  31. package/dist/cjs/src/lib/initializer/browser/initializer.d.ts +6 -19
  32. package/dist/cjs/src/lib/initializer/browser/initializer.js +21 -39
  33. package/dist/cjs/src/lib/initializer/server/initializer.d.ts +1 -16
  34. package/dist/cjs/src/lib/initializer/server/initializer.js +1 -28
  35. package/dist/cjs/src/server.d.ts +0 -1
  36. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  37. package/dist/esm/package.json +8 -4
  38. package/dist/esm/src/lib/consts.d.ts +10 -0
  39. package/dist/esm/src/lib/consts.js +12 -0
  40. package/dist/esm/src/lib/eventStorage/addToEventQueue.d.ts +1 -1
  41. package/dist/esm/src/lib/eventStorage/addToEventQueue.js +8 -3
  42. package/dist/esm/src/lib/eventStorage/clearEventQueue.d.ts +1 -1
  43. package/dist/esm/src/lib/eventStorage/clearEventQueue.js +4 -3
  44. package/dist/esm/src/lib/eventStorage/eventStorage.d.ts +4 -8
  45. package/dist/esm/src/lib/eventStorage/eventStorage.js +15 -14
  46. package/dist/esm/src/lib/eventStorage/processEventQueue.d.ts +1 -1
  47. package/dist/esm/src/lib/eventStorage/processEventQueue.js +4 -3
  48. package/dist/esm/src/lib/events/base-event.d.ts +1 -3
  49. package/dist/esm/src/lib/events/base-event.js +1 -2
  50. package/dist/esm/src/lib/events/custom-event/custom-event.d.ts +4 -3
  51. package/dist/esm/src/lib/events/custom-event/custom-event.js +6 -4
  52. package/dist/esm/src/lib/events/custom-event/event.js +8 -4
  53. package/dist/esm/src/lib/events/custom-event/eventServer.js +5 -5
  54. package/dist/esm/src/lib/events/custom-event/form.js +8 -4
  55. package/dist/esm/src/lib/events/identity/identity-event.d.ts +4 -3
  56. package/dist/esm/src/lib/events/identity/identity-event.js +10 -8
  57. package/dist/esm/src/lib/events/identity/identity.js +8 -5
  58. package/dist/esm/src/lib/events/identity/identityServer.js +4 -4
  59. package/dist/esm/src/lib/events/page-view/page-view-event.d.ts +4 -3
  60. package/dist/esm/src/lib/events/page-view/page-view-event.js +6 -5
  61. package/dist/esm/src/lib/events/page-view/page-view-server.js +4 -4
  62. package/dist/esm/src/lib/events/page-view/page-view.js +9 -4
  63. package/dist/esm/src/lib/events/send-event/sendEvent.d.ts +17 -0
  64. package/dist/esm/src/lib/events/send-event/sendEvent.js +25 -0
  65. package/dist/esm/src/lib/getGuestId/getGuestId.js +6 -4
  66. package/dist/esm/src/lib/initializer/browser/initializer.d.ts +6 -19
  67. package/dist/esm/src/lib/initializer/browser/initializer.js +20 -37
  68. package/dist/esm/src/lib/initializer/server/initializer.d.ts +1 -16
  69. package/dist/esm/src/lib/initializer/server/initializer.js +1 -26
  70. package/dist/esm/src/server.d.ts +0 -1
  71. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  72. package/package.json +8 -4
  73. package/dist/cjs/src/lib/ep/EventApiClient.d.ts +0 -18
  74. package/dist/cjs/src/lib/ep/EventApiClient.js +0 -34
  75. package/dist/esm/src/lib/ep/EventApiClient.d.ts +0 -18
  76. package/dist/esm/src/lib/ep/EventApiClient.js +0 -30
@@ -5,6 +5,7 @@ exports.IdentityEvent = void 0;
5
5
  const base_event_1 = require("../base-event");
6
6
  const consts_1 = require("../consts");
7
7
  const utils_1 = require("@sitecore-cloudsdk/utils");
8
+ const consts_2 = require("../../consts");
8
9
  class IdentityEvent extends base_event_1.BaseEvent {
9
10
  /**
10
11
  * A class that extends from {@link BaseEvent} and has all the required functionality to send a VIEW event
@@ -12,17 +13,18 @@ class IdentityEvent extends base_event_1.BaseEvent {
12
13
  */
13
14
  constructor(args) {
14
15
  const { channel, currency, language, page } = args.eventData;
15
- super({ channel, currency, language, page }, args.settings, args.id);
16
+ super({ channel, currency, language, page }, args.id);
16
17
  this.extensionData = {};
17
18
  this.numberOfExtensionDataProperties = 0;
18
19
  this.validateAttributes(args.eventData);
19
20
  this.eventData = args.eventData;
20
- this.eventApiClient = args.eventApiClient;
21
+ this.sendEvent = args.sendEvent;
22
+ this.settings = args.settings;
21
23
  if (args.extensionData)
22
24
  this.extensionData = (0, utils_1.flattenObject)({ object: args.extensionData });
23
25
  this.numberOfExtensionDataProperties = Object.entries(this.extensionData).length;
24
26
  if (this.numberOfExtensionDataProperties > consts_1.MAX_EXT_ATTRIBUTES)
25
- throw new Error(`[IV-0005] This event supports maximum ${consts_1.MAX_EXT_ATTRIBUTES} attributes. Reduce the number of attributes.`);
27
+ throw new Error(consts_2.ErrorMessages.IV_0005);
26
28
  }
27
29
  /**
28
30
  * Function that validates the identifiers object, email and date attributes for CDN users
@@ -30,15 +32,15 @@ class IdentityEvent extends base_event_1.BaseEvent {
30
32
  */
31
33
  validateAttributes(eventData) {
32
34
  if (eventData.identifiers.length === 0)
33
- throw new Error(`[MV-0003] "identifiers" is required.`);
35
+ throw new Error(consts_2.ErrorMessages.MV_0003);
34
36
  if (eventData.dob !== undefined && !(0, utils_1.isShortISODateString)(eventData.dob))
35
- throw new Error(`[IV-0002] Incorrect value for "dob". Format the value according to ISO 8601.`);
37
+ throw new Error(consts_2.ErrorMessages.IV_0002);
36
38
  eventData.identifiers.forEach((identifier) => {
37
39
  if (identifier.expiryDate && !(0, utils_1.isShortISODateString)(identifier.expiryDate))
38
- throw new Error(`[IV-0004] Incorrect value for "expiryDate". Format the value according to ISO 8601.`);
40
+ throw new Error(consts_2.ErrorMessages.IV_0004);
39
41
  });
40
42
  if (eventData.email && !(0, utils_1.isValidEmail)(eventData.email))
41
- throw new Error(`[IV-0003] Incorrect value for "email". Set the value to a valid email address.`);
43
+ throw new Error(consts_2.ErrorMessages.IV_0003);
42
44
  }
43
45
  /**
44
46
  * A function that maps the identity event input data with the payload sent to the API
@@ -82,7 +84,7 @@ class IdentityEvent extends base_event_1.BaseEvent {
82
84
  const baseAttr = this.mapBaseEventPayload();
83
85
  const eventAttrs = this.mapAttributes();
84
86
  const fetchBody = Object.assign({}, eventAttrs, baseAttr);
85
- return await this.eventApiClient.send(fetchBody);
87
+ return await this.sendEvent(fetchBody, this.settings);
86
88
  }
87
89
  }
88
90
  exports.IdentityEvent = IdentityEvent;
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
- // © Sitecore Corporation A/S. All rights reserved. Sitecore® is a registered trademark of Sitecore Corporation A/S.
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.identity = void 0;
5
- const initializer_1 = require("../../initializer/browser/initializer");
4
+ const core_1 = require("@sitecore-cloudsdk/core");
6
5
  const identity_event_1 = require("./identity-event");
6
+ const initializer_1 = require("../../initializer/browser/initializer");
7
+ const sendEvent_1 = require("../send-event/sendEvent");
7
8
  /**
8
9
  * A function that sends an IDENTITY event to SitecoreCloud API
9
10
  * @param eventData - The required/optional attributes in order to be send to SitecoreCloud API
@@ -11,13 +12,15 @@ const identity_event_1 = require("./identity-event");
11
12
  * This object will be flattened and sent in the ext object of the payload
12
13
  * @returns The response object that Sitecore EP returns
13
14
  */
14
- function identity(eventData, extensionData) {
15
- const { eventApiClient, id, settings } = (0, initializer_1.getDependencies)();
15
+ async function identity(eventData, extensionData) {
16
+ await (0, initializer_1.awaitInit)();
17
+ const settings = (0, core_1.getSettings)();
18
+ const id = (0, core_1.getBrowserId)();
16
19
  return new identity_event_1.IdentityEvent({
17
- eventApiClient,
18
20
  eventData,
19
21
  extensionData,
20
22
  id,
23
+ sendEvent: sendEvent_1.sendEvent,
21
24
  settings,
22
25
  }).send();
23
26
  }
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.identityServer = void 0;
5
5
  const core_1 = require("@sitecore-cloudsdk/core");
6
- const initializer_1 = require("../../initializer/server/initializer");
7
6
  const identity_event_1 = require("./identity-event");
7
+ const sendEvent_1 = require("../send-event/sendEvent");
8
8
  /**
9
9
  * A function that sends an IDENTITY event to SitecoreCloud API
10
10
  * @param eventData - The required/optional attributes in order to be send to SitecoreCloud API
@@ -14,13 +14,13 @@ const identity_event_1 = require("./identity-event");
14
14
  * @returns The response object that Sitecore EP returns
15
15
  */
16
16
  function identityServer(eventData, request, extensionData) {
17
- const { eventApiClient, settings } = (0, initializer_1.getServerDependencies)();
17
+ const settings = (0, core_1.getSettingsServer)();
18
18
  const id = (0, core_1.getBrowserIdFromRequest)(request, settings.cookieSettings.cookieName);
19
19
  return new identity_event_1.IdentityEvent({
20
- eventApiClient,
21
20
  eventData,
22
21
  extensionData,
23
22
  id,
23
+ sendEvent: sendEvent_1.sendEvent,
24
24
  settings: settings,
25
25
  }).send();
26
26
  }
@@ -1,15 +1,16 @@
1
1
  import { EPResponse, Infer, Settings } from '@sitecore-cloudsdk/core';
2
2
  import { FlattenedObject, NestedObject } from '@sitecore-cloudsdk/utils';
3
3
  import { BaseEvent } from '../base-event';
4
- import { EventApiClient } from '../../ep/EventApiClient';
5
4
  import { EventAttributesInput } from '../common-interfaces';
5
+ import { SendEvent } from '../send-event/sendEvent';
6
6
  export declare class PageViewEvent extends BaseEvent {
7
7
  static isFirstPageView: boolean;
8
- private eventApiClient;
8
+ private sendEvent;
9
9
  private eventData;
10
10
  private extensionData;
11
11
  private urlSearchParams;
12
12
  private includeUTMParameters;
13
+ settings: Settings;
13
14
  /**
14
15
  * A class that extends from {@link BaseEvent} and has all the required functionality to send a VIEW event
15
16
  * @param args - Unified object containing the required properties
@@ -47,7 +48,7 @@ export declare class PageViewEvent extends BaseEvent {
47
48
  * Interface of the unified arguments object for page view event
48
49
  */
49
50
  export interface PageViewEventArguments {
50
- eventApiClient: EventApiClient;
51
+ sendEvent: SendEvent;
51
52
  eventData: PageViewEventInput;
52
53
  id: string;
53
54
  settings: Settings;
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
- // © Sitecore Corporation A/S. All rights reserved. Sitecore® is a registered trademark of Sitecore Corporation A/S.
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.PageViewEvent = void 0;
5
4
  const utils_1 = require("@sitecore-cloudsdk/utils");
6
5
  const base_event_1 = require("../base-event");
7
6
  const consts_1 = require("../consts");
7
+ const consts_2 = require("../../consts");
8
8
  class PageViewEvent extends base_event_1.BaseEvent {
9
9
  /**
10
10
  * A class that extends from {@link BaseEvent} and has all the required functionality to send a VIEW event
@@ -17,16 +17,17 @@ class PageViewEvent extends base_event_1.BaseEvent {
17
17
  currency,
18
18
  language,
19
19
  page,
20
- }, args.settings, args.id);
20
+ }, args.id);
21
21
  this.extensionData = {};
22
22
  this.eventData = args.eventData;
23
+ this.sendEvent = args.sendEvent;
24
+ this.settings = args.settings;
23
25
  this.urlSearchParams = new URLSearchParams(decodeURI(args.searchParams));
24
26
  if (args.extensionData)
25
27
  this.extensionData = (0, utils_1.flattenObject)({ object: args.extensionData });
26
28
  const numberOfExtensionDataProperties = Object.entries(this.extensionData).length;
27
29
  if (numberOfExtensionDataProperties > consts_1.MAX_EXT_ATTRIBUTES)
28
- throw new Error(`[IV-0005] This event supports maximum ${consts_1.MAX_EXT_ATTRIBUTES} attributes. Reduce the number of attributes.`);
29
- this.eventApiClient = args.eventApiClient;
30
+ throw new Error(consts_2.ErrorMessages.IV_0005);
30
31
  this.includeUTMParameters =
31
32
  args.eventData.includeUTMParameters === undefined ? true : args.eventData.includeUTMParameters;
32
33
  }
@@ -93,7 +94,7 @@ class PageViewEvent extends base_event_1.BaseEvent {
93
94
  const eventAttrs = this.mapAttributes();
94
95
  const fetchBody = Object.assign({}, eventAttrs, baseAttr);
95
96
  PageViewEvent.isFirstPageView = false;
96
- return await this.eventApiClient.send(fetchBody);
97
+ return await this.sendEvent(fetchBody, this.settings);
97
98
  }
98
99
  /**
99
100
  * Retrieves UTM parameters from the url query string
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.pageViewServer = void 0;
4
4
  // © Sitecore Corporation A/S. All rights reserved. Sitecore® is a registered trademark of Sitecore Corporation A/S.
5
5
  const core_1 = require("@sitecore-cloudsdk/core");
6
- const initializer_1 = require("../../initializer/server/initializer");
7
6
  const page_view_event_1 = require("./page-view-event");
7
+ const sendEvent_1 = require("../send-event/sendEvent");
8
8
  /**
9
9
  * A function that sends a VIEW event to SitecoreCloud API
10
10
  * @param eventData - The required/optional attributes in order to be send to SitecoreCloud API
@@ -14,16 +14,16 @@ const page_view_event_1 = require("./page-view-event");
14
14
  * @returns The response object that Sitecore EP returns
15
15
  */
16
16
  function pageViewServer(eventData, request, extensionData) {
17
- const { eventApiClient, settings } = (0, initializer_1.getServerDependencies)();
17
+ const settings = (0, core_1.getSettingsServer)();
18
18
  const id = (0, core_1.getBrowserIdFromRequest)(request, settings.cookieSettings.cookieName);
19
19
  // Host is irrelevant but necessary to support relative URL
20
20
  const requestUrl = new URL(request.url, `https://localhost`);
21
21
  return new page_view_event_1.PageViewEvent({
22
- eventApiClient,
23
22
  eventData,
24
23
  extensionData,
25
24
  id,
26
25
  searchParams: requestUrl.search,
26
+ sendEvent: sendEvent_1.sendEvent,
27
27
  settings,
28
28
  }).send();
29
29
  }
@@ -1,8 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.pageView = void 0;
4
- const initializer_1 = require("../../initializer/browser/initializer");
4
+ // © Sitecore Corporation A/S. All rights reserved. Sitecore® is a registered trademark of Sitecore Corporation A/S.
5
+ const core_1 = require("@sitecore-cloudsdk/core");
5
6
  const page_view_event_1 = require("./page-view-event");
7
+ const initializer_1 = require("../../initializer/browser/initializer");
8
+ const sendEvent_1 = require("../send-event/sendEvent");
6
9
  /**
7
10
  * A function that sends a VIEW event to SitecoreCloud API
8
11
  * @param eventData - The required/optional attributes in order to be send to SitecoreCloud API
@@ -10,14 +13,16 @@ const page_view_event_1 = require("./page-view-event");
10
13
  * This object will be flattened and sent in the ext object of the payload
11
14
  * @returns The response object that Sitecore EP returns
12
15
  */
13
- function pageView(eventData, extensionData) {
14
- const { eventApiClient, id, settings } = (0, initializer_1.getDependencies)();
16
+ async function pageView(eventData, extensionData) {
17
+ await (0, initializer_1.awaitInit)();
18
+ const settings = (0, core_1.getSettings)();
19
+ const id = (0, core_1.getBrowserId)();
15
20
  return new page_view_event_1.PageViewEvent({
16
- eventApiClient,
17
21
  eventData,
18
22
  extensionData,
19
23
  id,
20
24
  searchParams: window.location.search,
25
+ sendEvent: sendEvent_1.sendEvent,
21
26
  settings,
22
27
  }).send();
23
28
  }
@@ -0,0 +1,17 @@
1
+ import { EPResponse, Settings } from '@sitecore-cloudsdk/core';
2
+ import type { BasePayload, PageViewEventPayload, IdentityEventPayload, CustomEventPayload } from '..';
3
+ /**
4
+ * This factory function sends an event to Edge Proxy
5
+ * @param body - The event data to send
6
+ * @param settings - The global settings
7
+ */
8
+ export declare function sendEvent(body: EPFetchBody & BasePayload, settings: Settings): Promise<EPResponse | null>;
9
+ /**
10
+ * The type of sendEvent function
11
+ */
12
+ export type SendEvent = (body: EPFetchBody & BasePayload, settings: Settings) => Promise<EPResponse | null>;
13
+ /**
14
+ * The type describing all possible event payloads
15
+ */
16
+ type EPFetchBody = PageViewEventPayload | IdentityEventPayload | CustomEventPayload;
17
+ export {};
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sendEvent = void 0;
4
+ // © Sitecore Corporation A/S. All rights reserved. Sitecore® is a registered trademark of Sitecore Corporation A/S.
5
+ const core_1 = require("@sitecore-cloudsdk/core");
6
+ const consts_1 = require("../../consts");
7
+ /**
8
+ * This factory function sends an event to Edge Proxy
9
+ * @param body - The event data to send
10
+ * @param settings - The global settings
11
+ */
12
+ async function sendEvent(body, settings) {
13
+ const eventUrl = `${settings.sitecoreEdgeUrl}/events/${core_1.API_VERSION}/events?sitecoreContextId=${settings.sitecoreEdgeContextId}&siteId=${settings.siteName}`;
14
+ const fetchOptions = {
15
+ body: JSON.stringify(body),
16
+ headers: {
17
+ // eslint-disable-next-line @typescript-eslint/naming-convention
18
+ 'Content-Type': 'application/json',
19
+ // eslint-disable-next-line @typescript-eslint/naming-convention
20
+ 'X-Library-Version': consts_1.LIBRARY_VERSION,
21
+ },
22
+ method: 'POST',
23
+ };
24
+ return await fetch(eventUrl, fetchOptions)
25
+ .then((response) => response.json())
26
+ .then((data) => data)
27
+ .catch(() => null);
28
+ }
29
+ exports.sendEvent = sendEvent;
@@ -1,16 +1,18 @@
1
1
  "use strict";
2
- // © Sitecore Corporation A/S. All rights reserved. Sitecore® is a registered trademark of Sitecore Corporation A/S.
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.getGuestId = void 0;
5
- const core_1 = require("@sitecore-cloudsdk/core");
4
+ // © Sitecore Corporation A/S. All rights reserved. Sitecore® is a registered trademark of Sitecore Corporation A/S.
6
5
  const initializer_1 = require("../initializer/browser/initializer");
6
+ const core_1 = require("@sitecore-cloudsdk/core");
7
7
  /**
8
8
  * A function that returns the guest id.
9
9
  * @returns - A promise that resolves with the guest id
10
10
  * @throws - Will throw an error if the clientKey/browser id is invalid
11
11
  */
12
- function getGuestId() {
13
- const { id, settings } = (0, initializer_1.getDependencies)();
12
+ async function getGuestId() {
13
+ await (0, initializer_1.awaitInit)();
14
+ const settings = (0, core_1.getSettings)();
15
+ const id = (0, core_1.getBrowserId)();
14
16
  return (0, core_1.getGuestId)(id, settings.sitecoreEdgeContextId, settings.sitecoreEdgeUrl);
15
17
  }
16
18
  exports.getGuestId = getGuestId;
@@ -1,25 +1,12 @@
1
- import { EventApiClient } from '../../ep/EventApiClient';
2
- import { Settings, SettingsParamsBrowser } from '@sitecore-cloudsdk/core';
3
- import { EventQueue } from '../../eventStorage/eventStorage';
4
- export declare function setDependencies(settings: BrowserEventsSettings | null): void;
5
- /**
6
- * Retrieves the browser event settings object.
7
- *
8
- * This function ensures that the browser event settings have been initialized and contain essential properties like `settings`, `eventQueue`, and `eventApiClient`.
9
- *
10
- * @returns The browser event settings object.
11
- * @throws Error if the event settings haven't been initialized with the required properties.
12
- */
13
- export declare function getDependencies(): BrowserEventsSettings;
14
- export interface BrowserEventsSettings {
15
- id: string;
16
- settings: Settings;
17
- eventQueue: EventQueue;
18
- eventApiClient: EventApiClient;
19
- }
1
+ import { SettingsParamsBrowser } from '@sitecore-cloudsdk/core';
2
+ export declare let initPromise: Promise<void> | null;
20
3
  /**
21
4
  * Initiates the Events library using the global settings added by the developer
22
5
  * @param settingsInput - Global settings added by the developer
23
6
  * @returns A promise that resolves with an object that handles the library functionality
24
7
  */
25
8
  export declare function init(settingsInput: SettingsParamsBrowser): Promise<void>;
9
+ /**
10
+ * A function that handles the async browser init logic. Throws an error or awaits the promise.
11
+ */
12
+ export declare function awaitInit(): Promise<void>;
@@ -1,53 +1,26 @@
1
1
  "use strict";
2
- // © Sitecore Corporation A/S. All rights reserved. Sitecore® is a registered trademark of Sitecore Corporation A/S.
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.init = exports.getDependencies = exports.setDependencies = void 0;
5
- const EventApiClient_1 = require("../../ep/EventApiClient");
3
+ exports.awaitInit = exports.init = exports.initPromise = void 0;
4
+ // © Sitecore Corporation A/S. All rights reserved. Sitecore® is a registered trademark of Sitecore Corporation A/S.
6
5
  const core_1 = require("@sitecore-cloudsdk/core");
7
6
  const consts_1 = require("../../consts");
8
- const eventStorage_1 = require("../../eventStorage/eventStorage");
9
- let dependencies = null;
10
- function setDependencies(settings) {
11
- dependencies = settings;
12
- }
13
- exports.setDependencies = setDependencies;
14
- /**
15
- * Retrieves the browser event settings object.
16
- *
17
- * This function ensures that the browser event settings have been initialized and contain essential properties like `settings`, `eventQueue`, and `eventApiClient`.
18
- *
19
- * @returns The browser event settings object.
20
- * @throws Error if the event settings haven't been initialized with the required properties.
21
- */
22
- function getDependencies() {
23
- if (!dependencies) {
24
- throw Error(`[IE-0004] You must first initialize the "events/browser" module. Run the "init" function.`);
25
- }
26
- return dependencies;
27
- }
28
- exports.getDependencies = getDependencies;
7
+ exports.initPromise = null;
29
8
  /**
30
9
  * Initiates the Events library using the global settings added by the developer
31
10
  * @param settingsInput - Global settings added by the developer
32
11
  * @returns A promise that resolves with an object that handles the library functionality
33
12
  */
34
13
  async function init(settingsInput) {
35
- if (typeof window === 'undefined') {
36
- throw new Error(
37
- // eslint-disable-next-line max-len
38
- `[IE-0001] The "window" object is not available on the server side. Use the "window" object only on the client side, and in the correct execution context.`);
14
+ if (typeof window === 'undefined')
15
+ throw new Error(consts_1.ErrorMessages.IE_0001);
16
+ try {
17
+ exports.initPromise = (0, core_1.initCore)(settingsInput);
18
+ await exports.initPromise;
19
+ }
20
+ catch (error) {
21
+ exports.initPromise = null;
22
+ throw new Error(error);
39
23
  }
40
- await (0, core_1.initCore)(settingsInput);
41
- const settings = (0, core_1.getSettings)();
42
- const id = (0, core_1.getBrowserId)();
43
- const eventApiClient = new EventApiClient_1.EventApiClient(settings.sitecoreEdgeUrl, settingsInput.sitecoreEdgeContextId, settingsInput.siteName);
44
- const eventQueue = new eventStorage_1.EventQueue(sessionStorage, eventApiClient);
45
- setDependencies({
46
- eventApiClient,
47
- eventQueue,
48
- id,
49
- settings,
50
- });
51
24
  window.Engage = {
52
25
  ...window.Engage,
53
26
  getBrowserId: () => (0, core_1.getBrowserId)(),
@@ -58,3 +31,12 @@ async function init(settingsInput) {
58
31
  };
59
32
  }
60
33
  exports.init = init;
34
+ /**
35
+ * A function that handles the async browser init logic. Throws an error or awaits the promise.
36
+ */
37
+ async function awaitInit() {
38
+ if (exports.initPromise === null)
39
+ throw new Error(consts_1.ErrorMessages.IE_0004);
40
+ await exports.initPromise;
41
+ }
42
+ exports.awaitInit = awaitInit;
@@ -1,23 +1,8 @@
1
- import { Settings, SettingsParamsServer } from '@sitecore-cloudsdk/core';
2
- import { EventApiClient } from '../../ep/EventApiClient';
1
+ import { SettingsParamsServer } from '@sitecore-cloudsdk/core';
3
2
  import { HttpResponse, MiddlewareNextResponse, Request } from '@sitecore-cloudsdk/utils';
4
- export declare function setServerDependencies(settings: ServerEventsSettings | null): void;
5
- /**
6
- * Retrieves the server event settings object.
7
- *
8
- * This function ensures that the server event settings have been initialized and contain essential properties like `settings` and `eventApiClient`.
9
- *
10
- * @returns The server event settings object.
11
- * @throws Error if the server event settings haven't been initialized with the required properties.
12
- */
13
- export declare function getServerDependencies(): ServerEventsSettings;
14
3
  /**
15
4
  * Initiates the server Events library using the global settings added by the developer
16
5
  * @param settings - Global settings added by the developer
17
6
  * @returns A promise that resolves with an object that handles the library functionality
18
7
  */
19
8
  export declare function initServer<Response extends MiddlewareNextResponse | HttpResponse>(settingsInput: SettingsParamsServer, request: Request, response: Response): Promise<void>;
20
- export interface ServerEventsSettings {
21
- settings: Settings;
22
- eventApiClient: EventApiClient;
23
- }
@@ -1,29 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.initServer = exports.getServerDependencies = exports.setServerDependencies = void 0;
3
+ exports.initServer = void 0;
4
4
  // © Sitecore Corporation A/S. All rights reserved. Sitecore® is a registered trademark of Sitecore Corporation A/S.
5
5
  const core_1 = require("@sitecore-cloudsdk/core");
6
- const EventApiClient_1 = require("../../ep/EventApiClient");
7
- let serverDependencies = null;
8
- function setServerDependencies(settings) {
9
- serverDependencies = settings;
10
- }
11
- exports.setServerDependencies = setServerDependencies;
12
- /**
13
- * Retrieves the server event settings object.
14
- *
15
- * This function ensures that the server event settings have been initialized and contain essential properties like `settings` and `eventApiClient`.
16
- *
17
- * @returns The server event settings object.
18
- * @throws Error if the server event settings haven't been initialized with the required properties.
19
- */
20
- function getServerDependencies() {
21
- if (!serverDependencies) {
22
- throw Error(`[IE-0005] You must first initialize the "events/server" module. Run the "init" function.`);
23
- }
24
- return serverDependencies;
25
- }
26
- exports.getServerDependencies = getServerDependencies;
27
6
  /**
28
7
  * Initiates the server Events library using the global settings added by the developer
29
8
  * @param settings - Global settings added by the developer
@@ -31,11 +10,5 @@ exports.getServerDependencies = getServerDependencies;
31
10
  */
32
11
  async function initServer(settingsInput, request, response) {
33
12
  await (0, core_1.initCoreServer)(settingsInput, request, response);
34
- const settings = (0, core_1.getSettingsServer)();
35
- const eventApiClient = new EventApiClient_1.EventApiClient(settings.sitecoreEdgeUrl, settings.sitecoreEdgeContextId, settings.siteName);
36
- setServerDependencies({
37
- eventApiClient,
38
- settings,
39
- });
40
13
  }
41
14
  exports.initServer = initServer;
@@ -4,4 +4,3 @@ export { identityServer as identity } from './lib/events/identity/identityServer
4
4
  export { pageViewServer as pageView } from './lib/events/page-view/page-view-server';
5
5
  export { LIBRARY_VERSION } from './lib/consts';
6
6
  export type { PageViewEventInput, CustomEventInput, IdentityEventAttributesInput } from './lib/events';
7
- export type { ServerEventsSettings as EventsSettings } from './lib/initializer/server/initializer';