alinea
Version:
Headless git-based CMS
29 lines (27 loc) • 980 B
JavaScript
import {
parse
} from "../../chunks/chunk-5LTN67OE.js";
import "../../chunks/chunk-NZLE2WMY.js";
// src/adapter/core/preview.tsx
import { getPreviewPayloadFromCookies } from "alinea/preview/PreviewCookies";
import { previewStore } from "./previewContext.js";
async function preview(cms, request, run) {
const { AsyncLocalStorage } = await import("node:async_hooks");
const storage = previewStore.get(cms) ?? new AsyncLocalStorage();
previewStore.set(cms, storage);
const context = {};
const searchParams = new URL(request.url).searchParams;
const previewToken = searchParams.get("preview");
const cookieHeader = request.headers.get("cookie");
if (previewToken && cookieHeader) {
const cookies = parse(cookieHeader);
const payload = getPreviewPayloadFromCookies(
Object.entries(cookies).map(([name, value]) => ({ name, value }))
);
if (payload) context.preview = { payload };
}
return storage.run(context, run);
}
export {
preview
};