@makeswift/runtime 0.23.7 → 0.23.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 (95) hide show
  1. package/dist/cjs/api/react.js +28 -7
  2. package/dist/cjs/api/react.js.map +1 -1
  3. package/dist/cjs/api/site-version.js +36 -0
  4. package/dist/cjs/api/site-version.js.map +1 -0
  5. package/dist/cjs/next/api-handler/handlers/draft-mode.js +78 -0
  6. package/dist/cjs/next/api-handler/handlers/draft-mode.js.map +1 -0
  7. package/dist/cjs/next/api-handler/handlers/manifest.js +1 -1
  8. package/dist/cjs/next/api-handler/handlers/preview-mode.js +71 -0
  9. package/dist/cjs/next/api-handler/handlers/preview-mode.js.map +1 -0
  10. package/dist/cjs/next/api-handler/handlers/proxy-draft-mode.js +2 -2
  11. package/dist/cjs/next/api-handler/handlers/proxy-draft-mode.js.map +1 -1
  12. package/dist/cjs/next/api-handler/handlers/proxy-preview-mode.js +2 -2
  13. package/dist/cjs/next/api-handler/handlers/proxy-preview-mode.js.map +1 -1
  14. package/dist/cjs/next/api-handler/index.js +20 -2
  15. package/dist/cjs/next/api-handler/index.js.map +1 -1
  16. package/dist/cjs/next/client.js +7 -6
  17. package/dist/cjs/next/client.js.map +1 -1
  18. package/dist/cjs/next/draft-mode/index.js +3 -3
  19. package/dist/cjs/next/draft-mode/index.js.map +1 -1
  20. package/dist/cjs/next/middleware/exceptions.js +59 -0
  21. package/dist/cjs/next/middleware/exceptions.js.map +1 -0
  22. package/dist/cjs/next/middleware/index.js +37 -0
  23. package/dist/cjs/next/middleware/index.js.map +1 -0
  24. package/dist/cjs/next/middleware/request-utils.js +167 -0
  25. package/dist/cjs/next/middleware/request-utils.js.map +1 -0
  26. package/dist/cjs/next/preview-mode.js +4 -9
  27. package/dist/cjs/next/preview-mode.js.map +1 -1
  28. package/dist/cjs/runtimes/react/components/RuntimeProvider.js +4 -2
  29. package/dist/cjs/runtimes/react/components/RuntimeProvider.js.map +1 -1
  30. package/dist/cjs/runtimes/react/host-api-client.js +5 -1
  31. package/dist/cjs/runtimes/react/host-api-client.js.map +1 -1
  32. package/dist/cjs/state/makeswift-api-client.js +21 -10
  33. package/dist/cjs/state/makeswift-api-client.js.map +1 -1
  34. package/dist/esm/api/react.js +28 -7
  35. package/dist/esm/api/react.js.map +1 -1
  36. package/dist/esm/api/site-version.js +10 -0
  37. package/dist/esm/api/site-version.js.map +1 -0
  38. package/dist/esm/next/api-handler/handlers/draft-mode.js +58 -0
  39. package/dist/esm/next/api-handler/handlers/draft-mode.js.map +1 -0
  40. package/dist/esm/next/api-handler/handlers/manifest.js +1 -1
  41. package/dist/esm/next/api-handler/handlers/preview-mode.js +51 -0
  42. package/dist/esm/next/api-handler/handlers/preview-mode.js.map +1 -0
  43. package/dist/esm/next/api-handler/handlers/proxy-draft-mode.js +1 -1
  44. package/dist/esm/next/api-handler/handlers/proxy-draft-mode.js.map +1 -1
  45. package/dist/esm/next/api-handler/handlers/proxy-preview-mode.js +1 -1
  46. package/dist/esm/next/api-handler/handlers/proxy-preview-mode.js.map +1 -1
  47. package/dist/esm/next/api-handler/index.js +24 -2
  48. package/dist/esm/next/api-handler/index.js.map +1 -1
  49. package/dist/esm/next/client.js +2 -1
  50. package/dist/esm/next/client.js.map +1 -1
  51. package/dist/esm/next/draft-mode/index.js +1 -1
  52. package/dist/esm/next/draft-mode/index.js.map +1 -1
  53. package/dist/esm/next/middleware/exceptions.js +29 -0
  54. package/dist/esm/next/middleware/exceptions.js.map +1 -0
  55. package/dist/esm/next/middleware/index.js +15 -0
  56. package/dist/esm/next/middleware/index.js.map +1 -0
  57. package/dist/esm/next/middleware/request-utils.js +146 -0
  58. package/dist/esm/next/middleware/request-utils.js.map +1 -0
  59. package/dist/esm/next/preview-mode.js +2 -5
  60. package/dist/esm/next/preview-mode.js.map +1 -1
  61. package/dist/esm/runtimes/react/components/RuntimeProvider.js +4 -2
  62. package/dist/esm/runtimes/react/components/RuntimeProvider.js.map +1 -1
  63. package/dist/esm/runtimes/react/host-api-client.js +5 -1
  64. package/dist/esm/runtimes/react/host-api-client.js.map +1 -1
  65. package/dist/esm/state/makeswift-api-client.js +21 -10
  66. package/dist/esm/state/makeswift-api-client.js.map +1 -1
  67. package/dist/types/api/react.d.ts +4 -1
  68. package/dist/types/api/react.d.ts.map +1 -1
  69. package/dist/types/api/site-version.d.ts +6 -0
  70. package/dist/types/api/site-version.d.ts.map +1 -0
  71. package/dist/types/next/api-handler/handlers/draft-mode.d.ts +20 -0
  72. package/dist/types/next/api-handler/handlers/draft-mode.d.ts.map +1 -0
  73. package/dist/types/next/api-handler/handlers/preview-mode.d.ts +20 -0
  74. package/dist/types/next/api-handler/handlers/preview-mode.d.ts.map +1 -0
  75. package/dist/types/next/api-handler/handlers/proxy-preview-mode.d.ts.map +1 -1
  76. package/dist/types/next/api-handler/index.d.ts +3 -1
  77. package/dist/types/next/api-handler/index.d.ts.map +1 -1
  78. package/dist/types/next/client.d.ts +1 -1
  79. package/dist/types/next/client.d.ts.map +1 -1
  80. package/dist/types/next/draft-mode/index.d.ts +2 -2
  81. package/dist/types/next/middleware/exceptions.d.ts +16 -0
  82. package/dist/types/next/middleware/exceptions.d.ts.map +1 -0
  83. package/dist/types/next/middleware/index.d.ts +2 -0
  84. package/dist/types/next/middleware/index.d.ts.map +1 -0
  85. package/dist/types/next/middleware/request-utils.d.ts +16 -0
  86. package/dist/types/next/middleware/request-utils.d.ts.map +1 -0
  87. package/dist/types/next/middleware/request-utils.test.d.ts +2 -0
  88. package/dist/types/next/middleware/request-utils.test.d.ts.map +1 -0
  89. package/dist/types/next/preview-mode.d.ts +3 -5
  90. package/dist/types/next/preview-mode.d.ts.map +1 -1
  91. package/dist/types/runtimes/react/components/RuntimeProvider.d.ts.map +1 -1
  92. package/dist/types/runtimes/react/host-api-client.d.ts.map +1 -1
  93. package/dist/types/state/makeswift-api-client.d.ts +2 -1
  94. package/dist/types/state/makeswift-api-client.d.ts.map +1 -1
  95. package/package.json +10 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/next/api-handler/index.ts"],"sourcesContent":["import Cors from 'cors'\nimport { NextApiRequest, NextApiResponse } from 'next'\nimport { NextRequest, NextResponse } from 'next/server'\nimport { Match, match as matchPattern } from 'path-to-regexp'\nimport { APIResource } from '../../api'\nimport { Makeswift } from '../client'\n\nimport elementTree, { ElementTreeResponse } from './handlers/element-tree'\nimport fonts, { Font, FontsResponse, GetFonts } from './handlers/fonts'\nimport manifest, { Manifest, ManifestResponse } from './handlers/manifest'\nimport proxyPreviewMode, { ProxyPreviewModeResponse } from './handlers/proxy-preview-mode'\nimport proxyDraftMode, { ProxyDraftModeResponse } from './handlers/proxy-draft-mode'\nimport { revalidate, RevalidationResponse } from './handlers/revalidate'\nimport translatableData, { TranslatableDataResponse } from './handlers/translatable-data'\nimport mergeTranslatedData, { TranslatedDataResponse } from './handlers/merge-translated-data'\nimport webhook from './handlers/webhook'\nimport { WebhookResponseBody } from './handlers/webhook/types'\nimport { ReactRuntime } from '../../react'\nimport { P, match } from 'ts-pattern'\nimport { getSiteVersion } from '../draft-mode'\n\nexport type { Manifest, Font }\n\ntype Context = { params: { [key: string]: string | string[] } }\n\ntype MakeswiftApiHandlerConfig = {\n appOrigin?: string\n apiOrigin?: string\n getFonts?: GetFonts\n runtime: ReactRuntime\n}\n\ntype NotFoundError = { message: string }\n\nexport type MakeswiftApiHandlerResponse =\n | ManifestResponse\n | RevalidationResponse\n | ProxyPreviewModeResponse\n | ProxyDraftModeResponse\n | FontsResponse\n | ElementTreeResponse\n | TranslatableDataResponse\n | TranslatedDataResponse\n | APIResource\n | NotFoundError\n | WebhookResponseBody\n\ntype MakeswiftApiHandlerArgs =\n | [NextRequest, Context]\n | [NextApiRequest, NextApiResponse<MakeswiftApiHandlerResponse>]\n\nfunction apiRequestParams(request: NextApiRequest): Promise<NextApiRequest['query']> {\n // `NextApiRequest.query` prop became async in Next.js 15, but it's not reflected in the type definition;\n // force-casting it to a `Promise` manually\n return Promise.resolve(request.query)\n}\n\nexport function MakeswiftApiHandler(\n apiKey: string,\n {\n appOrigin = 'https://app.makeswift.com',\n apiOrigin = 'https://api.makeswift.com',\n getFonts,\n runtime,\n }: MakeswiftApiHandlerConfig,\n): (...args: MakeswiftApiHandlerArgs) => Promise<NextResponse<MakeswiftApiHandlerResponse> | void> {\n const cors = Cors({ origin: appOrigin })\n\n if (typeof apiKey !== 'string') {\n throw new Error(\n 'The Makeswift Next.js API handler must be passed a valid Makeswift site API key: ' +\n \"`MakeswiftApiHandler('<makeswift_site_api_key>')`\\n\" +\n `Received \"${apiKey}\" instead.`,\n )\n }\n\n const routeHandlerPattern = [P.instanceOf(Request), P.any] as const\n const apiRoutePattern = [P.any, P.any] as const\n\n return function handler(\n ...args: MakeswiftApiHandlerArgs\n ): Promise<NextResponse<MakeswiftApiHandlerResponse> | void> {\n return match(args)\n .with(routeHandlerPattern, async args => {\n const response = await makeswiftApiHandler(...args)\n\n response.headers.append('Access-Control-Allow-Origin', appOrigin)\n response.headers.append('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS')\n response.headers.append('Access-Control-Allow-Headers', 'Content-Type, Authorization')\n\n return response\n })\n .with(apiRoutePattern, async args => {\n const [req, res] = args\n\n await new Promise<void>((resolve, reject) => {\n cors(req, res, err => {\n if (err instanceof Error) reject(err)\n else resolve()\n })\n })\n\n return await makeswiftApiHandler(...args)\n })\n .exhaustive()\n }\n\n async function makeswiftApiHandler(\n request: NextRequest,\n context: Context,\n ): Promise<NextResponse<MakeswiftApiHandlerResponse>>\n async function makeswiftApiHandler(\n req: NextApiRequest,\n res: NextApiResponse<MakeswiftApiHandlerResponse>,\n ): Promise<void>\n async function makeswiftApiHandler(\n ...args: MakeswiftApiHandlerArgs\n ): Promise<NextResponse<MakeswiftApiHandlerResponse> | void> {\n const params = match(args)\n .with(routeHandlerPattern, ([, context]) => context.params)\n .with(apiRoutePattern, ([req]) => apiRequestParams(req))\n .exhaustive()\n\n const { makeswift } = await params\n\n if (!Array.isArray(makeswift)) {\n throw new Error(\n 'The Makeswift Next.js API handler must be used in a dynamic catch-all route named `[...makeswift]`.\\n' +\n `Received \"${makeswift}\" for the \\`makeswift\\` param instead.\\n` +\n 'Read more about dynamic catch-all routes here: https://nextjs.org/docs/routing/dynamic-routes#catch-all-routes',\n )\n }\n\n const client = new Makeswift(apiKey, { apiOrigin, runtime })\n const siteVersion = await match(args)\n .with(routeHandlerPattern, () => getSiteVersion())\n .with(apiRoutePattern, ([req]) => Makeswift.getSiteVersion(req.previewData))\n .exhaustive()\n const action = '/' + makeswift.join('/')\n const matches = <T extends object>(pattern: string): Match<T> =>\n matchPattern<T>(pattern, { decode: decodeURIComponent })(action)\n\n let m\n\n if (matches('/manifest')) {\n return match(args)\n .with(routeHandlerPattern, args => manifest(...args, { apiKey }))\n .with(apiRoutePattern, args => manifest(...args, { apiKey }))\n .exhaustive()\n }\n\n if (matches('/revalidate')) {\n return match(args)\n .with(routeHandlerPattern, args => revalidate(...args, { apiKey }))\n .with(apiRoutePattern, args => revalidate(...args, { apiKey }))\n .exhaustive()\n }\n\n if (matches('/proxy-preview-mode')) {\n return match(args)\n .with(routeHandlerPattern, args => proxyPreviewMode(...args, { apiKey }))\n .with(apiRoutePattern, args => proxyPreviewMode(...args, { apiKey }))\n .exhaustive()\n }\n\n if (matches('/proxy-draft-mode')) {\n return match(args)\n .with(routeHandlerPattern, args => proxyDraftMode(...args, { apiKey }))\n .with(apiRoutePattern, args => proxyDraftMode(...args, { apiKey }))\n .exhaustive()\n }\n\n if (matches('/fonts')) {\n return match(args)\n .with(routeHandlerPattern, args => fonts(...args, { getFonts }))\n .with(apiRoutePattern, args => fonts(...args, { getFonts }))\n .exhaustive()\n }\n\n if (matches('/element-tree')) {\n return match(args)\n .with(routeHandlerPattern, args => elementTree(...args, runtime))\n .with(apiRoutePattern, args => elementTree(...args, runtime))\n .exhaustive()\n }\n\n if (matches('/translatable-data')) {\n return match(args)\n .with(routeHandlerPattern, args => translatableData(...args, client))\n .with(apiRoutePattern, args => translatableData(...args, client))\n .exhaustive()\n }\n\n if (matches('/merge-translated-data')) {\n return match(args)\n .with(routeHandlerPattern, args => mergeTranslatedData(...args, client))\n .with(apiRoutePattern, args => mergeTranslatedData(...args, client))\n .exhaustive()\n }\n\n if (matches('/webhook')) {\n return match(args)\n .with(routeHandlerPattern, args => webhook(...args, { apiKey }))\n .with(apiRoutePattern, args => webhook(...args, { apiKey }))\n .exhaustive()\n }\n\n const handleResource = <T extends APIResource>(\n resource: T | null,\n ): NextResponse<MakeswiftApiHandlerResponse> | void => {\n const status = resource === null ? 404 : 200\n const body = resource === null ? { message: 'Not Found' } : resource\n\n return match(args)\n .with(routeHandlerPattern, () => NextResponse.json(body, { status }))\n .with(apiRoutePattern, ([, res]) => res.status(status).json(body))\n .exhaustive()\n }\n\n if ((m = matches<{ id: string }>('/swatches/:id'))) {\n return client.getSwatch(m.params.id, siteVersion).then(handleResource)\n }\n\n if ((m = matches<{ id: string }>('/files/:id'))) {\n return client.getFile(m.params.id).then(handleResource)\n }\n\n if ((m = matches<{ id: string }>('/typographies/:id'))) {\n return client.getTypography(m.params.id, siteVersion).then(handleResource)\n }\n\n if ((m = matches<{ id: string }>('/global-elements/:id'))) {\n return client.getGlobalElement(m.params.id, siteVersion).then(handleResource)\n }\n\n if (\n (m = matches<{ globalElementId: string; locale: string }>(\n '/localized-global-elements/:globalElementId/:locale',\n ))\n ) {\n return client\n .getLocalizedGlobalElement(m.params.globalElementId, m.params.locale, siteVersion)\n .then(handleResource)\n }\n\n if ((m = matches<{ id: string }>('/page-pathname-slices/:id'))) {\n const localeParam = match(args)\n .with(routeHandlerPattern, ([request]) => request.nextUrl.searchParams.get('locale'))\n .with(apiRoutePattern, ([req]) => req.query.locale)\n .exhaustive()\n const locale = typeof localeParam === 'string' ? localeParam : undefined\n\n return client.getPagePathnameSlice(m.params.id, siteVersion, { locale }).then(handleResource)\n }\n\n if ((m = matches<{ id: string }>('/tables/:id'))) {\n return client.getTable(m.params.id).then(handleResource)\n }\n\n const status = 404\n const body = { message: 'Not Found' }\n\n return match(args)\n .with(routeHandlerPattern, () => NextResponse.json(body, { status }))\n .with(apiRoutePattern, ([, res]) => res.status(status).json(body))\n .exhaustive()\n }\n}\n"],"mappings":"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","names":["Cors","args","matchPattern","manifest","proxyPreviewMode","proxyDraftMode","fonts","elementTree","translatableData","mergeTranslatedData","webhook","status","body"]}
1
+ {"version":3,"sources":["../../../../src/next/api-handler/index.ts"],"sourcesContent":["import Cors from 'cors'\nimport { NextApiRequest, NextApiResponse } from 'next'\nimport { NextRequest, NextResponse } from 'next/server'\nimport { Match, match as matchPattern } from 'path-to-regexp'\nimport { APIResource } from '../../api'\nimport { Makeswift } from '../client'\n\nimport elementTree, { ElementTreeResponse } from './handlers/element-tree'\nimport fonts, { Font, FontsResponse, GetFonts } from './handlers/fonts'\nimport manifest, { Manifest, ManifestResponse } from './handlers/manifest'\nimport proxyPreviewMode, { ProxyPreviewModeResponse } from './handlers/proxy-preview-mode'\nimport proxyDraftMode, { ProxyDraftModeResponse } from './handlers/proxy-draft-mode'\nimport draftMode, { type DraftModeResponse } from './handlers/draft-mode'\nimport previewMode, { type PreviewModeResponse } from './handlers/preview-mode'\nimport { revalidate, RevalidationResponse } from './handlers/revalidate'\nimport translatableData, { TranslatableDataResponse } from './handlers/translatable-data'\nimport mergeTranslatedData, { TranslatedDataResponse } from './handlers/merge-translated-data'\nimport webhook from './handlers/webhook'\nimport { WebhookResponseBody } from './handlers/webhook/types'\nimport { ReactRuntime } from '../../react'\nimport { P, match } from 'ts-pattern'\nimport {\n API_HANDLER_SITE_VERSION_HEADER,\n MakeswiftSiteVersion,\n makeswiftSiteVersionSchema,\n} from '../../api/site-version'\n\nexport type { Manifest, Font }\n\ntype Context = { params: { [key: string]: string | string[] } }\n\ntype MakeswiftApiHandlerConfig = {\n appOrigin?: string\n apiOrigin?: string\n getFonts?: GetFonts\n runtime: ReactRuntime\n}\n\ntype NotFoundError = { message: string }\n\nexport type MakeswiftApiHandlerResponse =\n | ManifestResponse\n | RevalidationResponse\n | ProxyPreviewModeResponse\n | ProxyDraftModeResponse\n | DraftModeResponse\n | PreviewModeResponse\n | FontsResponse\n | ElementTreeResponse\n | TranslatableDataResponse\n | TranslatedDataResponse\n | APIResource\n | NotFoundError\n | WebhookResponseBody\n\ntype MakeswiftApiHandlerArgs =\n | [NextRequest, Context]\n | [NextApiRequest, NextApiResponse<MakeswiftApiHandlerResponse>]\n\nfunction apiRequestParams(request: NextApiRequest): Promise<NextApiRequest['query']> {\n // `NextApiRequest.query` prop became async in Next.js 15, but it's not reflected in the type definition;\n // force-casting it to a `Promise` manually\n return Promise.resolve(request.query)\n}\n\nexport function MakeswiftApiHandler(\n apiKey: string,\n {\n appOrigin = 'https://app.makeswift.com',\n apiOrigin = 'https://api.makeswift.com',\n getFonts,\n runtime,\n }: MakeswiftApiHandlerConfig,\n): (...args: MakeswiftApiHandlerArgs) => Promise<NextResponse<MakeswiftApiHandlerResponse> | void> {\n const cors = Cors({ origin: appOrigin })\n\n if (typeof apiKey !== 'string') {\n throw new Error(\n 'The Makeswift Next.js API handler must be passed a valid Makeswift site API key: ' +\n \"`MakeswiftApiHandler('<makeswift_site_api_key>')`\\n\" +\n `Received \"${apiKey}\" instead.`,\n )\n }\n\n const routeHandlerPattern = [P.instanceOf(Request), P.any] as const\n const apiRoutePattern = [P.any, P.any] as const\n\n return function handler(\n ...args: MakeswiftApiHandlerArgs\n ): Promise<NextResponse<MakeswiftApiHandlerResponse> | void> {\n return match(args)\n .with(routeHandlerPattern, async args => {\n const response = await makeswiftApiHandler(...args)\n\n response.headers.append('Access-Control-Allow-Origin', appOrigin)\n response.headers.append('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS')\n response.headers.append('Access-Control-Allow-Headers', 'Content-Type, Authorization')\n\n return response\n })\n .with(apiRoutePattern, async args => {\n const [req, res] = args\n\n await new Promise<void>((resolve, reject) => {\n cors(req, res, err => {\n if (err instanceof Error) reject(err)\n else resolve()\n })\n })\n\n return await makeswiftApiHandler(...args)\n })\n .exhaustive()\n }\n\n function getSiteVersionFromRequest(args: MakeswiftApiHandlerArgs): MakeswiftSiteVersion {\n const header = match(args)\n .with(routeHandlerPattern, ([request]) =>\n request.headers.get(API_HANDLER_SITE_VERSION_HEADER),\n )\n .with(apiRoutePattern, ([req]) => req.headers[API_HANDLER_SITE_VERSION_HEADER.toLowerCase()])\n .exhaustive()\n\n const parsed = makeswiftSiteVersionSchema.safeParse(header)\n if (!parsed.success) return MakeswiftSiteVersion.Live\n return parsed.data\n }\n\n async function makeswiftApiHandler(\n request: NextRequest,\n context: Context,\n ): Promise<NextResponse<MakeswiftApiHandlerResponse>>\n async function makeswiftApiHandler(\n req: NextApiRequest,\n res: NextApiResponse<MakeswiftApiHandlerResponse>,\n ): Promise<void>\n async function makeswiftApiHandler(\n ...args: MakeswiftApiHandlerArgs\n ): Promise<NextResponse<MakeswiftApiHandlerResponse> | void> {\n const params = match(args)\n .with(routeHandlerPattern, ([, context]) => context.params)\n .with(apiRoutePattern, ([req]) => apiRequestParams(req))\n .exhaustive()\n\n const { makeswift } = await params\n\n if (!Array.isArray(makeswift)) {\n throw new Error(\n 'The Makeswift Next.js API handler must be used in a dynamic catch-all route named `[...makeswift]`.\\n' +\n `Received \"${makeswift}\" for the \\`makeswift\\` param instead.\\n` +\n 'Read more about dynamic catch-all routes here: https://nextjs.org/docs/routing/dynamic-routes#catch-all-routes',\n )\n }\n\n const client = new Makeswift(apiKey, { apiOrigin, runtime })\n const siteVersion = getSiteVersionFromRequest(args)\n const action = '/' + makeswift.join('/')\n const matches = <T extends object>(pattern: string): Match<T> =>\n matchPattern<T>(pattern, { decode: decodeURIComponent })(action)\n\n let m\n\n if (matches('/manifest')) {\n return match(args)\n .with(routeHandlerPattern, args => manifest(...args, { apiKey }))\n .with(apiRoutePattern, args => manifest(...args, { apiKey }))\n .exhaustive()\n }\n\n if (matches('/revalidate')) {\n return match(args)\n .with(routeHandlerPattern, args => revalidate(...args, { apiKey }))\n .with(apiRoutePattern, args => revalidate(...args, { apiKey }))\n .exhaustive()\n }\n\n if (matches('/proxy-preview-mode')) {\n return match(args)\n .with(routeHandlerPattern, args => proxyPreviewMode(...args, { apiKey }))\n .with(apiRoutePattern, args => proxyPreviewMode(...args, { apiKey }))\n .exhaustive()\n }\n\n if (matches('/proxy-draft-mode')) {\n return match(args)\n .with(routeHandlerPattern, args => proxyDraftMode(...args, { apiKey }))\n .with(apiRoutePattern, args => proxyDraftMode(...args, { apiKey }))\n .exhaustive()\n }\n\n if (matches('/draft-mode')) {\n return match(args)\n .with(routeHandlerPattern, args => draftMode(...args, { apiKey }))\n .with(apiRoutePattern, args => draftMode(...args, { apiKey }))\n .exhaustive()\n }\n\n if (matches('/preview-mode')) {\n return match(args)\n .with(routeHandlerPattern, args => previewMode(...args, { apiKey }))\n .with(apiRoutePattern, args => previewMode(...args, { apiKey }))\n .exhaustive()\n }\n\n if (matches('/fonts')) {\n return match(args)\n .with(routeHandlerPattern, args => fonts(...args, { getFonts }))\n .with(apiRoutePattern, args => fonts(...args, { getFonts }))\n .exhaustive()\n }\n\n if (matches('/element-tree')) {\n return match(args)\n .with(routeHandlerPattern, args => elementTree(...args, runtime))\n .with(apiRoutePattern, args => elementTree(...args, runtime))\n .exhaustive()\n }\n\n if (matches('/translatable-data')) {\n return match(args)\n .with(routeHandlerPattern, args => translatableData(...args, client))\n .with(apiRoutePattern, args => translatableData(...args, client))\n .exhaustive()\n }\n\n if (matches('/merge-translated-data')) {\n return match(args)\n .with(routeHandlerPattern, args => mergeTranslatedData(...args, client))\n .with(apiRoutePattern, args => mergeTranslatedData(...args, client))\n .exhaustive()\n }\n\n if (matches('/webhook')) {\n return match(args)\n .with(routeHandlerPattern, args => webhook(...args, { apiKey }))\n .with(apiRoutePattern, args => webhook(...args, { apiKey }))\n .exhaustive()\n }\n\n const handleResource = <T extends APIResource>(\n resource: T | null,\n ): NextResponse<MakeswiftApiHandlerResponse> | void => {\n const status = resource === null ? 404 : 200\n const body = resource === null ? { message: 'Not Found' } : resource\n\n return match(args)\n .with(routeHandlerPattern, () => NextResponse.json(body, { status }))\n .with(apiRoutePattern, ([, res]) => res.status(status).json(body))\n .exhaustive()\n }\n\n if ((m = matches<{ id: string }>('/swatches/:id'))) {\n return client.getSwatch(m.params.id, siteVersion).then(handleResource)\n }\n\n if ((m = matches<{ id: string }>('/files/:id'))) {\n return client.getFile(m.params.id).then(handleResource)\n }\n\n if ((m = matches<{ id: string }>('/typographies/:id'))) {\n return client.getTypography(m.params.id, siteVersion).then(handleResource)\n }\n\n if ((m = matches<{ id: string }>('/global-elements/:id'))) {\n return client.getGlobalElement(m.params.id, siteVersion).then(handleResource)\n }\n\n if (\n (m = matches<{ globalElementId: string; locale: string }>(\n '/localized-global-elements/:globalElementId/:locale',\n ))\n ) {\n return client\n .getLocalizedGlobalElement(m.params.globalElementId, m.params.locale, siteVersion)\n .then(handleResource)\n }\n\n if ((m = matches<{ id: string }>('/page-pathname-slices/:id'))) {\n const localeParam = match(args)\n .with(routeHandlerPattern, ([request]) => request.nextUrl.searchParams.get('locale'))\n .with(apiRoutePattern, ([req]) => req.query.locale)\n .exhaustive()\n const locale = typeof localeParam === 'string' ? localeParam : undefined\n\n return client.getPagePathnameSlice(m.params.id, siteVersion, { locale }).then(handleResource)\n }\n\n if ((m = matches<{ id: string }>('/tables/:id'))) {\n return client.getTable(m.params.id).then(handleResource)\n }\n\n const status = 404\n const body = { message: 'Not Found' }\n\n return match(args)\n .with(routeHandlerPattern, () => NextResponse.json(body, { status }))\n .with(apiRoutePattern, ([, res]) => res.status(status).json(body))\n .exhaustive()\n }\n}\n"],"mappings":"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","names":["Cors","args","matchPattern","manifest","proxyPreviewMode","proxyDraftMode","draftMode","previewMode","fonts","elementTree","translatableData","mergeTranslatedData","webhook","status","body"]}
@@ -31,6 +31,7 @@ var import_react = require("../api/react");
31
31
  var import_introspection = require("../prop-controllers/introspection");
32
32
  var import_react_page = require("../state/react-page");
33
33
  var import_preview_mode = require("./preview-mode");
34
+ var import_site_version = require("../api/site-version");
34
35
  var import_pagination = require("./utils/pagination");
35
36
  var import_deterministic_uuid = require("../utils/deterministic-uuid");
36
37
  var import_controls = require("@makeswift/controls");
@@ -172,10 +173,10 @@ class Makeswift {
172
173
  graphqlClient;
173
174
  runtime;
174
175
  static getSiteVersion(previewData) {
175
- return (0, import_preview_mode.getMakeswiftSiteVersion)(previewData) ?? import_preview_mode.MakeswiftSiteVersion.Live;
176
+ return (0, import_preview_mode.getMakeswiftSiteVersion)(previewData) ?? import_site_version.MakeswiftSiteVersion.Live;
176
177
  }
177
178
  static getPreviewMode(previewData) {
178
- return (0, import_preview_mode.getMakeswiftSiteVersion)(previewData) === import_preview_mode.MakeswiftSiteVersion.Working;
179
+ return (0, import_preview_mode.getMakeswiftSiteVersion)(previewData) === import_site_version.MakeswiftSiteVersion.Working;
179
180
  }
180
181
  constructor(apiKey, { apiOrigin = "https://api.makeswift.com", runtime }) {
181
182
  if (typeof apiKey !== "string") {
@@ -195,7 +196,7 @@ Received "${apiKey}" instead.`
195
196
  this.graphqlClient = new import_client.GraphQLClient(new URL("graphql", apiOrigin).href);
196
197
  this.runtime = runtime;
197
198
  }
198
- async fetch(path, siteVersion = import_preview_mode.MakeswiftSiteVersion.Live, init) {
199
+ async fetch(path, siteVersion = import_site_version.MakeswiftSiteVersion.Live, init) {
199
200
  const response = await fetch(new URL(path, this.apiOrigin).toString(), {
200
201
  ...init,
201
202
  headers: {
@@ -204,7 +205,7 @@ Received "${apiKey}" instead.`
204
205
  "Makeswift-Site-Version": siteVersion,
205
206
  ...init?.headers
206
207
  },
207
- ...siteVersion === import_preview_mode.MakeswiftSiteVersion.Working ? { cache: "no-store" } : {},
208
+ ...siteVersion === import_site_version.MakeswiftSiteVersion.Working ? { cache: "no-store" } : {},
208
209
  next: {
209
210
  ...init?.next,
210
211
  tags: [...init?.next?.tags ?? [], import_site_published.MAKESWIFT_CACHE_TAG]
@@ -213,7 +214,7 @@ Received "${apiKey}" instead.`
213
214
  return response;
214
215
  }
215
216
  getPagesInternal = async ({
216
- siteVersion = import_preview_mode.MakeswiftSiteVersion.Live,
217
+ siteVersion = import_site_version.MakeswiftSiteVersion.Live,
217
218
  ...params
218
219
  } = {}) => {
219
220
  const queryParams = getPagesQueryParams(params);
@@ -233,7 +234,7 @@ Received "${apiKey}" instead.`
233
234
  };
234
235
  getPages = (0, import_pagination.toIterablePaginationResult)(this.getPagesInternal);
235
236
  async getPage(pathname, {
236
- siteVersion = import_preview_mode.MakeswiftSiteVersion.Live,
237
+ siteVersion = import_site_version.MakeswiftSiteVersion.Live,
237
238
  locale: localeInput
238
239
  } = {}) {
239
240
  const url = new URL(`v2/pages/${encodeURIComponent(pathname)}`, this.apiOrigin);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/next/client.ts"],"sourcesContent":["import { PreviewData } from 'next'\nimport { z } from 'zod'\nimport {\n APIResourceType,\n File,\n GlobalElement,\n LocalizedGlobalElement,\n PagePathnameSlice,\n Swatch,\n Table,\n Typography,\n} from '../api'\nimport { GraphQLClient } from '../api/graphql/client'\nimport { FileQuery, IntrospectedResourcesQuery, TableQuery } from '../api/graphql/documents'\nimport {\n FileQueryResult,\n FileQueryVariables,\n IntrospectedResourcesQueryResult,\n IntrospectedResourcesQueryVariables,\n TableQueryResult,\n TableQueryVariables,\n} from '../api/graphql/generated/types'\n\nimport { CacheData } from '../api/react'\nimport { Descriptor as PropControllerDescriptor } from '../prop-controllers/descriptors'\nimport {\n getElementChildren,\n getSwatchIds,\n getFileIds,\n getPageIds,\n getTableIds,\n getTypographyIds,\n} from '../prop-controllers/introspection'\nimport { ReactRuntime } from '../runtimes/react'\nimport {\n type Element,\n type ElementData,\n type Data,\n type Document,\n getPropControllerDescriptors,\n isElementReference,\n} from '../state/react-page'\nimport { getMakeswiftSiteVersion, MakeswiftSiteVersion } from './preview-mode'\nimport { toIterablePaginationResult } from './utils/pagination'\nimport { deterministicUUID } from '../utils/deterministic-uuid'\nimport { Schema } from '@makeswift/controls'\nimport { EMBEDDED_DOCUMENT_TYPE, EmbeddedDocument } from '../state/modules/read-only-documents'\nimport { MAKESWIFT_CACHE_TAG } from './api-handler/handlers/webhook/site-published'\n\nconst makeswiftPageResultSchema = z.object({\n id: z.string(),\n path: z.string(),\n title: z.string().nullable(),\n description: z.string().nullable(),\n canonicalUrl: z.string().nullable(),\n socialImageUrl: z.string().nullable(),\n sitemapPriority: z.number().nullable(),\n sitemapFrequency: z\n .enum(['always', 'hourly', 'daily', 'weekly', 'monthly', 'yearly', 'never'])\n .nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n publishedAt: z.string().nullable(),\n isOnline: z.boolean().nullable(),\n excludedFromSearch: z.boolean().nullable(),\n locale: z.string(),\n localizedVariants: z.array(\n z.object({\n locale: z.string(),\n path: z.string(),\n }),\n ),\n})\n\nconst makeswiftGetPagesResultAPISchema = z.object({\n data: z.array(makeswiftPageResultSchema),\n hasMore: z.boolean(),\n})\n\nconst makeswiftGetPagesParamsSchema = z.object({\n limit: z.number().optional(),\n after: z.string().optional(),\n sortBy: z.enum(['title', 'path', 'description', 'createdAt', 'updatedAt']).optional(),\n sortDirection: z.enum(['asc', 'desc']).optional(),\n includeOffline: z.boolean().optional(),\n pathPrefix: z.string().optional(),\n locale: z.string().optional(),\n})\n\nfunction getPagesQueryParams({\n limit = 20,\n after,\n sortBy,\n sortDirection,\n includeOffline,\n pathPrefix,\n locale,\n}: GetPagesParams): URLSearchParams {\n const params = new URLSearchParams()\n\n if (limit != null) params.set('limit', limit.toString())\n if (after != null) params.set('after', after)\n if (sortBy != null) params.set('sortBy', sortBy)\n if (sortDirection != null) params.set('sortDirection', sortDirection)\n if (includeOffline != null) params.set('includeOffline', includeOffline.toString())\n if (pathPrefix != null) params.set('pathPrefix', pathPrefix)\n if (locale != null) params.set('locale', locale)\n\n return params\n}\n\ntype GetPagesParams = z.infer<typeof makeswiftGetPagesParamsSchema>\nexport type MakeswiftPage = z.infer<typeof makeswiftPageResultSchema>\nexport type MakeswiftGetPagesResult = z.infer<typeof makeswiftGetPagesResultAPISchema>\n\nexport type MakeswiftPageDocument = {\n id: string\n site: { id: string }\n data: Element\n snippets: Snippet[]\n fonts: Font[]\n meta: Meta\n seo: Seo\n localizedPages: LocalizedPage[]\n locale: string | null\n}\n\nexport function pageToRootDocument(pageDocument: MakeswiftPageDocument): Document {\n const { locale, localizedPages, id, data } = pageDocument\n const localizedPage = localizedPages.find(({ parentId }) => parentId == null)\n return localizedPage\n ? { key: localizedPage.elementTreeId, rootElement: localizedPage.data, locale }\n : { key: id, rootElement: data, locale }\n}\n\nexport type MakeswiftPageSnapshot = {\n document: MakeswiftPageDocument\n cacheData: CacheData\n}\n\nconst makeswiftComponentDocumentSchema = z.object({\n id: z.string(),\n name: z.string().nullable(),\n locale: z.string().nullable(),\n data: Schema.element,\n siteId: z.string(),\n inheritsFromParent: z.boolean(),\n})\n\nexport type MakeswiftComponentDocument = z.infer<typeof makeswiftComponentDocumentSchema>\n\nconst makeswiftComponentDocumentFallbackSchema = z.object({\n id: z.string(),\n locale: z.string().nullable(),\n data: z.null(),\n})\n\nexport type MakeswiftComponentDocumentFallback = z.infer<\n typeof makeswiftComponentDocumentFallbackSchema\n>\n\nexport type MakeswiftComponentSnapshotMetadata = {\n allowLocaleFallback: boolean\n requestedLocale: string | null\n}\n\nexport type MakeswiftComponentSnapshot = {\n document: MakeswiftComponentDocument | MakeswiftComponentDocumentFallback\n key: string\n cacheData: CacheData\n meta: MakeswiftComponentSnapshotMetadata\n}\n\nexport function componentDocumentToRootEmbeddedDocument({\n document,\n documentKey,\n name,\n type,\n meta,\n}: {\n document: MakeswiftComponentDocument | MakeswiftComponentDocumentFallback\n documentKey: string\n name: string\n type: string\n meta: MakeswiftComponentSnapshotMetadata\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,\n __type: EMBEDDED_DOCUMENT_TYPE,\n }\n\n return rootDocument\n}\n\ntype Snippet = {\n id: string\n code: string\n location: 'HEAD' | 'BODY'\n liveEnabled: boolean\n builderEnabled: boolean\n cleanup: string | null\n}\ntype Font = { family: string; variants: string[] }\n\ntype Meta = {\n title?: string | null\n description?: string | null\n keywords?: string | null\n socialImage?: {\n id: string\n publicUrl: string\n mimetype: string\n } | null\n favicon?: {\n id: string\n publicUrl: string\n mimetype: string\n } | null\n}\ntype Seo = {\n canonicalUrl?: string | null\n isIndexingBlocked?: boolean | null\n}\n\ntype LocalizedPage = {\n id: string\n data: Element\n elementTreeId: string\n parentId: string | null\n meta: Omit<Meta, 'favicon'>\n seo: Seo\n}\n\ntype MakeswiftConfig = {\n apiOrigin?: string\n runtime: ReactRuntime\n}\n\nexport type Sitemap = {\n id: string\n loc: string\n lastmod?: string\n changefreq?: 'always' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'never'\n priority?: number\n alternateRefs?: {\n hreflang: string\n href: string\n }[]\n}[]\n\nconst pagePathnameSlicesAPISchema = 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\nconst getPageAPISchema = z.object({\n pathname: z.string(),\n locale: z.string(),\n alternate: z.array(\n z.object({\n pathname: z.string(),\n locale: z.string(),\n }),\n ),\n})\n\ntype GetPageAPI = z.infer<typeof getPageAPISchema>\n\nexport class Makeswift {\n private apiKey: string\n private apiOrigin: URL\n private graphqlClient: GraphQLClient\n private runtime: ReactRuntime\n\n static getSiteVersion(previewData: PreviewData): MakeswiftSiteVersion {\n return getMakeswiftSiteVersion(previewData) ?? MakeswiftSiteVersion.Live\n }\n\n static getPreviewMode(previewData: PreviewData): boolean {\n return getMakeswiftSiteVersion(previewData) === MakeswiftSiteVersion.Working\n }\n\n constructor(\n apiKey: string,\n { apiOrigin = 'https://api.makeswift.com', runtime }: MakeswiftConfig,\n ) {\n if (typeof apiKey !== 'string') {\n throw new Error(\n 'The Makeswift client must be passed a valid Makeswift site API key: ' +\n \"`new Makeswift('<makeswift_site_api_key>')`\\n\" +\n `Received \"${apiKey}\" instead.`,\n )\n }\n\n this.apiKey = apiKey\n\n try {\n this.apiOrigin = new URL(apiOrigin)\n } catch {\n throw new Error(\n `The Makeswift client received an invalid \\`apiOrigin\\` parameter: \"${apiOrigin}\".`,\n )\n }\n\n this.graphqlClient = new GraphQLClient(new URL('graphql', apiOrigin).href)\n this.runtime = runtime\n }\n\n private async fetch(\n path: string,\n siteVersion: MakeswiftSiteVersion = MakeswiftSiteVersion.Live,\n init?: RequestInit,\n ): Promise<Response> {\n const response = await fetch(new URL(path, this.apiOrigin).toString(), {\n ...init,\n headers: {\n ['X-API-Key']: this.apiKey,\n 'Makeswift-Site-API-Key': this.apiKey,\n 'Makeswift-Site-Version': siteVersion,\n ...init?.headers,\n },\n ...(siteVersion === MakeswiftSiteVersion.Working ? { cache: 'no-store' } : {}),\n next: {\n ...init?.next,\n tags: [...(init?.next?.tags ?? []), MAKESWIFT_CACHE_TAG],\n },\n })\n\n return response\n }\n\n private getPagesInternal = async ({\n siteVersion = MakeswiftSiteVersion.Live,\n ...params\n }: {\n siteVersion?: MakeswiftSiteVersion\n } & GetPagesParams = {}): Promise<MakeswiftGetPagesResult> => {\n const queryParams = getPagesQueryParams(params)\n\n const response = await this.fetch(`v4/pages?${queryParams.toString()}`, siteVersion)\n if (!response.ok) {\n console.error('Failed to get pages', await response.json())\n throw new Error(`Failed to get pages with error: \"${response.statusText}\"`)\n }\n\n const result = await response.json()\n const parsedResponse = makeswiftGetPagesResultAPISchema.safeParse(result)\n if (!parsedResponse.success) {\n throw new Error(\n `Failed to parse getPages response: ${parsedResponse.error.errors.join(', ')}`,\n )\n }\n return parsedResponse.data\n }\n\n getPages = toIterablePaginationResult(this.getPagesInternal)\n\n async getPage(\n pathname: string,\n {\n siteVersion = MakeswiftSiteVersion.Live,\n locale: localeInput,\n }: { siteVersion?: MakeswiftSiteVersion; locale?: string } = {},\n ): Promise<GetPageAPI | null> {\n const url = new URL(`v2/pages/${encodeURIComponent(pathname)}`, this.apiOrigin)\n if (localeInput) url.searchParams.set('locale', localeInput)\n\n const response = await this.fetch(url.pathname + url.search, siteVersion)\n\n if (!response.ok) {\n if (response.status === 404) return null\n\n console.error('Failed to get page snapshot', await response.json())\n throw new Error(`Failed to get page snapshot with error: \"${response.statusText}\"`)\n }\n\n const json = await response.json()\n\n return getPageAPISchema.parse(json)\n }\n\n private async getTypographies(\n typographyIds: string[],\n siteVersion: MakeswiftSiteVersion,\n ): Promise<(Typography | null)[]> {\n if (typographyIds.length === 0) return []\n\n const url = new URL(`v2/typographies/bulk`, this.apiOrigin)\n\n typographyIds.forEach(id => {\n url.searchParams.append('ids', id)\n })\n\n const response = await this.fetch(url.pathname + url.search, siteVersion)\n\n if (!response.ok) {\n console.error('Failed to get typographies', await response.json())\n\n return []\n }\n\n const body = await response.json()\n\n return body\n }\n\n private async getSwatches(\n ids: string[],\n siteVersion: MakeswiftSiteVersion,\n ): Promise<(Swatch | null)[]> {\n if (ids.length === 0) return []\n\n const url = new URL(`v2/swatches/bulk`, this.apiOrigin)\n\n ids.forEach(id => {\n url.searchParams.append('ids', id)\n })\n\n const response = await this.fetch(url.pathname + url.search, siteVersion)\n\n if (!response.ok) {\n console.error('Failed to get swatches', await response.json())\n\n return []\n }\n\n return await response.json()\n }\n\n private async getIntrospectedResources(\n {\n swatchIds,\n ...introspectedResourceIds\n }: IntrospectedResourcesQueryVariables & { swatchIds: string[] },\n siteVersion: MakeswiftSiteVersion,\n ): Promise<IntrospectedResourcesQueryResult & { swatches: (Swatch | null)[] }> {\n const result = await this.graphqlClient.request<\n IntrospectedResourcesQueryResult,\n IntrospectedResourcesQueryVariables\n >(IntrospectedResourcesQuery, introspectedResourceIds)\n const swatches = await this.getSwatches(swatchIds, siteVersion)\n\n return { ...result, swatches }\n }\n\n private async introspect(\n element: Element,\n siteVersion: MakeswiftSiteVersion,\n locale: string | null,\n ): Promise<CacheData> {\n const runtime = this.runtime\n const descriptors = getPropControllerDescriptors(runtime.store.getState())\n const swatchIds = new Set<string>()\n const fileIds = new Set<string>()\n const typographyIds = new Set<string>()\n const tableIds = new Set<string>()\n const pageIds = new Set<string>()\n const globalElements = new Map<string, GlobalElement | null>()\n const localizedGlobalElements = new Map<string, LocalizedGlobalElement | null>()\n const localizedResourcesMap = new Map<string, string | null>()\n\n const remaining = [element]\n const seen = new Set<string>()\n let current: Element | undefined\n\n while ((current = remaining.pop())) {\n let element: ElementData\n\n if (isElementReference(current)) {\n const globalElementId = current.value\n const globalElement = await this.getGlobalElement(globalElementId, siteVersion)\n let elementData = globalElement?.data\n\n if (locale) {\n const localizedGlobalElement = await this.getLocalizedGlobalElement(\n globalElementId,\n locale,\n siteVersion,\n )\n\n if (localizedGlobalElement) {\n // Update the logic here when we can merge element trees\n elementData = localizedGlobalElement.data\n\n localizedResourcesMap.set(globalElementId, localizedGlobalElement.id)\n localizedGlobalElements.set(localizedGlobalElement.id, localizedGlobalElement)\n }\n }\n\n globalElements.set(globalElementId, globalElement)\n\n if (elementData == null) continue\n\n element = elementData as ElementData\n } else {\n element = current\n }\n\n const elementDescriptors = descriptors.get(element.type)\n\n if (elementDescriptors == null) continue\n\n getResourcesFromElementDescriptors(elementDescriptors, element.props)\n\n function getResourcesFromElementDescriptors(\n elementDescriptors: Record<string, PropControllerDescriptor>,\n props: ElementData['props'],\n ) {\n Object.entries(elementDescriptors).forEach(([propName, descriptor]) => {\n getSwatchIds(descriptor, props[propName]).forEach(swatchId => {\n swatchIds.add(swatchId)\n })\n\n getFileIds(descriptor, props[propName]).forEach(fileId => fileIds.add(fileId))\n\n getTypographyIds(descriptor, props[propName]).forEach(typographyId =>\n typographyIds.add(typographyId),\n )\n\n getTableIds(descriptor, props[propName]).forEach(tableId => tableIds.add(tableId))\n\n getPageIds(descriptor, props[propName]).forEach(pageId => pageIds.add(pageId))\n\n getElementChildren(descriptor, props[propName]).forEach(child => {\n if (!seen.has(child.key)) {\n seen.add(child.key)\n\n remaining.push(child)\n }\n })\n })\n }\n }\n\n const typographies = await this.getTypographies([...typographyIds], siteVersion)\n\n typographies.forEach(typography => {\n typography?.style.forEach(style => {\n const swatchId = style.value.color?.swatchId\n\n if (swatchId != null) swatchIds.add(swatchId)\n })\n })\n\n const pagePathnames = await this.getPagePathnameSlices([...pageIds], siteVersion, { locale })\n\n const { swatches, files, tables } = await this.getIntrospectedResources(\n {\n swatchIds: [...swatchIds],\n fileIds: [...fileIds],\n tableIds: [...tableIds],\n },\n siteVersion,\n )\n\n const apiResources = {\n [APIResourceType.Swatch]: [...swatchIds].map(id => ({\n id,\n value: swatches.find(swatch => swatch?.id === id) ?? null,\n })),\n [APIResourceType.File]: [...fileIds].map(id => ({\n id,\n value: files.find(file => file?.id === id) ?? null,\n })),\n [APIResourceType.Typography]: [...typographyIds].map(id => ({\n id,\n value: typographies.find(typography => typography?.id === id) ?? null,\n })),\n [APIResourceType.Table]: [...tableIds].map(id => ({\n id,\n value: tables.find(table => table?.id === id) ?? null,\n })),\n [APIResourceType.PagePathnameSlice]: [...pageIds].map(id => ({\n id,\n value: pagePathnames.find(pagePathnameSlice => pagePathnameSlice?.id === id) ?? null,\n locale,\n })),\n [APIResourceType.GlobalElement]: [...globalElements.entries()].map(([id, value]) => ({\n id,\n value,\n })),\n [APIResourceType.LocalizedGlobalElement]: [...localizedGlobalElements.entries()].map(\n ([id, value]) => ({\n id,\n value,\n locale,\n }),\n ),\n }\n\n return {\n apiResources,\n localizedResourcesMap:\n locale != null ? { [locale]: Object.fromEntries(localizedResourcesMap.entries()) } : {},\n }\n }\n\n async getPageSnapshot(\n pathname: string,\n {\n siteVersion: siteVersionPromise,\n locale: localeInput,\n }: { siteVersion: MakeswiftSiteVersion | Promise<MakeswiftSiteVersion>; locale?: string },\n ): Promise<MakeswiftPageSnapshot | null> {\n const searchParams = new URLSearchParams()\n if (localeInput) {\n searchParams.set('locale', localeInput)\n }\n\n const siteVersion = await siteVersionPromise\n const response = await this.fetch(\n `v3/pages/${encodeURIComponent(pathname)}/document?${searchParams.toString()}`,\n siteVersion,\n )\n\n if (!response.ok) {\n if (response.status === 404) return null\n\n console.error('Failed to get page snapshot', await response.json())\n throw new Error(`Failed to get page snapshot with error: \"${response.statusText}\"`)\n }\n\n const document: MakeswiftPageDocument = await response.json()\n const baseLocalizedPage = document.localizedPages.find(({ parentId }) => parentId == null)\n\n const cacheData = await this.introspect(\n baseLocalizedPage?.data ?? document.data,\n siteVersion,\n // The /v3/pages endpoint returns null for document.locale when the requested locale is the default.\n // This legacy behavior is set to change with the upcoming /v4/pages endpoint.\n // We rely on document.locale when reading from the API cache, so ensure the cache is built during introspection using the same value.\n document.locale,\n )\n\n return {\n document,\n cacheData,\n }\n }\n\n async getComponentSnapshot(\n id: string,\n {\n siteVersion: siteVersionPromise,\n locale,\n allowLocaleFallback = true,\n }: {\n siteVersion: MakeswiftSiteVersion | Promise<MakeswiftSiteVersion>\n locale?: string\n allowLocaleFallback?: boolean\n },\n ): Promise<MakeswiftComponentSnapshot> {\n const searchParams = new URLSearchParams()\n if (locale) searchParams.set('locale', locale)\n\n const siteVersion = await siteVersionPromise\n const key = deterministicUUID({ id, locale, seed: this.apiKey.split('-').at(0) })\n const baseLocaleWasRequested = locale == null\n const canAttemptLocaleFallback = !baseLocaleWasRequested && allowLocaleFallback\n\n let response\n const responseForRequestedLocale = await this.fetch(\n `v1/element-trees/${encodeURIComponent(id)}?${searchParams.toString()}`,\n siteVersion,\n )\n\n if (responseForRequestedLocale.status === 404 && canAttemptLocaleFallback) {\n response = await this.fetch(`v1/element-trees/${encodeURIComponent(id)}`, siteVersion)\n } else {\n response = responseForRequestedLocale\n }\n\n if (response.status === 404) {\n return {\n document: {\n id,\n locale: locale ?? null,\n data: null,\n },\n key,\n cacheData: CacheData.empty(),\n meta: {\n allowLocaleFallback,\n requestedLocale: locale ?? null,\n },\n }\n }\n\n const json = await response.json()\n if (!response.ok) {\n console.error('Failed to get page snapshot', json)\n throw new Error(`Failed to get page snapshot with error: \"${response.statusText}\"`)\n }\n\n const document = makeswiftComponentDocumentSchema.parse(json)\n const cacheData = await this.introspect(document.data, siteVersion, locale ?? null)\n\n return {\n document,\n cacheData,\n key,\n meta: {\n allowLocaleFallback,\n requestedLocale: locale ?? null,\n },\n }\n }\n\n async getSwatch(swatchId: string, siteVersion: MakeswiftSiteVersion): Promise<Swatch | null> {\n const response = await this.fetch(`v2/swatches/${swatchId}`, siteVersion)\n\n if (!response.ok) {\n if (response.status !== 404) console.error('Failed to get swatch', await response.json())\n\n return null\n }\n\n const swatch = await response.json()\n\n return swatch\n }\n\n async getFile(fileId: string): Promise<File | null> {\n const result = await this.graphqlClient.request<FileQueryResult, FileQueryVariables>(\n FileQuery,\n { fileId },\n )\n\n return result.file\n }\n\n async getTypography(\n typographyId: string,\n siteVersion: MakeswiftSiteVersion,\n ): Promise<Typography | null> {\n const response = await this.fetch(`v2/typographies/${typographyId}`, siteVersion)\n\n if (!response.ok) {\n if (response.status !== 404) console.error('Failed to get typography', await response.json())\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: MakeswiftSiteVersion,\n ): Promise<GlobalElement | null> {\n const response = await this.fetch(`v2/global-elements/${globalElementId}`, siteVersion)\n\n if (!response.ok) {\n if (response.status !== 404)\n console.error('Failed to get global element', await response.json())\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: MakeswiftSiteVersion,\n ): Promise<LocalizedGlobalElement | null> {\n const response = await this.fetch(\n `v2/localized-global-elements/${globalElementId}?locale=${locale}`,\n siteVersion,\n )\n\n if (!response.ok) {\n if (response.status !== 404)\n console.error('Failed to get localized global element', await response.json())\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: MakeswiftSiteVersion,\n { locale }: { locale?: string | null },\n ): Promise<(PagePathnameSlice | null)[]> {\n if (pageIds.length === 0) return []\n\n const url = new URL(`v2/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 slices', await response.json())\n\n return []\n }\n\n const json = await response.json()\n\n const pagePathnameSlices = pagePathnameSlicesAPISchema.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: MakeswiftSiteVersion,\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 async getTable(tableId: string): Promise<Table | null> {\n const result = await this.graphqlClient.request<TableQueryResult, TableQueryVariables>(\n TableQuery,\n { tableId },\n )\n\n return result.table\n }\n\n /**\n * @deprecated `getSitemap` is deprecated. We recommend constructing a sitemap\n * using data from `getPages` instead.\n */\n async getSitemap({\n limit = 50,\n after,\n pathnamePrefix,\n locale,\n }: {\n limit?: number\n after?: string\n pathnamePrefix?: string\n locale?: string\n } = {}): Promise<Sitemap> {\n const url = new URL('v1/sitemap', this.apiOrigin)\n\n url.searchParams.set('limit', limit.toString())\n if (after != null) url.searchParams.set('after', after)\n if (pathnamePrefix != null) url.searchParams.set('pathnamePrefix', pathnamePrefix)\n if (locale != null) url.searchParams.set('locale', locale)\n\n const response = await this.fetch(url.pathname + url.search)\n\n if (!response.ok) {\n console.error('Failed to get sitemap', await response.json())\n throw new Error(`Failed to get sitemap with error: \"${response.statusText}\"`)\n }\n\n const sitemap = await response.json()\n\n return sitemap\n }\n\n getTranslatableData(elementTree: ElementData): Record<string, Data> {\n return this.runtime.getTranslatableData(elementTree)\n }\n\n mergeTranslatedData(elementTree: ElementData, translatedData: Record<string, Data>): Element {\n return this.runtime.mergeTranslatedData(elementTree, translatedData)\n }\n}\n"],"mappings":"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","names":["getResourcesFromElementDescriptors","elementDescriptors","element"]}
1
+ {"version":3,"sources":["../../../src/next/client.ts"],"sourcesContent":["import { PreviewData } from 'next'\nimport { z } from 'zod'\nimport {\n APIResourceType,\n File,\n GlobalElement,\n LocalizedGlobalElement,\n PagePathnameSlice,\n Swatch,\n Table,\n Typography,\n} from '../api'\nimport { GraphQLClient } from '../api/graphql/client'\nimport { FileQuery, IntrospectedResourcesQuery, TableQuery } from '../api/graphql/documents'\nimport {\n FileQueryResult,\n FileQueryVariables,\n IntrospectedResourcesQueryResult,\n IntrospectedResourcesQueryVariables,\n TableQueryResult,\n TableQueryVariables,\n} from '../api/graphql/generated/types'\n\nimport { CacheData } from '../api/react'\nimport { Descriptor as PropControllerDescriptor } from '../prop-controllers/descriptors'\nimport {\n getElementChildren,\n getSwatchIds,\n getFileIds,\n getPageIds,\n getTableIds,\n getTypographyIds,\n} from '../prop-controllers/introspection'\nimport { ReactRuntime } from '../runtimes/react'\nimport {\n type Element,\n type ElementData,\n type Data,\n type Document,\n getPropControllerDescriptors,\n isElementReference,\n} from '../state/react-page'\nimport { getMakeswiftSiteVersion } from './preview-mode'\nimport { MakeswiftSiteVersion } from '../api/site-version'\nimport { toIterablePaginationResult } from './utils/pagination'\nimport { deterministicUUID } from '../utils/deterministic-uuid'\nimport { Schema } from '@makeswift/controls'\nimport { EMBEDDED_DOCUMENT_TYPE, EmbeddedDocument } from '../state/modules/read-only-documents'\nimport { MAKESWIFT_CACHE_TAG } from './api-handler/handlers/webhook/site-published'\n\nconst makeswiftPageResultSchema = z.object({\n id: z.string(),\n path: z.string(),\n title: z.string().nullable(),\n description: z.string().nullable(),\n canonicalUrl: z.string().nullable(),\n socialImageUrl: z.string().nullable(),\n sitemapPriority: z.number().nullable(),\n sitemapFrequency: z\n .enum(['always', 'hourly', 'daily', 'weekly', 'monthly', 'yearly', 'never'])\n .nullable(),\n createdAt: z.string(),\n updatedAt: z.string(),\n publishedAt: z.string().nullable(),\n isOnline: z.boolean().nullable(),\n excludedFromSearch: z.boolean().nullable(),\n locale: z.string(),\n localizedVariants: z.array(\n z.object({\n locale: z.string(),\n path: z.string(),\n }),\n ),\n})\n\nconst makeswiftGetPagesResultAPISchema = z.object({\n data: z.array(makeswiftPageResultSchema),\n hasMore: z.boolean(),\n})\n\nconst makeswiftGetPagesParamsSchema = z.object({\n limit: z.number().optional(),\n after: z.string().optional(),\n sortBy: z.enum(['title', 'path', 'description', 'createdAt', 'updatedAt']).optional(),\n sortDirection: z.enum(['asc', 'desc']).optional(),\n includeOffline: z.boolean().optional(),\n pathPrefix: z.string().optional(),\n locale: z.string().optional(),\n})\n\nfunction getPagesQueryParams({\n limit = 20,\n after,\n sortBy,\n sortDirection,\n includeOffline,\n pathPrefix,\n locale,\n}: GetPagesParams): URLSearchParams {\n const params = new URLSearchParams()\n\n if (limit != null) params.set('limit', limit.toString())\n if (after != null) params.set('after', after)\n if (sortBy != null) params.set('sortBy', sortBy)\n if (sortDirection != null) params.set('sortDirection', sortDirection)\n if (includeOffline != null) params.set('includeOffline', includeOffline.toString())\n if (pathPrefix != null) params.set('pathPrefix', pathPrefix)\n if (locale != null) params.set('locale', locale)\n\n return params\n}\n\ntype GetPagesParams = z.infer<typeof makeswiftGetPagesParamsSchema>\nexport type MakeswiftPage = z.infer<typeof makeswiftPageResultSchema>\nexport type MakeswiftGetPagesResult = z.infer<typeof makeswiftGetPagesResultAPISchema>\n\nexport type MakeswiftPageDocument = {\n id: string\n site: { id: string }\n data: Element\n snippets: Snippet[]\n fonts: Font[]\n meta: Meta\n seo: Seo\n localizedPages: LocalizedPage[]\n locale: string | null\n}\n\nexport function pageToRootDocument(pageDocument: MakeswiftPageDocument): Document {\n const { locale, localizedPages, id, data } = pageDocument\n const localizedPage = localizedPages.find(({ parentId }) => parentId == null)\n return localizedPage\n ? { key: localizedPage.elementTreeId, rootElement: localizedPage.data, locale }\n : { key: id, rootElement: data, locale }\n}\n\nexport type MakeswiftPageSnapshot = {\n document: MakeswiftPageDocument\n cacheData: CacheData\n}\n\nconst makeswiftComponentDocumentSchema = z.object({\n id: z.string(),\n name: z.string().nullable(),\n locale: z.string().nullable(),\n data: Schema.element,\n siteId: z.string(),\n inheritsFromParent: z.boolean(),\n})\n\nexport type MakeswiftComponentDocument = z.infer<typeof makeswiftComponentDocumentSchema>\n\nconst makeswiftComponentDocumentFallbackSchema = z.object({\n id: z.string(),\n locale: z.string().nullable(),\n data: z.null(),\n})\n\nexport type MakeswiftComponentDocumentFallback = z.infer<\n typeof makeswiftComponentDocumentFallbackSchema\n>\n\nexport type MakeswiftComponentSnapshotMetadata = {\n allowLocaleFallback: boolean\n requestedLocale: string | null\n}\n\nexport type MakeswiftComponentSnapshot = {\n document: MakeswiftComponentDocument | MakeswiftComponentDocumentFallback\n key: string\n cacheData: CacheData\n meta: MakeswiftComponentSnapshotMetadata\n}\n\nexport function componentDocumentToRootEmbeddedDocument({\n document,\n documentKey,\n name,\n type,\n meta,\n}: {\n document: MakeswiftComponentDocument | MakeswiftComponentDocumentFallback\n documentKey: string\n name: string\n type: string\n meta: MakeswiftComponentSnapshotMetadata\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,\n __type: EMBEDDED_DOCUMENT_TYPE,\n }\n\n return rootDocument\n}\n\ntype Snippet = {\n id: string\n code: string\n location: 'HEAD' | 'BODY'\n liveEnabled: boolean\n builderEnabled: boolean\n cleanup: string | null\n}\ntype Font = { family: string; variants: string[] }\n\ntype Meta = {\n title?: string | null\n description?: string | null\n keywords?: string | null\n socialImage?: {\n id: string\n publicUrl: string\n mimetype: string\n } | null\n favicon?: {\n id: string\n publicUrl: string\n mimetype: string\n } | null\n}\ntype Seo = {\n canonicalUrl?: string | null\n isIndexingBlocked?: boolean | null\n}\n\ntype LocalizedPage = {\n id: string\n data: Element\n elementTreeId: string\n parentId: string | null\n meta: Omit<Meta, 'favicon'>\n seo: Seo\n}\n\ntype MakeswiftConfig = {\n apiOrigin?: string\n runtime: ReactRuntime\n}\n\nexport type Sitemap = {\n id: string\n loc: string\n lastmod?: string\n changefreq?: 'always' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'never'\n priority?: number\n alternateRefs?: {\n hreflang: string\n href: string\n }[]\n}[]\n\nconst pagePathnameSlicesAPISchema = 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\nconst getPageAPISchema = z.object({\n pathname: z.string(),\n locale: z.string(),\n alternate: z.array(\n z.object({\n pathname: z.string(),\n locale: z.string(),\n }),\n ),\n})\n\ntype GetPageAPI = z.infer<typeof getPageAPISchema>\n\nexport class Makeswift {\n private apiKey: string\n private apiOrigin: URL\n private graphqlClient: GraphQLClient\n private runtime: ReactRuntime\n\n static getSiteVersion(previewData: PreviewData): MakeswiftSiteVersion {\n return getMakeswiftSiteVersion(previewData) ?? MakeswiftSiteVersion.Live\n }\n\n static getPreviewMode(previewData: PreviewData): boolean {\n return getMakeswiftSiteVersion(previewData) === MakeswiftSiteVersion.Working\n }\n\n constructor(\n apiKey: string,\n { apiOrigin = 'https://api.makeswift.com', runtime }: MakeswiftConfig,\n ) {\n if (typeof apiKey !== 'string') {\n throw new Error(\n 'The Makeswift client must be passed a valid Makeswift site API key: ' +\n \"`new Makeswift('<makeswift_site_api_key>')`\\n\" +\n `Received \"${apiKey}\" instead.`,\n )\n }\n\n this.apiKey = apiKey\n\n try {\n this.apiOrigin = new URL(apiOrigin)\n } catch {\n throw new Error(\n `The Makeswift client received an invalid \\`apiOrigin\\` parameter: \"${apiOrigin}\".`,\n )\n }\n\n this.graphqlClient = new GraphQLClient(new URL('graphql', apiOrigin).href)\n this.runtime = runtime\n }\n\n private async fetch(\n path: string,\n siteVersion: MakeswiftSiteVersion = MakeswiftSiteVersion.Live,\n init?: RequestInit,\n ): Promise<Response> {\n const response = await fetch(new URL(path, this.apiOrigin).toString(), {\n ...init,\n headers: {\n ['X-API-Key']: this.apiKey,\n 'Makeswift-Site-API-Key': this.apiKey,\n 'Makeswift-Site-Version': siteVersion,\n ...init?.headers,\n },\n ...(siteVersion === MakeswiftSiteVersion.Working ? { cache: 'no-store' } : {}),\n next: {\n ...init?.next,\n tags: [...(init?.next?.tags ?? []), MAKESWIFT_CACHE_TAG],\n },\n })\n\n return response\n }\n\n private getPagesInternal = async ({\n siteVersion = MakeswiftSiteVersion.Live,\n ...params\n }: {\n siteVersion?: MakeswiftSiteVersion\n } & GetPagesParams = {}): Promise<MakeswiftGetPagesResult> => {\n const queryParams = getPagesQueryParams(params)\n\n const response = await this.fetch(`v4/pages?${queryParams.toString()}`, siteVersion)\n if (!response.ok) {\n console.error('Failed to get pages', await response.json())\n throw new Error(`Failed to get pages with error: \"${response.statusText}\"`)\n }\n\n const result = await response.json()\n const parsedResponse = makeswiftGetPagesResultAPISchema.safeParse(result)\n if (!parsedResponse.success) {\n throw new Error(\n `Failed to parse getPages response: ${parsedResponse.error.errors.join(', ')}`,\n )\n }\n return parsedResponse.data\n }\n\n getPages = toIterablePaginationResult(this.getPagesInternal)\n\n async getPage(\n pathname: string,\n {\n siteVersion = MakeswiftSiteVersion.Live,\n locale: localeInput,\n }: { siteVersion?: MakeswiftSiteVersion; locale?: string } = {},\n ): Promise<GetPageAPI | null> {\n const url = new URL(`v2/pages/${encodeURIComponent(pathname)}`, this.apiOrigin)\n if (localeInput) url.searchParams.set('locale', localeInput)\n\n const response = await this.fetch(url.pathname + url.search, siteVersion)\n\n if (!response.ok) {\n if (response.status === 404) return null\n\n console.error('Failed to get page snapshot', await response.json())\n throw new Error(`Failed to get page snapshot with error: \"${response.statusText}\"`)\n }\n\n const json = await response.json()\n\n return getPageAPISchema.parse(json)\n }\n\n private async getTypographies(\n typographyIds: string[],\n siteVersion: MakeswiftSiteVersion,\n ): Promise<(Typography | null)[]> {\n if (typographyIds.length === 0) return []\n\n const url = new URL(`v2/typographies/bulk`, this.apiOrigin)\n\n typographyIds.forEach(id => {\n url.searchParams.append('ids', id)\n })\n\n const response = await this.fetch(url.pathname + url.search, siteVersion)\n\n if (!response.ok) {\n console.error('Failed to get typographies', await response.json())\n\n return []\n }\n\n const body = await response.json()\n\n return body\n }\n\n private async getSwatches(\n ids: string[],\n siteVersion: MakeswiftSiteVersion,\n ): Promise<(Swatch | null)[]> {\n if (ids.length === 0) return []\n\n const url = new URL(`v2/swatches/bulk`, this.apiOrigin)\n\n ids.forEach(id => {\n url.searchParams.append('ids', id)\n })\n\n const response = await this.fetch(url.pathname + url.search, siteVersion)\n\n if (!response.ok) {\n console.error('Failed to get swatches', await response.json())\n\n return []\n }\n\n return await response.json()\n }\n\n private async getIntrospectedResources(\n {\n swatchIds,\n ...introspectedResourceIds\n }: IntrospectedResourcesQueryVariables & { swatchIds: string[] },\n siteVersion: MakeswiftSiteVersion,\n ): Promise<IntrospectedResourcesQueryResult & { swatches: (Swatch | null)[] }> {\n const result = await this.graphqlClient.request<\n IntrospectedResourcesQueryResult,\n IntrospectedResourcesQueryVariables\n >(IntrospectedResourcesQuery, introspectedResourceIds)\n const swatches = await this.getSwatches(swatchIds, siteVersion)\n\n return { ...result, swatches }\n }\n\n private async introspect(\n element: Element,\n siteVersion: MakeswiftSiteVersion,\n locale: string | null,\n ): Promise<CacheData> {\n const runtime = this.runtime\n const descriptors = getPropControllerDescriptors(runtime.store.getState())\n const swatchIds = new Set<string>()\n const fileIds = new Set<string>()\n const typographyIds = new Set<string>()\n const tableIds = new Set<string>()\n const pageIds = new Set<string>()\n const globalElements = new Map<string, GlobalElement | null>()\n const localizedGlobalElements = new Map<string, LocalizedGlobalElement | null>()\n const localizedResourcesMap = new Map<string, string | null>()\n\n const remaining = [element]\n const seen = new Set<string>()\n let current: Element | undefined\n\n while ((current = remaining.pop())) {\n let element: ElementData\n\n if (isElementReference(current)) {\n const globalElementId = current.value\n const globalElement = await this.getGlobalElement(globalElementId, siteVersion)\n let elementData = globalElement?.data\n\n if (locale) {\n const localizedGlobalElement = await this.getLocalizedGlobalElement(\n globalElementId,\n locale,\n siteVersion,\n )\n\n if (localizedGlobalElement) {\n // Update the logic here when we can merge element trees\n elementData = localizedGlobalElement.data\n\n localizedResourcesMap.set(globalElementId, localizedGlobalElement.id)\n localizedGlobalElements.set(localizedGlobalElement.id, localizedGlobalElement)\n }\n }\n\n globalElements.set(globalElementId, globalElement)\n\n if (elementData == null) continue\n\n element = elementData as ElementData\n } else {\n element = current\n }\n\n const elementDescriptors = descriptors.get(element.type)\n\n if (elementDescriptors == null) continue\n\n getResourcesFromElementDescriptors(elementDescriptors, element.props)\n\n function getResourcesFromElementDescriptors(\n elementDescriptors: Record<string, PropControllerDescriptor>,\n props: ElementData['props'],\n ) {\n Object.entries(elementDescriptors).forEach(([propName, descriptor]) => {\n getSwatchIds(descriptor, props[propName]).forEach(swatchId => {\n swatchIds.add(swatchId)\n })\n\n getFileIds(descriptor, props[propName]).forEach(fileId => fileIds.add(fileId))\n\n getTypographyIds(descriptor, props[propName]).forEach(typographyId =>\n typographyIds.add(typographyId),\n )\n\n getTableIds(descriptor, props[propName]).forEach(tableId => tableIds.add(tableId))\n\n getPageIds(descriptor, props[propName]).forEach(pageId => pageIds.add(pageId))\n\n getElementChildren(descriptor, props[propName]).forEach(child => {\n if (!seen.has(child.key)) {\n seen.add(child.key)\n\n remaining.push(child)\n }\n })\n })\n }\n }\n\n const typographies = await this.getTypographies([...typographyIds], siteVersion)\n\n typographies.forEach(typography => {\n typography?.style.forEach(style => {\n const swatchId = style.value.color?.swatchId\n\n if (swatchId != null) swatchIds.add(swatchId)\n })\n })\n\n const pagePathnames = await this.getPagePathnameSlices([...pageIds], siteVersion, { locale })\n\n const { swatches, files, tables } = await this.getIntrospectedResources(\n {\n swatchIds: [...swatchIds],\n fileIds: [...fileIds],\n tableIds: [...tableIds],\n },\n siteVersion,\n )\n\n const apiResources = {\n [APIResourceType.Swatch]: [...swatchIds].map(id => ({\n id,\n value: swatches.find(swatch => swatch?.id === id) ?? null,\n })),\n [APIResourceType.File]: [...fileIds].map(id => ({\n id,\n value: files.find(file => file?.id === id) ?? null,\n })),\n [APIResourceType.Typography]: [...typographyIds].map(id => ({\n id,\n value: typographies.find(typography => typography?.id === id) ?? null,\n })),\n [APIResourceType.Table]: [...tableIds].map(id => ({\n id,\n value: tables.find(table => table?.id === id) ?? null,\n })),\n [APIResourceType.PagePathnameSlice]: [...pageIds].map(id => ({\n id,\n value: pagePathnames.find(pagePathnameSlice => pagePathnameSlice?.id === id) ?? null,\n locale,\n })),\n [APIResourceType.GlobalElement]: [...globalElements.entries()].map(([id, value]) => ({\n id,\n value,\n })),\n [APIResourceType.LocalizedGlobalElement]: [...localizedGlobalElements.entries()].map(\n ([id, value]) => ({\n id,\n value,\n locale,\n }),\n ),\n }\n\n return {\n apiResources,\n localizedResourcesMap:\n locale != null ? { [locale]: Object.fromEntries(localizedResourcesMap.entries()) } : {},\n }\n }\n\n async getPageSnapshot(\n pathname: string,\n {\n siteVersion: siteVersionPromise,\n locale: localeInput,\n }: { siteVersion: MakeswiftSiteVersion | Promise<MakeswiftSiteVersion>; locale?: string },\n ): Promise<MakeswiftPageSnapshot | null> {\n const searchParams = new URLSearchParams()\n if (localeInput) {\n searchParams.set('locale', localeInput)\n }\n\n const siteVersion = await siteVersionPromise\n const response = await this.fetch(\n `v3/pages/${encodeURIComponent(pathname)}/document?${searchParams.toString()}`,\n siteVersion,\n )\n\n if (!response.ok) {\n if (response.status === 404) return null\n\n console.error('Failed to get page snapshot', await response.json())\n throw new Error(`Failed to get page snapshot with error: \"${response.statusText}\"`)\n }\n\n const document: MakeswiftPageDocument = await response.json()\n const baseLocalizedPage = document.localizedPages.find(({ parentId }) => parentId == null)\n\n const cacheData = await this.introspect(\n baseLocalizedPage?.data ?? document.data,\n siteVersion,\n // The /v3/pages endpoint returns null for document.locale when the requested locale is the default.\n // This legacy behavior is set to change with the upcoming /v4/pages endpoint.\n // We rely on document.locale when reading from the API cache, so ensure the cache is built during introspection using the same value.\n document.locale,\n )\n\n return {\n document,\n cacheData,\n }\n }\n\n async getComponentSnapshot(\n id: string,\n {\n siteVersion: siteVersionPromise,\n locale,\n allowLocaleFallback = true,\n }: {\n siteVersion: MakeswiftSiteVersion | Promise<MakeswiftSiteVersion>\n locale?: string\n allowLocaleFallback?: boolean\n },\n ): Promise<MakeswiftComponentSnapshot> {\n const searchParams = new URLSearchParams()\n if (locale) searchParams.set('locale', locale)\n\n const siteVersion = await siteVersionPromise\n const key = deterministicUUID({ id, locale, seed: this.apiKey.split('-').at(0) })\n const baseLocaleWasRequested = locale == null\n const canAttemptLocaleFallback = !baseLocaleWasRequested && allowLocaleFallback\n\n let response\n const responseForRequestedLocale = await this.fetch(\n `v1/element-trees/${encodeURIComponent(id)}?${searchParams.toString()}`,\n siteVersion,\n )\n\n if (responseForRequestedLocale.status === 404 && canAttemptLocaleFallback) {\n response = await this.fetch(`v1/element-trees/${encodeURIComponent(id)}`, siteVersion)\n } else {\n response = responseForRequestedLocale\n }\n\n if (response.status === 404) {\n return {\n document: {\n id,\n locale: locale ?? null,\n data: null,\n },\n key,\n cacheData: CacheData.empty(),\n meta: {\n allowLocaleFallback,\n requestedLocale: locale ?? null,\n },\n }\n }\n\n const json = await response.json()\n if (!response.ok) {\n console.error('Failed to get page snapshot', json)\n throw new Error(`Failed to get page snapshot with error: \"${response.statusText}\"`)\n }\n\n const document = makeswiftComponentDocumentSchema.parse(json)\n const cacheData = await this.introspect(document.data, siteVersion, locale ?? null)\n\n return {\n document,\n cacheData,\n key,\n meta: {\n allowLocaleFallback,\n requestedLocale: locale ?? null,\n },\n }\n }\n\n async getSwatch(swatchId: string, siteVersion: MakeswiftSiteVersion): Promise<Swatch | null> {\n const response = await this.fetch(`v2/swatches/${swatchId}`, siteVersion)\n\n if (!response.ok) {\n if (response.status !== 404) console.error('Failed to get swatch', await response.json())\n\n return null\n }\n\n const swatch = await response.json()\n\n return swatch\n }\n\n async getFile(fileId: string): Promise<File | null> {\n const result = await this.graphqlClient.request<FileQueryResult, FileQueryVariables>(\n FileQuery,\n { fileId },\n )\n\n return result.file\n }\n\n async getTypography(\n typographyId: string,\n siteVersion: MakeswiftSiteVersion,\n ): Promise<Typography | null> {\n const response = await this.fetch(`v2/typographies/${typographyId}`, siteVersion)\n\n if (!response.ok) {\n if (response.status !== 404) console.error('Failed to get typography', await response.json())\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: MakeswiftSiteVersion,\n ): Promise<GlobalElement | null> {\n const response = await this.fetch(`v2/global-elements/${globalElementId}`, siteVersion)\n\n if (!response.ok) {\n if (response.status !== 404)\n console.error('Failed to get global element', await response.json())\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: MakeswiftSiteVersion,\n ): Promise<LocalizedGlobalElement | null> {\n const response = await this.fetch(\n `v2/localized-global-elements/${globalElementId}?locale=${locale}`,\n siteVersion,\n )\n\n if (!response.ok) {\n if (response.status !== 404)\n console.error('Failed to get localized global element', await response.json())\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: MakeswiftSiteVersion,\n { locale }: { locale?: string | null },\n ): Promise<(PagePathnameSlice | null)[]> {\n if (pageIds.length === 0) return []\n\n const url = new URL(`v2/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 slices', await response.json())\n\n return []\n }\n\n const json = await response.json()\n\n const pagePathnameSlices = pagePathnameSlicesAPISchema.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: MakeswiftSiteVersion,\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 async getTable(tableId: string): Promise<Table | null> {\n const result = await this.graphqlClient.request<TableQueryResult, TableQueryVariables>(\n TableQuery,\n { tableId },\n )\n\n return result.table\n }\n\n /**\n * @deprecated `getSitemap` is deprecated. We recommend constructing a sitemap\n * using data from `getPages` instead.\n */\n async getSitemap({\n limit = 50,\n after,\n pathnamePrefix,\n locale,\n }: {\n limit?: number\n after?: string\n pathnamePrefix?: string\n locale?: string\n } = {}): Promise<Sitemap> {\n const url = new URL('v1/sitemap', this.apiOrigin)\n\n url.searchParams.set('limit', limit.toString())\n if (after != null) url.searchParams.set('after', after)\n if (pathnamePrefix != null) url.searchParams.set('pathnamePrefix', pathnamePrefix)\n if (locale != null) url.searchParams.set('locale', locale)\n\n const response = await this.fetch(url.pathname + url.search)\n\n if (!response.ok) {\n console.error('Failed to get sitemap', await response.json())\n throw new Error(`Failed to get sitemap with error: \"${response.statusText}\"`)\n }\n\n const sitemap = await response.json()\n\n return sitemap\n }\n\n getTranslatableData(elementTree: ElementData): Record<string, Data> {\n return this.runtime.getTranslatableData(elementTree)\n }\n\n mergeTranslatedData(elementTree: ElementData, translatedData: Record<string, Data>): Element {\n return this.runtime.mergeTranslatedData(elementTree, translatedData)\n }\n}\n"],"mappings":"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","names":["getResourcesFromElementDescriptors","elementDescriptors","element"]}
@@ -25,11 +25,11 @@ __export(draft_mode_exports, {
25
25
  module.exports = __toCommonJS(draft_mode_exports);
26
26
  var import_zod = require("zod");
27
27
  var import_headers = require("next/headers");
28
- var import_preview_mode = require("../preview-mode");
28
+ var import_site_version = require("../../api/site-version");
29
29
  const MAKESWIFT_DRAFT_MODE_DATA_COOKIE = "x-makeswift-draft-data";
30
30
  const makeswiftDraftDataSchema = import_zod.z.object({
31
31
  makeswift: import_zod.z.literal(true),
32
- siteVersion: import_preview_mode.makeswiftSiteVersionSchema
32
+ siteVersion: import_site_version.makeswiftSiteVersionSchema
33
33
  });
34
34
  async function getDraftData() {
35
35
  const { isEnabled: isDraftModeEnabled } = await (0, import_headers.draftMode)();
@@ -45,7 +45,7 @@ async function getDraftData() {
45
45
  return null;
46
46
  }
47
47
  async function getSiteVersion() {
48
- return (await getDraftData())?.siteVersion ?? import_preview_mode.MakeswiftSiteVersion.Live;
48
+ return (await getDraftData())?.siteVersion ?? import_site_version.MakeswiftSiteVersion.Live;
49
49
  }
50
50
  // Annotate the CommonJS export names for ESM import in node:
51
51
  0 && (module.exports = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/next/draft-mode/index.tsx"],"sourcesContent":["import { z } from 'zod'\nimport { cookies, draftMode } from 'next/headers'\nimport { makeswiftSiteVersionSchema, MakeswiftSiteVersion } from '../preview-mode'\n\nexport const MAKESWIFT_DRAFT_MODE_DATA_COOKIE = 'x-makeswift-draft-data'\n\nexport const makeswiftDraftDataSchema = z.object({\n makeswift: z.literal(true),\n siteVersion: makeswiftSiteVersionSchema,\n})\n\nexport type MakeswiftDraftData = z.infer<typeof makeswiftDraftDataSchema>\n\nasync function getDraftData(): Promise<MakeswiftDraftData | null> {\n const { isEnabled: isDraftModeEnabled } = await draftMode()\n if (!isDraftModeEnabled) return null\n\n const cookie = (await cookies()).get(MAKESWIFT_DRAFT_MODE_DATA_COOKIE)\n if (cookie == null) return null\n\n const draftData = JSON.parse(cookie.value)\n const result = makeswiftDraftDataSchema.safeParse(draftData)\n\n if (result.success) return result.data\n return null\n}\n\nexport async function getSiteVersion() {\n return (await getDraftData())?.siteVersion ?? MakeswiftSiteVersion.Live\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAkB;AAClB,qBAAmC;AACnC,0BAAiE;AAE1D,MAAM,mCAAmC;AAEzC,MAAM,2BAA2B,aAAE,OAAO;AAAA,EAC/C,WAAW,aAAE,QAAQ,IAAI;AAAA,EACzB,aAAa;AACf,CAAC;AAID,eAAe,eAAmD;AAChE,QAAM,EAAE,WAAW,mBAAmB,IAAI,UAAM,0BAAU;AAC1D,MAAI,CAAC;AAAoB,WAAO;AAEhC,QAAM,UAAU,UAAM,wBAAQ,GAAG,IAAI,gCAAgC;AACrE,MAAI,UAAU;AAAM,WAAO;AAE3B,QAAM,YAAY,KAAK,MAAM,OAAO,KAAK;AACzC,QAAM,SAAS,yBAAyB,UAAU,SAAS;AAE3D,MAAI,OAAO;AAAS,WAAO,OAAO;AAClC,SAAO;AACT;AAEA,eAAsB,iBAAiB;AACrC,UAAQ,MAAM,aAAa,IAAI,eAAe,yCAAqB;AACrE;","names":[]}
1
+ {"version":3,"sources":["../../../../src/next/draft-mode/index.tsx"],"sourcesContent":["import { z } from 'zod'\nimport { cookies, draftMode } from 'next/headers'\nimport { MakeswiftSiteVersion, makeswiftSiteVersionSchema } from '../../api/site-version'\n\nexport const MAKESWIFT_DRAFT_MODE_DATA_COOKIE = 'x-makeswift-draft-data'\n\nexport const makeswiftDraftDataSchema = z.object({\n makeswift: z.literal(true),\n siteVersion: makeswiftSiteVersionSchema,\n})\n\nexport type MakeswiftDraftData = z.infer<typeof makeswiftDraftDataSchema>\n\nasync function getDraftData(): Promise<MakeswiftDraftData | null> {\n const { isEnabled: isDraftModeEnabled } = await draftMode()\n if (!isDraftModeEnabled) return null\n\n const cookie = (await cookies()).get(MAKESWIFT_DRAFT_MODE_DATA_COOKIE)\n if (cookie == null) return null\n\n const draftData = JSON.parse(cookie.value)\n const result = makeswiftDraftDataSchema.safeParse(draftData)\n\n if (result.success) return result.data\n return null\n}\n\nexport async function getSiteVersion() {\n return (await getDraftData())?.siteVersion ?? MakeswiftSiteVersion.Live\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAkB;AAClB,qBAAmC;AACnC,0BAAiE;AAE1D,MAAM,mCAAmC;AAEzC,MAAM,2BAA2B,aAAE,OAAO;AAAA,EAC/C,WAAW,aAAE,QAAQ,IAAI;AAAA,EACzB,aAAa;AACf,CAAC;AAID,eAAe,eAAmD;AAChE,QAAM,EAAE,WAAW,mBAAmB,IAAI,UAAM,0BAAU;AAC1D,MAAI,CAAC;AAAoB,WAAO;AAEhC,QAAM,UAAU,UAAM,wBAAQ,GAAG,IAAI,gCAAgC;AACrE,MAAI,UAAU;AAAM,WAAO;AAE3B,QAAM,YAAY,KAAK,MAAM,OAAO,KAAK;AACzC,QAAM,SAAS,yBAAyB,UAAU,SAAS;AAE3D,MAAI,OAAO;AAAS,WAAO,OAAO;AAClC,SAAO;AACT;AAEA,eAAsB,iBAAiB;AACrC,UAAQ,MAAM,aAAa,IAAI,eAAe,yCAAqB;AACrE;","names":[]}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var exceptions_exports = {};
20
+ __export(exceptions_exports, {
21
+ InvalidProxyRequestInputError: () => InvalidProxyRequestInputError,
22
+ InvariantDraftRequestError: () => InvariantDraftRequestError,
23
+ MiddlewareError: () => MiddlewareError,
24
+ MissingDraftEndpointError: () => MissingDraftEndpointError,
25
+ UnauthorizedDraftRequestError: () => UnauthorizedDraftRequestError,
26
+ UnknownDraftFetchRequestError: () => UnknownDraftFetchRequestError,
27
+ UnparseableDraftCookieResponseError: () => UnparseableDraftCookieResponseError
28
+ });
29
+ module.exports = __toCommonJS(exceptions_exports);
30
+ class MiddlewareError extends Error {
31
+ constructor(message, options) {
32
+ super(message, options);
33
+ this.name = this.constructor.name;
34
+ Error.captureStackTrace(this, this.constructor);
35
+ }
36
+ }
37
+ class InvariantDraftRequestError extends MiddlewareError {
38
+ }
39
+ class UnauthorizedDraftRequestError extends MiddlewareError {
40
+ }
41
+ class UnparseableDraftCookieResponseError extends MiddlewareError {
42
+ }
43
+ class MissingDraftEndpointError extends MiddlewareError {
44
+ }
45
+ class UnknownDraftFetchRequestError extends MiddlewareError {
46
+ }
47
+ class InvalidProxyRequestInputError extends MiddlewareError {
48
+ }
49
+ // Annotate the CommonJS export names for ESM import in node:
50
+ 0 && (module.exports = {
51
+ InvalidProxyRequestInputError,
52
+ InvariantDraftRequestError,
53
+ MiddlewareError,
54
+ MissingDraftEndpointError,
55
+ UnauthorizedDraftRequestError,
56
+ UnknownDraftFetchRequestError,
57
+ UnparseableDraftCookieResponseError
58
+ });
59
+ //# sourceMappingURL=exceptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/next/middleware/exceptions.ts"],"sourcesContent":["export class MiddlewareError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(message, options)\n this.name = this.constructor.name\n\n Error.captureStackTrace(this, this.constructor)\n }\n}\n\nexport class InvariantDraftRequestError extends MiddlewareError {}\n\nexport class UnauthorizedDraftRequestError extends MiddlewareError {}\n\nexport class UnparseableDraftCookieResponseError extends MiddlewareError {}\n\nexport class MissingDraftEndpointError extends MiddlewareError {}\n\nexport class UnknownDraftFetchRequestError extends MiddlewareError {}\n\nexport class InvalidProxyRequestInputError extends MiddlewareError {}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,wBAAwB,MAAM;AAAA,EACzC,YAAY,SAAiB,SAAwB;AACnD,UAAM,SAAS,OAAO;AACtB,SAAK,OAAO,KAAK,YAAY;AAE7B,UAAM,kBAAkB,MAAM,KAAK,WAAW;AAAA,EAChD;AACF;AAEO,MAAM,mCAAmC,gBAAgB;AAAC;AAE1D,MAAM,sCAAsC,gBAAgB;AAAC;AAE7D,MAAM,4CAA4C,gBAAgB;AAAC;AAEnE,MAAM,kCAAkC,gBAAgB;AAAC;AAEzD,MAAM,sCAAsC,gBAAgB;AAAC;AAE7D,MAAM,sCAAsC,gBAAgB;AAAC;","names":[]}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var middleware_exports = {};
20
+ __export(middleware_exports, {
21
+ unstable_createMakeswiftDraftRequest: () => import_request_utils.createDraftRequest,
22
+ unstable_fetchMakeswiftDraftProxyResponse: () => import_request_utils.fetchDraftProxyResponse,
23
+ unstable_getMakeswiftDraftSecret: () => import_request_utils.getDraftSecret,
24
+ unstable_isDraftModeRequest: () => import_request_utils.isDraftModeRequest,
25
+ unstable_isPreviewModeRequest: () => import_request_utils.isPreviewModeRequest
26
+ });
27
+ module.exports = __toCommonJS(middleware_exports);
28
+ var import_request_utils = require("./request-utils");
29
+ // Annotate the CommonJS export names for ESM import in node:
30
+ 0 && (module.exports = {
31
+ unstable_createMakeswiftDraftRequest,
32
+ unstable_fetchMakeswiftDraftProxyResponse,
33
+ unstable_getMakeswiftDraftSecret,
34
+ unstable_isDraftModeRequest,
35
+ unstable_isPreviewModeRequest
36
+ });
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/next/middleware/index.ts"],"sourcesContent":["export {\n isDraftModeRequest as unstable_isDraftModeRequest,\n isPreviewModeRequest as unstable_isPreviewModeRequest,\n getDraftSecret as unstable_getMakeswiftDraftSecret,\n createDraftRequest as unstable_createMakeswiftDraftRequest,\n fetchDraftProxyResponse as unstable_fetchMakeswiftDraftProxyResponse,\n} from './request-utils'\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAMO;","names":[]}