@prismicio/next 2.3.2 → 2.3.3-canary.6920973
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/PrismicNextImage.cjs +6 -5
- package/dist/PrismicNextImage.cjs.map +1 -1
- package/dist/PrismicNextImage.d.cts +5 -4
- package/dist/PrismicNextImage.d.cts.map +1 -1
- package/dist/PrismicNextImage.d.ts +5 -4
- package/dist/PrismicNextImage.d.ts.map +1 -1
- package/dist/PrismicNextImage.js +5 -4
- package/dist/PrismicNextImage.js.map +1 -1
- package/dist/PrismicNextLink.cjs +3 -2
- package/dist/PrismicNextLink.cjs.map +1 -1
- package/dist/PrismicNextLink.d.cts +8 -11
- package/dist/PrismicNextLink.d.cts.map +1 -1
- package/dist/PrismicNextLink.d.ts +7 -10
- package/dist/PrismicNextLink.d.ts.map +1 -1
- package/dist/PrismicNextLink.js +2 -1
- package/dist/PrismicNextLink.js.map +1 -1
- package/dist/PrismicPreview.cjs +2 -2
- package/dist/PrismicPreview.cjs.map +1 -1
- package/dist/PrismicPreview.d.cts +2 -2
- package/dist/PrismicPreview.d.cts.map +1 -1
- package/dist/PrismicPreview.d.ts +2 -2
- package/dist/PrismicPreview.d.ts.map +1 -1
- package/dist/PrismicPreview.js +1 -1
- package/dist/PrismicPreview.js.map +1 -1
- package/dist/PrismicPreviewClient.cjs +18 -13
- package/dist/PrismicPreviewClient.cjs.map +1 -1
- package/dist/PrismicPreviewClient.js +18 -12
- package/dist/PrismicPreviewClient.js.map +1 -1
- package/dist/SliceSimulator.cjs +3 -2
- package/dist/SliceSimulator.cjs.map +1 -1
- package/dist/SliceSimulator.d.cts +0 -1
- package/dist/SliceSimulator.d.cts.map +1 -1
- package/dist/SliceSimulator.d.ts +0 -1
- package/dist/SliceSimulator.d.ts.map +1 -1
- package/dist/SliceSimulator.js +2 -1
- package/dist/SliceSimulator.js.map +1 -1
- package/dist/SliceSimulatorWrapper.cjs +0 -1
- package/dist/SliceSimulatorWrapper.cjs.map +1 -1
- package/dist/SliceSimulatorWrapper.js.map +1 -1
- package/dist/_virtual/_rolldown/runtime.cjs +1 -1
- package/dist/cacheTagPrismicPages.cjs +1 -1
- package/dist/cacheTagPrismicPages.cjs.map +1 -1
- package/dist/cacheTagPrismicPages.d.cts +0 -1
- package/dist/cacheTagPrismicPages.d.cts.map +1 -1
- package/dist/cacheTagPrismicPages.d.ts +0 -1
- package/dist/cacheTagPrismicPages.d.ts.map +1 -1
- package/dist/cacheTagPrismicPages.js.map +1 -1
- package/dist/createLocaleRedirect.cjs.map +1 -1
- package/dist/createLocaleRedirect.d.cts.map +1 -1
- package/dist/createLocaleRedirect.d.ts.map +1 -1
- package/dist/createLocaleRedirect.js.map +1 -1
- package/dist/enableAutoPreviews.cjs.map +1 -1
- package/dist/enableAutoPreviews.d.cts +2 -2
- package/dist/enableAutoPreviews.d.cts.map +1 -1
- package/dist/enableAutoPreviews.d.ts +2 -2
- package/dist/enableAutoPreviews.d.ts.map +1 -1
- package/dist/enableAutoPreviews.js.map +1 -1
- package/dist/exitPreview.cjs +12 -4
- package/dist/exitPreview.cjs.map +1 -1
- package/dist/exitPreview.d.cts.map +1 -1
- package/dist/exitPreview.d.ts.map +1 -1
- package/dist/exitPreview.js +12 -3
- package/dist/exitPreview.js.map +1 -1
- package/dist/getPreviewRef.cjs +1 -2
- package/dist/getPreviewRef.cjs.map +1 -1
- package/dist/getPreviewRef.d.cts.map +1 -1
- package/dist/getPreviewRef.d.ts.map +1 -1
- package/dist/getPreviewRef.js +1 -1
- package/dist/getPreviewRef.js.map +1 -1
- package/dist/getPrismicCacheTags.cjs +4 -2
- package/dist/getPrismicCacheTags.cjs.map +1 -1
- package/dist/getPrismicCacheTags.d.cts +0 -1
- package/dist/getPrismicCacheTags.d.cts.map +1 -1
- package/dist/getPrismicCacheTags.d.ts +0 -1
- package/dist/getPrismicCacheTags.d.ts.map +1 -1
- package/dist/getPrismicCacheTags.js +4 -2
- package/dist/getPrismicCacheTags.js.map +1 -1
- package/dist/getSlices.cjs +1 -1
- package/dist/getSlices.cjs.map +1 -1
- package/dist/getSlices.d.cts +0 -1
- package/dist/getSlices.d.cts.map +1 -1
- package/dist/getSlices.d.ts +0 -1
- package/dist/getSlices.d.ts.map +1 -1
- package/dist/getSlices.js.map +1 -1
- package/dist/imgixLoader.cjs +0 -1
- package/dist/imgixLoader.cjs.map +1 -1
- package/dist/imgixLoader.d.cts +0 -1
- package/dist/imgixLoader.d.cts.map +1 -1
- package/dist/imgixLoader.d.ts +0 -1
- package/dist/imgixLoader.d.ts.map +1 -1
- package/dist/imgixLoader.js.map +1 -1
- package/dist/lib/devMsg.cjs.map +1 -1
- package/dist/lib/devMsg.js.map +1 -1
- package/dist/lib/resolveDefaultExport.cjs.map +1 -1
- package/dist/lib/resolveDefaultExport.js.map +1 -1
- package/dist/package.cjs +1 -1
- package/dist/package.js +1 -1
- package/dist/pages/PrismicPreview.cjs +1 -1
- package/dist/pages/PrismicPreview.cjs.map +1 -1
- package/dist/pages/PrismicPreview.d.cts +2 -2
- package/dist/pages/PrismicPreview.d.cts.map +1 -1
- package/dist/pages/PrismicPreview.d.ts +2 -2
- package/dist/pages/PrismicPreview.d.ts.map +1 -1
- package/dist/pages/PrismicPreview.js.map +1 -1
- package/dist/pages/SliceSimulator.cjs +0 -1
- package/dist/pages/SliceSimulator.cjs.map +1 -1
- package/dist/pages/SliceSimulator.d.cts +0 -1
- package/dist/pages/SliceSimulator.d.cts.map +1 -1
- package/dist/pages/SliceSimulator.d.ts +0 -1
- package/dist/pages/SliceSimulator.d.ts.map +1 -1
- package/dist/pages/SliceSimulator.js.map +1 -1
- package/dist/pages/enableAutoPreviews.cjs.map +1 -1
- package/dist/pages/enableAutoPreviews.d.cts +2 -2
- package/dist/pages/enableAutoPreviews.d.cts.map +1 -1
- package/dist/pages/enableAutoPreviews.d.ts +2 -2
- package/dist/pages/enableAutoPreviews.d.ts.map +1 -1
- package/dist/pages/enableAutoPreviews.js.map +1 -1
- package/dist/pages/exitPreview.cjs.map +1 -1
- package/dist/pages/exitPreview.d.cts +0 -1
- package/dist/pages/exitPreview.d.cts.map +1 -1
- package/dist/pages/exitPreview.d.ts +0 -1
- package/dist/pages/exitPreview.d.ts.map +1 -1
- package/dist/pages/exitPreview.js.map +1 -1
- package/dist/pages/redirectToPreviewURL.cjs.map +1 -1
- package/dist/pages/redirectToPreviewURL.d.cts +2 -2
- package/dist/pages/redirectToPreviewURL.d.cts.map +1 -1
- package/dist/pages/redirectToPreviewURL.d.ts +2 -2
- package/dist/pages/redirectToPreviewURL.d.ts.map +1 -1
- package/dist/pages/redirectToPreviewURL.js.map +1 -1
- package/dist/pages/setPreviewData.cjs +0 -1
- package/dist/pages/setPreviewData.cjs.map +1 -1
- package/dist/pages/setPreviewData.d.cts +1 -5
- package/dist/pages/setPreviewData.d.cts.map +1 -1
- package/dist/pages/setPreviewData.d.ts +1 -5
- package/dist/pages/setPreviewData.d.ts.map +1 -1
- package/dist/pages/setPreviewData.js.map +1 -1
- package/dist/pages/types.d.cts +0 -1
- package/dist/pages/types.d.cts.map +1 -1
- package/dist/pages/types.d.ts +0 -1
- package/dist/pages/types.d.ts.map +1 -1
- package/dist/redirectToPreviewURL.cjs +11 -2
- package/dist/redirectToPreviewURL.cjs.map +1 -1
- package/dist/redirectToPreviewURL.d.cts +2 -2
- package/dist/redirectToPreviewURL.d.cts.map +1 -1
- package/dist/redirectToPreviewURL.d.ts +2 -2
- package/dist/redirectToPreviewURL.d.ts.map +1 -1
- package/dist/redirectToPreviewURL.js +11 -1
- package/dist/redirectToPreviewURL.js.map +1 -1
- package/dist/revalidatePrismicPages.cjs +4 -2
- package/dist/revalidatePrismicPages.cjs.map +1 -1
- package/dist/revalidatePrismicPages.d.cts.map +1 -1
- package/dist/revalidatePrismicPages.d.ts.map +1 -1
- package/dist/revalidatePrismicPages.js +4 -1
- package/dist/revalidatePrismicPages.js.map +1 -1
- package/dist/types.d.cts +0 -1
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.ts +0 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +15 -15
- package/src/PrismicNextImage.tsx +5 -5
- package/src/PrismicNextLink.tsx +2 -2
- package/src/PrismicPreview.tsx +2 -2
- package/src/PrismicPreviewClient.tsx +26 -11
- package/src/exitPreview.ts +4 -6
- package/src/getPreviewRef.ts +3 -2
- package/src/redirectToPreviewURL.ts +10 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redirectToPreviewURL.cjs","names":[],"sources":["../../src/pages/redirectToPreviewURL.ts"],"sourcesContent":["import type { LinkResolverFunction, Client } from \"@prismicio/client\"\n\nimport type { NextApiRequestLike, NextApiResponseLike } from \"./types\"\n\nexport type RedirectToPreviewURLConfig = {\n\t/** The Prismic client configured for the preview session's repository. */\n\t// `Pick` is used to use the smallest possible subset of\n\t// `prismic.Client`. Doing this reduces the surface area for breaking\n\t// type changes.\n\tclient: Pick<Client, \"resolvePreviewURL\">\n\n\t/**\n\t * The `req` object from a Next.js API route.\n\t *\n\t * @see Next.js API route docs: \\<https://nextjs.org/docs/pages/building-your-application/routing/api-routes\\>\n\t */\n\treq: NextApiRequestLike\n\n\t/**\n\t * The `res` object from a Next.js API route.\n\t *\n\t * @see Next.js API route docs: \\<https://nextjs.org/docs/pages/building-your-application/routing/api-routes\\>\n\t */\n\tres: NextApiResponseLike\n\n\t/**\n\t * A Link Resolver used to resolve the previewed document's URL.\n\t *\n\t * @see To learn more about Link Resolver: {@link https://prismic.io/docs/core-concepts/link-resolver-route-resolver}\n\t */\n\tlinkResolver?: LinkResolverFunction\n\n\t/**\n\t * The default redirect URL if a URL cannot be determined for the previewed document.\n\t *\n\t * **Note**: If you `next.config.js` file contains a `basePath`, the `defaultURL` option must\n\t * _not_ include it. Instead, provide the `basePath` property using the `basePath` option.\n\t */\n\tdefaultURL?: string\n\n\t/**\n\t * The `basePath` for the Next.js app as it is defined in `next.config.js`. This option can be\n\t * omitted if the app does not have a `basePath`.\n\t *\n\t * @remarks\n\t * The Router Handler or API route is unable to detect the app's `basePath` automatically. It\n\t * must be provided to `redirectToPreviewURL()` manually.\n\t */\n\tbasePath?: string\n}\n\nexport async function redirectToPreviewURL(config: RedirectToPreviewURLConfig): Promise<void> {\n\tconst { client, req, res, linkResolver, defaultURL = \"/\", basePath = \"\" } = config\n\n\tconst previewToken = req.query.token?.toString()\n\n\tconst previewURL = await client.resolvePreviewURL({\n\t\tlinkResolver,\n\t\tdefaultURL,\n\t\tpreviewToken,\n\t})\n\n\tres.redirect(basePath + previewURL)\n\n\treturn\n}\n"],"mappings":";AAmDA,eAAsB,qBAAqB,QAAmD;CAC7F,MAAM,EAAE,QAAQ,KAAK,KAAK,cAAc,aAAa,KAAK,WAAW,OAAO;CAE5E,MAAM,eAAe,IAAI,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"redirectToPreviewURL.cjs","names":[],"sources":["../../src/pages/redirectToPreviewURL.ts"],"sourcesContent":["import type { LinkResolverFunction, Client } from \"@prismicio/client\"\n\nimport type { NextApiRequestLike, NextApiResponseLike } from \"./types\"\n\nexport type RedirectToPreviewURLConfig = {\n\t/** The Prismic client configured for the preview session's repository. */\n\t// `Pick` is used to use the smallest possible subset of\n\t// `prismic.Client`. Doing this reduces the surface area for breaking\n\t// type changes.\n\tclient: Pick<Client, \"resolvePreviewURL\">\n\n\t/**\n\t * The `req` object from a Next.js API route.\n\t *\n\t * @see Next.js API route docs: \\<https://nextjs.org/docs/pages/building-your-application/routing/api-routes\\>\n\t */\n\treq: NextApiRequestLike\n\n\t/**\n\t * The `res` object from a Next.js API route.\n\t *\n\t * @see Next.js API route docs: \\<https://nextjs.org/docs/pages/building-your-application/routing/api-routes\\>\n\t */\n\tres: NextApiResponseLike\n\n\t/**\n\t * A Link Resolver used to resolve the previewed document's URL.\n\t *\n\t * @see To learn more about Link Resolver: {@link https://prismic.io/docs/core-concepts/link-resolver-route-resolver}\n\t */\n\tlinkResolver?: LinkResolverFunction\n\n\t/**\n\t * The default redirect URL if a URL cannot be determined for the previewed document.\n\t *\n\t * **Note**: If you `next.config.js` file contains a `basePath`, the `defaultURL` option must\n\t * _not_ include it. Instead, provide the `basePath` property using the `basePath` option.\n\t */\n\tdefaultURL?: string\n\n\t/**\n\t * The `basePath` for the Next.js app as it is defined in `next.config.js`. This option can be\n\t * omitted if the app does not have a `basePath`.\n\t *\n\t * @remarks\n\t * The Router Handler or API route is unable to detect the app's `basePath` automatically. It\n\t * must be provided to `redirectToPreviewURL()` manually.\n\t */\n\tbasePath?: string\n}\n\nexport async function redirectToPreviewURL(config: RedirectToPreviewURLConfig): Promise<void> {\n\tconst { client, req, res, linkResolver, defaultURL = \"/\", basePath = \"\" } = config\n\n\tconst previewToken = req.query.token?.toString()\n\n\tconst previewURL = await client.resolvePreviewURL({\n\t\tlinkResolver,\n\t\tdefaultURL,\n\t\tpreviewToken,\n\t})\n\n\tres.redirect(basePath + previewURL)\n\n\treturn\n}\n"],"mappings":";AAmDA,eAAsB,qBAAqB,QAAmD;CAC7F,MAAM,EAAE,QAAQ,KAAK,KAAK,cAAc,aAAa,KAAK,WAAW,OAAO;CAE5E,MAAM,eAAe,IAAI,MAAM,OAAO,SAAS;CAE/C,MAAM,aAAa,MAAM,OAAO,kBAAkB;EACjD;EACA;EACA;CACD,CAAC;CAED,IAAI,SAAS,WAAW,UAAU;AAGnC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { NextApiRequestLike, NextApiResponseLike } from "./types.cjs";
|
|
2
2
|
import { Client, LinkResolverFunction } from "@prismicio/client";
|
|
3
|
-
|
|
4
3
|
//#region src/pages/redirectToPreviewURL.d.ts
|
|
5
4
|
type RedirectToPreviewURLConfig = {
|
|
6
|
-
/** The Prismic client configured for the preview session's repository. */
|
|
5
|
+
/** The Prismic client configured for the preview session's repository. */
|
|
6
|
+
client: Pick<Client, "resolvePreviewURL">;
|
|
7
7
|
/**
|
|
8
8
|
* The `req` object from a Next.js API route.
|
|
9
9
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redirectToPreviewURL.d.cts","names":[],"sources":["../../src/pages/redirectToPreviewURL.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"redirectToPreviewURL.d.cts","names":[],"sources":["../../src/pages/redirectToPreviewURL.ts"],"mappings":";;;KAIY;;EAKX,QAAQ,KAAK;;;;;;EAOb,KAAK;;;;;;EAOL,KAAK;;;;;;EAOL,eAAe;;;;;;;EAQf;;;;;;;;;EAUA;;iBAGqB,qBAAqB,QAAQ,6BAA6B"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { NextApiRequestLike, NextApiResponseLike } from "./types.js";
|
|
2
2
|
import { Client, LinkResolverFunction } from "@prismicio/client";
|
|
3
|
-
|
|
4
3
|
//#region src/pages/redirectToPreviewURL.d.ts
|
|
5
4
|
type RedirectToPreviewURLConfig = {
|
|
6
|
-
/** The Prismic client configured for the preview session's repository. */
|
|
5
|
+
/** The Prismic client configured for the preview session's repository. */
|
|
6
|
+
client: Pick<Client, "resolvePreviewURL">;
|
|
7
7
|
/**
|
|
8
8
|
* The `req` object from a Next.js API route.
|
|
9
9
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redirectToPreviewURL.d.ts","names":[],"sources":["../../src/pages/redirectToPreviewURL.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"redirectToPreviewURL.d.ts","names":[],"sources":["../../src/pages/redirectToPreviewURL.ts"],"mappings":";;;KAIY;;EAKX,QAAQ,KAAK;;;;;;EAOb,KAAK;;;;;;EAOL,KAAK;;;;;;EAOL,eAAe;;;;;;;EAQf;;;;;;;;;EAUA;;iBAGqB,qBAAqB,QAAQ,6BAA6B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redirectToPreviewURL.js","names":[],"sources":["../../src/pages/redirectToPreviewURL.ts"],"sourcesContent":["import type { LinkResolverFunction, Client } from \"@prismicio/client\"\n\nimport type { NextApiRequestLike, NextApiResponseLike } from \"./types\"\n\nexport type RedirectToPreviewURLConfig = {\n\t/** The Prismic client configured for the preview session's repository. */\n\t// `Pick` is used to use the smallest possible subset of\n\t// `prismic.Client`. Doing this reduces the surface area for breaking\n\t// type changes.\n\tclient: Pick<Client, \"resolvePreviewURL\">\n\n\t/**\n\t * The `req` object from a Next.js API route.\n\t *\n\t * @see Next.js API route docs: \\<https://nextjs.org/docs/pages/building-your-application/routing/api-routes\\>\n\t */\n\treq: NextApiRequestLike\n\n\t/**\n\t * The `res` object from a Next.js API route.\n\t *\n\t * @see Next.js API route docs: \\<https://nextjs.org/docs/pages/building-your-application/routing/api-routes\\>\n\t */\n\tres: NextApiResponseLike\n\n\t/**\n\t * A Link Resolver used to resolve the previewed document's URL.\n\t *\n\t * @see To learn more about Link Resolver: {@link https://prismic.io/docs/core-concepts/link-resolver-route-resolver}\n\t */\n\tlinkResolver?: LinkResolverFunction\n\n\t/**\n\t * The default redirect URL if a URL cannot be determined for the previewed document.\n\t *\n\t * **Note**: If you `next.config.js` file contains a `basePath`, the `defaultURL` option must\n\t * _not_ include it. Instead, provide the `basePath` property using the `basePath` option.\n\t */\n\tdefaultURL?: string\n\n\t/**\n\t * The `basePath` for the Next.js app as it is defined in `next.config.js`. This option can be\n\t * omitted if the app does not have a `basePath`.\n\t *\n\t * @remarks\n\t * The Router Handler or API route is unable to detect the app's `basePath` automatically. It\n\t * must be provided to `redirectToPreviewURL()` manually.\n\t */\n\tbasePath?: string\n}\n\nexport async function redirectToPreviewURL(config: RedirectToPreviewURLConfig): Promise<void> {\n\tconst { client, req, res, linkResolver, defaultURL = \"/\", basePath = \"\" } = config\n\n\tconst previewToken = req.query.token?.toString()\n\n\tconst previewURL = await client.resolvePreviewURL({\n\t\tlinkResolver,\n\t\tdefaultURL,\n\t\tpreviewToken,\n\t})\n\n\tres.redirect(basePath + previewURL)\n\n\treturn\n}\n"],"mappings":";AAmDA,eAAsB,qBAAqB,QAAmD;CAC7F,MAAM,EAAE,QAAQ,KAAK,KAAK,cAAc,aAAa,KAAK,WAAW,OAAO;CAE5E,MAAM,eAAe,IAAI,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"redirectToPreviewURL.js","names":[],"sources":["../../src/pages/redirectToPreviewURL.ts"],"sourcesContent":["import type { LinkResolverFunction, Client } from \"@prismicio/client\"\n\nimport type { NextApiRequestLike, NextApiResponseLike } from \"./types\"\n\nexport type RedirectToPreviewURLConfig = {\n\t/** The Prismic client configured for the preview session's repository. */\n\t// `Pick` is used to use the smallest possible subset of\n\t// `prismic.Client`. Doing this reduces the surface area for breaking\n\t// type changes.\n\tclient: Pick<Client, \"resolvePreviewURL\">\n\n\t/**\n\t * The `req` object from a Next.js API route.\n\t *\n\t * @see Next.js API route docs: \\<https://nextjs.org/docs/pages/building-your-application/routing/api-routes\\>\n\t */\n\treq: NextApiRequestLike\n\n\t/**\n\t * The `res` object from a Next.js API route.\n\t *\n\t * @see Next.js API route docs: \\<https://nextjs.org/docs/pages/building-your-application/routing/api-routes\\>\n\t */\n\tres: NextApiResponseLike\n\n\t/**\n\t * A Link Resolver used to resolve the previewed document's URL.\n\t *\n\t * @see To learn more about Link Resolver: {@link https://prismic.io/docs/core-concepts/link-resolver-route-resolver}\n\t */\n\tlinkResolver?: LinkResolverFunction\n\n\t/**\n\t * The default redirect URL if a URL cannot be determined for the previewed document.\n\t *\n\t * **Note**: If you `next.config.js` file contains a `basePath`, the `defaultURL` option must\n\t * _not_ include it. Instead, provide the `basePath` property using the `basePath` option.\n\t */\n\tdefaultURL?: string\n\n\t/**\n\t * The `basePath` for the Next.js app as it is defined in `next.config.js`. This option can be\n\t * omitted if the app does not have a `basePath`.\n\t *\n\t * @remarks\n\t * The Router Handler or API route is unable to detect the app's `basePath` automatically. It\n\t * must be provided to `redirectToPreviewURL()` manually.\n\t */\n\tbasePath?: string\n}\n\nexport async function redirectToPreviewURL(config: RedirectToPreviewURLConfig): Promise<void> {\n\tconst { client, req, res, linkResolver, defaultURL = \"/\", basePath = \"\" } = config\n\n\tconst previewToken = req.query.token?.toString()\n\n\tconst previewURL = await client.resolvePreviewURL({\n\t\tlinkResolver,\n\t\tdefaultURL,\n\t\tpreviewToken,\n\t})\n\n\tres.redirect(basePath + previewURL)\n\n\treturn\n}\n"],"mappings":";AAmDA,eAAsB,qBAAqB,QAAmD;CAC7F,MAAM,EAAE,QAAQ,KAAK,KAAK,cAAc,aAAa,KAAK,WAAW,OAAO;CAE5E,MAAM,eAAe,IAAI,MAAM,OAAO,SAAS;CAE/C,MAAM,aAAa,MAAM,OAAO,kBAAkB;EACjD;EACA;EACA;CACD,CAAC;CAED,IAAI,SAAS,WAAW,UAAU;AAGnC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setPreviewData.cjs","names":["cookie"],"sources":["../../src/pages/setPreviewData.ts"],"sourcesContent":["import { cookie } from \"@prismicio/client\"\n\nimport type { NextApiRequestLike, NextApiResponseLike } from \"./types\"\n\n/** Configuration for `setPreviewData`. */\nexport type SetPreviewDataConfig = {\n\t/**\n\t * The `req` object from a Next.js API route.\n\t *\n\t * @see Next.js API route docs: \\<https://nextjs.org/docs/api-routes/introduction\\>\n\t */\n\treq: NextApiRequestLike\n\n\t/**\n\t * The `res` object from a Next.js API route.\n\t *\n\t * @see Next.js API route docs: \\<https://nextjs.org/docs/api-routes/introduction\\>\n\t */\n\tres: NextApiResponseLike\n}\n\n/** Set Prismic preview data for Next.js's Preview Mode. */\nexport function setPreviewData({ req, res }: SetPreviewDataConfig): void {\n\tconst ref = req.query.token || req.cookies[cookie.preview]\n\n\tif (ref) {\n\t\tres.setPreviewData({ ref })\n\t}\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"setPreviewData.cjs","names":["cookie"],"sources":["../../src/pages/setPreviewData.ts"],"sourcesContent":["import { cookie } from \"@prismicio/client\"\n\nimport type { NextApiRequestLike, NextApiResponseLike } from \"./types\"\n\n/** Configuration for `setPreviewData`. */\nexport type SetPreviewDataConfig = {\n\t/**\n\t * The `req` object from a Next.js API route.\n\t *\n\t * @see Next.js API route docs: \\<https://nextjs.org/docs/api-routes/introduction\\>\n\t */\n\treq: NextApiRequestLike\n\n\t/**\n\t * The `res` object from a Next.js API route.\n\t *\n\t * @see Next.js API route docs: \\<https://nextjs.org/docs/api-routes/introduction\\>\n\t */\n\tres: NextApiResponseLike\n}\n\n/** Set Prismic preview data for Next.js's Preview Mode. */\nexport function setPreviewData({ req, res }: SetPreviewDataConfig): void {\n\tconst ref = req.query.token || req.cookies[cookie.preview]\n\n\tif (ref) {\n\t\tres.setPreviewData({ ref })\n\t}\n}\n"],"mappings":";;;AAsBA,SAAgB,eAAe,EAAE,KAAK,OAAmC;CACxE,MAAM,MAAM,IAAI,MAAM,SAAS,IAAI,QAAQA,kBAAAA,OAAO;CAElD,IAAI,KACH,IAAI,eAAe,EAAE,IAAI,CAAC;AAE5B"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { NextApiRequestLike, NextApiResponseLike } from "./types.cjs";
|
|
2
|
-
|
|
3
2
|
//#region src/pages/setPreviewData.d.ts
|
|
4
3
|
/** Configuration for `setPreviewData`. */
|
|
5
4
|
type SetPreviewDataConfig = {
|
|
@@ -17,10 +16,7 @@ type SetPreviewDataConfig = {
|
|
|
17
16
|
res: NextApiResponseLike;
|
|
18
17
|
};
|
|
19
18
|
/** Set Prismic preview data for Next.js's Preview Mode. */
|
|
20
|
-
declare function setPreviewData({
|
|
21
|
-
req,
|
|
22
|
-
res
|
|
23
|
-
}: SetPreviewDataConfig): void;
|
|
19
|
+
declare function setPreviewData({ req, res }: SetPreviewDataConfig): void;
|
|
24
20
|
//#endregion
|
|
25
21
|
export { SetPreviewDataConfig, setPreviewData };
|
|
26
22
|
//# sourceMappingURL=setPreviewData.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setPreviewData.d.cts","names":[],"sources":["../../src/pages/setPreviewData.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"setPreviewData.d.cts","names":[],"sources":["../../src/pages/setPreviewData.ts"],"mappings":";;;KAKY;;;;;;EAMX,KAAK;;;;;;EAOL,KAAK;;;iBAIU,iBAAiB,KAAK,OAAO"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { NextApiRequestLike, NextApiResponseLike } from "./types.js";
|
|
2
|
-
|
|
3
2
|
//#region src/pages/setPreviewData.d.ts
|
|
4
3
|
/** Configuration for `setPreviewData`. */
|
|
5
4
|
type SetPreviewDataConfig = {
|
|
@@ -17,10 +16,7 @@ type SetPreviewDataConfig = {
|
|
|
17
16
|
res: NextApiResponseLike;
|
|
18
17
|
};
|
|
19
18
|
/** Set Prismic preview data for Next.js's Preview Mode. */
|
|
20
|
-
declare function setPreviewData({
|
|
21
|
-
req,
|
|
22
|
-
res
|
|
23
|
-
}: SetPreviewDataConfig): void;
|
|
19
|
+
declare function setPreviewData({ req, res }: SetPreviewDataConfig): void;
|
|
24
20
|
//#endregion
|
|
25
21
|
export { SetPreviewDataConfig, setPreviewData };
|
|
26
22
|
//# sourceMappingURL=setPreviewData.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setPreviewData.d.ts","names":[],"sources":["../../src/pages/setPreviewData.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"setPreviewData.d.ts","names":[],"sources":["../../src/pages/setPreviewData.ts"],"mappings":";;;KAKY;;;;;;EAMX,KAAK;;;;;;EAOL,KAAK;;;iBAIU,iBAAiB,KAAK,OAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setPreviewData.js","names":[],"sources":["../../src/pages/setPreviewData.ts"],"sourcesContent":["import { cookie } from \"@prismicio/client\"\n\nimport type { NextApiRequestLike, NextApiResponseLike } from \"./types\"\n\n/** Configuration for `setPreviewData`. */\nexport type SetPreviewDataConfig = {\n\t/**\n\t * The `req` object from a Next.js API route.\n\t *\n\t * @see Next.js API route docs: \\<https://nextjs.org/docs/api-routes/introduction\\>\n\t */\n\treq: NextApiRequestLike\n\n\t/**\n\t * The `res` object from a Next.js API route.\n\t *\n\t * @see Next.js API route docs: \\<https://nextjs.org/docs/api-routes/introduction\\>\n\t */\n\tres: NextApiResponseLike\n}\n\n/** Set Prismic preview data for Next.js's Preview Mode. */\nexport function setPreviewData({ req, res }: SetPreviewDataConfig): void {\n\tconst ref = req.query.token || req.cookies[cookie.preview]\n\n\tif (ref) {\n\t\tres.setPreviewData({ ref })\n\t}\n}\n"],"mappings":";;;AAsBA,SAAgB,eAAe,EAAE,KAAK,OAAmC;CACxE,MAAM,MAAM,IAAI,MAAM,SAAS,IAAI,QAAQ,OAAO;
|
|
1
|
+
{"version":3,"file":"setPreviewData.js","names":[],"sources":["../../src/pages/setPreviewData.ts"],"sourcesContent":["import { cookie } from \"@prismicio/client\"\n\nimport type { NextApiRequestLike, NextApiResponseLike } from \"./types\"\n\n/** Configuration for `setPreviewData`. */\nexport type SetPreviewDataConfig = {\n\t/**\n\t * The `req` object from a Next.js API route.\n\t *\n\t * @see Next.js API route docs: \\<https://nextjs.org/docs/api-routes/introduction\\>\n\t */\n\treq: NextApiRequestLike\n\n\t/**\n\t * The `res` object from a Next.js API route.\n\t *\n\t * @see Next.js API route docs: \\<https://nextjs.org/docs/api-routes/introduction\\>\n\t */\n\tres: NextApiResponseLike\n}\n\n/** Set Prismic preview data for Next.js's Preview Mode. */\nexport function setPreviewData({ req, res }: SetPreviewDataConfig): void {\n\tconst ref = req.query.token || req.cookies[cookie.preview]\n\n\tif (ref) {\n\t\tres.setPreviewData({ ref })\n\t}\n}\n"],"mappings":";;;AAsBA,SAAgB,eAAe,EAAE,KAAK,OAAmC;CACxE,MAAM,MAAM,IAAI,MAAM,SAAS,IAAI,QAAQ,OAAO;CAElD,IAAI,KACH,IAAI,eAAe,EAAE,IAAI,CAAC;AAE5B"}
|
package/dist/pages/types.d.cts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { EnableAutoPreviewsConfig } from "./enableAutoPreviews.cjs";
|
|
2
2
|
import { ClientConfig } from "@prismicio/client";
|
|
3
|
-
|
|
4
3
|
//#region src/pages/types.d.ts
|
|
5
4
|
/** Configuration for creating a Prismic client with automatic preview support in Next.js apps. */
|
|
6
5
|
type CreateClientConfig = ClientConfig & Pick<EnableAutoPreviewsConfig, "previewData" | "req">;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.cts","names":[],"sources":["../../src/pages/types.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.cts","names":[],"sources":["../../src/pages/types.ts"],"mappings":";;;;KAKY,qBAAqB,eAChC,KAAK;;;;;;KAOM;EACX,OAAO,QAAQ;EACf,SAAS,QAAQ;;;;;;;KAQN;EACX,SAAS,cAAc;EACvB,oBAAoB;EACpB,UAAU,cAAc,2BAA2B;EAEnD,KAAK;EACL,eAAe,wBAAwB"}
|
package/dist/pages/types.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { EnableAutoPreviewsConfig } from "./enableAutoPreviews.js";
|
|
2
2
|
import { ClientConfig } from "@prismicio/client";
|
|
3
|
-
|
|
4
3
|
//#region src/pages/types.d.ts
|
|
5
4
|
/** Configuration for creating a Prismic client with automatic preview support in Next.js apps. */
|
|
6
5
|
type CreateClientConfig = ClientConfig & Pick<EnableAutoPreviewsConfig, "previewData" | "req">;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","names":[],"sources":["../../src/pages/types.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../../src/pages/types.ts"],"mappings":";;;;KAKY,qBAAqB,eAChC,KAAK;;;;;;KAOM;EACX,OAAO,QAAQ;EACf,SAAS,QAAQ;;;;;;;KAQN;EACX,SAAS,cAAc;EACvB,oBAAoB;EACpB,UAAU,cAAc,2BAA2B;EAEnD,KAAK;EACL,eAAe,wBAAwB"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
require("./_virtual/_rolldown/runtime.cjs");
|
|
2
1
|
let _prismicio_client = require("@prismicio/client");
|
|
3
2
|
//#region src/redirectToPreviewURL.ts
|
|
4
3
|
async function redirectToPreviewURL(config) {
|
|
@@ -6,8 +5,12 @@ async function redirectToPreviewURL(config) {
|
|
|
6
5
|
const { cookies, draftMode } = await import("next/headers.js");
|
|
7
6
|
const { redirect } = await import("next/navigation");
|
|
8
7
|
const documentID = request.nextUrl.searchParams.get("documentId") ?? void 0;
|
|
8
|
+
const cookieJar = await cookies();
|
|
9
9
|
const previewToken = request.nextUrl.searchParams.get("token") ?? void 0;
|
|
10
|
-
if (previewToken)
|
|
10
|
+
if (previewToken) cookieJar.set(_prismicio_client.cookie.preview, previewToken, {
|
|
11
|
+
sameSite: "none",
|
|
12
|
+
secure: true
|
|
13
|
+
});
|
|
11
14
|
const previewURL = await client.resolvePreviewURL({
|
|
12
15
|
documentID,
|
|
13
16
|
previewToken,
|
|
@@ -15,6 +18,12 @@ async function redirectToPreviewURL(config) {
|
|
|
15
18
|
linkResolver
|
|
16
19
|
});
|
|
17
20
|
(await draftMode()).enable();
|
|
21
|
+
cookieJar.set({
|
|
22
|
+
...cookieJar.get("__prerender_bypass"),
|
|
23
|
+
httpOnly: true,
|
|
24
|
+
sameSite: "none",
|
|
25
|
+
secure: true
|
|
26
|
+
});
|
|
18
27
|
return redirect(previewURL);
|
|
19
28
|
}
|
|
20
29
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redirectToPreviewURL.cjs","names":["prismicCookie"],"sources":["../src/redirectToPreviewURL.ts"],"sourcesContent":["import { cookie as prismicCookie, type Client, type LinkResolverFunction } from \"@prismicio/client\"\n\nimport type { NextRequestLike } from \"./types\"\n\nexport type RedirectToPreviewURLConfig = {\n\t/** The Prismic client configured for the preview session's repository. */\n\t// `Pick` is used to use the smallest possible subset of\n\t// `prismic.Client`. Doing this reduces the surface area for breaking\n\t// type changes.\n\tclient: Pick<Client, \"resolvePreviewURL\">\n\n\t/**\n\t * The `request` object from a Next.js Route Handler.\n\t *\n\t * @see Next.js Route Handler docs: \\<https://nextjs.org/docs/app/building-your-application/routing/route-handlers\\>\n\t */\n\trequest: NextRequestLike\n\n\t/**\n\t * A Link Resolver used to resolve the previewed document's URL.\n\t *\n\t * @see To learn more about Link Resolver: {@link https://prismic.io/docs/core-concepts/link-resolver-route-resolver}\n\t */\n\tlinkResolver?: LinkResolverFunction\n\n\t/**\n\t * The default redirect URL if a URL cannot be determined for the previewed document.\n\t *\n\t * **Note**: If you `next.config.js` file contains a `basePath`, the `defaultURL` option must\n\t * _not_ include it. Instead, provide the `basePath` property using the `basePath` option.\n\t */\n\tdefaultURL?: string\n}\n\nexport async function redirectToPreviewURL(config: RedirectToPreviewURLConfig): Promise<never> {\n\tconst { client, request, linkResolver, defaultURL = \"/\" } = config\n\n\t// Need this to avoid the following Next.js build-time error:\n\t// You're importing a component that needs next/headers. That only works\n\t// in a Server Component which is not supported in the pages/ directory.\n\tconst { cookies, draftMode } = await import(\"next/headers\")\n\n\t// Dynamic so Node.js can load this module: the bare specifier (kept by\n\t// tsdown.config.ts for Next.js's server alias) is not resolvable by Node.js.\n\tconst { redirect } = await import(\"next/navigation\")\n\n\tconst documentID = request.nextUrl.searchParams.get(\"documentId\") ?? undefined\n\n\t// Set the initial preview cookie. Setting the cookie here is necessary\n\t// to support unpublished previews. Without setting it here, the page\n\t// will try to render without the preview cookie, leading to a\n\t// PrismicNotFound error.\n\tconst previewToken = request.nextUrl.searchParams.get(\"token\") ?? undefined\n\tif (previewToken) {\n\t\
|
|
1
|
+
{"version":3,"file":"redirectToPreviewURL.cjs","names":["prismicCookie"],"sources":["../src/redirectToPreviewURL.ts"],"sourcesContent":["import { cookie as prismicCookie, type Client, type LinkResolverFunction } from \"@prismicio/client\"\n\nimport type { NextRequestLike } from \"./types\"\n\nexport type RedirectToPreviewURLConfig = {\n\t/** The Prismic client configured for the preview session's repository. */\n\t// `Pick` is used to use the smallest possible subset of\n\t// `prismic.Client`. Doing this reduces the surface area for breaking\n\t// type changes.\n\tclient: Pick<Client, \"resolvePreviewURL\">\n\n\t/**\n\t * The `request` object from a Next.js Route Handler.\n\t *\n\t * @see Next.js Route Handler docs: \\<https://nextjs.org/docs/app/building-your-application/routing/route-handlers\\>\n\t */\n\trequest: NextRequestLike\n\n\t/**\n\t * A Link Resolver used to resolve the previewed document's URL.\n\t *\n\t * @see To learn more about Link Resolver: {@link https://prismic.io/docs/core-concepts/link-resolver-route-resolver}\n\t */\n\tlinkResolver?: LinkResolverFunction\n\n\t/**\n\t * The default redirect URL if a URL cannot be determined for the previewed document.\n\t *\n\t * **Note**: If you `next.config.js` file contains a `basePath`, the `defaultURL` option must\n\t * _not_ include it. Instead, provide the `basePath` property using the `basePath` option.\n\t */\n\tdefaultURL?: string\n}\n\nexport async function redirectToPreviewURL(config: RedirectToPreviewURLConfig): Promise<never> {\n\tconst { client, request, linkResolver, defaultURL = \"/\" } = config\n\n\t// Need this to avoid the following Next.js build-time error:\n\t// You're importing a component that needs next/headers. That only works\n\t// in a Server Component which is not supported in the pages/ directory.\n\tconst { cookies, draftMode } = await import(\"next/headers\")\n\n\t// Dynamic so Node.js can load this module: the bare specifier (kept by\n\t// tsdown.config.ts for Next.js's server alias) is not resolvable by Node.js.\n\tconst { redirect } = await import(\"next/navigation\")\n\n\tconst documentID = request.nextUrl.searchParams.get(\"documentId\") ?? undefined\n\n\t// Set the initial preview cookie. Setting the cookie here is necessary\n\t// to support unpublished previews. Without setting it here, the page\n\t// will try to render without the preview cookie, leading to a\n\t// PrismicNotFound error.\n\tconst cookieJar = await cookies()\n\tconst previewToken = request.nextUrl.searchParams.get(\"token\") ?? undefined\n\tif (previewToken) {\n\t\tcookieJar.set(prismicCookie.preview, previewToken, { sameSite: \"none\", secure: true })\n\t}\n\n\tconst previewURL = await client.resolvePreviewURL({\n\t\tdocumentID,\n\t\tpreviewToken,\n\t\tdefaultURL,\n\t\tlinkResolver,\n\t})\n\n\t;(await draftMode()).enable()\n\n\t// Next.js uses `SameSite=Lax` in development, which cross-site iframes drop.\n\tcookieJar.set({\n\t\t...cookieJar.get(\"__prerender_bypass\")!,\n\t\thttpOnly: true,\n\t\tsameSite: \"none\",\n\t\tsecure: true,\n\t})\n\n\treturn redirect(previewURL)\n}\n"],"mappings":";;AAkCA,eAAsB,qBAAqB,QAAoD;CAC9F,MAAM,EAAE,QAAQ,SAAS,cAAc,aAAa,QAAQ;CAK5D,MAAM,EAAE,SAAS,cAAc,MAAM,OAAO;CAI5C,MAAM,EAAE,aAAa,MAAM,OAAO;CAElC,MAAM,aAAa,QAAQ,QAAQ,aAAa,IAAI,YAAY,KAAK,KAAA;CAMrE,MAAM,YAAY,MAAM,QAAQ;CAChC,MAAM,eAAe,QAAQ,QAAQ,aAAa,IAAI,OAAO,KAAK,KAAA;CAClE,IAAI,cACH,UAAU,IAAIA,kBAAAA,OAAc,SAAS,cAAc;EAAE,UAAU;EAAQ,QAAQ;CAAK,CAAC;CAGtF,MAAM,aAAa,MAAM,OAAO,kBAAkB;EACjD;EACA;EACA;EACA;CACD,CAAC;CAEA,CAAC,MAAM,UAAU,EAAA,CAAG,OAAO;CAG5B,UAAU,IAAI;EACb,GAAG,UAAU,IAAI,oBAAoB;EACrC,UAAU;EACV,UAAU;EACV,QAAQ;CACT,CAAC;CAED,OAAO,SAAS,UAAU;AAC3B"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { NextRequestLike } from "./types.cjs";
|
|
2
2
|
import { Client, LinkResolverFunction } from "@prismicio/client";
|
|
3
|
-
|
|
4
3
|
//#region src/redirectToPreviewURL.d.ts
|
|
5
4
|
type RedirectToPreviewURLConfig = {
|
|
6
|
-
/** The Prismic client configured for the preview session's repository. */
|
|
5
|
+
/** The Prismic client configured for the preview session's repository. */
|
|
6
|
+
client: Pick<Client, "resolvePreviewURL">;
|
|
7
7
|
/**
|
|
8
8
|
* The `request` object from a Next.js Route Handler.
|
|
9
9
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redirectToPreviewURL.d.cts","names":[],"sources":["../src/redirectToPreviewURL.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"redirectToPreviewURL.d.cts","names":[],"sources":["../src/redirectToPreviewURL.ts"],"mappings":";;;KAIY;;EAKX,QAAQ,KAAK;;;;;;EAOb,SAAS;;;;;;EAOT,eAAe;;;;;;;EAQf;;iBAGqB,qBAAqB,QAAQ,6BAA6B"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { NextRequestLike } from "./types.js";
|
|
2
2
|
import { Client, LinkResolverFunction } from "@prismicio/client";
|
|
3
|
-
|
|
4
3
|
//#region src/redirectToPreviewURL.d.ts
|
|
5
4
|
type RedirectToPreviewURLConfig = {
|
|
6
|
-
/** The Prismic client configured for the preview session's repository. */
|
|
5
|
+
/** The Prismic client configured for the preview session's repository. */
|
|
6
|
+
client: Pick<Client, "resolvePreviewURL">;
|
|
7
7
|
/**
|
|
8
8
|
* The `request` object from a Next.js Route Handler.
|
|
9
9
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redirectToPreviewURL.d.ts","names":[],"sources":["../src/redirectToPreviewURL.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"redirectToPreviewURL.d.ts","names":[],"sources":["../src/redirectToPreviewURL.ts"],"mappings":";;;KAIY;;EAKX,QAAQ,KAAK;;;;;;EAOb,SAAS;;;;;;EAOT,eAAe;;;;;;;EAQf;;iBAGqB,qBAAqB,QAAQ,6BAA6B"}
|
|
@@ -5,8 +5,12 @@ async function redirectToPreviewURL(config) {
|
|
|
5
5
|
const { cookies, draftMode } = await import("next/headers.js");
|
|
6
6
|
const { redirect } = await import("next/navigation");
|
|
7
7
|
const documentID = request.nextUrl.searchParams.get("documentId") ?? void 0;
|
|
8
|
+
const cookieJar = await cookies();
|
|
8
9
|
const previewToken = request.nextUrl.searchParams.get("token") ?? void 0;
|
|
9
|
-
if (previewToken)
|
|
10
|
+
if (previewToken) cookieJar.set(cookie.preview, previewToken, {
|
|
11
|
+
sameSite: "none",
|
|
12
|
+
secure: true
|
|
13
|
+
});
|
|
10
14
|
const previewURL = await client.resolvePreviewURL({
|
|
11
15
|
documentID,
|
|
12
16
|
previewToken,
|
|
@@ -14,6 +18,12 @@ async function redirectToPreviewURL(config) {
|
|
|
14
18
|
linkResolver
|
|
15
19
|
});
|
|
16
20
|
(await draftMode()).enable();
|
|
21
|
+
cookieJar.set({
|
|
22
|
+
...cookieJar.get("__prerender_bypass"),
|
|
23
|
+
httpOnly: true,
|
|
24
|
+
sameSite: "none",
|
|
25
|
+
secure: true
|
|
26
|
+
});
|
|
17
27
|
return redirect(previewURL);
|
|
18
28
|
}
|
|
19
29
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redirectToPreviewURL.js","names":["prismicCookie"],"sources":["../src/redirectToPreviewURL.ts"],"sourcesContent":["import { cookie as prismicCookie, type Client, type LinkResolverFunction } from \"@prismicio/client\"\n\nimport type { NextRequestLike } from \"./types\"\n\nexport type RedirectToPreviewURLConfig = {\n\t/** The Prismic client configured for the preview session's repository. */\n\t// `Pick` is used to use the smallest possible subset of\n\t// `prismic.Client`. Doing this reduces the surface area for breaking\n\t// type changes.\n\tclient: Pick<Client, \"resolvePreviewURL\">\n\n\t/**\n\t * The `request` object from a Next.js Route Handler.\n\t *\n\t * @see Next.js Route Handler docs: \\<https://nextjs.org/docs/app/building-your-application/routing/route-handlers\\>\n\t */\n\trequest: NextRequestLike\n\n\t/**\n\t * A Link Resolver used to resolve the previewed document's URL.\n\t *\n\t * @see To learn more about Link Resolver: {@link https://prismic.io/docs/core-concepts/link-resolver-route-resolver}\n\t */\n\tlinkResolver?: LinkResolverFunction\n\n\t/**\n\t * The default redirect URL if a URL cannot be determined for the previewed document.\n\t *\n\t * **Note**: If you `next.config.js` file contains a `basePath`, the `defaultURL` option must\n\t * _not_ include it. Instead, provide the `basePath` property using the `basePath` option.\n\t */\n\tdefaultURL?: string\n}\n\nexport async function redirectToPreviewURL(config: RedirectToPreviewURLConfig): Promise<never> {\n\tconst { client, request, linkResolver, defaultURL = \"/\" } = config\n\n\t// Need this to avoid the following Next.js build-time error:\n\t// You're importing a component that needs next/headers. That only works\n\t// in a Server Component which is not supported in the pages/ directory.\n\tconst { cookies, draftMode } = await import(\"next/headers\")\n\n\t// Dynamic so Node.js can load this module: the bare specifier (kept by\n\t// tsdown.config.ts for Next.js's server alias) is not resolvable by Node.js.\n\tconst { redirect } = await import(\"next/navigation\")\n\n\tconst documentID = request.nextUrl.searchParams.get(\"documentId\") ?? undefined\n\n\t// Set the initial preview cookie. Setting the cookie here is necessary\n\t// to support unpublished previews. Without setting it here, the page\n\t// will try to render without the preview cookie, leading to a\n\t// PrismicNotFound error.\n\tconst previewToken = request.nextUrl.searchParams.get(\"token\") ?? undefined\n\tif (previewToken) {\n\t\
|
|
1
|
+
{"version":3,"file":"redirectToPreviewURL.js","names":["prismicCookie"],"sources":["../src/redirectToPreviewURL.ts"],"sourcesContent":["import { cookie as prismicCookie, type Client, type LinkResolverFunction } from \"@prismicio/client\"\n\nimport type { NextRequestLike } from \"./types\"\n\nexport type RedirectToPreviewURLConfig = {\n\t/** The Prismic client configured for the preview session's repository. */\n\t// `Pick` is used to use the smallest possible subset of\n\t// `prismic.Client`. Doing this reduces the surface area for breaking\n\t// type changes.\n\tclient: Pick<Client, \"resolvePreviewURL\">\n\n\t/**\n\t * The `request` object from a Next.js Route Handler.\n\t *\n\t * @see Next.js Route Handler docs: \\<https://nextjs.org/docs/app/building-your-application/routing/route-handlers\\>\n\t */\n\trequest: NextRequestLike\n\n\t/**\n\t * A Link Resolver used to resolve the previewed document's URL.\n\t *\n\t * @see To learn more about Link Resolver: {@link https://prismic.io/docs/core-concepts/link-resolver-route-resolver}\n\t */\n\tlinkResolver?: LinkResolverFunction\n\n\t/**\n\t * The default redirect URL if a URL cannot be determined for the previewed document.\n\t *\n\t * **Note**: If you `next.config.js` file contains a `basePath`, the `defaultURL` option must\n\t * _not_ include it. Instead, provide the `basePath` property using the `basePath` option.\n\t */\n\tdefaultURL?: string\n}\n\nexport async function redirectToPreviewURL(config: RedirectToPreviewURLConfig): Promise<never> {\n\tconst { client, request, linkResolver, defaultURL = \"/\" } = config\n\n\t// Need this to avoid the following Next.js build-time error:\n\t// You're importing a component that needs next/headers. That only works\n\t// in a Server Component which is not supported in the pages/ directory.\n\tconst { cookies, draftMode } = await import(\"next/headers\")\n\n\t// Dynamic so Node.js can load this module: the bare specifier (kept by\n\t// tsdown.config.ts for Next.js's server alias) is not resolvable by Node.js.\n\tconst { redirect } = await import(\"next/navigation\")\n\n\tconst documentID = request.nextUrl.searchParams.get(\"documentId\") ?? undefined\n\n\t// Set the initial preview cookie. Setting the cookie here is necessary\n\t// to support unpublished previews. Without setting it here, the page\n\t// will try to render without the preview cookie, leading to a\n\t// PrismicNotFound error.\n\tconst cookieJar = await cookies()\n\tconst previewToken = request.nextUrl.searchParams.get(\"token\") ?? undefined\n\tif (previewToken) {\n\t\tcookieJar.set(prismicCookie.preview, previewToken, { sameSite: \"none\", secure: true })\n\t}\n\n\tconst previewURL = await client.resolvePreviewURL({\n\t\tdocumentID,\n\t\tpreviewToken,\n\t\tdefaultURL,\n\t\tlinkResolver,\n\t})\n\n\t;(await draftMode()).enable()\n\n\t// Next.js uses `SameSite=Lax` in development, which cross-site iframes drop.\n\tcookieJar.set({\n\t\t...cookieJar.get(\"__prerender_bypass\")!,\n\t\thttpOnly: true,\n\t\tsameSite: \"none\",\n\t\tsecure: true,\n\t})\n\n\treturn redirect(previewURL)\n}\n"],"mappings":";;AAkCA,eAAsB,qBAAqB,QAAoD;CAC9F,MAAM,EAAE,QAAQ,SAAS,cAAc,aAAa,QAAQ;CAK5D,MAAM,EAAE,SAAS,cAAc,MAAM,OAAO;CAI5C,MAAM,EAAE,aAAa,MAAM,OAAO;CAElC,MAAM,aAAa,QAAQ,QAAQ,aAAa,IAAI,YAAY,KAAK,KAAA;CAMrE,MAAM,YAAY,MAAM,QAAQ;CAChC,MAAM,eAAe,QAAQ,QAAQ,aAAa,IAAI,OAAO,KAAK,KAAA;CAClE,IAAI,cACH,UAAU,IAAIA,OAAc,SAAS,cAAc;EAAE,UAAU;EAAQ,QAAQ;CAAK,CAAC;CAGtF,MAAM,aAAa,MAAM,OAAO,kBAAkB;EACjD;EACA;EACA;EACA;CACD,CAAC;CAEA,CAAC,MAAM,UAAU,EAAA,CAAG,OAAO;CAG5B,UAAU,IAAI;EACb,GAAG,UAAU,IAAI,oBAAoB;EACrC,UAAU;EACV,UAAU;EACV,QAAQ;CACT,CAAC;CAED,OAAO,SAAS,UAAU;AAC3B"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
require("./_virtual/_rolldown/runtime.cjs");
|
|
2
1
|
const require_getPrismicCacheTags = require("./getPrismicCacheTags.cjs");
|
|
3
2
|
let next_cache_js = require("next/cache.js");
|
|
4
3
|
//#region src/revalidatePrismicPages.ts
|
|
@@ -12,7 +11,10 @@ let next_cache_js = require("next/cache.js");
|
|
|
12
11
|
* @see {@link https://nextjs.org/docs/app/api-reference/functions/revalidateTag}
|
|
13
12
|
*/
|
|
14
13
|
function revalidatePrismicPages(ids) {
|
|
15
|
-
for (const id of ids)
|
|
14
|
+
for (const id of ids) {
|
|
15
|
+
const tag = require_getPrismicCacheTags.buildPrismicCacheTag(id);
|
|
16
|
+
(0, next_cache_js.revalidateTag)(tag, { expire: 0 });
|
|
17
|
+
}
|
|
16
18
|
}
|
|
17
19
|
//#endregion
|
|
18
20
|
exports.revalidatePrismicPages = revalidatePrismicPages;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"revalidatePrismicPages.cjs","names":["buildPrismicCacheTag"],"sources":["../src/revalidatePrismicPages.ts"],"sourcesContent":["import { revalidateTag } from \"next/cache\"\n\nimport { buildPrismicCacheTag } from \"./getPrismicCacheTags\"\n\n/**\n * Immediately revalidates a set of Prismic pages given a list of their IDs. The list of IDs\n * typically comes from a Prismic webhook triggered when publishing content.\n *\n * @param ids - A list of Prismic page IDs to revalidate.\n * @experimental\n *\n * @see {@link https://nextjs.org/docs/app/api-reference/functions/revalidateTag}\n */\nexport function revalidatePrismicPages(ids: string[]): void {\n\tfor (const id of ids) {\n\t\tconst tag = buildPrismicCacheTag(id)\n\t\trevalidateTag(tag, { expire: 0 })\n\t}\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"revalidatePrismicPages.cjs","names":["buildPrismicCacheTag"],"sources":["../src/revalidatePrismicPages.ts"],"sourcesContent":["import { revalidateTag } from \"next/cache\"\n\nimport { buildPrismicCacheTag } from \"./getPrismicCacheTags\"\n\n/**\n * Immediately revalidates a set of Prismic pages given a list of their IDs. The list of IDs\n * typically comes from a Prismic webhook triggered when publishing content.\n *\n * @param ids - A list of Prismic page IDs to revalidate.\n * @experimental\n *\n * @see {@link https://nextjs.org/docs/app/api-reference/functions/revalidateTag}\n */\nexport function revalidatePrismicPages(ids: string[]): void {\n\tfor (const id of ids) {\n\t\tconst tag = buildPrismicCacheTag(id)\n\t\trevalidateTag(tag, { expire: 0 })\n\t}\n}\n"],"mappings":";;;;;;;;;;;;AAaA,SAAgB,uBAAuB,KAAqB;CAC3D,KAAK,MAAM,MAAM,KAAK;EACrB,MAAM,MAAMA,4BAAAA,qBAAqB,EAAE;EACnC,CAAA,GAAA,cAAA,cAAA,CAAc,KAAK,EAAE,QAAQ,EAAE,CAAC;CACjC;AACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"revalidatePrismicPages.d.cts","names":[],"sources":["../src/revalidatePrismicPages.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"revalidatePrismicPages.d.cts","names":[],"sources":["../src/revalidatePrismicPages.ts"],"mappings":";;;;;;;;;;iBAagB,uBAAuB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"revalidatePrismicPages.d.ts","names":[],"sources":["../src/revalidatePrismicPages.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"revalidatePrismicPages.d.ts","names":[],"sources":["../src/revalidatePrismicPages.ts"],"mappings":";;;;;;;;;;iBAagB,uBAAuB"}
|
|
@@ -11,7 +11,10 @@ import { revalidateTag } from "next/cache.js";
|
|
|
11
11
|
* @see {@link https://nextjs.org/docs/app/api-reference/functions/revalidateTag}
|
|
12
12
|
*/
|
|
13
13
|
function revalidatePrismicPages(ids) {
|
|
14
|
-
for (const id of ids)
|
|
14
|
+
for (const id of ids) {
|
|
15
|
+
const tag = buildPrismicCacheTag(id);
|
|
16
|
+
revalidateTag(tag, { expire: 0 });
|
|
17
|
+
}
|
|
15
18
|
}
|
|
16
19
|
//#endregion
|
|
17
20
|
export { revalidatePrismicPages };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"revalidatePrismicPages.js","names":[],"sources":["../src/revalidatePrismicPages.ts"],"sourcesContent":["import { revalidateTag } from \"next/cache\"\n\nimport { buildPrismicCacheTag } from \"./getPrismicCacheTags\"\n\n/**\n * Immediately revalidates a set of Prismic pages given a list of their IDs. The list of IDs\n * typically comes from a Prismic webhook triggered when publishing content.\n *\n * @param ids - A list of Prismic page IDs to revalidate.\n * @experimental\n *\n * @see {@link https://nextjs.org/docs/app/api-reference/functions/revalidateTag}\n */\nexport function revalidatePrismicPages(ids: string[]): void {\n\tfor (const id of ids) {\n\t\tconst tag = buildPrismicCacheTag(id)\n\t\trevalidateTag(tag, { expire: 0 })\n\t}\n}\n"],"mappings":";;;;;;;;;;;;AAaA,SAAgB,uBAAuB,KAAqB;
|
|
1
|
+
{"version":3,"file":"revalidatePrismicPages.js","names":[],"sources":["../src/revalidatePrismicPages.ts"],"sourcesContent":["import { revalidateTag } from \"next/cache\"\n\nimport { buildPrismicCacheTag } from \"./getPrismicCacheTags\"\n\n/**\n * Immediately revalidates a set of Prismic pages given a list of their IDs. The list of IDs\n * typically comes from a Prismic webhook triggered when publishing content.\n *\n * @param ids - A list of Prismic page IDs to revalidate.\n * @experimental\n *\n * @see {@link https://nextjs.org/docs/app/api-reference/functions/revalidateTag}\n */\nexport function revalidatePrismicPages(ids: string[]): void {\n\tfor (const id of ids) {\n\t\tconst tag = buildPrismicCacheTag(id)\n\t\trevalidateTag(tag, { expire: 0 })\n\t}\n}\n"],"mappings":";;;;;;;;;;;;AAaA,SAAgB,uBAAuB,KAAqB;CAC3D,KAAK,MAAM,MAAM,KAAK;EACrB,MAAM,MAAM,qBAAqB,EAAE;EACnC,cAAc,KAAK,EAAE,QAAQ,EAAE,CAAC;CACjC;AACD"}
|
package/dist/types.d.cts
CHANGED
package/dist/types.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.cts","names":[],"sources":["../src/types.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.cts","names":[],"sources":["../src/types.ts"],"mappings":";;;YAIW;IACT,OAAO;;;;KAKG,qBAAqB;;;;;;KAOrB;EACX;IACC,IAAI;;EAEL;EACA;IACC;IACA;MACC,IAAI"}
|
package/dist/types.d.ts
CHANGED
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","names":[],"sources":["../src/types.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../src/types.ts"],"mappings":";;;YAIW;IACT,OAAO;;;;KAKG,qBAAqB;;;;;;KAOrB;EACX;IACC,IAAI;;EAEL;EACA;IACC;IACA;MACC,IAAI"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prismicio/next",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.3-canary.6920973",
|
|
4
4
|
"description": "Helpers to integrate Prismic into Next.js apps",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"next",
|
|
@@ -54,23 +54,23 @@
|
|
|
54
54
|
"types": "tsc --noEmit"
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"@prismicio/simulator": "^0.2.
|
|
57
|
+
"@prismicio/simulator": "^0.2.4",
|
|
58
58
|
"imgix-url-builder": "^0.0.6",
|
|
59
59
|
"lz-string": "^1.5.0"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
62
|
-
"@playwright/test": "^1.
|
|
63
|
-
"@prismicio/client": "^7.
|
|
64
|
-
"@types/node": "^
|
|
65
|
-
"@types/react": "^19.
|
|
66
|
-
"next": "16.
|
|
67
|
-
"oxfmt": "^0.
|
|
68
|
-
"oxlint": "^1.
|
|
69
|
-
"playwright": "^1.
|
|
70
|
-
"react": "^19.
|
|
71
|
-
"react-dom": "^19.
|
|
72
|
-
"tsdown": "^0.
|
|
73
|
-
"typescript": "^
|
|
62
|
+
"@playwright/test": "^1.63.0",
|
|
63
|
+
"@prismicio/client": "^7.22.1",
|
|
64
|
+
"@types/node": "^26.6.1",
|
|
65
|
+
"@types/react": "^19.3.0",
|
|
66
|
+
"next": "16.3.5",
|
|
67
|
+
"oxfmt": "^0.68.0",
|
|
68
|
+
"oxlint": "^1.83.0",
|
|
69
|
+
"playwright": "^1.63.0",
|
|
70
|
+
"react": "^19.3.0",
|
|
71
|
+
"react-dom": "^19.3.0",
|
|
72
|
+
"tsdown": "^0.22.14",
|
|
73
|
+
"typescript": "^7.0.2"
|
|
74
74
|
},
|
|
75
75
|
"peerDependencies": {
|
|
76
76
|
"@prismicio/client": "^7",
|
|
@@ -78,6 +78,6 @@
|
|
|
78
78
|
"react": "^18 || ^19"
|
|
79
79
|
},
|
|
80
80
|
"engines": {
|
|
81
|
-
"node": ">=
|
|
81
|
+
"node": ">=22"
|
|
82
82
|
}
|
|
83
83
|
}
|
package/src/PrismicNextImage.tsx
CHANGED
|
@@ -13,6 +13,8 @@ import { imgixLoader } from "./imgixLoader"
|
|
|
13
13
|
import { devMsg } from "./lib/devMsg"
|
|
14
14
|
import { resolveDefaultExport } from "./lib/resolveDefaultExport"
|
|
15
15
|
|
|
16
|
+
const ResolvedImage = resolveDefaultExport(Image)
|
|
17
|
+
|
|
16
18
|
const castInt = (input: string | number | undefined): number | undefined => {
|
|
17
19
|
if (typeof input === "number" || typeof input === "undefined") {
|
|
18
20
|
return input
|
|
@@ -113,14 +115,14 @@ export const PrismicNextImage: ForwardRefExoticComponent<
|
|
|
113
115
|
return <>{fallback}</>
|
|
114
116
|
}
|
|
115
117
|
|
|
116
|
-
const resolvedImgixParams = imgixParams
|
|
117
|
-
for (const x in
|
|
118
|
+
const resolvedImgixParams = { ...imgixParams }
|
|
119
|
+
for (const x in resolvedImgixParams) {
|
|
118
120
|
if (resolvedImgixParams[x as keyof typeof resolvedImgixParams] === null) {
|
|
119
121
|
resolvedImgixParams[x as keyof typeof resolvedImgixParams] = undefined
|
|
120
122
|
}
|
|
121
123
|
}
|
|
122
124
|
|
|
123
|
-
const src = buildURL(field.url,
|
|
125
|
+
const src = buildURL(field.url, resolvedImgixParams as ImgixURLParams)
|
|
124
126
|
|
|
125
127
|
const ar = field.dimensions.width / field.dimensions.height
|
|
126
128
|
|
|
@@ -147,8 +149,6 @@ export const PrismicNextImage: ForwardRefExoticComponent<
|
|
|
147
149
|
)
|
|
148
150
|
}
|
|
149
151
|
|
|
150
|
-
const ResolvedImage = resolveDefaultExport(Image)
|
|
151
|
-
|
|
152
152
|
return (
|
|
153
153
|
<ResolvedImage
|
|
154
154
|
ref={ref}
|
package/src/PrismicNextLink.tsx
CHANGED
|
@@ -11,6 +11,8 @@ import { forwardRef } from "react"
|
|
|
11
11
|
|
|
12
12
|
import { resolveDefaultExport } from "./lib/resolveDefaultExport"
|
|
13
13
|
|
|
14
|
+
const ResolvedLink = resolveDefaultExport(Link)
|
|
15
|
+
|
|
14
16
|
export type PrismicNextLinkProps = Omit<
|
|
15
17
|
ComponentProps<typeof Link>,
|
|
16
18
|
"field" | "document" | "href" | "rel"
|
|
@@ -54,8 +56,6 @@ export const PrismicNextLink = forwardRef<HTMLAnchorElement, PrismicNextLinkProp
|
|
|
54
56
|
rel = restProps.rel
|
|
55
57
|
}
|
|
56
58
|
|
|
57
|
-
const ResolvedLink = resolveDefaultExport(Link)
|
|
58
|
-
|
|
59
59
|
return (
|
|
60
60
|
<ResolvedLink ref={ref} {...attrs} {...restProps} href={href} rel={rel}>
|
|
61
61
|
{"children" in props ? children : field?.text}
|
package/src/PrismicPreview.tsx
CHANGED
|
@@ -5,6 +5,8 @@ import type { FC, ReactNode } from "react"
|
|
|
5
5
|
import { resolveDefaultExport } from "./lib/resolveDefaultExport"
|
|
6
6
|
import { PrismicPreviewClient } from "./PrismicPreviewClient"
|
|
7
7
|
|
|
8
|
+
const ResolvedScript = resolveDefaultExport(Script)
|
|
9
|
+
|
|
8
10
|
/** Props for `<PrismicPreview>`. */
|
|
9
11
|
export type PrismicPreviewProps = {
|
|
10
12
|
/**
|
|
@@ -48,8 +50,6 @@ export const PrismicPreview: FC<PrismicPreviewProps> = async (props) => {
|
|
|
48
50
|
const toolbarSrc = getToolbarSrc(repositoryName)
|
|
49
51
|
const isDraftMode = (await draftMode()).isEnabled
|
|
50
52
|
|
|
51
|
-
const ResolvedScript = resolveDefaultExport(Script)
|
|
52
|
-
|
|
53
53
|
return (
|
|
54
54
|
<>
|
|
55
55
|
{children}
|
|
@@ -25,6 +25,9 @@ export const PrismicPreviewClient: FC<PrismicPreviewClientProps> = (props) => {
|
|
|
25
25
|
useEffect(() => {
|
|
26
26
|
const controller = new AbortController()
|
|
27
27
|
|
|
28
|
+
window.addEventListener("prismicPreviewStart", onUpdate, {
|
|
29
|
+
signal: controller.signal,
|
|
30
|
+
})
|
|
28
31
|
window.addEventListener("prismicPreviewUpdate", onUpdate, {
|
|
29
32
|
signal: controller.signal,
|
|
30
33
|
})
|
|
@@ -32,16 +35,19 @@ export const PrismicPreviewClient: FC<PrismicPreviewClientProps> = (props) => {
|
|
|
32
35
|
signal: controller.signal,
|
|
33
36
|
})
|
|
34
37
|
|
|
35
|
-
const cookie = getPrismicPreviewCookie(window.document.cookie)
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
const cookie = decodeURIComponent(getPrismicPreviewCookie(window.document.cookie) ?? "")
|
|
39
|
+
// A raw ref, or the toolbar's JSON cookie with a preview for this repository.
|
|
40
|
+
const hasActiveCookie =
|
|
41
|
+
cookie !== "" &&
|
|
42
|
+
(!cookie.startsWith("{") || cookie.includes(`"${repositoryName}.prismic.io"`))
|
|
43
|
+
|
|
44
|
+
// Start previews that did not go through `updatePreviewURL`, like
|
|
45
|
+
// share links, and restart after a preview ended in another tab.
|
|
46
|
+
if (hasActiveCookie && !isDraftMode) {
|
|
47
|
+
start()
|
|
48
|
+
}
|
|
40
49
|
|
|
41
|
-
|
|
42
|
-
// share links do not go to the `updatePreviewURL` like a normal
|
|
43
|
-
// preview.
|
|
44
|
-
if (hasCookieForRepository && !isDraftMode) {
|
|
50
|
+
function start() {
|
|
45
51
|
// We check `opaqueredirect` because we don't care if
|
|
46
52
|
// the redirect was successful or not. As long as it
|
|
47
53
|
// redirects, we know the endpoint exists and draft mode
|
|
@@ -60,7 +66,12 @@ export const PrismicPreviewClient: FC<PrismicPreviewClientProps> = (props) => {
|
|
|
60
66
|
return
|
|
61
67
|
}
|
|
62
68
|
|
|
63
|
-
refresh
|
|
69
|
+
// A soft refresh cannot leave Next.js's not-found boundary, which renders this tag.
|
|
70
|
+
if (document.querySelector('meta[name="robots"][content="noindex"]')) {
|
|
71
|
+
window.location.reload()
|
|
72
|
+
} else {
|
|
73
|
+
refresh()
|
|
74
|
+
}
|
|
64
75
|
})
|
|
65
76
|
.catch(() => {
|
|
66
77
|
// noop
|
|
@@ -69,7 +80,11 @@ export const PrismicPreviewClient: FC<PrismicPreviewClientProps> = (props) => {
|
|
|
69
80
|
|
|
70
81
|
function onUpdate(event: Event) {
|
|
71
82
|
event.preventDefault()
|
|
72
|
-
|
|
83
|
+
if (isDraftMode) {
|
|
84
|
+
refresh()
|
|
85
|
+
} else {
|
|
86
|
+
start()
|
|
87
|
+
}
|
|
73
88
|
}
|
|
74
89
|
|
|
75
90
|
function onEnd(event: Event) {
|
package/src/exitPreview.ts
CHANGED
|
@@ -19,13 +19,11 @@ export async function exitPreview(): Promise<Response> {
|
|
|
19
19
|
// Need this to avoid the following Next.js build-time error:
|
|
20
20
|
// You're importing a component that needs next/headers. That only works
|
|
21
21
|
// in a Server Component which is not supported in the pages/ directory.
|
|
22
|
-
const { cookies
|
|
22
|
+
const { cookies } = await import("next/headers")
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
// clears it to close the preview-cookie loop.
|
|
28
|
-
;(await cookies()).delete(prismicCookie.preview)
|
|
24
|
+
const cookieJar = await cookies()
|
|
25
|
+
cookieJar.delete({ name: "__prerender_bypass", sameSite: "none", secure: true })
|
|
26
|
+
cookieJar.delete({ name: prismicCookie.preview, sameSite: "none", secure: true })
|
|
29
27
|
|
|
30
28
|
// `Cache-Control` header is used to prevent CDN-level caching.
|
|
31
29
|
return new Response(JSON.stringify({ success: true }), {
|