UNPKG

vike

Version:

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

33 lines (32 loc) 1.41 kB
import '../../assertEnvServer.js'; export { execHookOnError }; import { assert } from '../../../utils/assert.js'; import { getGlobalObject } from '../../../utils/getGlobalObject.js'; import { isObject } from '../../../utils/isObject.js'; import { execHookSingleSync } from '../../../shared-server-client/hooks/execHook.js'; import { getGlobalContextServerInternalOptional } from '../globalContext.js'; import { getHooksFromPageConfigGlobalCumulative } from '../../../shared-server-client/hooks/getHook.js'; import { getPageContextPublicServer } from './getPageContextPublicServer.js'; const globalObject = getGlobalObject('renderPageServer/execHookOnError.ts', { seen: new WeakSet(), }); function execHookOnError(err, pageContext) { if (isObject(err)) { if (globalObject.seen.has(err)) return; globalObject.seen.add(err); } const globalContext = getGlobalContextServerInternalOptional(); if (!globalContext) return; assert(pageContext === null || '_globalContext' in pageContext); const hooks = getHooksFromPageConfigGlobalCumulative(globalContext._pageConfigGlobal, 'onError'); for (const hook of hooks) { try { execHookSingleSync(hook, globalContext, pageContext, getPageContextPublicServer, () => hook.hookFn(err, pageContext)); } catch (hookErr) { console.error(hookErr); } } }