nuxt
Version:
228 lines (227 loc) • 8.72 kB
TypeScript
import { NuxtPayload, NuxtSSRContext, NuxtServerRuntimeHooks, PluginMeta } from "./types.js";
import { RouteMiddleware } from "./composables/router.js";
import { AsyncDataExecuteOptions, AsyncDataRequestStatus } from "./composables/asyncData.js";
import { NuxtAppManifestMeta } from "./composables/manifest.js";
import { LoadingIndicator } from "./composables/loading-indicator.js";
import { RouteAnnouncer } from "./composables/route-announcer.js";
import { NuxtAnnouncer } from "./composables/announcer.js";
import { App, EffectScope, Ref, VNode, onErrorCaptured } from "vue";
import { Hookable } from "hookable";
import { UseContext } from "unctx";
import { EventHandlerRequest, H3Event } from "@nuxt/nitro-server/h3";
import { RouteLocationNormalizedLoaded } from "vue-router";
import { LogObject } from "consola";
import { AppConfig, AppConfigInput, RuntimeConfig } from "nuxt/schema";
//#region src/app/nuxt.d.ts
declare function getNuxtAppCtx(id?: string): UseContext<NuxtApp>;
type HookResult = Promise<void> | void;
interface RuntimeNuxtHooks extends NuxtServerRuntimeHooks {
'app:created': (app: App<Element>) => HookResult;
'app:beforeMount': (app: App<Element>) => HookResult;
'app:mounted': (app: App<Element>) => HookResult;
'app:redirected': () => HookResult;
'app:suspense:resolve': (Component?: VNode) => HookResult;
'app:error:cleared': (options: {
redirect?: string;
}) => HookResult;
'app:chunkError': (options: {
error: any;
}) => HookResult;
'app:data:refresh': (keys?: string[]) => HookResult;
'app:manifest:update': (meta?: NuxtAppManifestMeta) => HookResult;
'dev:ssr-logs': (logs: LogObject[]) => HookResult;
'link:prefetch': (link: string) => HookResult;
'page:start': (Component?: VNode) => HookResult;
'page:finish': (Component?: VNode) => HookResult;
'page:transition:finish': (Component?: VNode) => HookResult;
'page:view-transition:start': (transition: ViewTransition) => HookResult;
'page:loading:start': () => HookResult;
'page:loading:end': () => HookResult;
'vue:setup': () => void;
'vue:error': (...args: Parameters<Parameters<typeof onErrorCaptured>[0]>) => HookResult;
}
interface _NuxtApp {
'vueApp': App<Element>;
'versions': Record<string, string>;
'hooks': Hookable<RuntimeNuxtHooks>;
'hook': _NuxtApp['hooks']['hook'];
'callHook': _NuxtApp['hooks']['callHook'];
'runWithContext': <T extends () => any>(fn: T) => ReturnType<T> | Promise<Awaited<ReturnType<T>>>;
[key: string]: unknown;
/** @internal */
'_cookies'?: Record<string, unknown>;
'_cookiesChanged'?: Record<string, boolean>;
/**
* The id of the Nuxt application.
* @internal */
'_id': string;
/** @internal */
'_scope': EffectScope;
/** @internal */
'_asyncDataPromises': Record<string, Promise<any> | undefined>;
/** @internal */
'_asyncData': Record<string, {
data: Ref<unknown>;
pending: Ref<boolean>;
error: Ref<Error | undefined>;
status: Ref<AsyncDataRequestStatus>;
execute: (opts?: AsyncDataExecuteOptions) => Promise<void>; /** @internal */
_default: () => unknown; /** @internal */
_deps: number; /** @internal */
_off: () => void; /** @internal */
_init: boolean; /** @internal */
_execute: (opts?: AsyncDataExecuteOptions) => Promise<void>; /** @internal */
_hash?: Record<string, string | undefined>; /** @internal */
_abortController?: AbortController; /** @internal */
_initialCachedData?: unknown;
} | undefined>;
/** @internal */
'_state': Record<string, {
/** @internal */_default: () => unknown;
} | undefined>;
/** @internal */
'_loadingIndicator'?: LoadingIndicator;
/** @internal */
'_loadingIndicatorDeps'?: number;
/** @internal */
'_middleware': {
global: RouteMiddleware[];
named: Record<string, RouteMiddleware>;
};
/** @internal */
'_processingMiddleware'?: string | boolean;
/** @internal */
'_middlewareTo'?: Pick<RouteLocationNormalizedLoaded, 'meta'>;
/** @internal */
'_once': {
[key: string]: Promise<any>;
};
/** @internal */
'_observer'?: {
observe: (element: Element, callback: () => void) => () => void;
};
/** @internal */
'_appConfig': AppConfig;
/** @internal */
'_route': RouteLocationNormalizedLoaded & {
sync?: () => void;
};
/**
* Restore the real route after a prerendered page hydrates against the query-less
* payload route. Called by `<NuxtPage>` as its `Suspense` resolves, before mounted hooks flush.
* @internal
*/
'~restoreDeferredRoute'?: () => void;
/** @internal */
'_islandPromises'?: Record<string, Promise<any>>;
/** @internal */
'_payloadRevivers': Record<string, (data: any) => any>;
/** @internal */
'_routeAnnouncer'?: RouteAnnouncer;
/** @internal */
'_routeAnnouncerDeps'?: number;
/** @internal */
'~transitionPromise'?: Promise<void>;
/** @internal */
'~transitionFinish'?: () => void;
/** @internal */
'_announcer'?: NuxtAnnouncer;
/** @internal */
'_announcerDeps'?: number;
'$config': RuntimeConfig;
'isHydrating'?: boolean;
'deferHydration': () => () => void | Promise<void>;
'ssrContext'?: NuxtSSRContext;
'payload': NuxtPayload;
'static': {
data: Record<string, any>;
};
'provide': (name: string, value: any) => void;
}
interface NuxtApp extends _NuxtApp {}
declare const NuxtPluginIndicator = "__nuxt_plugin";
interface PluginEnvContext {
/**
* This enable the plugin for islands components.
* Require `experimental.componentsIslands`.
* @default true
*/
islands?: boolean;
}
interface ResolvedPluginMeta {
name?: string;
parallel?: boolean;
}
interface Plugin<Injections extends Record<string, unknown> = Record<string, unknown>> {
(nuxt: NuxtApp): Promise<void> | Promise<{
provide?: Injections;
}> | void | {
provide?: Injections;
};
[NuxtPluginIndicator]?: true;
meta?: ResolvedPluginMeta;
}
interface ObjectPlugin<Injections extends Record<string, unknown> = Record<string, unknown>> extends PluginMeta {
hooks?: Partial<RuntimeNuxtHooks>;
setup?: Plugin<Injections>;
env?: PluginEnvContext;
/**
* Execute plugin in parallel with other parallel plugins.
* @default false
*/
parallel?: boolean;
/**
* @internal
*/
_name?: string;
}
/** @deprecated Use `ObjectPlugin` */
type ObjectPluginInput<Injections extends Record<string, unknown> = Record<string, unknown>> = ObjectPlugin<Injections>;
interface CreateOptions {
vueApp: NuxtApp['vueApp'];
ssrContext?: NuxtApp['ssrContext'];
/**
* The id of the Nuxt application, overrides the default id specified in the Nuxt config (default: `nuxt-app`).
*/
id?: NuxtApp['_id'];
}
/** @since 3.0.0 */
declare function createNuxtApp(options: CreateOptions): NuxtApp;
/** @since 3.12.0 */
declare function registerPluginHooks(nuxtApp: NuxtApp, plugin: Plugin & ObjectPlugin<any>): void;
/** @since 3.0.0 */
declare function applyPlugin(nuxtApp: NuxtApp, plugin: Plugin & ObjectPlugin<any>): Promise<void>;
/** @since 3.0.0 */
declare function applyPlugins(nuxtApp: NuxtApp, plugins: Array<Plugin & ObjectPlugin<any>>): Promise<void>;
/** @since 3.0.0 */
declare function defineNuxtPlugin<T extends Record<string, unknown>>(plugin: Plugin<T> | ObjectPlugin<T>): Plugin<T> & ObjectPlugin<T>;
declare const definePayloadPlugin: typeof defineNuxtPlugin;
/** @since 3.0.0 */
declare function isNuxtPlugin(plugin: unknown): plugin is Plugin;
/**
* Ensures that the setup function passed in has access to the Nuxt instance via `useNuxtApp`.
* @param nuxt A Nuxt instance
* @param setup The function to call
* @since 3.0.0
*/
declare function callWithNuxt<T extends (...args: any[]) => any>(nuxt: NuxtApp | _NuxtApp, setup: T, args?: Parameters<T>): Promise<ReturnType<T>>;
/**
* Returns the current Nuxt instance.
*
* Returns `null` if Nuxt instance is unavailable.
* @since 3.10.0
*/
declare function tryUseNuxtApp(): NuxtApp | null;
/**
* Returns the current Nuxt instance.
*
* Throws an error if Nuxt instance is unavailable.
* @since 3.0.0
*/
declare function useNuxtApp(): NuxtApp;
/** @since 3.0.0 */
declare function useRuntimeConfig(_event?: H3Event<EventHandlerRequest>): RuntimeConfig;
/** @since 3.0.0 */
declare function defineAppConfig<C extends AppConfigInput>(config: C): C;
//#endregion
export { CreateOptions, NuxtApp, type NuxtPayload, NuxtPluginIndicator, type NuxtSSRContext, ObjectPlugin, ObjectPluginInput, Plugin, PluginEnvContext, type PluginMeta, ResolvedPluginMeta, RuntimeNuxtHooks, applyPlugin, applyPlugins, callWithNuxt, createNuxtApp, defineAppConfig, defineNuxtPlugin, definePayloadPlugin, getNuxtAppCtx, isNuxtPlugin, registerPluginHooks, tryUseNuxtApp, useNuxtApp, useRuntimeConfig };