vike
Version:
The Framework *You* Control - Next.js & Nuxt alternative for unprecedented flexibility and dependability.
33 lines (32 loc) • 1.88 kB
JavaScript
;
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);
}
}