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
|
@@ -31,3 +31,4 @@ __exportStar(require("../../utils/slice.js"), exports);
|
|
|
31
31
|
__exportStar(require("../../utils/unique.js"), exports); // Only used by Server Routing (not needed for Client Routing)
|
|
32
32
|
__exportStar(require("../../utils/getPropAccessNotation.js"), exports);
|
|
33
33
|
__exportStar(require("../../utils/augmentType.js"), exports);
|
|
34
|
+
__exportStar(require("../../utils/changeEnumerable.js"), exports);
|
|
@@ -1,31 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.preparePageContextForPublicUsageClientShared = preparePageContextForPublicUsageClientShared;
|
|
4
|
+
exports.preparePageContextForPublicUsageClientMinimal = preparePageContextForPublicUsageClientMinimal;
|
|
4
5
|
const utils_js_1 = require("../server-routing-runtime/utils.js");
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const pageContextTyped = pageContext;
|
|
10
|
-
(0, utils_js_1.assert)([true, false].includes(pageContextTyped.isHydration));
|
|
11
|
-
(0, utils_js_1.assert)([true, false, null].includes(pageContextTyped.isBackwardNavigation));
|
|
12
|
-
}
|
|
13
|
-
else {
|
|
14
|
-
const pageContextTyped = pageContext;
|
|
15
|
-
(0, utils_js_1.assert)(pageContextTyped.isHydration === true);
|
|
16
|
-
(0, utils_js_1.assert)(pageContextTyped.isBackwardNavigation === null);
|
|
17
|
-
}
|
|
18
|
-
const Page = pageContext.config.Page ||
|
|
6
|
+
const preparePageContextForPublicUsage_js_1 = require("../../shared/preparePageContextForPublicUsage.js");
|
|
7
|
+
function preparePageContextForPublicUsageClientShared(pageContext) {
|
|
8
|
+
// TODO/now use proxy
|
|
9
|
+
const Page = pageContext.config?.Page ||
|
|
19
10
|
// TODO/next-major-release: remove
|
|
20
|
-
pageContext.exports
|
|
11
|
+
pageContext.exports?.Page;
|
|
21
12
|
(0, utils_js_1.objectAssign)(pageContext, { Page });
|
|
13
|
+
// TODO/next-major-release: after we remove supportVueReactiviy() we can call this later inside the agnostic preparePageContextForPublicUsage()
|
|
14
|
+
(0, preparePageContextForPublicUsage_js_1.assertPropertyGetters)(pageContext);
|
|
22
15
|
// TODO/next-major-release: remove
|
|
23
16
|
// - Requires https://github.com/vikejs/vike-vue/issues/198
|
|
24
17
|
// - 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.
|
|
25
18
|
supportVueReactiviy(pageContext);
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
19
|
+
return preparePageContextForPublicUsageClientMinimal(pageContext);
|
|
20
|
+
}
|
|
21
|
+
function preparePageContextForPublicUsageClientMinimal(pageContext) {
|
|
22
|
+
const pageContextPublic = (0, preparePageContextForPublicUsage_js_1.preparePageContextForPublicUsage)(pageContext);
|
|
23
|
+
return pageContextPublic;
|
|
29
24
|
}
|
|
30
25
|
// With Vue + Cient Routing, the `pageContext` is made reactive:
|
|
31
26
|
// ```js
|
|
@@ -39,6 +34,7 @@ function supportVueReactiviy(pageContext) {
|
|
|
39
34
|
// Remove propery descriptor getters because they break Vue's reactivity.
|
|
40
35
|
// E.g. resolve the `pageContext.urlPathname` getter.
|
|
41
36
|
function resolveGetters(pageContext) {
|
|
37
|
+
return;
|
|
42
38
|
Object.entries(pageContext).forEach(([key, val]) => {
|
|
43
39
|
delete pageContext[key];
|
|
44
40
|
pageContext[key] = val;
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.build = build;
|
|
7
4
|
const prepareViteApiCall_js_1 = require("./prepareViteApiCall.js");
|
|
8
5
|
const vite_1 = require("vite");
|
|
9
|
-
const assert_1 = __importDefault(require("assert"));
|
|
10
6
|
const context_js_1 = require("../cli/context.js");
|
|
11
7
|
const context_js_2 = require("../prerender/context.js");
|
|
12
8
|
const utils_js_1 = require("./utils.js");
|
|
@@ -38,7 +34,7 @@ async function build(options = {}) {
|
|
|
38
34
|
await (0, vite_1.build)(viteConfigFromUserEnhanced);
|
|
39
35
|
// After pre-rendering, when using the Vike CLI, the process is forcefully exited at the end of the buildVite() call above.
|
|
40
36
|
if ((0, context_js_1.isVikeCli)() && (0, context_js_2.isPrerendering)())
|
|
41
|
-
(0,
|
|
37
|
+
(0, utils_js_1.assert)(false);
|
|
42
38
|
}
|
|
43
39
|
return {
|
|
44
40
|
/* We don't return `viteConfig` because `viteConfigFromUserEnhanced` is `InlineConfig` not `ResolvedConfig`
|
|
@@ -27,7 +27,7 @@ const log_js_1 = require("./loggerNotProd/log.js");
|
|
|
27
27
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
28
28
|
const isNewError_js_1 = require("../../runtime/renderPage/isNewError.js");
|
|
29
29
|
const loggerProd_js_1 = require("../../runtime/renderPage/loggerProd.js");
|
|
30
|
-
const
|
|
30
|
+
const execHook_js_1 = require("../../../shared/hooks/execHook.js");
|
|
31
31
|
(0, utils_js_1.assertIsNotProductionRuntime)();
|
|
32
32
|
(0, loggerRuntime_js_1.overwriteRuntimeProductionLogger)(logRuntimeError, logRuntimeInfo);
|
|
33
33
|
(0, utils_js_1.overwriteAssertProductionLogger)(assertLogger);
|
|
@@ -97,7 +97,7 @@ function logErr(err, httpRequestId = null, errorComesFromVite) {
|
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
99
|
// Needs to be after assertion messages handling, because user hooks may throw an assertion error
|
|
100
|
-
const hook = (0,
|
|
100
|
+
const hook = (0, execHook_js_1.isUserHookError)(err);
|
|
101
101
|
if (hook) {
|
|
102
102
|
const { hookName, hookFilePath } = hook;
|
|
103
103
|
(0, log_js_1.logWithVikeTag)(picocolors_1.default.red(`Following error was thrown by the ${hookName}() hook defined at ${hookFilePath}`), 'error', category);
|
|
@@ -61,7 +61,7 @@ const getHook_js_1 = require("../../shared/hooks/getHook.js");
|
|
|
61
61
|
const noRouteMatch_js_1 = require("../../shared/route/noRouteMatch.js");
|
|
62
62
|
const getVikeConfig_js_1 = require("../plugin/plugins/importUserCode/v1-design/getVikeConfig.js");
|
|
63
63
|
const logErrorHint_js_1 = require("../runtime/renderPage/logErrorHint.js");
|
|
64
|
-
const
|
|
64
|
+
const execHook_js_1 = require("../../shared/hooks/execHook.js");
|
|
65
65
|
const prepareViteApiCall_js_1 = require("../api/prepareViteApiCall.js");
|
|
66
66
|
const context_js_1 = require("./context.js");
|
|
67
67
|
const resolvePrerenderConfig_js_1 = require("./resolvePrerenderConfig.js");
|
|
@@ -70,6 +70,8 @@ const context_js_2 = require("../cli/context.js");
|
|
|
70
70
|
const isViteCliCall_js_1 = require("../plugin/shared/isViteCliCall.js");
|
|
71
71
|
const commonConfig_js_1 = require("../plugin/plugins/commonConfig.js");
|
|
72
72
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
73
|
+
const getProxyForPublicUsage_js_1 = require("../../shared/getProxyForPublicUsage.js");
|
|
74
|
+
const docLink = 'https://vike.dev/i18n#pre-rendering';
|
|
73
75
|
async function runPrerenderFromAPI(options = {}) {
|
|
74
76
|
return await runPrerender(options, 'prerender()');
|
|
75
77
|
// - 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.
|
|
@@ -132,7 +134,7 @@ async function runPrerender(options = {}, standaloneTrigger) {
|
|
|
132
134
|
}
|
|
133
135
|
const concurrencyLimit = (0, utils_js_1.pLimit)(parallel === false || parallel === 0 ? 1 : parallel === true || parallel === undefined ? (0, os_1.cpus)().length : parallel);
|
|
134
136
|
await (0, globalContext_js_1.initGlobalContext_runPrerender)();
|
|
135
|
-
const { globalContext
|
|
137
|
+
const { globalContext } = await (0, globalContext_js_1.getGlobalContextServerInternal)();
|
|
136
138
|
globalContext._pageFilesAll.forEach(assertExportNames);
|
|
137
139
|
const prerenderContext = {
|
|
138
140
|
pageContexts: [],
|
|
@@ -145,13 +147,13 @@ async function runPrerender(options = {}, standaloneTrigger) {
|
|
|
145
147
|
await collectDoNoPrerenderList(vikeConfig.pageConfigs, doNotPrerenderList, defaultLocalValue, concurrencyLimit, globalContext);
|
|
146
148
|
// Allow user to create `pageContext` for parameterized routes and/or bulk data fetching
|
|
147
149
|
// https://vike.dev/onBeforePrerenderStart
|
|
148
|
-
await callOnBeforePrerenderStartHooks(prerenderContext, globalContext,
|
|
150
|
+
await callOnBeforePrerenderStartHooks(prerenderContext, globalContext, concurrencyLimit, doNotPrerenderList);
|
|
149
151
|
// Create `pageContext` for each page with a static route
|
|
150
152
|
const urlList = getUrlListFromPagesWithStaticRoute(globalContext, doNotPrerenderList);
|
|
151
|
-
await createPageContexts(urlList, prerenderContext, globalContext,
|
|
153
|
+
await createPageContexts(urlList, prerenderContext, globalContext, concurrencyLimit, false);
|
|
152
154
|
// Create `pageContext` for 404 page
|
|
153
155
|
const urlList404 = getUrlList404(globalContext);
|
|
154
|
-
await createPageContexts(urlList404, prerenderContext, globalContext,
|
|
156
|
+
await createPageContexts(urlList404, prerenderContext, globalContext, concurrencyLimit, true);
|
|
155
157
|
// Allow user to duplicate the list of `pageContext` for i18n
|
|
156
158
|
// https://vike.dev/onPrerenderStart
|
|
157
159
|
await callOnPrerenderStartHook(prerenderContext, globalContext, concurrencyLimit);
|
|
@@ -170,8 +172,8 @@ async function runPrerender(options = {}, standaloneTrigger) {
|
|
|
170
172
|
console.log(`${picocolors_1.default.green(`✓`)} ${prerenderedCount} HTML documents pre-rendered.`);
|
|
171
173
|
}
|
|
172
174
|
await warnMissingPages(prerenderContext._prerenderedPageContexts, globalContext, doNotPrerenderList, partial);
|
|
173
|
-
const prerenderContextPublic =
|
|
174
|
-
(0, utils_js_1.objectAssign)(vike.prerenderContext, prerenderContextPublic);
|
|
175
|
+
const prerenderContextPublic = preparePrerenderContextForPublicUsage(prerenderContext);
|
|
176
|
+
(0, utils_js_1.objectAssign)(vike.prerenderContext, prerenderContextPublic, true);
|
|
175
177
|
if (prerenderConfigGlobal.isPrerenderingEnabledForAllPages && !prerenderConfigGlobal.keepDistServer) {
|
|
176
178
|
node_fs_1.default.rmSync(outDirServer, { recursive: true });
|
|
177
179
|
}
|
|
@@ -233,7 +235,7 @@ function assertExportNames(pageFile) {
|
|
|
233
235
|
const { exportNames, fileType } = pageFile;
|
|
234
236
|
(0, utils_js_1.assert)(exportNames || fileType === '.page.route' || fileType === '.css', pageFile.filePath);
|
|
235
237
|
}
|
|
236
|
-
async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext,
|
|
238
|
+
async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext, concurrencyLimit, doNotPrerenderList) {
|
|
237
239
|
const onBeforePrerenderStartHooks = [];
|
|
238
240
|
// V1 design
|
|
239
241
|
await Promise.all(globalContext._pageConfigs.map((pageConfig) => concurrencyLimit(async () => {
|
|
@@ -276,10 +278,11 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext,
|
|
|
276
278
|
hookTimeout: (0, getHook_js_1.getHookTimeoutDefault)('onBeforePrerenderStart')
|
|
277
279
|
});
|
|
278
280
|
})));
|
|
279
|
-
await Promise.all(onBeforePrerenderStartHooks.map(({
|
|
281
|
+
await Promise.all(onBeforePrerenderStartHooks.map(({ pageId, ...hook }) => concurrencyLimit(async () => {
|
|
280
282
|
if (doNotPrerenderList.find((p) => p.pageId === pageId))
|
|
281
283
|
return;
|
|
282
|
-
const
|
|
284
|
+
const { hookName, hookFilePath } = hook;
|
|
285
|
+
const prerenderResult = await (0, execHook_js_1.execHookWithoutPageContext)(() => hook.hookFn(), hook);
|
|
283
286
|
const result = normalizeOnPrerenderHookResult(prerenderResult, hookFilePath, hookName);
|
|
284
287
|
// Handle result
|
|
285
288
|
await Promise.all(result.map(async ({ url, pageContext }) => {
|
|
@@ -296,7 +299,7 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext,
|
|
|
296
299
|
}
|
|
297
300
|
// Add result
|
|
298
301
|
const providedByHook = { hookFilePath, hookName };
|
|
299
|
-
const pageContextNew = await createPageContextPrerendering(url, prerenderContext, globalContext,
|
|
302
|
+
const pageContextNew = await createPageContextPrerendering(url, prerenderContext, globalContext, false, undefined, providedByHook);
|
|
300
303
|
prerenderContext.pageContexts.push(pageContextNew);
|
|
301
304
|
if (pageContext) {
|
|
302
305
|
(0, utils_js_1.objectAssign)(pageContextNew, { _pageContextAlreadyProvidedByOnPrerenderHook: true });
|
|
@@ -342,22 +345,22 @@ function getUrlList404(globalContext) {
|
|
|
342
345
|
}
|
|
343
346
|
return urlList;
|
|
344
347
|
}
|
|
345
|
-
async function createPageContexts(urlList, prerenderContext, globalContext,
|
|
348
|
+
async function createPageContexts(urlList, prerenderContext, globalContext, concurrencyLimit, is404) {
|
|
346
349
|
await Promise.all(urlList.map(({ urlOriginal, pageId }) => concurrencyLimit(async () => {
|
|
347
350
|
// Already included in a onBeforePrerenderStart() hook
|
|
348
351
|
if (prerenderContext.pageContexts.find((pageContext) => isSameUrl(pageContext.urlOriginal, urlOriginal))) {
|
|
349
352
|
return;
|
|
350
353
|
}
|
|
351
|
-
const pageContext = await createPageContextPrerendering(urlOriginal, prerenderContext, globalContext,
|
|
354
|
+
const pageContext = await createPageContextPrerendering(urlOriginal, prerenderContext, globalContext, is404, pageId, null);
|
|
352
355
|
prerenderContext.pageContexts.push(pageContext);
|
|
353
356
|
})));
|
|
354
357
|
}
|
|
355
|
-
async function createPageContextPrerendering(urlOriginal, prerenderContext, globalContext,
|
|
358
|
+
async function createPageContextPrerendering(urlOriginal, prerenderContext, globalContext, is404, pageId, providedByHook) {
|
|
356
359
|
const pageContextInit = {
|
|
357
360
|
urlOriginal,
|
|
358
361
|
...prerenderContext._pageContextInit
|
|
359
362
|
};
|
|
360
|
-
const pageContext = await (0, createPageContextServerSide_js_1.createPageContextServerSide)(pageContextInit, globalContext,
|
|
363
|
+
const pageContext = await (0, createPageContextServerSide_js_1.createPageContextServerSide)(pageContextInit, globalContext, {
|
|
361
364
|
isPrerendering: true
|
|
362
365
|
});
|
|
363
366
|
(0, utils_js_1.assert)(pageContext.isPrerendering === true);
|
|
@@ -501,26 +504,13 @@ async function callOnPrerenderStartHook(prerenderContext, globalContext, concurr
|
|
|
501
504
|
(0, utils_js_1.assert)(pageContext.urlOriginal);
|
|
502
505
|
pageContext._urlOriginalBeforeHook = pageContext.urlOriginal;
|
|
503
506
|
});
|
|
504
|
-
const docLink = 'https://vike.dev/i18n#pre-rendering';
|
|
505
507
|
prerenderContext.pageContexts.forEach((pageContext) => {
|
|
506
508
|
// Preserve URL computed properties when the user is copying pageContext is his onPrerenderStart() hook, e.g. /examples/i18n/
|
|
507
509
|
// https://vike.dev/i18n#pre-rendering
|
|
508
510
|
(0, utils_js_1.preservePropertyGetters)(pageContext);
|
|
509
511
|
});
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
// TODO/v1-release: remove warning
|
|
513
|
-
Object.defineProperty(prerenderContextPublic, 'prerenderPageContexts', {
|
|
514
|
-
get() {
|
|
515
|
-
(0, utils_js_1.assertWarning)(false, `prerenderPageContexts has been renamed pageContexts, see ${docLink}`, {
|
|
516
|
-
showStackTrace: true,
|
|
517
|
-
onlyOnce: true
|
|
518
|
-
});
|
|
519
|
-
return prerenderContext.pageContexts;
|
|
520
|
-
}
|
|
521
|
-
});
|
|
522
|
-
return hookFn(prerenderContextPublic);
|
|
523
|
-
}, onPrerenderStartHook, null);
|
|
512
|
+
const prerenderContextPublic = preparePrerenderContextForPublicUsage(prerenderContext);
|
|
513
|
+
let result = await (0, execHook_js_1.execHookWithoutPageContext)(() => hookFn(prerenderContextPublic), onPrerenderStartHook);
|
|
524
514
|
// Before applying result
|
|
525
515
|
prerenderContext.pageContexts.forEach((pageContext) => {
|
|
526
516
|
;
|
|
@@ -760,7 +750,7 @@ function assertIsNotAbort(err, urlOriginal) {
|
|
|
760
750
|
if (!(0, abort_js_1.isAbortError)(err))
|
|
761
751
|
return;
|
|
762
752
|
const pageContextAbort = err._pageContextAbort;
|
|
763
|
-
const hookLoc = (0,
|
|
753
|
+
const hookLoc = (0, execHook_js_1.isUserHookError)(err);
|
|
764
754
|
(0, utils_js_1.assert)(hookLoc);
|
|
765
755
|
const thrownBy = ` by ${picocolors_1.default.cyan(`${hookLoc.hookName}()`)} hook defined at ${hookLoc.hookFilePath}`;
|
|
766
756
|
const abortCaller = pageContextAbort._abortCaller;
|
|
@@ -769,10 +759,24 @@ function assertIsNotAbort(err, urlOriginal) {
|
|
|
769
759
|
(0, utils_js_1.assert)(abortCall);
|
|
770
760
|
(0, utils_js_1.assertUsage)(false, `${picocolors_1.default.cyan(abortCall)} thrown${thrownBy} while pre-rendering ${urlOriginal} but ${picocolors_1.default.cyan(abortCaller)} isn't supported for pre-rendered pages`);
|
|
771
761
|
}
|
|
772
|
-
function
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
'
|
|
776
|
-
|
|
762
|
+
function preparePrerenderContextForPublicUsage(prerenderContext) {
|
|
763
|
+
// TODO/v1-release: remove
|
|
764
|
+
if (!('prerenderPageContexts' in prerenderContext)) {
|
|
765
|
+
Object.defineProperty(prerenderContext, 'prerenderPageContexts', {
|
|
766
|
+
get() {
|
|
767
|
+
(0, utils_js_1.assertWarning)(false, `prerenderPageContexts has been renamed pageContexts, see ${picocolors_1.default.underline(docLink)}`, {
|
|
768
|
+
showStackTrace: true,
|
|
769
|
+
onlyOnce: true
|
|
770
|
+
});
|
|
771
|
+
return prerenderContext.pageContexts;
|
|
772
|
+
}
|
|
773
|
+
});
|
|
774
|
+
}
|
|
775
|
+
// Required because of https://vike.dev/i18n#pre-rendering
|
|
776
|
+
// - Thus, we have to let users access the original pageContext object => we cannot use ES proxies and we cannot use preparePageContextForPublicUsage()
|
|
777
|
+
prerenderContext.pageContexts.forEach((pageContext) => {
|
|
778
|
+
(0, utils_js_1.changeEnumerable)(pageContext, '_isOriginalObject', true);
|
|
779
|
+
});
|
|
780
|
+
const prerenderContextPublic = (0, getProxyForPublicUsage_js_1.getProxyForPublicUsage)(prerenderContext, 'prerenderContext');
|
|
777
781
|
return prerenderContextPublic;
|
|
778
782
|
}
|
|
@@ -31,6 +31,6 @@ __exportStar(require("../../utils/pLimit.js"), exports);
|
|
|
31
31
|
__exportStar(require("../../utils/isFilePathAbsoluteFilesystem.js"), exports);
|
|
32
32
|
__exportStar(require("../../utils/isArray.js"), exports);
|
|
33
33
|
__exportStar(require("../../utils/isObject.js"), exports);
|
|
34
|
-
__exportStar(require("../../utils/getPublicProxy.js"), exports);
|
|
35
34
|
__exportStar(require("../../utils/isNullish.js"), exports);
|
|
36
35
|
__exportStar(require("../../utils/preservePropertyGetters.js"), exports);
|
|
36
|
+
__exportStar(require("../../utils/changeEnumerable.js"), exports);
|
|
@@ -36,6 +36,7 @@ const loadPageRoutes_js_1 = require("../../shared/route/loadPageRoutes.js");
|
|
|
36
36
|
const assertV1Design_js_1 = require("../shared/assertV1Design.js");
|
|
37
37
|
const resolveBase_js_1 = require("../shared/resolveBase.js");
|
|
38
38
|
const createGlobalContextShared_js_1 = require("../../shared/createGlobalContextShared.js");
|
|
39
|
+
const prepareGlobalContextForPublicUsage_js_1 = require("../../shared/prepareGlobalContextForPublicUsage.js");
|
|
39
40
|
const debug = (0, utils_js_1.createDebugger)('vike:globalContext');
|
|
40
41
|
const globalObject = (0, utils_js_1.getGlobalObject)('runtime/globalContext.ts', getInitialGlobalContext());
|
|
41
42
|
// Trick to break down TypeScript circular dependency
|
|
@@ -47,10 +48,9 @@ async function getGlobalContextServerInternal() {
|
|
|
47
48
|
assertGlobalContextIsDefined();
|
|
48
49
|
if (globalObject.isProduction !== true)
|
|
49
50
|
await globalObject.waitForUserFilesUpdate;
|
|
50
|
-
const { globalContext
|
|
51
|
+
const { globalContext } = globalObjectTyped;
|
|
51
52
|
assertIsDefined(globalContext);
|
|
52
|
-
|
|
53
|
-
return { globalContext, globalContext_public };
|
|
53
|
+
return { globalContext };
|
|
54
54
|
}
|
|
55
55
|
function assertIsDefined(globalContext) {
|
|
56
56
|
if (!globalContext) {
|
|
@@ -62,7 +62,6 @@ function assertIsDefined(globalContext) {
|
|
|
62
62
|
function assertGlobalContextIsDefined() {
|
|
63
63
|
assertIsDefined(globalObjectTyped.globalContext);
|
|
64
64
|
(0, utils_js_1.assert)(globalObject.globalContext);
|
|
65
|
-
(0, utils_js_1.assert)(globalObject.globalContext_public);
|
|
66
65
|
}
|
|
67
66
|
// We purposely return GlobalContext instead of GlobalContextServer because `import { getGlobalContext } from 'vike'` can resolve to the client-side implementation.
|
|
68
67
|
/**
|
|
@@ -92,9 +91,7 @@ async function getGlobalContextAsync(isProduction) {
|
|
|
92
91
|
if (!isProduction)
|
|
93
92
|
await globalObject.waitForUserFilesUpdate;
|
|
94
93
|
assertGlobalContextIsDefined();
|
|
95
|
-
|
|
96
|
-
(0, utils_js_1.assert)(globalContext_public);
|
|
97
|
-
return globalContext_public;
|
|
94
|
+
return getGlobalContextForPublicUsage();
|
|
98
95
|
}
|
|
99
96
|
/**
|
|
100
97
|
* Get runtime information about your app.
|
|
@@ -105,26 +102,19 @@ async function getGlobalContextAsync(isProduction) {
|
|
|
105
102
|
*/
|
|
106
103
|
function getGlobalContextSync() {
|
|
107
104
|
debug('getGlobalContextSync()');
|
|
108
|
-
const {
|
|
109
|
-
(0, utils_js_1.assertUsage)(
|
|
105
|
+
const { globalContext } = globalObjectTyped;
|
|
106
|
+
(0, utils_js_1.assertUsage)(globalContext, createGlobalContextShared_js_1.getGlobalContextSyncErrMsg);
|
|
110
107
|
(0, utils_js_1.assertWarning)(false,
|
|
111
108
|
// We discourage users from using it because `pageContext.globalContext` is safer: I ain't sure but there could be race conditions when using `getGlobalContextSync()` inside React/Vue components upon HMR.
|
|
112
109
|
// We're lying about "is going to be deprecated in the next major release": let's keep it and see if users need it (so far I can't see a use case for it).
|
|
113
110
|
'getGlobalContextSync() is going to be deprecated in the next major release, see https://vike.dev/getGlobalContext', { onlyOnce: true });
|
|
114
|
-
return
|
|
115
|
-
}
|
|
116
|
-
function
|
|
117
|
-
const
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
'viteConfigRuntime',
|
|
122
|
-
'pages',
|
|
123
|
-
'baseServer',
|
|
124
|
-
'baseAssets',
|
|
125
|
-
'isClientSide'
|
|
126
|
-
], true);
|
|
127
|
-
return globalContextPublic;
|
|
111
|
+
return getGlobalContextForPublicUsage();
|
|
112
|
+
}
|
|
113
|
+
function getGlobalContextForPublicUsage() {
|
|
114
|
+
const { globalContext } = globalObjectTyped;
|
|
115
|
+
(0, utils_js_1.assert)(globalContext);
|
|
116
|
+
const globalContextForPublicUsage = (0, prepareGlobalContextForPublicUsage_js_1.prepareGlobalContextForPublicUsage)(globalContext);
|
|
117
|
+
return globalContextForPublicUsage;
|
|
128
118
|
}
|
|
129
119
|
async function setGlobalContext_viteDevServer(viteDevServer) {
|
|
130
120
|
debug('setGlobalContext_viteDevServer()');
|
|
@@ -338,8 +328,6 @@ async function setGlobalContext(virtualFileExports) {
|
|
|
338
328
|
(0, assertV1Design_js_1.assertV1Design)(
|
|
339
329
|
// pageConfigs is PageConfigRuntime[] but assertV1Design() requires PageConfigBuildTime[]
|
|
340
330
|
globalContext._pageConfigs.length > 0, globalContext._pageFilesAll);
|
|
341
|
-
// Public usage
|
|
342
|
-
globalObject.globalContext_public = makePublic(globalContext);
|
|
343
331
|
assertGlobalContextIsDefined();
|
|
344
332
|
(0, utils_js_1.onSetupRuntime)();
|
|
345
333
|
// Never actually used, only used for TypeScript `ReturnType<typeof setGlobalContext>`
|
|
@@ -361,7 +349,6 @@ async function addGlobalContext(globalContext) {
|
|
|
361
349
|
(0, utils_js_1.assert)(viteConfigRuntime);
|
|
362
350
|
(0, utils_js_1.assert)(!isPrerendering);
|
|
363
351
|
return {
|
|
364
|
-
...globalContext,
|
|
365
352
|
...globalContextBase,
|
|
366
353
|
...resolveBaseRuntime(viteConfigRuntime, globalContext.config),
|
|
367
354
|
_isProduction: false,
|
|
@@ -379,7 +366,6 @@ async function addGlobalContext(globalContext) {
|
|
|
379
366
|
(0, utils_js_1.assert)(buildInfo);
|
|
380
367
|
(0, utils_js_1.assert)(assetsManifest);
|
|
381
368
|
const globalContextBase2 = {
|
|
382
|
-
...globalContext,
|
|
383
369
|
...globalContextBase,
|
|
384
370
|
...resolveBaseRuntime(buildInfo.viteConfigRuntime, globalContext.config),
|
|
385
371
|
_isProduction: true,
|
|
@@ -41,7 +41,7 @@ function getPageContextClientSerialized(pageContext) {
|
|
|
41
41
|
}
|
|
42
42
|
function getGlobalContextClientSerialized(pageContext) {
|
|
43
43
|
const passToClient = pageContext._passToClient;
|
|
44
|
-
const globalContextClient = applyPassToClient(passToClient, pageContext.
|
|
44
|
+
const globalContextClient = applyPassToClient(passToClient, pageContext._globalContext);
|
|
45
45
|
const globalContextClientSerialized = serializeObject(globalContextClient, 'globalContext', passToClient);
|
|
46
46
|
return globalContextClientSerialized;
|
|
47
47
|
}
|
|
@@ -5,18 +5,13 @@ exports.createPageContextServerSideWithoutGlobalContext = createPageContextServe
|
|
|
5
5
|
const utils_js_1 = require("../utils.js");
|
|
6
6
|
const getPageContextUrlComputed_js_1 = require("../../../shared/getPageContextUrlComputed.js");
|
|
7
7
|
const createPageContextShared_js_1 = require("../../../shared/createPageContextShared.js");
|
|
8
|
-
async function createPageContextServerSide(pageContextInit, globalContext,
|
|
8
|
+
async function createPageContextServerSide(pageContextInit, globalContext, { isPrerendering, ssr: { urlHandler, isClientSideNavigation } = {
|
|
9
9
|
urlHandler: null,
|
|
10
10
|
isClientSideNavigation: false
|
|
11
11
|
} }) {
|
|
12
12
|
(0, utils_js_1.assert)(pageContextInit.urlOriginal);
|
|
13
13
|
const pageContextCreated = createPageContext(pageContextInit, isPrerendering);
|
|
14
14
|
(0, utils_js_1.objectAssign)(pageContextCreated, {
|
|
15
|
-
/* Don't spread globalContext for now? Or never spread it as it leads to confusion? The convenience isn't worth the added confusion?
|
|
16
|
-
// We must use Flatten<T> otherwise TypeScript complains upon assigning types
|
|
17
|
-
...(globalContext as Flatten<typeof globalContext>), // least precedence
|
|
18
|
-
*/
|
|
19
|
-
globalContext: globalObject_public,
|
|
20
15
|
_globalContext: globalContext,
|
|
21
16
|
// The following is defined on `pageContext` because we can eventually make these non-global
|
|
22
17
|
_baseServer: globalContext.baseServer,
|
|
@@ -65,10 +60,11 @@ function createPageContextServerSideWithoutGlobalContext(pageContextInit) {
|
|
|
65
60
|
return pageContext;
|
|
66
61
|
}
|
|
67
62
|
function createPageContext(pageContextInit, isPrerendering) {
|
|
68
|
-
const pageContext =
|
|
63
|
+
const pageContext = (0, createPageContextShared_js_1.createPageContextObject)();
|
|
64
|
+
(0, utils_js_1.objectAssign)(pageContext, {
|
|
69
65
|
isClientSide: false,
|
|
70
66
|
isPrerendering
|
|
71
|
-
};
|
|
67
|
+
});
|
|
72
68
|
(0, utils_js_1.objectAssign)(pageContext, pageContextInit);
|
|
73
69
|
return pageContext;
|
|
74
70
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.execHookServer = execHookServer;
|
|
4
|
+
const execHook_js_1 = require("../../../shared/hooks/execHook.js");
|
|
5
|
+
const preparePageContextForPublicUsageServer_js_1 = require("./preparePageContextForPublicUsageServer.js");
|
|
6
|
+
async function execHookServer(hookName, pageContext) {
|
|
7
|
+
return await (0, execHook_js_1.execHook)(hookName, pageContext, (p) => {
|
|
8
|
+
(0, preparePageContextForPublicUsageServer_js_1.preparePageContextForPublicUsageServer)(p);
|
|
9
|
+
return p;
|
|
10
|
+
});
|
|
11
|
+
}
|
|
@@ -2,30 +2,30 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.executeOnBeforeRenderAndDataHooks = executeOnBeforeRenderAndDataHooks;
|
|
4
4
|
const assertOnBeforeRenderHookReturn_js_1 = require("../../../shared/assertOnBeforeRenderHookReturn.js");
|
|
5
|
-
const
|
|
5
|
+
const execHookServer_js_1 = require("./execHookServer.js");
|
|
6
6
|
async function executeOnBeforeRenderAndDataHooks(pageContext) {
|
|
7
7
|
if (pageContext._pageContextAlreadyProvidedByOnPrerenderHook) {
|
|
8
8
|
return;
|
|
9
9
|
}
|
|
10
|
-
const hooks = await (0,
|
|
10
|
+
const hooks = await (0, execHookServer_js_1.execHookServer)('data', pageContext);
|
|
11
11
|
const dataHook = hooks[0]; // TO-DO/soon: support cumulative
|
|
12
12
|
if (dataHook) {
|
|
13
|
-
// Note:
|
|
13
|
+
// Note: hookReturn can be anything (e.g. an object) and is to be assigned to pageContext.data
|
|
14
14
|
const pageContextFromHook = {
|
|
15
|
-
data: dataHook.
|
|
15
|
+
data: dataHook.hookReturn
|
|
16
16
|
};
|
|
17
17
|
Object.assign(pageContext, pageContextFromHook);
|
|
18
18
|
// Execute +onData
|
|
19
19
|
if (!pageContext.isClientSideNavigation) {
|
|
20
|
-
await (0,
|
|
20
|
+
await (0, execHookServer_js_1.execHookServer)('onData', pageContext);
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
|
-
const res = await (0,
|
|
23
|
+
const res = await (0, execHookServer_js_1.execHookServer)('onBeforeRender', pageContext);
|
|
24
24
|
const onBeforeRenderHook = res[0]; // TO-DO/soon: support cumulative
|
|
25
25
|
if (onBeforeRenderHook) {
|
|
26
|
-
const {
|
|
27
|
-
(0, assertOnBeforeRenderHookReturn_js_1.assertOnBeforeRenderHookReturn)(
|
|
28
|
-
const pageContextFromHook =
|
|
26
|
+
const { hookReturn } = onBeforeRenderHook;
|
|
27
|
+
(0, assertOnBeforeRenderHookReturn_js_1.assertOnBeforeRenderHookReturn)(hookReturn, onBeforeRenderHook.hookFilePath);
|
|
28
|
+
const pageContextFromHook = hookReturn?.pageContext;
|
|
29
29
|
Object.assign(pageContext, pageContextFromHook);
|
|
30
30
|
}
|
|
31
31
|
}
|
|
@@ -9,17 +9,16 @@ const getHook_js_1 = require("../../../shared/hooks/getHook.js");
|
|
|
9
9
|
const utils_js_1 = require("../utils.js");
|
|
10
10
|
const stream_js_1 = require("../html/stream.js");
|
|
11
11
|
const assertPageContextProvidedByUser_js_1 = require("../../../shared/assertPageContextProvidedByUser.js");
|
|
12
|
-
const
|
|
12
|
+
const preparePageContextForPublicUsageServer_js_1 = require("./preparePageContextForPublicUsageServer.js");
|
|
13
13
|
const assertHookReturnedObject_js_1 = require("../../../shared/assertHookReturnedObject.js");
|
|
14
14
|
const loggerRuntime_js_1 = require("./loggerRuntime.js");
|
|
15
15
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
16
|
-
const
|
|
16
|
+
const execHook_js_1 = require("../../../shared/hooks/execHook.js");
|
|
17
17
|
async function executeOnRenderHtmlHook(pageContext) {
|
|
18
|
-
const
|
|
19
|
-
(0, utils_js_1.objectAssign)(pageContext, { _renderHook:
|
|
20
|
-
(0,
|
|
21
|
-
const
|
|
22
|
-
const { documentHtml, pageContextProvidedByRenderHook, pageContextPromise, injectFilter } = processHookReturnValue(hookReturnValue, renderHook);
|
|
18
|
+
const hook = getRenderHook(pageContext);
|
|
19
|
+
(0, utils_js_1.objectAssign)(pageContext, { _renderHook: hook });
|
|
20
|
+
const { hookReturn } = await (0, execHook_js_1.execHookSingleWithReturn)(hook, pageContext, preparePageContextForPublicUsageServer_js_1.preparePageContextForPublicUsageServer);
|
|
21
|
+
const { documentHtml, pageContextProvidedByRenderHook, pageContextPromise, injectFilter } = processHookReturnValue(hookReturn, hook);
|
|
23
22
|
Object.assign(pageContext, pageContextProvidedByRenderHook);
|
|
24
23
|
(0, utils_js_1.objectAssign)(pageContext, { _pageContextPromise: pageContextPromise });
|
|
25
24
|
const onErrorWhileStreaming = (err) => {
|
|
@@ -34,7 +33,7 @@ async function executeOnRenderHtmlHook(pageContext) {
|
|
|
34
33
|
};
|
|
35
34
|
const htmlRender = await (0, renderHtml_js_1.renderDocumentHtml)(documentHtml, pageContext, onErrorWhileStreaming, injectFilter);
|
|
36
35
|
(0, utils_js_1.assert)(typeof htmlRender === 'string' || (0, stream_js_1.isStream)(htmlRender));
|
|
37
|
-
return { htmlRender, renderHook };
|
|
36
|
+
return { htmlRender, renderHook: hook };
|
|
38
37
|
}
|
|
39
38
|
function getRenderHook(pageContext) {
|
|
40
39
|
let hookFound;
|
|
@@ -54,10 +53,7 @@ function getRenderHook(pageContext) {
|
|
|
54
53
|
if (hook) {
|
|
55
54
|
(0, utils_js_1.assert)(hookName);
|
|
56
55
|
const { hookFilePath, hookFn, hookTimeout } = hook;
|
|
57
|
-
hookFound = {
|
|
58
|
-
hookFn,
|
|
59
|
-
renderHook: { hookFn, hookFilePath, hookName, hookTimeout }
|
|
60
|
-
};
|
|
56
|
+
hookFound = { hookFn, hookFilePath, hookName, hookTimeout };
|
|
61
57
|
}
|
|
62
58
|
}
|
|
63
59
|
if (!hookFound) {
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.preparePageContextForPublicUsageServer = preparePageContextForPublicUsageServer;
|
|
4
|
+
const preparePageContextForPublicUsage_js_1 = require("../../../shared/preparePageContextForPublicUsage.js");
|
|
5
|
+
function preparePageContextForPublicUsageServer(pageContext) {
|
|
6
|
+
// TODO/next-major-release: after we remove supportVueReactiviy() we can call this later inside the agnostic preparePageContextForPublicUsage()
|
|
7
|
+
(0, preparePageContextForPublicUsage_js_1.assertPropertyGetters)(pageContext);
|
|
8
|
+
pageContext = (0, preparePageContextForPublicUsage_js_1.preparePageContextForPublicUsage)(pageContext);
|
|
9
|
+
return pageContext;
|
|
10
|
+
}
|
|
@@ -15,7 +15,7 @@ const executeOnRenderHtmlHook_js_1 = require("./executeOnRenderHtmlHook.js");
|
|
|
15
15
|
const executeOnBeforeRenderAndDataHooks_js_1 = require("./executeOnBeforeRenderAndDataHooks.js");
|
|
16
16
|
const loggerRuntime_js_1 = require("./loggerRuntime.js");
|
|
17
17
|
const isNewError_js_1 = require("./isNewError.js");
|
|
18
|
-
const
|
|
18
|
+
const preparePageContextForPublicUsageServer_js_1 = require("./preparePageContextForPublicUsageServer.js");
|
|
19
19
|
const executeGuardHook_js_1 = require("../../../shared/route/executeGuardHook.js");
|
|
20
20
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
21
21
|
const isServerSideError_js_1 = require("../../../shared/misc/isServerSideError.js");
|
|
@@ -28,7 +28,7 @@ async function renderPageAlreadyRouted(pageContext) {
|
|
|
28
28
|
(0, utils_js_1.assert)(isError === (pageContext.pageId === (0, error_page_js_1.getErrorPageId)(pageContext._pageFilesAll, pageContext._pageConfigs)));
|
|
29
29
|
(0, utils_js_1.objectAssign)(pageContext, await (0, loadPageConfigsLazyServerSide_js_1.loadPageConfigsLazyServerSide)(pageContext));
|
|
30
30
|
if (!isError) {
|
|
31
|
-
await (0, executeGuardHook_js_1.executeGuardHook)(pageContext, (pageContext) => (0,
|
|
31
|
+
await (0, executeGuardHook_js_1.executeGuardHook)(pageContext, (pageContext) => (0, preparePageContextForPublicUsageServer_js_1.preparePageContextForPublicUsageServer)(pageContext));
|
|
32
32
|
}
|
|
33
33
|
if (!isError) {
|
|
34
34
|
await (0, executeOnBeforeRenderAndDataHooks_js_1.executeOnBeforeRenderAndDataHooks)(pageContext);
|
|
@@ -65,7 +65,7 @@ async function prerenderPage(pageContext) {
|
|
|
65
65
|
});
|
|
66
66
|
/* Should we execute the guard() hook upon pre-rendering? Is there a use case for this?
|
|
67
67
|
* - It isn't trivial to implement, as it requires to duplicate / factor out the isAbortError() handling
|
|
68
|
-
await executeGuardHook(pageContext, (pageContext) =>
|
|
68
|
+
await executeGuardHook(pageContext, (pageContext) => preparePageContextForPublicUsageServer(pageContext))
|
|
69
69
|
*/
|
|
70
70
|
await (0, executeOnBeforeRenderAndDataHooks_js_1.executeOnBeforeRenderAndDataHooks)(pageContext);
|
|
71
71
|
const { htmlRender, renderHook } = await (0, executeOnRenderHtmlHook_js_1.executeOnRenderHtmlHook)(pageContext);
|
|
@@ -24,6 +24,7 @@ const error_page_js_1 = require("../../shared/error-page.js");
|
|
|
24
24
|
const handleErrorWithoutErrorPage_js_1 = require("./renderPage/handleErrorWithoutErrorPage.js");
|
|
25
25
|
const loadPageConfigsLazyServerSide_js_1 = require("./renderPage/loadPageConfigsLazyServerSide.js");
|
|
26
26
|
const resolveRedirects_js_1 = require("./renderPage/resolveRedirects.js");
|
|
27
|
+
const getProxyForPublicUsage_js_1 = require("../../shared/getProxyForPublicUsage.js");
|
|
27
28
|
const globalObject = (0, utils_js_1.getGlobalObject)('runtime/renderPage.ts', {
|
|
28
29
|
httpRequestsCount: 0
|
|
29
30
|
});
|
|
@@ -81,8 +82,8 @@ async function renderPagePrepare(pageContextInit, httpRequestId) {
|
|
|
81
82
|
else {
|
|
82
83
|
// `globalContext` now contains the entire Vike config and getVikeConfig() isn't called anymore for this request.
|
|
83
84
|
}
|
|
84
|
-
const { globalContext
|
|
85
|
-
const pageContextBegin = await getPageContextBegin(pageContextInit, globalContext,
|
|
85
|
+
const { globalContext } = await (0, globalContext_js_1.getGlobalContextServerInternal)();
|
|
86
|
+
const pageContextBegin = await getPageContextBegin(pageContextInit, globalContext, httpRequestId);
|
|
86
87
|
// Check Base URL
|
|
87
88
|
{
|
|
88
89
|
const pageContextHttpResponse = await checkBaseUrl(pageContextBegin, globalContext);
|
|
@@ -304,9 +305,9 @@ async function getPageContextErrorPageInit(pageContextBegin, errNominalPage, pag
|
|
|
304
305
|
(0, utils_js_1.assert)(pageContext.errorWhileRendering);
|
|
305
306
|
return pageContext;
|
|
306
307
|
}
|
|
307
|
-
async function getPageContextBegin(pageContextInit, globalContext,
|
|
308
|
+
async function getPageContextBegin(pageContextInit, globalContext, httpRequestId) {
|
|
308
309
|
const { isClientSideNavigation, _urlHandler } = handlePageContextUrl(pageContextInit.urlOriginal);
|
|
309
|
-
const pageContextBegin = await (0, createPageContextServerSide_js_1.createPageContextServerSide)(pageContextInit, globalContext,
|
|
310
|
+
const pageContextBegin = await (0, createPageContextServerSide_js_1.createPageContextServerSide)(pageContextInit, globalContext, {
|
|
310
311
|
isPrerendering: false,
|
|
311
312
|
ssr: {
|
|
312
313
|
urlHandler: _urlHandler,
|
|
@@ -488,5 +489,6 @@ function getPageContextInvalidVikeConfig(err, pageContextInit, httpRequestId) {
|
|
|
488
489
|
function forkPageContext(pageContextBegin) {
|
|
489
490
|
const pageContext = {};
|
|
490
491
|
(0, utils_js_1.objectAssign)(pageContext, pageContextBegin, true);
|
|
491
|
-
|
|
492
|
+
const pageContextWithProxy = (0, getProxyForPublicUsage_js_1.getProxyForMutationTracking)(pageContext);
|
|
493
|
+
return pageContextWithProxy;
|
|
492
494
|
}
|
|
@@ -74,5 +74,5 @@ __exportStar(require("../../utils/isVikeReactApp.js"), exports);
|
|
|
74
74
|
__exportStar(require("../../utils/getPropAccessNotation.js"), exports);
|
|
75
75
|
__exportStar(require("../../utils/PROJECT_VERSION.js"), exports);
|
|
76
76
|
__exportStar(require("../../utils/genPromise.js"), exports);
|
|
77
|
-
__exportStar(require("../../utils/getPublicProxy.js"), exports);
|
|
78
77
|
__exportStar(require("../../utils/augmentType.js"), exports);
|
|
78
|
+
__exportStar(require("../../utils/changeEnumerable.js"), exports);
|