@sitecore-cloudsdk/core 0.1.0-rc.4 → 0.1.0

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 (54) hide show
  1. package/README.md +2 -8
  2. package/dist/cjs/package.json +1 -1
  3. package/dist/cjs/src/index.d.ts +2 -2
  4. package/dist/cjs/src/index.js +4 -4
  5. package/dist/cjs/src/lib/consts.d.ts +1 -1
  6. package/dist/cjs/src/lib/consts.js +2 -2
  7. package/dist/cjs/src/lib/cookie/create-cookie.d.ts +0 -1
  8. package/dist/cjs/src/lib/cookie/create-cookie.js +7 -8
  9. package/dist/cjs/src/lib/cookie/get-browser-id-from-request.js +4 -4
  10. package/dist/cjs/src/lib/cookie/handle-http-cookie.d.ts +3 -2
  11. package/dist/cjs/src/lib/cookie/handle-http-cookie.js +10 -4
  12. package/dist/cjs/src/lib/cookie/handle-next-js-middleware-cookie.d.ts +4 -4
  13. package/dist/cjs/src/lib/cookie/handle-next-js-middleware-cookie.js +12 -5
  14. package/dist/cjs/src/lib/cookie/handle-server-cookie.d.ts +1 -1
  15. package/dist/cjs/src/lib/cookie/handle-server-cookie.js +3 -9
  16. package/dist/cjs/src/lib/init/construct-get-browser-id-url.d.ts +7 -0
  17. package/dist/cjs/src/lib/init/{construct-get-proxy-settings-url.js → construct-get-browser-id-url.js} +5 -4
  18. package/dist/cjs/src/lib/init/fetch-browser-id-from-edge-proxy.d.ts +9 -0
  19. package/dist/cjs/src/lib/init/fetch-browser-id-from-edge-proxy.js +36 -0
  20. package/dist/cjs/src/lib/interfaces.d.ts +0 -1
  21. package/dist/cjs/src/lib/settings/create-settings.js +1 -1
  22. package/dist/cjs/src/lib/settings/interfaces.d.ts +1 -1
  23. package/dist/cjs/src/lib/settings/validate-settings.js +1 -1
  24. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  25. package/dist/esm/package.json +1 -1
  26. package/dist/esm/src/index.d.ts +2 -2
  27. package/dist/esm/src/index.js +2 -2
  28. package/dist/esm/src/lib/consts.d.ts +1 -1
  29. package/dist/esm/src/lib/consts.js +1 -1
  30. package/dist/esm/src/lib/cookie/create-cookie.d.ts +0 -1
  31. package/dist/esm/src/lib/cookie/create-cookie.js +7 -8
  32. package/dist/esm/src/lib/cookie/get-browser-id-from-request.js +4 -4
  33. package/dist/esm/src/lib/cookie/handle-http-cookie.d.ts +3 -2
  34. package/dist/esm/src/lib/cookie/handle-http-cookie.js +10 -4
  35. package/dist/esm/src/lib/cookie/handle-next-js-middleware-cookie.d.ts +4 -4
  36. package/dist/esm/src/lib/cookie/handle-next-js-middleware-cookie.js +12 -5
  37. package/dist/esm/src/lib/cookie/handle-server-cookie.d.ts +1 -1
  38. package/dist/esm/src/lib/cookie/handle-server-cookie.js +3 -9
  39. package/dist/esm/src/lib/init/construct-get-browser-id-url.d.ts +7 -0
  40. package/dist/esm/src/lib/init/{construct-get-proxy-settings-url.js → construct-get-browser-id-url.js} +3 -2
  41. package/dist/esm/src/lib/init/fetch-browser-id-from-edge-proxy.d.ts +9 -0
  42. package/dist/esm/src/lib/init/fetch-browser-id-from-edge-proxy.js +32 -0
  43. package/dist/esm/src/lib/interfaces.d.ts +0 -1
  44. package/dist/esm/src/lib/settings/create-settings.js +2 -2
  45. package/dist/esm/src/lib/settings/interfaces.d.ts +1 -1
  46. package/dist/esm/src/lib/settings/validate-settings.js +1 -1
  47. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  48. package/package.json +1 -1
  49. package/dist/cjs/src/lib/init/construct-get-proxy-settings-url.d.ts +0 -6
  50. package/dist/cjs/src/lib/init/get-proxy-settings.d.ts +0 -8
  51. package/dist/cjs/src/lib/init/get-proxy-settings.js +0 -35
  52. package/dist/esm/src/lib/init/construct-get-proxy-settings-url.d.ts +0 -6
  53. package/dist/esm/src/lib/init/get-proxy-settings.d.ts +0 -8
  54. package/dist/esm/src/lib/init/get-proxy-settings.js +0 -31
