UNPKG

vike

Version:

The Framework *You* Control - Next.js & Nuxt alternative for unprecedented flexibility and dependability.

33 lines (32 loc) 1.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.executeOnBeforeRenderAndDataHooks = executeOnBeforeRenderAndDataHooks; const getHook_js_1 = require("../../../shared/hooks/getHook.js"); const preparePageContextForUserConsumptionServerSide_js_1 = require("./preparePageContextForUserConsumptionServerSide.js"); const assertOnBeforeRenderHookReturn_js_1 = require("../../../shared/assertOnBeforeRenderHookReturn.js"); const executeHook_js_1 = require("../../../shared/hooks/executeHook.js"); async function executeOnBeforeRenderAndDataHooks(pageContext) { if (pageContext._pageContextAlreadyProvidedByOnPrerenderHook) { return; } const dataHook = (0, getHook_js_1.getHookFromPageContext)(pageContext, 'data'); const onBeforeRenderHook = (0, getHook_js_1.getHookFromPageContext)(pageContext, 'onBeforeRender'); if (!dataHook && !onBeforeRenderHook) { return; } (0, preparePageContextForUserConsumptionServerSide_js_1.preparePageContextForUserConsumptionServerSide)(pageContext); if (dataHook) { const hookResult = await (0, executeHook_js_1.executeHook)(() => dataHook.hookFn(pageContext), dataHook, pageContext); // Note: hookResult can be anything (e.g. an object) and is to be assigned to pageContext.data const pageContextFromHook = { data: hookResult }; Object.assign(pageContext, pageContextFromHook); } if (onBeforeRenderHook) { const hookResult = await (0, executeHook_js_1.executeHook)(() => onBeforeRenderHook.hookFn(pageContext), onBeforeRenderHook, pageContext); (0, assertOnBeforeRenderHookReturn_js_1.assertOnBeforeRenderHookReturn)(hookResult, onBeforeRenderHook.hookFilePath); const pageContextFromHook = hookResult?.pageContext; Object.assign(pageContext, pageContextFromHook); } }