@xenia-martech/sdk-js 1.2.0-dev.7 → 1.2.0-dev.9

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 (96) hide show
  1. package/README.md +70 -6
  2. package/dist/{actions-35V37IT0.d.cts → actions--1_9Z8ig.d.cts} +13 -2
  3. package/dist/{actions-35V37IT0.d.ts → actions--1_9Z8ig.d.ts} +13 -2
  4. package/dist/{api-0IycTYJR.d.cts → api-DbUxT38T.d.ts} +1 -1
  5. package/dist/{api-COXWLL5L.d.ts → api-DgzJ5s-k.d.cts} +1 -1
  6. package/dist/chunk-DPXINHQR.cjs +34 -0
  7. package/dist/chunk-DPXINHQR.cjs.map +1 -0
  8. package/dist/chunk-FSJMHXS6.js +432 -0
  9. package/dist/chunk-FSJMHXS6.js.map +1 -0
  10. package/dist/chunk-GXJLU3RE.cjs +448 -0
  11. package/dist/chunk-GXJLU3RE.cjs.map +1 -0
  12. package/dist/{chunk-2DR5AVPX.cjs → chunk-I5EHLRSR.cjs} +11 -10
  13. package/dist/chunk-I5EHLRSR.cjs.map +1 -0
  14. package/dist/{chunk-LW5AEJ6K.js → chunk-MEULT5X6.js} +4 -241
  15. package/dist/chunk-MEULT5X6.js.map +1 -0
  16. package/dist/{chunk-GWRDZIVA.js → chunk-NDRRSRTU.js} +4 -3
  17. package/dist/chunk-NDRRSRTU.js.map +1 -0
  18. package/dist/chunk-RC46KXDM.js +32 -0
  19. package/dist/chunk-RC46KXDM.js.map +1 -0
  20. package/dist/{chunk-RWE2OCQL.cjs → chunk-SU25SELD.cjs} +4 -244
  21. package/dist/chunk-SU25SELD.cjs.map +1 -0
  22. package/dist/{chunk-WHGK55JP.cjs → chunk-UUIKUU5W.cjs} +5 -5
  23. package/dist/{chunk-WHGK55JP.cjs.map → chunk-UUIKUU5W.cjs.map} +1 -1
  24. package/dist/{chunk-QEYONKWY.js → chunk-UVTFGQR6.js} +3 -3
  25. package/dist/{chunk-QEYONKWY.js.map → chunk-UVTFGQR6.js.map} +1 -1
  26. package/dist/{chunk-OMMIRSPK.js → chunk-V4EGU3PM.js} +48 -11
  27. package/dist/chunk-V4EGU3PM.js.map +1 -0
  28. package/dist/{chunk-YLMMTKQL.cjs → chunk-WMGCQPHY.cjs} +52 -13
  29. package/dist/chunk-WMGCQPHY.cjs.map +1 -0
  30. package/dist/client/index.cjs +26 -10
  31. package/dist/client/index.cjs.map +1 -1
  32. package/dist/client/index.d.cts +2 -2
  33. package/dist/client/index.d.ts +2 -2
  34. package/dist/client/index.js +26 -10
  35. package/dist/client/index.js.map +1 -1
  36. package/dist/client/react/index.cjs +73 -15
  37. package/dist/client/react/index.cjs.map +1 -1
  38. package/dist/client/react/index.d.cts +9 -3
  39. package/dist/client/react/index.d.ts +9 -3
  40. package/dist/client/react/index.js +73 -15
  41. package/dist/client/react/index.js.map +1 -1
  42. package/dist/cms/contentful.cjs +7 -24
  43. package/dist/cms/contentful.cjs.map +1 -1
  44. package/dist/cms/contentful.d.cts +5 -4
  45. package/dist/cms/contentful.d.ts +5 -4
  46. package/dist/cms/contentful.js +4 -23
  47. package/dist/cms/contentful.js.map +1 -1
  48. package/dist/cms/contentstack.cjs +120 -0
  49. package/dist/cms/contentstack.cjs.map +1 -0
  50. package/dist/cms/contentstack.d.cts +41 -0
  51. package/dist/cms/contentstack.d.ts +41 -0
  52. package/dist/cms/contentstack.js +117 -0
  53. package/dist/cms/contentstack.js.map +1 -0
  54. package/dist/{consent-DRCV0N0d.d.ts → consent-Dtiqzz2B.d.cts} +71 -11
  55. package/dist/{consent-BgAETCkL.d.cts → consent-byYiDMFr.d.ts} +71 -11
  56. package/dist/{cookie-names-DU3MtcNG.d.ts → cookie-names-B4hda2rX.d.cts} +1 -1
  57. package/dist/{cookie-names-DFItnSLK.d.cts → cookie-names-DioZXuV0.d.ts} +1 -1
  58. package/dist/edge/index.cjs +122 -29
  59. package/dist/edge/index.cjs.map +1 -1
  60. package/dist/edge/index.d.cts +42 -6
  61. package/dist/edge/index.d.ts +42 -6
  62. package/dist/edge/index.js +92 -9
  63. package/dist/edge/index.js.map +1 -1
  64. package/dist/index.cjs +31 -31
  65. package/dist/index.d.cts +4 -5
  66. package/dist/index.d.ts +4 -5
  67. package/dist/index.js +2 -2
  68. package/dist/next/index.cjs +39 -34
  69. package/dist/next/index.cjs.map +1 -1
  70. package/dist/next/index.d.cts +2 -3
  71. package/dist/next/index.d.ts +2 -3
  72. package/dist/next/index.js +13 -8
  73. package/dist/next/index.js.map +1 -1
  74. package/dist/{types-DgVHS4Qw.d.ts → personalize-content-D6xeBI7-.d.cts} +150 -1
  75. package/dist/{types-DgVHS4Qw.d.cts → personalize-content-D6xeBI7-.d.ts} +150 -1
  76. package/dist/server/index.cjs +30 -30
  77. package/dist/server/index.d.cts +5 -6
  78. package/dist/server/index.d.ts +5 -6
  79. package/dist/server/index.js +5 -5
  80. package/dist/xenia-sdk.iife.js +3 -3
  81. package/dist/xenia-sdk.iife.js.map +1 -1
  82. package/dist/{xenia-server-Cf24mL0c.d.ts → xenia-server-BcgeUHX4.d.ts} +2 -3
  83. package/dist/{xenia-server-D-bx14lw.d.cts → xenia-server-lv6LtJZP.d.cts} +2 -3
  84. package/package.json +14 -1
  85. package/dist/chunk-2DR5AVPX.cjs.map +0 -1
  86. package/dist/chunk-BQ5PJCZ7.js +0 -179
  87. package/dist/chunk-BQ5PJCZ7.js.map +0 -1
  88. package/dist/chunk-GWRDZIVA.js.map +0 -1
  89. package/dist/chunk-LW5AEJ6K.js.map +0 -1
  90. package/dist/chunk-N5M4PI7C.cjs +0 -192
  91. package/dist/chunk-N5M4PI7C.cjs.map +0 -1
  92. package/dist/chunk-OMMIRSPK.js.map +0 -1
  93. package/dist/chunk-RWE2OCQL.cjs.map +0 -1
  94. package/dist/chunk-YLMMTKQL.cjs.map +0 -1
  95. package/dist/personalize-content-Cwc2AomC.d.ts +0 -141
  96. package/dist/personalize-content-CxSdplMV.d.cts +0 -141