package/README.md CHANGED
@@ -1,11 +1,5 @@
1
1
  # core
2
2
 
3
- This library was generated with [Nx](https://nx.dev).
3
+ © Sitecore Corporation A/S. All rights reserved. Sitecore© is a registered trademark of Sitecore Corporation A/S.
4
4
 
5
- ## Building
6
-
7
- Run `nx build core` to build the library.
8
-
9
- ## Running unit tests
10
-
11
- Run `nx test core` to execute the unit tests via [Jest](https://jestjs.io).
5
+ This is an internal package used by other Sitecore Cloud SDK packages.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sitecore-cloudsdk/core",
3
- "version": "0.1.0-rc.4",
3
+ "version": "0.1.0",
4
4
  "license": "Apache-2.0",
5
5
  "main": "dist/cjs/src/index.js",
6
6
  "module": "dist/esm/src/index.js",
@@ -5,7 +5,7 @@ export { handleHttpCookie } from './lib/cookie/handle-http-cookie';
5
5
  export { handleNextJsMiddlewareCookie } from './lib/cookie/handle-next-js-middleware-cookie';
6
6
  export { handleServerCookie } from './lib/cookie/handle-server-cookie';
7
7
  export { getBrowserId } from './lib/init/get-browser-id';
8
- export { getProxySettings } from './lib/init/get-proxy-settings';
8
+ export { fetchBrowserIdFromEdgeProxy } from './lib/init/fetch-browser-id-from-edge-proxy';
9
9
  export { getGuestId } from './lib/init/get-guest-id';
10
10
  export { createSettings } from './lib/settings/create-settings';
11
11
  export { getSettings, initCore } from './lib/init/init-core';
@@ -13,6 +13,6 @@ export { getSettingsServer, initCoreServer } from './lib/init/init-core-server';
13
13
  export { validateSettings } from './lib/settings/validate-settings';
14
14
  export { language, pageName } from './lib/infer/infer';
15
15
  export { getBrowserIdFromRequest } from './lib/cookie/get-browser-id-from-request';
16
- export { API_VERSION, BID_PREFIX, DAILY_SECONDS, DEFAULT_COOKIE_EXPIRY_DAYS, LIBRARY_VERSION, SITECORE_EDGE_URL, } from './lib/consts';
16
+ export { API_VERSION, COOKIE_NAME_PREFIX, DAILY_SECONDS, DEFAULT_COOKIE_EXPIRY_DAYS, LIBRARY_VERSION, SITECORE_EDGE_URL, } from './lib/consts';
17
17
  export type { ICdpResponse, IInfer } from './lib/interfaces';
18
18
  export type { ICookieSettings, ISettings, ISettingsParamsBrowser, ISettingsParamsServer, IWebExperiencesSettings, IWebPersonalizationConfig, } from './lib/settings/interfaces';
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  // © Sitecore Corporation A/S. All rights reserved. Sitecore® is a registered trademark of Sitecore Corporation A/S.
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.SITECORE_EDGE_URL = exports.LIBRARY_VERSION = exports.DEFAULT_COOKIE_EXPIRY_DAYS = exports.DAILY_SECONDS = exports.BID_PREFIX = exports.API_VERSION = exports.getBrowserIdFromRequest = exports.pageName = exports.language = exports.validateSettings = exports.initCoreServer = exports.getSettingsServer = exports.initCore = exports.getSettings = exports.createSettings = exports.getGuestId = exports.getProxySettings = exports.getBrowserId = exports.handleServerCookie = exports.handleNextJsMiddlewareCookie = exports.handleHttpCookie = exports.getDefaultCookieAttributes = exports.getBrowserIdFromMiddlewareRequest = exports.createCookie = void 0;
4
+ exports.SITECORE_EDGE_URL = exports.LIBRARY_VERSION = exports.DEFAULT_COOKIE_EXPIRY_DAYS = exports.DAILY_SECONDS = exports.COOKIE_NAME_PREFIX = exports.API_VERSION = exports.getBrowserIdFromRequest = exports.pageName = exports.language = exports.validateSettings = exports.initCoreServer = exports.getSettingsServer = exports.initCore = exports.getSettings = exports.createSettings = exports.getGuestId = exports.fetchBrowserIdFromEdgeProxy = exports.getBrowserId = exports.handleServerCookie = exports.handleNextJsMiddlewareCookie = exports.handleHttpCookie = exports.getDefaultCookieAttributes = exports.getBrowserIdFromMiddlewareRequest = exports.createCookie = void 0;
5
5
  var create_cookie_1 = require("./lib/cookie/create-cookie");
6
6
  Object.defineProperty(exports, "createCookie", { enumerable: true, get: function () { return create_cookie_1.createCookie; } });
7
7
  var get_browser_id_from_middleware_request_1 = require("./lib/cookie/get-browser-id-from-middleware-request");
@@ -16,8 +16,8 @@ var handle_server_cookie_1 = require("./lib/cookie/handle-server-cookie");
16
16
  Object.defineProperty(exports, "handleServerCookie", { enumerable: true, get: function () { return handle_server_cookie_1.handleServerCookie; } });
17
17
  var get_browser_id_1 = require("./lib/init/get-browser-id");
18
18
  Object.defineProperty(exports, "getBrowserId", { enumerable: true, get: function () { return get_browser_id_1.getBrowserId; } });
19
- var get_proxy_settings_1 = require("./lib/init/get-proxy-settings");
20
- Object.defineProperty(exports, "getProxySettings", { enumerable: true, get: function () { return get_proxy_settings_1.getProxySettings; } });
19
+ var fetch_browser_id_from_edge_proxy_1 = require("./lib/init/fetch-browser-id-from-edge-proxy");
20
+ Object.defineProperty(exports, "fetchBrowserIdFromEdgeProxy", { enumerable: true, get: function () { return fetch_browser_id_from_edge_proxy_1.fetchBrowserIdFromEdgeProxy; } });
21
21
  var get_guest_id_1 = require("./lib/init/get-guest-id");
22
22
  Object.defineProperty(exports, "getGuestId", { enumerable: true, get: function () { return get_guest_id_1.getGuestId; } });
23
23
  var create_settings_1 = require("./lib/settings/create-settings");
@@ -37,7 +37,7 @@ var get_browser_id_from_request_1 = require("./lib/cookie/get-browser-id-from-re
37
37
  Object.defineProperty(exports, "getBrowserIdFromRequest", { enumerable: true, get: function () { return get_browser_id_from_request_1.getBrowserIdFromRequest; } });
38
38
  var consts_1 = require("./lib/consts");
39
39
  Object.defineProperty(exports, "API_VERSION", { enumerable: true, get: function () { return consts_1.API_VERSION; } });
40
- Object.defineProperty(exports, "BID_PREFIX", { enumerable: true, get: function () { return consts_1.BID_PREFIX; } });
40
+ Object.defineProperty(exports, "COOKIE_NAME_PREFIX", { enumerable: true, get: function () { return consts_1.COOKIE_NAME_PREFIX; } });
41
41
  Object.defineProperty(exports, "DAILY_SECONDS", { enumerable: true, get: function () { return consts_1.DAILY_SECONDS; } });
42
42
  Object.defineProperty(exports, "DEFAULT_COOKIE_EXPIRY_DAYS", { enumerable: true, get: function () { return consts_1.DEFAULT_COOKIE_EXPIRY_DAYS; } });
43
43
  Object.defineProperty(exports, "LIBRARY_VERSION", { enumerable: true, get: function () { return consts_1.LIBRARY_VERSION; } });
@@ -1,5 +1,5 @@
1
1
  export declare const LIBRARY_VERSION: string;
2
- export declare const BID_PREFIX = "bid_";
2
+ export declare const COOKIE_NAME_PREFIX = "sc_";
3
3
  export declare const DEFAULT_COOKIE_EXPIRY_DAYS = 730;
4
4
  export declare const DAILY_SECONDS = 86400;
5
5
  export declare const API_VERSION = "v1.2";
@@ -4,11 +4,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  return (mod && mod.__esModule) ? mod : { "default": mod };
5
5
  };
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.SITECORE_EDGE_URL = exports.API_VERSION = exports.DAILY_SECONDS = exports.DEFAULT_COOKIE_EXPIRY_DAYS = exports.BID_PREFIX = exports.LIBRARY_VERSION = void 0;
7
+ exports.SITECORE_EDGE_URL = exports.API_VERSION = exports.DAILY_SECONDS = exports.DEFAULT_COOKIE_EXPIRY_DAYS = exports.COOKIE_NAME_PREFIX = exports.LIBRARY_VERSION = void 0;
8
8
  /* eslint-disable @typescript-eslint/naming-convention */
9
9
  const package_json_1 = __importDefault(require("../../package.json"));
10
10
  exports.LIBRARY_VERSION = package_json_1.default.version;
11
- exports.BID_PREFIX = 'bid_';
11
+ exports.COOKIE_NAME_PREFIX = 'sc_';
12
12
  exports.DEFAULT_COOKIE_EXPIRY_DAYS = 730;
13
13
  exports.DAILY_SECONDS = 86400;
14
14
  exports.API_VERSION = 'v1.2';
@@ -1,7 +1,6 @@
1
1
  import { ISettings } from '../settings/interfaces';
2
2
  /**
3
3
  * Creates and adds the cookie to the document
4
- * @param sitecoreEdgeContextId - The sitecoreEdgeContextId from global settings
5
4
  * @param settings - The ICookieSettings settings object
6
5
  * @returns - browserId or undefined on error
7
6
  */
@@ -4,20 +4,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.createCookie = void 0;
5
5
  const utils_1 = require("@sitecore-cloudsdk/utils");
6
6
  const get_default_cookie_attributes_1 = require("./get-default-cookie-attributes");
7
- const get_proxy_settings_1 = require("../init/get-proxy-settings");
8
- const consts_1 = require("../consts");
7
+ const fetch_browser_id_from_edge_proxy_1 = require("../init/fetch-browser-id-from-edge-proxy");
9
8
  /**
10
9
  * Creates and adds the cookie to the document
11
- * @param sitecoreEdgeContextId - The sitecoreEdgeContextId from global settings
12
10
  * @param settings - The ICookieSettings settings object
13
11
  * @returns - browserId or undefined on error
14
12
  */
15
13
  async function createCookie(settings) {
16
- const { browserId, clientKey } = await (0, get_proxy_settings_1.getProxySettings)(settings.sitecoreEdgeContextId, settings.sitecoreEdgeUrl);
17
- settings.cookieSettings.cookieName = `${consts_1.BID_PREFIX}${clientKey}`;
18
- if ((0, utils_1.cookieExists)(window.document.cookie, settings.cookieSettings.cookieName) || !browserId)
14
+ if ((0, utils_1.cookieExists)(window.document.cookie, settings.cookieSettings.cookieName))
19
15
  return;
20
- const attributes = (0, get_default_cookie_attributes_1.getDefaultCookieAttributes)(settings.cookieSettings.cookieExpiryDays, settings.cookieSettings.cookieDomain);
21
- document.cookie = (0, utils_1.createCookieString)(settings.cookieSettings.cookieName, browserId, attributes);
16
+ const { browserId } = await (0, fetch_browser_id_from_edge_proxy_1.fetchBrowserIdFromEdgeProxy)(settings.sitecoreEdgeUrl, settings.sitecoreEdgeContextId);
17
+ if (browserId) {
18
+ const attributes = (0, get_default_cookie_attributes_1.getDefaultCookieAttributes)(settings.cookieSettings.cookieExpiryDays, settings.cookieSettings.cookieDomain);
19
+ document.cookie = (0, utils_1.createCookieString)(settings.cookieSettings.cookieName, browserId, attributes);
20
+ }
22
21
  }
23
22
  exports.createCookie = createCookie;
@@ -12,14 +12,14 @@ const get_browser_id_from_middleware_request_1 = require("./get-browser-id-from-
12
12
  * @returns The browser ID extracted from the cookie or an empty string if not found.
13
13
  */
14
14
  function getBrowserIdFromRequest(request, cookieName) {
15
- let bid = undefined;
15
+ let browserId = undefined;
16
16
  if ((0, utils_1.isNextJsMiddlewareRequest)(request)) {
17
- bid = (0, get_browser_id_from_middleware_request_1.getBrowserIdFromMiddlewareRequest)(request, cookieName);
17
+ browserId = (0, get_browser_id_from_middleware_request_1.getBrowserIdFromMiddlewareRequest)(request, cookieName);
18
18
  }
19
19
  else if ((0, utils_1.isHttpRequest)(request)) {
20
20
  const cookieHeader = request.headers.cookie;
21
- bid = (0, utils_1.getCookieServerSide)(cookieHeader, cookieName)?.value;
21
+ browserId = (0, utils_1.getCookieServerSide)(cookieHeader, cookieName)?.value;
22
22
  }
23
- return bid ?? '';
23
+ return browserId ?? '';
24
24
  }
25
25
  exports.getBrowserIdFromRequest = getBrowserIdFromRequest;
@@ -4,10 +4,11 @@ import { ISettings } from '../settings/interfaces';
4
4
  * Handles HTTP Cookie operations for setting the browser ID cookie in the request and response.
5
5
  *
6
6
  * @param request - The HTTP Request object containing request headers and data.
7
+ * @param response - The HTTP Response object.
7
8
  * @param options - The settings object containing configuration options.
8
- * @param response - The Middleware Next Response or HTTP Response object.
9
+ * @param timeout - The timeout for the call to proxy to get browserId.
9
10
  * @returns A Promise that resolves once the browser ID cookie is handled.
10
11
  *
11
12
  * @throws [IE-0003] - This exception is thrown in the case getBrowserIdFromCdp wasn't able to retrieve a browser id.
12
13
  */
13
- export declare function handleHttpCookie(request: IHttpRequest, response: IHttpResponse, options: ISettings, cookieTempValue: string): void;
14
+ export declare function handleHttpCookie(request: IHttpRequest, response: IHttpResponse, options: ISettings, timeout?: number): Promise<void>;
@@ -4,17 +4,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.handleHttpCookie = void 0;
5
5
  const get_default_cookie_attributes_1 = require("./get-default-cookie-attributes");
6
6
  const utils_1 = require("@sitecore-cloudsdk/utils");
7
+ const fetch_browser_id_from_edge_proxy_1 = require("../init/fetch-browser-id-from-edge-proxy");
7
8
  /**
8
9
  * Handles HTTP Cookie operations for setting the browser ID cookie in the request and response.
9
10
  *
10
11
  * @param request - The HTTP Request object containing request headers and data.
12
+ * @param response - The HTTP Response object.
11
13
  * @param options - The settings object containing configuration options.
12
- * @param response - The Middleware Next Response or HTTP Response object.
14
+ * @param timeout - The timeout for the call to proxy to get browserId.
13
15
  * @returns A Promise that resolves once the browser ID cookie is handled.
14
16
  *
15
17
  * @throws [IE-0003] - This exception is thrown in the case getBrowserIdFromCdp wasn't able to retrieve a browser id.
16
18
  */
17
- function handleHttpCookie(request, response, options, cookieTempValue) {
19
+ async function handleHttpCookie(request, response, options, timeout) {
18
20
  const { cookieName } = options.cookieSettings;
19
21
  const cookieValueFromRequest = request.headers.cookie;
20
22
  let cookie;
@@ -24,8 +26,12 @@ function handleHttpCookie(request, response, options, cookieTempValue) {
24
26
  if (cookie)
25
27
  cookieValue = cookie.value;
26
28
  }
27
- if (!cookieValue)
28
- cookieValue = cookieTempValue;
29
+ if (!cookieValue) {
30
+ const { browserId } = await (0, fetch_browser_id_from_edge_proxy_1.fetchBrowserIdFromEdgeProxy)(options.sitecoreEdgeUrl, options.sitecoreEdgeContextId, timeout);
31
+ if (!browserId)
32
+ throw new Error('[IE-0003] Unable to set the cookie because the browser ID could not be retrieved from the server. Try again later, or use try-catch blocks to handle this error.');
33
+ cookieValue = browserId;
34
+ }
29
35
  const defaultCookieAttributes = (0, get_default_cookie_attributes_1.getDefaultCookieAttributes)(options.cookieSettings.cookieExpiryDays, options.cookieSettings.cookieDomain);
30
36
  const cookieString = (0, utils_1.createCookieString)(cookieName, cookieValue, defaultCookieAttributes);
31
37
  if (!cookie)
@@ -2,15 +2,15 @@ import { IMiddlewareNextResponse, IMiddlewareRequest } from '@sitecore-cloudsdk/
2
2
  import { ISettings } from '../settings/interfaces';
3
3
  /**
4
4
  * Handles the Middleware Request and sets a cookie with the provided 'cookieName' and 'cookieValue'.
5
- * If 'cookieValue' is not present in the request, it fetches it using the 'getProxySettings' function
5
+ * If 'cookieValue' is not present in the request, it fetches it using the 'fetchBrowserIdFromEdgeProxy' function
6
6
  * and stores it in the request's cookies with the specified 'defaultCookieAttributes'.
7
7
  *
8
8
  * @param request - The Middleware Request object.
9
- * @param cookieName - The name of the cookie to set.
9
+ * @param response - The Middleware Response object.
10
10
  * @param options - The settings object containing configuration options.
11
11
  * @param defaultCookieAttributes - The default attributes for the cookie.
12
12
  *
13
- * @throws [IE-0003] - This exception is thrown in the case getProxySettings wasn't able to retrieve a browser id and client key.
13
+ * @throws [IE-0003] - This exception is thrown in the case fetchBrowserIdFromEdgeProxy wasn't able to retrieve a browserId.
14
14
  *
15
15
  */
16
- export declare function handleNextJsMiddlewareCookie(request: IMiddlewareRequest, response: IMiddlewareNextResponse, options: ISettings, cookieTempValue: string): void;
16
+ export declare function handleNextJsMiddlewareCookie(request: IMiddlewareRequest, response: IMiddlewareNextResponse, options: ISettings, timeout?: number): Promise<void>;
@@ -4,22 +4,29 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.handleNextJsMiddlewareCookie = void 0;
5
5
  const get_browser_id_from_middleware_request_1 = require("./get-browser-id-from-middleware-request");
6
6
  const get_default_cookie_attributes_1 = require("./get-default-cookie-attributes");
7
+ const fetch_browser_id_from_edge_proxy_1 = require("../init/fetch-browser-id-from-edge-proxy");
7
8
  /**
8
9
  * Handles the Middleware Request and sets a cookie with the provided 'cookieName' and 'cookieValue'.
9
- * If 'cookieValue' is not present in the request, it fetches it using the 'getProxySettings' function
10
+ * If 'cookieValue' is not present in the request, it fetches it using the 'fetchBrowserIdFromEdgeProxy' function
10
11
  * and stores it in the request's cookies with the specified 'defaultCookieAttributes'.
11
12
  *
12
13
  * @param request - The Middleware Request object.
13
- * @param cookieName - The name of the cookie to set.
14
+ * @param response - The Middleware Response object.
14
15
  * @param options - The settings object containing configuration options.
15
16
  * @param defaultCookieAttributes - The default attributes for the cookie.
16
17
  *
17
- * @throws [IE-0003] - This exception is thrown in the case getProxySettings wasn't able to retrieve a browser id and client key.
18
+ * @throws [IE-0003] - This exception is thrown in the case fetchBrowserIdFromEdgeProxy wasn't able to retrieve a browserId.
18
19
  *
19
20
  */
20
- function handleNextJsMiddlewareCookie(request, response, options, cookieTempValue) {
21
+ async function handleNextJsMiddlewareCookie(request, response, options, timeout) {
21
22
  const { cookieName } = options.cookieSettings;
22
- const cookieValue = (0, get_browser_id_from_middleware_request_1.getBrowserIdFromMiddlewareRequest)(request, cookieName) ?? cookieTempValue;
23
+ let cookieValue = (0, get_browser_id_from_middleware_request_1.getBrowserIdFromMiddlewareRequest)(request, cookieName);
24
+ if (!cookieValue) {
25
+ const { browserId } = await (0, fetch_browser_id_from_edge_proxy_1.fetchBrowserIdFromEdgeProxy)(options.sitecoreEdgeUrl, options.sitecoreEdgeContextId, timeout);
26
+ if (!browserId)
27
+ throw new Error('[IE-0003] Unable to set the cookie because the browser ID could not be retrieved from the server. Try again later, or use try-catch blocks to handle this error.');
28
+ cookieValue = browserId;
29
+ }
23
30
  const defaultCookieAttributes = (0, get_default_cookie_attributes_1.getDefaultCookieAttributes)(options.cookieSettings.cookieExpiryDays, options.cookieSettings.cookieDomain);
24
31
  request.cookies.set(cookieName, cookieValue, defaultCookieAttributes);
25
32
  response.cookies.set(cookieName, cookieValue, defaultCookieAttributes);
@@ -4,7 +4,7 @@ import { type TRequest, type IMiddlewareNextResponse, type IHttpResponse } from
4
4
  *
5
5
  * @param request - The request object, either a Middleware Request or an HTTP Request.
6
6
  * @param response - The response object, either a Middleware Next Response or an HTTP Response.
7
- * @param options - The settings object containing configuration options.
7
+ * @param timeout - The timeout for the call to proxy to get browserId.
8
8
  * @returns A Promise that resolves once the cookie handling is complete.
9
9
  */
10
10
  export declare function handleServerCookie<T extends TRequest, X extends IMiddlewareNextResponse | IHttpResponse>(request: T, response: X, timeout?: number): Promise<void>;
@@ -6,27 +6,21 @@ const utils_1 = require("@sitecore-cloudsdk/utils");
6
6
  const init_core_server_1 = require("../init/init-core-server");
7
7
  const handle_next_js_middleware_cookie_1 = require("./handle-next-js-middleware-cookie");
8
8
  const handle_http_cookie_1 = require("./handle-http-cookie");
9
- const get_proxy_settings_1 = require("../init/get-proxy-settings");
10
- const consts_1 = require("../consts");
11
9
  /**
12
10
  * Handles server-side cookie operations based on the provided 'request' and 'response' objects.
13
11
  *
14
12
  * @param request - The request object, either a Middleware Request or an HTTP Request.
15
13
  * @param response - The response object, either a Middleware Next Response or an HTTP Response.
16
- * @param options - The settings object containing configuration options.
14
+ * @param timeout - The timeout for the call to proxy to get browserId.
17
15
  * @returns A Promise that resolves once the cookie handling is complete.
18
16
  */
19
17
  async function handleServerCookie(request, response, timeout) {
20
18
  const settings = (0, init_core_server_1.getSettingsServer)();
21
- const { browserId, clientKey } = await (0, get_proxy_settings_1.getProxySettings)(settings.sitecoreEdgeContextId, settings.sitecoreEdgeUrl, timeout);
22
- if (!clientKey)
23
- throw new Error('[IE-0003] Unable to set the cookie because the browser ID could not be retrieved from the server. Try again later, or use try-catch blocks to handle this error.');
24
- settings.cookieSettings.cookieName = `${consts_1.BID_PREFIX}${clientKey}`;
25
19
  if ((0, utils_1.isNextJsMiddlewareRequest)(request) && (0, utils_1.isNextJsMiddlewareResponse)(response)) {
26
- (0, handle_next_js_middleware_cookie_1.handleNextJsMiddlewareCookie)(request, response, settings, browserId);
20
+ await (0, handle_next_js_middleware_cookie_1.handleNextJsMiddlewareCookie)(request, response, settings, timeout);
27
21
  }
28
22
  else if ((0, utils_1.isHttpRequest)(request) && (0, utils_1.isHttpResponse)(response)) {
29
- (0, handle_http_cookie_1.handleHttpCookie)(request, response, settings, browserId);
23
+ await (0, handle_http_cookie_1.handleHttpCookie)(request, response, settings, timeout);
30
24
  }
31
25
  }
32
26
  exports.handleServerCookie = handleServerCookie;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Constructs the URL for retrieving the proxy settings from EDGE events proxy
3
+ * @param sitecoreEdgeUrl - The baseURL for the EDGE proxy
4
+ * @param sitecoreEdgeContextId - The sitecoreContextId for the EDGE proxy
5
+ * @returns The URL string for retrieving the browser ID and ClientKey
6
+ */
7
+ export declare function constructGetBrowserIdUrl(sitecoreEdgeUrl: string, sitecoreEdgeContextId: string): string;
@@ -1,14 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.constructGetProxySettingsUrl = void 0;
3
+ exports.constructGetBrowserIdUrl = void 0;
4
4
  // © Sitecore Corporation A/S. All rights reserved. Sitecore® is a registered trademark of Sitecore Corporation A/S.
5
5
  const consts_1 = require("../consts");
6
6
  /**
7
7
  * Constructs the URL for retrieving the proxy settings from EDGE events proxy
8
- * @param sitecoreEdgeContextId - From global settings
8
+ * @param sitecoreEdgeUrl - The baseURL for the EDGE proxy
9
+ * @param sitecoreEdgeContextId - The sitecoreContextId for the EDGE proxy
9
10
  * @returns The URL string for retrieving the browser ID and ClientKey
10
11
  */
11
- function constructGetProxySettingsUrl(sitecoreEdgeContextId, sitecoreEdgeUrl) {
12
+ function constructGetBrowserIdUrl(sitecoreEdgeUrl, sitecoreEdgeContextId) {
12
13
  return `${sitecoreEdgeUrl}/events/${consts_1.API_VERSION}/browser/create.json?sitecoreContextId=${sitecoreEdgeContextId}&client_key=`;
13
14
  }
14
- exports.constructGetProxySettingsUrl = constructGetProxySettingsUrl;
15
+ exports.constructGetBrowserIdUrl = constructGetBrowserIdUrl;
@@ -0,0 +1,9 @@
1
+ import { IProxySettings } from '../interfaces';
2
+ /**
3
+ * Gets the browser ID and Client Key from Sitecore Edge Proxy
4
+ * @param sitecoreEdgeUrl - The baseURL for the Edge Proxy API.
5
+ * @param sitecoreEdgeContextId - The sitecoreContextId param for the edge Proxy API.
6
+ * @param timeout - The timeout for the call to proxy
7
+ * @returns the browser ID
8
+ */
9
+ export declare function fetchBrowserIdFromEdgeProxy(sitecoreEdgeUrl: string, sitecoreEdgeContextId: string, timeout?: number): Promise<IProxySettings>;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ // © Sitecore Corporation A/S. All rights reserved. Sitecore® is a registered trademark of Sitecore Corporation A/S.
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.fetchBrowserIdFromEdgeProxy = void 0;
5
+ const utils_1 = require("@sitecore-cloudsdk/utils");
6
+ const consts_1 = require("../consts");
7
+ const construct_get_browser_id_url_1 = require("./construct-get-browser-id-url");
8
+ /**
9
+ * Gets the browser ID and Client Key from Sitecore Edge Proxy
10
+ * @param sitecoreEdgeUrl - The baseURL for the Edge Proxy API.
11
+ * @param sitecoreEdgeContextId - The sitecoreContextId param for the edge Proxy API.
12
+ * @param timeout - The timeout for the call to proxy
13
+ * @returns the browser ID
14
+ */
15
+ async function fetchBrowserIdFromEdgeProxy(sitecoreEdgeUrl, sitecoreEdgeContextId, timeout) {
16
+ const fetchOptions = {
17
+ // eslint-disable-next-line @typescript-eslint/naming-convention
18
+ headers: { 'X-Library-Version': consts_1.LIBRARY_VERSION },
19
+ };
20
+ const url = (0, construct_get_browser_id_url_1.constructGetBrowserIdUrl)(sitecoreEdgeUrl, sitecoreEdgeContextId);
21
+ let response;
22
+ if (timeout !== undefined) {
23
+ response = await (0, utils_1.fetchWithTimeout)(url, timeout, fetchOptions);
24
+ }
25
+ else {
26
+ response = await fetch(url, fetchOptions)
27
+ .then((res) => res.json())
28
+ .then((data) => data)
29
+ .catch(() => undefined);
30
+ }
31
+ if (!response)
32
+ return { browserId: '' };
33
+ const { ref: browserId } = response;
34
+ return { browserId };
35
+ }
36
+ exports.fetchBrowserIdFromEdgeProxy = fetchBrowserIdFromEdgeProxy;
@@ -9,7 +9,6 @@ export interface ICdpResponse {
9
9
  }
10
10
  export interface IProxySettings {
11
11
  browserId: string;
12
- clientKey: string;
13
12
  }
14
13
  /**
15
14
  * Interface for supporting response IncomingMessage http node type
@@ -16,7 +16,7 @@ function createSettings(settingsInput) {
16
16
  cookieSettings: {
17
17
  cookieDomain,
18
18
  cookieExpiryDays: cookieExpiryDays || consts_1.DEFAULT_COOKIE_EXPIRY_DAYS,
19
- cookieName: '',
19
+ cookieName: `${consts_1.COOKIE_NAME_PREFIX}${sitecoreEdgeContextId}`,
20
20
  cookiePath: cookiePath || '/',
21
21
  },
22
22
  siteName,
@@ -13,6 +13,7 @@ export interface ISettingsParamsServer extends ISettingsParams {
13
13
  }
14
14
  export interface ISettingsParams extends IBasicSettings, ICookieSettingsInput {
15
15
  timeout?: number;
16
+ sitecoreEdgeUrl?: string;
16
17
  }
17
18
  /**
18
19
  * Properties for the global settings object
@@ -20,7 +21,6 @@ export interface ISettingsParams extends IBasicSettings, ICookieSettingsInput {
20
21
  interface IBasicSettings {
21
22
  sitecoreEdgeContextId: string;
22
23
  siteName: string;
23
- sitecoreEdgeUrl?: string;
24
24
  }
25
25
  interface ICookieSettingsInput {
26
26
  cookiePath?: string;
@@ -15,7 +15,7 @@ function validateSettings(settings) {
15
15
  throw new Error(`[MV-0001] "sitecoreEdgeContextId" is required.`);
16
16
  if (!siteName || siteName.trim().length === 0)
17
17
  throw new Error(`[MV-0002] "siteName" is required.`);
18
- if (sitecoreEdgeUrl) {
18
+ if (sitecoreEdgeUrl !== undefined) {
19
19
  try {
20
20
  new URL(sitecoreEdgeUrl);
21
21
  }