@contentful/experiences-client 0.3.11 → 0.4.1
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/CHANGELOG.md +12 -0
- package/dist/fetch-experience.d.ts +9 -0
- package/dist/fetch-experience.js +21 -5
- package/dist/fetch-experience.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/to-experience-payload.d.ts +23 -0
- package/dist/to-experience-payload.js +12 -0
- package/dist/to-experience-payload.js.map +1 -0
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,15 @@ type ExperienceOptions = {
|
|
|
6
6
|
environmentId: string;
|
|
7
7
|
experienceId: string;
|
|
8
8
|
locale?: string;
|
|
9
|
+
/**
|
|
10
|
+
* Fetch the content source map alongside the experience, onto
|
|
11
|
+
* `PortableRenderPlan.sourceMap`. Defaults to `false` because the map is large.
|
|
12
|
+
*
|
|
13
|
+
* Switches the request from `GET` to `POST` (the opt-in is a request-body
|
|
14
|
+
* field, only accepted by `getWithOverrides`), so it is not CDN-cacheable.
|
|
15
|
+
* Query params, auth, and the response shape are unchanged.
|
|
16
|
+
*/
|
|
17
|
+
withSourceMap?: boolean;
|
|
9
18
|
};
|
|
10
19
|
type ClientOptions = {
|
|
11
20
|
accessToken: string;
|
package/dist/fetch-experience.js
CHANGED
|
@@ -3,8 +3,12 @@ import { createDebugLogger, resolveExperience } from "@contentful/experiences-sd
|
|
|
3
3
|
import { createClient } from "./create-client.js";
|
|
4
4
|
import { ExperienceFetchError } from "./errors.js";
|
|
5
5
|
import { PREVIEW_HOST } from "./hosts.js";
|
|
6
|
+
import {
|
|
7
|
+
readSourceMap,
|
|
8
|
+
toExperiencePayload
|
|
9
|
+
} from "./to-experience-payload.js";
|
|
6
10
|
async function fetchExperience(experienceOptions, clientOptions, resolveOptions) {
|
|
7
|
-
const { spaceId, environmentId, experienceId, locale } = experienceOptions;
|
|
11
|
+
const { spaceId, environmentId, experienceId, locale, withSourceMap } = experienceOptions;
|
|
8
12
|
const { config, metadata, debug, initialViewportId } = resolveOptions;
|
|
9
13
|
const log = createDebugLogger(debug, "client");
|
|
10
14
|
let client;
|
|
@@ -25,10 +29,19 @@ async function fetchExperience(experienceOptions, clientOptions, resolveOptions)
|
|
|
25
29
|
});
|
|
26
30
|
log.log("created delivery client", { preview: Boolean(preview), host: resolvedHost });
|
|
27
31
|
}
|
|
28
|
-
log.log("fetching experience", {
|
|
32
|
+
log.log("fetching experience", {
|
|
33
|
+
spaceId,
|
|
34
|
+
environmentId,
|
|
35
|
+
experienceId,
|
|
36
|
+
locale,
|
|
37
|
+
withSourceMap: Boolean(withSourceMap)
|
|
38
|
+
});
|
|
29
39
|
let response;
|
|
30
40
|
try {
|
|
31
|
-
response = await client.experience.
|
|
41
|
+
response = withSourceMap ? await client.experience.getWithOverrides(spaceId, environmentId, experienceId, {
|
|
42
|
+
locale,
|
|
43
|
+
extensions: { sourceMap: {} }
|
|
44
|
+
}) : await client.experience.get(spaceId, environmentId, experienceId, { locale });
|
|
32
45
|
} catch (err) {
|
|
33
46
|
if (err instanceof ContentfulViewDelivery.NotFoundError) {
|
|
34
47
|
throw err;
|
|
@@ -39,12 +52,15 @@ async function fetchExperience(experienceOptions, clientOptions, resolveOptions)
|
|
|
39
52
|
{ spaceId, environmentId, experienceId, cause: err }
|
|
40
53
|
);
|
|
41
54
|
}
|
|
42
|
-
const payload = response;
|
|
55
|
+
const payload = toExperiencePayload(response);
|
|
56
|
+
const sourceMap = withSourceMap ? readSourceMap(response) : void 0;
|
|
43
57
|
log.lazy("received raw payload", () => payload);
|
|
58
|
+
if (withSourceMap && !sourceMap) log.log("source map requested but not returned");
|
|
44
59
|
return resolveExperience(payload, config, {
|
|
45
60
|
metadata,
|
|
46
61
|
debug,
|
|
47
|
-
initialViewportId
|
|
62
|
+
initialViewportId,
|
|
63
|
+
sourceMap
|
|
48
64
|
});
|
|
49
65
|
}
|
|
50
66
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/fetch-experience.ts"],"sourcesContent":["import type { ContentfulViewDeliveryClient } from '@contentful/experience-delivery';\nimport { ContentfulViewDelivery } from '@contentful/experience-delivery';\nimport { createDebugLogger, resolveExperience } from '@contentful/experiences-sdk-core';\nimport type {
|
|
1
|
+
{"version":3,"sources":["../src/fetch-experience.ts"],"sourcesContent":["import type { ContentfulViewDeliveryClient } from '@contentful/experience-delivery';\nimport { ContentfulViewDelivery } from '@contentful/experience-delivery';\nimport { createDebugLogger, resolveExperience } from '@contentful/experiences-sdk-core';\nimport type { PortableRenderPlan, ResolverConfig } from '@contentful/experiences-sdk-core';\nimport { createClient } from './create-client.js';\nimport { ExperienceFetchError } from './errors.js';\nimport { PREVIEW_HOST } from './hosts.js';\nimport {\n readSourceMap,\n toExperiencePayload,\n type ExperienceResponse,\n} from './to-experience-payload.js';\n\nexport type ExperienceOptions = {\n spaceId: string;\n environmentId: string;\n experienceId: string;\n locale?: string;\n /**\n * Fetch the content source map alongside the experience, onto\n * `PortableRenderPlan.sourceMap`. Defaults to `false` because the map is large.\n *\n * Switches the request from `GET` to `POST` (the opt-in is a request-body\n * field, only accepted by `getWithOverrides`), so it is not CDN-cacheable.\n * Query params, auth, and the response shape are unchanged.\n */\n withSourceMap?: boolean;\n};\n\nexport type ClientOptions =\n | {\n accessToken: string;\n /**\n * Preview access token. Required when calling with `preview: true`.\n */\n previewToken?: string;\n /**\n * Flip between delivery (default) and preview at request time. When\n * `true`, `fetchExperience` uses `previewToken` and the preview host;\n * when `false` or unset, it uses `accessToken` and the delivery host.\n * Ignored when a pre-made `client` is passed instead of inline creds.\n */\n preview?: boolean;\n /**\n * Custom base URL for the delivery client (staging, proxy, per-region).\n * Wins over the `preview`-derived default host — combine `host` with\n * `preview: true` to point preview mode at a non-prod endpoint.\n * Omit for the standard delivery / preview hosts.\n */\n host?: string;\n }\n | { client: ContentfulViewDeliveryClient };\n\nexport type ResolveOptions = {\n config: ResolverConfig;\n /**\n * Arbitrary per-render metadata exposed to every resolver as\n * `ctx.experience.metadata` and readable at render time via the framework\n * adapter's `useExperience()` / `getExperience()`.\n */\n metadata?: Record<string, unknown>;\n /**\n * Observability switch. When on: logs the fetch (host, ids) and the raw\n * payload here, and threads through to `resolveExperience` (resolution steps\n * + `resolveData` timings) and the renderer (visible missing-component box,\n * debug fallback). A single boolean across fetch + resolve + render.\n */\n debug?: boolean;\n /**\n * Per-request fallback viewport for server-side design pre-resolution. Pass\n * the same id you seed the renderer's `initialViewportId` with (e.g. a\n * User-Agent-derived viewport) so SSR paints correct design on first render.\n */\n initialViewportId?: string;\n};\n\nexport async function fetchExperience(\n experienceOptions: ExperienceOptions,\n clientOptions: ClientOptions,\n resolveOptions: ResolveOptions\n): Promise<PortableRenderPlan> {\n const { spaceId, environmentId, experienceId, locale, withSourceMap } = experienceOptions;\n const { config, metadata, debug, initialViewportId } = resolveOptions;\n const log = createDebugLogger(debug, 'client');\n\n let client: ContentfulViewDeliveryClient;\n if ('client' in clientOptions) {\n client = clientOptions.client;\n log.log('using caller-supplied delivery client');\n } else {\n const { accessToken, previewToken, preview, host } = clientOptions;\n if (preview && !previewToken) {\n throw new Error(\n 'fetchExperience() called with preview: true but no previewToken was provided'\n );\n }\n const resolvedHost = host ?? (preview ? PREVIEW_HOST : undefined);\n client = createClient({\n accessToken: preview ? (previewToken as string) : accessToken,\n host: resolvedHost,\n });\n log.log('created delivery client', { preview: Boolean(preview), host: resolvedHost });\n }\n\n log.log('fetching experience', {\n spaceId,\n environmentId,\n experienceId,\n locale,\n withSourceMap: Boolean(withSourceMap),\n });\n\n // Typed as the union of both operations' responses — they declare the same\n // union, but which one runs depends on `withSourceMap` below.\n let response: ExperienceResponse;\n try {\n // Both methods hit the same endpoint; only the POST accepts a body, and\n // `extensions` (the source-map opt-in) lives there. Otherwise identical.\n // The alpha-feature header is sent by the delivery client itself since\n // 1.0.0-dev.7, so a caller-supplied `{ client }` is covered too.\n response = withSourceMap\n ? await client.experience.getWithOverrides(spaceId, environmentId, experienceId, {\n locale,\n extensions: { sourceMap: {} },\n })\n : await client.experience.get(spaceId, environmentId, experienceId, { locale });\n } catch (err) {\n // `NotFoundError` is a distinguishable, expected outcome (draft/unpublished/\n // wrong id) — callers already route it to their framework's 404 idiom, so\n // it passes through as-is. Everything else (network failure, bad/expired\n // token, a 5xx) is unexpected and gets wrapped in an actionable error\n // instead of leaking whatever shape the delivery client happened to throw.\n if (err instanceof ContentfulViewDelivery.NotFoundError) {\n throw err;\n }\n const reason = err instanceof Error ? err.message : String(err);\n throw new ExperienceFetchError(\n `Failed to fetch Experience \"${experienceId}\" (space \"${spaceId}\", environment ` +\n `\"${environmentId}\"): ${reason}. Check network connectivity, the access token, and ` +\n `that the space/environment/experience ids are correct.`,\n { spaceId, environmentId, experienceId, cause: err }\n );\n }\n\n const payload = toExperiencePayload(response);\n const sourceMap = withSourceMap ? readSourceMap(response) : undefined;\n\n log.lazy('received raw payload', () => payload);\n if (withSourceMap && !sourceMap) log.log('source map requested but not returned');\n\n return resolveExperience(payload, config, {\n metadata,\n debug,\n initialViewportId,\n sourceMap,\n });\n}\n"],"mappings":"AACA,SAAS,8BAA8B;AACvC,SAAS,mBAAmB,yBAAyB;AAErD,SAAS,oBAAoB;AAC7B,SAAS,4BAA4B;AACrC,SAAS,oBAAoB;AAC7B;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AAiEP,eAAsB,gBACpB,mBACA,eACA,gBAC6B;AAC7B,QAAM,EAAE,SAAS,eAAe,cAAc,QAAQ,cAAc,IAAI;AACxE,QAAM,EAAE,QAAQ,UAAU,OAAO,kBAAkB,IAAI;AACvD,QAAM,MAAM,kBAAkB,OAAO,QAAQ;AAE7C,MAAI;AACJ,MAAI,YAAY,eAAe;AAC7B,aAAS,cAAc;AACvB,QAAI,IAAI,uCAAuC;AAAA,EACjD,OAAO;AACL,UAAM,EAAE,aAAa,cAAc,SAAS,KAAK,IAAI;AACrD,QAAI,WAAW,CAAC,cAAc;AAC5B,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AACA,UAAM,eAAe,SAAS,UAAU,eAAe;AACvD,aAAS,aAAa;AAAA,MACpB,aAAa,UAAW,eAA0B;AAAA,MAClD,MAAM;AAAA,IACR,CAAC;AACD,QAAI,IAAI,2BAA2B,EAAE,SAAS,QAAQ,OAAO,GAAG,MAAM,aAAa,CAAC;AAAA,EACtF;AAEA,MAAI,IAAI,uBAAuB;AAAA,IAC7B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe,QAAQ,aAAa;AAAA,EACtC,CAAC;AAID,MAAI;AACJ,MAAI;AAKF,eAAW,gBACP,MAAM,OAAO,WAAW,iBAAiB,SAAS,eAAe,cAAc;AAAA,MAC7E;AAAA,MACA,YAAY,EAAE,WAAW,CAAC,EAAE;AAAA,IAC9B,CAAC,IACD,MAAM,OAAO,WAAW,IAAI,SAAS,eAAe,cAAc,EAAE,OAAO,CAAC;AAAA,EAClF,SAAS,KAAK;AAMZ,QAAI,eAAe,uBAAuB,eAAe;AACvD,YAAM;AAAA,IACR;AACA,UAAM,SAAS,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAC9D,UAAM,IAAI;AAAA,MACR,+BAA+B,YAAY,aAAa,OAAO,mBACzD,aAAa,OAAO,MAAM;AAAA,MAEhC,EAAE,SAAS,eAAe,cAAc,OAAO,IAAI;AAAA,IACrD;AAAA,EACF;AAEA,QAAM,UAAU,oBAAoB,QAAQ;AAC5C,QAAM,YAAY,gBAAgB,cAAc,QAAQ,IAAI;AAE5D,MAAI,KAAK,wBAAwB,MAAM,OAAO;AAC9C,MAAI,iBAAiB,CAAC,UAAW,KAAI,IAAI,uCAAuC;AAEhF,SAAO,kBAAkB,SAAS,QAAQ;AAAA,IACxC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH;","names":[]}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export { ContentfulViewDelivery, ContentfulViewDeliveryClient } from '@contentfu
|
|
|
3
3
|
export { ExperienceFetchError } from './errors.js';
|
|
4
4
|
export { CreateClientOptions, createClient } from './create-client.js';
|
|
5
5
|
export { ClientOptions, ExperienceOptions, ResolveOptions, fetchExperience } from './fetch-experience.js';
|
|
6
|
+
export { ExperienceResponse, readSourceMap, toExperiencePayload } from './to-experience-payload.js';
|
|
6
7
|
export { DELIVERY_HOST, PREVIEW_HOST } from './hosts.js';
|
|
7
8
|
import '@contentful/experiences-sdk-core';
|
|
8
9
|
|
package/dist/index.js
CHANGED
|
@@ -7,6 +7,7 @@ const NotFoundError = ContentfulViewDelivery.NotFoundError;
|
|
|
7
7
|
import { ExperienceFetchError } from "./errors.js";
|
|
8
8
|
import { createClient } from "./create-client.js";
|
|
9
9
|
import { fetchExperience } from "./fetch-experience.js";
|
|
10
|
+
import { readSourceMap, toExperiencePayload } from "./to-experience-payload.js";
|
|
10
11
|
import { DELIVERY_HOST, PREVIEW_HOST } from "./hosts.js";
|
|
11
12
|
export {
|
|
12
13
|
ContentfulViewDelivery2 as ContentfulViewDelivery,
|
|
@@ -16,6 +17,8 @@ export {
|
|
|
16
17
|
NotFoundError,
|
|
17
18
|
PREVIEW_HOST,
|
|
18
19
|
createClient,
|
|
19
|
-
fetchExperience
|
|
20
|
+
fetchExperience,
|
|
21
|
+
readSourceMap,
|
|
22
|
+
toExperiencePayload
|
|
20
23
|
};
|
|
21
24
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { ContentfulViewDelivery } from '@contentful/experience-delivery';\n\nexport {\n ContentfulViewDelivery,\n ContentfulViewDeliveryClient,\n} from '@contentful/experience-delivery';\nexport const NotFoundError = ContentfulViewDelivery.NotFoundError;\nexport type NotFoundError = InstanceType<typeof ContentfulViewDelivery.NotFoundError>;\nexport { ExperienceFetchError } from './errors.js';\nexport { createClient } from './create-client.js';\nexport type { CreateClientOptions } from './create-client.js';\nexport { fetchExperience } from './fetch-experience.js';\nexport type { ExperienceOptions, ClientOptions, ResolveOptions } from './fetch-experience.js';\nexport { DELIVERY_HOST, PREVIEW_HOST } from './hosts.js';\n"],"mappings":"AAAA,SAAS,8BAA8B;AAEvC;AAAA,EACE,0BAAAA;AAAA,EACA;AAAA,OACK;AACA,MAAM,gBAAgB,uBAAuB;AAEpD,SAAS,4BAA4B;AACrC,SAAS,oBAAoB;AAE7B,SAAS,uBAAuB;
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { ContentfulViewDelivery } from '@contentful/experience-delivery';\n\nexport {\n ContentfulViewDelivery,\n ContentfulViewDeliveryClient,\n} from '@contentful/experience-delivery';\nexport const NotFoundError = ContentfulViewDelivery.NotFoundError;\nexport type NotFoundError = InstanceType<typeof ContentfulViewDelivery.NotFoundError>;\nexport { ExperienceFetchError } from './errors.js';\nexport { createClient } from './create-client.js';\nexport type { CreateClientOptions } from './create-client.js';\nexport { fetchExperience } from './fetch-experience.js';\nexport { readSourceMap, toExperiencePayload } from './to-experience-payload.js';\nexport type { ExperienceResponse } from './to-experience-payload.js';\nexport type { ExperienceOptions, ClientOptions, ResolveOptions } from './fetch-experience.js';\nexport { DELIVERY_HOST, PREVIEW_HOST } from './hosts.js';\n"],"mappings":"AAAA,SAAS,8BAA8B;AAEvC;AAAA,EACE,0BAAAA;AAAA,EACA;AAAA,OACK;AACA,MAAM,gBAAgB,uBAAuB;AAEpD,SAAS,4BAA4B;AACrC,SAAS,oBAAoB;AAE7B,SAAS,uBAAuB;AAChC,SAAS,eAAe,2BAA2B;AAGnD,SAAS,eAAe,oBAAoB;","names":["ContentfulViewDelivery"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ContentfulViewDelivery } from '@contentful/experience-delivery';
|
|
2
|
+
import { ExperienceSourceMap, ExperiencePayload } from '@contentful/experiences-sdk-core';
|
|
3
|
+
|
|
4
|
+
/** Either shape the experience endpoint can return — `get()` and `getWithOverrides()` share it. */
|
|
5
|
+
type ExperienceResponse = ContentfulViewDelivery.GetExperienceResponse | ContentfulViewDelivery.GetWithOverridesExperienceResponse;
|
|
6
|
+
/**
|
|
7
|
+
* Narrow a delivery response to `ExperiencePayload`.
|
|
8
|
+
*
|
|
9
|
+
* The endpoint types its response as `HydratedView | HydratedExperienceView`.
|
|
10
|
+
* The alpha-feature header the delivery client always sends guarantees the
|
|
11
|
+
* latter, but TypeScript cannot know that, so callers were left casting by hand.
|
|
12
|
+
*
|
|
13
|
+
* `fetchExperience` uses this internally; it is exported for anyone driving the
|
|
14
|
+
* delivery client directly. Type-level only — no validation, no copying.
|
|
15
|
+
*
|
|
16
|
+
* A legacy-shaped response carries `componentType` / `template` links instead;
|
|
17
|
+
* `resolveExperience` reports those through `warnUnrenderableNode`.
|
|
18
|
+
*/
|
|
19
|
+
declare function toExperiencePayload(response: ExperienceResponse): ExperiencePayload;
|
|
20
|
+
/** Read `extensions.sourceMap` off a response. `undefined` when the request did not opt in. */
|
|
21
|
+
declare function readSourceMap(response: ExperienceResponse): ExperienceSourceMap | undefined;
|
|
22
|
+
|
|
23
|
+
export { type ExperienceResponse, readSourceMap, toExperiencePayload };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
function toExperiencePayload(response) {
|
|
2
|
+
return response;
|
|
3
|
+
}
|
|
4
|
+
function readSourceMap(response) {
|
|
5
|
+
const extensions = response.extensions;
|
|
6
|
+
return extensions?.sourceMap;
|
|
7
|
+
}
|
|
8
|
+
export {
|
|
9
|
+
readSourceMap,
|
|
10
|
+
toExperiencePayload
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=to-experience-payload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/to-experience-payload.ts"],"sourcesContent":["/*\n * Typed narrowing from a delivery-client response to the payload shape the\n * renderer consumes.\n */\n\nimport type { ContentfulViewDelivery } from '@contentful/experience-delivery';\nimport type { ExperiencePayload, ExperienceSourceMap } from '@contentful/experiences-sdk-core';\n\n/** Either shape the experience endpoint can return — `get()` and `getWithOverrides()` share it. */\nexport type ExperienceResponse =\n | ContentfulViewDelivery.GetExperienceResponse\n | ContentfulViewDelivery.GetWithOverridesExperienceResponse;\n\n/**\n * Narrow a delivery response to `ExperiencePayload`.\n *\n * The endpoint types its response as `HydratedView | HydratedExperienceView`.\n * The alpha-feature header the delivery client always sends guarantees the\n * latter, but TypeScript cannot know that, so callers were left casting by hand.\n *\n * `fetchExperience` uses this internally; it is exported for anyone driving the\n * delivery client directly. Type-level only — no validation, no copying.\n *\n * A legacy-shaped response carries `componentType` / `template` links instead;\n * `resolveExperience` reports those through `warnUnrenderableNode`.\n */\nexport function toExperiencePayload(response: ExperienceResponse): ExperiencePayload {\n return response as ContentfulViewDelivery.HydratedExperienceView as ExperiencePayload;\n}\n\n/** Read `extensions.sourceMap` off a response. `undefined` when the request did not opt in. */\nexport function readSourceMap(response: ExperienceResponse): ExperienceSourceMap | undefined {\n const extensions = (response as ContentfulViewDelivery.HydratedExperienceView).extensions;\n return extensions?.sourceMap as ExperienceSourceMap | undefined;\n}\n"],"mappings":"AA0BO,SAAS,oBAAoB,UAAiD;AACnF,SAAO;AACT;AAGO,SAAS,cAAc,UAA+D;AAC3F,QAAM,aAAc,SAA2D;AAC/E,SAAO,YAAY;AACrB;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contentful/experiences-client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.1",
|
|
4
4
|
"description": "Delivery client + fetchExperience for Contentful Experiences",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -31,6 +31,6 @@
|
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@contentful/experience-delivery": "1.0.0-dev.7",
|
|
34
|
-
"@contentful/experiences-sdk-core": "0.
|
|
34
|
+
"@contentful/experiences-sdk-core": "0.8.1"
|
|
35
35
|
}
|
|
36
36
|
}
|