@makeswift/runtime 0.24.7 → 0.24.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.
- package/dist/cjs/next/api-handler/handlers/manifest.js +1 -1
- package/dist/cjs/next/api-handler/index.js +12 -0
- package/dist/cjs/next/api-handler/index.js.map +1 -1
- package/dist/esm/next/api-handler/handlers/manifest.js +1 -1
- package/dist/esm/next/api-handler/index.js +12 -0
- package/dist/esm/next/api-handler/index.js.map +1 -1
- package/dist/types/next/api-handler/index.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -37,7 +37,7 @@ async function handler(...args) {
|
|
|
37
37
|
const supportsDraftMode = (0, import_ts_pattern.match)(args).with(routeHandlerPattern, () => true).with(apiRoutePattern, () => false).exhaustive();
|
|
38
38
|
const supportsWebhook = (0, import_ts_pattern.match)(args).with(routeHandlerPattern, () => true).with(apiRoutePattern, () => false).exhaustive();
|
|
39
39
|
const body = {
|
|
40
|
-
version: "0.24.
|
|
40
|
+
version: "0.24.8-canary.1",
|
|
41
41
|
previewMode: supportsPreviewMode,
|
|
42
42
|
draftMode: supportsDraftMode,
|
|
43
43
|
interactionMode: true,
|
|
@@ -68,6 +68,18 @@ Received "${apiKey}" instead.`
|
|
|
68
68
|
const apiRoutePattern = [import_ts_pattern.P.any, import_ts_pattern.P.any];
|
|
69
69
|
return function handler(...args) {
|
|
70
70
|
return (0, import_ts_pattern.match)(args).with(routeHandlerPattern, async (args2) => {
|
|
71
|
+
const [req] = args2;
|
|
72
|
+
if (req.method.toUpperCase() === "OPTIONS") {
|
|
73
|
+
return new import_server.NextResponse(null, {
|
|
74
|
+
status: 204,
|
|
75
|
+
headers: new Headers({
|
|
76
|
+
"Content-Length": "0",
|
|
77
|
+
"Access-Control-Allow-Origin": appOrigin,
|
|
78
|
+
"Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS",
|
|
79
|
+
"Access-Control-Allow-Headers": "Content-Type, Authorization"
|
|
80
|
+
})
|
|
81
|
+
});
|
|
82
|
+
}
|
|
71
83
|
const response = await makeswiftApiHandler(...args2);
|
|
72
84
|
response.headers.append("Access-Control-Allow-Origin", appOrigin);
|
|
73
85
|
response.headers.append("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
|
|
@@ -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 redirectDraft, { type RedirectDraftResponse } from './handlers/redirect-draft'\nimport redirectPreview, { type RedirectPreviewResponse } from './handlers/redirect-preview'\nimport clearDraft, { type ClearDraftResponse } from './handlers/clear-draft'\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 { OnPublish, 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 Events = { onPublish: OnPublish }\n\ntype MakeswiftApiHandlerConfig = {\n appOrigin?: string\n apiOrigin?: string\n getFonts?: GetFonts\n events?: Events\n runtime: ReactRuntime\n}\n\ntype NotFoundError = { message: string }\n\nexport type MakeswiftApiHandlerResponse =\n | ManifestResponse\n | RevalidationResponse\n | RedirectDraftResponse\n | RedirectPreviewResponse\n | ClearDraftResponse\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 events,\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('/draft')) {\n return match(args)\n .with(routeHandlerPattern, args => redirectDraft(...args, { apiKey }))\n .with(apiRoutePattern, args => redirectDraft(...args, { apiKey }))\n .exhaustive()\n }\n\n if (matches('/preview')) {\n return match(args)\n .with(routeHandlerPattern, args => redirectPreview(...args, { apiKey }))\n .with(apiRoutePattern, args => redirectPreview(...args, { apiKey }))\n .exhaustive()\n }\n\n if (matches('/clear-draft')) {\n return match(args)\n .with(routeHandlerPattern, args => clearDraft(...args, { apiKey }))\n .with(apiRoutePattern, args => clearDraft(...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, events }))\n .with(apiRoutePattern, args => webhook(...args, { apiKey, events }))\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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAiB;AAEjB,oBAA0C;AAC1C,4BAA6C;AAE7C,oBAA0B;AAE1B,0BAAiD;AACjD,mBAAqD;AACrD,sBAAqD;AACrD,4BAA0D;AAC1D,8BAA8D;AAC9D,yBAAoD;AACpD,wBAAiD;AACjD,+BAA2D;AAC3D,mCAA4D;AAC5D,qBAAoB;AAGpB,wBAAyB;AACzB,0BAIO;AAoCP,SAAS,iBAAiB,SAA2D;AAGnF,SAAO,QAAQ,QAAQ,QAAQ,KAAK;AACtC;AAEO,SAAS,oBACd,QACA;AAAA,EACE,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AACF,GACiG;AACjG,QAAM,WAAO,YAAAA,SAAK,EAAE,QAAQ,UAAU,CAAC;AAEvC,MAAI,OAAO,WAAW,UAAU;AAC9B,UAAM,IAAI;AAAA,MACR;AAAA,YAEe,MAAM;AAAA,IACvB;AAAA,EACF;AAEA,QAAM,sBAAsB,CAAC,oBAAE,WAAW,OAAO,GAAG,oBAAE,GAAG;AACzD,QAAM,kBAAkB,CAAC,oBAAE,KAAK,oBAAE,GAAG;AAErC,SAAO,SAAS,WACX,MACwD;AAC3D,eAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,OAAMC,UAAQ;AACvC,YAAM,WAAW,MAAM,oBAAoB,GAAGA,KAAI;AAElD,eAAS,QAAQ,OAAO,+BAA+B,SAAS;AAChE,eAAS,QAAQ,OAAO,gCAAgC,iCAAiC;AACzF,eAAS,QAAQ,OAAO,gCAAgC,6BAA6B;AAErF,aAAO;AAAA,IACT,CAAC,EACA,KAAK,iBAAiB,OAAMA,UAAQ;AACnC,YAAM,CAAC,KAAK,GAAG,IAAIA;AAEnB,YAAM,IAAI,QAAc,CAAC,SAAS,WAAW;AAC3C,aAAK,KAAK,KAAK,SAAO;AACpB,cAAI,eAAe;AAAO,mBAAO,GAAG;AAAA;AAC/B,oBAAQ;AAAA,QACf,CAAC;AAAA,MACH,CAAC;AAED,aAAO,MAAM,oBAAoB,GAAGA,KAAI;AAAA,IAC1C,CAAC,EACA,WAAW;AAAA,EAChB;AAEA,WAAS,0BAA0B,MAAqD;AACtF,UAAM,aAAS,yBAAM,IAAI,EACtB;AAAA,MAAK;AAAA,MAAqB,CAAC,CAAC,OAAO,MAClC,QAAQ,QAAQ,IAAI,mDAA+B;AAAA,IACrD,EACC,KAAK,iBAAiB,CAAC,CAAC,GAAG,MAAM,IAAI,QAAQ,oDAAgC,YAAY,CAAC,CAAC,EAC3F,WAAW;AAEd,UAAM,SAAS,+CAA2B,UAAU,MAAM;AAC1D,QAAI,CAAC,OAAO;AAAS,aAAO,yCAAqB;AACjD,WAAO,OAAO;AAAA,EAChB;AAUA,iBAAe,uBACV,MACwD;AAC3D,UAAM,aAAS,yBAAM,IAAI,EACtB,KAAK,qBAAqB,CAAC,CAAC,EAAE,OAAO,MAAM,QAAQ,MAAM,EACzD,KAAK,iBAAiB,CAAC,CAAC,GAAG,MAAM,iBAAiB,GAAG,CAAC,EACtD,WAAW;AAEd,UAAM,EAAE,UAAU,IAAI,MAAM;AAE5B,QAAI,CAAC,MAAM,QAAQ,SAAS,GAAG;AAC7B,YAAM,IAAI;AAAA,QACR;AAAA,YACe,SAAS;AAAA;AAAA,MAE1B;AAAA,IACF;AAEA,UAAM,SAAS,IAAI,wBAAU,QAAQ,EAAE,WAAW,QAAQ,CAAC;AAC3D,UAAM,cAAc,0BAA0B,IAAI;AAClD,UAAM,SAAS,MAAM,UAAU,KAAK,GAAG;AACvC,UAAM,UAAU,CAAmB,gBACjC,sBAAAC,OAAgB,SAAS,EAAE,QAAQ,mBAAmB,CAAC,EAAE,MAAM;AAEjE,QAAI;AAEJ,QAAI,QAAQ,WAAW,GAAG;AACxB,iBAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,CAAAD,cAAQ,gBAAAE,SAAS,GAAGF,OAAM,EAAE,OAAO,CAAC,CAAC,EAC/D,KAAK,iBAAiB,CAAAA,cAAQ,gBAAAE,SAAS,GAAGF,OAAM,EAAE,OAAO,CAAC,CAAC,EAC3D,WAAW;AAAA,IAChB;AAEA,QAAI,QAAQ,aAAa,GAAG;AAC1B,iBAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,CAAAA,cAAQ,8BAAW,GAAGA,OAAM,EAAE,OAAO,CAAC,CAAC,EACjE,KAAK,iBAAiB,CAAAA,cAAQ,8BAAW,GAAGA,OAAM,EAAE,OAAO,CAAC,CAAC,EAC7D,WAAW;AAAA,IAChB;AAEA,QAAI,QAAQ,QAAQ,GAAG;AACrB,iBAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,CAAAA,cAAQ,sBAAAG,SAAc,GAAGH,OAAM,EAAE,OAAO,CAAC,CAAC,EACpE,KAAK,iBAAiB,CAAAA,cAAQ,sBAAAG,SAAc,GAAGH,OAAM,EAAE,OAAO,CAAC,CAAC,EAChE,WAAW;AAAA,IAChB;AAEA,QAAI,QAAQ,UAAU,GAAG;AACvB,iBAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,CAAAA,cAAQ,wBAAAI,SAAgB,GAAGJ,OAAM,EAAE,OAAO,CAAC,CAAC,EACtE,KAAK,iBAAiB,CAAAA,cAAQ,wBAAAI,SAAgB,GAAGJ,OAAM,EAAE,OAAO,CAAC,CAAC,EAClE,WAAW;AAAA,IAChB;AAEA,QAAI,QAAQ,cAAc,GAAG;AAC3B,iBAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,CAAAA,cAAQ,mBAAAK,SAAW,GAAGL,OAAM,EAAE,OAAO,CAAC,CAAC,EACjE,KAAK,iBAAiB,CAAAA,cAAQ,mBAAAK,SAAW,GAAGL,OAAM,EAAE,OAAO,CAAC,CAAC,EAC7D,WAAW;AAAA,IAChB;AAEA,QAAI,QAAQ,QAAQ,GAAG;AACrB,iBAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,CAAAA,cAAQ,aAAAM,SAAM,GAAGN,OAAM,EAAE,SAAS,CAAC,CAAC,EAC9D,KAAK,iBAAiB,CAAAA,cAAQ,aAAAM,SAAM,GAAGN,OAAM,EAAE,SAAS,CAAC,CAAC,EAC1D,WAAW;AAAA,IAChB;AAEA,QAAI,QAAQ,eAAe,GAAG;AAC5B,iBAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,CAAAA,cAAQ,oBAAAO,SAAY,GAAGP,OAAM,OAAO,CAAC,EAC/D,KAAK,iBAAiB,CAAAA,cAAQ,oBAAAO,SAAY,GAAGP,OAAM,OAAO,CAAC,EAC3D,WAAW;AAAA,IAChB;AAEA,QAAI,QAAQ,oBAAoB,GAAG;AACjC,iBAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,CAAAA,cAAQ,yBAAAQ,SAAiB,GAAGR,OAAM,MAAM,CAAC,EACnE,KAAK,iBAAiB,CAAAA,cAAQ,yBAAAQ,SAAiB,GAAGR,OAAM,MAAM,CAAC,EAC/D,WAAW;AAAA,IAChB;AAEA,QAAI,QAAQ,wBAAwB,GAAG;AACrC,iBAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,CAAAA,cAAQ,6BAAAS,SAAoB,GAAGT,OAAM,MAAM,CAAC,EACtE,KAAK,iBAAiB,CAAAA,cAAQ,6BAAAS,SAAoB,GAAGT,OAAM,MAAM,CAAC,EAClE,WAAW;AAAA,IAChB;AAEA,QAAI,QAAQ,UAAU,GAAG;AACvB,iBAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,CAAAA,cAAQ,eAAAU,SAAQ,GAAGV,OAAM,EAAE,QAAQ,OAAO,CAAC,CAAC,EACtE,KAAK,iBAAiB,CAAAA,cAAQ,eAAAU,SAAQ,GAAGV,OAAM,EAAE,QAAQ,OAAO,CAAC,CAAC,EAClE,WAAW;AAAA,IAChB;AAEA,UAAM,iBAAiB,CACrB,aACqD;AACrD,YAAMW,UAAS,aAAa,OAAO,MAAM;AACzC,YAAMC,QAAO,aAAa,OAAO,EAAE,SAAS,YAAY,IAAI;AAE5D,iBAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,MAAM,2BAAa,KAAKA,OAAM,EAAE,QAAAD,QAAO,CAAC,CAAC,EACnE,KAAK,iBAAiB,CAAC,CAAC,EAAE,GAAG,MAAM,IAAI,OAAOA,OAAM,EAAE,KAAKC,KAAI,CAAC,EAChE,WAAW;AAAA,IAChB;AAEA,QAAK,IAAI,QAAwB,eAAe,GAAI;AAClD,aAAO,OAAO,UAAU,EAAE,OAAO,IAAI,WAAW,EAAE,KAAK,cAAc;AAAA,IACvE;AAEA,QAAK,IAAI,QAAwB,YAAY,GAAI;AAC/C,aAAO,OAAO,QAAQ,EAAE,OAAO,EAAE,EAAE,KAAK,cAAc;AAAA,IACxD;AAEA,QAAK,IAAI,QAAwB,mBAAmB,GAAI;AACtD,aAAO,OAAO,cAAc,EAAE,OAAO,IAAI,WAAW,EAAE,KAAK,cAAc;AAAA,IAC3E;AAEA,QAAK,IAAI,QAAwB,sBAAsB,GAAI;AACzD,aAAO,OAAO,iBAAiB,EAAE,OAAO,IAAI,WAAW,EAAE,KAAK,cAAc;AAAA,IAC9E;AAEA,QACG,IAAI;AAAA,MACH;AAAA,IACF,GACA;AACA,aAAO,OACJ,0BAA0B,EAAE,OAAO,iBAAiB,EAAE,OAAO,QAAQ,WAAW,EAChF,KAAK,cAAc;AAAA,IACxB;AAEA,QAAK,IAAI,QAAwB,2BAA2B,GAAI;AAC9D,YAAM,kBAAc,yBAAM,IAAI,EAC3B,KAAK,qBAAqB,CAAC,CAAC,OAAO,MAAM,QAAQ,QAAQ,aAAa,IAAI,QAAQ,CAAC,EACnF,KAAK,iBAAiB,CAAC,CAAC,GAAG,MAAM,IAAI,MAAM,MAAM,EACjD,WAAW;AACd,YAAM,SAAS,OAAO,gBAAgB,WAAW,cAAc;AAE/D,aAAO,OAAO,qBAAqB,EAAE,OAAO,IAAI,aAAa,EAAE,OAAO,CAAC,EAAE,KAAK,cAAc;AAAA,IAC9F;AAEA,QAAK,IAAI,QAAwB,aAAa,GAAI;AAChD,aAAO,OAAO,SAAS,EAAE,OAAO,EAAE,EAAE,KAAK,cAAc;AAAA,IACzD;AAEA,UAAM,SAAS;AACf,UAAM,OAAO,EAAE,SAAS,YAAY;AAEpC,eAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,MAAM,2BAAa,KAAK,MAAM,EAAE,OAAO,CAAC,CAAC,EACnE,KAAK,iBAAiB,CAAC,CAAC,EAAE,GAAG,MAAM,IAAI,OAAO,MAAM,EAAE,KAAK,IAAI,CAAC,EAChE,WAAW;AAAA,EAChB;AACF;","names":["Cors","args","matchPattern","manifest","redirectDraft","redirectPreview","clearDraft","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 redirectDraft, { type RedirectDraftResponse } from './handlers/redirect-draft'\nimport redirectPreview, { type RedirectPreviewResponse } from './handlers/redirect-preview'\nimport clearDraft, { type ClearDraftResponse } from './handlers/clear-draft'\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 { OnPublish, 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 Events = { onPublish: OnPublish }\n\ntype MakeswiftApiHandlerConfig = {\n appOrigin?: string\n apiOrigin?: string\n getFonts?: GetFonts\n events?: Events\n runtime: ReactRuntime\n}\n\ntype NotFoundError = { message: string }\n\nexport type MakeswiftApiHandlerResponse =\n | ManifestResponse\n | RevalidationResponse\n | RedirectDraftResponse\n | RedirectPreviewResponse\n | ClearDraftResponse\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 events,\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 [req] = args\n if (req.method.toUpperCase() === 'OPTIONS') {\n return new NextResponse(null, {\n status: 204,\n headers: new Headers({\n 'Content-Length': '0',\n 'Access-Control-Allow-Origin': appOrigin,\n 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',\n 'Access-Control-Allow-Headers': 'Content-Type, Authorization',\n }),\n })\n }\n\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('/draft')) {\n return match(args)\n .with(routeHandlerPattern, args => redirectDraft(...args, { apiKey }))\n .with(apiRoutePattern, args => redirectDraft(...args, { apiKey }))\n .exhaustive()\n }\n\n if (matches('/preview')) {\n return match(args)\n .with(routeHandlerPattern, args => redirectPreview(...args, { apiKey }))\n .with(apiRoutePattern, args => redirectPreview(...args, { apiKey }))\n .exhaustive()\n }\n\n if (matches('/clear-draft')) {\n return match(args)\n .with(routeHandlerPattern, args => clearDraft(...args, { apiKey }))\n .with(apiRoutePattern, args => clearDraft(...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, events }))\n .with(apiRoutePattern, args => webhook(...args, { apiKey, events }))\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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAiB;AAEjB,oBAA0C;AAC1C,4BAA6C;AAE7C,oBAA0B;AAE1B,0BAAiD;AACjD,mBAAqD;AACrD,sBAAqD;AACrD,4BAA0D;AAC1D,8BAA8D;AAC9D,yBAAoD;AACpD,wBAAiD;AACjD,+BAA2D;AAC3D,mCAA4D;AAC5D,qBAAoB;AAGpB,wBAAyB;AACzB,0BAIO;AAoCP,SAAS,iBAAiB,SAA2D;AAGnF,SAAO,QAAQ,QAAQ,QAAQ,KAAK;AACtC;AAEO,SAAS,oBACd,QACA;AAAA,EACE,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AACF,GACiG;AACjG,QAAM,WAAO,YAAAA,SAAK,EAAE,QAAQ,UAAU,CAAC;AAEvC,MAAI,OAAO,WAAW,UAAU;AAC9B,UAAM,IAAI;AAAA,MACR;AAAA,YAEe,MAAM;AAAA,IACvB;AAAA,EACF;AAEA,QAAM,sBAAsB,CAAC,oBAAE,WAAW,OAAO,GAAG,oBAAE,GAAG;AACzD,QAAM,kBAAkB,CAAC,oBAAE,KAAK,oBAAE,GAAG;AAErC,SAAO,SAAS,WACX,MACwD;AAC3D,eAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,OAAMC,UAAQ;AACvC,YAAM,CAAC,GAAG,IAAIA;AACd,UAAI,IAAI,OAAO,YAAY,MAAM,WAAW;AAC1C,eAAO,IAAI,2BAAa,MAAM;AAAA,UAC5B,QAAQ;AAAA,UACR,SAAS,IAAI,QAAQ;AAAA,YACnB,kBAAkB;AAAA,YAClB,+BAA+B;AAAA,YAC/B,gCAAgC;AAAA,YAChC,gCAAgC;AAAA,UAClC,CAAC;AAAA,QACH,CAAC;AAAA,MACH;AAEA,YAAM,WAAW,MAAM,oBAAoB,GAAGA,KAAI;AAElD,eAAS,QAAQ,OAAO,+BAA+B,SAAS;AAChE,eAAS,QAAQ,OAAO,gCAAgC,iCAAiC;AACzF,eAAS,QAAQ,OAAO,gCAAgC,6BAA6B;AAErF,aAAO;AAAA,IACT,CAAC,EACA,KAAK,iBAAiB,OAAMA,UAAQ;AACnC,YAAM,CAAC,KAAK,GAAG,IAAIA;AAEnB,YAAM,IAAI,QAAc,CAAC,SAAS,WAAW;AAC3C,aAAK,KAAK,KAAK,SAAO;AACpB,cAAI,eAAe;AAAO,mBAAO,GAAG;AAAA;AAC/B,oBAAQ;AAAA,QACf,CAAC;AAAA,MACH,CAAC;AAED,aAAO,MAAM,oBAAoB,GAAGA,KAAI;AAAA,IAC1C,CAAC,EACA,WAAW;AAAA,EAChB;AAEA,WAAS,0BAA0B,MAAqD;AACtF,UAAM,aAAS,yBAAM,IAAI,EACtB;AAAA,MAAK;AAAA,MAAqB,CAAC,CAAC,OAAO,MAClC,QAAQ,QAAQ,IAAI,mDAA+B;AAAA,IACrD,EACC,KAAK,iBAAiB,CAAC,CAAC,GAAG,MAAM,IAAI,QAAQ,oDAAgC,YAAY,CAAC,CAAC,EAC3F,WAAW;AAEd,UAAM,SAAS,+CAA2B,UAAU,MAAM;AAC1D,QAAI,CAAC,OAAO;AAAS,aAAO,yCAAqB;AACjD,WAAO,OAAO;AAAA,EAChB;AAUA,iBAAe,uBACV,MACwD;AAC3D,UAAM,aAAS,yBAAM,IAAI,EACtB,KAAK,qBAAqB,CAAC,CAAC,EAAE,OAAO,MAAM,QAAQ,MAAM,EACzD,KAAK,iBAAiB,CAAC,CAAC,GAAG,MAAM,iBAAiB,GAAG,CAAC,EACtD,WAAW;AAEd,UAAM,EAAE,UAAU,IAAI,MAAM;AAE5B,QAAI,CAAC,MAAM,QAAQ,SAAS,GAAG;AAC7B,YAAM,IAAI;AAAA,QACR;AAAA,YACe,SAAS;AAAA;AAAA,MAE1B;AAAA,IACF;AAEA,UAAM,SAAS,IAAI,wBAAU,QAAQ,EAAE,WAAW,QAAQ,CAAC;AAC3D,UAAM,cAAc,0BAA0B,IAAI;AAClD,UAAM,SAAS,MAAM,UAAU,KAAK,GAAG;AACvC,UAAM,UAAU,CAAmB,gBACjC,sBAAAC,OAAgB,SAAS,EAAE,QAAQ,mBAAmB,CAAC,EAAE,MAAM;AAEjE,QAAI;AAEJ,QAAI,QAAQ,WAAW,GAAG;AACxB,iBAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,CAAAD,cAAQ,gBAAAE,SAAS,GAAGF,OAAM,EAAE,OAAO,CAAC,CAAC,EAC/D,KAAK,iBAAiB,CAAAA,cAAQ,gBAAAE,SAAS,GAAGF,OAAM,EAAE,OAAO,CAAC,CAAC,EAC3D,WAAW;AAAA,IAChB;AAEA,QAAI,QAAQ,aAAa,GAAG;AAC1B,iBAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,CAAAA,cAAQ,8BAAW,GAAGA,OAAM,EAAE,OAAO,CAAC,CAAC,EACjE,KAAK,iBAAiB,CAAAA,cAAQ,8BAAW,GAAGA,OAAM,EAAE,OAAO,CAAC,CAAC,EAC7D,WAAW;AAAA,IAChB;AAEA,QAAI,QAAQ,QAAQ,GAAG;AACrB,iBAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,CAAAA,cAAQ,sBAAAG,SAAc,GAAGH,OAAM,EAAE,OAAO,CAAC,CAAC,EACpE,KAAK,iBAAiB,CAAAA,cAAQ,sBAAAG,SAAc,GAAGH,OAAM,EAAE,OAAO,CAAC,CAAC,EAChE,WAAW;AAAA,IAChB;AAEA,QAAI,QAAQ,UAAU,GAAG;AACvB,iBAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,CAAAA,cAAQ,wBAAAI,SAAgB,GAAGJ,OAAM,EAAE,OAAO,CAAC,CAAC,EACtE,KAAK,iBAAiB,CAAAA,cAAQ,wBAAAI,SAAgB,GAAGJ,OAAM,EAAE,OAAO,CAAC,CAAC,EAClE,WAAW;AAAA,IAChB;AAEA,QAAI,QAAQ,cAAc,GAAG;AAC3B,iBAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,CAAAA,cAAQ,mBAAAK,SAAW,GAAGL,OAAM,EAAE,OAAO,CAAC,CAAC,EACjE,KAAK,iBAAiB,CAAAA,cAAQ,mBAAAK,SAAW,GAAGL,OAAM,EAAE,OAAO,CAAC,CAAC,EAC7D,WAAW;AAAA,IAChB;AAEA,QAAI,QAAQ,QAAQ,GAAG;AACrB,iBAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,CAAAA,cAAQ,aAAAM,SAAM,GAAGN,OAAM,EAAE,SAAS,CAAC,CAAC,EAC9D,KAAK,iBAAiB,CAAAA,cAAQ,aAAAM,SAAM,GAAGN,OAAM,EAAE,SAAS,CAAC,CAAC,EAC1D,WAAW;AAAA,IAChB;AAEA,QAAI,QAAQ,eAAe,GAAG;AAC5B,iBAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,CAAAA,cAAQ,oBAAAO,SAAY,GAAGP,OAAM,OAAO,CAAC,EAC/D,KAAK,iBAAiB,CAAAA,cAAQ,oBAAAO,SAAY,GAAGP,OAAM,OAAO,CAAC,EAC3D,WAAW;AAAA,IAChB;AAEA,QAAI,QAAQ,oBAAoB,GAAG;AACjC,iBAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,CAAAA,cAAQ,yBAAAQ,SAAiB,GAAGR,OAAM,MAAM,CAAC,EACnE,KAAK,iBAAiB,CAAAA,cAAQ,yBAAAQ,SAAiB,GAAGR,OAAM,MAAM,CAAC,EAC/D,WAAW;AAAA,IAChB;AAEA,QAAI,QAAQ,wBAAwB,GAAG;AACrC,iBAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,CAAAA,cAAQ,6BAAAS,SAAoB,GAAGT,OAAM,MAAM,CAAC,EACtE,KAAK,iBAAiB,CAAAA,cAAQ,6BAAAS,SAAoB,GAAGT,OAAM,MAAM,CAAC,EAClE,WAAW;AAAA,IAChB;AAEA,QAAI,QAAQ,UAAU,GAAG;AACvB,iBAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,CAAAA,cAAQ,eAAAU,SAAQ,GAAGV,OAAM,EAAE,QAAQ,OAAO,CAAC,CAAC,EACtE,KAAK,iBAAiB,CAAAA,cAAQ,eAAAU,SAAQ,GAAGV,OAAM,EAAE,QAAQ,OAAO,CAAC,CAAC,EAClE,WAAW;AAAA,IAChB;AAEA,UAAM,iBAAiB,CACrB,aACqD;AACrD,YAAMW,UAAS,aAAa,OAAO,MAAM;AACzC,YAAMC,QAAO,aAAa,OAAO,EAAE,SAAS,YAAY,IAAI;AAE5D,iBAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,MAAM,2BAAa,KAAKA,OAAM,EAAE,QAAAD,QAAO,CAAC,CAAC,EACnE,KAAK,iBAAiB,CAAC,CAAC,EAAE,GAAG,MAAM,IAAI,OAAOA,OAAM,EAAE,KAAKC,KAAI,CAAC,EAChE,WAAW;AAAA,IAChB;AAEA,QAAK,IAAI,QAAwB,eAAe,GAAI;AAClD,aAAO,OAAO,UAAU,EAAE,OAAO,IAAI,WAAW,EAAE,KAAK,cAAc;AAAA,IACvE;AAEA,QAAK,IAAI,QAAwB,YAAY,GAAI;AAC/C,aAAO,OAAO,QAAQ,EAAE,OAAO,EAAE,EAAE,KAAK,cAAc;AAAA,IACxD;AAEA,QAAK,IAAI,QAAwB,mBAAmB,GAAI;AACtD,aAAO,OAAO,cAAc,EAAE,OAAO,IAAI,WAAW,EAAE,KAAK,cAAc;AAAA,IAC3E;AAEA,QAAK,IAAI,QAAwB,sBAAsB,GAAI;AACzD,aAAO,OAAO,iBAAiB,EAAE,OAAO,IAAI,WAAW,EAAE,KAAK,cAAc;AAAA,IAC9E;AAEA,QACG,IAAI;AAAA,MACH;AAAA,IACF,GACA;AACA,aAAO,OACJ,0BAA0B,EAAE,OAAO,iBAAiB,EAAE,OAAO,QAAQ,WAAW,EAChF,KAAK,cAAc;AAAA,IACxB;AAEA,QAAK,IAAI,QAAwB,2BAA2B,GAAI;AAC9D,YAAM,kBAAc,yBAAM,IAAI,EAC3B,KAAK,qBAAqB,CAAC,CAAC,OAAO,MAAM,QAAQ,QAAQ,aAAa,IAAI,QAAQ,CAAC,EACnF,KAAK,iBAAiB,CAAC,CAAC,GAAG,MAAM,IAAI,MAAM,MAAM,EACjD,WAAW;AACd,YAAM,SAAS,OAAO,gBAAgB,WAAW,cAAc;AAE/D,aAAO,OAAO,qBAAqB,EAAE,OAAO,IAAI,aAAa,EAAE,OAAO,CAAC,EAAE,KAAK,cAAc;AAAA,IAC9F;AAEA,QAAK,IAAI,QAAwB,aAAa,GAAI;AAChD,aAAO,OAAO,SAAS,EAAE,OAAO,EAAE,EAAE,KAAK,cAAc;AAAA,IACzD;AAEA,UAAM,SAAS;AACf,UAAM,OAAO,EAAE,SAAS,YAAY;AAEpC,eAAO,yBAAM,IAAI,EACd,KAAK,qBAAqB,MAAM,2BAAa,KAAK,MAAM,EAAE,OAAO,CAAC,CAAC,EACnE,KAAK,iBAAiB,CAAC,CAAC,EAAE,GAAG,MAAM,IAAI,OAAO,MAAM,EAAE,KAAK,IAAI,CAAC,EAChE,WAAW;AAAA,EAChB;AACF;","names":["Cors","args","matchPattern","manifest","redirectDraft","redirectPreview","clearDraft","fonts","elementTree","translatableData","mergeTranslatedData","webhook","status","body"]}
|
|
@@ -14,7 +14,7 @@ async function handler(...args) {
|
|
|
14
14
|
const supportsDraftMode = match(args).with(routeHandlerPattern, () => true).with(apiRoutePattern, () => false).exhaustive();
|
|
15
15
|
const supportsWebhook = match(args).with(routeHandlerPattern, () => true).with(apiRoutePattern, () => false).exhaustive();
|
|
16
16
|
const body = {
|
|
17
|
-
version: "0.24.
|
|
17
|
+
version: "0.24.8-canary.1",
|
|
18
18
|
previewMode: supportsPreviewMode,
|
|
19
19
|
draftMode: supportsDraftMode,
|
|
20
20
|
interactionMode: true,
|
|
@@ -39,6 +39,18 @@ Received "${apiKey}" instead.`
|
|
|
39
39
|
const apiRoutePattern = [P.any, P.any];
|
|
40
40
|
return function handler(...args) {
|
|
41
41
|
return match(args).with(routeHandlerPattern, async (args2) => {
|
|
42
|
+
const [req] = args2;
|
|
43
|
+
if (req.method.toUpperCase() === "OPTIONS") {
|
|
44
|
+
return new NextResponse(null, {
|
|
45
|
+
status: 204,
|
|
46
|
+
headers: new Headers({
|
|
47
|
+
"Content-Length": "0",
|
|
48
|
+
"Access-Control-Allow-Origin": appOrigin,
|
|
49
|
+
"Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS",
|
|
50
|
+
"Access-Control-Allow-Headers": "Content-Type, Authorization"
|
|
51
|
+
})
|
|
52
|
+
});
|
|
53
|
+
}
|
|
42
54
|
const response = await makeswiftApiHandler(...args2);
|
|
43
55
|
response.headers.append("Access-Control-Allow-Origin", appOrigin);
|
|
44
56
|
response.headers.append("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
|
|
@@ -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 redirectDraft, { type RedirectDraftResponse } from './handlers/redirect-draft'\nimport redirectPreview, { type RedirectPreviewResponse } from './handlers/redirect-preview'\nimport clearDraft, { type ClearDraftResponse } from './handlers/clear-draft'\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 { OnPublish, 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 Events = { onPublish: OnPublish }\n\ntype MakeswiftApiHandlerConfig = {\n appOrigin?: string\n apiOrigin?: string\n getFonts?: GetFonts\n events?: Events\n runtime: ReactRuntime\n}\n\ntype NotFoundError = { message: string }\n\nexport type MakeswiftApiHandlerResponse =\n | ManifestResponse\n | RevalidationResponse\n | RedirectDraftResponse\n | RedirectPreviewResponse\n | ClearDraftResponse\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 events,\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('/draft')) {\n return match(args)\n .with(routeHandlerPattern, args => redirectDraft(...args, { apiKey }))\n .with(apiRoutePattern, args => redirectDraft(...args, { apiKey }))\n .exhaustive()\n }\n\n if (matches('/preview')) {\n return match(args)\n .with(routeHandlerPattern, args => redirectPreview(...args, { apiKey }))\n .with(apiRoutePattern, args => redirectPreview(...args, { apiKey }))\n .exhaustive()\n }\n\n if (matches('/clear-draft')) {\n return match(args)\n .with(routeHandlerPattern, args => clearDraft(...args, { apiKey }))\n .with(apiRoutePattern, args => clearDraft(...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, events }))\n .with(apiRoutePattern, args => webhook(...args, { apiKey, events }))\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":["args","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 redirectDraft, { type RedirectDraftResponse } from './handlers/redirect-draft'\nimport redirectPreview, { type RedirectPreviewResponse } from './handlers/redirect-preview'\nimport clearDraft, { type ClearDraftResponse } from './handlers/clear-draft'\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 { OnPublish, 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 Events = { onPublish: OnPublish }\n\ntype MakeswiftApiHandlerConfig = {\n appOrigin?: string\n apiOrigin?: string\n getFonts?: GetFonts\n events?: Events\n runtime: ReactRuntime\n}\n\ntype NotFoundError = { message: string }\n\nexport type MakeswiftApiHandlerResponse =\n | ManifestResponse\n | RevalidationResponse\n | RedirectDraftResponse\n | RedirectPreviewResponse\n | ClearDraftResponse\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 events,\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 [req] = args\n if (req.method.toUpperCase() === 'OPTIONS') {\n return new NextResponse(null, {\n status: 204,\n headers: new Headers({\n 'Content-Length': '0',\n 'Access-Control-Allow-Origin': appOrigin,\n 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',\n 'Access-Control-Allow-Headers': 'Content-Type, Authorization',\n }),\n })\n }\n\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('/draft')) {\n return match(args)\n .with(routeHandlerPattern, args => redirectDraft(...args, { apiKey }))\n .with(apiRoutePattern, args => redirectDraft(...args, { apiKey }))\n .exhaustive()\n }\n\n if (matches('/preview')) {\n return match(args)\n .with(routeHandlerPattern, args => redirectPreview(...args, { apiKey }))\n .with(apiRoutePattern, args => redirectPreview(...args, { apiKey }))\n .exhaustive()\n }\n\n if (matches('/clear-draft')) {\n return match(args)\n .with(routeHandlerPattern, args => clearDraft(...args, { apiKey }))\n .with(apiRoutePattern, args => clearDraft(...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, events }))\n .with(apiRoutePattern, args => webhook(...args, { apiKey, events }))\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":["args","status","body"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/next/api-handler/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,MAAM,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAEvD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAGvC,OAAoB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC1E,OAAc,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AACvE,OAAiB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC1E,OAAsB,EAAE,KAAK,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACrF,OAAwB,EAAE,KAAK,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AAC3F,OAAmB,EAAE,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC5E,OAAO,EAAc,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AACxE,OAAyB,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;AACzF,OAA4B,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAA;AAE9F,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAQ1C,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;AAE9B,KAAK,OAAO,GAAG;IAAE,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAA;CAAE,CAAA;AAE/D,KAAK,MAAM,GAAG;IAAE,SAAS,EAAE,SAAS,CAAA;CAAE,CAAA;AAEtC,KAAK,yBAAyB,GAAG;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,YAAY,CAAA;CACtB,CAAA;AAED,KAAK,aAAa,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAExC,MAAM,MAAM,2BAA2B,GACnC,gBAAgB,GAChB,oBAAoB,GACpB,qBAAqB,GACrB,uBAAuB,GACvB,kBAAkB,GAClB,aAAa,GACb,mBAAmB,GACnB,wBAAwB,GACxB,sBAAsB,GACtB,WAAW,GACX,aAAa,GACb,mBAAmB,CAAA;AAEvB,KAAK,uBAAuB,GACxB,CAAC,WAAW,EAAE,OAAO,CAAC,GACtB,CAAC,cAAc,EAAE,eAAe,CAAC,2BAA2B,CAAC,CAAC,CAAA;AAQlE,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,EACE,SAAuC,EACvC,SAAuC,EACvC,QAAQ,EACR,MAAM,EACN,OAAO,GACR,EAAE,yBAAyB,GAC3B,CAAC,GAAG,IAAI,EAAE,uBAAuB,KAAK,OAAO,CAAC,YAAY,CAAC,2BAA2B,CAAC,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/next/api-handler/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,MAAM,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAEvD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAGvC,OAAoB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC1E,OAAc,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AACvE,OAAiB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC1E,OAAsB,EAAE,KAAK,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACrF,OAAwB,EAAE,KAAK,uBAAuB,EAAE,MAAM,6BAA6B,CAAA;AAC3F,OAAmB,EAAE,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC5E,OAAO,EAAc,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AACxE,OAAyB,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;AACzF,OAA4B,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAA;AAE9F,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAQ1C,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAA;AAE9B,KAAK,OAAO,GAAG;IAAE,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAA;CAAE,CAAA;AAE/D,KAAK,MAAM,GAAG;IAAE,SAAS,EAAE,SAAS,CAAA;CAAE,CAAA;AAEtC,KAAK,yBAAyB,GAAG;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,YAAY,CAAA;CACtB,CAAA;AAED,KAAK,aAAa,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAExC,MAAM,MAAM,2BAA2B,GACnC,gBAAgB,GAChB,oBAAoB,GACpB,qBAAqB,GACrB,uBAAuB,GACvB,kBAAkB,GAClB,aAAa,GACb,mBAAmB,GACnB,wBAAwB,GACxB,sBAAsB,GACtB,WAAW,GACX,aAAa,GACb,mBAAmB,CAAA;AAEvB,KAAK,uBAAuB,GACxB,CAAC,WAAW,EAAE,OAAO,CAAC,GACtB,CAAC,cAAc,EAAE,eAAe,CAAC,2BAA2B,CAAC,CAAC,CAAA;AAQlE,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,EACE,SAAuC,EACvC,SAAuC,EACvC,QAAQ,EACR,MAAM,EACN,OAAO,GACR,EAAE,yBAAyB,GAC3B,CAAC,GAAG,IAAI,EAAE,uBAAuB,KAAK,OAAO,CAAC,YAAY,CAAC,2BAA2B,CAAC,GAAG,IAAI,CAAC,CAwOjG"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@makeswift/runtime",
|
|
3
|
-
"version": "0.24.
|
|
3
|
+
"version": "0.24.8-canary.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist",
|
|
@@ -170,8 +170,8 @@
|
|
|
170
170
|
"use-sync-external-store": "^1.0.0-rc.0",
|
|
171
171
|
"uuid": "^9.0.0",
|
|
172
172
|
"zod": "^3.21.4",
|
|
173
|
-
"@makeswift/next-plugin": "0.4.1",
|
|
174
173
|
"@makeswift/controls": "0.1.11",
|
|
174
|
+
"@makeswift/next-plugin": "0.4.1",
|
|
175
175
|
"@makeswift/prop-controllers": "0.4.4"
|
|
176
176
|
},
|
|
177
177
|
"devDependencies": {
|