@@ -1,5 +1,5 @@
1
- import { I as InteractionType, X as XeniaConfig, a as XeniaEvent, M as MessageCta, b as MessageTemplateFn, c as MessageComponentRenderer, W as WidgetFormSubmit, d as WidgetSubmitResponse, e as XeniaAction, f as MessagePlacement, C as ConsentState } from '../actions-35V37IT0.cjs';
2
- export { A as AnalyticsContext, g as AnalyticsEventName, h as AnalyticsIdentity, i as AnalyticsIngestResponse, j as AppliedSwap, k as ClientEvent, l as CmsAdapter, m as ContentSwap, n as IdentifyRequest, o as IdentifyResponse, p as Identity, J as JsonValue, q as MessageMountContext, r as MessageRenderContext, P as PagePersonalizeOptions, s as PageRef, t as PersonalizationSwap, R as ResolveBatchItem, u as ResolveBatchResult, v as ResolveOptions, w as ResolveResult, T as TrackOptions, x as WebhookResponse, y as WidgetPrize, z as WidgetSegment, B as WidgetType, D as XeniaClient, E as XeniaClientOptions, 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-35V37IT0.cjs';
1
+ import { I as InteractionType, X as XeniaConfig, a as XeniaEvent, M as MessageCta, b as MessageTemplateFn, c as MessageComponentRenderer, W as WidgetFormSubmit, d as WidgetSubmitResponse, e as XeniaAction, f as MessagePlacement, C as ConsentState } from '../actions--1_9Z8ig.cjs';
2
+ export { A as AnalyticsContext, g as AnalyticsEventName, h as AnalyticsIdentity, i as AnalyticsIngestResponse, j as AppliedSwap, k as ClientEvent, l as CmsAdapter, m as ContentSwap, n as IdentifyRequest, o as IdentifyResponse, p as Identity, J as JsonValue, q as MessageMountContext, r as MessageRenderContext, P as PagePersonalizeOptions, s as PageRef, t as PersonalizationSwap, R as ResolveBatchItem, u as ResolveBatchResult, v as ResolveOptions, w as ResolveResult, T as TrackOptions, x as WebhookResponse, y as WidgetPrize, z as WidgetSegment, B as WidgetType, D as XeniaClient, E as XeniaClientOptions, 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--1_9Z8ig.cjs';
3
3
 
4
4
  interface Parsed {
5
5
  eventId: string;
@@ -1,5 +1,5 @@
1
- import { I as InteractionType, X as XeniaConfig, a as XeniaEvent, M as MessageCta, b as MessageTemplateFn, c as MessageComponentRenderer, W as WidgetFormSubmit, d as WidgetSubmitResponse, e as XeniaAction, f as MessagePlacement, C as ConsentState } from '../actions-35V37IT0.js';
2
- export { A as AnalyticsContext, g as AnalyticsEventName, h as AnalyticsIdentity, i as AnalyticsIngestResponse, j as AppliedSwap, k as ClientEvent, l as CmsAdapter, m as ContentSwap, n as IdentifyRequest, o as IdentifyResponse, p as Identity, J as JsonValue, q as MessageMountContext, r as MessageRenderContext, P as PagePersonalizeOptions, s as PageRef, t as PersonalizationSwap, R as ResolveBatchItem, u as ResolveBatchResult, v as ResolveOptions, w as ResolveResult, T as TrackOptions, x as WebhookResponse, y as WidgetPrize, z as WidgetSegment, B as WidgetType, D as XeniaClient, E as XeniaClientOptions, 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-35V37IT0.js';
1
+ import { I as InteractionType, X as XeniaConfig, a as XeniaEvent, M as MessageCta, b as MessageTemplateFn, c as MessageComponentRenderer, W as WidgetFormSubmit, d as WidgetSubmitResponse, e as XeniaAction, f as MessagePlacement, C as ConsentState } from '../actions--1_9Z8ig.js';
2
+ export { A as AnalyticsContext, g as AnalyticsEventName, h as AnalyticsIdentity, i as AnalyticsIngestResponse, j as AppliedSwap, k as ClientEvent, l as CmsAdapter, m as ContentSwap, n as IdentifyRequest, o as IdentifyResponse, p as Identity, J as JsonValue, q as MessageMountContext, r as MessageRenderContext, P as PagePersonalizeOptions, s as PageRef, t as PersonalizationSwap, R as ResolveBatchItem, u as ResolveBatchResult, v as ResolveOptions, w as ResolveResult, T as TrackOptions, x as WebhookResponse, y as WidgetPrize, z as WidgetSegment, B as WidgetType, D as XeniaClient, E as XeniaClientOptions, 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--1_9Z8ig.js';
3
3
 
4
4
  interface Parsed {
5
5
  eventId: string;
@@ -713,7 +713,7 @@ async function personalizeContent(payload, options) {
713
713
  const next = apply(target, op, d.decision.field ?? target.marker.field, items, cms);
714
714
  report({
715
715
  target: target.id,
716
- kind: "runtime",
716
+ kind: target.local ? "static" : "runtime",
717
717
  op,
718
718
  entryIds: items.map((e) => cms.entryId(e)).filter((id) => !!id),
719
719
  contentKey: d.decision.contentKey,
@@ -723,20 +723,23 @@ async function personalizeContent(payload, options) {
723
723
  return next;
724
724
  };
725
725
  for (let round = 0; ; round++) {
726
- const pending = walk(frontier, cms, settled, round, report, (t) => {
726
+ const pending = walk(frontier, cms, settled, round, report, options.contentKey, (t) => {
727
727
  const d = decided.get(t.id);
728
728
  return d ? settle(t, d, round) : void 0;
729
729
  });
730
730
  if (pending.size === 0) return { content: box.root, applied, complete: true };
731
- if (!options.resolve || round >= maxRounds) {
732
- return { content: box.root, applied, complete: !options.resolve };
731
+ const remote = [...pending.values()].filter((p) => !p.local).map((p) => p.id);
732
+ const local = [...pending.values()].flatMap((p) => p.local ? [p.local] : []);
733
+ if (!options.resolve && local.length === 0 || round >= maxRounds) {
734
+ return { content: box.root, applied, complete: !options.resolve && round < maxRounds };
733
735
  }
734
736
  progress(options, { content: box.root, round, pending: [...pending.keys()] });
735
737
  let decisions;
736
738
  let entriesById;
737
739
  let queried;
738
740
  try {
739
- decisions = await withDeadline(options.resolve([...pending.keys()]), deadline);
741
+ decisions = options.resolve && remote.length > 0 ? await withDeadline(options.resolve(remote), deadline) : [];
742
+ decisions = [...decisions, ...local];
740
743
  ({ entriesById, queried } = await withDeadline(loadReplacements(decisions, cms, options.locale), deadline));
741
744
  } catch (error) {
742
745
  return { content: box.root, applied, complete: false, error: error === TIMEOUT ? void 0 : error };
@@ -759,7 +762,7 @@ function progress(options, p) {
759
762
  } catch {
760
763
  }
761
764
  }
762
- function walk(frontier, cms, settled, round, report, reuse) {
765
+ function walk(frontier, cms, settled, round, report, contentKey, reuse) {
763
766
  const pending = /* @__PURE__ */ new Map();
764
767
  const seen = /* @__PURE__ */ new WeakSet();
765
768
  const deferred = /* @__PURE__ */ new WeakSet();
@@ -770,7 +773,8 @@ function walk(frontier, cms, settled, round, report, reuse) {
770
773
  if (!value || typeof value !== "object" || deferred.has(value)) continue;
771
774
  const id = settled.has(value) ? void 0 : cms.entryId(value);
772
775
  const marker = id ? cms.marker(value) : null;
773
- if (id && marker?.kind === "runtime") {
776
+ const local = id && marker?.kind === "static" && marker.ids?.length && cms.staticVariants(value).length === 0 ? localDecision(id, marker, contentKey) : void 0;
777
+ if (id && marker && (marker.kind === "runtime" || local)) {
774
778
  const again = reuse({ id, marker, entry: value, slots: [slot] });
775
779
  if (again) {
776
780
  queue.push(...again);
@@ -780,7 +784,7 @@ function walk(frontier, cms, settled, round, report, reuse) {
780
784
  if (existing) {
781
785
  existing.slots.push(slot);
782
786
  } else {
783
- pending.set(id, { id, marker, entry: value, slots: [slot] });
787
+ pending.set(id, { id, marker, entry: value, slots: [slot], ...local ? { local } : {} });
784
788
  if (marker.op === "items" && marker.field) {
785
789
  const held = cms.getField(value, marker.field);
786
790
  if (held && typeof held === "object") deferred.add(held);
@@ -814,6 +818,16 @@ function walk(frontier, cms, settled, round, report, reuse) {
814
818
  }
815
819
  return pending;
816
820
  }
821
+ function localDecision(id, marker, contentKey) {
822
+ return {
823
+ target: id,
824
+ op: marker.op ?? "replace",
825
+ ...marker.field ? { field: marker.field } : {},
826
+ ids: marker.ids,
827
+ ...marker.ct ? { contentType: marker.ct } : {},
828
+ contentKey
829
+ };
830
+ }
817
831
  function apply(target, op, field, items, cms) {
818
832
  if (op === "items") {
819
833
  if (field) {
@@ -852,9 +866,11 @@ function children(value) {
852
866
  }
853
867
  async function loadReplacements(decisions, cms, locale) {
854
868
  const ids = [...new Set(decisions.flatMap((d) => d.ids ?? []))];
869
+ const types = {};
870
+ for (const d of decisions) if (d.contentType) for (const id of d.ids ?? []) types[id] = d.contentType;
855
871
  const queries = decisions.filter((d) => !d.ids && d.query);
856
872
  const [fetched, ...results] = await Promise.all([
857
- ids.length > 0 ? cms.fetchEntries(ids, locale) : Promise.resolve([]),
873
+ ids.length > 0 ? cms.fetchEntries(ids, locale, types) : Promise.resolve([]),
858
874
  ...queries.map((d) => cms.queryEntries(d.query, locale).catch(() => []))
859
875
  ]);
860
876
  const entriesById = /* @__PURE__ */ new Map();
@@ -885,7 +901,7 @@ function pendingTargets(payload, adapter, contentKey) {
885
901
  content = cms.prepare ? cms.prepare(content) : content;
886
902
  const root = { parent: { root: content }, key: "root", value: content };
887
903
  return [...walk([root], cms, /* @__PURE__ */ new WeakSet(), 0, () => {
888
- }, () => void 0).keys()];
904
+ }, contentKey, () => void 0).keys()];
889
905
  } catch {
890
906
  return [];
891
907
  }