@prismicio/next 2.3.1-pr.147.2aebcfe → 2.3.1-pr.147.bf74d52
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/exitPreview.cjs +1 -3
- 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 +2 -4
- package/dist/exitPreview.js.map +1 -1
- package/dist/lib/expiredPreviewCookies.cjs +15 -1
- package/dist/lib/expiredPreviewCookies.cjs.map +1 -1
- package/dist/lib/expiredPreviewCookies.js +15 -2
- package/dist/lib/expiredPreviewCookies.js.map +1 -1
- package/dist/package.cjs +1 -1
- package/dist/package.js +1 -1
- package/package.json +1 -1
- package/src/exitPreview.ts +10 -14
- package/src/lib/expiredPreviewCookies.ts +20 -1
package/dist/exitPreview.cjs
CHANGED
|
@@ -16,10 +16,8 @@ const require_expiredPreviewCookies = require("./lib/expiredPreviewCookies.cjs")
|
|
|
16
16
|
* ```
|
|
17
17
|
*/
|
|
18
18
|
async function exitPreview() {
|
|
19
|
-
const { draftMode } = await import("next/headers.js");
|
|
20
|
-
(await draftMode()).disable();
|
|
21
19
|
const headers = new Headers({ "Cache-Control": "no-store" });
|
|
22
|
-
for (const setCookie of require_expiredPreviewCookies.expiredPreviewCookieHeaders()) headers.append("Set-Cookie", setCookie);
|
|
20
|
+
for (const setCookie of [...require_expiredPreviewCookies.expiredPreviewCookieHeaders(), ...require_expiredPreviewCookies.expiredDraftModeCookieHeaders()]) headers.append("Set-Cookie", setCookie);
|
|
23
21
|
return new Response(JSON.stringify({ success: true }), { headers });
|
|
24
22
|
}
|
|
25
23
|
//#endregion
|
package/dist/exitPreview.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exitPreview.cjs","names":["expiredPreviewCookieHeaders"],"sources":["../src/exitPreview.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"exitPreview.cjs","names":["expiredPreviewCookieHeaders","expiredDraftModeCookieHeaders"],"sources":["../src/exitPreview.ts"],"sourcesContent":["import {\n\texpiredDraftModeCookieHeaders,\n\texpiredPreviewCookieHeaders,\n} from \"./lib/expiredPreviewCookies\"\n\n/**\n * Ends a Prismic preview session within a Next.js app. This function should be used in a Router\n * Handler.\n *\n * @example\n * \t;```typescript\n * \t// src/app/api/exit-preview/route.js\n *\n * \timport { exitPreview } from \"@prismicio/next\"\n *\n * \texport async function GET() {\n * \t\treturn await exitPreview()\n * \t}\n * \t```\n */\nexport async function exitPreview(): Promise<Response> {\n\t// Do not call `cookies()` or `draftMode().disable()`. ResponseCookies is\n\t// name-keyed: `appendMutableCookies` rebuilds Set-Cookie by name and drops\n\t// the extra Lax expire. Emit every expire on the Response instead:\n\t// toolbar Lax + iframe None; Secure for `io.prismic.preview`, and both\n\t// shapes of `__prerender_bypass` that `disable()` would have cleared.\n\tconst headers = new Headers({\n\t\t\"Cache-Control\": \"no-store\",\n\t})\n\tfor (const setCookie of [...expiredPreviewCookieHeaders(), ...expiredDraftModeCookieHeaders()]) {\n\t\theaders.append(\"Set-Cookie\", setCookie)\n\t}\n\n\treturn new Response(JSON.stringify({ success: true }), { headers })\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAoBA,eAAsB,cAAiC;CAMtD,MAAM,UAAU,IAAI,QAAQ,EAC3B,iBAAiB,YACjB,CAAC;AACF,MAAK,MAAM,aAAa,CAAC,GAAGA,8BAAAA,6BAA6B,EAAE,GAAGC,8BAAAA,+BAA+B,CAAC,CAC7F,SAAQ,OAAO,cAAc,UAAU;AAGxC,QAAO,IAAI,SAAS,KAAK,UAAU,EAAE,SAAS,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exitPreview.d.cts","names":[],"sources":["../src/exitPreview.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"exitPreview.d.cts","names":[],"sources":["../src/exitPreview.ts"],"mappings":";;AAoBA;;;;;;;;;;;;;;iBAAsB,WAAA,CAAA,GAAe,OAAA,CAAQ,QAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exitPreview.d.ts","names":[],"sources":["../src/exitPreview.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"exitPreview.d.ts","names":[],"sources":["../src/exitPreview.ts"],"mappings":";;AAoBA;;;;;;;;;;;;;;iBAAsB,WAAA,CAAA,GAAe,OAAA,CAAQ,QAAA"}
|
package/dist/exitPreview.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { expiredPreviewCookieHeaders } from "./lib/expiredPreviewCookies.js";
|
|
1
|
+
import { expiredDraftModeCookieHeaders, expiredPreviewCookieHeaders } from "./lib/expiredPreviewCookies.js";
|
|
2
2
|
//#region src/exitPreview.ts
|
|
3
3
|
/**
|
|
4
4
|
* Ends a Prismic preview session within a Next.js app. This function should be used in a Router
|
|
@@ -16,10 +16,8 @@ import { expiredPreviewCookieHeaders } from "./lib/expiredPreviewCookies.js";
|
|
|
16
16
|
* ```
|
|
17
17
|
*/
|
|
18
18
|
async function exitPreview() {
|
|
19
|
-
const { draftMode } = await import("next/headers.js");
|
|
20
|
-
(await draftMode()).disable();
|
|
21
19
|
const headers = new Headers({ "Cache-Control": "no-store" });
|
|
22
|
-
for (const setCookie of expiredPreviewCookieHeaders()) headers.append("Set-Cookie", setCookie);
|
|
20
|
+
for (const setCookie of [...expiredPreviewCookieHeaders(), ...expiredDraftModeCookieHeaders()]) headers.append("Set-Cookie", setCookie);
|
|
23
21
|
return new Response(JSON.stringify({ success: true }), { headers });
|
|
24
22
|
}
|
|
25
23
|
//#endregion
|
package/dist/exitPreview.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exitPreview.js","names":[],"sources":["../src/exitPreview.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"exitPreview.js","names":[],"sources":["../src/exitPreview.ts"],"sourcesContent":["import {\n\texpiredDraftModeCookieHeaders,\n\texpiredPreviewCookieHeaders,\n} from \"./lib/expiredPreviewCookies\"\n\n/**\n * Ends a Prismic preview session within a Next.js app. This function should be used in a Router\n * Handler.\n *\n * @example\n * \t;```typescript\n * \t// src/app/api/exit-preview/route.js\n *\n * \timport { exitPreview } from \"@prismicio/next\"\n *\n * \texport async function GET() {\n * \t\treturn await exitPreview()\n * \t}\n * \t```\n */\nexport async function exitPreview(): Promise<Response> {\n\t// Do not call `cookies()` or `draftMode().disable()`. ResponseCookies is\n\t// name-keyed: `appendMutableCookies` rebuilds Set-Cookie by name and drops\n\t// the extra Lax expire. Emit every expire on the Response instead:\n\t// toolbar Lax + iframe None; Secure for `io.prismic.preview`, and both\n\t// shapes of `__prerender_bypass` that `disable()` would have cleared.\n\tconst headers = new Headers({\n\t\t\"Cache-Control\": \"no-store\",\n\t})\n\tfor (const setCookie of [...expiredPreviewCookieHeaders(), ...expiredDraftModeCookieHeaders()]) {\n\t\theaders.append(\"Set-Cookie\", setCookie)\n\t}\n\n\treturn new Response(JSON.stringify({ success: true }), { headers })\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAoBA,eAAsB,cAAiC;CAMtD,MAAM,UAAU,IAAI,QAAQ,EAC3B,iBAAiB,YACjB,CAAC;AACF,MAAK,MAAM,aAAa,CAAC,GAAG,6BAA6B,EAAE,GAAG,+BAA+B,CAAC,CAC7F,SAAQ,OAAO,cAAc,UAAU;AAGxC,QAAO,IAAI,SAAS,KAAK,UAAU,EAAE,SAAS,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC"}
|
|
@@ -2,12 +2,26 @@ require("../_virtual/_rolldown/runtime.cjs");
|
|
|
2
2
|
let _prismicio_client = require("@prismicio/client");
|
|
3
3
|
//#region src/lib/expiredPreviewCookies.ts
|
|
4
4
|
const epoch = /* @__PURE__ */ new Date(0);
|
|
5
|
+
function expiresAttr() {
|
|
6
|
+
return `Expires=${epoch.toUTCString()}`;
|
|
7
|
+
}
|
|
5
8
|
/** Expired `Set-Cookie` values for both leftover `io.prismic.preview` shapes. */
|
|
6
9
|
function expiredPreviewCookieHeaders(name = _prismicio_client.cookie.preview) {
|
|
7
|
-
const expires =
|
|
10
|
+
const expires = expiresAttr();
|
|
8
11
|
return [`${name}=; Path=/; ${expires}; SameSite=Lax`, `${name}=; Path=/; ${expires}; SameSite=None; Secure`];
|
|
9
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* Expired `Set-Cookie` values for the App Router draft-mode cookie that `draftMode().disable()`
|
|
15
|
+
* would clear. Next sets `__prerender_bypass` as Lax (not Secure) in development and SameSite=None;
|
|
16
|
+
* Secure in production.
|
|
17
|
+
*/
|
|
18
|
+
function expiredDraftModeCookieHeaders() {
|
|
19
|
+
const expires = expiresAttr();
|
|
20
|
+
const name = "__prerender_bypass";
|
|
21
|
+
return [`${name}=; Path=/; ${expires}; SameSite=Lax; HttpOnly`, `${name}=; Path=/; ${expires}; SameSite=None; Secure; HttpOnly`];
|
|
22
|
+
}
|
|
10
23
|
//#endregion
|
|
24
|
+
exports.expiredDraftModeCookieHeaders = expiredDraftModeCookieHeaders;
|
|
11
25
|
exports.expiredPreviewCookieHeaders = expiredPreviewCookieHeaders;
|
|
12
26
|
|
|
13
27
|
//# sourceMappingURL=expiredPreviewCookies.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expiredPreviewCookies.cjs","names":["prismicCookie"],"sources":["../../src/lib/expiredPreviewCookies.ts"],"sourcesContent":["import { cookie as prismicCookie } from \"@prismicio/client\"\n\nconst epoch = new Date(0)\n\n/** Expired `Set-Cookie` values for both leftover `io.prismic.preview` shapes. */\nexport function expiredPreviewCookieHeaders(name = prismicCookie.preview): string[] {\n\tconst expires = `
|
|
1
|
+
{"version":3,"file":"expiredPreviewCookies.cjs","names":["prismicCookie"],"sources":["../../src/lib/expiredPreviewCookies.ts"],"sourcesContent":["import { cookie as prismicCookie } from \"@prismicio/client\"\n\nconst epoch = new Date(0)\n\nfunction expiresAttr(): string {\n\treturn `Expires=${epoch.toUTCString()}`\n}\n\n/** Expired `Set-Cookie` values for both leftover `io.prismic.preview` shapes. */\nexport function expiredPreviewCookieHeaders(name = prismicCookie.preview): string[] {\n\tconst expires = expiresAttr()\n\n\treturn [\n\t\t`${name}=; Path=/; ${expires}; SameSite=Lax`,\n\t\t`${name}=; Path=/; ${expires}; SameSite=None; Secure`,\n\t]\n}\n\n/**\n * Expired `Set-Cookie` values for the App Router draft-mode cookie that `draftMode().disable()`\n * would clear. Next sets `__prerender_bypass` as Lax (not Secure) in development and SameSite=None;\n * Secure in production.\n */\nexport function expiredDraftModeCookieHeaders(): string[] {\n\tconst expires = expiresAttr()\n\tconst name = \"__prerender_bypass\"\n\n\treturn [\n\t\t`${name}=; Path=/; ${expires}; SameSite=Lax; HttpOnly`,\n\t\t`${name}=; Path=/; ${expires}; SameSite=None; Secure; HttpOnly`,\n\t]\n}\n"],"mappings":";;;AAEA,MAAM,wBAAQ,IAAI,KAAK,EAAE;AAEzB,SAAS,cAAsB;AAC9B,QAAO,WAAW,MAAM,aAAa;;;AAItC,SAAgB,4BAA4B,OAAOA,kBAAAA,OAAc,SAAmB;CACnF,MAAM,UAAU,aAAa;AAE7B,QAAO,CACN,GAAG,KAAK,aAAa,QAAQ,iBAC7B,GAAG,KAAK,aAAa,QAAQ,yBAC7B;;;;;;;AAQF,SAAgB,gCAA0C;CACzD,MAAM,UAAU,aAAa;CAC7B,MAAM,OAAO;AAEb,QAAO,CACN,GAAG,KAAK,aAAa,QAAQ,2BAC7B,GAAG,KAAK,aAAa,QAAQ,mCAC7B"}
|
|
@@ -1,12 +1,25 @@
|
|
|
1
1
|
import { cookie } from "@prismicio/client";
|
|
2
2
|
//#region src/lib/expiredPreviewCookies.ts
|
|
3
3
|
const epoch = /* @__PURE__ */ new Date(0);
|
|
4
|
+
function expiresAttr() {
|
|
5
|
+
return `Expires=${epoch.toUTCString()}`;
|
|
6
|
+
}
|
|
4
7
|
/** Expired `Set-Cookie` values for both leftover `io.prismic.preview` shapes. */
|
|
5
8
|
function expiredPreviewCookieHeaders(name = cookie.preview) {
|
|
6
|
-
const expires =
|
|
9
|
+
const expires = expiresAttr();
|
|
7
10
|
return [`${name}=; Path=/; ${expires}; SameSite=Lax`, `${name}=; Path=/; ${expires}; SameSite=None; Secure`];
|
|
8
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Expired `Set-Cookie` values for the App Router draft-mode cookie that `draftMode().disable()`
|
|
14
|
+
* would clear. Next sets `__prerender_bypass` as Lax (not Secure) in development and SameSite=None;
|
|
15
|
+
* Secure in production.
|
|
16
|
+
*/
|
|
17
|
+
function expiredDraftModeCookieHeaders() {
|
|
18
|
+
const expires = expiresAttr();
|
|
19
|
+
const name = "__prerender_bypass";
|
|
20
|
+
return [`${name}=; Path=/; ${expires}; SameSite=Lax; HttpOnly`, `${name}=; Path=/; ${expires}; SameSite=None; Secure; HttpOnly`];
|
|
21
|
+
}
|
|
9
22
|
//#endregion
|
|
10
|
-
export { expiredPreviewCookieHeaders };
|
|
23
|
+
export { expiredDraftModeCookieHeaders, expiredPreviewCookieHeaders };
|
|
11
24
|
|
|
12
25
|
//# sourceMappingURL=expiredPreviewCookies.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expiredPreviewCookies.js","names":["prismicCookie"],"sources":["../../src/lib/expiredPreviewCookies.ts"],"sourcesContent":["import { cookie as prismicCookie } from \"@prismicio/client\"\n\nconst epoch = new Date(0)\n\n/** Expired `Set-Cookie` values for both leftover `io.prismic.preview` shapes. */\nexport function expiredPreviewCookieHeaders(name = prismicCookie.preview): string[] {\n\tconst expires = `
|
|
1
|
+
{"version":3,"file":"expiredPreviewCookies.js","names":["prismicCookie"],"sources":["../../src/lib/expiredPreviewCookies.ts"],"sourcesContent":["import { cookie as prismicCookie } from \"@prismicio/client\"\n\nconst epoch = new Date(0)\n\nfunction expiresAttr(): string {\n\treturn `Expires=${epoch.toUTCString()}`\n}\n\n/** Expired `Set-Cookie` values for both leftover `io.prismic.preview` shapes. */\nexport function expiredPreviewCookieHeaders(name = prismicCookie.preview): string[] {\n\tconst expires = expiresAttr()\n\n\treturn [\n\t\t`${name}=; Path=/; ${expires}; SameSite=Lax`,\n\t\t`${name}=; Path=/; ${expires}; SameSite=None; Secure`,\n\t]\n}\n\n/**\n * Expired `Set-Cookie` values for the App Router draft-mode cookie that `draftMode().disable()`\n * would clear. Next sets `__prerender_bypass` as Lax (not Secure) in development and SameSite=None;\n * Secure in production.\n */\nexport function expiredDraftModeCookieHeaders(): string[] {\n\tconst expires = expiresAttr()\n\tconst name = \"__prerender_bypass\"\n\n\treturn [\n\t\t`${name}=; Path=/; ${expires}; SameSite=Lax; HttpOnly`,\n\t\t`${name}=; Path=/; ${expires}; SameSite=None; Secure; HttpOnly`,\n\t]\n}\n"],"mappings":";;AAEA,MAAM,wBAAQ,IAAI,KAAK,EAAE;AAEzB,SAAS,cAAsB;AAC9B,QAAO,WAAW,MAAM,aAAa;;;AAItC,SAAgB,4BAA4B,OAAOA,OAAc,SAAmB;CACnF,MAAM,UAAU,aAAa;AAE7B,QAAO,CACN,GAAG,KAAK,aAAa,QAAQ,iBAC7B,GAAG,KAAK,aAAa,QAAQ,yBAC7B;;;;;;;AAQF,SAAgB,gCAA0C;CACzD,MAAM,UAAU,aAAa;CAC7B,MAAM,OAAO;AAEb,QAAO,CACN,GAAG,KAAK,aAAa,QAAQ,2BAC7B,GAAG,KAAK,aAAa,QAAQ,mCAC7B"}
|
package/dist/package.cjs
CHANGED
package/dist/package.js
CHANGED
package/package.json
CHANGED
package/src/exitPreview.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
expiredDraftModeCookieHeaders,
|
|
3
|
+
expiredPreviewCookieHeaders,
|
|
4
|
+
} from "./lib/expiredPreviewCookies"
|
|
2
5
|
|
|
3
6
|
/**
|
|
4
7
|
* Ends a Prismic preview session within a Next.js app. This function should be used in a Router
|
|
@@ -16,22 +19,15 @@ import { expiredPreviewCookieHeaders } from "./lib/expiredPreviewCookies"
|
|
|
16
19
|
* ```
|
|
17
20
|
*/
|
|
18
21
|
export async function exitPreview(): Promise<Response> {
|
|
19
|
-
//
|
|
20
|
-
//
|
|
21
|
-
//
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
;(await draftMode()).disable()
|
|
25
|
-
|
|
26
|
-
// `redirectToPreviewURL` writes SameSite=None; Secure. The toolbar may
|
|
27
|
-
// leave SameSite=Lax (not Secure). Those are different cookies to Chrome.
|
|
28
|
-
// Expire both on the Response. Do not use `cookies().set` / `delete()`:
|
|
29
|
-
// ResponseCookies is name-keyed, so a second `io.prismic.preview` overwrites
|
|
30
|
-
// the first and the Lax leftover survives.
|
|
22
|
+
// Do not call `cookies()` or `draftMode().disable()`. ResponseCookies is
|
|
23
|
+
// name-keyed: `appendMutableCookies` rebuilds Set-Cookie by name and drops
|
|
24
|
+
// the extra Lax expire. Emit every expire on the Response instead:
|
|
25
|
+
// toolbar Lax + iframe None; Secure for `io.prismic.preview`, and both
|
|
26
|
+
// shapes of `__prerender_bypass` that `disable()` would have cleared.
|
|
31
27
|
const headers = new Headers({
|
|
32
28
|
"Cache-Control": "no-store",
|
|
33
29
|
})
|
|
34
|
-
for (const setCookie of expiredPreviewCookieHeaders()) {
|
|
30
|
+
for (const setCookie of [...expiredPreviewCookieHeaders(), ...expiredDraftModeCookieHeaders()]) {
|
|
35
31
|
headers.append("Set-Cookie", setCookie)
|
|
36
32
|
}
|
|
37
33
|
|
|
@@ -2,12 +2,31 @@ import { cookie as prismicCookie } from "@prismicio/client"
|
|
|
2
2
|
|
|
3
3
|
const epoch = new Date(0)
|
|
4
4
|
|
|
5
|
+
function expiresAttr(): string {
|
|
6
|
+
return `Expires=${epoch.toUTCString()}`
|
|
7
|
+
}
|
|
8
|
+
|
|
5
9
|
/** Expired `Set-Cookie` values for both leftover `io.prismic.preview` shapes. */
|
|
6
10
|
export function expiredPreviewCookieHeaders(name = prismicCookie.preview): string[] {
|
|
7
|
-
const expires =
|
|
11
|
+
const expires = expiresAttr()
|
|
8
12
|
|
|
9
13
|
return [
|
|
10
14
|
`${name}=; Path=/; ${expires}; SameSite=Lax`,
|
|
11
15
|
`${name}=; Path=/; ${expires}; SameSite=None; Secure`,
|
|
12
16
|
]
|
|
13
17
|
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Expired `Set-Cookie` values for the App Router draft-mode cookie that `draftMode().disable()`
|
|
21
|
+
* would clear. Next sets `__prerender_bypass` as Lax (not Secure) in development and SameSite=None;
|
|
22
|
+
* Secure in production.
|
|
23
|
+
*/
|
|
24
|
+
export function expiredDraftModeCookieHeaders(): string[] {
|
|
25
|
+
const expires = expiresAttr()
|
|
26
|
+
const name = "__prerender_bypass"
|
|
27
|
+
|
|
28
|
+
return [
|
|
29
|
+
`${name}=; Path=/; ${expires}; SameSite=Lax; HttpOnly`,
|
|
30
|
+
`${name}=; Path=/; ${expires}; SameSite=None; Secure; HttpOnly`,
|
|
31
|
+
]
|
|
32
|
+
}
|