@makeswift/runtime 0.0.0-20221011211555 → 0.0.0-20221020182013

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/next.cjs.js CHANGED
@@ -218,22 +218,36 @@ class Document extends NextDocument__default["default"] {
218
218
  });
219
219
  }
220
220
  }
221
- const version = "0.0.0-20221011211555";
222
- function MakeswiftApiHandler(apiKey, { appOrigin = "https://app.makeswift.com" } = {}) {
221
+ const version = "0.0.0-20221020182013";
222
+ function MakeswiftApiHandler(apiKey, { appOrigin = "https://app.makeswift.com", getFonts } = {}) {
223
223
  const cors = Cors__default["default"]({ origin: appOrigin });
224
224
  const previewModeProxy = httpProxy.createProxyServer();
225
- previewModeProxy.on("proxyReq", (proxyReq) => {
225
+ previewModeProxy.on("proxyReq", (proxyReq, req) => {
226
226
  proxyReq.removeHeader("X-Makeswift-Preview-Mode");
227
227
  const url = new URL(proxyReq.path, "http://n");
228
228
  url.searchParams.delete("x-makeswift-preview-mode");
229
229
  proxyReq.path = url.pathname + url.search;
230
+ console.log(JSON.stringify({
231
+ proxyReq: {
232
+ headers: proxyReq.getHeaders(),
233
+ host: proxyReq.host,
234
+ method: proxyReq.method,
235
+ path: proxyReq.path
236
+ },
237
+ req: {
238
+ headers: req.headers,
239
+ httpVersion: req.httpVersion,
240
+ method: req.method,
241
+ url: req.url
242
+ }
243
+ }, null, 2));
230
244
  });
231
245
  if (typeof apiKey !== "string") {
232
246
  throw new Error(`The Makeswift Next.js API handler must be passed a valid Makeswift site API key: \`MakeswiftApiHandler('<makeswift_site_api_key>')\`
233
247
  Received "${apiKey}" instead.`);
234
248
  }
235
249
  return async function makeswiftApiHandler(req, res) {
236
- var _a;
250
+ var _a, _b;
237
251
  await new Promise((resolve, reject) => {
238
252
  cors(req, res, (err) => {
239
253
  if (err instanceof Error)
@@ -298,13 +312,28 @@ Read more here: https://nextjs.org/blog/next-12-2#on-demand-incremental-static-r
298
312
  if (!Array.isArray(setCookie))
299
313
  return res.status(500).send("Internal Server Error");
300
314
  const cookie$1 = setCookieParser.parse(setCookie).map((cookie2) => cookie.serialize(cookie2.name, cookie2.value, cookie2)).join(";");
301
- return await new Promise((resolve, reject) => previewModeProxy.web(req, res, { target, headers: { cookie: cookie$1 } }, (err) => {
315
+ console.log(JSON.stringify({
316
+ req: {
317
+ headers: req.headers,
318
+ httpVersion: req.httpVersion,
319
+ method: req.method,
320
+ url: req.url,
321
+ query: req.query,
322
+ target,
323
+ cookie: cookie$1
324
+ }
325
+ }, null, 2));
326
+ return await new Promise((resolve, reject) => previewModeProxy.web(req, res, { target, headers: { cookie: cookie$1 }, followRedirects: true }, (err) => {
302
327
  if (err)
303
328
  reject(err);
304
329
  else
305
330
  resolve();
306
331
  }));
307
332
  }
333
+ case "fonts": {
334
+ const fonts = (_b = await (getFonts == null ? void 0 : getFonts())) != null ? _b : [];
335
+ return res.json(fonts);
336
+ }
308
337
  default:
309
338
  return res.status(404).json({ message: "Not Found" });
310
339
  }
@@ -1 +1 @@
1
- {"version":3,"file":"next.cjs.js","sources":["../src/next/client.ts","../src/next/preview-mode.tsx","../src/next/document.tsx","../src/next/api-handler.ts","../src/next/index.tsx"],"sourcesContent":["import { NormalizedCacheObject } from '@apollo/client'\nimport { MakeswiftClient } from '../api/react'\nimport { Element } from '../state/react-page'\n\nexport type MakeswiftPage = {\n id: string\n path: string\n}\n\nexport type MakeswiftPageDocument = {\n id: string\n site: { id: string }\n data: Element\n snippets: {\n id: string\n code: string\n location: 'HEAD' | 'BODY'\n liveEnabled: boolean\n builderEnabled: boolean\n cleanup: string | null\n }[]\n fonts: { family: string; variants: string[] }[]\n 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 }\n seo: {\n canonicalUrl: string | null\n isIndexingBlocked: boolean | null\n }\n}\n\nexport type MakeswiftPageSnapshot = {\n document: MakeswiftPageDocument\n apiOrigin: string\n cacheData: NormalizedCacheObject\n}\n\ntype MakeswiftConfig = {\n apiOrigin?: string\n}\n\nexport class Makeswift {\n private apiKey: string\n private apiOrigin: URL\n\n constructor(apiKey: string, { apiOrigin = 'https://api.makeswift.com' }: MakeswiftConfig = {}) {\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\n private async fetch(path: string, init?: RequestInit): Promise<Response> {\n const response = await fetch(new URL(path, this.apiOrigin).toString(), {\n ...init,\n headers: { ...init?.headers, ['X-API-Key']: this.apiKey },\n })\n\n return response\n }\n\n async getPages(params: { path?: string } = {}): Promise<MakeswiftPage[]> {\n const searchParams = new URLSearchParams(params)\n const response = await this.fetch(`/v1/pages?${searchParams}`)\n\n if (!response.ok) {\n throw new Error(`Failed to get pages with error: \"${response.statusText}\"`)\n }\n\n const json = await response.json()\n\n return json\n }\n\n private async createSnapshot(document: MakeswiftPageDocument): Promise<MakeswiftPageSnapshot> {\n const client = new MakeswiftClient({ uri: new URL('graphql', this.apiOrigin).href })\n const cacheData = await client.prefetch(document.data)\n\n return { document, apiOrigin: this.apiOrigin.href, cacheData }\n }\n\n private async getPageSnapshotByPageId(\n pageId: string,\n { preview = false }: { preview?: boolean } = {},\n ): Promise<MakeswiftPageSnapshot | null> {\n const searchParams = new URLSearchParams({ preview: String(preview) })\n const response = await this.fetch(`/v1/pages/${pageId}/document?${searchParams}`)\n\n if (!response.ok) {\n if (response.status === 404) return null\n\n throw new Error(`Failed to get snapshot with error: \"${response.statusText}\"`)\n }\n\n const document: MakeswiftPageDocument = await response.json()\n\n return await this.createSnapshot(document)\n }\n\n async getPageSnapshot(\n path: string,\n { preview }: { preview?: boolean } = {},\n ): Promise<MakeswiftPageSnapshot | null> {\n const [page] = await this.getPages({ path })\n\n if (page == null) return null\n\n const snapshot = this.getPageSnapshotByPageId(page.id, { preview })\n\n return snapshot\n }\n}\n","type Props = {\n isPreview?: boolean\n appOrigin?: string\n}\n\nexport function PreviewModeScript({\n isPreview = false,\n appOrigin = 'https://app.makeswift.com',\n}: Props) {\n const __html = `\nconst isPreview = ${isPreview}\nconst appOrigin = '${appOrigin.replace(\"'\", \"\\\\'\")}'\nconst searchParamName = 'x-makeswift-preview-mode'\nconst headerName = 'X-Makeswift-Preview-Mode'\nconst originalUrl = new URL(window.location.href)\n\nif (window.parent !== window) {\n window.addEventListener('message', event => {\n if (event.origin === appOrigin && event.data.type === 'makeswift_preview_mode') {\n const { secret } = event.data\n\n if (!isPreview && !originalUrl.searchParams.has(searchParamName)) {\n const url = new URL(originalUrl)\n\n url.searchParams.set(searchParamName, secret)\n\n window.location.replace(url)\n } else {\n const originalFetch = window.fetch\n\n window.fetch = function patchedFetch(input, init) {\n return originalFetch.call(this, input, {\n ...init,\n headers: { ...init?.headers, [headerName]: secret },\n })\n }\n }\n }\n })\n\n window.parent.postMessage({ type: 'makeswift_preview_mode' }, appOrigin)\n}\n\nif (originalUrl.searchParams.has(searchParamName)) {\n const url = new URL(originalUrl)\n\n url.searchParams.delete(searchParamName)\n\n window.history.replaceState(null, '', url)\n}\n`\n\n return <script id=\"makeswift-preview-mode\" type=\"module\" dangerouslySetInnerHTML={{ __html }} />\n}\n\nexport type MakeswiftPreviewData = { makeswift: true }\n","import { cache } from '@emotion/css'\nimport createEmotionServer from '@emotion/server/create-instance'\nimport NextDocument, {\n DocumentContext,\n DocumentInitialProps,\n Head,\n Html,\n Main,\n NextScript,\n} from 'next/document'\nimport { KeyUtils } from 'slate'\nimport { ServerStyleSheet } from 'styled-components'\nimport { PreviewModeScript } from './preview-mode'\n\nexport class Document extends NextDocument {\n static async getInitialProps(ctx: DocumentContext): Promise<DocumentInitialProps> {\n const sheet = new ServerStyleSheet()\n const originalRenderPage = ctx.renderPage\n\n try {\n ctx.renderPage = () =>\n originalRenderPage({\n enhanceApp: App => props => sheet.collectStyles(<App {...props} />),\n })\n\n const initialProps = await NextDocument.getInitialProps(ctx)\n\n KeyUtils.resetGenerator()\n\n const { extractCritical } = createEmotionServer(cache)\n const { ids, css } = extractCritical(initialProps.html)\n\n return {\n ...initialProps,\n styles: (\n <>\n {initialProps.styles}\n {sheet.getStyleElement()}\n <style\n data-emotion={`css ${ids.join(' ')}`}\n dangerouslySetInnerHTML={{ __html: css }}\n />\n </>\n ),\n }\n } finally {\n sheet.seal()\n }\n }\n\n render() {\n const { isPreview } = this.props.__NEXT_DATA__\n\n return (\n <Html>\n <Head>\n <PreviewModeScript isPreview={isPreview} />\n </Head>\n <body>\n <Main />\n <NextScript />\n </body>\n </Html>\n )\n }\n}\n","import { CookieSerializeOptions, serialize } from 'cookie'\nimport Cors from 'cors'\nimport { createProxyServer } from 'http-proxy'\nimport { NextApiHandler } from 'next'\nimport { parse } from 'set-cookie-parser'\nimport { version } from '../../package.json'\n\ntype MakeswiftApiHandlerConfig = {\n appOrigin?: string\n}\n\nexport function MakeswiftApiHandler(\n apiKey: string,\n { appOrigin = 'https://app.makeswift.com' }: MakeswiftApiHandlerConfig = {},\n): NextApiHandler {\n const cors = Cors({ origin: appOrigin })\n const previewModeProxy = createProxyServer()\n\n previewModeProxy.on('proxyReq', proxyReq => {\n proxyReq.removeHeader('X-Makeswift-Preview-Mode')\n\n const url = new URL(proxyReq.path, 'http://n')\n\n url.searchParams.delete('x-makeswift-preview-mode')\n\n proxyReq.path = url.pathname + url.search\n })\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 return async function makeswiftApiHandler(req, res) {\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 const { makeswift } = req.query\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 action = makeswift.join('/')\n\n switch (action) {\n case 'manifest': {\n if (req.query.secret !== apiKey) return res.status(401).json({ message: 'Unauthorized' })\n\n return res.json({\n version,\n previewMode: true,\n })\n }\n\n case 'revalidate': {\n if (req.query.secret !== apiKey) {\n return res.status(401).json({ message: 'Unauthorized' })\n }\n\n if (typeof req.query.path !== 'string') {\n return res.status(400).json({ message: 'Bad Request' })\n }\n\n const revalidate = res.revalidate ?? res.unstable_revalidate\n\n if (typeof revalidate !== 'function') {\n const message =\n `Cannot revalidate path \"${req.query.path}\" because \\`revalidate\\` function does not exist in API handler response. ` +\n 'Please update to Next.js v12.2.0 or higher for support for on-demand revalidation.\\n' +\n 'Read more here: https://nextjs.org/blog/next-12-2#on-demand-incremental-static-regeneration-stable'\n\n console.warn(message)\n\n return res.json({ revalidated: false })\n }\n\n try {\n await revalidate(req.query.path)\n\n return res.json({ revalidated: true })\n } catch (error) {\n return res.status(500).json({ message: 'Error Revalidating' })\n }\n }\n\n case 'proxy-preview-mode': {\n if (req.query.secret !== apiKey) return res.status(401).send('Unauthorized')\n\n const host = req.headers.host\n\n if (host == null) return res.status(400).send('Bad Request')\n\n const forwardedProto = req.headers['x-forwarded-proto']\n\n const proto = typeof forwardedProto === 'string' ? forwardedProto : 'http'\n let target = `${proto}://${host}`\n\n // During local development we want to use the local Next.js address for proxying. The\n // reason we want to do this is that the user might be using a local SSL proxy to deal with\n // mixed content browser limitations. If the user generates a locally-trusted CA for their\n // SSL cert, it's likely that Node.js won't trust this CA unless they used the\n // `NODE_EXTRA_CA_CERTS` option (see https://stackoverflow.com/a/68135600). To provide a\n // better developer experience, instead of requiring the user to provide the CA to Node.js,\n // we just proxy directly to the running Next.js process.\n if (process.env['NODE_ENV'] !== 'production') {\n const port = req.socket.localPort\n\n if (port != null) target = `http://localhost:${port}`\n }\n\n const setCookie = res.setPreviewData({ makeswift: true }).getHeader('Set-Cookie')\n res.removeHeader('Set-Cookie')\n\n if (!Array.isArray(setCookie)) return res.status(500).send('Internal Server Error')\n\n const cookie = parse(setCookie)\n .map(cookie => serialize(cookie.name, cookie.value, cookie as CookieSerializeOptions))\n .join(';')\n\n return await new Promise<void>((resolve, reject) =>\n previewModeProxy.web(req, res, { target, headers: { cookie } }, err => {\n if (err) reject(err)\n else resolve()\n }),\n )\n }\n\n default:\n return res.status(404).json({ message: 'Not Found' })\n }\n }\n}\n","import { useEffect, useState } from 'react'\n\nimport { RuntimeProvider } from '../runtimes/react'\nimport { Page as PageMeta } from '../components/page'\nimport { MakeswiftClient } from '../api/react'\nimport { MakeswiftPageSnapshot } from './client'\n\nexport { MakeswiftClient }\n\nexport type PageProps = {\n snapshot: MakeswiftPageSnapshot\n}\n\nimport {\n GetServerSidePropsContext,\n GetServerSidePropsResult,\n GetStaticPathsResult,\n GetStaticPropsContext,\n GetStaticPropsResult,\n} from 'next'\nimport { Makeswift } from './client'\nimport { MakeswiftPreviewData } from './preview-mode'\n\nfunction getApiOrigin(): string {\n const apiOriginString = process['env'].MAKESWIFT_API_HOST ?? 'https://api.makeswift.com'\n\n try {\n const url = new URL(apiOriginString)\n\n return url.origin\n } catch (error) {\n const errorMessage =\n '\"MAKESWIFT_API_HOST\" environment variable must be a valid URL. ' +\n `Expected something like \"https://api.makeswift.com\" but instead received \"${apiOriginString}\".`\n\n throw new Error(errorMessage)\n }\n}\n\nconst uuidRegExp =\n /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/\n\nfunction getApiKey(): string {\n const apiKey = process['env'].MAKESWIFT_SITE_API_KEY\n\n if (apiKey == null) {\n const errorMessage =\n '\"MAKESWIFT_SITE_API_KEY\" environment variable must be set. ' +\n 'Please add your site API key to your `.env.local` file. ' +\n 'More info: https://www.makeswift.com/docs/guides/manual-setup#add-environment-variables'\n\n throw new Error(errorMessage)\n }\n\n if (!uuidRegExp.test(apiKey)) {\n const errorMEssage =\n `Invalid Makeswift site API key \"${apiKey}\". ` +\n 'Please check your `.env.local` file for the \"MAKESWIFT_SITE_API_KEY\" environment variable. ' +\n 'More info: https://www.makeswift.com/docs/guides/manual-setup#add-environment-variables'\n\n throw new Error(errorMEssage)\n }\n\n return apiKey\n}\n\ntype ParsedUrlQuery = { path?: string[] }\n\nfunction deprecationWarning(methodName: string): void {\n const warningMessage =\n `The \\`${methodName}\\` export has been deprecated and will be removed in the next minor version. ` +\n 'More info: https://github.com/makeswift/makeswift/releases/tag/%40makeswift%2Fruntime%400.2.0'\n\n if (process.env['NODE_ENV'] !== 'production') console.warn(warningMessage)\n}\n\nexport async function getStaticPaths(): Promise<GetStaticPathsResult<ParsedUrlQuery>> {\n deprecationWarning('getStaticPaths')\n\n const makeswift = new Makeswift(getApiKey(), { apiOrigin: getApiOrigin() })\n const pages = await makeswift.getPages()\n\n return {\n paths: pages.map(page => ({\n params: { path: page.path.split('/').filter(segment => segment !== '') },\n })),\n fallback: 'blocking',\n }\n}\n\nconst REVALIDATE_SECONDS = 1\n\nexport async function getStaticProps(\n ctx: GetStaticPropsContext<ParsedUrlQuery, MakeswiftPreviewData>,\n): Promise<GetStaticPropsResult<PageProps>> {\n deprecationWarning('getStaticProps')\n\n const makeswift = new Makeswift(getApiKey(), { apiOrigin: getApiOrigin() })\n const path = '/' + (ctx.params?.path ?? []).join('/')\n const snapshot = await makeswift.getPageSnapshot(path, {\n preview: ctx.previewData?.makeswift === true,\n })\n\n if (snapshot == null) return { notFound: true, revalidate: REVALIDATE_SECONDS }\n\n return { props: { snapshot }, revalidate: REVALIDATE_SECONDS }\n}\n\nexport async function getServerSideProps(\n ctx: GetServerSidePropsContext<{ path?: string[] }>,\n): Promise<GetServerSidePropsResult<PageProps>> {\n deprecationWarning('getServerSideProps')\n\n const makeswift = new Makeswift(getApiKey(), { apiOrigin: getApiOrigin() })\n const path = '/' + (ctx.params?.path ?? []).join('/')\n const snapshot = await makeswift.getPageSnapshot(path, { preview: true })\n\n if (snapshot == null) return { notFound: true }\n\n return { props: { snapshot } }\n}\n\nexport function Page({ snapshot }: PageProps) {\n const [client] = useState(\n () =>\n new MakeswiftClient({\n uri: new URL('graphql', snapshot.apiOrigin).href,\n cacheData: snapshot.cacheData,\n }),\n )\n\n useEffect(() => {\n client.updateCacheData(snapshot.cacheData)\n }, [client, snapshot])\n\n return (\n <RuntimeProvider\n client={client}\n rootElements={new Map([[snapshot.document.id, snapshot.document.data]])}\n >\n <PageMeta document={snapshot.document} />\n </RuntimeProvider>\n )\n}\n\nexport * from './client'\nexport * from './preview-mode'\nexport * from './document'\nexport * from './api-handler'\nexport * from './dynamic'\n"],"names":["MakeswiftClient","isPreview","appOrigin","__html","replace","Document","NextDocument","getInitialProps","ctx","sheet","ServerStyleSheet","originalRenderPage","renderPage","enhanceApp","App","props","collectStyles","initialProps","KeyUtils","resetGenerator","extractCritical","createEmotionServer","cache","ids","css","html","styles","_Fragment","getStyleElement","join","seal","render","__NEXT_DATA__","Html","_jsx","Head","_jsxs","Main","NextScript","Cors","createProxyServer","cookie","parse","serialize","apiOriginString","process","MAKESWIFT_API_HOST","url","URL","origin","error","errorMessage","Error","uuidRegExp","apiKey","MAKESWIFT_SITE_API_KEY","test","errorMEssage","methodName","warningMessage","env","console","warn","deprecationWarning","makeswift","Makeswift","getApiKey","apiOrigin","getApiOrigin","pages","getPages","paths","map","page","params","path","split","filter","segment","fallback","REVALIDATE_SECONDS","snapshot","getPageSnapshot","preview","previewData","notFound","revalidate","client","useState","uri","href","cacheData","useEffect","updateCacheData","RuntimeProvider","Map","document","id","data","PageMeta"],"mappings":"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"}
1
+ {"version":3,"file":"next.cjs.js","sources":["../src/next/client.ts","../src/next/preview-mode.tsx","../src/next/document.tsx","../src/next/api-handler.ts","../src/next/index.tsx"],"sourcesContent":["import { NormalizedCacheObject } from '@apollo/client'\nimport { MakeswiftClient } from '../api/react'\nimport { Element } from '../state/react-page'\n\nexport type MakeswiftPage = {\n id: string\n path: string\n}\n\nexport type MakeswiftPageDocument = {\n id: string\n site: { id: string }\n data: Element\n snippets: {\n id: string\n code: string\n location: 'HEAD' | 'BODY'\n liveEnabled: boolean\n builderEnabled: boolean\n cleanup: string | null\n }[]\n fonts: { family: string; variants: string[] }[]\n 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 }\n seo: {\n canonicalUrl: string | null\n isIndexingBlocked: boolean | null\n }\n}\n\nexport type MakeswiftPageSnapshot = {\n document: MakeswiftPageDocument\n apiOrigin: string\n cacheData: NormalizedCacheObject\n}\n\ntype MakeswiftConfig = {\n apiOrigin?: string\n}\n\nexport class Makeswift {\n private apiKey: string\n private apiOrigin: URL\n\n constructor(apiKey: string, { apiOrigin = 'https://api.makeswift.com' }: MakeswiftConfig = {}) {\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\n private async fetch(path: string, init?: RequestInit): Promise<Response> {\n const response = await fetch(new URL(path, this.apiOrigin).toString(), {\n ...init,\n headers: { ...init?.headers, ['X-API-Key']: this.apiKey },\n })\n\n return response\n }\n\n async getPages(params: { path?: string } = {}): Promise<MakeswiftPage[]> {\n const searchParams = new URLSearchParams(params)\n const response = await this.fetch(`/v1/pages?${searchParams}`)\n\n if (!response.ok) {\n throw new Error(`Failed to get pages with error: \"${response.statusText}\"`)\n }\n\n const json = await response.json()\n\n return json\n }\n\n private async createSnapshot(document: MakeswiftPageDocument): Promise<MakeswiftPageSnapshot> {\n const client = new MakeswiftClient({ uri: new URL('graphql', this.apiOrigin).href })\n const cacheData = await client.prefetch(document.data)\n\n return { document, apiOrigin: this.apiOrigin.href, cacheData }\n }\n\n private async getPageSnapshotByPageId(\n pageId: string,\n { preview = false }: { preview?: boolean } = {},\n ): Promise<MakeswiftPageSnapshot | null> {\n const searchParams = new URLSearchParams({ preview: String(preview) })\n const response = await this.fetch(`/v1/pages/${pageId}/document?${searchParams}`)\n\n if (!response.ok) {\n if (response.status === 404) return null\n\n throw new Error(`Failed to get snapshot with error: \"${response.statusText}\"`)\n }\n\n const document: MakeswiftPageDocument = await response.json()\n\n return await this.createSnapshot(document)\n }\n\n async getPageSnapshot(\n path: string,\n { preview }: { preview?: boolean } = {},\n ): Promise<MakeswiftPageSnapshot | null> {\n const [page] = await this.getPages({ path })\n\n if (page == null) return null\n\n const snapshot = this.getPageSnapshotByPageId(page.id, { preview })\n\n return snapshot\n }\n}\n","type Props = {\n isPreview?: boolean\n appOrigin?: string\n}\n\nexport function PreviewModeScript({\n isPreview = false,\n appOrigin = 'https://app.makeswift.com',\n}: Props) {\n const __html = `\nconst isPreview = ${isPreview}\nconst appOrigin = '${appOrigin.replace(\"'\", \"\\\\'\")}'\nconst searchParamName = 'x-makeswift-preview-mode'\nconst headerName = 'X-Makeswift-Preview-Mode'\nconst originalUrl = new URL(window.location.href)\n\nif (window.parent !== window) {\n window.addEventListener('message', event => {\n if (event.origin === appOrigin && event.data.type === 'makeswift_preview_mode') {\n const { secret } = event.data\n\n if (!isPreview && !originalUrl.searchParams.has(searchParamName)) {\n const url = new URL(originalUrl)\n\n url.searchParams.set(searchParamName, secret)\n\n window.location.replace(url)\n } else {\n const originalFetch = window.fetch\n\n window.fetch = function patchedFetch(input, init) {\n return originalFetch.call(this, input, {\n ...init,\n headers: { ...init?.headers, [headerName]: secret },\n })\n }\n }\n }\n })\n\n window.parent.postMessage({ type: 'makeswift_preview_mode' }, appOrigin)\n}\n\nif (originalUrl.searchParams.has(searchParamName)) {\n const url = new URL(originalUrl)\n\n url.searchParams.delete(searchParamName)\n\n window.history.replaceState(null, '', url)\n}\n`\n\n return <script id=\"makeswift-preview-mode\" type=\"module\" dangerouslySetInnerHTML={{ __html }} />\n}\n\nexport type MakeswiftPreviewData = { makeswift: true }\n","import { cache } from '@emotion/css'\nimport createEmotionServer from '@emotion/server/create-instance'\nimport NextDocument, {\n DocumentContext,\n DocumentInitialProps,\n Head,\n Html,\n Main,\n NextScript,\n} from 'next/document'\nimport { KeyUtils } from 'slate'\nimport { ServerStyleSheet } from 'styled-components'\nimport { PreviewModeScript } from './preview-mode'\n\nexport class Document extends NextDocument {\n static async getInitialProps(ctx: DocumentContext): Promise<DocumentInitialProps> {\n const sheet = new ServerStyleSheet()\n const originalRenderPage = ctx.renderPage\n\n try {\n ctx.renderPage = () =>\n originalRenderPage({\n enhanceApp: App => props => sheet.collectStyles(<App {...props} />),\n })\n\n const initialProps = await NextDocument.getInitialProps(ctx)\n\n KeyUtils.resetGenerator()\n\n const { extractCritical } = createEmotionServer(cache)\n const { ids, css } = extractCritical(initialProps.html)\n\n return {\n ...initialProps,\n styles: (\n <>\n {initialProps.styles}\n {sheet.getStyleElement()}\n <style\n data-emotion={`css ${ids.join(' ')}`}\n dangerouslySetInnerHTML={{ __html: css }}\n />\n </>\n ),\n }\n } finally {\n sheet.seal()\n }\n }\n\n render() {\n const { isPreview } = this.props.__NEXT_DATA__\n\n return (\n <Html>\n <Head>\n <PreviewModeScript isPreview={isPreview} />\n </Head>\n <body>\n <Main />\n <NextScript />\n </body>\n </Html>\n )\n }\n}\n","import { CookieSerializeOptions, serialize } from 'cookie'\nimport Cors from 'cors'\nimport { createProxyServer } from 'http-proxy'\nimport { NextApiHandler } from 'next'\nimport { parse } from 'set-cookie-parser'\nimport { version } from '../../package.json'\n\ntype Fonts = Font[]\n\ntype Font = {\n family: string\n variants: FontVariant[]\n}\n\ntype FontVariant = { weight: string; style: 'italic' | 'normal'; src?: string }\n\ntype MakeswiftApiHandlerConfig = {\n appOrigin?: string\n getFonts?: () => Fonts | Promise<Fonts>\n}\n\nexport type MakeswiftApiHandlerErrorResponse = { message: string }\nexport type MakeswiftApiHandlerRevalidateErrorResponse = string\nexport type MakeswiftApiHandlerRevalidateResponse = { revalidated: boolean }\nexport type MakeswiftApiHandlerManifestResponse = { version: string; previewMode: boolean }\nexport type MakeswiftApiHandlerFontsResponse = Fonts\n\nexport type MakeswiftApiHandlerResponse =\n | MakeswiftApiHandlerErrorResponse\n | MakeswiftApiHandlerRevalidateErrorResponse\n | MakeswiftApiHandlerRevalidateResponse\n | MakeswiftApiHandlerManifestResponse\n | MakeswiftApiHandlerFontsResponse\n\nexport function MakeswiftApiHandler(\n apiKey: string,\n { appOrigin = 'https://app.makeswift.com', getFonts }: MakeswiftApiHandlerConfig = {},\n): NextApiHandler<MakeswiftApiHandlerResponse> {\n const cors = Cors({ origin: appOrigin })\n const previewModeProxy = createProxyServer()\n\n previewModeProxy.on('proxyReq', (proxyReq, req) => {\n proxyReq.removeHeader('X-Makeswift-Preview-Mode')\n\n const url = new URL(proxyReq.path, 'http://n')\n\n url.searchParams.delete('x-makeswift-preview-mode')\n\n proxyReq.path = url.pathname + url.search\n\n console.log(\n JSON.stringify(\n {\n proxyReq: {\n headers: proxyReq.getHeaders(),\n host: proxyReq.host,\n method: proxyReq.method,\n path: proxyReq.path,\n },\n req: {\n headers: req.headers,\n httpVersion: req.httpVersion,\n method: req.method,\n url: req.url,\n },\n },\n null,\n 2,\n ),\n )\n })\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 return async function makeswiftApiHandler(req, res) {\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 const { makeswift } = req.query\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 action = makeswift.join('/')\n\n switch (action) {\n case 'manifest': {\n if (req.query.secret !== apiKey) return res.status(401).json({ message: 'Unauthorized' })\n\n return res.json({\n version,\n previewMode: true,\n })\n }\n\n case 'revalidate': {\n if (req.query.secret !== apiKey) {\n return res.status(401).json({ message: 'Unauthorized' })\n }\n\n if (typeof req.query.path !== 'string') {\n return res.status(400).json({ message: 'Bad Request' })\n }\n\n const revalidate = res.revalidate ?? res.unstable_revalidate\n\n if (typeof revalidate !== 'function') {\n const message =\n `Cannot revalidate path \"${req.query.path}\" because \\`revalidate\\` function does not exist in API handler response. ` +\n 'Please update to Next.js v12.2.0 or higher for support for on-demand revalidation.\\n' +\n 'Read more here: https://nextjs.org/blog/next-12-2#on-demand-incremental-static-regeneration-stable'\n\n console.warn(message)\n\n return res.json({ revalidated: false })\n }\n\n try {\n await revalidate(req.query.path)\n\n return res.json({ revalidated: true })\n } catch (error) {\n return res.status(500).json({ message: 'Error Revalidating' })\n }\n }\n\n case 'proxy-preview-mode': {\n if (req.query.secret !== apiKey) return res.status(401).send('Unauthorized')\n\n const host = req.headers.host\n\n if (host == null) return res.status(400).send('Bad Request')\n\n const forwardedProto = req.headers['x-forwarded-proto']\n\n const proto = typeof forwardedProto === 'string' ? forwardedProto : 'http'\n let target = `${proto}://${host}`\n\n // During local development we want to use the local Next.js address for proxying. The\n // reason we want to do this is that the user might be using a local SSL proxy to deal with\n // mixed content browser limitations. If the user generates a locally-trusted CA for their\n // SSL cert, it's likely that Node.js won't trust this CA unless they used the\n // `NODE_EXTRA_CA_CERTS` option (see https://stackoverflow.com/a/68135600). To provide a\n // better developer experience, instead of requiring the user to provide the CA to Node.js,\n // we just proxy directly to the running Next.js process.\n if (process.env['NODE_ENV'] !== 'production') {\n const port = req.socket.localPort\n\n if (port != null) target = `http://localhost:${port}`\n }\n\n const setCookie = res.setPreviewData({ makeswift: true }).getHeader('Set-Cookie')\n res.removeHeader('Set-Cookie')\n\n if (!Array.isArray(setCookie)) return res.status(500).send('Internal Server Error')\n\n const cookie = parse(setCookie)\n .map(cookie => serialize(cookie.name, cookie.value, cookie as CookieSerializeOptions))\n .join(';')\n\n console.log(\n JSON.stringify(\n {\n req: {\n headers: req.headers,\n httpVersion: req.httpVersion,\n method: req.method,\n url: req.url,\n query: req.query,\n target,\n cookie,\n },\n },\n null,\n 2,\n ),\n )\n\n return await new Promise<void>((resolve, reject) =>\n previewModeProxy.web(\n req,\n res,\n { target, headers: { cookie }, followRedirects: true },\n err => {\n if (err) reject(err)\n else resolve()\n },\n ),\n )\n }\n\n case 'fonts': {\n const fonts = (await getFonts?.()) ?? []\n return res.json(fonts)\n }\n\n default:\n return res.status(404).json({ message: 'Not Found' })\n }\n }\n}\n","import { useEffect, useState } from 'react'\n\nimport { RuntimeProvider } from '../runtimes/react'\nimport { Page as PageMeta } from '../components/page'\nimport { MakeswiftClient } from '../api/react'\nimport { MakeswiftPageSnapshot } from './client'\n\nexport { MakeswiftClient }\n\nexport type PageProps = {\n snapshot: MakeswiftPageSnapshot\n}\n\nimport {\n GetServerSidePropsContext,\n GetServerSidePropsResult,\n GetStaticPathsResult,\n GetStaticPropsContext,\n GetStaticPropsResult,\n} from 'next'\nimport { Makeswift } from './client'\nimport { MakeswiftPreviewData } from './preview-mode'\n\nfunction getApiOrigin(): string {\n const apiOriginString = process['env'].MAKESWIFT_API_HOST ?? 'https://api.makeswift.com'\n\n try {\n const url = new URL(apiOriginString)\n\n return url.origin\n } catch (error) {\n const errorMessage =\n '\"MAKESWIFT_API_HOST\" environment variable must be a valid URL. ' +\n `Expected something like \"https://api.makeswift.com\" but instead received \"${apiOriginString}\".`\n\n throw new Error(errorMessage)\n }\n}\n\nconst uuidRegExp =\n /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/\n\nfunction getApiKey(): string {\n const apiKey = process['env'].MAKESWIFT_SITE_API_KEY\n\n if (apiKey == null) {\n const errorMessage =\n '\"MAKESWIFT_SITE_API_KEY\" environment variable must be set. ' +\n 'Please add your site API key to your `.env.local` file. ' +\n 'More info: https://www.makeswift.com/docs/guides/manual-setup#add-environment-variables'\n\n throw new Error(errorMessage)\n }\n\n if (!uuidRegExp.test(apiKey)) {\n const errorMEssage =\n `Invalid Makeswift site API key \"${apiKey}\". ` +\n 'Please check your `.env.local` file for the \"MAKESWIFT_SITE_API_KEY\" environment variable. ' +\n 'More info: https://www.makeswift.com/docs/guides/manual-setup#add-environment-variables'\n\n throw new Error(errorMEssage)\n }\n\n return apiKey\n}\n\ntype ParsedUrlQuery = { path?: string[] }\n\nfunction deprecationWarning(methodName: string): void {\n const warningMessage =\n `The \\`${methodName}\\` export has been deprecated and will be removed in the next minor version. ` +\n 'More info: https://github.com/makeswift/makeswift/releases/tag/%40makeswift%2Fruntime%400.2.0'\n\n if (process.env['NODE_ENV'] !== 'production') console.warn(warningMessage)\n}\n\nexport async function getStaticPaths(): Promise<GetStaticPathsResult<ParsedUrlQuery>> {\n deprecationWarning('getStaticPaths')\n\n const makeswift = new Makeswift(getApiKey(), { apiOrigin: getApiOrigin() })\n const pages = await makeswift.getPages()\n\n return {\n paths: pages.map(page => ({\n params: { path: page.path.split('/').filter(segment => segment !== '') },\n })),\n fallback: 'blocking',\n }\n}\n\nconst REVALIDATE_SECONDS = 1\n\nexport async function getStaticProps(\n ctx: GetStaticPropsContext<ParsedUrlQuery, MakeswiftPreviewData>,\n): Promise<GetStaticPropsResult<PageProps>> {\n deprecationWarning('getStaticProps')\n\n const makeswift = new Makeswift(getApiKey(), { apiOrigin: getApiOrigin() })\n const path = '/' + (ctx.params?.path ?? []).join('/')\n const snapshot = await makeswift.getPageSnapshot(path, {\n preview: ctx.previewData?.makeswift === true,\n })\n\n if (snapshot == null) return { notFound: true, revalidate: REVALIDATE_SECONDS }\n\n return { props: { snapshot }, revalidate: REVALIDATE_SECONDS }\n}\n\nexport async function getServerSideProps(\n ctx: GetServerSidePropsContext<{ path?: string[] }>,\n): Promise<GetServerSidePropsResult<PageProps>> {\n deprecationWarning('getServerSideProps')\n\n const makeswift = new Makeswift(getApiKey(), { apiOrigin: getApiOrigin() })\n const path = '/' + (ctx.params?.path ?? []).join('/')\n const snapshot = await makeswift.getPageSnapshot(path, { preview: true })\n\n if (snapshot == null) return { notFound: true }\n\n return { props: { snapshot } }\n}\n\nexport function Page({ snapshot }: PageProps) {\n const [client] = useState(\n () =>\n new MakeswiftClient({\n uri: new URL('graphql', snapshot.apiOrigin).href,\n cacheData: snapshot.cacheData,\n }),\n )\n\n useEffect(() => {\n client.updateCacheData(snapshot.cacheData)\n }, [client, snapshot])\n\n return (\n <RuntimeProvider\n client={client}\n rootElements={new Map([[snapshot.document.id, snapshot.document.data]])}\n >\n <PageMeta document={snapshot.document} />\n </RuntimeProvider>\n )\n}\n\nexport * from './client'\nexport * from './preview-mode'\nexport * from './document'\nexport * from './api-handler'\nexport * from './dynamic'\n"],"names":["MakeswiftClient","isPreview","appOrigin","__html","replace","Document","NextDocument","getInitialProps","ctx","sheet","ServerStyleSheet","originalRenderPage","renderPage","enhanceApp","App","props","collectStyles","initialProps","KeyUtils","resetGenerator","extractCritical","createEmotionServer","cache","ids","css","html","styles","_Fragment","getStyleElement","join","seal","render","__NEXT_DATA__","Html","_jsx","Head","_jsxs","Main","NextScript","Cors","createProxyServer","cookie","parse","serialize","apiOriginString","process","MAKESWIFT_API_HOST","url","URL","origin","error","errorMessage","Error","uuidRegExp","apiKey","MAKESWIFT_SITE_API_KEY","test","errorMEssage","methodName","warningMessage","env","console","warn","deprecationWarning","makeswift","Makeswift","getApiKey","apiOrigin","getApiOrigin","pages","getPages","paths","map","page","params","path","split","filter","segment","fallback","REVALIDATE_SECONDS","snapshot","getPageSnapshot","preview","previewData","notFound","revalidate","client","useState","uri","href","cacheData","useEffect","updateCacheData","RuntimeProvider","Map","document","id","data","PageMeta"],"mappings":"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"}
package/dist/next.es.js CHANGED
@@ -211,22 +211,36 @@ class Document extends NextDocument {
211
211
  });
212
212
  }
213
213
  }
214
- const version = "0.0.0-20221011211555";
215
- function MakeswiftApiHandler(apiKey, { appOrigin = "https://app.makeswift.com" } = {}) {
214
+ const version = "0.0.0-20221020182013";
215
+ function MakeswiftApiHandler(apiKey, { appOrigin = "https://app.makeswift.com", getFonts } = {}) {
216
216
  const cors = Cors({ origin: appOrigin });
217
217
  const previewModeProxy = createProxyServer();
218
- previewModeProxy.on("proxyReq", (proxyReq) => {
218
+ previewModeProxy.on("proxyReq", (proxyReq, req) => {
219
219
  proxyReq.removeHeader("X-Makeswift-Preview-Mode");
220
220
  const url = new URL(proxyReq.path, "http://n");
221
221
  url.searchParams.delete("x-makeswift-preview-mode");
222
222
  proxyReq.path = url.pathname + url.search;
223
+ console.log(JSON.stringify({
224
+ proxyReq: {
225
+ headers: proxyReq.getHeaders(),
226
+ host: proxyReq.host,
227
+ method: proxyReq.method,
228
+ path: proxyReq.path
229
+ },
230
+ req: {
231
+ headers: req.headers,
232
+ httpVersion: req.httpVersion,
233
+ method: req.method,
234
+ url: req.url
235
+ }
236
+ }, null, 2));
223
237
  });
224
238
  if (typeof apiKey !== "string") {
225
239
  throw new Error(`The Makeswift Next.js API handler must be passed a valid Makeswift site API key: \`MakeswiftApiHandler('<makeswift_site_api_key>')\`
226
240
  Received "${apiKey}" instead.`);
227
241
  }
228
242
  return async function makeswiftApiHandler(req, res) {
229
- var _a;
243
+ var _a, _b;
230
244
  await new Promise((resolve, reject) => {
231
245
  cors(req, res, (err) => {
232
246
  if (err instanceof Error)
@@ -291,13 +305,28 @@ Read more here: https://nextjs.org/blog/next-12-2#on-demand-incremental-static-r
291
305
  if (!Array.isArray(setCookie))
292
306
  return res.status(500).send("Internal Server Error");
293
307
  const cookie = parse(setCookie).map((cookie2) => serialize(cookie2.name, cookie2.value, cookie2)).join(";");
294
- return await new Promise((resolve, reject) => previewModeProxy.web(req, res, { target, headers: { cookie } }, (err) => {
308
+ console.log(JSON.stringify({
309
+ req: {
310
+ headers: req.headers,
311
+ httpVersion: req.httpVersion,
312
+ method: req.method,
313
+ url: req.url,
314
+ query: req.query,
315
+ target,
316
+ cookie
317
+ }
318
+ }, null, 2));
319
+ return await new Promise((resolve, reject) => previewModeProxy.web(req, res, { target, headers: { cookie }, followRedirects: true }, (err) => {
295
320
  if (err)
296
321
  reject(err);
297
322
  else
298
323
  resolve();
299
324
  }));
300
325
  }
326
+ case "fonts": {
327
+ const fonts = (_b = await (getFonts == null ? void 0 : getFonts())) != null ? _b : [];
328
+ return res.json(fonts);
329
+ }
301
330
  default:
302
331
  return res.status(404).json({ message: "Not Found" });
303
332
  }
@@ -1 +1 @@
1
- {"version":3,"file":"next.es.js","sources":["../src/next/client.ts","../src/next/preview-mode.tsx","../src/next/document.tsx","../src/next/api-handler.ts","../src/next/index.tsx"],"sourcesContent":["import { NormalizedCacheObject } from '@apollo/client'\nimport { MakeswiftClient } from '../api/react'\nimport { Element } from '../state/react-page'\n\nexport type MakeswiftPage = {\n id: string\n path: string\n}\n\nexport type MakeswiftPageDocument = {\n id: string\n site: { id: string }\n data: Element\n snippets: {\n id: string\n code: string\n location: 'HEAD' | 'BODY'\n liveEnabled: boolean\n builderEnabled: boolean\n cleanup: string | null\n }[]\n fonts: { family: string; variants: string[] }[]\n 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 }\n seo: {\n canonicalUrl: string | null\n isIndexingBlocked: boolean | null\n }\n}\n\nexport type MakeswiftPageSnapshot = {\n document: MakeswiftPageDocument\n apiOrigin: string\n cacheData: NormalizedCacheObject\n}\n\ntype MakeswiftConfig = {\n apiOrigin?: string\n}\n\nexport class Makeswift {\n private apiKey: string\n private apiOrigin: URL\n\n constructor(apiKey: string, { apiOrigin = 'https://api.makeswift.com' }: MakeswiftConfig = {}) {\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\n private async fetch(path: string, init?: RequestInit): Promise<Response> {\n const response = await fetch(new URL(path, this.apiOrigin).toString(), {\n ...init,\n headers: { ...init?.headers, ['X-API-Key']: this.apiKey },\n })\n\n return response\n }\n\n async getPages(params: { path?: string } = {}): Promise<MakeswiftPage[]> {\n const searchParams = new URLSearchParams(params)\n const response = await this.fetch(`/v1/pages?${searchParams}`)\n\n if (!response.ok) {\n throw new Error(`Failed to get pages with error: \"${response.statusText}\"`)\n }\n\n const json = await response.json()\n\n return json\n }\n\n private async createSnapshot(document: MakeswiftPageDocument): Promise<MakeswiftPageSnapshot> {\n const client = new MakeswiftClient({ uri: new URL('graphql', this.apiOrigin).href })\n const cacheData = await client.prefetch(document.data)\n\n return { document, apiOrigin: this.apiOrigin.href, cacheData }\n }\n\n private async getPageSnapshotByPageId(\n pageId: string,\n { preview = false }: { preview?: boolean } = {},\n ): Promise<MakeswiftPageSnapshot | null> {\n const searchParams = new URLSearchParams({ preview: String(preview) })\n const response = await this.fetch(`/v1/pages/${pageId}/document?${searchParams}`)\n\n if (!response.ok) {\n if (response.status === 404) return null\n\n throw new Error(`Failed to get snapshot with error: \"${response.statusText}\"`)\n }\n\n const document: MakeswiftPageDocument = await response.json()\n\n return await this.createSnapshot(document)\n }\n\n async getPageSnapshot(\n path: string,\n { preview }: { preview?: boolean } = {},\n ): Promise<MakeswiftPageSnapshot | null> {\n const [page] = await this.getPages({ path })\n\n if (page == null) return null\n\n const snapshot = this.getPageSnapshotByPageId(page.id, { preview })\n\n return snapshot\n }\n}\n","type Props = {\n isPreview?: boolean\n appOrigin?: string\n}\n\nexport function PreviewModeScript({\n isPreview = false,\n appOrigin = 'https://app.makeswift.com',\n}: Props) {\n const __html = `\nconst isPreview = ${isPreview}\nconst appOrigin = '${appOrigin.replace(\"'\", \"\\\\'\")}'\nconst searchParamName = 'x-makeswift-preview-mode'\nconst headerName = 'X-Makeswift-Preview-Mode'\nconst originalUrl = new URL(window.location.href)\n\nif (window.parent !== window) {\n window.addEventListener('message', event => {\n if (event.origin === appOrigin && event.data.type === 'makeswift_preview_mode') {\n const { secret } = event.data\n\n if (!isPreview && !originalUrl.searchParams.has(searchParamName)) {\n const url = new URL(originalUrl)\n\n url.searchParams.set(searchParamName, secret)\n\n window.location.replace(url)\n } else {\n const originalFetch = window.fetch\n\n window.fetch = function patchedFetch(input, init) {\n return originalFetch.call(this, input, {\n ...init,\n headers: { ...init?.headers, [headerName]: secret },\n })\n }\n }\n }\n })\n\n window.parent.postMessage({ type: 'makeswift_preview_mode' }, appOrigin)\n}\n\nif (originalUrl.searchParams.has(searchParamName)) {\n const url = new URL(originalUrl)\n\n url.searchParams.delete(searchParamName)\n\n window.history.replaceState(null, '', url)\n}\n`\n\n return <script id=\"makeswift-preview-mode\" type=\"module\" dangerouslySetInnerHTML={{ __html }} />\n}\n\nexport type MakeswiftPreviewData = { makeswift: true }\n","import { cache } from '@emotion/css'\nimport createEmotionServer from '@emotion/server/create-instance'\nimport NextDocument, {\n DocumentContext,\n DocumentInitialProps,\n Head,\n Html,\n Main,\n NextScript,\n} from 'next/document'\nimport { KeyUtils } from 'slate'\nimport { ServerStyleSheet } from 'styled-components'\nimport { PreviewModeScript } from './preview-mode'\n\nexport class Document extends NextDocument {\n static async getInitialProps(ctx: DocumentContext): Promise<DocumentInitialProps> {\n const sheet = new ServerStyleSheet()\n const originalRenderPage = ctx.renderPage\n\n try {\n ctx.renderPage = () =>\n originalRenderPage({\n enhanceApp: App => props => sheet.collectStyles(<App {...props} />),\n })\n\n const initialProps = await NextDocument.getInitialProps(ctx)\n\n KeyUtils.resetGenerator()\n\n const { extractCritical } = createEmotionServer(cache)\n const { ids, css } = extractCritical(initialProps.html)\n\n return {\n ...initialProps,\n styles: (\n <>\n {initialProps.styles}\n {sheet.getStyleElement()}\n <style\n data-emotion={`css ${ids.join(' ')}`}\n dangerouslySetInnerHTML={{ __html: css }}\n />\n </>\n ),\n }\n } finally {\n sheet.seal()\n }\n }\n\n render() {\n const { isPreview } = this.props.__NEXT_DATA__\n\n return (\n <Html>\n <Head>\n <PreviewModeScript isPreview={isPreview} />\n </Head>\n <body>\n <Main />\n <NextScript />\n </body>\n </Html>\n )\n }\n}\n","import { CookieSerializeOptions, serialize } from 'cookie'\nimport Cors from 'cors'\nimport { createProxyServer } from 'http-proxy'\nimport { NextApiHandler } from 'next'\nimport { parse } from 'set-cookie-parser'\nimport { version } from '../../package.json'\n\ntype MakeswiftApiHandlerConfig = {\n appOrigin?: string\n}\n\nexport function MakeswiftApiHandler(\n apiKey: string,\n { appOrigin = 'https://app.makeswift.com' }: MakeswiftApiHandlerConfig = {},\n): NextApiHandler {\n const cors = Cors({ origin: appOrigin })\n const previewModeProxy = createProxyServer()\n\n previewModeProxy.on('proxyReq', proxyReq => {\n proxyReq.removeHeader('X-Makeswift-Preview-Mode')\n\n const url = new URL(proxyReq.path, 'http://n')\n\n url.searchParams.delete('x-makeswift-preview-mode')\n\n proxyReq.path = url.pathname + url.search\n })\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 return async function makeswiftApiHandler(req, res) {\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 const { makeswift } = req.query\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 action = makeswift.join('/')\n\n switch (action) {\n case 'manifest': {\n if (req.query.secret !== apiKey) return res.status(401).json({ message: 'Unauthorized' })\n\n return res.json({\n version,\n previewMode: true,\n })\n }\n\n case 'revalidate': {\n if (req.query.secret !== apiKey) {\n return res.status(401).json({ message: 'Unauthorized' })\n }\n\n if (typeof req.query.path !== 'string') {\n return res.status(400).json({ message: 'Bad Request' })\n }\n\n const revalidate = res.revalidate ?? res.unstable_revalidate\n\n if (typeof revalidate !== 'function') {\n const message =\n `Cannot revalidate path \"${req.query.path}\" because \\`revalidate\\` function does not exist in API handler response. ` +\n 'Please update to Next.js v12.2.0 or higher for support for on-demand revalidation.\\n' +\n 'Read more here: https://nextjs.org/blog/next-12-2#on-demand-incremental-static-regeneration-stable'\n\n console.warn(message)\n\n return res.json({ revalidated: false })\n }\n\n try {\n await revalidate(req.query.path)\n\n return res.json({ revalidated: true })\n } catch (error) {\n return res.status(500).json({ message: 'Error Revalidating' })\n }\n }\n\n case 'proxy-preview-mode': {\n if (req.query.secret !== apiKey) return res.status(401).send('Unauthorized')\n\n const host = req.headers.host\n\n if (host == null) return res.status(400).send('Bad Request')\n\n const forwardedProto = req.headers['x-forwarded-proto']\n\n const proto = typeof forwardedProto === 'string' ? forwardedProto : 'http'\n let target = `${proto}://${host}`\n\n // During local development we want to use the local Next.js address for proxying. The\n // reason we want to do this is that the user might be using a local SSL proxy to deal with\n // mixed content browser limitations. If the user generates a locally-trusted CA for their\n // SSL cert, it's likely that Node.js won't trust this CA unless they used the\n // `NODE_EXTRA_CA_CERTS` option (see https://stackoverflow.com/a/68135600). To provide a\n // better developer experience, instead of requiring the user to provide the CA to Node.js,\n // we just proxy directly to the running Next.js process.\n if (process.env['NODE_ENV'] !== 'production') {\n const port = req.socket.localPort\n\n if (port != null) target = `http://localhost:${port}`\n }\n\n const setCookie = res.setPreviewData({ makeswift: true }).getHeader('Set-Cookie')\n res.removeHeader('Set-Cookie')\n\n if (!Array.isArray(setCookie)) return res.status(500).send('Internal Server Error')\n\n const cookie = parse(setCookie)\n .map(cookie => serialize(cookie.name, cookie.value, cookie as CookieSerializeOptions))\n .join(';')\n\n return await new Promise<void>((resolve, reject) =>\n previewModeProxy.web(req, res, { target, headers: { cookie } }, err => {\n if (err) reject(err)\n else resolve()\n }),\n )\n }\n\n default:\n return res.status(404).json({ message: 'Not Found' })\n }\n }\n}\n","import { useEffect, useState } from 'react'\n\nimport { RuntimeProvider } from '../runtimes/react'\nimport { Page as PageMeta } from '../components/page'\nimport { MakeswiftClient } from '../api/react'\nimport { MakeswiftPageSnapshot } from './client'\n\nexport { MakeswiftClient }\n\nexport type PageProps = {\n snapshot: MakeswiftPageSnapshot\n}\n\nimport {\n GetServerSidePropsContext,\n GetServerSidePropsResult,\n GetStaticPathsResult,\n GetStaticPropsContext,\n GetStaticPropsResult,\n} from 'next'\nimport { Makeswift } from './client'\nimport { MakeswiftPreviewData } from './preview-mode'\n\nfunction getApiOrigin(): string {\n const apiOriginString = process['env'].MAKESWIFT_API_HOST ?? 'https://api.makeswift.com'\n\n try {\n const url = new URL(apiOriginString)\n\n return url.origin\n } catch (error) {\n const errorMessage =\n '\"MAKESWIFT_API_HOST\" environment variable must be a valid URL. ' +\n `Expected something like \"https://api.makeswift.com\" but instead received \"${apiOriginString}\".`\n\n throw new Error(errorMessage)\n }\n}\n\nconst uuidRegExp =\n /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/\n\nfunction getApiKey(): string {\n const apiKey = process['env'].MAKESWIFT_SITE_API_KEY\n\n if (apiKey == null) {\n const errorMessage =\n '\"MAKESWIFT_SITE_API_KEY\" environment variable must be set. ' +\n 'Please add your site API key to your `.env.local` file. ' +\n 'More info: https://www.makeswift.com/docs/guides/manual-setup#add-environment-variables'\n\n throw new Error(errorMessage)\n }\n\n if (!uuidRegExp.test(apiKey)) {\n const errorMEssage =\n `Invalid Makeswift site API key \"${apiKey}\". ` +\n 'Please check your `.env.local` file for the \"MAKESWIFT_SITE_API_KEY\" environment variable. ' +\n 'More info: https://www.makeswift.com/docs/guides/manual-setup#add-environment-variables'\n\n throw new Error(errorMEssage)\n }\n\n return apiKey\n}\n\ntype ParsedUrlQuery = { path?: string[] }\n\nfunction deprecationWarning(methodName: string): void {\n const warningMessage =\n `The \\`${methodName}\\` export has been deprecated and will be removed in the next minor version. ` +\n 'More info: https://github.com/makeswift/makeswift/releases/tag/%40makeswift%2Fruntime%400.2.0'\n\n if (process.env['NODE_ENV'] !== 'production') console.warn(warningMessage)\n}\n\nexport async function getStaticPaths(): Promise<GetStaticPathsResult<ParsedUrlQuery>> {\n deprecationWarning('getStaticPaths')\n\n const makeswift = new Makeswift(getApiKey(), { apiOrigin: getApiOrigin() })\n const pages = await makeswift.getPages()\n\n return {\n paths: pages.map(page => ({\n params: { path: page.path.split('/').filter(segment => segment !== '') },\n })),\n fallback: 'blocking',\n }\n}\n\nconst REVALIDATE_SECONDS = 1\n\nexport async function getStaticProps(\n ctx: GetStaticPropsContext<ParsedUrlQuery, MakeswiftPreviewData>,\n): Promise<GetStaticPropsResult<PageProps>> {\n deprecationWarning('getStaticProps')\n\n const makeswift = new Makeswift(getApiKey(), { apiOrigin: getApiOrigin() })\n const path = '/' + (ctx.params?.path ?? []).join('/')\n const snapshot = await makeswift.getPageSnapshot(path, {\n preview: ctx.previewData?.makeswift === true,\n })\n\n if (snapshot == null) return { notFound: true, revalidate: REVALIDATE_SECONDS }\n\n return { props: { snapshot }, revalidate: REVALIDATE_SECONDS }\n}\n\nexport async function getServerSideProps(\n ctx: GetServerSidePropsContext<{ path?: string[] }>,\n): Promise<GetServerSidePropsResult<PageProps>> {\n deprecationWarning('getServerSideProps')\n\n const makeswift = new Makeswift(getApiKey(), { apiOrigin: getApiOrigin() })\n const path = '/' + (ctx.params?.path ?? []).join('/')\n const snapshot = await makeswift.getPageSnapshot(path, { preview: true })\n\n if (snapshot == null) return { notFound: true }\n\n return { props: { snapshot } }\n}\n\nexport function Page({ snapshot }: PageProps) {\n const [client] = useState(\n () =>\n new MakeswiftClient({\n uri: new URL('graphql', snapshot.apiOrigin).href,\n cacheData: snapshot.cacheData,\n }),\n )\n\n useEffect(() => {\n client.updateCacheData(snapshot.cacheData)\n }, [client, snapshot])\n\n return (\n <RuntimeProvider\n client={client}\n rootElements={new Map([[snapshot.document.id, snapshot.document.data]])}\n >\n <PageMeta document={snapshot.document} />\n </RuntimeProvider>\n )\n}\n\nexport * from './client'\nexport * from './preview-mode'\nexport * from './document'\nexport * from './api-handler'\nexport * from './dynamic'\n"],"names":["isPreview","appOrigin","__html","replace","Document","NextDocument","getInitialProps","ctx","sheet","ServerStyleSheet","originalRenderPage","renderPage","enhanceApp","App","props","collectStyles","initialProps","KeyUtils","resetGenerator","extractCritical","createEmotionServer","cache","ids","css","html","styles","_Fragment","getStyleElement","join","seal","render","__NEXT_DATA__","_jsx","_jsxs","apiOriginString","process","MAKESWIFT_API_HOST","url","URL","origin","error","errorMessage","Error","uuidRegExp","apiKey","MAKESWIFT_SITE_API_KEY","test","errorMEssage","methodName","warningMessage","env","console","warn","deprecationWarning","makeswift","Makeswift","getApiKey","apiOrigin","getApiOrigin","pages","getPages","paths","map","page","params","path","split","filter","segment","fallback","REVALIDATE_SECONDS","snapshot","getPageSnapshot","preview","previewData","notFound","revalidate","client","useState","MakeswiftClient","uri","href","cacheData","useEffect","updateCacheData","Map","document","id","data","PageMeta"],"mappings":"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"}
1
+ {"version":3,"file":"next.es.js","sources":["../src/next/client.ts","../src/next/preview-mode.tsx","../src/next/document.tsx","../src/next/api-handler.ts","../src/next/index.tsx"],"sourcesContent":["import { NormalizedCacheObject } from '@apollo/client'\nimport { MakeswiftClient } from '../api/react'\nimport { Element } from '../state/react-page'\n\nexport type MakeswiftPage = {\n id: string\n path: string\n}\n\nexport type MakeswiftPageDocument = {\n id: string\n site: { id: string }\n data: Element\n snippets: {\n id: string\n code: string\n location: 'HEAD' | 'BODY'\n liveEnabled: boolean\n builderEnabled: boolean\n cleanup: string | null\n }[]\n fonts: { family: string; variants: string[] }[]\n 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 }\n seo: {\n canonicalUrl: string | null\n isIndexingBlocked: boolean | null\n }\n}\n\nexport type MakeswiftPageSnapshot = {\n document: MakeswiftPageDocument\n apiOrigin: string\n cacheData: NormalizedCacheObject\n}\n\ntype MakeswiftConfig = {\n apiOrigin?: string\n}\n\nexport class Makeswift {\n private apiKey: string\n private apiOrigin: URL\n\n constructor(apiKey: string, { apiOrigin = 'https://api.makeswift.com' }: MakeswiftConfig = {}) {\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\n private async fetch(path: string, init?: RequestInit): Promise<Response> {\n const response = await fetch(new URL(path, this.apiOrigin).toString(), {\n ...init,\n headers: { ...init?.headers, ['X-API-Key']: this.apiKey },\n })\n\n return response\n }\n\n async getPages(params: { path?: string } = {}): Promise<MakeswiftPage[]> {\n const searchParams = new URLSearchParams(params)\n const response = await this.fetch(`/v1/pages?${searchParams}`)\n\n if (!response.ok) {\n throw new Error(`Failed to get pages with error: \"${response.statusText}\"`)\n }\n\n const json = await response.json()\n\n return json\n }\n\n private async createSnapshot(document: MakeswiftPageDocument): Promise<MakeswiftPageSnapshot> {\n const client = new MakeswiftClient({ uri: new URL('graphql', this.apiOrigin).href })\n const cacheData = await client.prefetch(document.data)\n\n return { document, apiOrigin: this.apiOrigin.href, cacheData }\n }\n\n private async getPageSnapshotByPageId(\n pageId: string,\n { preview = false }: { preview?: boolean } = {},\n ): Promise<MakeswiftPageSnapshot | null> {\n const searchParams = new URLSearchParams({ preview: String(preview) })\n const response = await this.fetch(`/v1/pages/${pageId}/document?${searchParams}`)\n\n if (!response.ok) {\n if (response.status === 404) return null\n\n throw new Error(`Failed to get snapshot with error: \"${response.statusText}\"`)\n }\n\n const document: MakeswiftPageDocument = await response.json()\n\n return await this.createSnapshot(document)\n }\n\n async getPageSnapshot(\n path: string,\n { preview }: { preview?: boolean } = {},\n ): Promise<MakeswiftPageSnapshot | null> {\n const [page] = await this.getPages({ path })\n\n if (page == null) return null\n\n const snapshot = this.getPageSnapshotByPageId(page.id, { preview })\n\n return snapshot\n }\n}\n","type Props = {\n isPreview?: boolean\n appOrigin?: string\n}\n\nexport function PreviewModeScript({\n isPreview = false,\n appOrigin = 'https://app.makeswift.com',\n}: Props) {\n const __html = `\nconst isPreview = ${isPreview}\nconst appOrigin = '${appOrigin.replace(\"'\", \"\\\\'\")}'\nconst searchParamName = 'x-makeswift-preview-mode'\nconst headerName = 'X-Makeswift-Preview-Mode'\nconst originalUrl = new URL(window.location.href)\n\nif (window.parent !== window) {\n window.addEventListener('message', event => {\n if (event.origin === appOrigin && event.data.type === 'makeswift_preview_mode') {\n const { secret } = event.data\n\n if (!isPreview && !originalUrl.searchParams.has(searchParamName)) {\n const url = new URL(originalUrl)\n\n url.searchParams.set(searchParamName, secret)\n\n window.location.replace(url)\n } else {\n const originalFetch = window.fetch\n\n window.fetch = function patchedFetch(input, init) {\n return originalFetch.call(this, input, {\n ...init,\n headers: { ...init?.headers, [headerName]: secret },\n })\n }\n }\n }\n })\n\n window.parent.postMessage({ type: 'makeswift_preview_mode' }, appOrigin)\n}\n\nif (originalUrl.searchParams.has(searchParamName)) {\n const url = new URL(originalUrl)\n\n url.searchParams.delete(searchParamName)\n\n window.history.replaceState(null, '', url)\n}\n`\n\n return <script id=\"makeswift-preview-mode\" type=\"module\" dangerouslySetInnerHTML={{ __html }} />\n}\n\nexport type MakeswiftPreviewData = { makeswift: true }\n","import { cache } from '@emotion/css'\nimport createEmotionServer from '@emotion/server/create-instance'\nimport NextDocument, {\n DocumentContext,\n DocumentInitialProps,\n Head,\n Html,\n Main,\n NextScript,\n} from 'next/document'\nimport { KeyUtils } from 'slate'\nimport { ServerStyleSheet } from 'styled-components'\nimport { PreviewModeScript } from './preview-mode'\n\nexport class Document extends NextDocument {\n static async getInitialProps(ctx: DocumentContext): Promise<DocumentInitialProps> {\n const sheet = new ServerStyleSheet()\n const originalRenderPage = ctx.renderPage\n\n try {\n ctx.renderPage = () =>\n originalRenderPage({\n enhanceApp: App => props => sheet.collectStyles(<App {...props} />),\n })\n\n const initialProps = await NextDocument.getInitialProps(ctx)\n\n KeyUtils.resetGenerator()\n\n const { extractCritical } = createEmotionServer(cache)\n const { ids, css } = extractCritical(initialProps.html)\n\n return {\n ...initialProps,\n styles: (\n <>\n {initialProps.styles}\n {sheet.getStyleElement()}\n <style\n data-emotion={`css ${ids.join(' ')}`}\n dangerouslySetInnerHTML={{ __html: css }}\n />\n </>\n ),\n }\n } finally {\n sheet.seal()\n }\n }\n\n render() {\n const { isPreview } = this.props.__NEXT_DATA__\n\n return (\n <Html>\n <Head>\n <PreviewModeScript isPreview={isPreview} />\n </Head>\n <body>\n <Main />\n <NextScript />\n </body>\n </Html>\n )\n }\n}\n","import { CookieSerializeOptions, serialize } from 'cookie'\nimport Cors from 'cors'\nimport { createProxyServer } from 'http-proxy'\nimport { NextApiHandler } from 'next'\nimport { parse } from 'set-cookie-parser'\nimport { version } from '../../package.json'\n\ntype Fonts = Font[]\n\ntype Font = {\n family: string\n variants: FontVariant[]\n}\n\ntype FontVariant = { weight: string; style: 'italic' | 'normal'; src?: string }\n\ntype MakeswiftApiHandlerConfig = {\n appOrigin?: string\n getFonts?: () => Fonts | Promise<Fonts>\n}\n\nexport type MakeswiftApiHandlerErrorResponse = { message: string }\nexport type MakeswiftApiHandlerRevalidateErrorResponse = string\nexport type MakeswiftApiHandlerRevalidateResponse = { revalidated: boolean }\nexport type MakeswiftApiHandlerManifestResponse = { version: string; previewMode: boolean }\nexport type MakeswiftApiHandlerFontsResponse = Fonts\n\nexport type MakeswiftApiHandlerResponse =\n | MakeswiftApiHandlerErrorResponse\n | MakeswiftApiHandlerRevalidateErrorResponse\n | MakeswiftApiHandlerRevalidateResponse\n | MakeswiftApiHandlerManifestResponse\n | MakeswiftApiHandlerFontsResponse\n\nexport function MakeswiftApiHandler(\n apiKey: string,\n { appOrigin = 'https://app.makeswift.com', getFonts }: MakeswiftApiHandlerConfig = {},\n): NextApiHandler<MakeswiftApiHandlerResponse> {\n const cors = Cors({ origin: appOrigin })\n const previewModeProxy = createProxyServer()\n\n previewModeProxy.on('proxyReq', (proxyReq, req) => {\n proxyReq.removeHeader('X-Makeswift-Preview-Mode')\n\n const url = new URL(proxyReq.path, 'http://n')\n\n url.searchParams.delete('x-makeswift-preview-mode')\n\n proxyReq.path = url.pathname + url.search\n\n console.log(\n JSON.stringify(\n {\n proxyReq: {\n headers: proxyReq.getHeaders(),\n host: proxyReq.host,\n method: proxyReq.method,\n path: proxyReq.path,\n },\n req: {\n headers: req.headers,\n httpVersion: req.httpVersion,\n method: req.method,\n url: req.url,\n },\n },\n null,\n 2,\n ),\n )\n })\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 return async function makeswiftApiHandler(req, res) {\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 const { makeswift } = req.query\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 action = makeswift.join('/')\n\n switch (action) {\n case 'manifest': {\n if (req.query.secret !== apiKey) return res.status(401).json({ message: 'Unauthorized' })\n\n return res.json({\n version,\n previewMode: true,\n })\n }\n\n case 'revalidate': {\n if (req.query.secret !== apiKey) {\n return res.status(401).json({ message: 'Unauthorized' })\n }\n\n if (typeof req.query.path !== 'string') {\n return res.status(400).json({ message: 'Bad Request' })\n }\n\n const revalidate = res.revalidate ?? res.unstable_revalidate\n\n if (typeof revalidate !== 'function') {\n const message =\n `Cannot revalidate path \"${req.query.path}\" because \\`revalidate\\` function does not exist in API handler response. ` +\n 'Please update to Next.js v12.2.0 or higher for support for on-demand revalidation.\\n' +\n 'Read more here: https://nextjs.org/blog/next-12-2#on-demand-incremental-static-regeneration-stable'\n\n console.warn(message)\n\n return res.json({ revalidated: false })\n }\n\n try {\n await revalidate(req.query.path)\n\n return res.json({ revalidated: true })\n } catch (error) {\n return res.status(500).json({ message: 'Error Revalidating' })\n }\n }\n\n case 'proxy-preview-mode': {\n if (req.query.secret !== apiKey) return res.status(401).send('Unauthorized')\n\n const host = req.headers.host\n\n if (host == null) return res.status(400).send('Bad Request')\n\n const forwardedProto = req.headers['x-forwarded-proto']\n\n const proto = typeof forwardedProto === 'string' ? forwardedProto : 'http'\n let target = `${proto}://${host}`\n\n // During local development we want to use the local Next.js address for proxying. The\n // reason we want to do this is that the user might be using a local SSL proxy to deal with\n // mixed content browser limitations. If the user generates a locally-trusted CA for their\n // SSL cert, it's likely that Node.js won't trust this CA unless they used the\n // `NODE_EXTRA_CA_CERTS` option (see https://stackoverflow.com/a/68135600). To provide a\n // better developer experience, instead of requiring the user to provide the CA to Node.js,\n // we just proxy directly to the running Next.js process.\n if (process.env['NODE_ENV'] !== 'production') {\n const port = req.socket.localPort\n\n if (port != null) target = `http://localhost:${port}`\n }\n\n const setCookie = res.setPreviewData({ makeswift: true }).getHeader('Set-Cookie')\n res.removeHeader('Set-Cookie')\n\n if (!Array.isArray(setCookie)) return res.status(500).send('Internal Server Error')\n\n const cookie = parse(setCookie)\n .map(cookie => serialize(cookie.name, cookie.value, cookie as CookieSerializeOptions))\n .join(';')\n\n console.log(\n JSON.stringify(\n {\n req: {\n headers: req.headers,\n httpVersion: req.httpVersion,\n method: req.method,\n url: req.url,\n query: req.query,\n target,\n cookie,\n },\n },\n null,\n 2,\n ),\n )\n\n return await new Promise<void>((resolve, reject) =>\n previewModeProxy.web(\n req,\n res,\n { target, headers: { cookie }, followRedirects: true },\n err => {\n if (err) reject(err)\n else resolve()\n },\n ),\n )\n }\n\n case 'fonts': {\n const fonts = (await getFonts?.()) ?? []\n return res.json(fonts)\n }\n\n default:\n return res.status(404).json({ message: 'Not Found' })\n }\n }\n}\n","import { useEffect, useState } from 'react'\n\nimport { RuntimeProvider } from '../runtimes/react'\nimport { Page as PageMeta } from '../components/page'\nimport { MakeswiftClient } from '../api/react'\nimport { MakeswiftPageSnapshot } from './client'\n\nexport { MakeswiftClient }\n\nexport type PageProps = {\n snapshot: MakeswiftPageSnapshot\n}\n\nimport {\n GetServerSidePropsContext,\n GetServerSidePropsResult,\n GetStaticPathsResult,\n GetStaticPropsContext,\n GetStaticPropsResult,\n} from 'next'\nimport { Makeswift } from './client'\nimport { MakeswiftPreviewData } from './preview-mode'\n\nfunction getApiOrigin(): string {\n const apiOriginString = process['env'].MAKESWIFT_API_HOST ?? 'https://api.makeswift.com'\n\n try {\n const url = new URL(apiOriginString)\n\n return url.origin\n } catch (error) {\n const errorMessage =\n '\"MAKESWIFT_API_HOST\" environment variable must be a valid URL. ' +\n `Expected something like \"https://api.makeswift.com\" but instead received \"${apiOriginString}\".`\n\n throw new Error(errorMessage)\n }\n}\n\nconst uuidRegExp =\n /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/\n\nfunction getApiKey(): string {\n const apiKey = process['env'].MAKESWIFT_SITE_API_KEY\n\n if (apiKey == null) {\n const errorMessage =\n '\"MAKESWIFT_SITE_API_KEY\" environment variable must be set. ' +\n 'Please add your site API key to your `.env.local` file. ' +\n 'More info: https://www.makeswift.com/docs/guides/manual-setup#add-environment-variables'\n\n throw new Error(errorMessage)\n }\n\n if (!uuidRegExp.test(apiKey)) {\n const errorMEssage =\n `Invalid Makeswift site API key \"${apiKey}\". ` +\n 'Please check your `.env.local` file for the \"MAKESWIFT_SITE_API_KEY\" environment variable. ' +\n 'More info: https://www.makeswift.com/docs/guides/manual-setup#add-environment-variables'\n\n throw new Error(errorMEssage)\n }\n\n return apiKey\n}\n\ntype ParsedUrlQuery = { path?: string[] }\n\nfunction deprecationWarning(methodName: string): void {\n const warningMessage =\n `The \\`${methodName}\\` export has been deprecated and will be removed in the next minor version. ` +\n 'More info: https://github.com/makeswift/makeswift/releases/tag/%40makeswift%2Fruntime%400.2.0'\n\n if (process.env['NODE_ENV'] !== 'production') console.warn(warningMessage)\n}\n\nexport async function getStaticPaths(): Promise<GetStaticPathsResult<ParsedUrlQuery>> {\n deprecationWarning('getStaticPaths')\n\n const makeswift = new Makeswift(getApiKey(), { apiOrigin: getApiOrigin() })\n const pages = await makeswift.getPages()\n\n return {\n paths: pages.map(page => ({\n params: { path: page.path.split('/').filter(segment => segment !== '') },\n })),\n fallback: 'blocking',\n }\n}\n\nconst REVALIDATE_SECONDS = 1\n\nexport async function getStaticProps(\n ctx: GetStaticPropsContext<ParsedUrlQuery, MakeswiftPreviewData>,\n): Promise<GetStaticPropsResult<PageProps>> {\n deprecationWarning('getStaticProps')\n\n const makeswift = new Makeswift(getApiKey(), { apiOrigin: getApiOrigin() })\n const path = '/' + (ctx.params?.path ?? []).join('/')\n const snapshot = await makeswift.getPageSnapshot(path, {\n preview: ctx.previewData?.makeswift === true,\n })\n\n if (snapshot == null) return { notFound: true, revalidate: REVALIDATE_SECONDS }\n\n return { props: { snapshot }, revalidate: REVALIDATE_SECONDS }\n}\n\nexport async function getServerSideProps(\n ctx: GetServerSidePropsContext<{ path?: string[] }>,\n): Promise<GetServerSidePropsResult<PageProps>> {\n deprecationWarning('getServerSideProps')\n\n const makeswift = new Makeswift(getApiKey(), { apiOrigin: getApiOrigin() })\n const path = '/' + (ctx.params?.path ?? []).join('/')\n const snapshot = await makeswift.getPageSnapshot(path, { preview: true })\n\n if (snapshot == null) return { notFound: true }\n\n return { props: { snapshot } }\n}\n\nexport function Page({ snapshot }: PageProps) {\n const [client] = useState(\n () =>\n new MakeswiftClient({\n uri: new URL('graphql', snapshot.apiOrigin).href,\n cacheData: snapshot.cacheData,\n }),\n )\n\n useEffect(() => {\n client.updateCacheData(snapshot.cacheData)\n }, [client, snapshot])\n\n return (\n <RuntimeProvider\n client={client}\n rootElements={new Map([[snapshot.document.id, snapshot.document.data]])}\n >\n <PageMeta document={snapshot.document} />\n </RuntimeProvider>\n )\n}\n\nexport * from './client'\nexport * from './preview-mode'\nexport * from './document'\nexport * from './api-handler'\nexport * from './dynamic'\n"],"names":["isPreview","appOrigin","__html","replace","Document","NextDocument","getInitialProps","ctx","sheet","ServerStyleSheet","originalRenderPage","renderPage","enhanceApp","App","props","collectStyles","initialProps","KeyUtils","resetGenerator","extractCritical","createEmotionServer","cache","ids","css","html","styles","_Fragment","getStyleElement","join","seal","render","__NEXT_DATA__","_jsx","_jsxs","apiOriginString","process","MAKESWIFT_API_HOST","url","URL","origin","error","errorMessage","Error","uuidRegExp","apiKey","MAKESWIFT_SITE_API_KEY","test","errorMEssage","methodName","warningMessage","env","console","warn","deprecationWarning","makeswift","Makeswift","getApiKey","apiOrigin","getApiOrigin","pages","getPages","paths","map","page","params","path","split","filter","segment","fallback","REVALIDATE_SECONDS","snapshot","getPageSnapshot","preview","previewData","notFound","revalidate","client","useState","MakeswiftClient","uri","href","cacheData","useEffect","updateCacheData","Map","document","id","data","PageMeta"],"mappings":"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"}
@@ -1,7 +1,31 @@
1
1
  import { NextApiHandler } from 'next';
2
+ declare type Fonts = Font[];
3
+ declare type Font = {
4
+ family: string;
5
+ variants: FontVariant[];
6
+ };
7
+ declare type FontVariant = {
8
+ weight: string;
9
+ style: 'italic' | 'normal';
10
+ src?: string;
11
+ };
2
12
  declare type MakeswiftApiHandlerConfig = {
3
13
  appOrigin?: string;
14
+ getFonts?: () => Fonts | Promise<Fonts>;
15
+ };
16
+ export declare type MakeswiftApiHandlerErrorResponse = {
17
+ message: string;
18
+ };
19
+ export declare type MakeswiftApiHandlerRevalidateErrorResponse = string;
20
+ export declare type MakeswiftApiHandlerRevalidateResponse = {
21
+ revalidated: boolean;
22
+ };
23
+ export declare type MakeswiftApiHandlerManifestResponse = {
24
+ version: string;
25
+ previewMode: boolean;
4
26
  };
5
- export declare function MakeswiftApiHandler(apiKey: string, { appOrigin }?: MakeswiftApiHandlerConfig): NextApiHandler;
27
+ export declare type MakeswiftApiHandlerFontsResponse = Fonts;
28
+ export declare type MakeswiftApiHandlerResponse = MakeswiftApiHandlerErrorResponse | MakeswiftApiHandlerRevalidateErrorResponse | MakeswiftApiHandlerRevalidateResponse | MakeswiftApiHandlerManifestResponse | MakeswiftApiHandlerFontsResponse;
29
+ export declare function MakeswiftApiHandler(apiKey: string, { appOrigin, getFonts }?: MakeswiftApiHandlerConfig): NextApiHandler<MakeswiftApiHandlerResponse>;
6
30
  export {};
7
31
  //# sourceMappingURL=api-handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api-handler.d.ts","sourceRoot":"","sources":["../../../../src/next/api-handler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,MAAM,CAAA;AAIrC,aAAK,yBAAyB,GAAG;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,EAAE,SAAuC,EAAE,GAAE,yBAA8B,GAC1E,cAAc,CAiIhB"}
1
+ {"version":3,"file":"api-handler.d.ts","sourceRoot":"","sources":["../../../../src/next/api-handler.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,MAAM,CAAA;AAIrC,aAAK,KAAK,GAAG,IAAI,EAAE,CAAA;AAEnB,aAAK,IAAI,GAAG;IACV,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,WAAW,EAAE,CAAA;CACxB,CAAA;AAED,aAAK,WAAW,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAE/E,aAAK,yBAAyB,GAAG;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;CACxC,CAAA;AAED,oBAAY,gCAAgC,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAClE,oBAAY,0CAA0C,GAAG,MAAM,CAAA;AAC/D,oBAAY,qCAAqC,GAAG;IAAE,WAAW,EAAE,OAAO,CAAA;CAAE,CAAA;AAC5E,oBAAY,mCAAmC,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAAA;AAC3F,oBAAY,gCAAgC,GAAG,KAAK,CAAA;AAEpD,oBAAY,2BAA2B,GACnC,gCAAgC,GAChC,0CAA0C,GAC1C,qCAAqC,GACrC,mCAAmC,GACnC,gCAAgC,CAAA;AAEpC,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,EAAE,SAAuC,EAAE,QAAQ,EAAE,GAAE,yBAA8B,GACpF,cAAc,CAAC,2BAA2B,CAAC,CAkL7C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@makeswift/runtime",
3
- "version": "0.0.0-20221011211555",
3
+ "version": "0.0.0-20221020182013",
4
4
  "license": "MIT",
5
5
  "main": "dist/main.cjs",
6
6
  "module": "dist/main.es",