@makeswift/runtime 0.28.7 → 0.28.8-canary.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.
Files changed (69) hide show
  1. package/dist/cjs/api/api-resources-client.js +47 -0
  2. package/dist/cjs/api/api-resources-client.js.map +1 -1
  3. package/dist/cjs/api/graphql-api-client.js +1 -1
  4. package/dist/cjs/api/host-api-resources-client.js +38 -32
  5. package/dist/cjs/api/host-api-resources-client.js.map +1 -1
  6. package/dist/cjs/api/makeswift-api-resources-client.js +84 -0
  7. package/dist/cjs/api/makeswift-api-resources-client.js.map +1 -0
  8. package/dist/cjs/api/rest-api-client.js +1 -1
  9. package/dist/cjs/api/rest-api-client.js.map +1 -1
  10. package/dist/cjs/api/types.js.map +1 -1
  11. package/dist/cjs/api-handler/handlers/manifest.js +1 -1
  12. package/dist/cjs/client/index.js +1 -1
  13. package/dist/cjs/runtimes/react/components/ElementData.js +2 -2
  14. package/dist/cjs/runtimes/react/components/ElementData.js.map +1 -1
  15. package/dist/cjs/runtimes/react/components/resolve-props.js +43 -0
  16. package/dist/cjs/runtimes/react/components/resolve-props.js.map +1 -0
  17. package/dist/cjs/runtimes/react/hooks/use-control-defs.js +40 -0
  18. package/dist/cjs/runtimes/react/hooks/use-control-defs.js.map +1 -0
  19. package/dist/cjs/runtimes/react/runtime-core.js +13 -0
  20. package/dist/cjs/runtimes/react/runtime-core.js.map +1 -1
  21. package/dist/cjs/state/api-client/fetch-api-resource.js +5 -47
  22. package/dist/cjs/state/api-client/fetch-api-resource.js.map +1 -1
  23. package/dist/esm/api/api-resources-client.js +47 -0
  24. package/dist/esm/api/api-resources-client.js.map +1 -1
  25. package/dist/esm/api/graphql-api-client.js +1 -1
  26. package/dist/esm/api/host-api-resources-client.js +38 -33
  27. package/dist/esm/api/host-api-resources-client.js.map +1 -1
  28. package/dist/esm/api/makeswift-api-resources-client.js +50 -0
  29. package/dist/esm/api/makeswift-api-resources-client.js.map +1 -0
  30. package/dist/esm/api/rest-api-client.js +1 -1
  31. package/dist/esm/api/rest-api-client.js.map +1 -1
  32. package/dist/esm/api/types.js.map +1 -1
  33. package/dist/esm/api-handler/handlers/manifest.js +1 -1
  34. package/dist/esm/client/index.js +1 -1
  35. package/dist/esm/runtimes/react/components/ElementData.js +1 -1
  36. package/dist/esm/runtimes/react/components/ElementData.js.map +1 -1
  37. package/dist/esm/runtimes/react/components/resolve-props.js +19 -0
  38. package/dist/esm/runtimes/react/components/resolve-props.js.map +1 -0
  39. package/dist/esm/runtimes/react/hooks/use-control-defs.js +16 -0
  40. package/dist/esm/runtimes/react/hooks/use-control-defs.js.map +1 -0
  41. package/dist/esm/runtimes/react/runtime-core.js +13 -0
  42. package/dist/esm/runtimes/react/runtime-core.js.map +1 -1
  43. package/dist/esm/state/api-client/fetch-api-resource.js +5 -47
  44. package/dist/esm/state/api-client/fetch-api-resource.js.map +1 -1
  45. package/dist/types/api/api-resources-client.d.ts +18 -10
  46. package/dist/types/api/api-resources-client.d.ts.map +1 -1
  47. package/dist/types/api/host-api-resources-client.d.ts +9 -14
  48. package/dist/types/api/host-api-resources-client.d.ts.map +1 -1
  49. package/dist/types/api/makeswift-api-resources-client.d.ts +30 -0
  50. package/dist/types/api/makeswift-api-resources-client.d.ts.map +1 -0
  51. package/dist/types/api/rest-api-client.d.ts +1 -1
  52. package/dist/types/api/rest-api-client.d.ts.map +1 -1
  53. package/dist/types/api/types.d.ts +3 -0
  54. package/dist/types/api/types.d.ts.map +1 -1
  55. package/dist/types/runtimes/react/components/resolve-props.d.ts +7 -0
  56. package/dist/types/runtimes/react/components/resolve-props.d.ts.map +1 -0
  57. package/dist/types/runtimes/react/hooks/use-control-defs.d.ts +6 -0
  58. package/dist/types/runtimes/react/hooks/use-control-defs.d.ts.map +1 -0
  59. package/dist/types/runtimes/react/runtime-core.d.ts +4 -2
  60. package/dist/types/runtimes/react/runtime-core.d.ts.map +1 -1
  61. package/dist/types/state/api-client/fetch-api-resource.d.ts +3 -4
  62. package/dist/types/state/api-client/fetch-api-resource.d.ts.map +1 -1
  63. package/package.json +1 -1
  64. package/dist/cjs/runtimes/react/controls.js +0 -59
  65. package/dist/cjs/runtimes/react/controls.js.map +0 -1
  66. package/dist/esm/runtimes/react/controls.js +0 -25
  67. package/dist/esm/runtimes/react/controls.js.map +0 -1
  68. package/dist/types/runtimes/react/controls.d.ts +0 -9
  69. package/dist/types/runtimes/react/controls.d.ts.map +0 -1
@@ -1 +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":[]}
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 | null } = {},\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":[]}
@@ -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\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":[]}
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 APIResourceByType<T extends APIResourceType> = Extract<APIResource, { __typename: T }>\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",
11
+ version: "0.28.8-canary.1",
12
12
  interactionMode: true,
13
13
  clientSideNavigation: false,
14
14
  elementFromPoint: false,
