@xenia-martech/sdk-js 1.2.0-dev.1 → 1.2.0-dev.2

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.
@@ -1,7 +1,7 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode, ElementType, ComponentType } from 'react';
3
- import { E as XeniaClientOptions, D as XeniaClient, w as ResolveResult, u as ResolveBatchResult, J as JsonValue, x as WebhookResponse, R as ResolveBatchItem, g as AnalyticsEventName, T as TrackOptions, P as PagePersonalizeOptions, j as AppliedSwap, s as PageRef, e as XeniaAction, I as InteractionType, q as MessageMountContext, c as MessageComponentRenderer } from '../../actions-D9_aAvCv.cjs';
4
- export { A as AnalyticsContext, h as AnalyticsIdentity, i as AnalyticsIngestResponse, k as ClientEvent, l as CmsAdapter, C as ConsentState, m as ContentSwap, n as IdentifyRequest, o as IdentifyResponse, M as MessageCta, f as MessagePlacement, r as MessageRenderContext, b as MessageTemplateFn, t as PersonalizationSwap, v as ResolveOptions, X as XeniaConfig, a as XeniaEvent, F as XeniaMarker, G as createXeniaClient, H as extractContentSwaps, K as parseActions, L as pendingTargets, N as personalizeContent, O as personalizePage, Q as spliceSlots } from '../../actions-D9_aAvCv.cjs';
3
+ import { E as XeniaClientOptions, D as XeniaClient, w as ResolveResult, u as ResolveBatchResult, J as JsonValue, x as WebhookResponse, R as ResolveBatchItem, g as AnalyticsEventName, T as TrackOptions, P as PagePersonalizeOptions, j as AppliedSwap, s as PageRef, e as XeniaAction, I as InteractionType, q as MessageMountContext, c as MessageComponentRenderer } from '../../actions-BcdlokGO.cjs';
4
+ export { A as AnalyticsContext, h as AnalyticsIdentity, i as AnalyticsIngestResponse, k as ClientEvent, l as CmsAdapter, C as ConsentState, m as ContentSwap, n as IdentifyRequest, o as IdentifyResponse, M as MessageCta, f as MessagePlacement, r as MessageRenderContext, b as MessageTemplateFn, t as PersonalizationSwap, v as ResolveOptions, X as XeniaConfig, a as XeniaEvent, F as XeniaMarker, G as createXeniaClient, H as extractContentSwaps, K as parseActions, L as pendingTargets, N as personalizeContent, O as personalizePage, Q as spliceSlots } from '../../actions-BcdlokGO.cjs';
5
5
 
6
6
  interface XeniaProviderProps extends XeniaClientOptions {
7
7
  children: ReactNode;
@@ -1,7 +1,7 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode, ElementType, ComponentType } from 'react';
3
- import { E as XeniaClientOptions, D as XeniaClient, w as ResolveResult, u as ResolveBatchResult, J as JsonValue, x as WebhookResponse, R as ResolveBatchItem, g as AnalyticsEventName, T as TrackOptions, P as PagePersonalizeOptions, j as AppliedSwap, s as PageRef, e as XeniaAction, I as InteractionType, q as MessageMountContext, c as MessageComponentRenderer } from '../../actions-D9_aAvCv.js';
4
- export { A as AnalyticsContext, h as AnalyticsIdentity, i as AnalyticsIngestResponse, k as ClientEvent, l as CmsAdapter, C as ConsentState, m as ContentSwap, n as IdentifyRequest, o as IdentifyResponse, M as MessageCta, f as MessagePlacement, r as MessageRenderContext, b as MessageTemplateFn, t as PersonalizationSwap, v as ResolveOptions, X as XeniaConfig, a as XeniaEvent, F as XeniaMarker, G as createXeniaClient, H as extractContentSwaps, K as parseActions, L as pendingTargets, N as personalizeContent, O as personalizePage, Q as spliceSlots } from '../../actions-D9_aAvCv.js';
3
+ import { E as XeniaClientOptions, D as XeniaClient, w as ResolveResult, u as ResolveBatchResult, J as JsonValue, x as WebhookResponse, R as ResolveBatchItem, g as AnalyticsEventName, T as TrackOptions, P as PagePersonalizeOptions, j as AppliedSwap, s as PageRef, e as XeniaAction, I as InteractionType, q as MessageMountContext, c as MessageComponentRenderer } from '../../actions-BcdlokGO.js';
4
+ export { A as AnalyticsContext, h as AnalyticsIdentity, i as AnalyticsIngestResponse, k as ClientEvent, l as CmsAdapter, C as ConsentState, m as ContentSwap, n as IdentifyRequest, o as IdentifyResponse, M as MessageCta, f as MessagePlacement, r as MessageRenderContext, b as MessageTemplateFn, t as PersonalizationSwap, v as ResolveOptions, X as XeniaConfig, a as XeniaEvent, F as XeniaMarker, G as createXeniaClient, H as extractContentSwaps, K as parseActions, L as pendingTargets, N as personalizeContent, O as personalizePage, Q as spliceSlots } from '../../actions-BcdlokGO.js';
5
5
 
6
6
  interface XeniaProviderProps extends XeniaClientOptions {
7
7
  children: ReactNode;
@@ -1236,6 +1236,20 @@ var AutoTracker = class {
1236
1236
  }
1237
1237
  };
1238
1238
 
1239
+ // src/server/cookies.ts
1240
+ function parseCookies(header) {
1241
+ const out = {};
1242
+ if (!header) return out;
1243
+ for (const part of header.split(";")) {
1244
+ const idx = part.indexOf("=");
1245
+ if (idx === -1) continue;
1246
+ const key = part.slice(0, idx).trim();
1247
+ const value = part.slice(idx + 1).trim();
1248
+ if (key) out[key] = decodeURIComponent(value);
1249
+ }
1250
+ return out;
1251
+ }
1252
+
1239
1253
  // src/client/identity.ts
1240
1254
  var SESSION_TIMEOUT_MS = 30 * 60 * 1e3;
1241
1255
  var Identity = class {
@@ -1283,10 +1297,19 @@ var Identity = class {
1283
1297
  } catch {
1284
1298
  }
1285
1299
  }
1300
+ /** The visitor id already in the cookie — e.g. minted by `xeniaProxy()` on the first request. */
1301
+ readVisitorCookie() {
1302
+ if (!this.cookie || typeof document === "undefined") return null;
1303
+ try {
1304
+ return parseCookies(document.cookie)[this.cookieName()] || null;
1305
+ } catch {
1306
+ return null;
1307
+ }
1308
+ }
1286
1309
  // ── Device id ────────────────────────────────────────────────────────────
1287
1310
  /**
1288
- * Resolve a stable device id: localStorage cache → MediaDevices → SHA-256
1289
- * browser fingerprint. Cached for the session and across reloads.
1311
+ * Resolve a stable device id: localStorage cache → the visitor cookie a server already set →
1312
+ * MediaDevices → SHA-256 browser fingerprint. Cached for the session and across reloads.
1290
1313
  */
1291
1314
  async resolveDeviceId() {
1292
1315
  if (this.deviceId) {
@@ -1303,7 +1326,8 @@ var Identity = class {
1303
1326
  }
1304
1327
  } catch {
1305
1328
  }
1306
- let id = await this.mediaDeviceId();
1329
+ let id = this.readVisitorCookie();
1330
+ if (!id) id = await this.mediaDeviceId();
1307
1331
  if (!id) id = await this.fingerprint();
1308
1332
  this.deviceId = id;
1309
1333
  try {