vike 0.4.229-commit-7056ef0 → 0.4.229-commit-5da80bf
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/client/server-routing-runtime/utils.js +1 -0
- package/dist/cjs/client/shared/{preparePageContextForUserConsumptionClientSide.js → preparePageContextForPublicUsageClientShared.js} +15 -19
- package/dist/cjs/node/api/build.js +1 -5
- package/dist/cjs/node/plugin/shared/loggerNotProd.js +2 -2
- package/dist/cjs/node/prerender/runPrerender.js +40 -36
- package/dist/cjs/node/prerender/utils.js +1 -1
- package/dist/cjs/node/runtime/globalContext.js +13 -27
- package/dist/cjs/node/runtime/html/serializeContext.js +1 -1
- package/dist/cjs/node/runtime/renderPage/createPageContextServerSide.js +4 -8
- package/dist/cjs/node/runtime/renderPage/execHookServer.js +11 -0
- package/dist/cjs/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +9 -9
- package/dist/cjs/node/runtime/renderPage/executeOnRenderHtmlHook.js +8 -12
- package/dist/cjs/node/runtime/renderPage/preparePageContextForPublicUsageServer.js +10 -0
- package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +3 -3
- package/dist/cjs/node/runtime/renderPage.js +7 -5
- package/dist/cjs/node/runtime/utils.js +1 -1
- package/dist/cjs/shared/NOT_SERIALIZABLE.js +0 -1
- package/dist/cjs/shared/addIs404ToPageProps.js +0 -7
- package/dist/cjs/shared/createGlobalContextShared.js +6 -3
- package/dist/cjs/shared/createPageContextShared.js +14 -3
- package/dist/cjs/shared/getPageContext.js +3 -3
- package/dist/cjs/shared/getPageContextUrlComputed.js +2 -36
- package/dist/cjs/shared/getProxyForPublicUsage.js +106 -0
- package/dist/cjs/shared/hooks/execHook.js +164 -0
- package/dist/cjs/shared/page-configs/getUserFriendlyConfigs.js +17 -15
- package/dist/cjs/shared/prepareGlobalContextForPublicUsage.js +10 -0
- package/dist/cjs/shared/preparePageContextForPublicUsage.js +75 -0
- package/dist/cjs/shared/route/abort.js +2 -2
- package/dist/cjs/shared/route/executeGuardHook.js +4 -9
- package/dist/cjs/shared/route/executeOnBeforeRouteHook.js +4 -3
- package/dist/cjs/shared/route/index.js +2 -4
- package/dist/cjs/shared/route/loadPageRoutes.js +6 -0
- package/dist/cjs/shared/route/resolveRouteFunction.js +14 -10
- package/dist/cjs/shared/utils.js +2 -0
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/objectAssign.js +3 -3
- package/dist/cjs/utils/objectDefineProperty.js +1 -1
- package/dist/esm/client/client-routing-runtime/createPageContextClientSide.d.ts +10 -7
- package/dist/esm/client/client-routing-runtime/createPageContextClientSide.js +8 -10
- package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.d.ts +397 -20
- package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +15 -15
- package/dist/esm/client/client-routing-runtime/globalContext.d.ts +1 -0
- package/dist/esm/client/client-routing-runtime/prefetch.d.ts +3 -8
- package/dist/esm/client/client-routing-runtime/preparePageContextForPublicUsageClient.d.ts +11 -0
- package/dist/esm/client/client-routing-runtime/preparePageContextForPublicUsageClient.js +5 -0
- package/dist/esm/client/client-routing-runtime/renderPageClientSide.d.ts +135 -0
- package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +66 -72
- package/dist/esm/client/client-routing-runtime/utils.d.ts +1 -0
- package/dist/esm/client/client-routing-runtime/utils.js +1 -0
- package/dist/esm/client/server-routing-runtime/createPageContextClientSide.d.ts +8 -6
- package/dist/esm/client/server-routing-runtime/createPageContextClientSide.js +8 -10
- package/dist/esm/client/server-routing-runtime/entry.js +4 -6
- package/dist/esm/client/server-routing-runtime/globalContext.d.ts +1 -0
- package/dist/esm/client/server-routing-runtime/preparePageContextForPublicUsageClient.d.ts +9 -0
- package/dist/esm/client/server-routing-runtime/preparePageContextForPublicUsageClient.js +5 -0
- package/dist/esm/client/server-routing-runtime/utils.d.ts +1 -0
- package/dist/esm/client/server-routing-runtime/utils.js +1 -0
- package/dist/esm/client/shared/createGetGlobalContextClient.d.ts +1 -0
- package/dist/esm/client/shared/executeOnRenderClientHook.d.ts +3 -3
- package/dist/esm/client/shared/executeOnRenderClientHook.js +4 -13
- package/dist/esm/client/shared/preparePageContextForPublicUsageClientShared.d.ts +11 -0
- package/dist/esm/client/shared/preparePageContextForPublicUsageClientShared.js +40 -0
- package/dist/esm/node/api/build.js +1 -2
- package/dist/esm/node/plugin/shared/loggerNotProd.js +1 -1
- package/dist/esm/node/prerender/runPrerender.d.ts +15 -115
- package/dist/esm/node/prerender/runPrerender.js +40 -36
- 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 +5 -373
- package/dist/esm/node/runtime/globalContext.js +14 -28
- package/dist/esm/node/runtime/html/serializeContext.d.ts +1 -1
- package/dist/esm/node/runtime/html/serializeContext.js +1 -1
- package/dist/esm/node/runtime/renderPage/createPageContextServerSide.d.ts +15 -62
- package/dist/esm/node/runtime/renderPage/createPageContextServerSide.js +5 -9
- package/dist/esm/node/runtime/renderPage/execHookServer.d.ts +12 -0
- package/dist/esm/node/runtime/renderPage/execHookServer.js +9 -0
- package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.d.ts +1 -1
- package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +9 -9
- package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.d.ts +4 -2
- package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.js +8 -12
- package/dist/esm/node/runtime/renderPage/preparePageContextForPublicUsageServer.d.ts +20 -0
- package/dist/esm/node/runtime/renderPage/preparePageContextForPublicUsageServer.js +8 -0
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +15 -115
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +3 -3
- package/dist/esm/node/runtime/renderPage.d.ts +10 -60
- package/dist/esm/node/runtime/renderPage.js +7 -5
- package/dist/esm/node/runtime/utils.d.ts +1 -1
- package/dist/esm/node/runtime/utils.js +1 -1
- package/dist/esm/shared/NOT_SERIALIZABLE.js +0 -1
- package/dist/esm/shared/addIs404ToPageProps.d.ts +1 -6
- package/dist/esm/shared/addIs404ToPageProps.js +1 -8
- package/dist/esm/shared/createGlobalContextShared.d.ts +2 -0
- package/dist/esm/shared/createGlobalContextShared.js +7 -4
- package/dist/esm/shared/createPageContextShared.d.ts +6 -2
- package/dist/esm/shared/createPageContextShared.js +15 -4
- package/dist/esm/shared/getPageContext.d.ts +1 -1
- package/dist/esm/shared/getPageContext.js +1 -1
- package/dist/esm/shared/getPageContextUrlComputed.d.ts +2 -5
- package/dist/esm/shared/getPageContextUrlComputed.js +3 -37
- package/dist/esm/shared/getProxyForPublicUsage.d.ts +12 -0
- package/dist/esm/shared/getProxyForPublicUsage.js +104 -0
- package/dist/esm/shared/hooks/execHook.d.ts +63 -0
- package/dist/esm/shared/hooks/execHook.js +162 -0
- package/dist/esm/shared/hooks/getHook.d.ts +3 -1
- package/dist/esm/shared/page-configs/Config.d.ts +3 -3
- package/dist/esm/shared/page-configs/getUserFriendlyConfigs.js +18 -16
- package/dist/esm/shared/prepareGlobalContextForPublicUsage.d.ts +7 -0
- package/dist/esm/shared/prepareGlobalContextForPublicUsage.js +8 -0
- package/dist/esm/shared/preparePageContextForPublicUsage.d.ts +12 -0
- package/dist/esm/shared/preparePageContextForPublicUsage.js +73 -0
- package/dist/esm/shared/route/abort.js +1 -1
- package/dist/esm/shared/route/executeGuardHook.d.ts +4 -3
- package/dist/esm/shared/route/executeGuardHook.js +4 -9
- package/dist/esm/shared/route/executeOnBeforeRouteHook.js +4 -3
- package/dist/esm/shared/route/index.js +2 -4
- package/dist/esm/shared/route/loadPageRoutes.d.ts +2 -1
- package/dist/esm/shared/route/loadPageRoutes.js +7 -1
- package/dist/esm/shared/route/resolveRouteFunction.d.ts +2 -2
- package/dist/esm/shared/route/resolveRouteFunction.js +14 -10
- package/dist/esm/shared/types.d.ts +13 -3
- package/dist/esm/shared/utils.d.ts +2 -0
- package/dist/esm/shared/utils.js +2 -0
- package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/utils/objectAssign.d.ts +1 -1
- package/dist/esm/utils/objectAssign.js +3 -3
- package/dist/esm/utils/objectDefineProperty.d.ts +0 -1
- package/dist/esm/utils/objectDefineProperty.js +1 -1
- package/package.json +2 -2
- package/dist/cjs/client/shared/getPageContextProxyForUser.js +0 -16
- package/dist/cjs/node/runtime/renderPage/executeHookServer.js +0 -11
- package/dist/cjs/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +0 -16
- package/dist/cjs/shared/hooks/executeHook.js +0 -108
- package/dist/cjs/shared/preparePageContextForUserConsumption.js +0 -34
- package/dist/cjs/utils/getPublicProxy.js +0 -27
- package/dist/esm/client/shared/getPageContextProxyForUser.d.ts +0 -2
- package/dist/esm/client/shared/getPageContextProxyForUser.js +0 -14
- package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.d.ts +0 -12
- package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.js +0 -44
- package/dist/esm/node/runtime/renderPage/executeHookServer.d.ts +0 -13
- package/dist/esm/node/runtime/renderPage/executeHookServer.js +0 -9
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +0 -24
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +0 -14
- package/dist/esm/shared/hooks/executeHook.d.ts +0 -34
- package/dist/esm/shared/hooks/executeHook.js +0 -106
- package/dist/esm/shared/preparePageContextForUserConsumption.d.ts +0 -5
- package/dist/esm/shared/preparePageContextForUserConsumption.js +0 -32
- package/dist/esm/utils/getPublicProxy.d.ts +0 -2
- package/dist/esm/utils/getPublicProxy.js +0 -25
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export { preparePageContextForPublicUsageClientShared };
|
|
2
|
+
export { preparePageContextForPublicUsageClientMinimal };
|
|
3
|
+
import { objectAssign } from '../server-routing-runtime/utils.js';
|
|
4
|
+
import { assertPropertyGetters, preparePageContextForPublicUsage } from '../../shared/preparePageContextForPublicUsage.js';
|
|
5
|
+
function preparePageContextForPublicUsageClientShared(pageContext) {
|
|
6
|
+
// TODO/now use proxy
|
|
7
|
+
const Page = pageContext.config?.Page ||
|
|
8
|
+
// TODO/next-major-release: remove
|
|
9
|
+
pageContext.exports?.Page;
|
|
10
|
+
objectAssign(pageContext, { Page });
|
|
11
|
+
// TODO/next-major-release: after we remove supportVueReactiviy() we can call this later inside the agnostic preparePageContextForPublicUsage()
|
|
12
|
+
assertPropertyGetters(pageContext);
|
|
13
|
+
// TODO/next-major-release: remove
|
|
14
|
+
// - Requires https://github.com/vikejs/vike-vue/issues/198
|
|
15
|
+
// - Last time I tried to remove it (https://github.com/vikejs/vike/commit/705fd23598d9d69bf46a52c8550216cd7117ce71) the tests were failing as expected: only the Vue integrations that used shallowReactive() failed.
|
|
16
|
+
supportVueReactiviy(pageContext);
|
|
17
|
+
return preparePageContextForPublicUsageClientMinimal(pageContext);
|
|
18
|
+
}
|
|
19
|
+
function preparePageContextForPublicUsageClientMinimal(pageContext) {
|
|
20
|
+
const pageContextPublic = preparePageContextForPublicUsage(pageContext);
|
|
21
|
+
return pageContextPublic;
|
|
22
|
+
}
|
|
23
|
+
// With Vue + Cient Routing, the `pageContext` is made reactive:
|
|
24
|
+
// ```js
|
|
25
|
+
// import { reactive } from 'vue'
|
|
26
|
+
// // See /examples/vue-full/renderer/createVueApp.ts
|
|
27
|
+
// const pageContextReactive = reactive(pageContext)
|
|
28
|
+
// ```
|
|
29
|
+
function supportVueReactiviy(pageContext) {
|
|
30
|
+
resolveGetters(pageContext);
|
|
31
|
+
}
|
|
32
|
+
// Remove propery descriptor getters because they break Vue's reactivity.
|
|
33
|
+
// E.g. resolve the `pageContext.urlPathname` getter.
|
|
34
|
+
function resolveGetters(pageContext) {
|
|
35
|
+
return;
|
|
36
|
+
Object.entries(pageContext).forEach(([key, val]) => {
|
|
37
|
+
delete pageContext[key];
|
|
38
|
+
pageContext[key] = val;
|
|
39
|
+
});
|
|
40
|
+
}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
export { build };
|
|
2
2
|
import { prepareViteApiCall } from './prepareViteApiCall.js';
|
|
3
3
|
import { build as buildVite, version, createBuilder } from 'vite';
|
|
4
|
-
import assert from 'assert';
|
|
5
4
|
import { isVikeCli } from '../cli/context.js';
|
|
6
5
|
import { isPrerendering } from '../prerender/context.js';
|
|
7
|
-
import { assertVersion } from './utils.js';
|
|
6
|
+
import { assert, assertVersion } from './utils.js';
|
|
8
7
|
/**
|
|
9
8
|
* Programmatically trigger `$ vike build`
|
|
10
9
|
*
|
|
@@ -22,7 +22,7 @@ import { logWithVikeTag, logWithViteTag, logDirectly, applyViteSourceMapToStackT
|
|
|
22
22
|
import pc from '@brillout/picocolors';
|
|
23
23
|
import { setAlreadyLogged } from '../../runtime/renderPage/isNewError.js';
|
|
24
24
|
import { onRuntimeError } from '../../runtime/renderPage/loggerProd.js';
|
|
25
|
-
import { isUserHookError } from '../../../shared/hooks/
|
|
25
|
+
import { isUserHookError } from '../../../shared/hooks/execHook.js';
|
|
26
26
|
assertIsNotProductionRuntime();
|
|
27
27
|
overwriteRuntimeProductionLogger(logRuntimeError, logRuntimeInfo);
|
|
28
28
|
overwriteAssertProductionLogger(assertLogger);
|
|
@@ -5,7 +5,7 @@ export { runPrerender_forceExit };
|
|
|
5
5
|
export type { PrerenderOptions };
|
|
6
6
|
export type { PrerenderContextPublic };
|
|
7
7
|
import type { PageFile } from '../../shared/getPageFiles.js';
|
|
8
|
-
import { type GlobalContextServerInternal
|
|
8
|
+
import { type GlobalContextServerInternal } from '../runtime/globalContext.js';
|
|
9
9
|
import type { InlineConfig, ResolvedConfig } from 'vite';
|
|
10
10
|
import type { APIOptions } from '../api/types.js';
|
|
11
11
|
type ProvidedByHook = null | {
|
|
@@ -22,6 +22,7 @@ type PageContextPrerendered = {
|
|
|
22
22
|
pageId: string;
|
|
23
23
|
};
|
|
24
24
|
type PrerenderedPageContexts = Record<string, PageContextPrerendered>;
|
|
25
|
+
type PrerenderContextPublic = Pick<PrerenderContext, 'pageContexts' | 'output'>;
|
|
25
26
|
type PrerenderContext = {
|
|
26
27
|
pageContexts: PageContext[];
|
|
27
28
|
output: Output;
|
|
@@ -66,16 +67,19 @@ declare function runPrerenderFromCLIPrerenderCommand(): Promise<void>;
|
|
|
66
67
|
declare function runPrerenderFromAutoRun(viteConfig: InlineConfig | undefined): Promise<{
|
|
67
68
|
forceExit: boolean;
|
|
68
69
|
}>;
|
|
69
|
-
declare function createPageContextPrerendering(urlOriginal: string, prerenderContext: PrerenderContext, globalContext: GlobalContextServerInternal,
|
|
70
|
-
|
|
70
|
+
declare function createPageContextPrerendering(urlOriginal: string, prerenderContext: PrerenderContext, globalContext: GlobalContextServerInternal, is404: boolean, pageId: string | undefined, providedByHook: ProvidedByHook): Promise<((({
|
|
71
|
+
_isOriginalObject: true;
|
|
72
|
+
isPageContext: true;
|
|
73
|
+
} & {
|
|
74
|
+
isClientSide: false;
|
|
71
75
|
isPrerendering: boolean;
|
|
72
|
-
} & Pick<import("../../shared/types.js").
|
|
76
|
+
} & Pick<import("../../shared/types.js").PageContextInternalServer, "urlOriginal" | "headersOriginal"> & {
|
|
73
77
|
url?: string;
|
|
74
78
|
headers?: Record<string, string>;
|
|
75
79
|
} & {
|
|
76
|
-
globalContext: GlobalContextServer;
|
|
77
80
|
_globalContext: {
|
|
78
81
|
isGlobalContext: true;
|
|
82
|
+
_isOriginalObject: true;
|
|
79
83
|
_virtualFileExports: unknown;
|
|
80
84
|
_pageFilesAll: PageFile[];
|
|
81
85
|
_pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
|
|
@@ -113,23 +117,6 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
|
|
|
113
117
|
isClientSide: false;
|
|
114
118
|
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
|
|
115
119
|
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
116
|
-
isGlobalContext: true;
|
|
117
|
-
_virtualFileExports: unknown;
|
|
118
|
-
_pageFilesAll: PageFile[];
|
|
119
|
-
_pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
|
|
120
|
-
_pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
121
|
-
_allPageIds: string[];
|
|
122
|
-
_userFriendlyConfigsGlobal: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly;
|
|
123
|
-
config: import("../../types/index.js").ConfigResolved;
|
|
124
|
-
pages: {
|
|
125
|
-
[k: string]: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly & ({
|
|
126
|
-
route: import("../../shared/page-configs/Config.js").Route;
|
|
127
|
-
isErrorPage?: undefined;
|
|
128
|
-
} | {
|
|
129
|
-
route?: undefined;
|
|
130
|
-
isErrorPage: true;
|
|
131
|
-
});
|
|
132
|
-
};
|
|
133
120
|
} | {
|
|
134
121
|
_isPrerendering: true;
|
|
135
122
|
viteConfig: ResolvedConfig;
|
|
@@ -152,23 +139,6 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
|
|
|
152
139
|
isClientSide: false;
|
|
153
140
|
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
|
|
154
141
|
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
155
|
-
isGlobalContext: true;
|
|
156
|
-
_virtualFileExports: unknown;
|
|
157
|
-
_pageFilesAll: PageFile[];
|
|
158
|
-
_pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
|
|
159
|
-
_pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
160
|
-
_allPageIds: string[];
|
|
161
|
-
_userFriendlyConfigsGlobal: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly;
|
|
162
|
-
config: import("../../types/index.js").ConfigResolved;
|
|
163
|
-
pages: {
|
|
164
|
-
[k: string]: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly & ({
|
|
165
|
-
route: import("../../shared/page-configs/Config.js").Route;
|
|
166
|
-
isErrorPage?: undefined;
|
|
167
|
-
} | {
|
|
168
|
-
route?: undefined;
|
|
169
|
-
isErrorPage: true;
|
|
170
|
-
});
|
|
171
|
-
};
|
|
172
142
|
} | {
|
|
173
143
|
_isPrerendering: false;
|
|
174
144
|
viteConfig: null;
|
|
@@ -191,23 +161,6 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
|
|
|
191
161
|
isClientSide: false;
|
|
192
162
|
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
|
|
193
163
|
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
194
|
-
isGlobalContext: true;
|
|
195
|
-
_virtualFileExports: unknown;
|
|
196
|
-
_pageFilesAll: PageFile[];
|
|
197
|
-
_pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
|
|
198
|
-
_pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
199
|
-
_allPageIds: string[];
|
|
200
|
-
_userFriendlyConfigsGlobal: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly;
|
|
201
|
-
config: import("../../types/index.js").ConfigResolved;
|
|
202
|
-
pages: {
|
|
203
|
-
[k: string]: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly & ({
|
|
204
|
-
route: import("../../shared/page-configs/Config.js").Route;
|
|
205
|
-
isErrorPage?: undefined;
|
|
206
|
-
} | {
|
|
207
|
-
route?: undefined;
|
|
208
|
-
isErrorPage: true;
|
|
209
|
-
});
|
|
210
|
-
};
|
|
211
164
|
});
|
|
212
165
|
_baseServer: string;
|
|
213
166
|
_baseAssets: string;
|
|
@@ -228,8 +181,6 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
|
|
|
228
181
|
url: string;
|
|
229
182
|
} & {
|
|
230
183
|
headers: Record<string, string> | null;
|
|
231
|
-
} & {
|
|
232
|
-
isPageContext: true;
|
|
233
184
|
} & {
|
|
234
185
|
_urlHandler: null;
|
|
235
186
|
_httpRequestId: null;
|
|
@@ -240,15 +191,18 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
|
|
|
240
191
|
_urlOriginalModifiedByHook: ProvidedByHookTransformer;
|
|
241
192
|
is404: boolean;
|
|
242
193
|
} & import("../../shared/route/index.js").PageContextFromRoute & Record<"pageId", string>) | ({
|
|
243
|
-
|
|
194
|
+
_isOriginalObject: true;
|
|
195
|
+
isPageContext: true;
|
|
196
|
+
} & {
|
|
197
|
+
isClientSide: false;
|
|
244
198
|
isPrerendering: boolean;
|
|
245
|
-
} & Pick<import("../../shared/types.js").
|
|
199
|
+
} & Pick<import("../../shared/types.js").PageContextInternalServer, "urlOriginal" | "headersOriginal"> & {
|
|
246
200
|
url?: string;
|
|
247
201
|
headers?: Record<string, string>;
|
|
248
202
|
} & {
|
|
249
|
-
globalContext: GlobalContextServer;
|
|
250
203
|
_globalContext: {
|
|
251
204
|
isGlobalContext: true;
|
|
205
|
+
_isOriginalObject: true;
|
|
252
206
|
_virtualFileExports: unknown;
|
|
253
207
|
_pageFilesAll: PageFile[];
|
|
254
208
|
_pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
|
|
@@ -286,23 +240,6 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
|
|
|
286
240
|
isClientSide: false;
|
|
287
241
|
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
|
|
288
242
|
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
289
|
-
isGlobalContext: true;
|
|
290
|
-
_virtualFileExports: unknown;
|
|
291
|
-
_pageFilesAll: PageFile[];
|
|
292
|
-
_pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
|
|
293
|
-
_pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
294
|
-
_allPageIds: string[];
|
|
295
|
-
_userFriendlyConfigsGlobal: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly;
|
|
296
|
-
config: import("../../types/index.js").ConfigResolved;
|
|
297
|
-
pages: {
|
|
298
|
-
[k: string]: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly & ({
|
|
299
|
-
route: import("../../shared/page-configs/Config.js").Route;
|
|
300
|
-
isErrorPage?: undefined;
|
|
301
|
-
} | {
|
|
302
|
-
route?: undefined;
|
|
303
|
-
isErrorPage: true;
|
|
304
|
-
});
|
|
305
|
-
};
|
|
306
243
|
} | {
|
|
307
244
|
_isPrerendering: true;
|
|
308
245
|
viteConfig: ResolvedConfig;
|
|
@@ -325,23 +262,6 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
|
|
|
325
262
|
isClientSide: false;
|
|
326
263
|
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
|
|
327
264
|
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
328
|
-
isGlobalContext: true;
|
|
329
|
-
_virtualFileExports: unknown;
|
|
330
|
-
_pageFilesAll: PageFile[];
|
|
331
|
-
_pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
|
|
332
|
-
_pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
333
|
-
_allPageIds: string[];
|
|
334
|
-
_userFriendlyConfigsGlobal: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly;
|
|
335
|
-
config: import("../../types/index.js").ConfigResolved;
|
|
336
|
-
pages: {
|
|
337
|
-
[k: string]: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly & ({
|
|
338
|
-
route: import("../../shared/page-configs/Config.js").Route;
|
|
339
|
-
isErrorPage?: undefined;
|
|
340
|
-
} | {
|
|
341
|
-
route?: undefined;
|
|
342
|
-
isErrorPage: true;
|
|
343
|
-
});
|
|
344
|
-
};
|
|
345
265
|
} | {
|
|
346
266
|
_isPrerendering: false;
|
|
347
267
|
viteConfig: null;
|
|
@@ -364,23 +284,6 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
|
|
|
364
284
|
isClientSide: false;
|
|
365
285
|
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
|
|
366
286
|
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
367
|
-
isGlobalContext: true;
|
|
368
|
-
_virtualFileExports: unknown;
|
|
369
|
-
_pageFilesAll: PageFile[];
|
|
370
|
-
_pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
|
|
371
|
-
_pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
372
|
-
_allPageIds: string[];
|
|
373
|
-
_userFriendlyConfigsGlobal: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly;
|
|
374
|
-
config: import("../../types/index.js").ConfigResolved;
|
|
375
|
-
pages: {
|
|
376
|
-
[k: string]: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly & ({
|
|
377
|
-
route: import("../../shared/page-configs/Config.js").Route;
|
|
378
|
-
isErrorPage?: undefined;
|
|
379
|
-
} | {
|
|
380
|
-
route?: undefined;
|
|
381
|
-
isErrorPage: true;
|
|
382
|
-
});
|
|
383
|
-
};
|
|
384
287
|
});
|
|
385
288
|
_baseServer: string;
|
|
386
289
|
_baseAssets: string;
|
|
@@ -401,8 +304,6 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
|
|
|
401
304
|
url: string;
|
|
402
305
|
} & {
|
|
403
306
|
headers: Record<string, string> | null;
|
|
404
|
-
} & {
|
|
405
|
-
isPageContext: true;
|
|
406
307
|
} & {
|
|
407
308
|
_urlHandler: null;
|
|
408
309
|
_httpRequestId: null;
|
|
@@ -427,4 +328,3 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
|
|
|
427
328
|
_usesClientRouter: boolean;
|
|
428
329
|
}>;
|
|
429
330
|
declare function runPrerender_forceExit(): void;
|
|
430
|
-
type PrerenderContextPublic = Pick<PrerenderContext, 'output' | 'pageContexts'>;
|
|
@@ -4,7 +4,7 @@ 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,
|
|
7
|
+
import { assert, assertUsage, assertWarning, hasProp, objectAssign, isObjectWithKeys, isCallable, isPropertyGetter, assertPosixPath, urlToFile, isPlainObject, pLimit, isArray, onSetupPrerender, PROJECT_VERSION, preservePropertyGetters, changeEnumerable } from './utils.js';
|
|
8
8
|
import { prerenderPage } from '../runtime/renderPage/renderPageAlreadyRouted.js';
|
|
9
9
|
import { createPageContextServerSide } from '../runtime/renderPage/createPageContextServerSide.js';
|
|
10
10
|
import pc from '@brillout/picocolors';
|
|
@@ -23,7 +23,7 @@ import { getHookFromPageConfig, getHookFromPageConfigGlobal, getHookTimeoutDefau
|
|
|
23
23
|
import { noRouteMatch } from '../../shared/route/noRouteMatch.js';
|
|
24
24
|
import { getVikeConfig } from '../plugin/plugins/importUserCode/v1-design/getVikeConfig.js';
|
|
25
25
|
import { logErrorHint } from '../runtime/renderPage/logErrorHint.js';
|
|
26
|
-
import {
|
|
26
|
+
import { execHookWithoutPageContext, isUserHookError } from '../../shared/hooks/execHook.js';
|
|
27
27
|
import { prepareViteApiCall } from '../api/prepareViteApiCall.js';
|
|
28
28
|
import { setContextIsPrerendering } from './context.js';
|
|
29
29
|
import { resolvePrerenderConfigGlobal, resolvePrerenderConfigLocal } from './resolvePrerenderConfig.js';
|
|
@@ -32,6 +32,8 @@ import { isVikeCli } from '../cli/context.js';
|
|
|
32
32
|
import { isViteCliCall } from '../plugin/shared/isViteCliCall.js';
|
|
33
33
|
import { getVikeConfigInternal } from '../plugin/plugins/commonConfig.js';
|
|
34
34
|
import fs from 'node:fs';
|
|
35
|
+
import { getProxyForPublicUsage } from '../../shared/getProxyForPublicUsage.js';
|
|
36
|
+
const docLink = 'https://vike.dev/i18n#pre-rendering';
|
|
35
37
|
async function runPrerenderFromAPI(options = {}) {
|
|
36
38
|
return await runPrerender(options, 'prerender()');
|
|
37
39
|
// - We purposely propagate the error to the user land, so that the error interrupts the user land. It's also, I guess, a nice-to-have that the user has control over the error.
|
|
@@ -94,7 +96,7 @@ async function runPrerender(options = {}, standaloneTrigger) {
|
|
|
94
96
|
}
|
|
95
97
|
const concurrencyLimit = pLimit(parallel === false || parallel === 0 ? 1 : parallel === true || parallel === undefined ? cpus().length : parallel);
|
|
96
98
|
await initGlobalContext_runPrerender();
|
|
97
|
-
const { globalContext
|
|
99
|
+
const { globalContext } = await getGlobalContextServerInternal();
|
|
98
100
|
globalContext._pageFilesAll.forEach(assertExportNames);
|
|
99
101
|
const prerenderContext = {
|
|
100
102
|
pageContexts: [],
|
|
@@ -107,13 +109,13 @@ async function runPrerender(options = {}, standaloneTrigger) {
|
|
|
107
109
|
await collectDoNoPrerenderList(vikeConfig.pageConfigs, doNotPrerenderList, defaultLocalValue, concurrencyLimit, globalContext);
|
|
108
110
|
// Allow user to create `pageContext` for parameterized routes and/or bulk data fetching
|
|
109
111
|
// https://vike.dev/onBeforePrerenderStart
|
|
110
|
-
await callOnBeforePrerenderStartHooks(prerenderContext, globalContext,
|
|
112
|
+
await callOnBeforePrerenderStartHooks(prerenderContext, globalContext, concurrencyLimit, doNotPrerenderList);
|
|
111
113
|
// Create `pageContext` for each page with a static route
|
|
112
114
|
const urlList = getUrlListFromPagesWithStaticRoute(globalContext, doNotPrerenderList);
|
|
113
|
-
await createPageContexts(urlList, prerenderContext, globalContext,
|
|
115
|
+
await createPageContexts(urlList, prerenderContext, globalContext, concurrencyLimit, false);
|
|
114
116
|
// Create `pageContext` for 404 page
|
|
115
117
|
const urlList404 = getUrlList404(globalContext);
|
|
116
|
-
await createPageContexts(urlList404, prerenderContext, globalContext,
|
|
118
|
+
await createPageContexts(urlList404, prerenderContext, globalContext, concurrencyLimit, true);
|
|
117
119
|
// Allow user to duplicate the list of `pageContext` for i18n
|
|
118
120
|
// https://vike.dev/onPrerenderStart
|
|
119
121
|
await callOnPrerenderStartHook(prerenderContext, globalContext, concurrencyLimit);
|
|
@@ -132,8 +134,8 @@ async function runPrerender(options = {}, standaloneTrigger) {
|
|
|
132
134
|
console.log(`${pc.green(`✓`)} ${prerenderedCount} HTML documents pre-rendered.`);
|
|
133
135
|
}
|
|
134
136
|
await warnMissingPages(prerenderContext._prerenderedPageContexts, globalContext, doNotPrerenderList, partial);
|
|
135
|
-
const prerenderContextPublic =
|
|
136
|
-
objectAssign(vike.prerenderContext, prerenderContextPublic);
|
|
137
|
+
const prerenderContextPublic = preparePrerenderContextForPublicUsage(prerenderContext);
|
|
138
|
+
objectAssign(vike.prerenderContext, prerenderContextPublic, true);
|
|
137
139
|
if (prerenderConfigGlobal.isPrerenderingEnabledForAllPages && !prerenderConfigGlobal.keepDistServer) {
|
|
138
140
|
fs.rmSync(outDirServer, { recursive: true });
|
|
139
141
|
}
|
|
@@ -195,7 +197,7 @@ function assertExportNames(pageFile) {
|
|
|
195
197
|
const { exportNames, fileType } = pageFile;
|
|
196
198
|
assert(exportNames || fileType === '.page.route' || fileType === '.css', pageFile.filePath);
|
|
197
199
|
}
|
|
198
|
-
async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext,
|
|
200
|
+
async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext, concurrencyLimit, doNotPrerenderList) {
|
|
199
201
|
const onBeforePrerenderStartHooks = [];
|
|
200
202
|
// V1 design
|
|
201
203
|
await Promise.all(globalContext._pageConfigs.map((pageConfig) => concurrencyLimit(async () => {
|
|
@@ -238,10 +240,11 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext,
|
|
|
238
240
|
hookTimeout: getHookTimeoutDefault('onBeforePrerenderStart')
|
|
239
241
|
});
|
|
240
242
|
})));
|
|
241
|
-
await Promise.all(onBeforePrerenderStartHooks.map(({
|
|
243
|
+
await Promise.all(onBeforePrerenderStartHooks.map(({ pageId, ...hook }) => concurrencyLimit(async () => {
|
|
242
244
|
if (doNotPrerenderList.find((p) => p.pageId === pageId))
|
|
243
245
|
return;
|
|
244
|
-
const
|
|
246
|
+
const { hookName, hookFilePath } = hook;
|
|
247
|
+
const prerenderResult = await execHookWithoutPageContext(() => hook.hookFn(), hook);
|
|
245
248
|
const result = normalizeOnPrerenderHookResult(prerenderResult, hookFilePath, hookName);
|
|
246
249
|
// Handle result
|
|
247
250
|
await Promise.all(result.map(async ({ url, pageContext }) => {
|
|
@@ -258,7 +261,7 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext,
|
|
|
258
261
|
}
|
|
259
262
|
// Add result
|
|
260
263
|
const providedByHook = { hookFilePath, hookName };
|
|
261
|
-
const pageContextNew = await createPageContextPrerendering(url, prerenderContext, globalContext,
|
|
264
|
+
const pageContextNew = await createPageContextPrerendering(url, prerenderContext, globalContext, false, undefined, providedByHook);
|
|
262
265
|
prerenderContext.pageContexts.push(pageContextNew);
|
|
263
266
|
if (pageContext) {
|
|
264
267
|
objectAssign(pageContextNew, { _pageContextAlreadyProvidedByOnPrerenderHook: true });
|
|
@@ -304,22 +307,22 @@ function getUrlList404(globalContext) {
|
|
|
304
307
|
}
|
|
305
308
|
return urlList;
|
|
306
309
|
}
|
|
307
|
-
async function createPageContexts(urlList, prerenderContext, globalContext,
|
|
310
|
+
async function createPageContexts(urlList, prerenderContext, globalContext, concurrencyLimit, is404) {
|
|
308
311
|
await Promise.all(urlList.map(({ urlOriginal, pageId }) => concurrencyLimit(async () => {
|
|
309
312
|
// Already included in a onBeforePrerenderStart() hook
|
|
310
313
|
if (prerenderContext.pageContexts.find((pageContext) => isSameUrl(pageContext.urlOriginal, urlOriginal))) {
|
|
311
314
|
return;
|
|
312
315
|
}
|
|
313
|
-
const pageContext = await createPageContextPrerendering(urlOriginal, prerenderContext, globalContext,
|
|
316
|
+
const pageContext = await createPageContextPrerendering(urlOriginal, prerenderContext, globalContext, is404, pageId, null);
|
|
314
317
|
prerenderContext.pageContexts.push(pageContext);
|
|
315
318
|
})));
|
|
316
319
|
}
|
|
317
|
-
async function createPageContextPrerendering(urlOriginal, prerenderContext, globalContext,
|
|
320
|
+
async function createPageContextPrerendering(urlOriginal, prerenderContext, globalContext, is404, pageId, providedByHook) {
|
|
318
321
|
const pageContextInit = {
|
|
319
322
|
urlOriginal,
|
|
320
323
|
...prerenderContext._pageContextInit
|
|
321
324
|
};
|
|
322
|
-
const pageContext = await createPageContextServerSide(pageContextInit, globalContext,
|
|
325
|
+
const pageContext = await createPageContextServerSide(pageContextInit, globalContext, {
|
|
323
326
|
isPrerendering: true
|
|
324
327
|
});
|
|
325
328
|
assert(pageContext.isPrerendering === true);
|
|
@@ -463,26 +466,13 @@ async function callOnPrerenderStartHook(prerenderContext, globalContext, concurr
|
|
|
463
466
|
assert(pageContext.urlOriginal);
|
|
464
467
|
pageContext._urlOriginalBeforeHook = pageContext.urlOriginal;
|
|
465
468
|
});
|
|
466
|
-
const docLink = 'https://vike.dev/i18n#pre-rendering';
|
|
467
469
|
prerenderContext.pageContexts.forEach((pageContext) => {
|
|
468
470
|
// Preserve URL computed properties when the user is copying pageContext is his onPrerenderStart() hook, e.g. /examples/i18n/
|
|
469
471
|
// https://vike.dev/i18n#pre-rendering
|
|
470
472
|
preservePropertyGetters(pageContext);
|
|
471
473
|
});
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
// TODO/v1-release: remove warning
|
|
475
|
-
Object.defineProperty(prerenderContextPublic, 'prerenderPageContexts', {
|
|
476
|
-
get() {
|
|
477
|
-
assertWarning(false, `prerenderPageContexts has been renamed pageContexts, see ${docLink}`, {
|
|
478
|
-
showStackTrace: true,
|
|
479
|
-
onlyOnce: true
|
|
480
|
-
});
|
|
481
|
-
return prerenderContext.pageContexts;
|
|
482
|
-
}
|
|
483
|
-
});
|
|
484
|
-
return hookFn(prerenderContextPublic);
|
|
485
|
-
}, onPrerenderStartHook, null);
|
|
474
|
+
const prerenderContextPublic = preparePrerenderContextForPublicUsage(prerenderContext);
|
|
475
|
+
let result = await execHookWithoutPageContext(() => hookFn(prerenderContextPublic), onPrerenderStartHook);
|
|
486
476
|
// Before applying result
|
|
487
477
|
prerenderContext.pageContexts.forEach((pageContext) => {
|
|
488
478
|
;
|
|
@@ -731,10 +721,24 @@ function assertIsNotAbort(err, urlOriginal) {
|
|
|
731
721
|
assert(abortCall);
|
|
732
722
|
assertUsage(false, `${pc.cyan(abortCall)} thrown${thrownBy} while pre-rendering ${urlOriginal} but ${pc.cyan(abortCaller)} isn't supported for pre-rendered pages`);
|
|
733
723
|
}
|
|
734
|
-
function
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
'
|
|
738
|
-
|
|
724
|
+
function preparePrerenderContextForPublicUsage(prerenderContext) {
|
|
725
|
+
// TODO/v1-release: remove
|
|
726
|
+
if (!('prerenderPageContexts' in prerenderContext)) {
|
|
727
|
+
Object.defineProperty(prerenderContext, 'prerenderPageContexts', {
|
|
728
|
+
get() {
|
|
729
|
+
assertWarning(false, `prerenderPageContexts has been renamed pageContexts, see ${pc.underline(docLink)}`, {
|
|
730
|
+
showStackTrace: true,
|
|
731
|
+
onlyOnce: true
|
|
732
|
+
});
|
|
733
|
+
return prerenderContext.pageContexts;
|
|
734
|
+
}
|
|
735
|
+
});
|
|
736
|
+
}
|
|
737
|
+
// Required because of https://vike.dev/i18n#pre-rendering
|
|
738
|
+
// - Thus, we have to let users access the original pageContext object => we cannot use ES proxies and we cannot use preparePageContextForPublicUsage()
|
|
739
|
+
prerenderContext.pageContexts.forEach((pageContext) => {
|
|
740
|
+
changeEnumerable(pageContext, '_isOriginalObject', true);
|
|
741
|
+
});
|
|
742
|
+
const prerenderContextPublic = getProxyForPublicUsage(prerenderContext, 'prerenderContext');
|
|
739
743
|
return prerenderContextPublic;
|
|
740
744
|
}
|
|
@@ -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/getPublicProxy.js';
|
|
17
16
|
export * from '../../utils/isNullish.js';
|
|
18
17
|
export * from '../../utils/preservePropertyGetters.js';
|
|
18
|
+
export * from '../../utils/changeEnumerable.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/getPublicProxy.js';
|
|
19
18
|
export * from '../../utils/isNullish.js';
|
|
20
19
|
export * from '../../utils/preservePropertyGetters.js';
|
|
20
|
+
export * from '../../utils/changeEnumerable.js';
|