import 'server-only'; import { cache } from 'react'; import { createEmptySiteSettings, normalizeRoutePath } from '../data/normalize'; import type { PageRenderData } from '../types'; import { getWebRuntimeAPI } from './web-runtime-api'; export const resolvePageRenderData = cache( async (locale: string, requestedPath: string): Promise => { const api = getWebRuntimeAPI(); const request = { locale: locale.trim(), path: normalizeRoutePath(requestedPath) }; const resolution = await api.resolvePage(request); if (!resolution || resolution.page.status !== 'published') { return null; } const settings = resolution.settings ?? (await api.getSettings(request.locale)); return { page: resolution.page, settings: settings ?? createEmptySiteSettings(request.locale), languageAlternatives: resolution.languageAlternatives }; } ); export async function resolvePreviewRenderData(token: string): Promise { if (!token) { return null; } const resolution = await getWebRuntimeAPI().getPreview(token); if (!resolution) { return null; } return { page: resolution.page, settings: resolution.settings ?? createEmptySiteSettings(resolution.page.locale), languageAlternatives: resolution.languageAlternatives }; }