next-sanity
Version:
Sanity.io toolkit for Next.js
41 lines (40 loc) • 1.44 kB
JavaScript
import { validatePreviewUrl } from "@sanity/preview-url-secret";
import { perspectiveCookieName } from "@sanity/preview-url-secret/constants";
import { draftMode, cookies } from "next/headers";
import { redirect } from "next/navigation";
function defineEnableDraftMode(options) {
const { client } = options;
return {
GET: async (request) => {
const {
isValid,
redirectTo = "/",
studioPreviewPerspective
} = await validatePreviewUrl(client, request.url);
if (!isValid)
return new Response("Invalid secret", { status: 401 });
const draftModeStore = await draftMode();
draftModeStore.isEnabled || draftModeStore.enable();
const isSecure = process.env.NODE_ENV === "production" || (options.secureDevMode ?? !1), cookieStore = await cookies(), cookie = cookieStore.get("__prerender_bypass");
return cookieStore.set({
name: "__prerender_bypass",
value: cookie?.value,
httpOnly: !0,
path: "/",
secure: isSecure,
sameSite: isSecure ? "none" : "lax"
}), studioPreviewPerspective && cookieStore.set({
name: perspectiveCookieName,
value: studioPreviewPerspective,
httpOnly: !0,
path: "/",
secure: isSecure,
sameSite: isSecure ? "none" : "lax"
}), redirect(redirectTo);
}
};
}
export {
defineEnableDraftMode
};
//# sourceMappingURL=draft-mode.js.map