@xenia-martech/sdk-js 1.2.0-dev.2 → 1.2.0-dev.3
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.
- package/README.md +6 -1
- package/dist/{actions-BcdlokGO.d.cts → actions-Bhji05Pe.d.cts} +15 -2
- package/dist/{actions-BcdlokGO.d.ts → actions-Bhji05Pe.d.ts} +15 -2
- package/dist/{api-CktVQ6Gl.d.ts → api-BqSvWgBZ.d.cts} +4 -2
- package/dist/{api-BEPW0Uan.d.cts → api-ByoECRhR.d.ts} +4 -2
- package/dist/{chunk-DWFVDNU5.js → chunk-INM2SPH4.js} +4 -4
- package/dist/chunk-INM2SPH4.js.map +1 -0
- package/dist/{chunk-7NGJC7CF.js → chunk-TGG5Y4QD.js} +17 -6
- package/dist/chunk-TGG5Y4QD.js.map +1 -0
- package/dist/{chunk-3PYPPIUM.cjs → chunk-TRRMMPBH.cjs} +13 -13
- package/dist/chunk-TRRMMPBH.cjs.map +1 -0
- package/dist/{chunk-IBNIRT7J.cjs → chunk-YZG6JR4E.cjs} +17 -6
- package/dist/chunk-YZG6JR4E.cjs.map +1 -0
- package/dist/client/index.cjs +16 -5
- package/dist/client/index.cjs.map +1 -1
- package/dist/client/index.d.cts +2 -2
- package/dist/client/index.d.ts +2 -2
- package/dist/client/index.js +16 -5
- package/dist/client/index.js.map +1 -1
- package/dist/client/react/index.cjs +19 -8
- package/dist/client/react/index.cjs.map +1 -1
- package/dist/client/react/index.d.cts +2 -2
- package/dist/client/react/index.d.ts +2 -2
- package/dist/client/react/index.js +19 -8
- package/dist/client/react/index.js.map +1 -1
- package/dist/cms/contentful.cjs +2 -1
- package/dist/cms/contentful.cjs.map +1 -1
- package/dist/cms/contentful.d.cts +1 -1
- package/dist/cms/contentful.d.ts +1 -1
- package/dist/cms/contentful.js +2 -1
- package/dist/cms/contentful.js.map +1 -1
- package/dist/{cookie-names-CLqtmGBM.d.ts → cookie-names-Bxd-VNyJ.d.ts} +1 -1
- package/dist/{cookie-names-BACctagz.d.cts → cookie-names-RXVfGYPE.d.cts} +1 -1
- package/dist/index.cjs +21 -21
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +1 -1
- package/dist/next/index.cjs +9 -9
- package/dist/next/index.d.cts +3 -3
- package/dist/next/index.d.ts +3 -3
- package/dist/next/index.js +2 -2
- package/dist/{personalize-content-Clc1oMYY.d.cts → personalize-content-Bf6YZdkZ.d.cts} +12 -1
- package/dist/{personalize-content-Clc1oMYY.d.ts → personalize-content-Bf6YZdkZ.d.ts} +12 -1
- package/dist/server/index.cjs +19 -19
- package/dist/server/index.d.cts +5 -5
- package/dist/server/index.d.ts +5 -5
- package/dist/server/index.js +3 -3
- package/dist/xenia-sdk.iife.js +3 -3
- package/dist/xenia-sdk.iife.js.map +1 -1
- package/dist/{xenia-server-BWhWD0La.d.ts → xenia-server-CcjQenru.d.ts} +2 -2
- package/dist/{xenia-server-o_wDOcei.d.cts → xenia-server-MlI3Khya.d.cts} +2 -2
- package/package.json +1 -1
- package/dist/chunk-3PYPPIUM.cjs.map +0 -1
- package/dist/chunk-7NGJC7CF.js.map +0 -1
- package/dist/chunk-DWFVDNU5.js.map +0 -1
- package/dist/chunk-IBNIRT7J.cjs.map +0 -1
|
@@ -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-
|
|
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-
|
|
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-Bhji05Pe.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-Bhji05Pe.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-
|
|
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-
|
|
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-Bhji05Pe.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-Bhji05Pe.js';
|
|
5
5
|
|
|
6
6
|
interface XeniaProviderProps extends XeniaClientOptions {
|
|
7
7
|
children: ReactNode;
|
|
@@ -553,7 +553,7 @@ var XeniaApi = class {
|
|
|
553
553
|
* ({@link personalizeContent}) calls this once per round with the runtime
|
|
554
554
|
* targets it found; callers rarely need it directly.
|
|
555
555
|
*/
|
|
556
|
-
async resolveEntries(entryIds, opts
|
|
556
|
+
async resolveEntries(entryIds, opts) {
|
|
557
557
|
const { data } = await this.http.request({
|
|
558
558
|
method: "POST",
|
|
559
559
|
path: "/api/personalization/resolve-entries",
|
|
@@ -561,7 +561,8 @@ var XeniaApi = class {
|
|
|
561
561
|
body: compact({
|
|
562
562
|
entryIds,
|
|
563
563
|
data: opts.data,
|
|
564
|
-
locale: opts.locale
|
|
564
|
+
locale: opts.locale,
|
|
565
|
+
contentKey: opts.contentKey
|
|
565
566
|
})
|
|
566
567
|
});
|
|
567
568
|
return data;
|
|
@@ -685,7 +686,7 @@ var DEFAULT_TIMEOUT_MS = 300;
|
|
|
685
686
|
var DEFAULT_MAX_ROUNDS = 3;
|
|
686
687
|
var copyOf = (v) => v && typeof v === "object" && typeof structuredClone === "function" ? structuredClone(v) : v;
|
|
687
688
|
async function personalizeContent(payload, options) {
|
|
688
|
-
const
|
|
689
|
+
const cms = scopedAdapter(options.cms, options.contentKey);
|
|
689
690
|
const maxRounds = options.maxRounds ?? DEFAULT_MAX_ROUNDS;
|
|
690
691
|
const deadline = Date.now() + (options.timeoutMs ?? DEFAULT_TIMEOUT_MS);
|
|
691
692
|
const applied = [];
|
|
@@ -884,7 +885,8 @@ function withDeadline(promise, deadline) {
|
|
|
884
885
|
})
|
|
885
886
|
]).finally(() => clearTimeout(timer));
|
|
886
887
|
}
|
|
887
|
-
function pendingTargets(payload,
|
|
888
|
+
function pendingTargets(payload, adapter, contentKey) {
|
|
889
|
+
const cms = scopedAdapter(adapter, contentKey);
|
|
888
890
|
try {
|
|
889
891
|
let content = typeof structuredClone === "function" ? structuredClone(payload) : payload;
|
|
890
892
|
content = cms.prepare ? cms.prepare(content) : content;
|
|
@@ -895,6 +897,15 @@ function pendingTargets(payload, cms) {
|
|
|
895
897
|
return [];
|
|
896
898
|
}
|
|
897
899
|
}
|
|
900
|
+
function scopedAdapter(cms, contentKey) {
|
|
901
|
+
return {
|
|
902
|
+
...cms,
|
|
903
|
+
marker(entry) {
|
|
904
|
+
const m = cms.marker(entry);
|
|
905
|
+
return m && contentKey && m.keys?.includes(contentKey) ? m : null;
|
|
906
|
+
}
|
|
907
|
+
};
|
|
908
|
+
}
|
|
898
909
|
async function personalizePage(ref, options) {
|
|
899
910
|
let page;
|
|
900
911
|
try {
|
|
@@ -2406,7 +2417,7 @@ var XeniaClient = class {
|
|
|
2406
2417
|
return personalizePage(ref, { ...opts, resolve: this.entryResolver(opts) });
|
|
2407
2418
|
}
|
|
2408
2419
|
entryResolver(opts) {
|
|
2409
|
-
const resolveOpts = this.withVisitor({ data: opts.data, locale: opts.locale });
|
|
2420
|
+
const resolveOpts = { ...this.withVisitor({ data: opts.data, locale: opts.locale }), contentKey: opts.contentKey };
|
|
2410
2421
|
return async (ids) => (await this.api.resolveEntries(ids, resolveOpts)).decisions ?? [];
|
|
2411
2422
|
}
|
|
2412
2423
|
/** The SDK-owned visitor anchor: the `identify()`/`config.visitorId` id, else the device id. */
|
|
@@ -2823,8 +2834,8 @@ function usePersonalizedContent(page, opts) {
|
|
|
2823
2834
|
const xenia = useXenia();
|
|
2824
2835
|
const hide = opts.render === "hide-until-resolved";
|
|
2825
2836
|
const initialPending = useMemo(
|
|
2826
|
-
() => new Set(page == null ? [] : pendingTargets(page, opts.cms)),
|
|
2827
|
-
[page]
|
|
2837
|
+
() => new Set(page == null ? [] : pendingTargets(page, opts.cms, opts.contentKey)),
|
|
2838
|
+
[page, opts.contentKey]
|
|
2828
2839
|
// markers live in `page`; a new adapter object for the same page changes nothing
|
|
2829
2840
|
);
|
|
2830
2841
|
const [state, setState] = useState(
|
|
@@ -2832,7 +2843,7 @@ function usePersonalizedContent(page, opts) {
|
|
|
2832
2843
|
);
|
|
2833
2844
|
const optsRef = useRef(opts);
|
|
2834
2845
|
optsRef.current = opts;
|
|
2835
|
-
const optsKey = JSON.stringify({ data: opts.data ?? {}, locale: opts.locale });
|
|
2846
|
+
const optsKey = JSON.stringify({ data: opts.data ?? {}, locale: opts.locale, contentKey: opts.contentKey });
|
|
2836
2847
|
useEffect(() => {
|
|
2837
2848
|
if (page == null) return;
|
|
2838
2849
|
let active = true;
|