nuxt
Version:
61 lines • 2.17 kB
TypeScript
import { NuxtIslandContext, NuxtIslandResponse, NuxtRenderChunkContext, NuxtRenderCloseContext, NuxtRenderHTMLContext, NuxtRenderRouteContext } from "../app/types.js";
import { NuxtRequestEvent, NuxtServerHooks } from "nuxt/schema";
//#region src/server/hooks.d.ts
/**
* The return type of a server hook handler.
*
* @since 4.6.0
*/
export type ServerHookResult = void | Promise<void>;
/**
* The hooks the Nuxt renderer calls.
*
* @since 4.6.0
*/
export interface NuxtServerRendererHooks {
'render:route': (context: NuxtRenderRouteContext, extra: {
event: NuxtRequestEvent;
}) => ServerHookResult;
'render:html': (context: NuxtRenderHTMLContext, extra: {
event: NuxtRequestEvent;
streaming?: boolean;
}) => ServerHookResult;
'render:html:chunk': (context: NuxtRenderChunkContext, extra: {
event: NuxtRequestEvent;
}) => ServerHookResult;
'render:html:close': (context: NuxtRenderCloseContext, extra: {
event: NuxtRequestEvent;
}) => ServerHookResult;
'render:island': (response: NuxtIslandResponse, extra: {
event: NuxtRequestEvent;
islandContext: NuxtIslandContext;
}) => ServerHookResult;
}
type HookMap<Hooks> = { [Name in keyof Hooks]: (...args: any[]) => ServerHookResult; };
/**
* Server hooks. Handlers run serially, in registration order.
*
* @since 4.6.0
*/
export interface ServerHookable<Hooks extends HookMap<Hooks>> {
/** Returns a function that removes the handler. */
hook<Name extends keyof Hooks & string>(name: Name, handler: Hooks[Name]): () => void;
removeHook<Name extends keyof Hooks & string>(name: Name, handler: Hooks[Name]): void;
callHook<Name extends keyof Hooks & string>(name: Name, ...args: Parameters<Hooks[Name]>): Promise<void> | void;
}
/**
* The server runtime hooks: renderer hooks and those declared on {@link NuxtServerHooks}.
*
* @example
* ```ts
* // server/plugins/robots.ts
* useServerHooks().hook('render:html', (html, { event }) => {
* html.head.push('<meta name="robots" content="noindex">')
* })
* ```
*
* @since 4.6.0
*/
export declare function useServerHooks(): ServerHookable<NuxtServerHooks & NuxtServerRendererHooks>;
//#endregion
export {};