UNPKG

nuxt

Version:

Nuxt is a free and open-source framework with an intuitive and extendable way to create type-safe, performant and production-grade full-stack web applications and websites with Vue.js.

61 lines • 2.17 kB
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 {};