next-sanity
Version:
Sanity.io toolkit for Next.js
36 lines (35 loc) • 1.32 kB
JavaScript
import { validatePreviewUrl } from "@sanity/preview-url-secret";
import { perspectiveCookieName } from "@sanity/preview-url-secret/constants";
import { cookies, draftMode } 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();
if (!draftModeStore.isEnabled) draftModeStore.enable();
const isSecure = process.env.NODE_ENV === "production" || (options.secureDevMode ?? false);
const cookieStore = await cookies();
const cookie = cookieStore.get("__prerender_bypass");
cookieStore.set({
name: "__prerender_bypass",
value: cookie?.value,
httpOnly: true,
path: "/",
secure: isSecure,
sameSite: isSecure ? "none" : "lax"
});
if (studioPreviewPerspective) cookieStore.set({
name: perspectiveCookieName,
value: studioPreviewPerspective,
httpOnly: true,
path: "/",
secure: isSecure,
sameSite: isSecure ? "none" : "lax"
});
return redirect(redirectTo);
} };
}
export { defineEnableDraftMode };
//# sourceMappingURL=index.js.map