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