vike 0.4.228 → 0.4.229
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/__internal/index.js +2 -2
- package/dist/cjs/client/client-routing-runtime/globalContext.js +49 -0
- package/dist/cjs/client/server-routing-runtime/globalContext.js +41 -0
- package/dist/cjs/client/server-routing-runtime/utils.js +1 -1
- package/dist/cjs/client/shared/createGetGlobalContextClient.js +58 -0
- package/dist/cjs/client/shared/getJsonSerializedInHtml.js +31 -0
- package/dist/cjs/client/shared/utils.js +22 -0
- package/dist/cjs/node/plugin/plugins/baseUrls.js +1 -1
- package/dist/cjs/node/plugin/plugins/build/handleAssetsManifest.js +10 -5
- package/dist/cjs/node/plugin/plugins/build/pluginBuildApp.js +1 -1
- package/dist/cjs/node/plugin/plugins/build/pluginBuildConfig.js +3 -10
- package/dist/cjs/node/plugin/plugins/build/pluginBuildEntry.js +9 -5
- package/dist/cjs/node/plugin/plugins/build/pluginModuleBanner.js +5 -1
- package/dist/cjs/node/plugin/plugins/commonConfig/assertResolveAlias.js +1 -1
- package/dist/cjs/node/plugin/plugins/commonConfig.js +14 -3
- package/dist/cjs/node/plugin/plugins/devConfig/determineFsAllowList.js +2 -7
- package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +1 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +10 -0
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.js +2 -0
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +2 -2
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/{transformPointerImports.js → pointerImports.js} +13 -0
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.js +20 -19
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +13 -10
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +11 -11
- package/dist/cjs/node/plugin/shared/getFilePath.js +2 -2
- package/dist/cjs/node/plugin/shared/resolveClientEntriesDev.js +7 -19
- package/dist/cjs/node/plugin/utils.js +1 -0
- package/dist/cjs/node/prerender/runPrerender.js +44 -41
- package/dist/cjs/node/prerender/utils.js +1 -1
- package/dist/cjs/node/runtime/globalContext.js +102 -125
- package/dist/cjs/node/runtime/html/injectAssets/getHtmlTags.js +18 -5
- package/dist/cjs/node/runtime/html/injectAssets/getViteDevScript.js +2 -2
- package/dist/cjs/node/runtime/html/propKeys.js +47 -0
- package/dist/cjs/node/runtime/html/renderHtml.js +1 -1
- package/dist/cjs/node/runtime/html/{serializePageContextClientSide.js → serializeContext.js} +37 -67
- package/dist/cjs/node/runtime/index-deprecated.js +9 -38
- package/dist/cjs/node/runtime/index.js +56 -2
- package/dist/cjs/node/runtime/renderPage/analyzePage.js +1 -1
- package/dist/cjs/node/runtime/renderPage/createHttpResponse.js +8 -3
- package/dist/cjs/node/runtime/renderPage/createPageContextServerSide.js +73 -0
- package/dist/cjs/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +2 -2
- package/dist/cjs/node/runtime/renderPage/executeOnRenderHtmlHook.js +2 -2
- package/dist/cjs/node/runtime/renderPage/getPageAssets/getManifestEntry.js +1 -1
- package/dist/cjs/node/runtime/renderPage/getPageAssets/retrieveAssetsDev.js +1 -17
- package/dist/cjs/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +1 -1
- package/dist/cjs/node/runtime/renderPage/getPageAssets.js +2 -2
- package/dist/cjs/node/runtime/renderPage/handleErrorWithoutErrorPage.js +1 -1
- package/dist/cjs/node/runtime/renderPage/loadUserFilesServerSide.js +1 -1
- package/dist/cjs/node/runtime/renderPage/log404/index.js +1 -1
- package/dist/cjs/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +1 -1
- package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +3 -68
- package/dist/cjs/node/runtime/renderPage.js +102 -81
- package/dist/cjs/node/runtime/universal-middleware.js +7 -1
- package/dist/cjs/node/runtime/utils.js +3 -2
- package/dist/cjs/shared/assertPageContextProvidedByUser.js +1 -1
- package/dist/cjs/shared/createGlobalContextShared.js +54 -0
- package/dist/cjs/shared/createPageContextShared.js +17 -0
- package/dist/cjs/shared/getPageFiles/fileTypes.js +1 -1
- package/dist/cjs/shared/hooks/executeHookGeneric.js +18 -0
- package/dist/cjs/shared/hooks/getHook.js +45 -27
- package/dist/cjs/shared/htmlElementIds.js +5 -0
- package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +3 -7
- package/dist/cjs/shared/route/executeGuardHook.js +1 -1
- package/dist/cjs/shared/route/loadPageRoutes.js +2 -1
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/catchInfiniteLoop.js +3 -3
- package/dist/cjs/utils/getPublicProxy.js +27 -0
- package/dist/cjs/utils/isImportPath.js +21 -0
- package/dist/cjs/utils/objectAssign.js +6 -10
- package/dist/cjs/utils/objectReplace.js +4 -4
- package/dist/cjs/utils/{isNpmPackage.js → parseNpmPackage.js} +23 -23
- package/dist/cjs/utils/path.js +12 -2
- package/dist/cjs/utils/requireResolve.js +134 -53
- package/dist/esm/__internal/index.js +3 -3
- package/dist/esm/client/client-routing-runtime/createPageContext.d.ts +29 -10
- package/dist/esm/client/client-routing-runtime/createPageContext.js +23 -22
- package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +5 -4
- package/dist/esm/client/client-routing-runtime/globalContext.d.ts +20 -0
- package/dist/esm/client/client-routing-runtime/globalContext.js +13 -0
- package/dist/esm/client/client-routing-runtime/initOnLinkClick.js +2 -2
- package/dist/esm/client/client-routing-runtime/prefetch.js +2 -2
- package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +8 -7
- package/dist/esm/client/client-routing-runtime/utils.d.ts +0 -1
- package/dist/esm/client/client-routing-runtime/utils.js +0 -1
- package/dist/esm/client/index.d.ts +1 -0
- package/dist/esm/client/index.js +4 -0
- package/dist/esm/client/node.js +1 -3
- package/dist/esm/client/server-routing-runtime/createPageContextClientSide.d.ts +36 -0
- package/dist/esm/client/server-routing-runtime/createPageContextClientSide.js +47 -0
- package/dist/esm/client/server-routing-runtime/entry.js +2 -2
- package/dist/esm/client/server-routing-runtime/globalContext.d.ts +17 -0
- package/dist/esm/client/server-routing-runtime/globalContext.js +5 -0
- package/dist/esm/client/server-routing-runtime/utils.d.ts +1 -1
- package/dist/esm/client/server-routing-runtime/utils.js +1 -1
- package/dist/esm/client/shared/createGetGlobalContextClient.d.ts +23 -0
- package/dist/esm/client/shared/createGetGlobalContextClient.js +58 -0
- package/dist/esm/client/shared/executeOnRenderClientHook.js +5 -4
- package/dist/esm/client/shared/{getPageContextSerializedInHtml.d.ts → getJsonSerializedInHtml.d.ts} +2 -0
- package/dist/esm/client/shared/getJsonSerializedInHtml.js +29 -0
- package/dist/esm/client/shared/removeFoucBuster.js +1 -0
- package/dist/esm/client/shared/utils.d.ts +4 -0
- package/dist/esm/client/shared/utils.js +4 -0
- package/dist/esm/node/plugin/plugins/baseUrls.js +2 -2
- package/dist/esm/node/plugin/plugins/build/handleAssetsManifest.js +11 -6
- package/dist/esm/node/plugin/plugins/build/pluginBuildApp.js +2 -2
- package/dist/esm/node/plugin/plugins/build/pluginBuildConfig.js +4 -11
- package/dist/esm/node/plugin/plugins/build/pluginBuildEntry.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/build/pluginBuildEntry.js +10 -6
- package/dist/esm/node/plugin/plugins/build/pluginModuleBanner.js +5 -1
- package/dist/esm/node/plugin/plugins/commonConfig/assertResolveAlias.js +2 -2
- package/dist/esm/node/plugin/plugins/commonConfig.d.ts +2 -0
- package/dist/esm/node/plugin/plugins/commonConfig.js +15 -4
- package/dist/esm/node/plugin/plugins/devConfig/determineFsAllowList.js +3 -8
- package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +2 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +10 -0
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.js +2 -0
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/{transformPointerImports.d.ts → pointerImports.d.ts} +2 -0
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/{transformPointerImports.js → pointerImports.js} +14 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.js +20 -19
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +13 -10
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +11 -11
- package/dist/esm/node/plugin/shared/getFilePath.js +3 -3
- package/dist/esm/node/plugin/shared/resolveClientEntriesDev.js +8 -20
- package/dist/esm/node/plugin/utils.d.ts +1 -0
- package/dist/esm/node/plugin/utils.js +1 -0
- package/dist/esm/node/prerender/runPrerender.d.ts +314 -5
- package/dist/esm/node/prerender/runPrerender.js +48 -45
- package/dist/esm/node/prerender/utils.d.ts +1 -1
- package/dist/esm/node/prerender/utils.js +1 -1
- package/dist/esm/node/runtime/globalContext.d.ts +425 -47
- package/dist/esm/node/runtime/globalContext.js +103 -126
- package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +18 -5
- package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.d.ts +2 -2
- package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.js +2 -2
- package/dist/esm/node/runtime/html/injectAssets.d.ts +3 -3
- package/dist/esm/node/runtime/html/propKeys.d.ts +8 -0
- package/dist/esm/node/runtime/html/propKeys.js +45 -0
- package/dist/esm/node/runtime/html/renderHtml.js +1 -1
- package/dist/esm/node/runtime/html/{serializePageContextClientSide.d.ts → serializeContext.d.ts} +7 -6
- package/dist/esm/node/runtime/html/{serializePageContextClientSide.js → serializeContext.js} +36 -67
- package/dist/esm/node/runtime/index-deprecated.d.ts +1 -16
- package/dist/esm/node/runtime/index-deprecated.js +9 -36
- package/dist/esm/node/runtime/index.d.ts +23 -1
- package/dist/esm/node/runtime/index.js +38 -3
- package/dist/esm/node/runtime/renderPage/analyzePage.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/analyzePage.js +1 -1
- package/dist/esm/node/runtime/renderPage/createHttpResponse.d.ts +5 -4
- package/dist/esm/node/runtime/renderPage/createHttpResponse.js +8 -3
- package/dist/esm/node/runtime/renderPage/createPageContextServerSide.d.ts +155 -0
- package/dist/esm/node/runtime/renderPage/createPageContextServerSide.js +71 -0
- package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +3 -3
- package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.d.ts +1 -1
- package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.js +3 -3
- package/dist/esm/node/runtime/renderPage/getPageAssets/getManifestEntry.js +2 -2
- package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsDev.js +1 -17
- package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +2 -2
- package/dist/esm/node/runtime/renderPage/getPageAssets.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/getPageAssets.js +2 -2
- package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.js +1 -1
- package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +1 -1
- package/dist/esm/node/runtime/renderPage/log404/index.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/log404/index.js +1 -1
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +3 -3
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +1 -1
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +225 -179
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +4 -69
- package/dist/esm/node/runtime/renderPage.d.ts +146 -7
- package/dist/esm/node/runtime/renderPage.js +105 -84
- package/dist/esm/node/runtime/universal-middleware.js +7 -1
- package/dist/esm/node/runtime/utils.d.ts +3 -2
- package/dist/esm/node/runtime/utils.js +3 -2
- package/dist/esm/shared/VikeNamespace.d.ts +35 -13
- package/dist/esm/shared/assertPageContextProvidedByUser.js +1 -1
- package/dist/esm/shared/createGlobalContextShared.d.ts +39 -0
- package/dist/esm/shared/createGlobalContextShared.js +51 -0
- package/dist/esm/shared/createPageContextShared.d.ts +9 -0
- package/dist/esm/shared/createPageContextShared.js +15 -0
- package/dist/esm/shared/getPageFiles/fileTypes.js +1 -1
- package/dist/esm/shared/hooks/executeHookGeneric.d.ts +8 -0
- package/dist/esm/shared/hooks/executeHookGeneric.js +16 -0
- package/dist/esm/shared/hooks/getHook.d.ts +5 -3
- package/dist/esm/shared/hooks/getHook.js +47 -29
- package/dist/esm/shared/htmlElementIds.d.ts +2 -0
- package/dist/esm/shared/htmlElementIds.js +2 -0
- package/dist/esm/shared/page-configs/Config.d.ts +12 -2
- package/dist/esm/shared/page-configs/getConfigDefinedAt.d.ts +1 -1
- package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +3 -7
- package/dist/esm/shared/route/executeGuardHook.js +2 -2
- package/dist/esm/shared/route/loadPageRoutes.js +2 -1
- package/dist/esm/shared/types.d.ts +64 -32
- package/dist/esm/types/index.d.ts +1 -5
- package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/utils/catchInfiniteLoop.js +4 -4
- package/dist/esm/utils/getGlobalObject.d.ts +1 -1
- package/dist/esm/utils/getPublicProxy.d.ts +2 -0
- package/dist/esm/utils/getPublicProxy.js +25 -0
- package/dist/esm/utils/isImportPath.d.ts +4 -0
- package/dist/esm/utils/isImportPath.js +19 -0
- package/dist/esm/utils/objectAssign.d.ts +1 -1
- package/dist/esm/utils/objectAssign.js +6 -10
- package/dist/esm/utils/objectReplace.d.ts +1 -1
- package/dist/esm/utils/objectReplace.js +4 -4
- package/dist/esm/utils/parseNpmPackage.d.ts +17 -0
- package/dist/esm/utils/{isNpmPackage.js → parseNpmPackage.js} +23 -23
- package/dist/esm/utils/path.d.ts +1 -1
- package/dist/esm/utils/path.js +12 -2
- package/dist/esm/utils/requireResolve.d.ts +20 -7
- package/dist/esm/utils/requireResolve.js +134 -53
- package/package.json +14 -13
- package/dist/cjs/node/runtime/index-common.js +0 -27
- package/dist/cjs/utils/makePublicCopy.js +0 -32
- package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +0 -19
- package/dist/esm/client/server-routing-runtime/getPageContext.js +0 -44
- package/dist/esm/client/shared/getPageContextSerializedInHtml.js +0 -20
- package/dist/esm/node/runtime/index-common.d.ts +0 -8
- package/dist/esm/node/runtime/index-common.js +0 -10
- package/dist/esm/utils/isNpmPackage.d.ts +0 -17
- package/dist/esm/utils/makePublicCopy.d.ts +0 -3
- package/dist/esm/utils/makePublicCopy.js +0 -30
|
@@ -4,18 +4,31 @@ export { runPrerenderFromAutoRun };
|
|
|
4
4
|
export { runPrerender_forceExit };
|
|
5
5
|
export type { PrerenderOptions };
|
|
6
6
|
export type { PrerenderContextPublic };
|
|
7
|
+
import type { PageFile } from '../../shared/getPageFiles.js';
|
|
8
|
+
import { type GlobalContextServerInternal, type GlobalContextServer } from '../runtime/globalContext.js';
|
|
7
9
|
import type { InlineConfig, ResolvedConfig } from 'vite';
|
|
8
10
|
import type { APIOptions } from '../api/types.js';
|
|
9
|
-
import type { PageContextServer } from '../../shared/types.js';
|
|
10
11
|
type ProvidedByHook = null | {
|
|
11
12
|
hookFilePath: string;
|
|
12
13
|
hookName: 'onBeforePrerenderStart' | 'prerender';
|
|
13
14
|
};
|
|
15
|
+
type ProvidedByHookTransformer = null | {
|
|
16
|
+
hookFilePath: string;
|
|
17
|
+
hookName: 'onPrerenderStart' | 'onBeforePrerender';
|
|
18
|
+
};
|
|
14
19
|
type PageContextPrerendered = {
|
|
15
20
|
urlOriginal: string;
|
|
16
21
|
_providedByHook?: ProvidedByHook;
|
|
17
22
|
pageId: string;
|
|
18
23
|
};
|
|
24
|
+
type PrerenderedPageContexts = Record<string, PageContextPrerendered>;
|
|
25
|
+
type PrerenderContext = {
|
|
26
|
+
pageContexts: PageContext[];
|
|
27
|
+
output: Output;
|
|
28
|
+
_pageContextInit: Record<string, unknown> | null;
|
|
29
|
+
_noExtraDir: boolean | null;
|
|
30
|
+
_prerenderedPageContexts: PrerenderedPageContexts;
|
|
31
|
+
};
|
|
19
32
|
type Output<PageContext = PageContextPrerendered> = {
|
|
20
33
|
filePath: string;
|
|
21
34
|
fileType: FileType;
|
|
@@ -23,6 +36,9 @@ type Output<PageContext = PageContextPrerendered> = {
|
|
|
23
36
|
pageContext: PageContext;
|
|
24
37
|
}[];
|
|
25
38
|
type FileType = 'HTML' | 'JSON';
|
|
39
|
+
type PageContext = Awaited<ReturnType<typeof createPageContextPrerendering>> & {
|
|
40
|
+
_urlOriginalBeforeHook?: string;
|
|
41
|
+
};
|
|
26
42
|
type PrerenderOptions = APIOptions & {
|
|
27
43
|
/** Initial `pageContext` values */
|
|
28
44
|
pageContextInit?: Record<string, unknown>;
|
|
@@ -50,8 +66,301 @@ declare function runPrerenderFromCLIPrerenderCommand(): Promise<void>;
|
|
|
50
66
|
declare function runPrerenderFromAutoRun(viteConfig: InlineConfig | undefined): Promise<{
|
|
51
67
|
forceExit: boolean;
|
|
52
68
|
}>;
|
|
69
|
+
declare function createPageContextPrerendering(urlOriginal: string, prerenderContext: PrerenderContext, globalContext: GlobalContextServerInternal, globalContext_public: GlobalContextServer, is404: boolean, pageId: string | undefined, providedByHook: ProvidedByHook): Promise<((({
|
|
70
|
+
isClientSide: boolean;
|
|
71
|
+
isPrerendering: boolean;
|
|
72
|
+
} & Pick<import("../../shared/types.js").PageContextBuiltInServerInternal, "urlOriginal" | "headersOriginal"> & {
|
|
73
|
+
url?: string;
|
|
74
|
+
headers?: Record<string, string>;
|
|
75
|
+
} & {
|
|
76
|
+
globalContext: GlobalContextServer;
|
|
77
|
+
_globalContext: {
|
|
78
|
+
isGlobalContext: true;
|
|
79
|
+
_virtualFileExports: unknown;
|
|
80
|
+
_pageFilesAll: PageFile[];
|
|
81
|
+
_pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
|
|
82
|
+
_pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
83
|
+
_allPageIds: string[];
|
|
84
|
+
config: import("../../types/index.js").ConfigResolved;
|
|
85
|
+
pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
|
|
86
|
+
} & ({
|
|
87
|
+
_isProduction: false;
|
|
88
|
+
_isPrerendering: false;
|
|
89
|
+
assetsManifest: null;
|
|
90
|
+
_viteDevServer: import("vite").ViteDevServer;
|
|
91
|
+
viteConfig: ResolvedConfig;
|
|
92
|
+
viteConfigRuntime: {
|
|
93
|
+
root: string;
|
|
94
|
+
build: {
|
|
95
|
+
outDir: string;
|
|
96
|
+
};
|
|
97
|
+
_baseViteOriginal: string;
|
|
98
|
+
vitePluginServerEntry: {
|
|
99
|
+
inject: boolean | undefined;
|
|
100
|
+
};
|
|
101
|
+
};
|
|
102
|
+
baseServer: string;
|
|
103
|
+
baseAssets: string;
|
|
104
|
+
isClientSide: false;
|
|
105
|
+
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
|
|
106
|
+
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
107
|
+
isGlobalContext: true;
|
|
108
|
+
_virtualFileExports: unknown;
|
|
109
|
+
_pageFilesAll: PageFile[];
|
|
110
|
+
_pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
|
|
111
|
+
_pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
112
|
+
_allPageIds: string[];
|
|
113
|
+
config: import("../../types/index.js").ConfigResolved;
|
|
114
|
+
pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
|
|
115
|
+
} | {
|
|
116
|
+
_isPrerendering: true;
|
|
117
|
+
viteConfig: ResolvedConfig;
|
|
118
|
+
_isProduction: true;
|
|
119
|
+
assetsManifest: import("../shared/ViteManifest.js").ViteManifest;
|
|
120
|
+
_viteDevServer: null;
|
|
121
|
+
viteConfigRuntime: {
|
|
122
|
+
root: string;
|
|
123
|
+
build: {
|
|
124
|
+
outDir: string;
|
|
125
|
+
};
|
|
126
|
+
_baseViteOriginal: string;
|
|
127
|
+
vitePluginServerEntry: {
|
|
128
|
+
inject: boolean | undefined;
|
|
129
|
+
};
|
|
130
|
+
};
|
|
131
|
+
_usesClientRouter: boolean;
|
|
132
|
+
baseServer: string;
|
|
133
|
+
baseAssets: string;
|
|
134
|
+
isClientSide: false;
|
|
135
|
+
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
|
|
136
|
+
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
137
|
+
isGlobalContext: true;
|
|
138
|
+
_virtualFileExports: unknown;
|
|
139
|
+
_pageFilesAll: PageFile[];
|
|
140
|
+
_pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
|
|
141
|
+
_pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
142
|
+
_allPageIds: string[];
|
|
143
|
+
config: import("../../types/index.js").ConfigResolved;
|
|
144
|
+
pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
|
|
145
|
+
} | {
|
|
146
|
+
_isPrerendering: false;
|
|
147
|
+
viteConfig: null;
|
|
148
|
+
_isProduction: true;
|
|
149
|
+
assetsManifest: import("../shared/ViteManifest.js").ViteManifest;
|
|
150
|
+
_viteDevServer: null;
|
|
151
|
+
viteConfigRuntime: {
|
|
152
|
+
root: string;
|
|
153
|
+
build: {
|
|
154
|
+
outDir: string;
|
|
155
|
+
};
|
|
156
|
+
_baseViteOriginal: string;
|
|
157
|
+
vitePluginServerEntry: {
|
|
158
|
+
inject: boolean | undefined;
|
|
159
|
+
};
|
|
160
|
+
};
|
|
161
|
+
_usesClientRouter: boolean;
|
|
162
|
+
baseServer: string;
|
|
163
|
+
baseAssets: string;
|
|
164
|
+
isClientSide: false;
|
|
165
|
+
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
|
|
166
|
+
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
167
|
+
isGlobalContext: true;
|
|
168
|
+
_virtualFileExports: unknown;
|
|
169
|
+
_pageFilesAll: PageFile[];
|
|
170
|
+
_pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
|
|
171
|
+
_pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
172
|
+
_allPageIds: string[];
|
|
173
|
+
config: import("../../types/index.js").ConfigResolved;
|
|
174
|
+
pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
|
|
175
|
+
});
|
|
176
|
+
_baseServer: string;
|
|
177
|
+
_baseAssets: string;
|
|
178
|
+
_includeAssetsImportedByServer: boolean;
|
|
179
|
+
_pageFilesAll: PageFile[];
|
|
180
|
+
_pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
|
|
181
|
+
_pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
182
|
+
_allPageIds: string[];
|
|
183
|
+
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
|
|
184
|
+
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
185
|
+
_pageContextInit: import("../runtime/renderPage.js").PageContextInit;
|
|
186
|
+
_urlRewrite: null;
|
|
187
|
+
_urlHandler: ((url: string) => string) | null;
|
|
188
|
+
isClientSideNavigation: boolean;
|
|
189
|
+
} & {
|
|
190
|
+
urlParsed: import("../shared/utils.js").UrlPublic;
|
|
191
|
+
urlPathname: string;
|
|
192
|
+
url: string;
|
|
193
|
+
} & {
|
|
194
|
+
headers: Record<string, string> | null;
|
|
195
|
+
} & {
|
|
196
|
+
config: import("../../types/index.js").ConfigResolved;
|
|
197
|
+
_source: import("../../shared/page-configs/getPageConfigUserFriendly.js").Source;
|
|
198
|
+
_sources: import("../../shared/page-configs/getPageConfigUserFriendly.js").Sources;
|
|
199
|
+
_from: import("../../shared/page-configs/getPageConfigUserFriendly.js").From;
|
|
200
|
+
isPageContext: true;
|
|
201
|
+
} & {
|
|
202
|
+
_urlHandler: null;
|
|
203
|
+
_httpRequestId: null;
|
|
204
|
+
_urlRewrite: null;
|
|
205
|
+
_noExtraDir: boolean | null;
|
|
206
|
+
_prerenderContext: PrerenderContext;
|
|
207
|
+
_providedByHook: ProvidedByHook;
|
|
208
|
+
_urlOriginalModifiedByHook: ProvidedByHookTransformer;
|
|
209
|
+
is404: boolean;
|
|
210
|
+
} & import("../../shared/route/index.js").PageContextFromRoute & Record<"pageId", string>) | ({
|
|
211
|
+
isClientSide: boolean;
|
|
212
|
+
isPrerendering: boolean;
|
|
213
|
+
} & Pick<import("../../shared/types.js").PageContextBuiltInServerInternal, "urlOriginal" | "headersOriginal"> & {
|
|
214
|
+
url?: string;
|
|
215
|
+
headers?: Record<string, string>;
|
|
216
|
+
} & {
|
|
217
|
+
globalContext: GlobalContextServer;
|
|
218
|
+
_globalContext: {
|
|
219
|
+
isGlobalContext: true;
|
|
220
|
+
_virtualFileExports: unknown;
|
|
221
|
+
_pageFilesAll: PageFile[];
|
|
222
|
+
_pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
|
|
223
|
+
_pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
224
|
+
_allPageIds: string[];
|
|
225
|
+
config: import("../../types/index.js").ConfigResolved;
|
|
226
|
+
pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
|
|
227
|
+
} & ({
|
|
228
|
+
_isProduction: false;
|
|
229
|
+
_isPrerendering: false;
|
|
230
|
+
assetsManifest: null;
|
|
231
|
+
_viteDevServer: import("vite").ViteDevServer;
|
|
232
|
+
viteConfig: ResolvedConfig;
|
|
233
|
+
viteConfigRuntime: {
|
|
234
|
+
root: string;
|
|
235
|
+
build: {
|
|
236
|
+
outDir: string;
|
|
237
|
+
};
|
|
238
|
+
_baseViteOriginal: string;
|
|
239
|
+
vitePluginServerEntry: {
|
|
240
|
+
inject: boolean | undefined;
|
|
241
|
+
};
|
|
242
|
+
};
|
|
243
|
+
baseServer: string;
|
|
244
|
+
baseAssets: string;
|
|
245
|
+
isClientSide: false;
|
|
246
|
+
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
|
|
247
|
+
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
248
|
+
isGlobalContext: true;
|
|
249
|
+
_virtualFileExports: unknown;
|
|
250
|
+
_pageFilesAll: PageFile[];
|
|
251
|
+
_pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
|
|
252
|
+
_pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
253
|
+
_allPageIds: string[];
|
|
254
|
+
config: import("../../types/index.js").ConfigResolved;
|
|
255
|
+
pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
|
|
256
|
+
} | {
|
|
257
|
+
_isPrerendering: true;
|
|
258
|
+
viteConfig: ResolvedConfig;
|
|
259
|
+
_isProduction: true;
|
|
260
|
+
assetsManifest: import("../shared/ViteManifest.js").ViteManifest;
|
|
261
|
+
_viteDevServer: null;
|
|
262
|
+
viteConfigRuntime: {
|
|
263
|
+
root: string;
|
|
264
|
+
build: {
|
|
265
|
+
outDir: string;
|
|
266
|
+
};
|
|
267
|
+
_baseViteOriginal: string;
|
|
268
|
+
vitePluginServerEntry: {
|
|
269
|
+
inject: boolean | undefined;
|
|
270
|
+
};
|
|
271
|
+
};
|
|
272
|
+
_usesClientRouter: boolean;
|
|
273
|
+
baseServer: string;
|
|
274
|
+
baseAssets: string;
|
|
275
|
+
isClientSide: false;
|
|
276
|
+
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
|
|
277
|
+
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
278
|
+
isGlobalContext: true;
|
|
279
|
+
_virtualFileExports: unknown;
|
|
280
|
+
_pageFilesAll: PageFile[];
|
|
281
|
+
_pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
|
|
282
|
+
_pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
283
|
+
_allPageIds: string[];
|
|
284
|
+
config: import("../../types/index.js").ConfigResolved;
|
|
285
|
+
pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
|
|
286
|
+
} | {
|
|
287
|
+
_isPrerendering: false;
|
|
288
|
+
viteConfig: null;
|
|
289
|
+
_isProduction: true;
|
|
290
|
+
assetsManifest: import("../shared/ViteManifest.js").ViteManifest;
|
|
291
|
+
_viteDevServer: null;
|
|
292
|
+
viteConfigRuntime: {
|
|
293
|
+
root: string;
|
|
294
|
+
build: {
|
|
295
|
+
outDir: string;
|
|
296
|
+
};
|
|
297
|
+
_baseViteOriginal: string;
|
|
298
|
+
vitePluginServerEntry: {
|
|
299
|
+
inject: boolean | undefined;
|
|
300
|
+
};
|
|
301
|
+
};
|
|
302
|
+
_usesClientRouter: boolean;
|
|
303
|
+
baseServer: string;
|
|
304
|
+
baseAssets: string;
|
|
305
|
+
isClientSide: false;
|
|
306
|
+
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
|
|
307
|
+
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
308
|
+
isGlobalContext: true;
|
|
309
|
+
_virtualFileExports: unknown;
|
|
310
|
+
_pageFilesAll: PageFile[];
|
|
311
|
+
_pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
|
|
312
|
+
_pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
313
|
+
_allPageIds: string[];
|
|
314
|
+
config: import("../../types/index.js").ConfigResolved;
|
|
315
|
+
pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
|
|
316
|
+
});
|
|
317
|
+
_baseServer: string;
|
|
318
|
+
_baseAssets: string;
|
|
319
|
+
_includeAssetsImportedByServer: boolean;
|
|
320
|
+
_pageFilesAll: PageFile[];
|
|
321
|
+
_pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
|
|
322
|
+
_pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
323
|
+
_allPageIds: string[];
|
|
324
|
+
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
|
|
325
|
+
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
326
|
+
_pageContextInit: import("../runtime/renderPage.js").PageContextInit;
|
|
327
|
+
_urlRewrite: null;
|
|
328
|
+
_urlHandler: ((url: string) => string) | null;
|
|
329
|
+
isClientSideNavigation: boolean;
|
|
330
|
+
} & {
|
|
331
|
+
urlParsed: import("../shared/utils.js").UrlPublic;
|
|
332
|
+
urlPathname: string;
|
|
333
|
+
url: string;
|
|
334
|
+
} & {
|
|
335
|
+
headers: Record<string, string> | null;
|
|
336
|
+
} & {
|
|
337
|
+
config: import("../../types/index.js").ConfigResolved;
|
|
338
|
+
_source: import("../../shared/page-configs/getPageConfigUserFriendly.js").Source;
|
|
339
|
+
_sources: import("../../shared/page-configs/getPageConfigUserFriendly.js").Sources;
|
|
340
|
+
_from: import("../../shared/page-configs/getPageConfigUserFriendly.js").From;
|
|
341
|
+
isPageContext: true;
|
|
342
|
+
} & {
|
|
343
|
+
_urlHandler: null;
|
|
344
|
+
_httpRequestId: null;
|
|
345
|
+
_urlRewrite: null;
|
|
346
|
+
_noExtraDir: boolean | null;
|
|
347
|
+
_prerenderContext: PrerenderContext;
|
|
348
|
+
_providedByHook: ProvidedByHook;
|
|
349
|
+
_urlOriginalModifiedByHook: ProvidedByHookTransformer;
|
|
350
|
+
is404: boolean;
|
|
351
|
+
} & {
|
|
352
|
+
pageId: string;
|
|
353
|
+
_debugRouteMatches: never[];
|
|
354
|
+
routeParams: {};
|
|
355
|
+
})) & import("../../shared/getPageFiles.js").PageConfigUserFriendlyOld & {
|
|
356
|
+
Page: unknown;
|
|
357
|
+
_isHtmlOnly: boolean;
|
|
358
|
+
_passToClient: string[];
|
|
359
|
+
_pageFilePathsLoaded: string[];
|
|
360
|
+
} & {
|
|
361
|
+
__getPageAssets: () => Promise<import("../runtime/renderPage/getPageAssets.js").PageAsset[]>;
|
|
362
|
+
}) & {
|
|
363
|
+
_usesClientRouter: boolean;
|
|
364
|
+
}>;
|
|
53
365
|
declare function runPrerender_forceExit(): void;
|
|
54
|
-
type PrerenderContextPublic =
|
|
55
|
-
output: Output<PageContextServer>;
|
|
56
|
-
pageContexts: PageContextServer[];
|
|
57
|
-
};
|
|
366
|
+
type PrerenderContextPublic = Pick<PrerenderContext, 'output' | 'pageContexts'>;
|
|
@@ -4,11 +4,12 @@ export { runPrerenderFromAutoRun };
|
|
|
4
4
|
export { runPrerender_forceExit };
|
|
5
5
|
import path from 'path';
|
|
6
6
|
import { route } from '../../shared/route/index.js';
|
|
7
|
-
import { assert, assertUsage, assertWarning, hasProp, objectAssign, isObjectWithKeys, isCallable, isPropertyGetter, assertPosixPath, urlToFile, isPlainObject, pLimit, isArray, onSetupPrerender,
|
|
8
|
-
import { prerenderPage
|
|
7
|
+
import { assert, assertUsage, assertWarning, hasProp, objectAssign, isObjectWithKeys, isCallable, isPropertyGetter, assertPosixPath, urlToFile, isPlainObject, pLimit, isArray, onSetupPrerender, getPublicProxy, PROJECT_VERSION, preservePropertyGetters } from './utils.js';
|
|
8
|
+
import { prerenderPage } from '../runtime/renderPage/renderPageAlreadyRouted.js';
|
|
9
|
+
import { createPageContextServerSide } from '../runtime/renderPage/createPageContextServerSide.js';
|
|
9
10
|
import pc from '@brillout/picocolors';
|
|
10
11
|
import { cpus } from 'os';
|
|
11
|
-
import {
|
|
12
|
+
import { getGlobalContextServerInternal, initGlobalContext_runPrerender, setGlobalContext_isPrerendering } from '../runtime/globalContext.js';
|
|
12
13
|
import { resolveConfig } from 'vite';
|
|
13
14
|
import { getPageFilesServerSide } from '../../shared/getPageFiles.js';
|
|
14
15
|
import { getPageContextRequestUrl } from '../../shared/getPageContextRequestUrl.js';
|
|
@@ -29,7 +30,7 @@ import { resolvePrerenderConfigGlobal, resolvePrerenderConfigLocal } from './res
|
|
|
29
30
|
import { getOutDirs } from '../plugin/shared/getOutDirs.js';
|
|
30
31
|
import { isVikeCli } from '../cli/context.js';
|
|
31
32
|
import { isViteCliCall } from '../plugin/shared/isViteCliCall.js';
|
|
32
|
-
import {
|
|
33
|
+
import { getVikeConfigInternal } from '../plugin/plugins/commonConfig.js';
|
|
33
34
|
import fs from 'node:fs';
|
|
34
35
|
async function runPrerenderFromAPI(options = {}) {
|
|
35
36
|
return await runPrerender(options, 'prerender()');
|
|
@@ -76,7 +77,7 @@ async function runPrerender(options = {}, standaloneTrigger) {
|
|
|
76
77
|
await disableReactStreaming();
|
|
77
78
|
const viteConfig = await resolveConfig(options.viteConfig || {}, 'build', 'production');
|
|
78
79
|
const vikeConfig = await getVikeConfig(viteConfig);
|
|
79
|
-
const vike =
|
|
80
|
+
const vike = getVikeConfigInternal(viteConfig);
|
|
80
81
|
const { outDirClient, outDirServer } = getOutDirs(viteConfig);
|
|
81
82
|
const { root } = viteConfig;
|
|
82
83
|
const prerenderConfigGlobal = resolvePrerenderConfigGlobal(vikeConfig);
|
|
@@ -93,26 +94,26 @@ async function runPrerender(options = {}, standaloneTrigger) {
|
|
|
93
94
|
}
|
|
94
95
|
const concurrencyLimit = pLimit(parallel === false || parallel === 0 ? 1 : parallel === true || parallel === undefined ? cpus().length : parallel);
|
|
95
96
|
await initGlobalContext_runPrerender();
|
|
96
|
-
const globalContext = await
|
|
97
|
-
globalContext.
|
|
97
|
+
const { globalContext, globalContext_public } = await getGlobalContextServerInternal();
|
|
98
|
+
globalContext._pageFilesAll.forEach(assertExportNames);
|
|
98
99
|
const prerenderContext = {
|
|
99
|
-
noExtraDir,
|
|
100
100
|
pageContexts: [],
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
101
|
+
output: [],
|
|
102
|
+
_noExtraDir: noExtraDir,
|
|
103
|
+
_pageContextInit: options.pageContextInit ?? null,
|
|
104
|
+
_prerenderedPageContexts: {}
|
|
104
105
|
};
|
|
105
106
|
const doNotPrerenderList = [];
|
|
106
107
|
await collectDoNoPrerenderList(vikeConfig.pageConfigs, doNotPrerenderList, defaultLocalValue, concurrencyLimit, globalContext);
|
|
107
108
|
// Allow user to create `pageContext` for parameterized routes and/or bulk data fetching
|
|
108
109
|
// https://vike.dev/onBeforePrerenderStart
|
|
109
|
-
await callOnBeforePrerenderStartHooks(prerenderContext, globalContext, concurrencyLimit, doNotPrerenderList);
|
|
110
|
+
await callOnBeforePrerenderStartHooks(prerenderContext, globalContext, globalContext_public, concurrencyLimit, doNotPrerenderList);
|
|
110
111
|
// Create `pageContext` for each page with a static route
|
|
111
112
|
const urlList = getUrlListFromPagesWithStaticRoute(globalContext, doNotPrerenderList);
|
|
112
|
-
await
|
|
113
|
+
await createPageContexts(urlList, prerenderContext, globalContext, globalContext_public, concurrencyLimit, false);
|
|
113
114
|
// Create `pageContext` for 404 page
|
|
114
115
|
const urlList404 = getUrlList404(globalContext);
|
|
115
|
-
await
|
|
116
|
+
await createPageContexts(urlList404, prerenderContext, globalContext, globalContext_public, concurrencyLimit, true);
|
|
116
117
|
// Allow user to duplicate the list of `pageContext` for i18n
|
|
117
118
|
// https://vike.dev/onPrerenderStart
|
|
118
119
|
await callOnPrerenderStartHook(prerenderContext, globalContext, concurrencyLimit);
|
|
@@ -122,15 +123,15 @@ async function runPrerender(options = {}, standaloneTrigger) {
|
|
|
122
123
|
prerenderedCount++;
|
|
123
124
|
const { pageId } = htmlFile.pageContext;
|
|
124
125
|
assert(pageId);
|
|
125
|
-
prerenderContext.
|
|
126
|
+
prerenderContext._prerenderedPageContexts[pageId] = htmlFile.pageContext;
|
|
126
127
|
await writeFiles(htmlFile, root, outDirClient, options.onPagePrerender, prerenderContext.output, logLevel);
|
|
127
128
|
};
|
|
128
129
|
await prerenderPages(prerenderContext, concurrencyLimit, onComplete);
|
|
129
|
-
warnContradictoryNoPrerenderList(prerenderContext.
|
|
130
|
+
warnContradictoryNoPrerenderList(prerenderContext._prerenderedPageContexts, doNotPrerenderList);
|
|
130
131
|
if (logLevel === 'info') {
|
|
131
132
|
console.log(`${pc.green(`✓`)} ${prerenderedCount} HTML documents pre-rendered.`);
|
|
132
133
|
}
|
|
133
|
-
await warnMissingPages(prerenderContext.
|
|
134
|
+
await warnMissingPages(prerenderContext._prerenderedPageContexts, globalContext, doNotPrerenderList, partial);
|
|
134
135
|
const prerenderContextPublic = makePublic(prerenderContext);
|
|
135
136
|
objectAssign(vike.prerenderContext, prerenderContextPublic);
|
|
136
137
|
if (prerenderConfigGlobal.isPrerenderingEnabledForAllPages && !prerenderConfigGlobal.keepDistServer) {
|
|
@@ -157,7 +158,7 @@ async function collectDoNoPrerenderList(pageConfigs, doNotPrerenderList, default
|
|
|
157
158
|
});
|
|
158
159
|
// Old design
|
|
159
160
|
// TODO/v1-release: remove
|
|
160
|
-
await Promise.all(globalContext.
|
|
161
|
+
await Promise.all(globalContext._pageFilesAll
|
|
161
162
|
.filter((p) => {
|
|
162
163
|
assertExportNames(p);
|
|
163
164
|
if (!p.exportNames?.includes('doNotPrerender'))
|
|
@@ -169,8 +170,8 @@ async function collectDoNoPrerenderList(pageConfigs, doNotPrerenderList, default
|
|
|
169
170
|
assert(p.loadFile);
|
|
170
171
|
await p.loadFile();
|
|
171
172
|
})));
|
|
172
|
-
globalContext.
|
|
173
|
-
const pageFilesServerSide = getPageFilesServerSide(globalContext.
|
|
173
|
+
globalContext._allPageIds.forEach((pageId) => {
|
|
174
|
+
const pageFilesServerSide = getPageFilesServerSide(globalContext._pageFilesAll, pageId);
|
|
174
175
|
for (const p of pageFilesServerSide) {
|
|
175
176
|
if (!p.exportNames?.includes('doNotPrerender'))
|
|
176
177
|
continue;
|
|
@@ -194,10 +195,10 @@ function assertExportNames(pageFile) {
|
|
|
194
195
|
const { exportNames, fileType } = pageFile;
|
|
195
196
|
assert(exportNames || fileType === '.page.route' || fileType === '.css', pageFile.filePath);
|
|
196
197
|
}
|
|
197
|
-
async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext, concurrencyLimit, doNotPrerenderList) {
|
|
198
|
+
async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext, globalContext_public, concurrencyLimit, doNotPrerenderList) {
|
|
198
199
|
const onBeforePrerenderStartHooks = [];
|
|
199
200
|
// V1 design
|
|
200
|
-
await Promise.all(globalContext.
|
|
201
|
+
await Promise.all(globalContext._pageConfigs.map((pageConfig) => concurrencyLimit(async () => {
|
|
201
202
|
const hookName = 'onBeforePrerenderStart';
|
|
202
203
|
const pageConfigLoaded = await loadConfigValues(pageConfig, false);
|
|
203
204
|
const hook = getHookFromPageConfig(pageConfigLoaded, hookName);
|
|
@@ -213,7 +214,7 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext,
|
|
|
213
214
|
});
|
|
214
215
|
})));
|
|
215
216
|
// 0.4 design
|
|
216
|
-
await Promise.all(globalContext.
|
|
217
|
+
await Promise.all(globalContext._pageFilesAll
|
|
217
218
|
.filter((p) => {
|
|
218
219
|
assertExportNames(p);
|
|
219
220
|
if (!p.exportNames?.includes('prerender'))
|
|
@@ -257,7 +258,7 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext,
|
|
|
257
258
|
}
|
|
258
259
|
// Add result
|
|
259
260
|
const providedByHook = { hookFilePath, hookName };
|
|
260
|
-
const pageContextNew = await
|
|
261
|
+
const pageContextNew = await createPageContextPrerendering(url, prerenderContext, globalContext, globalContext_public, false, undefined, providedByHook);
|
|
261
262
|
prerenderContext.pageContexts.push(pageContextNew);
|
|
262
263
|
if (pageContext) {
|
|
263
264
|
objectAssign(pageContextNew, { _pageContextAlreadyProvidedByOnPrerenderHook: true });
|
|
@@ -268,7 +269,7 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext,
|
|
|
268
269
|
}
|
|
269
270
|
function getUrlListFromPagesWithStaticRoute(globalContext, doNotPrerenderList) {
|
|
270
271
|
const urlList = [];
|
|
271
|
-
globalContext.
|
|
272
|
+
globalContext._pageRoutes.map((pageRoute) => {
|
|
272
273
|
const { pageId } = pageRoute;
|
|
273
274
|
if (doNotPrerenderList.find((p) => p.pageId === pageId))
|
|
274
275
|
return;
|
|
@@ -293,7 +294,7 @@ function getUrlListFromPagesWithStaticRoute(globalContext, doNotPrerenderList) {
|
|
|
293
294
|
}
|
|
294
295
|
function getUrlList404(globalContext) {
|
|
295
296
|
const urlList = [];
|
|
296
|
-
const errorPageId = getErrorPageId(globalContext.
|
|
297
|
+
const errorPageId = getErrorPageId(globalContext._pageFilesAll, globalContext._pageConfigs);
|
|
297
298
|
if (errorPageId) {
|
|
298
299
|
urlList.push({
|
|
299
300
|
// A URL is required for `viteDevServer.transformIndexHtml(url,html)`
|
|
@@ -303,28 +304,30 @@ function getUrlList404(globalContext) {
|
|
|
303
304
|
}
|
|
304
305
|
return urlList;
|
|
305
306
|
}
|
|
306
|
-
async function
|
|
307
|
+
async function createPageContexts(urlList, prerenderContext, globalContext, globalContext_public, concurrencyLimit, is404) {
|
|
307
308
|
await Promise.all(urlList.map(({ urlOriginal, pageId }) => concurrencyLimit(async () => {
|
|
308
309
|
// Already included in a onBeforePrerenderStart() hook
|
|
309
310
|
if (prerenderContext.pageContexts.find((pageContext) => isSameUrl(pageContext.urlOriginal, urlOriginal))) {
|
|
310
311
|
return;
|
|
311
312
|
}
|
|
312
|
-
const pageContext = await
|
|
313
|
+
const pageContext = await createPageContextPrerendering(urlOriginal, prerenderContext, globalContext, globalContext_public, is404, pageId, null);
|
|
313
314
|
prerenderContext.pageContexts.push(pageContext);
|
|
314
315
|
})));
|
|
315
316
|
}
|
|
316
|
-
async function
|
|
317
|
+
async function createPageContextPrerendering(urlOriginal, prerenderContext, globalContext, globalContext_public, is404, pageId, providedByHook) {
|
|
317
318
|
const pageContextInit = {
|
|
318
319
|
urlOriginal,
|
|
319
|
-
...prerenderContext.
|
|
320
|
+
...prerenderContext._pageContextInit
|
|
320
321
|
};
|
|
321
|
-
const pageContext = await
|
|
322
|
+
const pageContext = await createPageContextServerSide(pageContextInit, globalContext, globalContext_public, {
|
|
323
|
+
isPrerendering: true
|
|
324
|
+
});
|
|
322
325
|
assert(pageContext.isPrerendering === true);
|
|
323
326
|
objectAssign(pageContext, {
|
|
324
327
|
_urlHandler: null,
|
|
325
328
|
_httpRequestId: null,
|
|
326
329
|
_urlRewrite: null,
|
|
327
|
-
_noExtraDir: prerenderContext.
|
|
330
|
+
_noExtraDir: prerenderContext._noExtraDir,
|
|
328
331
|
_prerenderContext: prerenderContext,
|
|
329
332
|
_providedByHook: providedByHook,
|
|
330
333
|
_urlOriginalModifiedByHook: null,
|
|
@@ -350,14 +353,14 @@ async function createPageContext(urlOriginal, prerenderContext, globalContext, i
|
|
|
350
353
|
{
|
|
351
354
|
const { pageId } = pageContext;
|
|
352
355
|
assert(pageId);
|
|
353
|
-
assert(globalContext.
|
|
354
|
-
if (globalContext.
|
|
355
|
-
const pageConfig = globalContext.
|
|
356
|
+
assert(globalContext._isPrerendering);
|
|
357
|
+
if (globalContext._pageConfigs.length > 0) {
|
|
358
|
+
const pageConfig = globalContext._pageConfigs.find((p) => p.pageId === pageId);
|
|
356
359
|
assert(pageConfig);
|
|
357
360
|
usesClientRouter = getConfigValueRuntime(pageConfig, 'clientRouting', 'boolean')?.value ?? false;
|
|
358
361
|
}
|
|
359
362
|
else {
|
|
360
|
-
usesClientRouter = globalContext.
|
|
363
|
+
usesClientRouter = globalContext._usesClientRouter;
|
|
361
364
|
}
|
|
362
365
|
}
|
|
363
366
|
objectAssign(pageContext, { _usesClientRouter: usesClientRouter });
|
|
@@ -394,9 +397,9 @@ function assertRouteMatch(pageContextFromRoute, pageContext) {
|
|
|
394
397
|
async function callOnPrerenderStartHook(prerenderContext, globalContext, concurrencyLimit) {
|
|
395
398
|
let onPrerenderStartHook;
|
|
396
399
|
// V1 design
|
|
397
|
-
if (globalContext.
|
|
400
|
+
if (globalContext._pageConfigs.length > 0) {
|
|
398
401
|
const hookName = 'onPrerenderStart';
|
|
399
|
-
const hook = getHookFromPageConfigGlobal(globalContext.
|
|
402
|
+
const hook = getHookFromPageConfigGlobal(globalContext._pageConfigGlobal, hookName);
|
|
400
403
|
if (hook) {
|
|
401
404
|
assert(hook.hookName === 'onPrerenderStart');
|
|
402
405
|
onPrerenderStartHook = {
|
|
@@ -408,9 +411,9 @@ async function callOnPrerenderStartHook(prerenderContext, globalContext, concurr
|
|
|
408
411
|
}
|
|
409
412
|
// Old design
|
|
410
413
|
// TODO/v1-release: remove
|
|
411
|
-
if (globalContext.
|
|
414
|
+
if (globalContext._pageConfigs.length === 0) {
|
|
412
415
|
const hookTimeout = getHookTimeoutDefault('onBeforePrerender');
|
|
413
|
-
const pageFilesWithOnBeforePrerenderHook = globalContext.
|
|
416
|
+
const pageFilesWithOnBeforePrerenderHook = globalContext._pageFilesAll.filter((p) => {
|
|
414
417
|
assertExportNames(p);
|
|
415
418
|
if (!p.exportNames?.includes('onBeforePrerender'))
|
|
416
419
|
return false;
|
|
@@ -550,7 +553,7 @@ async function prerenderPages(prerenderContext, concurrencyLimit, onComplete) {
|
|
|
550
553
|
pageContext,
|
|
551
554
|
htmlString: documentHtml,
|
|
552
555
|
pageContextSerialized,
|
|
553
|
-
doNotCreateExtraDirectory: prerenderContext.
|
|
556
|
+
doNotCreateExtraDirectory: prerenderContext._noExtraDir ?? pageContext.is404
|
|
554
557
|
});
|
|
555
558
|
})));
|
|
556
559
|
}
|
|
@@ -567,16 +570,16 @@ function warnContradictoryNoPrerenderList(prerenderedPageContexts, doNotPrerende
|
|
|
567
570
|
});
|
|
568
571
|
}
|
|
569
572
|
async function warnMissingPages(prerenderedPageContexts, globalContext, doNotPrerenderList, partial) {
|
|
570
|
-
const isV1 = globalContext.
|
|
573
|
+
const isV1 = globalContext._pageConfigs.length > 0;
|
|
571
574
|
const hookName = isV1 ? 'onBeforePrerenderStart' : 'prerender';
|
|
572
575
|
/* TODO/after-v1-design-release: document setting `prerender: false` as an alternative to using prerender.partial (both in the warnings and the docs)
|
|
573
576
|
const optOutName = isV1 ? 'prerender' : 'doNotPrerender'
|
|
574
577
|
const msgAddendum = `Explicitly opt-out by setting the config ${optOutName} to ${isV1 ? 'false' : 'true'} or use the option prerender.partial`
|
|
575
578
|
*/
|
|
576
|
-
globalContext.
|
|
579
|
+
globalContext._allPageIds
|
|
577
580
|
.filter((pageId) => !prerenderedPageContexts[pageId])
|
|
578
581
|
.filter((pageId) => !doNotPrerenderList.find((p) => p.pageId === pageId))
|
|
579
|
-
.filter((pageId) => !isErrorPage(pageId, globalContext.
|
|
582
|
+
.filter((pageId) => !isErrorPage(pageId, globalContext._pageConfigs))
|
|
580
583
|
.forEach((pageId) => {
|
|
581
584
|
const pageAt = isV1 ? pageId : `\`${pageId}.page.*\``;
|
|
582
585
|
assertWarning(partial, `Cannot pre-render page ${pageAt} because it has a non-static route, while no ${hookName}() hook returned any URL matching the page's route. You need to use a ${hookName}() hook (https://vike.dev/${hookName}) providing a list of URLs for ${pageAt} that should be pre-rendered. If you don't want to pre-render ${pageAt} then use the option prerender.partial (https://vike.dev/prerender#partial) to suppress this warning.`, { onlyOnce: true });
|
|
@@ -729,7 +732,7 @@ function assertIsNotAbort(err, urlOriginal) {
|
|
|
729
732
|
assertUsage(false, `${pc.cyan(abortCall)} thrown${thrownBy} while pre-rendering ${urlOriginal} but ${pc.cyan(abortCaller)} isn't supported for pre-rendered pages`);
|
|
730
733
|
}
|
|
731
734
|
function makePublic(prerenderContext) {
|
|
732
|
-
const prerenderContextPublic =
|
|
735
|
+
const prerenderContextPublic = getPublicProxy(prerenderContext, 'prerenderContext', [
|
|
733
736
|
'output', // vite-plugin-vercel
|
|
734
737
|
'pageContexts' // https://vike.dev/i18n#pre-rendering
|
|
735
738
|
]);
|
|
@@ -13,6 +13,6 @@ export * from '../../utils/pLimit.js';
|
|
|
13
13
|
export * from '../../utils/isFilePathAbsoluteFilesystem.js';
|
|
14
14
|
export * from '../../utils/isArray.js';
|
|
15
15
|
export * from '../../utils/isObject.js';
|
|
16
|
-
export * from '../../utils/
|
|
16
|
+
export * from '../../utils/getPublicProxy.js';
|
|
17
17
|
export * from '../../utils/isNullish.js';
|
|
18
18
|
export * from '../../utils/preservePropertyGetters.js';
|
|
@@ -15,6 +15,6 @@ export * from '../../utils/pLimit.js';
|
|
|
15
15
|
export * from '../../utils/isFilePathAbsoluteFilesystem.js';
|
|
16
16
|
export * from '../../utils/isArray.js';
|
|
17
17
|
export * from '../../utils/isObject.js';
|
|
18
|
-
export * from '../../utils/
|
|
18
|
+
export * from '../../utils/getPublicProxy.js';
|
|
19
19
|
export * from '../../utils/isNullish.js';
|
|
20
20
|
export * from '../../utils/preservePropertyGetters.js';
|