UNPKG

vike

Version:

(Replaces Next.js/Nuxt) 🔨 Composable framework to build advanced applications with flexibility and stability.

31 lines (30 loc) • 1.41 kB
export { execHookDataAndOnBeforeRender }; import { assertOnBeforeRenderHookReturn } from '../../../shared-server-client/assertOnBeforeRenderHookReturn.js'; import { execHookServer } from './execHookServer.js'; import '../../assertEnvServer.js'; async function execHookDataAndOnBeforeRender(pageContext) { if (pageContext._pageContextAlreadyProvidedByOnPrerenderHook) { return; } const hooks = await execHookServer('data', pageContext); const dataHook = hooks[0]; // TO-DO/soon/cumulative-hooks: support cumulative if (dataHook) { // Note: hookReturn can be anything (e.g. an object) and is to be assigned to pageContext.data const pageContextFromHook = { data: dataHook.hookReturn, }; Object.assign(pageContext, pageContextFromHook); // Execute +onData if (!pageContext.isClientSideNavigation) { await execHookServer('onData', pageContext); } } const res = await execHookServer('onBeforeRender', pageContext); const onBeforeRenderHook = res[0]; // TO-DO/soon/cumulative-hooks: support cumulative if (onBeforeRenderHook) { const { hookReturn } = onBeforeRenderHook; assertOnBeforeRenderHookReturn(hookReturn, onBeforeRenderHook.hookFilePath); const pageContextFromHook = hookReturn?.pageContext; Object.assign(pageContext, pageContextFromHook); } }