@contentful/experiences-live-preview 0.5.0 → 0.6.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 +145 -0
- package/README.md +0 -4
- package/dist/experience-payload.js +1 -1
- package/dist/experience-payload.js.map +1 -1
- package/dist/fetch-preview-session.d.ts +0 -1
- package/dist/fetch-preview-session.js +2 -3
- package/dist/fetch-preview-session.js.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,148 @@
|
|
|
1
|
+
## 0.6.1 (2026-10-08)
|
|
2
|
+
|
|
3
|
+
### 🧱 Updated Dependencies
|
|
4
|
+
|
|
5
|
+
- Updated client to 0.9.1
|
|
6
|
+
|
|
7
|
+
## 0.6.0 (2026-10-08)
|
|
8
|
+
|
|
9
|
+
### 🚀 Features
|
|
10
|
+
|
|
11
|
+
- ⚠️ remove sdk viewport surface [SPA-5275] ([#220](https://github.com/contentful/experiences/pull/220))
|
|
12
|
+
|
|
13
|
+
### ⚠️ Breaking Changes
|
|
14
|
+
|
|
15
|
+
- remove sdk viewport surface [SPA-5275] ([#220](https://github.com/contentful/experiences/pull/220))
|
|
16
|
+
The SDK no longer exposes viewport definitions, viewport-aware design-value resolution, or active-viewport hooks. Use CSS media queries or application-owned matchMedia integration for responsive behavior. Delivered design property values are now flat and require no migration."
|
|
17
|
+
M AGENTS.md
|
|
18
|
+
M ARCHITECTURE.md
|
|
19
|
+
M CONTRIBUTING.md
|
|
20
|
+
M README.md
|
|
21
|
+
M catalog-info.yaml
|
|
22
|
+
M examples/angular/README.md
|
|
23
|
+
M examples/angular/src/app/components/heading.component.ts
|
|
24
|
+
D examples/angular/src/app/lib/detect-viewport.ts
|
|
25
|
+
M examples/angular/src/app/lib/experience-config.ts
|
|
26
|
+
M examples/angular/src/app/lib/experience-route-data.ts
|
|
27
|
+
M examples/angular/src/app/pages/experience-page.component.ts
|
|
28
|
+
M examples/angular/src/server.ts
|
|
29
|
+
M examples/nextjs/README.md
|
|
30
|
+
M examples/nextjs/app/[slug]/page.tsx
|
|
31
|
+
M examples/nextjs/components/Heading.tsx
|
|
32
|
+
M examples/nextjs/components/LivePreviewExperience.tsx
|
|
33
|
+
M examples/nextjs/components/Section.tsx
|
|
34
|
+
D examples/nextjs/lib/detect-viewport.ts
|
|
35
|
+
M examples/nextjs/lib/experience-config.tsx
|
|
36
|
+
M examples/scripts/bootstrap-example.ts
|
|
37
|
+
M examples/scripts/fixture/experience.ts
|
|
38
|
+
M examples/scripts/fixture/types.ts
|
|
39
|
+
M examples/sveltekit/README.md
|
|
40
|
+
M examples/sveltekit/src/lib/components/Heading.svelte
|
|
41
|
+
D examples/sveltekit/src/lib/detect-viewport.ts
|
|
42
|
+
M examples/sveltekit/src/lib/experience-config.ts
|
|
43
|
+
M examples/sveltekit/src/routes/[slug]/+page.server.ts
|
|
44
|
+
M examples/sveltekit/src/routes/[slug]/+page.svelte
|
|
45
|
+
M examples/sveltekit/vite.config.ts
|
|
46
|
+
M package-lock.json
|
|
47
|
+
M packages/adapter-angular/README.md
|
|
48
|
+
M packages/adapter-angular/src/client-experience-renderer.component.ts
|
|
49
|
+
M packages/adapter-angular/src/context.ts
|
|
50
|
+
M packages/adapter-angular/src/debug-experience.test.ts
|
|
51
|
+
M packages/adapter-angular/src/debug-panel-coverage.ssr.test.ts
|
|
52
|
+
M packages/adapter-angular/src/debug-panel-coverage.test.ts
|
|
53
|
+
M packages/adapter-angular/src/dom-parity.test.ts
|
|
54
|
+
M packages/adapter-angular/src/experience-defaults.ts
|
|
55
|
+
M packages/adapter-angular/src/experience-scope.ts
|
|
56
|
+
M packages/adapter-angular/src/index.ts
|
|
57
|
+
D packages/adapter-angular/src/inject-active-viewport.ts
|
|
58
|
+
M packages/adapter-angular/src/inject-design-values.ts
|
|
59
|
+
M packages/adapter-angular/src/inject-experience-plan.ts
|
|
60
|
+
M packages/adapter-angular/src/live-preview-experience.ssr.test.ts
|
|
61
|
+
M packages/adapter-angular/src/live-preview-experience.test.ts
|
|
62
|
+
M packages/adapter-angular/src/node-render-engine.test.ts
|
|
63
|
+
M packages/adapter-angular/src/node-render-engine.ts
|
|
64
|
+
M packages/adapter-angular/src/node-scopes.ts
|
|
65
|
+
M packages/adapter-angular/src/nodes-renderer.ssr.test.ts
|
|
66
|
+
M packages/adapter-angular/src/server-experience-renderer.component.ts
|
|
67
|
+
M packages/adapter-angular/src/server-renderer.test.ts
|
|
68
|
+
M packages/adapter-angular/src/test-fixtures/render-harness.ts
|
|
69
|
+
M packages/adapter-angular/src/types.ts
|
|
70
|
+
M packages/adapter-react/README.md
|
|
71
|
+
M packages/adapter-react/src/client-renderer.tsx
|
|
72
|
+
M packages/adapter-react/src/context.tsx
|
|
73
|
+
M packages/adapter-react/src/debug-experience.test.tsx
|
|
74
|
+
M packages/adapter-react/src/debug-experience.tsx
|
|
75
|
+
M packages/adapter-react/src/debug-panel-coverage.test.tsx
|
|
76
|
+
M packages/adapter-react/src/index.ts
|
|
77
|
+
M packages/adapter-react/src/nodes-renderer.ssr.test.tsx
|
|
78
|
+
M packages/adapter-react/src/nodes-renderer.test.tsx
|
|
79
|
+
M packages/adapter-react/src/nodes-renderer.tsx
|
|
80
|
+
M packages/adapter-react/src/server-renderer.test.tsx
|
|
81
|
+
M packages/adapter-react/src/server-renderer.tsx
|
|
82
|
+
M packages/adapter-react/src/types.ts
|
|
83
|
+
D packages/adapter-react/src/use-active-viewport.ts
|
|
84
|
+
M packages/adapter-react/src/use-design-values.tsx
|
|
85
|
+
M packages/adapter-react/src/use-experience-plan.test.tsx
|
|
86
|
+
M packages/adapter-react/src/use-experience-plan.ts
|
|
87
|
+
M packages/adapter-react/src/use-live-preview-experience.test.tsx
|
|
88
|
+
M packages/adapter-react/src/use-live-preview.test.tsx
|
|
89
|
+
M packages/adapter-svelte/README.md
|
|
90
|
+
M packages/adapter-svelte/src/ClientExperienceRenderer.svelte
|
|
91
|
+
M packages/adapter-svelte/src/DebugExperience.svelte
|
|
92
|
+
M packages/adapter-svelte/src/DebugExperience.test.ts
|
|
93
|
+
M packages/adapter-svelte/src/NodeRenderer.svelte
|
|
94
|
+
M packages/adapter-svelte/src/NodeRenderer.test.ts
|
|
95
|
+
M packages/adapter-svelte/src/NodesRenderer.svelte
|
|
96
|
+
M packages/adapter-svelte/src/ServerExperienceRenderer.svelte
|
|
97
|
+
M packages/adapter-svelte/src/component-props.ts
|
|
98
|
+
M packages/adapter-svelte/src/context.ts
|
|
99
|
+
M packages/adapter-svelte/src/debug-panel-coverage.ssr.test.ts
|
|
100
|
+
M packages/adapter-svelte/src/debug-panel-coverage.test.ts
|
|
101
|
+
M packages/adapter-svelte/src/get-design-values.ts
|
|
102
|
+
M packages/adapter-svelte/src/index.ts
|
|
103
|
+
M packages/adapter-svelte/src/nodes-renderer.ssr.test.ts
|
|
104
|
+
M packages/adapter-svelte/src/server-renderer.test.ts
|
|
105
|
+
M packages/adapter-svelte/src/types.ts
|
|
106
|
+
D packages/adapter-svelte/src/use-active-viewport.svelte.ts
|
|
107
|
+
M packages/adapter-svelte/src/use-experience-plan.test.ts
|
|
108
|
+
M packages/adapter-svelte/src/use-live-preview-experience.test.ts
|
|
109
|
+
M packages/adapter-svelte/src/use-live-preview.test.ts
|
|
110
|
+
M packages/client/src/contentful-experiences.test.ts
|
|
111
|
+
M packages/client/src/contentful-experiences.ts
|
|
112
|
+
M packages/client/src/fetch-experience.test.ts
|
|
113
|
+
M packages/client/src/fetch-experience.ts
|
|
114
|
+
M packages/core/README.md
|
|
115
|
+
A packages/core/src/design-properties.test.ts
|
|
116
|
+
A packages/core/src/design-properties.ts
|
|
117
|
+
M packages/core/src/index.ts
|
|
118
|
+
M packages/core/src/resolve-experience.test.ts
|
|
119
|
+
M packages/core/src/resolve-experience.ts
|
|
120
|
+
M packages/core/src/types.ts
|
|
121
|
+
D packages/core/src/viewport.test.ts
|
|
122
|
+
D packages/core/src/viewport.ts
|
|
123
|
+
M packages/design/README.md
|
|
124
|
+
M packages/design/package.json
|
|
125
|
+
M packages/design/src/index.ts
|
|
126
|
+
D packages/design/src/media-query-matchers.ts
|
|
127
|
+
D packages/design/src/select-resolved-design.ts
|
|
128
|
+
D packages/design/src/viewport.test.ts
|
|
129
|
+
D packages/design/src/viewport.ts
|
|
130
|
+
M packages/live-preview/README.md
|
|
131
|
+
M packages/live-preview/src/experience-payload.ts
|
|
132
|
+
M packages/live-preview/src/fetch-preview-session.test.ts
|
|
133
|
+
M packages/live-preview/src/fetch-preview-session.ts
|
|
134
|
+
M packages/live-preview/src/live-preview-client.test.ts
|
|
135
|
+
M packages/node/README.md
|
|
136
|
+
M packages/node/src/contentful-experiences.test.ts
|
|
137
|
+
M packages/node/src/contentful-experiences.ts
|
|
138
|
+
M packages/web/README.md
|
|
139
|
+
M packages/web/src/contentful-experiences.test.ts
|
|
140
|
+
|
|
141
|
+
### 🧱 Updated Dependencies
|
|
142
|
+
|
|
143
|
+
- Updated client to 0.9.0
|
|
144
|
+
- Updated core to 0.12.0
|
|
145
|
+
|
|
1
146
|
## 0.5.0 (2026-10-06)
|
|
2
147
|
|
|
3
148
|
### 🧱 Updated Dependencies
|
package/README.md
CHANGED
|
@@ -31,7 +31,6 @@ type PreviewSessionResolveOptions = {
|
|
|
31
31
|
config: ResolverConfig;
|
|
32
32
|
metadata?: Record<string, unknown>;
|
|
33
33
|
debug?: boolean;
|
|
34
|
-
initialViewportId?: string;
|
|
35
34
|
};
|
|
36
35
|
|
|
37
36
|
fetchPreviewSession(
|
|
@@ -98,9 +97,6 @@ it until a valid update arrives. Without `initialPayload`, the data starts as
|
|
|
98
97
|
`getResult().error` is set when the live-preview connection fails. The last
|
|
99
98
|
valid data remains available in `getResult().data`.
|
|
100
99
|
|
|
101
|
-
A valid payload may omit the deprecated `viewports` field while the APIs migrate
|
|
102
|
-
to flat design-property values.
|
|
103
|
-
|
|
104
100
|
`sessionId` and `previewToken` are optional. The package opens a socket only when
|
|
105
101
|
both values are provided. The caller supplies the session ID through
|
|
106
102
|
`PreviewSessionOptions`.
|
|
@@ -2,7 +2,7 @@ function isRecord(value) {
|
|
|
2
2
|
return typeof value === "object" && value !== null;
|
|
3
3
|
}
|
|
4
4
|
function isExperiencePayload(value) {
|
|
5
|
-
if (!isRecord(value) || !Array.isArray(value.nodes)
|
|
5
|
+
if (!isRecord(value) || !Array.isArray(value.nodes)) {
|
|
6
6
|
return false;
|
|
7
7
|
}
|
|
8
8
|
const sys = value.sys;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/experience-payload.ts"],"sourcesContent":["import type { ExperiencePayload } from '@contentful/experiences-sdk-core';\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n\nexport function isExperiencePayload(value: unknown): value is ExperiencePayload {\n if (
|
|
1
|
+
{"version":3,"sources":["../src/experience-payload.ts"],"sourcesContent":["import type { ExperiencePayload } from '@contentful/experiences-sdk-core';\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null;\n}\n\nexport function isExperiencePayload(value: unknown): value is ExperiencePayload {\n if (!isRecord(value) || !Array.isArray(value.nodes)) {\n return false;\n }\n\n const sys = value.sys;\n return isRecord(sys) && !Array.isArray(sys) && sys.type === 'Experience';\n}\n\nexport function isErrorPayload(value: unknown): boolean {\n if (!isRecord(value) || !isRecord(value.sys) || Array.isArray(value.sys)) return false;\n return value.sys.type === 'Error' && typeof value.sys.id === 'string';\n}\n"],"mappings":"AAEO,SAAS,SAAS,OAAkD;AACzE,SAAO,OAAO,UAAU,YAAY,UAAU;AAChD;AAEO,SAAS,oBAAoB,OAA4C;AAC9E,MAAI,CAAC,SAAS,KAAK,KAAK,CAAC,MAAM,QAAQ,MAAM,KAAK,GAAG;AACnD,WAAO;AAAA,EACT;AAEA,QAAM,MAAM,MAAM;AAClB,SAAO,SAAS,GAAG,KAAK,CAAC,MAAM,QAAQ,GAAG,KAAK,IAAI,SAAS;AAC9D;AAEO,SAAS,eAAe,OAAyB;AACtD,MAAI,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,MAAM,GAAG,KAAK,MAAM,QAAQ,MAAM,GAAG,EAAG,QAAO;AACjF,SAAO,MAAM,IAAI,SAAS,WAAW,OAAO,MAAM,IAAI,OAAO;AAC/D;","names":[]}
|
|
@@ -9,7 +9,7 @@ import { previewSessionGetExperienceUrl } from "./preview-session-url.js";
|
|
|
9
9
|
async function fetchPreviewSession(previewSessionOptions, clientOptions, resolveOptions) {
|
|
10
10
|
const { spaceId, environmentId, sessionId, resourceResolution } = previewSessionOptions;
|
|
11
11
|
const { previewToken, host } = clientOptions;
|
|
12
|
-
const { config, metadata, debug
|
|
12
|
+
const { config, metadata, debug } = resolveOptions;
|
|
13
13
|
const log = createDebugLogger(debug, "live-preview");
|
|
14
14
|
const client = createClient({
|
|
15
15
|
accessToken: previewToken,
|
|
@@ -45,8 +45,7 @@ async function fetchPreviewSession(previewSessionOptions, clientOptions, resolve
|
|
|
45
45
|
log.lazy("received raw payload", () => payload);
|
|
46
46
|
return resolveExperience(payload, config, {
|
|
47
47
|
metadata,
|
|
48
|
-
debug
|
|
49
|
-
initialViewportId
|
|
48
|
+
debug
|
|
50
49
|
});
|
|
51
50
|
}
|
|
52
51
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/fetch-preview-session.ts"],"sourcesContent":["import { createClient, NotFoundError, PREVIEW_HOST } from '@contentful/experiences-client';\nimport {\n createDebugLogger,\n resolveExperience,\n type ExperiencePayload,\n type PortableRenderPlan,\n type ResolverConfig,\n} from '@contentful/experiences-sdk-core';\nimport { PreviewSessionFetchError } from './errors.js';\nimport { isExperiencePayload } from './experience-payload.js';\nimport { previewSessionGetExperienceUrl } from './preview-session-url.js';\n\nexport type PreviewSessionExperienceOptions = {\n spaceId: string;\n environmentId: string;\n sessionId: string;\n /**\n * Opaque encoded resource-resolution value for referenced spaces.\n */\n resourceResolution?: string;\n};\n\nexport type PreviewSessionClientOptions = {\n previewToken: string;\n host?: string;\n};\n\nexport type PreviewSessionResolveOptions = {\n config: ResolverConfig;\n metadata?: Record<string, unknown>;\n debug?: boolean;\n
|
|
1
|
+
{"version":3,"sources":["../src/fetch-preview-session.ts"],"sourcesContent":["import { createClient, NotFoundError, PREVIEW_HOST } from '@contentful/experiences-client';\nimport {\n createDebugLogger,\n resolveExperience,\n type ExperiencePayload,\n type PortableRenderPlan,\n type ResolverConfig,\n} from '@contentful/experiences-sdk-core';\nimport { PreviewSessionFetchError } from './errors.js';\nimport { isExperiencePayload } from './experience-payload.js';\nimport { previewSessionGetExperienceUrl } from './preview-session-url.js';\n\nexport type PreviewSessionExperienceOptions = {\n spaceId: string;\n environmentId: string;\n sessionId: string;\n /**\n * Opaque encoded resource-resolution value for referenced spaces.\n */\n resourceResolution?: string;\n};\n\nexport type PreviewSessionClientOptions = {\n previewToken: string;\n host?: string;\n};\n\nexport type PreviewSessionResolveOptions = {\n config: ResolverConfig;\n metadata?: Record<string, unknown>;\n debug?: boolean;\n};\n\n/**\n * Fetches the current hydrated Experience for a Preview Session and resolves\n * it into the renderer's PortableRenderPlan.\n */\nexport async function fetchPreviewSession(\n previewSessionOptions: PreviewSessionExperienceOptions,\n clientOptions: PreviewSessionClientOptions,\n resolveOptions: PreviewSessionResolveOptions\n): Promise<PortableRenderPlan> {\n const { spaceId, environmentId, sessionId, resourceResolution } = previewSessionOptions;\n const { previewToken, host } = clientOptions;\n const { config, metadata, debug } = resolveOptions;\n const log = createDebugLogger(debug, 'live-preview');\n const client = createClient({\n accessToken: previewToken,\n host: host ?? PREVIEW_HOST,\n });\n\n log.log('fetching preview session experience', { spaceId, environmentId, sessionId });\n\n let payload: ExperiencePayload;\n try {\n const response = await client.fetch(\n previewSessionGetExperienceUrl({ ...previewSessionOptions, resourceResolution })\n );\n if (response.status === 404) {\n throw new NotFoundError();\n }\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n }\n\n const responsePayload: unknown = await response.json();\n if (!isExperiencePayload(responsePayload)) {\n throw new Error('Response was not a valid Experience payload');\n }\n payload = responsePayload;\n } catch (error) {\n if (error instanceof NotFoundError) {\n throw error;\n }\n const reason = error instanceof Error ? error.message : String(error);\n throw new PreviewSessionFetchError(\n `Failed to fetch Preview Session \"${sessionId}\" (space \"${spaceId}\", environment ` +\n `\"${environmentId}\"): ${reason}`,\n { spaceId, environmentId, sessionId, cause: error }\n );\n }\n\n log.lazy('received raw payload', () => payload);\n\n return resolveExperience(payload, config, {\n metadata,\n debug,\n });\n}\n"],"mappings":"AAAA,SAAS,cAAc,eAAe,oBAAoB;AAC1D;AAAA,EACE;AAAA,EACA;AAAA,OAIK;AACP,SAAS,gCAAgC;AACzC,SAAS,2BAA2B;AACpC,SAAS,sCAAsC;AA2B/C,eAAsB,oBACpB,uBACA,eACA,gBAC6B;AAC7B,QAAM,EAAE,SAAS,eAAe,WAAW,mBAAmB,IAAI;AAClE,QAAM,EAAE,cAAc,KAAK,IAAI;AAC/B,QAAM,EAAE,QAAQ,UAAU,MAAM,IAAI;AACpC,QAAM,MAAM,kBAAkB,OAAO,cAAc;AACnD,QAAM,SAAS,aAAa;AAAA,IAC1B,aAAa;AAAA,IACb,MAAM,QAAQ;AAAA,EAChB,CAAC;AAED,MAAI,IAAI,uCAAuC,EAAE,SAAS,eAAe,UAAU,CAAC;AAEpF,MAAI;AACJ,MAAI;AACF,UAAM,WAAW,MAAM,OAAO;AAAA,MAC5B,+BAA+B,EAAE,GAAG,uBAAuB,mBAAmB,CAAC;AAAA,IACjF;AACA,QAAI,SAAS,WAAW,KAAK;AAC3B,YAAM,IAAI,cAAc;AAAA,IAC1B;AACA,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,IAAI,MAAM,QAAQ,SAAS,MAAM,EAAE;AAAA,IAC3C;AAEA,UAAM,kBAA2B,MAAM,SAAS,KAAK;AACrD,QAAI,CAAC,oBAAoB,eAAe,GAAG;AACzC,YAAM,IAAI,MAAM,6CAA6C;AAAA,IAC/D;AACA,cAAU;AAAA,EACZ,SAAS,OAAO;AACd,QAAI,iBAAiB,eAAe;AAClC,YAAM;AAAA,IACR;AACA,UAAM,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACpE,UAAM,IAAI;AAAA,MACR,oCAAoC,SAAS,aAAa,OAAO,mBAC3D,aAAa,OAAO,MAAM;AAAA,MAChC,EAAE,SAAS,eAAe,WAAW,OAAO,MAAM;AAAA,IACpD;AAAA,EACF;AAEA,MAAI,KAAK,wBAAwB,MAAM,OAAO;AAE9C,SAAO,kBAAkB,SAAS,QAAQ;AAAA,IACxC;AAAA,IACA;AAAA,EACF,CAAC;AACH;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contentful/experiences-live-preview",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.1",
|
|
4
4
|
"description": "Optional live preview for Contentful Experiences",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"directory": "packages/live-preview"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@contentful/experiences-client": "0.
|
|
34
|
-
"@contentful/experiences-sdk-core": "0.
|
|
33
|
+
"@contentful/experiences-client": "0.9.1",
|
|
34
|
+
"@contentful/experiences-sdk-core": "0.12.0"
|
|
35
35
|
}
|
|
36
36
|
}
|