@@ -669,7 +669,7 @@ Received "${apiKey}" instead.`
669
669
  headers: {
670
670
  "x-api-key": this.apiKey,
671
671
  "makeswift-site-api-key": this.apiKey,
672
- "makeswift-runtime-version": "0.28.7",
672
+ "makeswift-runtime-version": "0.28.8-canary.1",
673
673
  "content-type": "application/json"
674
674
  },
675
675
  body: JSON.stringify({ token }),
@@ -5,7 +5,7 @@ import { useBuiltinSuspense } from "../hooks/use-builtin-suspense";
5
5
  import { useComponent } from "../hooks/use-component";
6
6
  import { canAcceptRef } from "../utils/can-accept-ref";
7
7
  import { FallbackComponent } from "../../../components/shared/FallbackComponent";
8
- import { ResolveProps } from "../controls";
8
+ import { ResolveProps } from "./resolve-props";
9
9
  import { ActivityOrFallback } from "./activity-with-fallback";
10
10
  const ElementData = memo(
11
11
  forwardRef(function ElementData2({ elementData }, ref) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/runtimes/react/components/ElementData.tsx"],"sourcesContent":["import { Ref, forwardRef, memo, ReactNode } from 'react'\n\nimport { ElementData as ReactPageElementData } from '../../../state/read-only-state'\nimport { useBuiltinSuspense } from '../hooks/use-builtin-suspense'\nimport { useComponent } from '../hooks/use-component'\nimport { canAcceptRef } from '../utils/can-accept-ref'\nimport { FallbackComponent } from '../../../components/shared/FallbackComponent'\nimport { ResolveProps } from '../controls'\nimport { ActivityOrFallback } from './activity-with-fallback'\n\ntype ElementDataProps = {\n elementData: ReactPageElementData\n}\n\nexport const ElementData = memo(\n forwardRef(function ElementData({ elementData }: ElementDataProps, ref: Ref<unknown>): ReactNode {\n const Component = useComponent(elementData.type)\n const builtinSuspense = useBuiltinSuspense(elementData.type)\n\n if (Component == null) {\n console.warn(`Unknown component '${elementData.type}'`, { elementData })\n return <FallbackComponent ref={ref as Ref<HTMLDivElement>} text=\"Component not found\" />\n }\n\n const forwardRef = canAcceptRef(Component)\n\n return (\n <ActivityOrFallback suspenseFallback={builtinSuspense}>\n <ResolveProps element={elementData}>\n {props =>\n forwardRef ? (\n <Component {...props} key={elementData.key} ref={ref} />\n ) : (\n <Component {...props} key={elementData.key} />\n )\n }\n </ResolveProps>\n </ActivityOrFallback>\n )\n }),\n)\n"],"mappings":"AAqBa;AAUC;AA/Bd,SAAc,YAAY,YAAuB;AAGjD,SAAS,0BAA0B;AACnC,SAAS,oBAAoB;AAC7B,SAAS,oBAAoB;AAC7B,SAAS,yBAAyB;AAClC,SAAS,oBAAoB;AAC7B,SAAS,0BAA0B;AAM5B,MAAM,cAAc;AAAA,EACzB,WAAW,SAASA,aAAY,EAAE,YAAY,GAAqB,KAA8B;AAC/F,UAAM,YAAY,aAAa,YAAY,IAAI;AAC/C,UAAM,kBAAkB,mBAAmB,YAAY,IAAI;AAE3D,QAAI,aAAa,MAAM;AACrB,cAAQ,KAAK,sBAAsB,YAAY,IAAI,KAAK,EAAE,YAAY,CAAC;AACvE,aAAO,oBAAC,qBAAkB,KAAiC,MAAK,uBAAsB;AAAA,IACxF;AAEA,UAAMC,cAAa,aAAa,SAAS;AAEzC,WACE,oBAAC,sBAAmB,kBAAkB,iBACpC,8BAAC,gBAAa,SAAS,aACpB,qBACCA,cACE,8BAAC,aAAW,GAAG,OAAO,KAAK,YAAY,KAAK,KAAU,IAEtD,8BAAC,aAAW,GAAG,OAAO,KAAK,YAAY,KAAK,GAGlD,GACF;AAAA,EAEJ,CAAC;AACH;","names":["ElementData","forwardRef"]}
1
+ {"version":3,"sources":["../../../../../src/runtimes/react/components/ElementData.tsx"],"sourcesContent":["import { Ref, forwardRef, memo, ReactNode } from 'react'\n\nimport { ElementData as ReactPageElementData } from '../../../state/read-only-state'\nimport { useBuiltinSuspense } from '../hooks/use-builtin-suspense'\nimport { useComponent } from '../hooks/use-component'\nimport { canAcceptRef } from '../utils/can-accept-ref'\nimport { FallbackComponent } from '../../../components/shared/FallbackComponent'\nimport { ResolveProps } from './resolve-props'\nimport { ActivityOrFallback } from './activity-with-fallback'\n\ntype ElementDataProps = {\n elementData: ReactPageElementData\n}\n\nexport const ElementData = memo(\n forwardRef(function ElementData({ elementData }: ElementDataProps, ref: Ref<unknown>): ReactNode {\n const Component = useComponent(elementData.type)\n const builtinSuspense = useBuiltinSuspense(elementData.type)\n\n if (Component == null) {\n console.warn(`Unknown component '${elementData.type}'`, { elementData })\n return <FallbackComponent ref={ref as Ref<HTMLDivElement>} text=\"Component not found\" />\n }\n\n const forwardRef = canAcceptRef(Component)\n\n return (\n <ActivityOrFallback suspenseFallback={builtinSuspense}>\n <ResolveProps element={elementData}>\n {props =>\n forwardRef ? (\n <Component {...props} key={elementData.key} ref={ref} />\n ) : (\n <Component {...props} key={elementData.key} />\n )\n }\n </ResolveProps>\n </ActivityOrFallback>\n )\n }),\n)\n"],"mappings":"AAqBa;AAUC;AA/Bd,SAAc,YAAY,YAAuB;AAGjD,SAAS,0BAA0B;AACnC,SAAS,oBAAoB;AAC7B,SAAS,oBAAoB;AAC7B,SAAS,yBAAyB;AAClC,SAAS,oBAAoB;AAC7B,SAAS,0BAA0B;AAM5B,MAAM,cAAc;AAAA,EACzB,WAAW,SAASA,aAAY,EAAE,YAAY,GAAqB,KAA8B;AAC/F,UAAM,YAAY,aAAa,YAAY,IAAI;AAC/C,UAAM,kBAAkB,mBAAmB,YAAY,IAAI;AAE3D,QAAI,aAAa,MAAM;AACrB,cAAQ,KAAK,sBAAsB,YAAY,IAAI,KAAK,EAAE,YAAY,CAAC;AACvE,aAAO,oBAAC,qBAAkB,KAAiC,MAAK,uBAAsB;AAAA,IACxF;AAEA,UAAMC,cAAa,aAAa,SAAS;AAEzC,WACE,oBAAC,sBAAmB,kBAAkB,iBACpC,8BAAC,gBAAa,SAAS,aACpB,qBACCA,cACE,8BAAC,aAAW,GAAG,OAAO,KAAK,YAAY,KAAK,KAAU,IAEtD,8BAAC,aAAW,GAAG,OAAO,KAAK,YAAY,KAAK,GAGlD,GACF;AAAA,EAEJ,CAAC;AACH;","names":["ElementData","forwardRef"]}
@@ -0,0 +1,19 @@
1
+ import { useControlDefs } from "../hooks/use-control-defs";
2
+ import { useResolvedProps } from "../hooks/use-resolved-props";
3
+ import { resolveLegacyDescriptorProp } from "../legacy-controls";
4
+ function ResolveProps({
5
+ element,
6
+ children: renderComponent
7
+ }) {
8
+ const [legacyDescriptors, definitions] = useControlDefs({ elementType: element.type });
9
+ const resolvedProps = useResolvedProps(definitions, element.props, element.key);
10
+ const renderFn = Object.entries(legacyDescriptors).reduceRight(
11
+ (renderFn2, [propName, descriptor]) => (props) => resolveLegacyDescriptorProp(descriptor, propName, element.props[propName], props, renderFn2),
12
+ renderComponent
13
+ );
14
+ return renderFn(resolvedProps);
15
+ }
16
+ export {
17
+ ResolveProps
18
+ };
19
+ //# sourceMappingURL=resolve-props.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/runtimes/react/components/resolve-props.tsx"],"sourcesContent":["import { type ReactNode } from 'react'\n\nimport { type ElementData } from '../../../state/read-only-state'\n\nimport { useControlDefs } from '../hooks/use-control-defs'\nimport { useResolvedProps } from '../hooks/use-resolved-props'\n\nimport { resolveLegacyDescriptorProp } from '../legacy-controls'\n\nexport function ResolveProps({\n element,\n children: renderComponent,\n}: {\n element: ElementData\n children: (props: Record<string, unknown>) => ReactNode\n}): ReactNode {\n const [legacyDescriptors, definitions] = useControlDefs({ elementType: element.type })\n\n const resolvedProps = useResolvedProps(definitions, element.props, element.key)\n\n const renderFn = Object.entries(legacyDescriptors).reduceRight(\n (renderFn, [propName, descriptor]) =>\n props =>\n resolveLegacyDescriptorProp(descriptor, propName, element.props[propName], props, renderFn),\n renderComponent,\n )\n\n return renderFn(resolvedProps)\n}\n"],"mappings":"AAIA,SAAS,sBAAsB;AAC/B,SAAS,wBAAwB;AAEjC,SAAS,mCAAmC;AAErC,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA,UAAU;AACZ,GAGc;AACZ,QAAM,CAAC,mBAAmB,WAAW,IAAI,eAAe,EAAE,aAAa,QAAQ,KAAK,CAAC;AAErF,QAAM,gBAAgB,iBAAiB,aAAa,QAAQ,OAAO,QAAQ,GAAG;AAE9E,QAAM,WAAW,OAAO,QAAQ,iBAAiB,EAAE;AAAA,IACjD,CAACA,WAAU,CAAC,UAAU,UAAU,MAC9B,WACE,4BAA4B,YAAY,UAAU,QAAQ,MAAM,QAAQ,GAAG,OAAOA,SAAQ;AAAA,IAC9F;AAAA,EACF;AAEA,SAAO,SAAS,aAAa;AAC/B;","names":["renderFn"]}
@@ -0,0 +1,16 @@
1
+ import { useRef } from "react";
2
+ import { partitionRecord } from "../../../utils/partition";
3
+ import { getComponentPropControllerDescriptors } from "../../../state/read-only-state";
4
+ import { isLegacyDescriptor } from "../../../prop-controllers/descriptors";
5
+ import { useStore } from "./use-store";
6
+ function useControlDefs({
7
+ elementType
8
+ }) {
9
+ const store = useStore();
10
+ const all = getComponentPropControllerDescriptors(store.getState(), elementType) ?? {};
11
+ return useRef(partitionRecord(all, isLegacyDescriptor)).current;
12
+ }
13
+ export {
14
+ useControlDefs
15
+ };
16
+ //# sourceMappingURL=use-control-defs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/runtimes/react/hooks/use-control-defs.ts"],"sourcesContent":["import { useRef } from 'react'\n\nimport { ControlDefinition } from '@makeswift/controls'\n\nimport { partitionRecord } from '../../../utils/partition'\n\nimport { getComponentPropControllerDescriptors } from '../../../state/read-only-state'\nimport { type LegacyDescriptor, isLegacyDescriptor } from '../../../prop-controllers/descriptors'\n\nimport { useStore } from './use-store'\n\nexport function useControlDefs({\n elementType,\n}: {\n elementType: string\n}): readonly [Record<string, LegacyDescriptor>, Record<string, ControlDefinition>] {\n const store = useStore()\n const all = getComponentPropControllerDescriptors(store.getState(), elementType) ?? {}\n return useRef(partitionRecord(all, isLegacyDescriptor)).current\n}\n"],"mappings":"AAAA,SAAS,cAAc;AAIvB,SAAS,uBAAuB;AAEhC,SAAS,6CAA6C;AACtD,SAAgC,0BAA0B;AAE1D,SAAS,gBAAgB;AAElB,SAAS,eAAe;AAAA,EAC7B;AACF,GAEmF;AACjF,QAAM,QAAQ,SAAS;AACvB,QAAM,MAAM,sCAAsC,MAAM,SAAS,GAAG,WAAW,KAAK,CAAC;AACrF,SAAO,OAAO,gBAAgB,KAAK,kBAAkB,CAAC,EAAE;AAC1D;","names":[]}
@@ -1,4 +1,5 @@
1
1
  import { HostApiResourcesClient } from "../../api/host-api-resources-client";
2
+ import { MakeswiftApiResourcesClient } from "../../api/makeswift-api-resources-client";
2
3
  import {
3
4
  parseBreakpointsInput
4
5
  } from "../../state/modules/breakpoints";
@@ -23,6 +24,7 @@ class RuntimeCore {
23
24
  // requested site version, which should be the only site version for which the store is requested
24
25
  ttlCheck: RefCountedMap.TTLCheck.ON_RETAIN | RefCountedMap.TTLCheck.ON_RELEASE
25
26
  });
27
+ apiKey;
26
28
  protoStore;
27
29
  appOrigin;
28
30
  apiOrigin;
@@ -31,12 +33,14 @@ class RuntimeCore {
31
33
  constructor({
32
34
  appOrigin = "https://app.makeswift.com",
33
35
  apiOrigin = "https://api.makeswift.com",
36
+ apiKey,
34
37
  breakpoints,
35
38
  requestKey,
36
39
  fetch
37
40
  }) {
38
41
  this.appOrigin = validateOrigin(appOrigin, "appOrigin");
39
42
  this.apiOrigin = validateOrigin(apiOrigin, "apiOrigin");
43
+ this.apiKey = apiKey;
40
44
  this.requestKey = requestKey;
41
45
  this.fetch = fetch;
42
46
  this.protoStore = configureProtoStore({
@@ -89,6 +93,15 @@ class RuntimeCore {
89
93
  return new URL("graphql", this.apiOrigin).href;
90
94
  }
91
95
  createApiResourcesClient(preloadedState) {
96
+ if (isServer() && this.apiKey) {
97
+ return new MakeswiftApiResourcesClient({
98
+ fetch: this.fetch,
99
+ apiKey: this.apiKey,
100
+ apiOrigin: this.apiOrigin,
101
+ graphqlApiEndpoint: this.graphqlApiEndpoint,
102
+ preloadedState
103
+ });
104
+ }
92
105
  return new HostApiResourcesClient({
93
106
  fetch: this.fetch,
94
107
  preloadedState
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/runtimes/react/runtime-core.ts"],"sourcesContent":["import { type SerializableReplacementContext } from '@makeswift/controls'\n\nimport { HostApiResourcesClient } from '../../api/host-api-resources-client'\nimport { type HttpFetch } from '../../api/types'\nimport { type SiteVersion } from '../../api/site-version'\n\nimport {\n Breakpoints,\n BreakpointsInput,\n parseBreakpointsInput,\n} from '../../state/modules/breakpoints'\n\nimport { copyElementTree } from '../../state/ops/copy-element-tree'\n\nimport { getBreakpoints, type Element, type ElementData } from '../../state/read-only-state'\nimport {\n configureProtoStore,\n configureReadWriteStore,\n type ProtoStore,\n type Store,\n} from '../../state/store'\n\nimport { RefCountedMap } from '../../utils/ref-counted-map'\nimport { isServer } from '../../utils/is-server'\n\nexport type StoreKey = {\n siteVersion: SiteVersion | null\n locale: string | undefined\n}\n\nconst VERSION_TAG_LIVE = 'ref:live'\n\nexport class RuntimeCore {\n // The unowned entry TTL affects performance, not correctness. The TTL controls how long an unretained store stays\n // in the map. If an entry expires and is removed from the map before React commits, the store remains retained\n // via `<StoreContext.Provider>`. The only impact is that future lookups will create a new store instance instead of\n // reusing the existing one, reducing cache efficiency.\n private readonly activeStores = new RefCountedMap<string | null, Store>({\n unownedEntryTtlMs: 1000,\n // Checking on retain/release is sufficient on the client, and we don't need to check on get on the server\n // as the only scenario in which we add the store to the map is when the runtime is already bound to the\n // requested site version, which should be the only site version for which the store is requested\n ttlCheck: RefCountedMap.TTLCheck.ON_RETAIN | RefCountedMap.TTLCheck.ON_RELEASE,\n })\n\n readonly protoStore: ProtoStore\n readonly appOrigin: string\n readonly apiOrigin: string\n readonly requestKey: StoreKey | undefined\n readonly fetch: HttpFetch\n\n constructor({\n appOrigin = 'https://app.makeswift.com',\n apiOrigin = 'https://api.makeswift.com',\n breakpoints,\n requestKey,\n fetch,\n }: {\n appOrigin?: string\n apiOrigin?: string\n breakpoints?: BreakpointsInput\n requestKey?: StoreKey\n fetch: HttpFetch\n }) {\n this.appOrigin = validateOrigin(appOrigin, 'appOrigin')\n this.apiOrigin = validateOrigin(apiOrigin, 'apiOrigin')\n this.requestKey = requestKey\n this.fetch = fetch\n\n this.protoStore = configureProtoStore({\n name: 'Runtime proto-store',\n breakpoints: breakpoints ? parseBreakpointsInput(breakpoints) : undefined,\n })\n }\n\n getOrCreateStore({ siteVersion, locale }: StoreKey): Store {\n const key = storeCacheKey({ siteVersion, locale })\n\n const createStore = () => {\n // API resources client includes an in-memory cache of the site's resources and thus also has to be versioned\n const apiResourcesClient = this.createApiResourcesClient({ siteVersion, locale })\n\n // TODO: we need to decouple editability from the site version; specifically, previewing\n // a draft version of the site should not lead to switching to the read-write state\n const isReadOnly = siteVersion == null\n\n return configureReadWriteStore({\n name: `Runtime read-write store (site version: ${key})`,\n appOrigin: this.appOrigin,\n apiResourcesClient,\n preloadedState: { ...this.protoStore.getState(), siteVersion, isReadOnly, locale },\n })\n }\n\n // On the server, stores are ephemeral by default so SSR does not retain them in a long-lived runtime.\n // The exception is a runtime that is already bound to the requested site version & locale, where we\n // can safely reuse the store across multiple root regions and benefit from the host API client's\n // in-memory cache.\n //\n // On the client, stores are reference-counted by site version so multiple root regions can share a store\n // instance, which preserves the pre-v0.17 per-site-version store behavior without requiring a separate\n // runtime per root.\n const usePersistentStore = this.shouldUsePersistentStore(key)\n return usePersistentStore ? this.activeStores.getOrCreate(key, createStore) : createStore()\n }\n\n retainStore({ siteVersion, locale }: StoreKey, store: Store): void {\n const key = storeCacheKey({ siteVersion, locale })\n\n if (!this.shouldUsePersistentStore(key)) {\n console.error('RuntimeCore: attempt to retain an ephemeral store', { key })\n return\n }\n\n if (this.activeStores.retain(key, store)) {\n store.startBreakpointWatch()\n }\n }\n\n releaseStore({ siteVersion, locale }: StoreKey, store: Store): void {\n const key = storeCacheKey({ siteVersion, locale })\n\n if (!this.shouldUsePersistentStore(key)) {\n console.error('RuntimeCore: attempt to release an ephemeral store', { key })\n return\n }\n\n if (this.activeStores.release(key, store)) {\n store.stopBreakpointWatch()\n }\n }\n\n copyElementTree(\n elementTree: ElementData,\n replacementContext: SerializableReplacementContext,\n ): Element {\n return copyElementTree(this.protoStore.getState(), elementTree, replacementContext)\n }\n\n getBreakpoints(): Breakpoints {\n return getBreakpoints(this.protoStore.getState())\n }\n\n get graphqlApiEndpoint(): string {\n return new URL('graphql', this.apiOrigin).href\n }\n\n private createApiResourcesClient(preloadedState: {\n siteVersion: SiteVersion | null\n locale: string | undefined\n }) {\n return new HostApiResourcesClient({\n fetch: this.fetch,\n preloadedState,\n })\n }\n\n private shouldUsePersistentStore(key: string): boolean {\n // don't persist stores on the server unless the runtime instance is bound to a request\n // and the requested store matches the request's site version and locale\n return !isServer() || (this.requestKey !== undefined && storeCacheKey(this.requestKey) === key)\n }\n}\n\nconst storeCacheKey = ({ siteVersion, locale }: StoreKey): string =>\n `${siteVersionTag(siteVersion)}/${locale ?? 'default'}`\n\nconst siteVersionTag = (siteVersion: SiteVersion | null): string =>\n siteVersion?.version ?? VERSION_TAG_LIVE\n\nfunction validateOrigin(url: string, name: string): string {\n try {\n return new URL(url).origin\n } catch {\n throw new Error(`The Makeswift runtime received an invalid \\`${name}\\` parameter: \"${url}\".`)\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../src/runtimes/react/runtime-core.ts"],"sourcesContent":["import { type SerializableReplacementContext } from '@makeswift/controls'\n\nimport { ApiResourcesClient } from '../../api/api-resources-client'\nimport { HostApiResourcesClient } from '../../api/host-api-resources-client'\nimport { MakeswiftApiResourcesClient } from '../../api/makeswift-api-resources-client'\nimport { type HttpFetch } from '../../api/types'\nimport { type SiteVersion } from '../../api/site-version'\n\nimport {\n type Breakpoints,\n type BreakpointsInput,\n parseBreakpointsInput,\n} from '../../state/modules/breakpoints'\n\nimport { copyElementTree } from '../../state/ops/copy-element-tree'\n\nimport { getBreakpoints, type Element, type ElementData } from '../../state/read-only-state'\nimport {\n configureProtoStore,\n configureReadWriteStore,\n type ProtoStore,\n type Store,\n} from '../../state/store'\n\nimport { RefCountedMap } from '../../utils/ref-counted-map'\nimport { isServer } from '../../utils/is-server'\n\nexport type StoreKey = {\n siteVersion: SiteVersion | null\n locale: string | undefined\n}\n\nconst VERSION_TAG_LIVE = 'ref:live'\n\nexport class RuntimeCore {\n // The unowned entry TTL affects performance, not correctness. The TTL controls how long an unretained store stays\n // in the map. If an entry expires and is removed from the map before React commits, the store remains retained\n // via `<StoreContext.Provider>`. The only impact is that future lookups will create a new store instance instead of\n // reusing the existing one, reducing cache efficiency.\n private readonly activeStores = new RefCountedMap<string | null, Store>({\n unownedEntryTtlMs: 1000,\n // Checking on retain/release is sufficient on the client, and we don't need to check on get on the server\n // as the only scenario in which we add the store to the map is when the runtime is already bound to the\n // requested site version, which should be the only site version for which the store is requested\n ttlCheck: RefCountedMap.TTLCheck.ON_RETAIN | RefCountedMap.TTLCheck.ON_RELEASE,\n })\n\n private readonly apiKey: string | undefined\n\n readonly protoStore: ProtoStore\n readonly appOrigin: string\n readonly apiOrigin: string\n readonly requestKey: StoreKey | undefined\n readonly fetch: HttpFetch\n\n constructor({\n appOrigin = 'https://app.makeswift.com',\n apiOrigin = 'https://api.makeswift.com',\n apiKey,\n breakpoints,\n requestKey,\n fetch,\n }: {\n appOrigin?: string\n apiOrigin?: string\n apiKey?: string\n breakpoints?: BreakpointsInput\n requestKey?: StoreKey\n fetch: HttpFetch\n }) {\n this.appOrigin = validateOrigin(appOrigin, 'appOrigin')\n this.apiOrigin = validateOrigin(apiOrigin, 'apiOrigin')\n this.apiKey = apiKey\n this.requestKey = requestKey\n this.fetch = fetch\n\n this.protoStore = configureProtoStore({\n name: 'Runtime proto-store',\n breakpoints: breakpoints ? parseBreakpointsInput(breakpoints) : undefined,\n })\n }\n\n getOrCreateStore({ siteVersion, locale }: StoreKey): Store {\n const key = storeCacheKey({ siteVersion, locale })\n\n const createStore = () => {\n // API resources client includes an in-memory cache of the site's resources and thus also has to be versioned\n const apiResourcesClient = this.createApiResourcesClient({ siteVersion, locale })\n\n // TODO: we need to decouple editability from the site version; specifically, previewing\n // a draft version of the site should not lead to switching to the read-write state\n const isReadOnly = siteVersion == null\n\n return configureReadWriteStore({\n name: `Runtime read-write store (site version: ${key})`,\n appOrigin: this.appOrigin,\n apiResourcesClient,\n preloadedState: { ...this.protoStore.getState(), siteVersion, isReadOnly, locale },\n })\n }\n\n // On the server, stores are ephemeral by default so SSR does not retain them in a long-lived runtime.\n // The exception is a runtime that is already bound to the requested site version & locale, where we\n // can safely reuse the store across multiple root regions and benefit from the host API client's\n // in-memory cache.\n //\n // On the client, stores are reference-counted by site version so multiple root regions can share a store\n // instance, which preserves the pre-v0.17 per-site-version store behavior without requiring a separate\n // runtime per root.\n const usePersistentStore = this.shouldUsePersistentStore(key)\n return usePersistentStore ? this.activeStores.getOrCreate(key, createStore) : createStore()\n }\n\n retainStore({ siteVersion, locale }: StoreKey, store: Store): void {\n const key = storeCacheKey({ siteVersion, locale })\n\n if (!this.shouldUsePersistentStore(key)) {\n console.error('RuntimeCore: attempt to retain an ephemeral store', { key })\n return\n }\n\n if (this.activeStores.retain(key, store)) {\n store.startBreakpointWatch()\n }\n }\n\n releaseStore({ siteVersion, locale }: StoreKey, store: Store): void {\n const key = storeCacheKey({ siteVersion, locale })\n\n if (!this.shouldUsePersistentStore(key)) {\n console.error('RuntimeCore: attempt to release an ephemeral store', { key })\n return\n }\n\n if (this.activeStores.release(key, store)) {\n store.stopBreakpointWatch()\n }\n }\n\n copyElementTree(\n elementTree: ElementData,\n replacementContext: SerializableReplacementContext,\n ): Element {\n return copyElementTree(this.protoStore.getState(), elementTree, replacementContext)\n }\n\n getBreakpoints(): Breakpoints {\n return getBreakpoints(this.protoStore.getState())\n }\n\n get graphqlApiEndpoint(): string {\n return new URL('graphql', this.apiOrigin).href\n }\n\n private createApiResourcesClient(preloadedState: {\n siteVersion: SiteVersion | null\n locale: string | undefined\n }): ApiResourcesClient {\n if (isServer() && this.apiKey) {\n return new MakeswiftApiResourcesClient({\n fetch: this.fetch,\n apiKey: this.apiKey,\n apiOrigin: this.apiOrigin,\n graphqlApiEndpoint: this.graphqlApiEndpoint,\n preloadedState,\n })\n }\n\n return new HostApiResourcesClient({\n fetch: this.fetch,\n preloadedState,\n })\n }\n\n private shouldUsePersistentStore(key: string): boolean {\n // don't persist stores on the server unless the runtime instance is bound to a request\n // and the requested store matches the request's site version and locale\n return !isServer() || (this.requestKey !== undefined && storeCacheKey(this.requestKey) === key)\n }\n}\n\nconst storeCacheKey = ({ siteVersion, locale }: StoreKey): string =>\n `${siteVersionTag(siteVersion)}/${locale ?? 'default'}`\n\nconst siteVersionTag = (siteVersion: SiteVersion | null): string =>\n siteVersion?.version ?? VERSION_TAG_LIVE\n\nfunction validateOrigin(url: string, name: string): string {\n try {\n return new URL(url).origin\n } catch {\n throw new Error(`The Makeswift runtime received an invalid \\`${name}\\` parameter: \"${url}\".`)\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,4 +1,3 @@
1
- import { ApiHandlerHeaders, serializeSiteVersion } from "../../api/site-version";
2
1
  import * as SiteVersionState from "../modules/site-version";
3
2
  import { apiResourceFulfilled } from "../actions/internal/read-only-actions";
4
3
  import { setLocalizedResourceId } from "../host-api";
@@ -6,25 +5,7 @@ import {
6
5
  APIResourceType
7
6
  } from "../../api/types";
8
7
  import { getHasAPIResource, getAPIResource, getLocalizedResourceId } from "./state";
9
- function fetchAPIResource(resourceType, resourceId, fetch, locale) {
10
- const fetchVersioned = async (url, version) => {
11
- const response = await fetch(url, {
12
- headers: {
13
- "Content-Type": "application/json",
14
- ...version != null ? { [ApiHandlerHeaders.SiteVersion]: serializeSiteVersion(version) } : {}
15
- }
16
- });
17
- if (response.status === 404)
18
- return null;
19
- if (!response.ok)
20
- throw new Error(response.statusText);
21
- if (response.headers.get("content-type")?.includes("application/json") !== true) {
22
- throw new Error(
23
- `Expected JSON response from "${url}" but got "${response.headers.get("content-type")}"`
24
- );
25
- }
26
- return response.json();
27
- };
8
+ function fetchAPIResource(resourceType, resourceId, fetchResource, locale) {
28
9
  return async (dispatch, getState) => {
29
10
  const state = getState();
30
11
  const version = SiteVersionState.getSiteVersion(state.siteVersion);
@@ -34,22 +15,12 @@ function fetchAPIResource(resourceType, resourceId, fetch, locale) {
34
15
  let resource;
35
16
  switch (resourceType) {
36
17
  case APIResourceType.Swatch:
37
- resource = await fetchVersioned(`/api/makeswift/swatches/${resourceId}`, version);
38
- break;
39
18
  case APIResourceType.File:
40
- resource = await fetchVersioned(`/api/makeswift/files/${resourceId}`, version);
41
- break;
42
19
  case APIResourceType.Typography:
43
- resource = await fetchVersioned(
44
- `/api/makeswift/typographies/${resourceId}`,
45
- version
46
- );
47
- break;
48
20
  case APIResourceType.GlobalElement:
49
- resource = await fetchVersioned(
50
- `/api/makeswift/global-elements/${resourceId}`,
51
- version
52
- );
21
+ case APIResourceType.PagePathnameSlice:
22
+ case APIResourceType.Table:
23
+ resource = await fetchResource(resourceId, version, locale);
53
24
  break;
54
25
  case APIResourceType.LocalizedGlobalElement: {
55
26
  if (locale == null)
@@ -57,10 +28,7 @@ function fetchAPIResource(resourceType, resourceId, fetch, locale) {
57
28
  if (getLocalizedResourceId(state, locale, resourceId) === null) {
58
29
  return null;
59
30
  }
60
- resource = await fetchVersioned(
61
- `/api/makeswift/localized-global-elements/${resourceId}/${locale}`,
62
- version
63
- );
31
+ resource = await fetchResource(resourceId, version, locale);
64
32
  dispatch(
65
33
  setLocalizedResourceId({
66
34
  locale,
@@ -70,16 +38,6 @@ function fetchAPIResource(resourceType, resourceId, fetch, locale) {
70
38
  );
71
39
  break;
72
40
  }
73
- case APIResourceType.PagePathnameSlice: {
74
- const url = new URL(`/api/makeswift/page-pathname-slices/${resourceId}`, "http://n");
75
- if (locale != null)
76
- url.searchParams.set("locale", locale);
77
- resource = await fetchVersioned(url.pathname + url.search, version);
78
- break;
79
- }
80
- case APIResourceType.Table:
81
- resource = await fetchVersioned(`/api/makeswift/tables/${resourceId}`, version);
82
- break;
83
41
  default:
84
42
  resource = null;
85
43
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/state/api-client/fetch-api-resource.ts"],"sourcesContent":["import { type ThunkAction } from '@reduxjs/toolkit'\n\nimport { type SiteVersion, ApiHandlerHeaders, serializeSiteVersion } from '../../api/site-version'\n\nimport * as SiteVersionState from '../modules/site-version'\n\nimport { type Action } from '../actions'\nimport { apiResourceFulfilled } from '../actions/internal/read-only-actions'\nimport { setLocalizedResourceId } from '../host-api'\n\nimport {\n APIResourceType,\n type APIResource,\n type Swatch,\n type File,\n type Typography,\n type GlobalElement,\n type PagePathnameSlice,\n type Table,\n type LocalizedGlobalElement,\n type APIResourceLocale,\n type HttpFetch,\n} from '../../api/types'\n\nimport { type State, getHasAPIResource, getAPIResource, getLocalizedResourceId } from './state'\n\ntype Thunk<ReturnType> = ThunkAction<ReturnType, State, unknown, Action>\n\nexport function fetchAPIResource<T extends APIResourceType>(\n resourceType: T,\n resourceId: string,\n fetch: HttpFetch,\n locale?: APIResourceLocale<T>,\n): Thunk<Promise<Extract<APIResource, { __typename: T }> | null>> {\n const fetchVersioned = async <T>(url: string, version: SiteVersion | null): Promise<T | null> => {\n const response = await fetch(url, {\n headers: {\n 'Content-Type': 'application/json',\n ...(version != null\n ? { [ApiHandlerHeaders.SiteVersion]: serializeSiteVersion(version) }\n : {}),\n },\n })\n\n if (response.status === 404) return null\n if (!response.ok) throw new Error(response.statusText)\n\n if (response.headers.get('content-type')?.includes('application/json') !== true) {\n throw new Error(\n `Expected JSON response from \"${url}\" but got \"${response.headers.get('content-type')}\"`,\n )\n }\n\n return response.json()\n }\n\n return async (dispatch, getState) => {\n const state = getState()\n const version = SiteVersionState.getSiteVersion(state.siteVersion)\n\n if (getHasAPIResource(state, resourceType, resourceId, locale)) {\n return getAPIResource(state, resourceType, resourceId, locale)\n }\n\n let resource: APIResource | null\n\n switch (resourceType) {\n case APIResourceType.Swatch:\n resource = await fetchVersioned<Swatch>(`/api/makeswift/swatches/${resourceId}`, version)\n break\n\n case APIResourceType.File:\n resource = await fetchVersioned<File>(`/api/makeswift/files/${resourceId}`, version)\n break\n\n case APIResourceType.Typography:\n resource = await fetchVersioned<Typography>(\n `/api/makeswift/typographies/${resourceId}`,\n version,\n )\n break\n\n case APIResourceType.GlobalElement:\n resource = await fetchVersioned<GlobalElement>(\n `/api/makeswift/global-elements/${resourceId}`,\n version,\n )\n break\n\n case APIResourceType.LocalizedGlobalElement: {\n if (locale == null) throw new Error('Locale is required to fetch LocalizedGlobalElement')\n\n // If `getLocalizedResourceId` returns null, it means we have tried to fetch the resource,\n // but the resource is not available. If we haven't fetched it yet, it'll return undefined.\n if (getLocalizedResourceId(state, locale, resourceId) === null) {\n return null\n }\n\n resource = await fetchVersioned<LocalizedGlobalElement>(\n `/api/makeswift/localized-global-elements/${resourceId}/${locale}`,\n version,\n )\n\n dispatch(\n setLocalizedResourceId({\n locale,\n resourceId,\n localizedResourceId: resource?.id ?? null,\n }),\n )\n\n break\n }\n\n case APIResourceType.PagePathnameSlice: {\n const url = new URL(`/api/makeswift/page-pathname-slices/${resourceId}`, 'http://n')\n\n if (locale != null) url.searchParams.set('locale', locale)\n\n resource = await fetchVersioned<PagePathnameSlice>(url.pathname + url.search, version)\n break\n }\n\n case APIResourceType.Table:\n resource = await fetchVersioned<Table>(`/api/makeswift/tables/${resourceId}`, version)\n break\n\n default:\n resource = null\n }\n\n dispatch(apiResourceFulfilled(resourceType, resourceId, resource, locale))\n\n return resource as Extract<APIResource, { __typename: T }> | null\n }\n}\n"],"mappings":"AAEA,SAA2B,mBAAmB,4BAA4B;AAE1E,YAAY,sBAAsB;AAGlC,SAAS,4BAA4B;AACrC,SAAS,8BAA8B;AAEvC;AAAA,EACE;AAAA,OAWK;AAEP,SAAqB,mBAAmB,gBAAgB,8BAA8B;AAI/E,SAAS,iBACd,cACA,YACA,OACA,QACgE;AAChE,QAAM,iBAAiB,OAAU,KAAa,YAAmD;AAC/F,UAAM,WAAW,MAAM,MAAM,KAAK;AAAA,MAChC,SAAS;AAAA,QACP,gBAAgB;AAAA,QAChB,GAAI,WAAW,OACX,EAAE,CAAC,kBAAkB,WAAW,GAAG,qBAAqB,OAAO,EAAE,IACjE,CAAC;AAAA,MACP;AAAA,IACF,CAAC;AAED,QAAI,SAAS,WAAW;AAAK,aAAO;AACpC,QAAI,CAAC,SAAS;AAAI,YAAM,IAAI,MAAM,SAAS,UAAU;AAErD,QAAI,SAAS,QAAQ,IAAI,cAAc,GAAG,SAAS,kBAAkB,MAAM,MAAM;AAC/E,YAAM,IAAI;AAAA,QACR,gCAAgC,GAAG,cAAc,SAAS,QAAQ,IAAI,cAAc,CAAC;AAAA,MACvF;AAAA,IACF;AAEA,WAAO,SAAS,KAAK;AAAA,EACvB;AAEA,SAAO,OAAO,UAAU,aAAa;AACnC,UAAM,QAAQ,SAAS;AACvB,UAAM,UAAU,iBAAiB,eAAe,MAAM,WAAW;AAEjE,QAAI,kBAAkB,OAAO,cAAc,YAAY,MAAM,GAAG;AAC9D,aAAO,eAAe,OAAO,cAAc,YAAY,MAAM;AAAA,IAC/D;AAEA,QAAI;AAEJ,YAAQ,cAAc;AAAA,MACpB,KAAK,gBAAgB;AACnB,mBAAW,MAAM,eAAuB,2BAA2B,UAAU,IAAI,OAAO;AACxF;AAAA,MAEF,KAAK,gBAAgB;AACnB,mBAAW,MAAM,eAAqB,wBAAwB,UAAU,IAAI,OAAO;AACnF;AAAA,MAEF,KAAK,gBAAgB;AACnB,mBAAW,MAAM;AAAA,UACf,+BAA+B,UAAU;AAAA,UACzC;AAAA,QACF;AACA;AAAA,MAEF,KAAK,gBAAgB;AACnB,mBAAW,MAAM;AAAA,UACf,kCAAkC,UAAU;AAAA,UAC5C;AAAA,QACF;AACA;AAAA,MAEF,KAAK,gBAAgB,wBAAwB;AAC3C,YAAI,UAAU;AAAM,gBAAM,IAAI,MAAM,oDAAoD;AAIxF,YAAI,uBAAuB,OAAO,QAAQ,UAAU,MAAM,MAAM;AAC9D,iBAAO;AAAA,QACT;AAEA,mBAAW,MAAM;AAAA,UACf,4CAA4C,UAAU,IAAI,MAAM;AAAA,UAChE;AAAA,QACF;AAEA;AAAA,UACE,uBAAuB;AAAA,YACrB;AAAA,YACA;AAAA,YACA,qBAAqB,UAAU,MAAM;AAAA,UACvC,CAAC;AAAA,QACH;AAEA;AAAA,MACF;AAAA,MAEA,KAAK,gBAAgB,mBAAmB;AACtC,cAAM,MAAM,IAAI,IAAI,uCAAuC,UAAU,IAAI,UAAU;AAEnF,YAAI,UAAU;AAAM,cAAI,aAAa,IAAI,UAAU,MAAM;AAEzD,mBAAW,MAAM,eAAkC,IAAI,WAAW,IAAI,QAAQ,OAAO;AACrF;AAAA,MACF;AAAA,MAEA,KAAK,gBAAgB;AACnB,mBAAW,MAAM,eAAsB,yBAAyB,UAAU,IAAI,OAAO;AACrF;AAAA,MAEF;AACE,mBAAW;AAAA,IACf;AAEA,aAAS,qBAAqB,cAAc,YAAY,UAAU,MAAM,CAAC;AAEzE,WAAO;AAAA,EACT;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../src/state/api-client/fetch-api-resource.ts"],"sourcesContent":["import { type ThunkAction } from '@reduxjs/toolkit'\n\nimport { type SiteVersion } from '../../api/site-version'\n\nimport * as SiteVersionState from '../modules/site-version'\n\nimport { type Action } from '../actions'\nimport { apiResourceFulfilled } from '../actions/internal/read-only-actions'\nimport { setLocalizedResourceId } from '../host-api'\n\nimport {\n APIResourceType,\n type APIResource,\n type APIResourceByType,\n type APIResourceLocale,\n} from '../../api/types'\n\nimport { type State, getHasAPIResource, getAPIResource, getLocalizedResourceId } from './state'\n\ntype Thunk<ReturnType> = ThunkAction<ReturnType, State, unknown, Action>\n\nexport function fetchAPIResource<T extends APIResourceType>(\n resourceType: T,\n resourceId: string,\n fetchResource: (\n resourceId: string,\n version: SiteVersion | null,\n locale?: APIResourceLocale<T>,\n ) => Promise<APIResourceByType<T> | null>,\n locale?: APIResourceLocale<T>,\n): Thunk<Promise<APIResourceByType<T> | null>> {\n return async (dispatch, getState) => {\n const state = getState()\n const version = SiteVersionState.getSiteVersion(state.siteVersion)\n\n if (getHasAPIResource(state, resourceType, resourceId, locale)) {\n return getAPIResource(state, resourceType, resourceId, locale)\n }\n\n let resource: APIResource | null\n\n switch (resourceType) {\n case APIResourceType.Swatch:\n case APIResourceType.File:\n case APIResourceType.Typography:\n case APIResourceType.GlobalElement:\n case APIResourceType.PagePathnameSlice:\n case APIResourceType.Table:\n resource = await fetchResource(resourceId, version, locale)\n break\n\n case APIResourceType.LocalizedGlobalElement: {\n if (locale == null) throw new Error('Locale is required to fetch LocalizedGlobalElement')\n\n // If `getLocalizedResourceId` returns null, it means we have tried to fetch the resource,\n // but the resource is not available. If we haven't fetched it yet, it'll return undefined.\n if (getLocalizedResourceId(state, locale, resourceId) === null) {\n return null\n }\n\n resource = await fetchResource(resourceId, version, locale)\n\n dispatch(\n setLocalizedResourceId({\n locale,\n resourceId,\n localizedResourceId: resource?.id ?? null,\n }),\n )\n\n break\n }\n\n default:\n resource = null\n }\n\n dispatch(apiResourceFulfilled(resourceType, resourceId, resource, locale))\n\n return resource as APIResourceByType<T> | null\n }\n}\n"],"mappings":"AAIA,YAAY,sBAAsB;AAGlC,SAAS,4BAA4B;AACrC,SAAS,8BAA8B;AAEvC;AAAA,EACE;AAAA,OAIK;AAEP,SAAqB,mBAAmB,gBAAgB,8BAA8B;AAI/E,SAAS,iBACd,cACA,YACA,eAKA,QAC6C;AAC7C,SAAO,OAAO,UAAU,aAAa;AACnC,UAAM,QAAQ,SAAS;AACvB,UAAM,UAAU,iBAAiB,eAAe,MAAM,WAAW;AAEjE,QAAI,kBAAkB,OAAO,cAAc,YAAY,MAAM,GAAG;AAC9D,aAAO,eAAe,OAAO,cAAc,YAAY,MAAM;AAAA,IAC/D;AAEA,QAAI;AAEJ,YAAQ,cAAc;AAAA,MACpB,KAAK,gBAAgB;AAAA,MACrB,KAAK,gBAAgB;AAAA,MACrB,KAAK,gBAAgB;AAAA,MACrB,KAAK,gBAAgB;AAAA,MACrB,KAAK,gBAAgB;AAAA,MACrB,KAAK,gBAAgB;AACnB,mBAAW,MAAM,cAAc,YAAY,SAAS,MAAM;AAC1D;AAAA,MAEF,KAAK,gBAAgB,wBAAwB;AAC3C,YAAI,UAAU;AAAM,gBAAM,IAAI,MAAM,oDAAoD;AAIxF,YAAI,uBAAuB,OAAO,QAAQ,UAAU,MAAM,MAAM;AAC9D,iBAAO;AAAA,QACT;AAEA,mBAAW,MAAM,cAAc,YAAY,SAAS,MAAM;AAE1D;AAAA,UACE,uBAAuB;AAAA,YACrB;AAAA,YACA;AAAA,YACA,qBAAqB,UAAU,MAAM;AAAA,UACvC,CAAC;AAAA,QACH;AAEA;AAAA,MACF;AAAA,MAEA;AACE,mBAAW;AAAA,IACf;AAEA,aAAS,qBAAqB,cAAc,YAAY,UAAU,MAAM,CAAC;AAEzE,WAAO;AAAA,EACT;AACF;","names":[]}
@@ -2,6 +2,7 @@ import { type FetchableValue } from '@makeswift/controls';
2
2
  import { type Store as ApiClientStore } from '../state/api-client/store';
3
3
  import * as ApiClientState from '../state/api-client/state';
4
4
  import { type File, type GlobalElement, type LocalizedGlobalElement, type Page, type PagePathnameSlice, type Site, type Snippet, type Swatch, type Table, type Typography, APIResourceType } from './types';
5
+ import { type SiteVersion } from './site-version';
5
6
  export type CacheData = ApiClientState.SerializedState;
6
7
  export declare const CacheData: {
7
8
  empty(): CacheData;
@@ -12,18 +13,18 @@ export declare abstract class ApiResourcesClient {
12
13
  constructor({ store }: {
13
14
  store: ApiClientStore;
14
15
  });
15
- abstract fetchSwatch(swatchId: string): Promise<Swatch | null>;
16
+ fetchSwatch(swatchId: string): Promise<Swatch | null>;
16
17
  readSwatch(swatchId: string): Swatch | null;
17
18
  resolveSwatch(swatchId: string | undefined): FetchableValue<Swatch | null>;
18
- abstract fetchFile(fileId: string): Promise<File | null>;
19
+ fetchFile(fileId: string): Promise<File | null>;
19
20
  readFile(fileId: string): File | null;
20
21
  resolveFile(fileId: string | undefined): FetchableValue<File | null>;
21
- abstract fetchTypography(typographyId: string): Promise<Typography | null>;
22
+ fetchTypography(typographyId: string): Promise<Typography | null>;
22
23
  readTypography(typographyId: string): Typography | null;
23
24
  resolveTypography(typographyId: string | undefined): FetchableValue<Typography | null>;
24
- abstract fetchGlobalElement(globalElementId: string): Promise<GlobalElement | null>;
25
+ fetchGlobalElement(globalElementId: string): Promise<GlobalElement | null>;
25
26
  readGlobalElement(globalElementId: string): GlobalElement | null;
26
- abstract fetchLocalizedGlobalElement({ globalElementId, locale, }: {
27
+ fetchLocalizedGlobalElement({ globalElementId, locale, }: {
27
28
  globalElementId: string;
28
29
  locale: string;
29
30
  }): Promise<LocalizedGlobalElement | null>;
@@ -31,14 +32,14 @@ export declare abstract class ApiResourcesClient {
31
32
  globalElementId: string;
32
33
  locale: string;
33
34
  }): LocalizedGlobalElement | null;
34
- readPagePathnameSlice({ pageId, locale, }: {
35
+ fetchPagePathnameSlice({ pageId, locale, }: {
35
36
  pageId: string;
36
37
  locale: string | null;
37
- }): PagePathnameSlice | null;
38
- abstract fetchPagePathnameSlice({ pageId, locale, }: {
38
+ }): Promise<PagePathnameSlice | null>;
39
+ readPagePathnameSlice({ pageId, locale, }: {
39
40
  pageId: string;
40
41
  locale: string | null;
41
- }): Promise<PagePathnameSlice | null>;
42
+ }): PagePathnameSlice | null;
42
43
  resolvePagePathnameSlice({ pageId, locale, }: {
43
44
  pageId: string | undefined;
44
45
  locale: string | null;
@@ -48,10 +49,17 @@ export declare abstract class ApiResourcesClient {
48
49
  read: (id: string) => R | null;
49
50
  fetch: (id: string) => Promise<R | null>;
50
51
  }): FetchableValue<R | null>;
51
- abstract fetchTable(tableId: string): Promise<Table | null>;
52
+ fetchTable(tableId: string): Promise<Table | null>;
52
53
  readTable(tableId: string): Table | null;
53
54
  readSite(siteId: string): Site | null;
54
55
  readPage(pageId: string): Page | null;
55
56
  readSnippet(snippetId: string): Snippet | null;
57
+ protected abstract fetchSwatchImpl(id: string, version: SiteVersion | null): Promise<Swatch | null>;
58
+ protected abstract fetchFileImpl(id: string, version: SiteVersion | null): Promise<File | null>;
59
+ protected abstract fetchTypographyImpl(id: string, version: SiteVersion | null): Promise<Typography | null>;
60
+ protected abstract fetchGlobalElementImpl(id: string, version: SiteVersion | null): Promise<GlobalElement | null>;
61
+ protected abstract fetchLocalizedGlobalElementImpl(id: string, version: SiteVersion | null, locale: string): Promise<LocalizedGlobalElement | null>;
62
+ protected abstract fetchPagePathnameSliceImpl(id: string, version: SiteVersion | null, locale: string | null | undefined): Promise<PagePathnameSlice | null>;
63
+ protected abstract fetchTableImpl(id: string, version: SiteVersion | null): Promise<Table | null>;
56
64
  }
57
65
  //# sourceMappingURL=api-resources-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api-resources-client.d.ts","sourceRoot":"","sources":["../../../src/api/api-resources-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-resources-client.d.ts","sourceRoot":"","sources":["../../../src/api/api-resources-client.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { type State as ApiClientState } from '../state/api-client/state';
2
2
  import { type File, type GlobalElement, type LocalizedGlobalElement, type PagePathnameSlice, type Swatch, type Table, type Typography, type HttpFetch } from './types';
3
+ import { type SiteVersion } from './site-version';
3
4
  import { ApiResourcesClient } from './api-resources-client';
4
- export { CacheData } from './api-resources-client';
5
5
  /**
6
6
  * NOTE(miguel): This "client" is used to fetch Makeswift API resources needed for the host. For
7
7
  * example, swatches, files, typographies, etc. Ideally it's internal to the runtime and is only
@@ -27,18 +27,13 @@ export declare class HostApiResourcesClient extends ApiResourcesClient {
27
27
  fetch: HttpFetch;
28
28
  preloadedState: Partial<ApiClientState>;
29
29
  });
30
- fetchSwatch(swatchId: string): Promise<Swatch | null>;
31
- fetchFile(fileId: string): Promise<File | null>;
32
- fetchTypography(typographyId: string): Promise<Typography | null>;
33
- fetchGlobalElement(globalElementId: string): Promise<GlobalElement | null>;
34
- fetchLocalizedGlobalElement({ globalElementId, locale, }: {
35
- globalElementId: string;
36
- locale: string;
37
- }): Promise<LocalizedGlobalElement | null>;
38
- fetchPagePathnameSlice({ pageId, locale, }: {
39
- pageId: string;
40
- locale: string | null;
41
- }): Promise<PagePathnameSlice | null>;
42
- fetchTable(tableId: string): Promise<Table | null>;
30
+ protected fetchSwatchImpl(id: string, version: SiteVersion | null): Promise<Swatch | null>;
31
+ protected fetchFileImpl(id: string, version: SiteVersion | null): Promise<File | null>;
32
+ protected fetchTypographyImpl(id: string, version: SiteVersion | null): Promise<Typography | null>;
33
+ protected fetchGlobalElementImpl(id: string, version: SiteVersion | null): Promise<GlobalElement | null>;
34
+ protected fetchLocalizedGlobalElementImpl(id: string, version: SiteVersion | null, locale: string): Promise<LocalizedGlobalElement | null>;
35
+ protected fetchPagePathnameSliceImpl(id: string, version: SiteVersion | null, locale: string | null | undefined): Promise<PagePathnameSlice | null>;
36
+ protected fetchTableImpl(id: string, version: SiteVersion | null): Promise<Table | null>;
37
+ private fetchVersioned;
43
38
  }
44
39
  //# sourceMappingURL=host-api-resources-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"host-api-resources-client.d.ts","sourceRoot":"","sources":["../../../src/api/host-api-resources-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,IAAI,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAIxE,OAAO,EACL,KAAK,IAAI,EACT,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,MAAM,EACX,KAAK,KAAK,EACV,KAAK,UAAU,EACf,KAAK,SAAS,EAEf,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAElD;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,sBAAuB,SAAQ,kBAAkB;IAC5D,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;gBAEb,EACV,KAAK,EACL,cAAc,GACf,EAAE;QACD,KAAK,EAAE,SAAS,CAAA;QAChB,cAAc,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;KACxC;IAQK,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIrD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAI/C,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAMjE,kBAAkB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAM1E,2BAA2B,CAAC,EAChC,eAAe,EACf,MAAM,GACP,EAAE;QACD,eAAe,EAAE,MAAM,CAAA;QACvB,MAAM,EAAE,MAAM,CAAA;KACf,GAAG,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;IAMpC,sBAAsB,CAAC,EAC3B,MAAM,EACN,MAAM,GACP,EAAE;QACD,MAAM,EAAE,MAAM,CAAA;QACd,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;KACtB,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAM/B,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;CAGzD"}
1
+ {"version":3,"file":"host-api-resources-client.d.ts","sourceRoot":"","sources":["../../../src/api/host-api-resources-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,IAAI,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAIxE,OAAO,EACL,KAAK,IAAI,EACT,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,MAAM,EACX,KAAK,KAAK,EACV,KAAK,UAAU,EACf,KAAK,SAAS,EACf,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAE,KAAK,WAAW,EAA2C,MAAM,gBAAgB,CAAA;AAC1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAE3D;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,sBAAuB,SAAQ,kBAAkB;IAC5D,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;gBAEb,EACV,KAAK,EACL,cAAc,GACf,EAAE;QACD,KAAK,EAAE,SAAS,CAAA;QAChB,cAAc,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;KACxC;cAQe,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;cAIhF,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;cAI5E,mBAAmB,CACjC,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,WAAW,GAAG,IAAI,GAC1B,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;cAIb,sBAAsB,CACpC,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,WAAW,GAAG,IAAI,GAC1B,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;cAIhB,+BAA+B,CAC7C,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,WAAW,GAAG,IAAI,EAC3B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;cAOzB,0BAA0B,CACxC,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,WAAW,GAAG,IAAI,EAC3B,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAChC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;cAQpB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;YAIhF,cAAc;CAqB7B"}
@@ -0,0 +1,30 @@
1
+ import { type State as ApiClientState } from '../state/api-client/state';
2
+ import { type File, type GlobalElement, type LocalizedGlobalElement, type PagePathnameSlice, type Swatch, type Table, type Typography, type HttpFetch } from './types';
3
+ import { ApiResourcesClient } from './api-resources-client';
4
+ import { type SiteVersion } from './site-version';
5
+ /**
6
+ * Server-side implementation that makes direct authenticated requests to the Makeswift API.
7
+ * Requires an API key.
8
+ *
9
+ * For client-side usage, see `HostApiResourcesClient`, which goes through the host via
10
+ * `/api/makeswift/...` endpoints.
11
+ */
12
+ export declare class MakeswiftApiResourcesClient extends ApiResourcesClient {
13
+ private restApiClient;
14
+ private graphQlClient;
15
+ constructor({ fetch, apiKey, apiOrigin, graphqlApiEndpoint, preloadedState, }: {
16
+ fetch: HttpFetch;
17
+ apiKey: string;
18
+ apiOrigin: string;
19
+ graphqlApiEndpoint: string;
20
+ preloadedState: Partial<ApiClientState>;
21
+ });
22
+ protected fetchSwatchImpl(id: string, version: SiteVersion | null): Promise<Swatch | null>;
23
+ protected fetchFileImpl(id: string, _version: SiteVersion | null): Promise<File | null>;
24
+ protected fetchTypographyImpl(id: string, version: SiteVersion | null): Promise<Typography | null>;
25
+ protected fetchGlobalElementImpl(id: string, version: SiteVersion | null): Promise<GlobalElement | null>;
26
+ protected fetchLocalizedGlobalElementImpl(id: string, version: SiteVersion | null, locale: string): Promise<LocalizedGlobalElement | null>;
27
+ protected fetchPagePathnameSliceImpl(id: string, version: SiteVersion | null, locale: string | null | undefined): Promise<PagePathnameSlice | null>;
28
+ protected fetchTableImpl(id: string, _version: SiteVersion | null): Promise<Table | null>;
29
+ }
30
+ //# sourceMappingURL=makeswift-api-resources-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeswift-api-resources-client.d.ts","sourceRoot":"","sources":["../../../src/api/makeswift-api-resources-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,IAAI,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAGxE,OAAO,EACL,KAAK,IAAI,EACT,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,MAAM,EACX,KAAK,KAAK,EACV,KAAK,UAAU,EACf,KAAK,SAAS,EACf,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAMjD;;;;;;GAMG;AACH,qBAAa,2BAA4B,SAAQ,kBAAkB;IACjE,OAAO,CAAC,aAAa,CAAiC;IACtD,OAAO,CAAC,aAAa,CAAoC;gBAE7C,EACV,KAAK,EACL,MAAM,EACN,SAAS,EACT,kBAAkB,EAClB,cAAc,GACf,EAAE;QACD,KAAK,EAAE,SAAS,CAAA;QAChB,MAAM,EAAE,MAAM,CAAA;QACd,SAAS,EAAE,MAAM,CAAA;QACjB,kBAAkB,EAAE,MAAM,CAAA;QAC1B,cAAc,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;KACxC;cAuBe,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;cAIhF,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;cAK7E,mBAAmB,CACjC,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,WAAW,GAAG,IAAI,GAC1B,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;cAIb,sBAAsB,CACpC,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,WAAW,GAAG,IAAI,GAC1B,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;cAIhB,+BAA+B,CAC7C,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,WAAW,GAAG,IAAI,EAC3B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;cAIzB,0BAA0B,CACxC,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,WAAW,GAAG,IAAI,EAC3B,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAChC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;cAIpB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;CAIhG"}
@@ -17,7 +17,7 @@ export declare class MakeswiftRestAPIClient {
17
17
  locale?: string | null;
18
18
  }): Promise<(PagePathnameSlice | null)[]>;
19
19
  getPagePathnameSlice(pageId: string, siteVersion: SiteVersion | null, { locale }?: {
20
- locale?: string;
20
+ locale?: string | null;
21
21
  }): Promise<PagePathnameSlice | null>;
22
22
  protected fetch(path: string, siteVersion: SiteVersion | null, init?: RequestInit): Promise<Response>;
23
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"rest-api-client.d.ts","sourceRoot":"","sources":["../../../src/api/rest-api-client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,MAAM,EACX,KAAK,UAAU,EACf,KAAK,SAAS,EACf,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAGjD,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAW;IAEzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;gBAEd,EACV,KAAK,EACL,MAAM,EACN,SAAS,GACV,EAAE;QACD,KAAK,EAAE,SAAS,CAAA;QAChB,MAAM,EAAE,MAAM,CAAA;QACd,SAAS,EAAE,MAAM,CAAA;KAClB;IAMK,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAoBpF,aAAa,CACjB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,WAAW,GAAG,IAAI,GAC9B,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAoBvB,gBAAgB,CACpB,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,WAAW,GAAG,IAAI,GAC9B,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAoB1B,yBAAyB,CAC7B,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,GAAG,IAAI,GAC9B,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;IAwBnC,qBAAqB,CACzB,OAAO,EAAE,MAAM,EAAE,EACjB,WAAW,EAAE,WAAW,GAAG,IAAI,EAC/B,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GACrC,OAAO,CAAC,CAAC,iBAAiB,GAAG,IAAI,CAAC,EAAE,CAAC;IAuClC,oBAAoB,CACxB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,GAAG,IAAI,EAC/B,EAAE,MAAM,EAAE,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GACnC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;cAMpB,KAAK,CACnB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,WAAW,GAAG,IAAI,EAC/B,IAAI,CAAC,EAAE,WAAW,GACjB,OAAO,CAAC,QAAQ,CAAC;CA4BrB;AAYD,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAW7E"}
1
+ {"version":3,"file":"rest-api-client.d.ts","sourceRoot":"","sources":["../../../src/api/rest-api-client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,MAAM,EACX,KAAK,UAAU,EACf,KAAK,SAAS,EACf,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAGjD,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAW;IAEzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;gBAEd,EACV,KAAK,EACL,MAAM,EACN,SAAS,GACV,EAAE;QACD,KAAK,EAAE,SAAS,CAAA;QAChB,MAAM,EAAE,MAAM,CAAA;QACd,SAAS,EAAE,MAAM,CAAA;KAClB;IAMK,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAoBpF,aAAa,CACjB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,WAAW,GAAG,IAAI,GAC9B,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAoBvB,gBAAgB,CACpB,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,WAAW,GAAG,IAAI,GAC9B,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAoB1B,yBAAyB,CAC7B,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,GAAG,IAAI,GAC9B,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;IAwBnC,qBAAqB,CACzB,OAAO,EAAE,MAAM,EAAE,EACjB,WAAW,EAAE,WAAW,GAAG,IAAI,EAC/B,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GACrC,OAAO,CAAC,CAAC,iBAAiB,GAAG,IAAI,CAAC,EAAE,CAAC;IAuClC,oBAAoB,CACxB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,GAAG,IAAI,EAC/B,EAAE,MAAM,EAAE,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAO,GAC1C,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;cAMpB,KAAK,CACnB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,WAAW,GAAG,IAAI,EAC/B,IAAI,CAAC,EAAE,WAAW,GACjB,OAAO,CAAC,QAAQ,CAAC;CA4BrB;AAYD,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAW7E"}
@@ -14,6 +14,9 @@ export declare const APIResourceType: {
14
14
  [R in APIResource as R['__typename']]: R['__typename'];
15
15
  };
16
16
  export type APIResourceType = (typeof APIResourceType)[keyof typeof APIResourceType];
17
+ export type APIResourceByType<T extends APIResourceType> = Extract<APIResource, {
18
+ __typename: T;
19
+ }>;
17
20
  export type APIResourceLocale<R extends APIResource | APIResourceType> = R extends LocalizableAPIResource | LocalizableAPIResourceType ? string | null : never;
18
21
  export type HttpFetch = (url: string | URL, init?: RequestInit) => Promise<Response>;
19
22
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/api/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,IAAI,MAAM,EACxB,YAAY,IAAI,IAAI,EACpB,kBAAkB,IAAI,UAAU,EAChC,yBAAyB,EACzB,qBAAqB,IAAI,aAAa,EACtC,8BAA8B,IAAI,sBAAsB,EACxD,aAAa,IAAI,KAAK,EACtB,eAAe,IAAI,OAAO,EAC1B,YAAY,IAAI,IAAI,EACpB,YAAY,IAAI,IAAI,EACrB,MAAM,2BAA2B,CAAA;AAElC,KAAK,iBAAiB,GAAG,yBAAyB,GAAG;IACnD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAClC,CAAA;AAED,YAAY,EACV,MAAM,EACN,IAAI,EACJ,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,sBAAsB,EACtB,KAAK,EACL,OAAO,EACP,IAAI,EACJ,IAAI,GACL,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,iBAAiB,GAAG,sBAAsB,CAAA;AAE/E,eAAO,MAAM,0BAA0B,EAAE;KACtC,CAAC,IAAI,sBAAsB,IAAI,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC;CAIlE,CAAA;AAED,MAAM,MAAM,0BAA0B,GACpC,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,OAAO,0BAA0B,CAAC,CAAA;AAE9E,MAAM,MAAM,WAAW,GACnB,sBAAsB,GACtB,MAAM,GACN,IAAI,GACJ,UAAU,GACV,aAAa,GACb,KAAK,GACL,OAAO,GACP,IAAI,GACJ,IAAI,CAAA;AAER,eAAO,MAAM,eAAe,EAAE;KAAG,CAAC,IAAI,WAAW,IAAI,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC;CAUrF,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAA;AAEpF,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,WAAW,GAAG,eAAe,IAAI,CAAC,SACtE,sBAAsB,GACtB,0BAA0B,GAC1B,MAAM,GAAG,IAAI,GACb,KAAK,CAAA;AAET,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/api/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,IAAI,MAAM,EACxB,YAAY,IAAI,IAAI,EACpB,kBAAkB,IAAI,UAAU,EAChC,yBAAyB,EACzB,qBAAqB,IAAI,aAAa,EACtC,8BAA8B,IAAI,sBAAsB,EACxD,aAAa,IAAI,KAAK,EACtB,eAAe,IAAI,OAAO,EAC1B,YAAY,IAAI,IAAI,EACpB,YAAY,IAAI,IAAI,EACrB,MAAM,2BAA2B,CAAA;AAElC,KAAK,iBAAiB,GAAG,yBAAyB,GAAG;IACnD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAClC,CAAA;AAED,YAAY,EACV,MAAM,EACN,IAAI,EACJ,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,sBAAsB,EACtB,KAAK,EACL,OAAO,EACP,IAAI,EACJ,IAAI,GACL,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,iBAAiB,GAAG,sBAAsB,CAAA;AAE/E,eAAO,MAAM,0BAA0B,EAAE;KACtC,CAAC,IAAI,sBAAsB,IAAI,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC;CAIlE,CAAA;AAED,MAAM,MAAM,0BAA0B,GACpC,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,OAAO,0BAA0B,CAAC,CAAA;AAE9E,MAAM,MAAM,WAAW,GACnB,sBAAsB,GACtB,MAAM,GACN,IAAI,GACJ,UAAU,GACV,aAAa,GACb,KAAK,GACL,OAAO,GACP,IAAI,GACJ,IAAI,CAAA;AAER,eAAO,MAAM,eAAe,EAAE;KAAG,CAAC,IAAI,WAAW,IAAI,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC;CAUrF,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAA;AAEpF,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,eAAe,IAAI,OAAO,CAAC,WAAW,EAAE;IAAE,UAAU,EAAE,CAAC,CAAA;CAAE,CAAC,CAAA;AAElG,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,WAAW,GAAG,eAAe,IAAI,CAAC,SACtE,sBAAsB,GACtB,0BAA0B,GAC1B,MAAM,GAAG,IAAI,GACb,KAAK,CAAA;AAET,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type ElementData } from '../../../state/read-only-state';
3
+ export declare function ResolveProps({ element, children: renderComponent, }: {
4
+ element: ElementData;
5
+ children: (props: Record<string, unknown>) => ReactNode;
6
+ }): ReactNode;
7
+ //# sourceMappingURL=resolve-props.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-props.d.ts","sourceRoot":"","sources":["../../../../../src/runtimes/react/components/resolve-props.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,gCAAgC,CAAA;AAOjE,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,QAAQ,EAAE,eAAe,GAC1B,EAAE;IACD,OAAO,EAAE,WAAW,CAAA;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,SAAS,CAAA;CACxD,GAAG,SAAS,CAaZ"}