@makeswift/runtime 0.28.7-canary.4 → 0.28.7-canary.6
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/dist/cjs/api/api-resources-client.js.map +1 -1
- package/dist/cjs/api/graphql/documents/queries.js +6 -6
- package/dist/cjs/api/graphql/documents/queries.js.map +1 -1
- package/dist/cjs/api/graphql/generated/types.js.map +1 -1
- package/dist/cjs/api/graphql-api-client.js +23 -1
- package/dist/cjs/api/graphql-api-client.js.map +1 -1
- package/dist/cjs/api/{client.js → host-api-resources-client.js} +7 -7
- package/dist/cjs/api/host-api-resources-client.js.map +1 -0
- package/dist/cjs/api/rest-api-client.js +186 -0
- package/dist/cjs/api/rest-api-client.js.map +1 -0
- package/dist/cjs/api/schema/index.js +23 -0
- package/dist/cjs/api/schema/index.js.map +1 -0
- package/dist/cjs/api/schema/page-pathname-slice.js +38 -0
- package/dist/cjs/api/schema/page-pathname-slice.js.map +1 -0
- package/dist/cjs/api/types.js.map +1 -1
- package/dist/cjs/api-handler/handlers/manifest.js +1 -1
- package/dist/cjs/client/component-snapshot.js +63 -0
- package/dist/cjs/client/component-snapshot.js.map +1 -0
- package/dist/cjs/client/index.js +103 -360
- package/dist/cjs/client/index.js.map +1 -1
- package/dist/cjs/client/page-snapshot.js +33 -0
- package/dist/cjs/client/page-snapshot.js.map +1 -0
- package/dist/cjs/client/schema/component-document.js +45 -0
- package/dist/cjs/client/schema/component-document.js.map +1 -0
- package/dist/cjs/client/schema/fonts.js +38 -0
- package/dist/cjs/client/schema/fonts.js.map +1 -0
- package/dist/cjs/client/schema/get-page.js +39 -0
- package/dist/cjs/client/schema/get-page.js.map +1 -0
- package/dist/cjs/client/schema/get-pages.js +68 -0
- package/dist/cjs/client/schema/get-pages.js.map +1 -0
- package/dist/cjs/client/schema/index.js +31 -0
- package/dist/cjs/client/schema/index.js.map +1 -0
- package/dist/cjs/client/schema/preview-token-payload.js +34 -0
- package/dist/cjs/client/schema/preview-token-payload.js.map +1 -0
- package/dist/cjs/next/client.js +0 -8
- package/dist/cjs/next/client.js.map +1 -1
- package/dist/cjs/next/components/tests/controls/color-control/fixtures.js.map +1 -1
- package/dist/cjs/next/components/tests/controls/page-control-prop-rendering.js.map +1 -1
- package/dist/cjs/next/components/tests/controls/rich-text-v2-control/fixtures.js.map +1 -1
- package/dist/cjs/next/fetch.js.map +1 -1
- package/dist/cjs/next/testing/element-data.js +3 -3
- package/dist/cjs/next/testing/element-data.js.map +1 -1
- package/dist/cjs/runtimes/react/hooks/use-cache-data.js.map +1 -1
- package/dist/cjs/runtimes/react/runtime-core.js +2 -2
- package/dist/cjs/runtimes/react/runtime-core.js.map +1 -1
- package/dist/cjs/runtimes/react/testing/react-runtime.js +7 -1
- package/dist/cjs/runtimes/react/testing/react-runtime.js.map +1 -1
- package/dist/cjs/state/api-client/fetch-api-resource.js +8 -8
- package/dist/cjs/state/api-client/fetch-api-resource.js.map +1 -1
- package/dist/esm/api/api-resources-client.js.map +1 -1
- package/dist/esm/api/graphql/documents/queries.js +4 -4
- package/dist/esm/api/graphql/documents/queries.js.map +1 -1
- package/dist/esm/api/graphql/generated/types.js.map +1 -1
- package/dist/esm/api/graphql-api-client.js +29 -2
- package/dist/esm/api/graphql-api-client.js.map +1 -1
- package/dist/esm/api/{client.js → host-api-resources-client.js} +3 -3
- package/dist/esm/api/host-api-resources-client.js.map +1 -0
- package/dist/esm/api/rest-api-client.js +151 -0
- package/dist/esm/api/rest-api-client.js.map +1 -0
- package/dist/esm/api/schema/index.js +2 -0
- package/dist/esm/api/schema/index.js.map +1 -0
- package/dist/esm/api/schema/page-pathname-slice.js +14 -0
- package/dist/esm/api/schema/page-pathname-slice.js.map +1 -0
- package/dist/esm/api/types.js.map +1 -1
- package/dist/esm/api-handler/handlers/manifest.js +1 -1
- package/dist/esm/client/component-snapshot.js +39 -0
- package/dist/esm/client/component-snapshot.js.map +1 -0
- package/dist/esm/client/index.js +68 -329
- package/dist/esm/client/index.js.map +1 -1
- package/dist/esm/client/page-snapshot.js +9 -0
- package/dist/esm/client/page-snapshot.js.map +1 -0
- package/dist/esm/client/schema/component-document.js +20 -0
- package/dist/esm/client/schema/component-document.js.map +1 -0
- package/dist/esm/client/schema/fonts.js +14 -0
- package/dist/esm/client/schema/fonts.js.map +1 -0
- package/dist/esm/client/schema/get-page.js +15 -0
- package/dist/esm/client/schema/get-page.js.map +1 -0
- package/dist/esm/client/schema/get-pages.js +42 -0
- package/dist/esm/client/schema/get-pages.js.map +1 -0
- package/dist/esm/client/schema/index.js +6 -0
- package/dist/esm/client/schema/index.js.map +1 -0
- package/dist/esm/client/schema/preview-token-payload.js +10 -0
- package/dist/esm/client/schema/preview-token-payload.js.map +1 -0
- package/dist/esm/next/client.js +0 -8
- package/dist/esm/next/client.js.map +1 -1
- package/dist/esm/next/components/tests/controls/color-control/fixtures.js.map +1 -1
- package/dist/esm/next/components/tests/controls/page-control-prop-rendering.js.map +1 -1
- package/dist/esm/next/components/tests/controls/rich-text-v2-control/fixtures.js.map +1 -1
- package/dist/esm/next/fetch.js.map +1 -1
- package/dist/esm/next/testing/element-data.js +1 -1
- package/dist/esm/next/testing/element-data.js.map +1 -1
- package/dist/esm/runtimes/react/hooks/use-cache-data.js.map +1 -1
- package/dist/esm/runtimes/react/runtime-core.js +2 -2
- package/dist/esm/runtimes/react/runtime-core.js.map +1 -1
- package/dist/esm/runtimes/react/testing/react-runtime.js +7 -1
- package/dist/esm/runtimes/react/testing/react-runtime.js.map +1 -1
- package/dist/esm/state/api-client/fetch-api-resource.js +1 -1
- package/dist/esm/state/api-client/fetch-api-resource.js.map +1 -1
- package/dist/types/api/__tests__/rest-api-client.error-handling.test.d.ts +2 -0
- package/dist/types/api/__tests__/rest-api-client.error-handling.test.d.ts.map +1 -0
- package/dist/types/api/__tests__/rest-api-client.get-resources.test.d.ts +2 -0
- package/dist/types/api/__tests__/rest-api-client.get-resources.test.d.ts.map +1 -0
- package/dist/types/api/api-resources-client.d.ts.map +1 -1
- package/dist/types/api/graphql/documents/queries.d.ts +1 -1
- package/dist/types/api/graphql/documents/queries.d.ts.map +1 -1
- package/dist/types/api/graphql/generated/types.d.ts +2 -2
- package/dist/types/api/graphql/generated/types.d.ts.map +1 -1
- package/dist/types/api/graphql-api-client.d.ts +5 -0
- package/dist/types/api/graphql-api-client.d.ts.map +1 -1
- package/dist/types/api/{client.d.ts → host-api-resources-client.d.ts} +3 -4
- package/dist/types/api/host-api-resources-client.d.ts.map +1 -0
- package/dist/types/api/rest-api-client.d.ts +25 -0
- package/dist/types/api/rest-api-client.d.ts.map +1 -0
- package/dist/types/api/schema/index.d.ts +2 -0
- package/dist/types/api/schema/index.d.ts.map +1 -0
- package/dist/types/api/schema/page-pathname-slice.d.ts +21 -0
- package/dist/types/api/schema/page-pathname-slice.d.ts.map +1 -0
- package/dist/types/api/types.d.ts +1 -0
- package/dist/types/api/types.d.ts.map +1 -1
- package/dist/types/client/component-snapshot.d.ts +25 -0
- package/dist/types/client/component-snapshot.d.ts.map +1 -0
- package/dist/types/client/index.d.ts +19 -640
- package/dist/types/client/index.d.ts.map +1 -1
- package/dist/types/client/page-snapshot.d.ts +62 -0
- package/dist/types/client/page-snapshot.d.ts.map +1 -0
- package/dist/types/client/schema/component-document.d.ts +285 -0
- package/dist/types/client/schema/component-document.d.ts.map +1 -0
- package/dist/types/client/schema/fonts.d.ts +27 -0
- package/dist/types/client/schema/fonts.d.ts.map +1 -0
- package/dist/types/client/schema/get-page.d.ts +30 -0
- package/dist/types/client/schema/get-page.d.ts.map +1 -0
- package/dist/types/client/schema/get-pages.d.ts +202 -0
- package/dist/types/client/schema/get-pages.d.ts.map +1 -0
- package/dist/types/client/schema/index.d.ts +6 -0
- package/dist/types/client/schema/index.d.ts.map +1 -0
- package/dist/types/client/schema/preview-token-payload.d.ts +19 -0
- package/dist/types/client/schema/preview-token-payload.d.ts.map +1 -0
- package/dist/types/next/client.d.ts +0 -1
- package/dist/types/next/client.d.ts.map +1 -1
- package/dist/types/next/components/tests/controls/color-control/fixtures.d.ts +1 -1
- package/dist/types/next/components/tests/controls/color-control/fixtures.d.ts.map +1 -1
- package/dist/types/next/components/tests/controls/page-control-prop-rendering.d.ts +1 -1
- package/dist/types/next/components/tests/controls/page-control-prop-rendering.d.ts.map +1 -1
- package/dist/types/next/components/tests/controls/rich-text-v2-control/fixtures.d.ts +1 -1
- package/dist/types/next/components/tests/controls/rich-text-v2-control/fixtures.d.ts.map +1 -1
- package/dist/types/next/fetch.d.ts +1 -1
- package/dist/types/next/fetch.d.ts.map +1 -1
- package/dist/types/runtimes/react/hooks/use-cache-data.d.ts +1 -1
- package/dist/types/runtimes/react/hooks/use-cache-data.d.ts.map +1 -1
- package/dist/types/runtimes/react/runtime-core.d.ts +1 -1
- package/dist/types/runtimes/react/runtime-core.d.ts.map +1 -1
- package/dist/types/runtimes/react/testing/react-runtime.d.ts.map +1 -1
- package/dist/types/state/api-client/fetch-api-resource.d.ts +1 -2
- package/dist/types/state/api-client/fetch-api-resource.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/cjs/api/client.js.map +0 -1
- package/dist/esm/api/client.js.map +0 -1
- package/dist/types/api/client.d.ts.map +0 -1
- package/dist/types/client/tests/client.error-handling.test.d.ts +0 -2
- package/dist/types/client/tests/client.error-handling.test.d.ts.map +0 -1
- package/dist/types/client/tests/client.get-resources.test.d.ts +0 -2
- package/dist/types/client/tests/client.get-resources.test.d.ts.map +0 -1
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import * as Schema from "./schema";
|
|
2
|
+
class MakeswiftRestAPIClient {
|
|
3
|
+
_fetch;
|
|
4
|
+
apiKey;
|
|
5
|
+
apiOrigin;
|
|
6
|
+
constructor({
|
|
7
|
+
fetch,
|
|
8
|
+
apiKey,
|
|
9
|
+
apiOrigin
|
|
10
|
+
}) {
|
|
11
|
+
this._fetch = fetch;
|
|
12
|
+
this.apiKey = apiKey;
|
|
13
|
+
this.apiOrigin = apiOrigin;
|
|
14
|
+
}
|
|
15
|
+
async getSwatch(swatchId, siteVersion) {
|
|
16
|
+
const response = await this.fetch(`v3/swatches/${swatchId}`, siteVersion);
|
|
17
|
+
if (!response.ok) {
|
|
18
|
+
const failedBody = await failedResponseBody(response);
|
|
19
|
+
if (response.status !== 404) {
|
|
20
|
+
console.error(`Failed to get swatch '${swatchId}'`, {
|
|
21
|
+
response: failedBody,
|
|
22
|
+
siteVersion
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
const swatch = await response.json();
|
|
28
|
+
return swatch;
|
|
29
|
+
}
|
|
30
|
+
async getTypography(typographyId, siteVersion) {
|
|
31
|
+
const response = await this.fetch(`v3/typographies/${typographyId}`, siteVersion);
|
|
32
|
+
if (!response.ok) {
|
|
33
|
+
const failedBody = await failedResponseBody(response);
|
|
34
|
+
if (response.status !== 404) {
|
|
35
|
+
console.error(`Failed to get typography '${typographyId}'`, {
|
|
36
|
+
response: failedBody,
|
|
37
|
+
siteVersion
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
const typography = await response.json();
|
|
43
|
+
return typography;
|
|
44
|
+
}
|
|
45
|
+
async getGlobalElement(globalElementId, siteVersion) {
|
|
46
|
+
const response = await this.fetch(`v3/global-elements/${globalElementId}`, siteVersion);
|
|
47
|
+
if (!response.ok) {
|
|
48
|
+
const failedBody = await failedResponseBody(response);
|
|
49
|
+
if (response.status !== 404) {
|
|
50
|
+
console.error(`Failed to get global element '${globalElementId}'`, {
|
|
51
|
+
response: failedBody,
|
|
52
|
+
siteVersion
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
const globalElement = await response.json();
|
|
58
|
+
return globalElement;
|
|
59
|
+
}
|
|
60
|
+
async getLocalizedGlobalElement(globalElementId, locale, siteVersion) {
|
|
61
|
+
const response = await this.fetch(
|
|
62
|
+
`v3/localized-global-elements/${globalElementId}?locale=${locale}`,
|
|
63
|
+
siteVersion
|
|
64
|
+
);
|
|
65
|
+
if (!response.ok) {
|
|
66
|
+
const failedBody = await failedResponseBody(response);
|
|
67
|
+
if (response.status !== 404) {
|
|
68
|
+
console.error(`Failed to get localized global element '${globalElementId}'`, {
|
|
69
|
+
response: failedBody,
|
|
70
|
+
siteVersion,
|
|
71
|
+
locale
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
const localizedGlobalElement = await response.json();
|
|
77
|
+
return localizedGlobalElement;
|
|
78
|
+
}
|
|
79
|
+
async getPagePathnameSlices(pageIds, siteVersion, { locale }) {
|
|
80
|
+
if (pageIds.length === 0)
|
|
81
|
+
return [];
|
|
82
|
+
const url = new URL(`v3/page-pathname-slices/bulk`, this.apiOrigin);
|
|
83
|
+
pageIds.forEach((id) => url.searchParams.append("ids", id));
|
|
84
|
+
if (locale != null)
|
|
85
|
+
url.searchParams.set("locale", locale);
|
|
86
|
+
const response = await this.fetch(url.pathname + url.search, siteVersion);
|
|
87
|
+
if (!response.ok) {
|
|
88
|
+
console.error(`Failed to get page pathname slice(s) for ${pageIds.join(", ")}`, {
|
|
89
|
+
response: await failedResponseBody(response),
|
|
90
|
+
siteVersion,
|
|
91
|
+
locale
|
|
92
|
+
});
|
|
93
|
+
return [];
|
|
94
|
+
}
|
|
95
|
+
const json = await response.json();
|
|
96
|
+
const pagePathnameSlices = Schema.pagePathnameSlices.parse(json);
|
|
97
|
+
return pagePathnameSlices.map((pagePathnameSlice) => {
|
|
98
|
+
if (pagePathnameSlice == null)
|
|
99
|
+
return null;
|
|
100
|
+
return {
|
|
101
|
+
...pagePathnameSlice,
|
|
102
|
+
id: pagePathnameSlice.basePageId,
|
|
103
|
+
localizedPathname: pagePathnameSlice.localizedPathname ?? null
|
|
104
|
+
};
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
async getPagePathnameSlice(pageId, siteVersion, { locale } = {}) {
|
|
108
|
+
const pagePathnameSlices = await this.getPagePathnameSlices([pageId], siteVersion, { locale });
|
|
109
|
+
return pagePathnameSlices.at(0) ?? null;
|
|
110
|
+
}
|
|
111
|
+
async fetch(path, siteVersion, init) {
|
|
112
|
+
const requestUrl = new URL(path, this.apiOrigin);
|
|
113
|
+
const requestHeaders = new Headers({
|
|
114
|
+
"x-api-key": this.apiKey,
|
|
115
|
+
"makeswift-site-api-key": this.apiKey,
|
|
116
|
+
"makeswift-runtime-version": "0.28.7-canary.6"
|
|
117
|
+
});
|
|
118
|
+
if (siteVersion?.token) {
|
|
119
|
+
requestUrl.searchParams.set("version", siteVersion.version);
|
|
120
|
+
requestHeaders.set("makeswift-preview-token", siteVersion.token);
|
|
121
|
+
}
|
|
122
|
+
if (init?.headers) {
|
|
123
|
+
new Headers(init.headers).forEach((value, key) => {
|
|
124
|
+
requestHeaders.set(key, value);
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
const response = await this._fetch(requestUrl.toString(), {
|
|
128
|
+
...init,
|
|
129
|
+
headers: requestHeaders,
|
|
130
|
+
...siteVersion != null ? { cache: "no-store" } : {}
|
|
131
|
+
});
|
|
132
|
+
return response;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
async function failedResponseBody(response) {
|
|
136
|
+
try {
|
|
137
|
+
const text = await response.text();
|
|
138
|
+
try {
|
|
139
|
+
return JSON.parse(text);
|
|
140
|
+
} catch {
|
|
141
|
+
return text;
|
|
142
|
+
}
|
|
143
|
+
} catch (e) {
|
|
144
|
+
return `Failed to extract response body: ${e}`;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
export {
|
|
148
|
+
MakeswiftRestAPIClient,
|
|
149
|
+
failedResponseBody
|
|
150
|
+
};
|
|
151
|
+
//# sourceMappingURL=rest-api-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/api/rest-api-client.ts"],"sourcesContent":["import {\n type GlobalElement,\n type LocalizedGlobalElement,\n type PagePathnameSlice,\n type Swatch,\n type Typography,\n type HttpFetch,\n} from './types'\n\nimport { type SiteVersion } from './site-version'\nimport * as Schema from './schema'\n\nexport class MakeswiftRestAPIClient {\n private _fetch: HttpFetch\n\n readonly apiKey: string\n readonly apiOrigin: string\n\n constructor({\n fetch,\n apiKey,\n apiOrigin,\n }: {\n fetch: HttpFetch\n apiKey: string\n apiOrigin: string\n }) {\n this._fetch = fetch\n this.apiKey = apiKey\n this.apiOrigin = apiOrigin\n }\n\n async getSwatch(swatchId: string, siteVersion: SiteVersion | null): Promise<Swatch | null> {\n const response = await this.fetch(`v3/swatches/${swatchId}`, siteVersion)\n\n if (!response.ok) {\n const failedBody = await failedResponseBody(response)\n if (response.status !== 404) {\n console.error(`Failed to get swatch '${swatchId}'`, {\n response: failedBody,\n siteVersion,\n })\n }\n\n return null\n }\n\n const swatch = await response.json()\n\n return swatch\n }\n\n async getTypography(\n typographyId: string,\n siteVersion: SiteVersion | null,\n ): Promise<Typography | null> {\n const response = await this.fetch(`v3/typographies/${typographyId}`, siteVersion)\n\n if (!response.ok) {\n const failedBody = await failedResponseBody(response)\n if (response.status !== 404) {\n console.error(`Failed to get typography '${typographyId}'`, {\n response: failedBody,\n siteVersion,\n })\n }\n\n return null\n }\n\n const typography = await response.json()\n\n return typography\n }\n\n async getGlobalElement(\n globalElementId: string,\n siteVersion: SiteVersion | null,\n ): Promise<GlobalElement | null> {\n const response = await this.fetch(`v3/global-elements/${globalElementId}`, siteVersion)\n\n if (!response.ok) {\n const failedBody = await failedResponseBody(response)\n if (response.status !== 404) {\n console.error(`Failed to get global element '${globalElementId}'`, {\n response: failedBody,\n siteVersion,\n })\n }\n\n return null\n }\n\n const globalElement = await response.json()\n\n return globalElement\n }\n\n async getLocalizedGlobalElement(\n globalElementId: string,\n locale: string,\n siteVersion: SiteVersion | null,\n ): Promise<LocalizedGlobalElement | null> {\n const response = await this.fetch(\n `v3/localized-global-elements/${globalElementId}?locale=${locale}`,\n siteVersion,\n )\n\n if (!response.ok) {\n const failedBody = await failedResponseBody(response)\n if (response.status !== 404) {\n console.error(`Failed to get localized global element '${globalElementId}'`, {\n response: failedBody,\n siteVersion,\n locale,\n })\n }\n\n return null\n }\n\n const localizedGlobalElement = await response.json()\n\n return localizedGlobalElement\n }\n\n async getPagePathnameSlices(\n pageIds: string[],\n siteVersion: SiteVersion | null,\n { locale }: { locale?: string | null },\n ): Promise<(PagePathnameSlice | null)[]> {\n if (pageIds.length === 0) return []\n\n const url = new URL(`v3/page-pathname-slices/bulk`, this.apiOrigin)\n\n pageIds.forEach(id => url.searchParams.append('ids', id))\n if (locale != null) url.searchParams.set('locale', locale)\n\n const response = await this.fetch(url.pathname + url.search, siteVersion)\n\n if (!response.ok) {\n console.error(`Failed to get page pathname slice(s) for ${pageIds.join(', ')}`, {\n response: await failedResponseBody(response),\n siteVersion,\n locale,\n })\n\n return []\n }\n\n const json = await response.json()\n\n const pagePathnameSlices = Schema.pagePathnameSlices.parse(json)\n\n // We're mapping the basePageId to be the id, because we're still using the GraphQL\n // fragment as our APIResource. The id on the APIResource needs to match the pageId\n // so that we can find the corresponding page pathname slice when we call getPagePathnameSlice(pageId).\n // TODO: Update this once we move away from the GraphQL fragments.\n return pagePathnameSlices.map(pagePathnameSlice => {\n if (pagePathnameSlice == null) return null\n\n return {\n ...pagePathnameSlice,\n id: pagePathnameSlice.basePageId,\n localizedPathname: pagePathnameSlice.localizedPathname ?? null,\n }\n })\n }\n\n async getPagePathnameSlice(\n pageId: string,\n siteVersion: SiteVersion | null,\n { locale }: { locale?: string } = {},\n ): Promise<PagePathnameSlice | null> {\n const pagePathnameSlices = await this.getPagePathnameSlices([pageId], siteVersion, { locale })\n\n return pagePathnameSlices.at(0) ?? null\n }\n\n protected async fetch(\n path: string,\n siteVersion: SiteVersion | null,\n init?: RequestInit,\n ): Promise<Response> {\n const requestUrl = new URL(path, this.apiOrigin)\n\n const requestHeaders = new Headers({\n 'x-api-key': this.apiKey,\n 'makeswift-site-api-key': this.apiKey,\n 'makeswift-runtime-version': PACKAGE_VERSION,\n })\n\n if (siteVersion?.token) {\n requestUrl.searchParams.set('version', siteVersion.version)\n requestHeaders.set('makeswift-preview-token', siteVersion.token)\n }\n\n if (init?.headers) {\n new Headers(init.headers).forEach((value, key) => {\n requestHeaders.set(key, value)\n })\n }\n\n const response = await this._fetch(requestUrl.toString(), {\n ...init,\n headers: requestHeaders,\n ...(siteVersion != null ? { cache: 'no-store' } : {}),\n })\n\n return response\n }\n}\n\n// This function attempts to consume the response body of a failed response, and\n// returns either the parsed JSON or raw text. This is useful for logging more\n// detailed error information when an API request fails.\n//\n// Cloudflare Worker Note: The Cloudflare Worker runtime has automatic deadlock\n// prevention (in the form of auto-cancelling responses) that triggers when too\n// many response bodies are unconsumed. This applies for error responses as\n// well. As such, in this client we use this function to consume the response\n// body whenever the request fails, even if we don't end up logging the body\n// itself, to avoid hitting the deadlock prevention.\nexport async function failedResponseBody(response: Response): Promise<unknown> {\n try {\n const text = await response.text()\n try {\n return JSON.parse(text)\n } catch {\n return text\n }\n } catch (e) {\n return `Failed to extract response body: ${e}`\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/api/schema/index.ts"],"sourcesContent":["export * from './page-pathname-slice'\n"],"mappings":"AAAA,cAAc;","names":[]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
const pagePathnameSlices = z.array(
|
|
3
|
+
z.object({
|
|
4
|
+
id: z.string(),
|
|
5
|
+
basePageId: z.string(),
|
|
6
|
+
pathname: z.string(),
|
|
7
|
+
localizedPathname: z.string().optional(),
|
|
8
|
+
__typename: z.literal("PagePathnameSlice")
|
|
9
|
+
}).nullable()
|
|
10
|
+
);
|
|
11
|
+
export {
|
|
12
|
+
pagePathnameSlices
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=page-pathname-slice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/api/schema/page-pathname-slice.ts"],"sourcesContent":["import { z } from 'zod'\n\nexport const pagePathnameSlices = z.array(\n z\n .object({\n id: z.string(),\n basePageId: z.string(),\n pathname: z.string(),\n localizedPathname: z.string().optional(),\n __typename: z.literal('PagePathnameSlice'),\n })\n .nullable(),\n)\n"],"mappings":"AAAA,SAAS,SAAS;AAEX,MAAM,qBAAqB,EAAE;AAAA,EAClC,EACG,OAAO;AAAA,IACN,IAAI,EAAE,OAAO;AAAA,IACb,YAAY,EAAE,OAAO;AAAA,IACrB,UAAU,EAAE,OAAO;AAAA,IACnB,mBAAmB,EAAE,OAAO,EAAE,SAAS;AAAA,IACvC,YAAY,EAAE,QAAQ,mBAAmB;AAAA,EAC3C,CAAC,EACA,SAAS;AACd;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/api/types.ts"],"sourcesContent":["import {\n SwatchFragment as Swatch,\n FileFragment as File,\n TypographyFragment as Typography,\n PagePathnameSliceFragment,\n GlobalElementFragment as GlobalElement,\n LocalizedGlobalElementFragment as LocalizedGlobalElement,\n TableFragment as Table,\n SnippetFragment as Snippet,\n PageFragment as Page,\n SiteFragment as Site,\n} from './graphql/generated/types'\n\ntype PagePathnameSlice = PagePathnameSliceFragment & {\n basePageId?: string\n localizedPathname?: string | null\n}\n\nexport type {\n Swatch,\n File,\n Typography,\n PagePathnameSlice,\n GlobalElement,\n LocalizedGlobalElement,\n Table,\n Snippet,\n Page,\n Site,\n}\n\nexport type LocalizableAPIResource = PagePathnameSlice | LocalizedGlobalElement\n\nexport const LocalizableAPIResourceType: {\n [R in LocalizableAPIResource as R['__typename']]: R['__typename']\n} = {\n PagePathnameSlice: 'PagePathnameSlice',\n LocalizedGlobalElement: 'LocalizedGlobalElement',\n}\n\nexport type LocalizableAPIResourceType =\n (typeof LocalizableAPIResourceType)[keyof typeof LocalizableAPIResourceType]\n\nexport type APIResource =\n | LocalizableAPIResource\n | Swatch\n | File\n | Typography\n | GlobalElement\n | Table\n | Snippet\n | Page\n | Site\n\nexport const APIResourceType: { [R in APIResource as R['__typename']]: R['__typename'] } = {\n ...LocalizableAPIResourceType,\n Swatch: 'Swatch',\n File: 'File',\n Typography: 'Typography',\n GlobalElement: 'GlobalElement',\n Table: 'Table',\n Snippet: 'Snippet',\n Page: 'Page',\n Site: 'Site',\n}\n\nexport type APIResourceType = (typeof APIResourceType)[keyof typeof APIResourceType]\n\nexport type APIResourceLocale<R extends APIResource | APIResourceType> = R extends\n | LocalizableAPIResource\n | LocalizableAPIResourceType\n ? string | null\n : never\n"],"mappings":"AAiCO,MAAM,6BAET;AAAA,EACF,mBAAmB;AAAA,EACnB,wBAAwB;AAC1B;AAgBO,MAAM,kBAA8E;AAAA,EACzF,GAAG;AAAA,EACH,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,OAAO;AAAA,EACP,SAAS;AAAA,EACT,MAAM;AAAA,EACN,MAAM;AACR;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../src/api/types.ts"],"sourcesContent":["import {\n SwatchFragment as Swatch,\n FileFragment as File,\n TypographyFragment as Typography,\n PagePathnameSliceFragment,\n GlobalElementFragment as GlobalElement,\n LocalizedGlobalElementFragment as LocalizedGlobalElement,\n TableFragment as Table,\n SnippetFragment as Snippet,\n PageFragment as Page,\n SiteFragment as Site,\n} from './graphql/generated/types'\n\ntype PagePathnameSlice = PagePathnameSliceFragment & {\n basePageId?: string\n localizedPathname?: string | null\n}\n\nexport type {\n Swatch,\n File,\n Typography,\n PagePathnameSlice,\n GlobalElement,\n LocalizedGlobalElement,\n Table,\n Snippet,\n Page,\n Site,\n}\n\nexport type LocalizableAPIResource = PagePathnameSlice | LocalizedGlobalElement\n\nexport const LocalizableAPIResourceType: {\n [R in LocalizableAPIResource as R['__typename']]: R['__typename']\n} = {\n PagePathnameSlice: 'PagePathnameSlice',\n LocalizedGlobalElement: 'LocalizedGlobalElement',\n}\n\nexport type LocalizableAPIResourceType =\n (typeof LocalizableAPIResourceType)[keyof typeof LocalizableAPIResourceType]\n\nexport type APIResource =\n | LocalizableAPIResource\n | Swatch\n | File\n | Typography\n | GlobalElement\n | Table\n | Snippet\n | Page\n | Site\n\nexport const APIResourceType: { [R in APIResource as R['__typename']]: R['__typename'] } = {\n ...LocalizableAPIResourceType,\n Swatch: 'Swatch',\n File: 'File',\n Typography: 'Typography',\n GlobalElement: 'GlobalElement',\n Table: 'Table',\n Snippet: 'Snippet',\n Page: 'Page',\n Site: 'Site',\n}\n\nexport type APIResourceType = (typeof APIResourceType)[keyof typeof APIResourceType]\n\nexport type APIResourceLocale<R extends APIResource | APIResourceType> = R extends\n | LocalizableAPIResource\n | LocalizableAPIResourceType\n ? string | null\n : never\n\nexport type HttpFetch = (url: string | URL, init?: RequestInit) => Promise<Response>\n"],"mappings":"AAiCO,MAAM,6BAET;AAAA,EACF,mBAAmB;AAAA,EACnB,wBAAwB;AAC1B;AAgBO,MAAM,kBAA8E;AAAA,EACzF,GAAG;AAAA,EACH,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,OAAO;AAAA,EACP,SAAS;AAAA,EACT,MAAM;AAAA,EACN,MAAM;AACR;","names":[]}
|
|
@@ -8,7 +8,7 @@ async function manifestHandler(req, { apiKey, manifest }) {
|
|
|
8
8
|
return ApiResponse.json({ message: "Unauthorized" }, { status: 401 });
|
|
9
9
|
}
|
|
10
10
|
return ApiResponse.json({
|
|
11
|
-
version: "0.28.7-canary.
|
|
11
|
+
version: "0.28.7-canary.6",
|
|
12
12
|
interactionMode: true,
|
|
13
13
|
clientSideNavigation: false,
|
|
14
14
|
elementFromPoint: false,
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { EMBEDDED_DOCUMENT_TYPE } from "../state/modules/read-only-documents";
|
|
2
|
+
import { deterministicUUID } from "../utils/deterministic-uuid";
|
|
3
|
+
function componentDocumentToRootEmbeddedDocument({
|
|
4
|
+
document,
|
|
5
|
+
documentKey,
|
|
6
|
+
name,
|
|
7
|
+
type,
|
|
8
|
+
description,
|
|
9
|
+
meta
|
|
10
|
+
}) {
|
|
11
|
+
const { data: rootElement, locale, id } = document;
|
|
12
|
+
if (rootElement != null && rootElement.type !== type) {
|
|
13
|
+
throw new Error(
|
|
14
|
+
`Type "${rootElement.type}" does not match the expected type "${type}" from the snapshot`
|
|
15
|
+
);
|
|
16
|
+
}
|
|
17
|
+
const rootDocument = {
|
|
18
|
+
key: documentKey,
|
|
19
|
+
rootElement: rootElement ?? {
|
|
20
|
+
// Fallback rootElement
|
|
21
|
+
// Create a stable uuid so two different clients will have the same empty element data.
|
|
22
|
+
// This is needed to make presence feature work for an element that is not yet created.
|
|
23
|
+
key: deterministicUUID({ id, locale, seed: documentKey }),
|
|
24
|
+
type,
|
|
25
|
+
props: {}
|
|
26
|
+
},
|
|
27
|
+
locale,
|
|
28
|
+
id,
|
|
29
|
+
type,
|
|
30
|
+
name,
|
|
31
|
+
meta: { ...meta, description },
|
|
32
|
+
__type: EMBEDDED_DOCUMENT_TYPE
|
|
33
|
+
};
|
|
34
|
+
return rootDocument;
|
|
35
|
+
}
|
|
36
|
+
export {
|
|
37
|
+
componentDocumentToRootEmbeddedDocument
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=component-snapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/client/component-snapshot.ts"],"sourcesContent":["import { z } from 'zod'\n\nimport { type CacheData } from '../api/api-resources-client'\n\nimport { EMBEDDED_DOCUMENT_TYPE, type EmbeddedDocument } from '../state/modules/read-only-documents'\n\nimport { deterministicUUID } from '../utils/deterministic-uuid'\n\nimport * as Schema from './schema/component-document'\n\nexport type MakeswiftComponentDocument = z.infer<typeof Schema.componentDocument>\nexport type MakeswiftComponentDocumentFallback = z.infer<typeof Schema.componentDocumentFallback>\n\nexport type MakeswiftComponentMetadata = {\n allowLocaleFallback: boolean\n requestedLocale: string | null\n}\n\nexport function componentDocumentToRootEmbeddedDocument({\n document,\n documentKey,\n name,\n type,\n description,\n meta,\n}: {\n document: MakeswiftComponentDocument | MakeswiftComponentDocumentFallback\n documentKey: string\n name: string\n type: string\n description?: string\n meta: MakeswiftComponentMetadata\n}): EmbeddedDocument {\n const { data: rootElement, locale, id } = document\n\n if (rootElement != null && rootElement.type !== type) {\n throw new Error(\n `Type \"${rootElement.type}\" does not match the expected type \"${type}\" from the snapshot`,\n )\n }\n\n const rootDocument: EmbeddedDocument = {\n key: documentKey,\n rootElement: rootElement ?? {\n // Fallback rootElement\n // Create a stable uuid so two different clients will have the same empty element data.\n // This is needed to make presence feature work for an element that is not yet created.\n key: deterministicUUID({ id, locale, seed: documentKey }),\n type,\n props: {},\n },\n locale,\n id,\n type,\n name,\n meta: { ...meta, description },\n __type: EMBEDDED_DOCUMENT_TYPE,\n }\n\n return rootDocument\n}\n\nexport type MakeswiftComponentSnapshot = {\n document: MakeswiftComponentDocument | MakeswiftComponentDocumentFallback\n key: string\n cacheData: CacheData\n meta: MakeswiftComponentMetadata\n}\n"],"mappings":"AAIA,SAAS,8BAAqD;AAE9D,SAAS,yBAAyB;AAY3B,SAAS,wCAAwC;AAAA,EACtD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAOqB;AACnB,QAAM,EAAE,MAAM,aAAa,QAAQ,GAAG,IAAI;AAE1C,MAAI,eAAe,QAAQ,YAAY,SAAS,MAAM;AACpD,UAAM,IAAI;AAAA,MACR,SAAS,YAAY,IAAI,uCAAuC,IAAI;AAAA,IACtE;AAAA,EACF;AAEA,QAAM,eAAiC;AAAA,IACrC,KAAK;AAAA,IACL,aAAa,eAAe;AAAA;AAAA;AAAA;AAAA,MAI1B,KAAK,kBAAkB,EAAE,IAAI,QAAQ,MAAM,YAAY,CAAC;AAAA,MACxD;AAAA,MACA,OAAO,CAAC;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM,EAAE,GAAG,MAAM,YAAY;AAAA,IAC7B,QAAQ;AAAA,EACV;AAEA,SAAO;AACT;","names":[]}
|