vike
Version:
The Framework *You* Control - Next.js & Nuxt alternative for unprecedented flexibility and dependability.
569 lines (568 loc) • 21.4 kB
TypeScript
export { runPrerender };
export type { PrerenderOptions };
export type { PrerenderContextPublic };
export type { PrerenderTrigger };
import type { PageFile } from '../../shared/getPageFiles.js';
import { type GlobalContextServerInternal } from '../runtime/globalContext.js';
import { type ResolvedConfig } from 'vite';
import type { APIOptions } from '../api/types.js';
type ProvidedByHook = null | {
hookFilePath: string;
hookName: 'onBeforePrerenderStart' | 'prerender';
};
type ProvidedByHookTransformer = null | {
hookFilePath: string;
hookName: 'onPrerenderStart' | 'onBeforePrerender';
};
type PageContextPrerendered = {
urlOriginal: string;
_providedByHook?: ProvidedByHook;
pageId: string | null;
isRedirect?: true;
is404: boolean;
};
type PrerenderedPageContexts = Record<string, PageContextPrerendered>;
type PrerenderContextPublic = Pick<PrerenderContext, 'pageContexts' | 'output'>;
type PrerenderContext = {
pageContexts: PageContext[];
output: Output;
_pageContextInit: Record<string, unknown> | null;
_noExtraDir: boolean | null;
_prerenderedPageContexts: PrerenderedPageContexts;
};
type Output<PageContext = PageContextPrerendered> = {
filePath: string;
fileType: FileType;
fileContent: string;
pageContext: PageContext;
}[];
type FileType = 'HTML' | 'JSON';
type PageContext = Awaited<ReturnType<typeof createPageContextPrerendering>> & {
_urlOriginalBeforeHook?: string;
};
type PrerenderOptions = APIOptions & {
/** Initial `pageContext` values */
pageContextInit?: Record<string, unknown>;
/** @experimental Don't use without having talked to a vike maintainer. */
onPagePrerender?: Function;
/** @deprecated Define `prerender({ viteConfig: { root }})` instead. */
root?: string;
/** @deprecated Define `prerender({ viteConfig: { configFile }})` instead. */
configFile?: string;
/** @deprecated Define `partial` in vite.config.js instead, see https://vike.dev/prerender */
partial?: boolean;
/** @deprecated Define `noExtraDir` in vite.config.js instead, see https://vike.dev/prerender */
noExtraDir?: boolean;
/** @deprecated Define `parallel` in vite.config.js instead, see https://vike.dev/prerender */
parallel?: number;
/** @deprecated */
outDir?: string;
/** @deprecated */
base?: string;
};
type PrerenderTrigger = '$ vike prerender' | 'prerender()' | 'auto-run';
declare function runPrerender(options: PrerenderOptions | undefined, trigger: PrerenderTrigger): Promise<{
viteConfig: ResolvedConfig;
}>;
declare function createPageContextPrerendering(urlOriginal: string, prerenderContext: PrerenderContext, globalContext: GlobalContextServerInternal, is404: boolean, pageId: string | undefined, providedByHook: ProvidedByHook): Promise<((({
_isOriginalObject: true;
isPageContext: true;
} & {
isClientSide: false;
isPrerendering: boolean;
} & Pick<import("../../types/PageContext.js").PageContextInternalServer, "urlOriginal" | "headersOriginal"> & {
url?: string;
headers?: Record<string, string>;
} & {
_globalContext: {
isGlobalContext: true;
_isOriginalObject: true;
_virtualFileExports: unknown;
_pageFilesAll: PageFile[];
_pageConfigs: import("../../types/PageConfig.js").PageConfigRuntime[];
_pageConfigGlobal: import("../../types/PageConfig.js").PageConfigGlobalRuntime;
_allPageIds: string[];
_vikeConfigPublicGlobal: {
config: import("../../types/index.js").ConfigResolved;
_source: import("../../shared/page-configs/resolveVikeConfigPublic.js").Source;
_sources: import("../../shared/page-configs/resolveVikeConfigPublic.js").Sources;
_from: import("../../shared/page-configs/resolveVikeConfigPublic.js").From;
};
config: import("../../types/index.js").ConfigResolved;
pages: {
[k: string]: import("../../shared/page-configs/resolveVikeConfigPublic.js").VikeConfigPublicPageEager;
};
} & ({
_isProduction: false;
_isPrerendering: false;
assetsManifest: null;
_viteDevServer: import("vite").ViteDevServer;
viteConfig: ResolvedConfig;
viteConfigRuntime: {
root: string;
build: {
outDir: string;
};
_baseViteOriginal: string;
vitePluginServerEntry: {
inject: boolean | undefined;
};
};
baseServer: string;
baseAssets: string;
isClientSide: false;
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
} | {
_isPrerendering: true;
viteConfig: ResolvedConfig;
_isProduction: true;
assetsManifest: import("../../types/ViteManifest.js").ViteManifest;
_viteDevServer: null;
viteConfigRuntime: {
root: string;
build: {
outDir: string;
};
_baseViteOriginal: string;
vitePluginServerEntry: {
inject: boolean | undefined;
};
};
_usesClientRouter: boolean;
baseServer: string;
baseAssets: string;
isClientSide: false;
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
} | {
_isPrerendering: false;
viteConfig: null;
_isProduction: true;
assetsManifest: import("../../types/ViteManifest.js").ViteManifest;
_viteDevServer: null;
viteConfigRuntime: {
root: string;
build: {
outDir: string;
};
_baseViteOriginal: string;
vitePluginServerEntry: {
inject: boolean | undefined;
};
};
_usesClientRouter: boolean;
baseServer: string;
baseAssets: string;
isClientSide: false;
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
});
_pageFilesAll: PageFile[];
_baseServer: string;
_baseAssets: string;
_pageContextInit: import("../runtime/renderPage.js").PageContextInit;
_urlRewrite: null;
_urlHandler: ((url: string) => string) | null;
isClientSideNavigation: boolean;
} & {
config: import("../../types/index.js").ConfigResolved;
_source: import("../../shared/page-configs/resolveVikeConfigPublic.js").Source;
_sources: import("../../shared/page-configs/resolveVikeConfigPublic.js").Sources;
_from: import("../../shared/page-configs/resolveVikeConfigPublic.js").From;
} & {
urlParsed: import("../runtime/utils.js").UrlPublic;
urlPathname: string;
url: string;
} & {
headers: Record<string, string> | null;
} & {
_urlHandler: null;
_httpRequestId: null;
_urlRewrite: null;
_noExtraDir: boolean | null;
_prerenderContext: PrerenderContext;
_providedByHook: ProvidedByHook;
_urlOriginalModifiedByHook: ProvidedByHookTransformer;
is404: boolean;
} & import("../../shared/route/index.js").PageContextFromRoute & Record<"pageId", string>) | ({
_isOriginalObject: true;
isPageContext: true;
} & {
isClientSide: false;
isPrerendering: boolean;
} & Pick<import("../../types/PageContext.js").PageContextInternalServer, "urlOriginal" | "headersOriginal"> & {
url?: string;
headers?: Record<string, string>;
} & {
_globalContext: {
isGlobalContext: true;
_isOriginalObject: true;
_virtualFileExports: unknown;
_pageFilesAll: PageFile[];
_pageConfigs: import("../../types/PageConfig.js").PageConfigRuntime[];
_pageConfigGlobal: import("../../types/PageConfig.js").PageConfigGlobalRuntime;
_allPageIds: string[];
_vikeConfigPublicGlobal: {
config: import("../../types/index.js").ConfigResolved;
_source: import("../../shared/page-configs/resolveVikeConfigPublic.js").Source;
_sources: import("../../shared/page-configs/resolveVikeConfigPublic.js").Sources;
_from: import("../../shared/page-configs/resolveVikeConfigPublic.js").From;
};
config: import("../../types/index.js").ConfigResolved;
pages: {
[k: string]: import("../../shared/page-configs/resolveVikeConfigPublic.js").VikeConfigPublicPageEager;
};
} & ({
_isProduction: false;
_isPrerendering: false;
assetsManifest: null;
_viteDevServer: import("vite").ViteDevServer;
viteConfig: ResolvedConfig;
viteConfigRuntime: {
root: string;
build: {
outDir: string;
};
_baseViteOriginal: string;
vitePluginServerEntry: {
inject: boolean | undefined;
};
};
baseServer: string;
baseAssets: string;
isClientSide: false;
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
} | {
_isPrerendering: true;
viteConfig: ResolvedConfig;
_isProduction: true;
assetsManifest: import("../../types/ViteManifest.js").ViteManifest;
_viteDevServer: null;
viteConfigRuntime: {
root: string;
build: {
outDir: string;
};
_baseViteOriginal: string;
vitePluginServerEntry: {
inject: boolean | undefined;
};
};
_usesClientRouter: boolean;
baseServer: string;
baseAssets: string;
isClientSide: false;
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
} | {
_isPrerendering: false;
viteConfig: null;
_isProduction: true;
assetsManifest: import("../../types/ViteManifest.js").ViteManifest;
_viteDevServer: null;
viteConfigRuntime: {
root: string;
build: {
outDir: string;
};
_baseViteOriginal: string;
vitePluginServerEntry: {
inject: boolean | undefined;
};
};
_usesClientRouter: boolean;
baseServer: string;
baseAssets: string;
isClientSide: false;
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
});
_pageFilesAll: PageFile[];
_baseServer: string;
_baseAssets: string;
_pageContextInit: import("../runtime/renderPage.js").PageContextInit;
_urlRewrite: null;
_urlHandler: ((url: string) => string) | null;
isClientSideNavigation: boolean;
} & {
config: import("../../types/index.js").ConfigResolved;
_source: import("../../shared/page-configs/resolveVikeConfigPublic.js").Source;
_sources: import("../../shared/page-configs/resolveVikeConfigPublic.js").Sources;
_from: import("../../shared/page-configs/resolveVikeConfigPublic.js").From;
} & {
urlParsed: import("../runtime/utils.js").UrlPublic;
urlPathname: string;
url: string;
} & {
headers: Record<string, string> | null;
} & {
_urlHandler: null;
_httpRequestId: null;
_urlRewrite: null;
_noExtraDir: boolean | null;
_prerenderContext: PrerenderContext;
_providedByHook: ProvidedByHook;
_urlOriginalModifiedByHook: ProvidedByHookTransformer;
is404: boolean;
} & {
pageId: string;
_debugRouteMatches: never[];
routeParams: {};
})) & (((({
_isOriginalObject: true;
isPageContext: true;
} & {
isClientSide: false;
isPrerendering: boolean;
} & Pick<import("../../types/PageContext.js").PageContextInternalServer, "urlOriginal" | "headersOriginal"> & {
url?: string;
headers?: Record<string, string>;
} & {
_globalContext: {
isGlobalContext: true;
_isOriginalObject: true;
_virtualFileExports: unknown;
_pageFilesAll: PageFile[];
_pageConfigs: import("../../types/PageConfig.js").PageConfigRuntime[];
_pageConfigGlobal: import("../../types/PageConfig.js").PageConfigGlobalRuntime;
_allPageIds: string[];
_vikeConfigPublicGlobal: {
config: import("../../types/index.js").ConfigResolved;
_source: import("../../shared/page-configs/resolveVikeConfigPublic.js").Source;
_sources: import("../../shared/page-configs/resolveVikeConfigPublic.js").Sources;
_from: import("../../shared/page-configs/resolveVikeConfigPublic.js").From;
};
config: import("../../types/index.js").ConfigResolved;
pages: {
[k: string]: import("../../shared/page-configs/resolveVikeConfigPublic.js").VikeConfigPublicPageEager;
};
} & ({
_isProduction: false;
_isPrerendering: false;
assetsManifest: null;
_viteDevServer: import("vite").ViteDevServer;
viteConfig: ResolvedConfig;
viteConfigRuntime: {
root: string;
build: {
outDir: string;
};
_baseViteOriginal: string;
vitePluginServerEntry: {
inject: boolean | undefined;
};
};
baseServer: string;
baseAssets: string;
isClientSide: false;
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
} | {
_isPrerendering: true;
viteConfig: ResolvedConfig;
_isProduction: true;
assetsManifest: import("../../types/ViteManifest.js").ViteManifest;
_viteDevServer: null;
viteConfigRuntime: {
root: string;
build: {
outDir: string;
};
_baseViteOriginal: string;
vitePluginServerEntry: {
inject: boolean | undefined;
};
};
_usesClientRouter: boolean;
baseServer: string;
baseAssets: string;
isClientSide: false;
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
} | {
_isPrerendering: false;
viteConfig: null;
_isProduction: true;
assetsManifest: import("../../types/ViteManifest.js").ViteManifest;
_viteDevServer: null;
viteConfigRuntime: {
root: string;
build: {
outDir: string;
};
_baseViteOriginal: string;
vitePluginServerEntry: {
inject: boolean | undefined;
};
};
_usesClientRouter: boolean;
baseServer: string;
baseAssets: string;
isClientSide: false;
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
});
_pageFilesAll: PageFile[];
_baseServer: string;
_baseAssets: string;
_pageContextInit: import("../runtime/renderPage.js").PageContextInit;
_urlRewrite: null;
_urlHandler: ((url: string) => string) | null;
isClientSideNavigation: boolean;
} & {
config: import("../../types/index.js").ConfigResolved;
_source: import("../../shared/page-configs/resolveVikeConfigPublic.js").Source;
_sources: import("../../shared/page-configs/resolveVikeConfigPublic.js").Sources;
_from: import("../../shared/page-configs/resolveVikeConfigPublic.js").From;
} & {
urlParsed: import("../runtime/utils.js").UrlPublic;
urlPathname: string;
url: string;
} & {
headers: Record<string, string> | null;
} & {
_urlHandler: null;
_httpRequestId: null;
_urlRewrite: null;
_noExtraDir: boolean | null;
_prerenderContext: PrerenderContext;
_providedByHook: ProvidedByHook;
_urlOriginalModifiedByHook: ProvidedByHookTransformer;
is404: boolean;
} & import("../../shared/route/index.js").PageContextFromRoute & Record<"pageId", string>) | ({
_isOriginalObject: true;
isPageContext: true;
} & {
isClientSide: false;
isPrerendering: boolean;
} & Pick<import("../../types/PageContext.js").PageContextInternalServer, "urlOriginal" | "headersOriginal"> & {
url?: string;
headers?: Record<string, string>;
} & {
_globalContext: {
isGlobalContext: true;
_isOriginalObject: true;
_virtualFileExports: unknown;
_pageFilesAll: PageFile[];
_pageConfigs: import("../../types/PageConfig.js").PageConfigRuntime[];
_pageConfigGlobal: import("../../types/PageConfig.js").PageConfigGlobalRuntime;
_allPageIds: string[];
_vikeConfigPublicGlobal: {
config: import("../../types/index.js").ConfigResolved;
_source: import("../../shared/page-configs/resolveVikeConfigPublic.js").Source;
_sources: import("../../shared/page-configs/resolveVikeConfigPublic.js").Sources;
_from: import("../../shared/page-configs/resolveVikeConfigPublic.js").From;
};
config: import("../../types/index.js").ConfigResolved;
pages: {
[k: string]: import("../../shared/page-configs/resolveVikeConfigPublic.js").VikeConfigPublicPageEager;
};
} & ({
_isProduction: false;
_isPrerendering: false;
assetsManifest: null;
_viteDevServer: import("vite").ViteDevServer;
viteConfig: ResolvedConfig;
viteConfigRuntime: {
root: string;
build: {
outDir: string;
};
_baseViteOriginal: string;
vitePluginServerEntry: {
inject: boolean | undefined;
};
};
baseServer: string;
baseAssets: string;
isClientSide: false;
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
} | {
_isPrerendering: true;
viteConfig: ResolvedConfig;
_isProduction: true;
assetsManifest: import("../../types/ViteManifest.js").ViteManifest;
_viteDevServer: null;
viteConfigRuntime: {
root: string;
build: {
outDir: string;
};
_baseViteOriginal: string;
vitePluginServerEntry: {
inject: boolean | undefined;
};
};
_usesClientRouter: boolean;
baseServer: string;
baseAssets: string;
isClientSide: false;
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
} | {
_isPrerendering: false;
viteConfig: null;
_isProduction: true;
assetsManifest: import("../../types/ViteManifest.js").ViteManifest;
_viteDevServer: null;
viteConfigRuntime: {
root: string;
build: {
outDir: string;
};
_baseViteOriginal: string;
vitePluginServerEntry: {
inject: boolean | undefined;
};
};
_usesClientRouter: boolean;
baseServer: string;
baseAssets: string;
isClientSide: false;
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
});
_pageFilesAll: PageFile[];
_baseServer: string;
_baseAssets: string;
_pageContextInit: import("../runtime/renderPage.js").PageContextInit;
_urlRewrite: null;
_urlHandler: ((url: string) => string) | null;
isClientSideNavigation: boolean;
} & {
config: import("../../types/index.js").ConfigResolved;
_source: import("../../shared/page-configs/resolveVikeConfigPublic.js").Source;
_sources: import("../../shared/page-configs/resolveVikeConfigPublic.js").Sources;
_from: import("../../shared/page-configs/resolveVikeConfigPublic.js").From;
} & {
urlParsed: import("../runtime/utils.js").UrlPublic;
urlPathname: string;
url: string;
} & {
headers: Record<string, string> | null;
} & {
_urlHandler: null;
_httpRequestId: null;
_urlRewrite: null;
_noExtraDir: boolean | null;
_prerenderContext: PrerenderContext;
_providedByHook: ProvidedByHook;
_urlOriginalModifiedByHook: ProvidedByHookTransformer;
is404: boolean;
} & {
pageId: string;
_debugRouteMatches: never[];
routeParams: {};
})) & import("../../shared/getPageFiles.js").VikeConfigPublicPageLazy) & {
Page: unknown;
_isHtmlOnly: boolean;
_passToClient: string[];
_pageFilePathsLoaded: string[];
} & {
__getPageAssets: () => Promise<import("../runtime/renderPage/getPageAssets.js").PageAsset[]>;
})) & {
_usesClientRouter: boolean;
}>;