UNPKG

next-drupal

Version:
60 lines (59 loc) 1.66 kB
import { DRAFT_DATA_COOKIE_NAME, DRAFT_MODE_COOKIE_NAME } from "./chunk-2RPT7DWB.js"; // src/draft.ts import { cookies, draftMode } from "next/headers"; import { redirect } from "next/navigation"; async function enableDraftMode(request, drupal) { const response = await drupal.validateDraftUrl(request.nextUrl.searchParams); if (!response.ok) { return response; } const searchParams = request.nextUrl.searchParams; const path = searchParams.get("path"); const cookieStore = await cookies(); const draft = await draftMode(); draft.enable(); const draftModeCookie = cookieStore.get(DRAFT_MODE_COOKIE_NAME); if (draftModeCookie) { cookieStore.set({ ...draftModeCookie, sameSite: "none", secure: true }); } const { secret, scope, plugin, ...draftData } = Object.fromEntries( searchParams.entries() ); cookieStore.set({ ...draftModeCookie, name: DRAFT_DATA_COOKIE_NAME, sameSite: "none", secure: true, value: JSON.stringify(draftData) }); redirect(path); } async function disableDraftMode() { const cookieStore = await cookies(); cookieStore.delete(DRAFT_DATA_COOKIE_NAME); const draft = await draftMode(); draft.disable(); return new Response("Draft mode is disabled"); } async function getDraftData() { let data = {}; const cookieStore = await cookies(); const draft = await draftMode(); if (draft.isEnabled && cookieStore.has(DRAFT_DATA_COOKIE_NAME)) { data = JSON.parse(cookieStore.get(DRAFT_DATA_COOKIE_NAME)?.value || "{}"); } return data; } export { disableDraftMode, enableDraftMode, getDraftData }; //# sourceMappingURL=draft.js.map