vike 0.4.232-commit-ec54a7e → 0.4.232

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.
Files changed (29) hide show
  1. package/dist/cjs/node/prerender/runPrerender.js +2 -7
  2. package/dist/cjs/node/runtime/renderPage/execHookServer.js +4 -1
  3. package/dist/cjs/node/runtime/renderPage/loadPageConfigsLazyServerSide.js +12 -17
  4. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +1 -1
  5. package/dist/cjs/node/runtime/renderPage.js +48 -55
  6. package/dist/cjs/shared/createPageContextShared.js +3 -1
  7. package/dist/cjs/shared/route/index.js +0 -1
  8. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  9. package/dist/cjs/utils/styleFileRE.js +0 -1
  10. package/dist/esm/client/runtime-client-routing/prefetch.js +2 -2
  11. package/dist/esm/client/runtime-client-routing/renderPageClientSide.js +9 -21
  12. package/dist/esm/client/runtime-server-routing/createPageContextClientSide.js +4 -11
  13. package/dist/esm/client/shared/loadPageConfigsLazyClientSide.d.ts +2 -12
  14. package/dist/esm/client/shared/loadPageConfigsLazyClientSide.js +2 -2
  15. package/dist/esm/node/prerender/runPrerender.d.ts +4 -250
  16. package/dist/esm/node/prerender/runPrerender.js +2 -7
  17. package/dist/esm/node/runtime/renderPage/execHookServer.js +4 -1
  18. package/dist/esm/node/runtime/renderPage/loadPageConfigsLazyServerSide.d.ts +5 -14
  19. package/dist/esm/node/runtime/renderPage/loadPageConfigsLazyServerSide.js +12 -17
  20. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +2 -2
  21. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +2 -2
  22. package/dist/esm/node/runtime/renderPage.js +49 -56
  23. package/dist/esm/shared/createPageContextShared.js +3 -1
  24. package/dist/esm/shared/hooks/execHook.d.ts +2 -3
  25. package/dist/esm/shared/route/index.js +0 -1
  26. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  27. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  28. package/dist/esm/utils/styleFileRE.js +0 -1
  29. package/package.json +1 -1
@@ -67,7 +67,6 @@ const getOutDirs_js_1 = require("../vite/shared/getOutDirs.js");
67
67
  const node_fs_1 = __importDefault(require("node:fs"));
68
68
  const getProxyForPublicUsage_js_1 = require("../../shared/getProxyForPublicUsage.js");
69
69
  const resolveRedirects_js_1 = require("../runtime/renderPage/resolveRedirects.js");
70
- const utils_js_2 = require("../runtime/utils.js");
71
70
  const docLink = 'https://vike.dev/i18n#pre-rendering';
72
71
  async function runPrerender(options = {}, trigger) {
73
72
  (0, context_js_1.setWasPrerenderRun)(trigger);
@@ -361,7 +360,7 @@ async function createPageContextPrerendering(urlOriginal, prerenderContext, glob
361
360
  routeParams: {},
362
361
  });
363
362
  }
364
- (0, utils_js_2.augmentType)(pageContext, await (0, loadPageConfigsLazyServerSide_js_1.loadPageConfigsLazyServerSide)(pageContext));
363
+ (0, utils_js_1.objectAssign)(pageContext, await (0, loadPageConfigsLazyServerSide_js_1.loadPageConfigsLazyServerSide)(pageContext));
365
364
  let usesClientRouter;
366
365
  {
367
366
  const { pageId } = pageContext;
@@ -764,13 +763,9 @@ function getRedirectHtml(urlTarget) {
764
763
  <meta charset="UTF-8">
765
764
  <meta http-equiv="refresh" content="0;url=${urlTargetSafe}">
766
765
  <title>Redirect ${urlTargetSafe}</title>
767
- <style>body{opacity:0}</style>
768
- <noscript>
769
- <style>body{opacity:1}</style>
770
- </noscript>
771
766
  </head>
772
767
  <body style="min-height: 100vh; margin: 0; font-family: sans-serif; display: flex; justify-content: center; align-items: center; transition: opacity 0.3s;">
773
- <script>setTimeout(()=>{document.body.style.opacity=1},2000)</script>
768
+ <script>document.body.style.opacity=0; setTimeout(()=>{document.body.style.opacity=1},1000);</script>
774
769
  <div>
775
770
  <h1>Redirect <a href="${urlTargetSafe}"><code style="background-color: #eaeaea; padding: 3px 5px; border-radius: 4px;">${urlTargetSafe}</code></a></h1>
776
771
  <p>If you aren't redirected, click the link above.</p>
@@ -4,5 +4,8 @@ exports.execHookServer = execHookServer;
4
4
  const execHook_js_1 = require("../../../shared/hooks/execHook.js");
5
5
  const preparePageContextForPublicUsageServer_js_1 = require("./preparePageContextForPublicUsageServer.js");
6
6
  async function execHookServer(hookName, pageContext) {
7
- return await (0, execHook_js_1.execHook)(hookName, pageContext, preparePageContextForPublicUsageServer_js_1.preparePageContextForPublicUsageServer);
7
+ return await (0, execHook_js_1.execHook)(hookName, pageContext, (p) => {
8
+ (0, preparePageContextForPublicUsageServer_js_1.preparePageContextForPublicUsageServer)(p);
9
+ return p;
10
+ });
8
11
  }
@@ -10,14 +10,7 @@ const debugPageFiles_js_1 = require("./debugPageFiles.js");
10
10
  const findPageConfig_js_1 = require("../../../shared/page-configs/findPageConfig.js");
11
11
  const analyzePage_js_1 = require("./analyzePage.js");
12
12
  const loadConfigValues_js_1 = require("../../../shared/page-configs/loadConfigValues.js");
13
- const execHookServer_js_1 = require("./execHookServer.js");
14
13
  async function loadPageConfigsLazyServerSide(pageContext) {
15
- const pageContextAddendum = await loadPageConfigsLazy(pageContext);
16
- (0, utils_js_1.objectAssign)(pageContext, pageContextAddendum);
17
- await (0, execHookServer_js_1.execHookServer)('onCreatePageContext', pageContext);
18
- return pageContext;
19
- }
20
- async function loadPageConfigsLazy(pageContext) {
21
14
  const pageConfig = (0, findPageConfig_js_1.findPageConfig)(pageContext._globalContext._pageConfigs, pageContext.pageId); // Make pageConfig globally available as pageContext._pageConfig ?
22
15
  const globalContext = pageContext._globalContext;
23
16
  const [{ pageFilesLoaded, pageContextExports }] = await Promise.all([
@@ -93,16 +86,18 @@ async function loadPageConfigsLazy(pageContext) {
93
86
  return pageAssetsOldFormat;
94
87
  },
95
88
  });
96
- (0, debugPageFiles_js_1.debugPageFiles)({
97
- pageContext,
98
- isHtmlOnly,
99
- isClientRouting,
100
- pageFilesLoaded,
101
- pageFilesClientSide,
102
- pageFilesServerSide,
103
- clientEntries,
104
- clientDependencies,
105
- });
89
+ {
90
+ (0, debugPageFiles_js_1.debugPageFiles)({
91
+ pageContext,
92
+ isHtmlOnly,
93
+ isClientRouting,
94
+ pageFilesLoaded,
95
+ pageFilesClientSide,
96
+ pageFilesServerSide,
97
+ clientEntries,
98
+ clientDependencies,
99
+ });
100
+ }
106
101
  return pageContextAddendum;
107
102
  }
108
103
  async function loadPageUserFiles(pageFilesAll, pageConfig, pageConfigGlobal, pageId, isDev) {
@@ -28,7 +28,7 @@ async function renderPageAlreadyRouted(pageContext) {
28
28
  (0, utils_js_1.assert)(isError ===
29
29
  (pageContext.pageId ===
30
30
  (0, error_page_js_1.getErrorPageId)(pageContext._globalContext._pageFilesAll, pageContext._globalContext._pageConfigs)));
31
- (0, utils_js_1.augmentType)(pageContext, await (0, loadPageConfigsLazyServerSide_js_1.loadPageConfigsLazyServerSide)(pageContext));
31
+ (0, utils_js_1.objectAssign)(pageContext, await (0, loadPageConfigsLazyServerSide_js_1.loadPageConfigsLazyServerSide)(pageContext));
32
32
  if (!isError) {
33
33
  await (0, executeGuardHook_js_1.executeGuardHook)(pageContext, (pageContext) => (0, preparePageContextForPublicUsageServer_js_1.preparePageContextForPublicUsageServer)(pageContext));
34
34
  }
@@ -143,66 +143,59 @@ async function renderPageAlreadyPrepared(pageContextBegin, globalContext, httpRe
143
143
  else {
144
144
  (0, utils_js_1.assert)(errNominalPage);
145
145
  (0, utils_js_1.assert)(pageContextNominalPageSuccess === undefined);
146
- return await renderPageOnError(errNominalPage, pageContextBegin, pageContextNominalPageBegin, globalContext, httpRequestId, pageContextsFromRewrite);
147
- }
148
- }
149
- // When the normal page threw an error
150
- // - Can be a URL rewrite upon `throw render('/some-url')`
151
- // - Can be rendering the error page
152
- // - Can be rendering Vike's generic error page (if no error page is defined, or if the error page throws an error)
153
- async function renderPageOnError(errNominalPage, pageContextBegin, pageContextNominalPageBegin, globalContext, httpRequestId, pageContextsFromRewrite) {
154
- (0, utils_js_1.assert)(pageContextNominalPageBegin);
155
- (0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageContextNominalPageBegin, 'urlOriginal', 'string'));
156
- const pageContextErrorPageInit = await getPageContextErrorPageInit(pageContextBegin, errNominalPage, pageContextNominalPageBegin);
157
- // Handle `throw redirect()` and `throw render()` while rendering nominal page
158
- if ((0, abort_js_1.isAbortError)(errNominalPage)) {
159
- const handled = await handleAbortError(errNominalPage, pageContextsFromRewrite, pageContextBegin, pageContextNominalPageBegin, httpRequestId, pageContextErrorPageInit, globalContext);
160
- if (handled.pageContextReturn) {
161
- // - throw redirect()
162
- // - throw render(url)
163
- // - throw render(abortStatusCode) if .pageContext.json request
164
- return handled.pageContextReturn;
165
- }
166
- else {
167
- // - throw render(abortStatusCode) if not .pageContext.json request
146
+ (0, utils_js_1.assert)(pageContextNominalPageBegin);
147
+ (0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageContextNominalPageBegin, 'urlOriginal', 'string'));
148
+ const pageContextErrorPageInit = await getPageContextErrorPageInit(pageContextBegin, errNominalPage, pageContextNominalPageBegin);
149
+ // Handle `throw redirect()` and `throw render()` while rendering nominal page
150
+ if ((0, abort_js_1.isAbortError)(errNominalPage)) {
151
+ const handled = await handleAbortError(errNominalPage, pageContextsFromRewrite, pageContextBegin, pageContextNominalPageBegin, httpRequestId, pageContextErrorPageInit, globalContext);
152
+ if (handled.pageContextReturn) {
153
+ // - throw redirect()
154
+ // - throw render(url)
155
+ // - throw render(abortStatusCode) if .pageContext.json request
156
+ return handled.pageContextReturn;
157
+ }
158
+ else {
159
+ // - throw render(abortStatusCode) if not .pageContext.json request
160
+ }
161
+ Object.assign(pageContextErrorPageInit, handled.pageContextAbort);
168
162
  }
169
- Object.assign(pageContextErrorPageInit, handled.pageContextAbort);
170
- }
171
- {
172
- const errorPageId = (0, error_page_js_1.getErrorPageId)(globalContext._pageFilesAll, globalContext._pageConfigs);
173
- if (!errorPageId) {
174
- (0, utils_js_1.objectAssign)(pageContextErrorPageInit, { pageId: null });
175
- return (0, handleErrorWithoutErrorPage_js_1.handleErrorWithoutErrorPage)(pageContextErrorPageInit);
163
+ {
164
+ const errorPageId = (0, error_page_js_1.getErrorPageId)(globalContext._pageFilesAll, globalContext._pageConfigs);
165
+ if (!errorPageId) {
166
+ (0, utils_js_1.objectAssign)(pageContextErrorPageInit, { pageId: null });
167
+ return (0, handleErrorWithoutErrorPage_js_1.handleErrorWithoutErrorPage)(pageContextErrorPageInit);
168
+ }
169
+ else {
170
+ (0, utils_js_1.objectAssign)(pageContextErrorPageInit, { pageId: errorPageId });
171
+ }
176
172
  }
177
- else {
178
- (0, utils_js_1.objectAssign)(pageContextErrorPageInit, { pageId: errorPageId });
173
+ let pageContextErrorPage;
174
+ try {
175
+ pageContextErrorPage = await (0, renderPageAlreadyRouted_js_1.renderPageAlreadyRouted)(pageContextErrorPageInit);
179
176
  }
180
- }
181
- let pageContextErrorPage;
182
- try {
183
- pageContextErrorPage = await (0, renderPageAlreadyRouted_js_1.renderPageAlreadyRouted)(pageContextErrorPageInit);
184
- }
185
- catch (errErrorPage) {
186
- // Handle `throw redirect()` and `throw render()` while rendering error page
187
- if ((0, abort_js_1.isAbortError)(errErrorPage)) {
188
- const handled = await handleAbortError(errErrorPage, pageContextsFromRewrite, pageContextBegin, pageContextNominalPageBegin, httpRequestId, pageContextErrorPageInit, globalContext);
189
- // throw render(abortStatusCode)
190
- if (!handled.pageContextReturn) {
191
- const pageContextAbort = errErrorPage._pageContextAbort;
192
- (0, utils_js_1.assertWarning)(false, `Failed to render error page because ${picocolors_1.default.cyan(pageContextAbort._abortCall)} was called: make sure ${picocolors_1.default.cyan(pageContextAbort._abortCaller)} doesn't occur while the error page is being rendered.`, { onlyOnce: false });
193
- const pageContextHttpWithError = getPageContextHttpResponseError(errNominalPage, pageContextBegin);
194
- return pageContextHttpWithError;
177
+ catch (errErrorPage) {
178
+ // Handle `throw redirect()` and `throw render()` while rendering error page
179
+ if ((0, abort_js_1.isAbortError)(errErrorPage)) {
180
+ const handled = await handleAbortError(errErrorPage, pageContextsFromRewrite, pageContextBegin, pageContextNominalPageBegin, httpRequestId, pageContextErrorPageInit, globalContext);
181
+ // throw render(abortStatusCode)
182
+ if (!handled.pageContextReturn) {
183
+ const pageContextAbort = errErrorPage._pageContextAbort;
184
+ (0, utils_js_1.assertWarning)(false, `Failed to render error page because ${picocolors_1.default.cyan(pageContextAbort._abortCall)} was called: make sure ${picocolors_1.default.cyan(pageContextAbort._abortCaller)} doesn't occur while the error page is being rendered.`, { onlyOnce: false });
185
+ const pageContextHttpWithError = getPageContextHttpResponseError(errNominalPage, pageContextBegin);
186
+ return pageContextHttpWithError;
187
+ }
188
+ // `throw redirect()` / `throw render(url)`
189
+ return handled.pageContextReturn;
195
190
  }
196
- // `throw redirect()` / `throw render(url)`
197
- return handled.pageContextReturn;
198
- }
199
- if ((0, isNewError_js_1.isNewError)(errErrorPage, errNominalPage)) {
200
- (0, loggerRuntime_js_1.logRuntimeError)(errErrorPage, httpRequestId);
191
+ if ((0, isNewError_js_1.isNewError)(errErrorPage, errNominalPage)) {
192
+ (0, loggerRuntime_js_1.logRuntimeError)(errErrorPage, httpRequestId);
193
+ }
194
+ const pageContextWithError = getPageContextHttpResponseError(errNominalPage, pageContextBegin);
195
+ return pageContextWithError;
201
196
  }
202
- const pageContextWithError = getPageContextHttpResponseError(errNominalPage, pageContextBegin);
203
- return pageContextWithError;
197
+ return pageContextErrorPage;
204
198
  }
205
- return pageContextErrorPage;
206
199
  }
207
200
  function logHttpRequest(urlOriginal, httpRequestId) {
208
201
  (0, loggerRuntime_js_1.logRuntimeInfo)?.(getRequestInfoMessage(urlOriginal), httpRequestId, 'info');
@@ -424,7 +417,7 @@ pageContextNominalPageBegin, httpRequestId, pageContextErrorPageInit, globalCont
424
417
  (0, utils_js_1.objectAssign)(pageContext, { pageId: errorPageId });
425
418
  (0, utils_js_1.objectAssign)(pageContext, pageContextAbort);
426
419
  (0, utils_js_1.objectAssign)(pageContext, pageContextErrorPageInit, true);
427
- (0, utils_js_1.augmentType)(pageContext, await (0, loadPageConfigsLazyServerSide_js_1.loadPageConfigsLazyServerSide)(pageContext));
420
+ (0, utils_js_1.objectAssign)(pageContext, await (0, loadPageConfigsLazyServerSide_js_1.loadPageConfigsLazyServerSide)(pageContext));
428
421
  // We include pageContextInit: we don't only serialize pageContextAbort because the error page may need to access pageContextInit
429
422
  pageContextSerialized = (0, serializeContext_js_1.getPageContextClientSerialized)(pageContext);
430
423
  }
@@ -2,10 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createPageContextShared = createPageContextShared;
4
4
  exports.createPageContextObject = createPageContextObject;
5
+ const execHook_js_1 = require("./hooks/execHook.js");
6
+ const preparePageContextForPublicUsage_js_1 = require("./preparePageContextForPublicUsage.js");
5
7
  const utils_js_1 = require("./utils.js");
6
- // TODO/now: make this and parents sync
7
8
  async function createPageContextShared(pageContextCreated, pageConfigGlobal, vikeConfigPublicGlobal) {
8
9
  (0, utils_js_1.objectAssign)(pageContextCreated, vikeConfigPublicGlobal);
10
+ await (0, execHook_js_1.execHookGlobal)('onCreatePageContext', pageConfigGlobal, pageContextCreated, pageContextCreated, preparePageContextForPublicUsage_js_1.preparePageContextForPublicUsage);
9
11
  return pageContextCreated;
10
12
  }
11
13
  function createPageContextObject() {
@@ -17,7 +17,6 @@ const resolveRouteFunction_js_1 = require("./resolveRouteFunction.js");
17
17
  const executeOnBeforeRouteHook_js_1 = require("./executeOnBeforeRouteHook.js");
18
18
  const debug_js_1 = require("./debug.js");
19
19
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
20
- // TODO/next-major-release: make it sync
21
20
  async function route(pageContext, skipOnBeforeRouteHook) {
22
21
  (0, debug_js_1.debug)('Pages routes:', pageContext._globalContext._pageRoutes);
23
22
  const pageContextFromRoute = {};
@@ -2,4 +2,4 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PROJECT_VERSION = void 0;
4
4
  // Automatically updated by @brillout/release-me
5
- exports.PROJECT_VERSION = '0.4.232-commit-ec54a7e';
5
+ exports.PROJECT_VERSION = '0.4.232';
@@ -2,5 +2,4 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.styleFileRE = void 0;
4
4
  // Copied from https://github.com/vitejs/vite/blob/d649daba7682791178b711d9a3e44a6b5d00990c/packages/vite/src/node/plugins/css.ts#L90-L91
5
- // spellcheck-ignore
6
5
  exports.styleFileRE = /\.(css|less|sass|scss|styl|stylus|pcss|postcss)($|\?)/;
@@ -6,7 +6,7 @@ export { addLinkPrefetchHandlers };
6
6
  export { addLinkPrefetchHandlers_watch };
7
7
  export { addLinkPrefetchHandlers_unwatch };
8
8
  import { assert, assertClientRouting, assertUsage, assertWarning, checkIfClientRouting, getGlobalObject, hasProp, objectAssign, } from './utils.js';
9
- import { isErrorFetchingStaticAssets, loadPageConfigsLazy } from '../shared/loadPageConfigsLazyClientSide.js';
9
+ import { isErrorFetchingStaticAssets, loadPageConfigsLazyClientSide } from '../shared/loadPageConfigsLazyClientSide.js';
10
10
  import { skipLink } from './skipLink.js';
11
11
  import { disableClientRouting } from './renderPageClientSide.js';
12
12
  import { isClientSideRoutable } from './isClientSideRoutable.js';
@@ -45,7 +45,7 @@ function getPageContextPrefetched(pageContext) {
45
45
  }
46
46
  async function prefetchAssets(pageContextLink) {
47
47
  try {
48
- await loadPageConfigsLazy(pageContextLink.pageId, pageContextLink._pageFilesAll, pageContextLink._globalContext._pageConfigs, pageContextLink._globalContext._pageConfigGlobal);
48
+ await loadPageConfigsLazyClientSide(pageContextLink.pageId, pageContextLink._pageFilesAll, pageContextLink._globalContext._pageConfigs, pageContextLink._globalContext._pageConfigGlobal);
49
49
  }
50
50
  catch (err) {
51
51
  if (isErrorFetchingStaticAssets(err)) {
@@ -9,7 +9,7 @@ import { createPageContextClientSide } from './createPageContextClientSide.js';
9
9
  import { addLinkPrefetchHandlers, addLinkPrefetchHandlers_unwatch, addLinkPrefetchHandlers_watch, getPageContextPrefetched, populatePageContextPrefetchCache, } from './prefetch.js';
10
10
  import { assertInfo, assertWarning, isReact } from './utils.js';
11
11
  import { executeOnRenderClientHook } from '../shared/executeOnRenderClientHook.js';
12
- import { isErrorFetchingStaticAssets, loadPageConfigsLazy, } from '../shared/loadPageConfigsLazyClientSide.js';
12
+ import { isErrorFetchingStaticAssets, loadPageConfigsLazyClientSide } from '../shared/loadPageConfigsLazyClientSide.js';
13
13
  import { pushHistoryState } from './history.js';
14
14
  import { assertNoInfiniteAbortLoop, getPageContextFromAllRewrites, isAbortError, logAbortErrorHandled, } from '../../shared/route/abort.js';
15
15
  import { route } from '../../shared/route/index.js';
@@ -20,7 +20,7 @@ import { getErrorPageId } from '../../shared/error-page.js';
20
20
  import { setPageContextCurrent } from './getPageContextCurrent.js';
21
21
  import { getRouteStringParameterList } from '../../shared/route/resolveRouteString.js';
22
22
  import { getCurrentUrl } from '../shared/getCurrentUrl.js';
23
- import { execHooksErrorHandling, execHookErrorHandling, execHook, } from '../../shared/hooks/execHook.js';
23
+ import { execHooksErrorHandling, execHookErrorHandling, } from '../../shared/hooks/execHook.js';
24
24
  import { preparePageContextForPublicUsageClient, } from './preparePageContextForPublicUsageClient.js';
25
25
  import { getHookFromPageContextNew } from '../../shared/hooks/getHook.js';
26
26
  import { preparePageContextForPublicUsageClientMinimal } from '../shared/preparePageContextForPublicUsageClientShared.js';
@@ -60,7 +60,7 @@ async function renderPageClientSide(renderArgs) {
60
60
  return;
61
61
  async function renderPageNominal() {
62
62
  const onError = async (err) => {
63
- await renderPageOnError({ err });
63
+ await renderErrorPage({ err });
64
64
  };
65
65
  const pageContext = await getPageContextBegin(false, pageContextBeginArgs);
66
66
  if (isRenderOutdated())
@@ -134,9 +134,8 @@ async function renderPageClientSide(renderArgs) {
134
134
  assert(!('urlOriginal' in pageContextFromRoute));
135
135
  objectAssign(pageContext, pageContextFromRoute);
136
136
  }
137
- let pageContextAugmented;
138
137
  try {
139
- pageContextAugmented = await loadPageConfigsLazyClientSide(pageContext);
138
+ objectAssign(pageContext, await loadPageConfigsLazyClientSide(pageContext.pageId, pageContext._pageFilesAll, pageContext._globalContext._pageConfigs, pageContext._globalContext._pageConfigGlobal));
140
139
  }
141
140
  catch (err) {
142
141
  if (handleErrorFetchingStaticAssets(err, pageContext, isFirstRender)) {
@@ -148,7 +147,6 @@ async function renderPageClientSide(renderArgs) {
148
147
  return;
149
148
  }
150
149
  }
151
- augmentType(pageContext, pageContextAugmented);
152
150
  if (isRenderOutdated())
153
151
  return;
154
152
  setPageContextCurrent(pageContext);
@@ -220,11 +218,7 @@ async function renderPageClientSide(renderArgs) {
220
218
  await renderPageView(pageContext);
221
219
  }
222
220
  }
223
- // When the normal page threw an error
224
- // - Can be a URL rewrite upon `throw render('/some-url')`
225
- // - Can be rendering the error page
226
- // - Can be rendering Vike's generic error page (if no error page is defined, or if the error page throws an error)
227
- async function renderPageOnError(args) {
221
+ async function renderErrorPage(args) {
228
222
  const onError = (err) => {
229
223
  if (!isSameErrorMessage(err, args.err)) {
230
224
  /* When we can't render the error page, we prefer showing a blank page over letting the server-side try because otherwise:
@@ -253,6 +247,8 @@ async function renderPageClientSide(renderArgs) {
253
247
  if (isRenderOutdated())
254
248
  return;
255
249
  objectAssign(pageContext, { routeParams: {} });
250
+ if (args.is404)
251
+ objectAssign(pageContext, { is404: true });
256
252
  if (args.pageContextError)
257
253
  objectAssign(pageContext, args.pageContextError);
258
254
  if ('err' in args) {
@@ -317,9 +313,8 @@ async function renderPageClientSide(renderArgs) {
317
313
  redirectHard(urlOriginal);
318
314
  return;
319
315
  }
320
- let pageContextAugmented;
321
316
  try {
322
- pageContextAugmented = await loadPageConfigsLazyClientSide(pageContext);
317
+ objectAssign(pageContext, await loadPageConfigsLazyClientSide(pageContext.pageId, pageContext._pageFilesAll, pageContext._globalContext._pageConfigs, pageContext._globalContext._pageConfigGlobal));
323
318
  }
324
319
  catch (err) {
325
320
  if (handleErrorFetchingStaticAssets(err, pageContext, isFirstRender)) {
@@ -331,7 +326,6 @@ async function renderPageClientSide(renderArgs) {
331
326
  return;
332
327
  }
333
328
  }
334
- augmentType(pageContext, pageContextAugmented);
335
329
  if (isRenderOutdated())
336
330
  return;
337
331
  setPageContextCurrent(pageContext);
@@ -367,7 +361,7 @@ async function renderPageClientSide(renderArgs) {
367
361
  async function renderPageView(pageContext, isErrorPage) {
368
362
  const onError = async (err) => {
369
363
  if (!isErrorPage) {
370
- await renderPageOnError({ err });
364
+ await renderErrorPage({ err });
371
365
  }
372
366
  else {
373
367
  if (!isSameErrorMessage(err, isErrorPage.err)) {
@@ -602,9 +596,3 @@ function areKeysEqual(key1, key2) {
602
596
  function getPageContextClient() {
603
597
  return globalObject.renderedPageContext ?? null;
604
598
  }
605
- async function loadPageConfigsLazyClientSide(pageContext) {
606
- const pageContextAddendum = await loadPageConfigsLazy(pageContext.pageId, pageContext._pageFilesAll, pageContext._globalContext._pageConfigs, pageContext._globalContext._pageConfigGlobal);
607
- objectAssign(pageContext, pageContextAddendum);
608
- await execHook('onCreatePageContext', pageContext, preparePageContextForPublicUsageClient);
609
- return pageContext;
610
- }
@@ -1,12 +1,10 @@
1
1
  export { createPageContextClientSide };
2
2
  import { assertUsage, augmentType, objectAssign } from './utils.js';
3
3
  import { getPageContextSerializedInHtml } from '../shared/getJsonSerializedInHtml.js';
4
- import { loadPageConfigsLazy, } from '../shared/loadPageConfigsLazyClientSide.js';
4
+ import { loadPageConfigsLazyClientSide } from '../shared/loadPageConfigsLazyClientSide.js';
5
5
  import { getCurrentUrl } from '../shared/getCurrentUrl.js';
6
6
  import { createPageContextObject, createPageContextShared } from '../../shared/createPageContextShared.js';
7
7
  import { getGlobalContextClientInternal } from './globalContext.js';
8
- import { preparePageContextForPublicUsageClient, } from './preparePageContextForPublicUsageClient.js';
9
- import { execHook } from '../../shared/hooks/execHook.js';
10
8
  const urlFirst = getCurrentUrl({ withoutHash: true });
11
9
  async function createPageContextClientSide() {
12
10
  const globalContext = await getGlobalContextClientInternal();
@@ -22,9 +20,10 @@ async function createPageContextClientSide() {
22
20
  });
23
21
  objectAssign(pageContextCreated, getPageContextSerializedInHtml());
24
22
  // Sets pageContext.config to global configs
25
- augmentType(pageContextCreated, await createPageContextShared(pageContextCreated, globalContext._pageConfigGlobal, globalContext._vikeConfigPublicGlobal));
23
+ const pageContextAugmented = await createPageContextShared(pageContextCreated, globalContext._pageConfigGlobal, globalContext._vikeConfigPublicGlobal);
24
+ augmentType(pageContextCreated, pageContextAugmented);
26
25
  // Sets pageContext.config to local configs (overrides the pageContext.config set above)
27
- augmentType(pageContextCreated, await loadPageConfigsLazyClientSide(pageContextCreated));
26
+ objectAssign(pageContextCreated, await loadPageConfigsLazyClientSide(pageContextCreated.pageId, globalContext._pageFilesAll, globalContext._pageConfigs, globalContext._pageConfigGlobal));
28
27
  assertPristineUrl();
29
28
  return pageContextCreated;
30
29
  }
@@ -32,9 +31,3 @@ function assertPristineUrl() {
32
31
  const urlCurrent = getCurrentUrl({ withoutHash: true });
33
32
  assertUsage(urlFirst === urlCurrent, `The URL was manipulated before the hydration finished ('${urlFirst}' to '${urlCurrent}'). Ensure the hydration has finished before manipulating the URL. Consider using the onHydrationEnd() hook.`);
34
33
  }
35
- async function loadPageConfigsLazyClientSide(pageContext) {
36
- const pageContextAddendum = await loadPageConfigsLazy(pageContext.pageId, pageContext._pageFilesAll, pageContext._globalContext._pageConfigs, pageContext._globalContext._pageConfigGlobal);
37
- objectAssign(pageContext, pageContextAddendum);
38
- await execHook('onCreatePageContext', pageContext, preparePageContextForPublicUsageClient);
39
- return pageContext;
40
- }
@@ -1,19 +1,9 @@
1
- export { loadPageConfigsLazy };
2
- export type { PageContext_loadPageConfigsLazyClientSide };
1
+ export { loadPageConfigsLazyClientSide };
3
2
  export { isErrorFetchingStaticAssets };
4
3
  import { type PageFile, type VikeConfigPublicPageLazy } from '../../shared/getPageFiles.js';
5
4
  import type { PageConfigGlobalRuntime, PageConfigRuntime } from '../../types/PageConfig.js';
6
- import { PageContextPrepareMinimum } from '../../shared/preparePageContextForPublicUsage.js';
7
- type PageContext_loadPageConfigsLazyClientSide = {
8
- pageId: string;
9
- _pageFilesAll: PageFile[];
10
- _globalContext: {
11
- _pageConfigs: PageConfigRuntime[];
12
- _pageConfigGlobal: PageConfigGlobalRuntime;
13
- };
14
- } & PageContextPrepareMinimum;
15
5
  type PageContextUserFilesLoaded = VikeConfigPublicPageLazy & {
16
6
  _pageFilesLoaded: PageFile[];
17
7
  };
18
- declare function loadPageConfigsLazy(pageId: string, pageFilesAll: PageFile[], pageConfigs: PageConfigRuntime[], pageConfigGlobal: PageConfigGlobalRuntime): Promise<PageContextUserFilesLoaded>;
8
+ declare function loadPageConfigsLazyClientSide(pageId: string, pageFilesAll: PageFile[], pageConfigs: PageConfigRuntime[], pageConfigGlobal: PageConfigGlobalRuntime): Promise<PageContextUserFilesLoaded>;
19
9
  declare function isErrorFetchingStaticAssets(err: unknown): boolean;
@@ -1,4 +1,4 @@
1
- export { loadPageConfigsLazy };
1
+ export { loadPageConfigsLazyClientSide };
2
2
  export { isErrorFetchingStaticAssets };
3
3
  import { getPageFilesClientSide } from '../../shared/getPageFiles.js';
4
4
  import { resolveVikeConfigPublicPageLazy } from '../../shared/page-configs/resolveVikeConfigPublic.js';
@@ -6,7 +6,7 @@ import { findPageConfig } from '../../shared/page-configs/findPageConfig.js';
6
6
  import { loadConfigValues } from '../../shared/page-configs/loadConfigValues.js';
7
7
  import { objectAssign } from '../runtime-server-routing/utils.js';
8
8
  const stamp = '__whileFetchingAssets';
9
- async function loadPageConfigsLazy(pageId, pageFilesAll, pageConfigs, pageConfigGlobal) {
9
+ async function loadPageConfigsLazyClientSide(pageId, pageFilesAll, pageConfigs, pageConfigGlobal) {
10
10
  const pageFilesClientSide = getPageFilesClientSide(pageFilesAll, pageId);
11
11
  const pageConfig = findPageConfig(pageConfigs, pageId);
12
12
  let pageConfigLoaded;
@@ -171,7 +171,7 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
171
171
  _sources: import("../../shared/page-configs/resolveVikeConfigPublic.js").Sources;
172
172
  _from: import("../../shared/page-configs/resolveVikeConfigPublic.js").From;
173
173
  } & {
174
- urlParsed: import("../runtime/utils.js").UrlPublic;
174
+ urlParsed: import("../shared/utils.js").UrlPublic;
175
175
  urlPathname: string;
176
176
  url: string;
177
177
  } & {
@@ -292,7 +292,7 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
292
292
  _sources: import("../../shared/page-configs/resolveVikeConfigPublic.js").Sources;
293
293
  _from: import("../../shared/page-configs/resolveVikeConfigPublic.js").From;
294
294
  } & {
295
- urlParsed: import("../runtime/utils.js").UrlPublic;
295
+ urlParsed: import("../shared/utils.js").UrlPublic;
296
296
  urlPathname: string;
297
297
  url: string;
298
298
  } & {
@@ -310,259 +310,13 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
310
310
  pageId: string;
311
311
  _debugRouteMatches: never[];
312
312
  routeParams: {};
313
- })) & (((({
314
- _isOriginalObject: true;
315
- isPageContext: true;
316
- } & {
317
- isClientSide: false;
318
- isPrerendering: boolean;
319
- } & Pick<import("../../types/PageContext.js").PageContextInternalServer, "urlOriginal" | "headersOriginal"> & {
320
- url?: string;
321
- headers?: Record<string, string>;
322
- } & {
323
- _globalContext: {
324
- isGlobalContext: true;
325
- _isOriginalObject: true;
326
- _virtualFileExports: unknown;
327
- _pageFilesAll: PageFile[];
328
- _pageConfigs: import("../../types/PageConfig.js").PageConfigRuntime[];
329
- _pageConfigGlobal: import("../../types/PageConfig.js").PageConfigGlobalRuntime;
330
- _allPageIds: string[];
331
- _vikeConfigPublicGlobal: {
332
- config: import("../../types/index.js").ConfigResolved;
333
- _source: import("../../shared/page-configs/resolveVikeConfigPublic.js").Source;
334
- _sources: import("../../shared/page-configs/resolveVikeConfigPublic.js").Sources;
335
- _from: import("../../shared/page-configs/resolveVikeConfigPublic.js").From;
336
- };
337
- config: import("../../types/index.js").ConfigResolved;
338
- pages: {
339
- [k: string]: import("../../shared/page-configs/resolveVikeConfigPublic.js").VikeConfigPublicPageEager;
340
- };
341
- } & ({
342
- _isProduction: false;
343
- _isPrerendering: false;
344
- assetsManifest: null;
345
- _viteDevServer: import("vite").ViteDevServer;
346
- viteConfig: ResolvedConfig;
347
- viteConfigRuntime: {
348
- root: string;
349
- build: {
350
- outDir: string;
351
- };
352
- _baseViteOriginal: string;
353
- vitePluginServerEntry: {
354
- inject: boolean | undefined;
355
- };
356
- };
357
- baseServer: string;
358
- baseAssets: string;
359
- isClientSide: false;
360
- _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
361
- _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
362
- } | {
363
- _isPrerendering: true;
364
- viteConfig: ResolvedConfig;
365
- _isProduction: true;
366
- assetsManifest: import("../../types/ViteManifest.js").ViteManifest;
367
- _viteDevServer: null;
368
- viteConfigRuntime: {
369
- root: string;
370
- build: {
371
- outDir: string;
372
- };
373
- _baseViteOriginal: string;
374
- vitePluginServerEntry: {
375
- inject: boolean | undefined;
376
- };
377
- };
378
- _usesClientRouter: boolean;
379
- baseServer: string;
380
- baseAssets: string;
381
- isClientSide: false;
382
- _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
383
- _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
384
- } | {
385
- _isPrerendering: false;
386
- viteConfig: null;
387
- _isProduction: true;
388
- assetsManifest: import("../../types/ViteManifest.js").ViteManifest;
389
- _viteDevServer: null;
390
- viteConfigRuntime: {
391
- root: string;
392
- build: {
393
- outDir: string;
394
- };
395
- _baseViteOriginal: string;
396
- vitePluginServerEntry: {
397
- inject: boolean | undefined;
398
- };
399
- };
400
- _usesClientRouter: boolean;
401
- baseServer: string;
402
- baseAssets: string;
403
- isClientSide: false;
404
- _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
405
- _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
406
- });
407
- _pageFilesAll: PageFile[];
408
- _baseServer: string;
409
- _baseAssets: string;
410
- _pageContextInit: import("../runtime/renderPage.js").PageContextInit;
411
- _urlRewrite: null;
412
- _urlHandler: ((url: string) => string) | null;
413
- isClientSideNavigation: boolean;
414
- } & {
415
- config: import("../../types/index.js").ConfigResolved;
416
- _source: import("../../shared/page-configs/resolveVikeConfigPublic.js").Source;
417
- _sources: import("../../shared/page-configs/resolveVikeConfigPublic.js").Sources;
418
- _from: import("../../shared/page-configs/resolveVikeConfigPublic.js").From;
419
- } & {
420
- urlParsed: import("../runtime/utils.js").UrlPublic;
421
- urlPathname: string;
422
- url: string;
423
- } & {
424
- headers: Record<string, string> | null;
425
- } & {
426
- _urlHandler: null;
427
- _httpRequestId: null;
428
- _urlRewrite: null;
429
- _noExtraDir: boolean | null;
430
- _prerenderContext: PrerenderContext;
431
- _providedByHook: ProvidedByHook;
432
- _urlOriginalModifiedByHook: ProvidedByHookTransformer;
433
- is404: boolean;
434
- } & import("../../shared/route/index.js").PageContextFromRoute & Record<"pageId", string>) | ({
435
- _isOriginalObject: true;
436
- isPageContext: true;
437
- } & {
438
- isClientSide: false;
439
- isPrerendering: boolean;
440
- } & Pick<import("../../types/PageContext.js").PageContextInternalServer, "urlOriginal" | "headersOriginal"> & {
441
- url?: string;
442
- headers?: Record<string, string>;
443
- } & {
444
- _globalContext: {
445
- isGlobalContext: true;
446
- _isOriginalObject: true;
447
- _virtualFileExports: unknown;
448
- _pageFilesAll: PageFile[];
449
- _pageConfigs: import("../../types/PageConfig.js").PageConfigRuntime[];
450
- _pageConfigGlobal: import("../../types/PageConfig.js").PageConfigGlobalRuntime;
451
- _allPageIds: string[];
452
- _vikeConfigPublicGlobal: {
453
- config: import("../../types/index.js").ConfigResolved;
454
- _source: import("../../shared/page-configs/resolveVikeConfigPublic.js").Source;
455
- _sources: import("../../shared/page-configs/resolveVikeConfigPublic.js").Sources;
456
- _from: import("../../shared/page-configs/resolveVikeConfigPublic.js").From;
457
- };
458
- config: import("../../types/index.js").ConfigResolved;
459
- pages: {
460
- [k: string]: import("../../shared/page-configs/resolveVikeConfigPublic.js").VikeConfigPublicPageEager;
461
- };
462
- } & ({
463
- _isProduction: false;
464
- _isPrerendering: false;
465
- assetsManifest: null;
466
- _viteDevServer: import("vite").ViteDevServer;
467
- viteConfig: ResolvedConfig;
468
- viteConfigRuntime: {
469
- root: string;
470
- build: {
471
- outDir: string;
472
- };
473
- _baseViteOriginal: string;
474
- vitePluginServerEntry: {
475
- inject: boolean | undefined;
476
- };
477
- };
478
- baseServer: string;
479
- baseAssets: string;
480
- isClientSide: false;
481
- _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
482
- _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
483
- } | {
484
- _isPrerendering: true;
485
- viteConfig: ResolvedConfig;
486
- _isProduction: true;
487
- assetsManifest: import("../../types/ViteManifest.js").ViteManifest;
488
- _viteDevServer: null;
489
- viteConfigRuntime: {
490
- root: string;
491
- build: {
492
- outDir: string;
493
- };
494
- _baseViteOriginal: string;
495
- vitePluginServerEntry: {
496
- inject: boolean | undefined;
497
- };
498
- };
499
- _usesClientRouter: boolean;
500
- baseServer: string;
501
- baseAssets: string;
502
- isClientSide: false;
503
- _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
504
- _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
505
- } | {
506
- _isPrerendering: false;
507
- viteConfig: null;
508
- _isProduction: true;
509
- assetsManifest: import("../../types/ViteManifest.js").ViteManifest;
510
- _viteDevServer: null;
511
- viteConfigRuntime: {
512
- root: string;
513
- build: {
514
- outDir: string;
515
- };
516
- _baseViteOriginal: string;
517
- vitePluginServerEntry: {
518
- inject: boolean | undefined;
519
- };
520
- };
521
- _usesClientRouter: boolean;
522
- baseServer: string;
523
- baseAssets: string;
524
- isClientSide: false;
525
- _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
526
- _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
527
- });
528
- _pageFilesAll: PageFile[];
529
- _baseServer: string;
530
- _baseAssets: string;
531
- _pageContextInit: import("../runtime/renderPage.js").PageContextInit;
532
- _urlRewrite: null;
533
- _urlHandler: ((url: string) => string) | null;
534
- isClientSideNavigation: boolean;
535
- } & {
536
- config: import("../../types/index.js").ConfigResolved;
537
- _source: import("../../shared/page-configs/resolveVikeConfigPublic.js").Source;
538
- _sources: import("../../shared/page-configs/resolveVikeConfigPublic.js").Sources;
539
- _from: import("../../shared/page-configs/resolveVikeConfigPublic.js").From;
540
- } & {
541
- urlParsed: import("../runtime/utils.js").UrlPublic;
542
- urlPathname: string;
543
- url: string;
544
- } & {
545
- headers: Record<string, string> | null;
546
- } & {
547
- _urlHandler: null;
548
- _httpRequestId: null;
549
- _urlRewrite: null;
550
- _noExtraDir: boolean | null;
551
- _prerenderContext: PrerenderContext;
552
- _providedByHook: ProvidedByHook;
553
- _urlOriginalModifiedByHook: ProvidedByHookTransformer;
554
- is404: boolean;
555
- } & {
556
- pageId: string;
557
- _debugRouteMatches: never[];
558
- routeParams: {};
559
- })) & import("../../shared/getPageFiles.js").VikeConfigPublicPageLazy) & {
313
+ })) & import("../../shared/getPageFiles.js").VikeConfigPublicPageLazy & {
560
314
  Page: unknown;
561
315
  _isHtmlOnly: boolean;
562
316
  _passToClient: string[];
563
317
  _pageFilePathsLoaded: string[];
564
318
  } & {
565
319
  __getPageAssets: () => Promise<import("../runtime/renderPage/getPageAssets.js").PageAsset[]>;
566
- })) & {
320
+ }) & {
567
321
  _usesClientRouter: boolean;
568
322
  }>;
@@ -29,7 +29,6 @@ import { getOutDirs } from '../vite/shared/getOutDirs.js';
29
29
  import fs from 'node:fs';
30
30
  import { getProxyForPublicUsage } from '../../shared/getProxyForPublicUsage.js';
31
31
  import { getStaticRedirectsForPrerender } from '../runtime/renderPage/resolveRedirects.js';
32
- import { augmentType } from '../runtime/utils.js';
33
32
  const docLink = 'https://vike.dev/i18n#pre-rendering';
34
33
  async function runPrerender(options = {}, trigger) {
35
34
  setWasPrerenderRun(trigger);
@@ -323,7 +322,7 @@ async function createPageContextPrerendering(urlOriginal, prerenderContext, glob
323
322
  routeParams: {},
324
323
  });
325
324
  }
326
- augmentType(pageContext, await loadPageConfigsLazyServerSide(pageContext));
325
+ objectAssign(pageContext, await loadPageConfigsLazyServerSide(pageContext));
327
326
  let usesClientRouter;
328
327
  {
329
328
  const { pageId } = pageContext;
@@ -726,13 +725,9 @@ function getRedirectHtml(urlTarget) {
726
725
  <meta charset="UTF-8">
727
726
  <meta http-equiv="refresh" content="0;url=${urlTargetSafe}">
728
727
  <title>Redirect ${urlTargetSafe}</title>
729
- <style>body{opacity:0}</style>
730
- <noscript>
731
- <style>body{opacity:1}</style>
732
- </noscript>
733
728
  </head>
734
729
  <body style="min-height: 100vh; margin: 0; font-family: sans-serif; display: flex; justify-content: center; align-items: center; transition: opacity 0.3s;">
735
- <script>setTimeout(()=>{document.body.style.opacity=1},2000)</script>
730
+ <script>document.body.style.opacity=0; setTimeout(()=>{document.body.style.opacity=1},1000);</script>
736
731
  <div>
737
732
  <h1>Redirect <a href="${urlTargetSafe}"><code style="background-color: #eaeaea; padding: 3px 5px; border-radius: 4px;">${urlTargetSafe}</code></a></h1>
738
733
  <p>If you aren't redirected, click the link above.</p>
@@ -2,5 +2,8 @@ export { execHookServer };
2
2
  import { execHook } from '../../../shared/hooks/execHook.js';
3
3
  import { preparePageContextForPublicUsageServer, } from './preparePageContextForPublicUsageServer.js';
4
4
  async function execHookServer(hookName, pageContext) {
5
- return await execHook(hookName, pageContext, preparePageContextForPublicUsageServer);
5
+ return await execHook(hookName, pageContext, (p) => {
6
+ preparePageContextForPublicUsageServer(p);
7
+ return p;
8
+ });
6
9
  }
@@ -1,27 +1,18 @@
1
1
  export { loadPageConfigsLazyServerSide };
2
+ export type { PageFiles };
2
3
  export type { PageContext_loadPageConfigsLazyServerSide };
3
- export type { PageConfigsLazy };
4
4
  import { PromiseType } from '../utils.js';
5
5
  import { PageContextGetPageAssets, type PageAsset } from './getPageAssets.js';
6
6
  import { type PageContextDebugRouteMatches } from './debugPageFiles.js';
7
7
  import type { GlobalContextServerInternal } from '../globalContext.js';
8
- import { type PageContextExecuteHookServer } from './execHookServer.js';
9
- type PageContextExecute = Omit<PageContextExecuteHookServer, keyof Awaited<ReturnType<typeof loadPageConfigsLazy>>>;
10
8
  type PageContext_loadPageConfigsLazyServerSide = PageContextGetPageAssets & PageContextDebugRouteMatches & {
11
- pageId: string;
12
9
  urlOriginal: string;
13
10
  _globalContext: GlobalContextServerInternal;
14
11
  };
15
- type PageConfigsLazy = PromiseType<ReturnType<typeof loadPageConfigsLazy>>;
16
- declare function loadPageConfigsLazyServerSide<PageContext extends PageContext_loadPageConfigsLazyServerSide & PageContextExecute>(pageContext: PageContext): Promise<PageContext & import("../../../shared/getPageFiles.js").VikeConfigPublicPageLazy & {
17
- Page: unknown;
18
- _isHtmlOnly: boolean;
19
- _passToClient: string[];
20
- _pageFilePathsLoaded: string[];
21
- } & {
22
- __getPageAssets: () => Promise<PageAsset[]>;
23
- }>;
24
- declare function loadPageConfigsLazy(pageContext: PageContext_loadPageConfigsLazyServerSide): Promise<import("../../../shared/getPageFiles.js").VikeConfigPublicPageLazy & {
12
+ type PageFiles = PromiseType<ReturnType<typeof loadPageConfigsLazyServerSide>>;
13
+ declare function loadPageConfigsLazyServerSide(pageContext: {
14
+ pageId: string;
15
+ } & PageContext_loadPageConfigsLazyServerSide): Promise<import("../../../shared/getPageFiles.js").VikeConfigPublicPageLazy & {
25
16
  Page: unknown;
26
17
  _isHtmlOnly: boolean;
27
18
  _passToClient: string[];
@@ -8,14 +8,7 @@ import { debugPageFiles } from './debugPageFiles.js';
8
8
  import { findPageConfig } from '../../../shared/page-configs/findPageConfig.js';
9
9
  import { analyzePage } from './analyzePage.js';
10
10
  import { loadConfigValues } from '../../../shared/page-configs/loadConfigValues.js';
11
- import { execHookServer } from './execHookServer.js';
12
11
  async function loadPageConfigsLazyServerSide(pageContext) {
13
- const pageContextAddendum = await loadPageConfigsLazy(pageContext);
14
- objectAssign(pageContext, pageContextAddendum);
15
- await execHookServer('onCreatePageContext', pageContext);
16
- return pageContext;
17
- }
18
- async function loadPageConfigsLazy(pageContext) {
19
12
  const pageConfig = findPageConfig(pageContext._globalContext._pageConfigs, pageContext.pageId); // Make pageConfig globally available as pageContext._pageConfig ?
20
13
  const globalContext = pageContext._globalContext;
21
14
  const [{ pageFilesLoaded, pageContextExports }] = await Promise.all([
@@ -91,16 +84,18 @@ async function loadPageConfigsLazy(pageContext) {
91
84
  return pageAssetsOldFormat;
92
85
  },
93
86
  });
94
- debugPageFiles({
95
- pageContext,
96
- isHtmlOnly,
97
- isClientRouting,
98
- pageFilesLoaded,
99
- pageFilesClientSide,
100
- pageFilesServerSide,
101
- clientEntries,
102
- clientDependencies,
103
- });
87
+ {
88
+ debugPageFiles({
89
+ pageContext,
90
+ isHtmlOnly,
91
+ isClientRouting,
92
+ pageFilesLoaded,
93
+ pageFilesClientSide,
94
+ pageFilesServerSide,
95
+ clientEntries,
96
+ clientDependencies,
97
+ });
98
+ }
104
99
  return pageContextAddendum;
105
100
  }
106
101
  async function loadPageUserFiles(pageFilesAll, pageConfig, pageConfigGlobal, pageId, isDev) {
@@ -3,7 +3,7 @@ export { prerenderPage };
3
3
  export type { PageContextAfterRender };
4
4
  import { type PageContextUrlInternal } from '../../../shared/getPageContextUrlComputed.js';
5
5
  import { HttpResponse } from './createHttpResponse.js';
6
- import { PageContext_loadPageConfigsLazyServerSide, type PageConfigsLazy } from './loadPageConfigsLazyServerSide.js';
6
+ import { PageContext_loadPageConfigsLazyServerSide, type PageFiles } from './loadPageConfigsLazyServerSide.js';
7
7
  import type { PageContextCreated } from './createPageContextServerSide.js';
8
8
  type PageContextAfterRender = {
9
9
  httpResponse: HttpResponse;
@@ -17,7 +17,7 @@ declare function renderPageAlreadyRouted<PageContext extends {
17
17
  errorWhileRendering: null | Error;
18
18
  _httpRequestId: number;
19
19
  } & PageContextCreated & PageContextUrlInternal & PageContext_loadPageConfigsLazyServerSide>(pageContext: PageContext): Promise<PageContext & PageContextAfterRender>;
20
- declare function prerenderPage(pageContext: PageContextCreated & PageConfigsLazy & {
20
+ declare function prerenderPage(pageContext: PageContextCreated & PageFiles & {
21
21
  routeParams: Record<string, string>;
22
22
  pageId: string;
23
23
  _urlRewrite: null;
@@ -2,7 +2,7 @@ export { renderPageAlreadyRouted };
2
2
  export { prerenderPage };
3
3
  import { getErrorPageId } from '../../../shared/error-page.js';
4
4
  import { getHtmlString } from '../html/renderHtml.js';
5
- import { assert, assertUsage, augmentType, hasProp, objectAssign } from '../utils.js';
5
+ import { assert, assertUsage, hasProp, objectAssign } from '../utils.js';
6
6
  import { getPageContextClientSerialized } from '../html/serializeContext.js';
7
7
  import { createHttpResponsePage, createHttpResponsePageContextJson } from './createHttpResponse.js';
8
8
  import { loadPageConfigsLazyServerSide, } from './loadPageConfigsLazyServerSide.js';
@@ -23,7 +23,7 @@ async function renderPageAlreadyRouted(pageContext) {
23
23
  assert(isError ===
24
24
  (pageContext.pageId ===
25
25
  getErrorPageId(pageContext._globalContext._pageFilesAll, pageContext._globalContext._pageConfigs)));
26
- augmentType(pageContext, await loadPageConfigsLazyServerSide(pageContext));
26
+ objectAssign(pageContext, await loadPageConfigsLazyServerSide(pageContext));
27
27
  if (!isError) {
28
28
  await executeGuardHook(pageContext, (pageContext) => preparePageContextForPublicUsageServer(pageContext));
29
29
  }
@@ -3,7 +3,7 @@ export { renderPage_addAsyncHookwrapper };
3
3
  import { renderPageAlreadyRouted } from './renderPage/renderPageAlreadyRouted.js';
4
4
  import { createPageContextServerSide, createPageContextServerSideWithoutGlobalContext, } from './renderPage/createPageContextServerSide.js';
5
5
  import { route } from '../../shared/route/index.js';
6
- import { assert, hasProp, objectAssign, isUrl, parseUrl, onSetupRuntime, assertWarning, getGlobalObject, checkType, assertUsage, normalizeUrlPathname, removeBaseServer, modifyUrlPathname, prependBase, removeUrlOrigin, setUrlOrigin, isUri, getUrlPretty, augmentType, } from './utils.js';
6
+ import { assert, hasProp, objectAssign, isUrl, parseUrl, onSetupRuntime, assertWarning, getGlobalObject, checkType, assertUsage, normalizeUrlPathname, removeBaseServer, modifyUrlPathname, prependBase, removeUrlOrigin, setUrlOrigin, isUri, getUrlPretty, } from './utils.js';
7
7
  import { assertNoInfiniteAbortLoop, getPageContextFromAllRewrites, isAbortError, logAbortErrorHandled, } from '../../shared/route/abort.js';
8
8
  import { getGlobalContextServerInternal, initGlobalContext_renderPage, } from './globalContext.js';
9
9
  import { handlePageContextRequestUrl } from './renderPage/handlePageContextRequestUrl.js';
@@ -138,66 +138,59 @@ async function renderPageAlreadyPrepared(pageContextBegin, globalContext, httpRe
138
138
  else {
139
139
  assert(errNominalPage);
140
140
  assert(pageContextNominalPageSuccess === undefined);
141
- return await renderPageOnError(errNominalPage, pageContextBegin, pageContextNominalPageBegin, globalContext, httpRequestId, pageContextsFromRewrite);
142
- }
143
- }
144
- // When the normal page threw an error
145
- // - Can be a URL rewrite upon `throw render('/some-url')`
146
- // - Can be rendering the error page
147
- // - Can be rendering Vike's generic error page (if no error page is defined, or if the error page throws an error)
148
- async function renderPageOnError(errNominalPage, pageContextBegin, pageContextNominalPageBegin, globalContext, httpRequestId, pageContextsFromRewrite) {
149
- assert(pageContextNominalPageBegin);
150
- assert(hasProp(pageContextNominalPageBegin, 'urlOriginal', 'string'));
151
- const pageContextErrorPageInit = await getPageContextErrorPageInit(pageContextBegin, errNominalPage, pageContextNominalPageBegin);
152
- // Handle `throw redirect()` and `throw render()` while rendering nominal page
153
- if (isAbortError(errNominalPage)) {
154
- const handled = await handleAbortError(errNominalPage, pageContextsFromRewrite, pageContextBegin, pageContextNominalPageBegin, httpRequestId, pageContextErrorPageInit, globalContext);
155
- if (handled.pageContextReturn) {
156
- // - throw redirect()
157
- // - throw render(url)
158
- // - throw render(abortStatusCode) if .pageContext.json request
159
- return handled.pageContextReturn;
160
- }
161
- else {
162
- // - throw render(abortStatusCode) if not .pageContext.json request
141
+ assert(pageContextNominalPageBegin);
142
+ assert(hasProp(pageContextNominalPageBegin, 'urlOriginal', 'string'));
143
+ const pageContextErrorPageInit = await getPageContextErrorPageInit(pageContextBegin, errNominalPage, pageContextNominalPageBegin);
144
+ // Handle `throw redirect()` and `throw render()` while rendering nominal page
145
+ if (isAbortError(errNominalPage)) {
146
+ const handled = await handleAbortError(errNominalPage, pageContextsFromRewrite, pageContextBegin, pageContextNominalPageBegin, httpRequestId, pageContextErrorPageInit, globalContext);
147
+ if (handled.pageContextReturn) {
148
+ // - throw redirect()
149
+ // - throw render(url)
150
+ // - throw render(abortStatusCode) if .pageContext.json request
151
+ return handled.pageContextReturn;
152
+ }
153
+ else {
154
+ // - throw render(abortStatusCode) if not .pageContext.json request
155
+ }
156
+ Object.assign(pageContextErrorPageInit, handled.pageContextAbort);
163
157
  }
164
- Object.assign(pageContextErrorPageInit, handled.pageContextAbort);
165
- }
166
- {
167
- const errorPageId = getErrorPageId(globalContext._pageFilesAll, globalContext._pageConfigs);
168
- if (!errorPageId) {
169
- objectAssign(pageContextErrorPageInit, { pageId: null });
170
- return handleErrorWithoutErrorPage(pageContextErrorPageInit);
158
+ {
159
+ const errorPageId = getErrorPageId(globalContext._pageFilesAll, globalContext._pageConfigs);
160
+ if (!errorPageId) {
161
+ objectAssign(pageContextErrorPageInit, { pageId: null });
162
+ return handleErrorWithoutErrorPage(pageContextErrorPageInit);
163
+ }
164
+ else {
165
+ objectAssign(pageContextErrorPageInit, { pageId: errorPageId });
166
+ }
171
167
  }
172
- else {
173
- objectAssign(pageContextErrorPageInit, { pageId: errorPageId });
168
+ let pageContextErrorPage;
169
+ try {
170
+ pageContextErrorPage = await renderPageAlreadyRouted(pageContextErrorPageInit);
174
171
  }
175
- }
176
- let pageContextErrorPage;
177
- try {
178
- pageContextErrorPage = await renderPageAlreadyRouted(pageContextErrorPageInit);
179
- }
180
- catch (errErrorPage) {
181
- // Handle `throw redirect()` and `throw render()` while rendering error page
182
- if (isAbortError(errErrorPage)) {
183
- const handled = await handleAbortError(errErrorPage, pageContextsFromRewrite, pageContextBegin, pageContextNominalPageBegin, httpRequestId, pageContextErrorPageInit, globalContext);
184
- // throw render(abortStatusCode)
185
- if (!handled.pageContextReturn) {
186
- const pageContextAbort = errErrorPage._pageContextAbort;
187
- assertWarning(false, `Failed to render error page because ${pc.cyan(pageContextAbort._abortCall)} was called: make sure ${pc.cyan(pageContextAbort._abortCaller)} doesn't occur while the error page is being rendered.`, { onlyOnce: false });
188
- const pageContextHttpWithError = getPageContextHttpResponseError(errNominalPage, pageContextBegin);
189
- return pageContextHttpWithError;
172
+ catch (errErrorPage) {
173
+ // Handle `throw redirect()` and `throw render()` while rendering error page
174
+ if (isAbortError(errErrorPage)) {
175
+ const handled = await handleAbortError(errErrorPage, pageContextsFromRewrite, pageContextBegin, pageContextNominalPageBegin, httpRequestId, pageContextErrorPageInit, globalContext);
176
+ // throw render(abortStatusCode)
177
+ if (!handled.pageContextReturn) {
178
+ const pageContextAbort = errErrorPage._pageContextAbort;
179
+ assertWarning(false, `Failed to render error page because ${pc.cyan(pageContextAbort._abortCall)} was called: make sure ${pc.cyan(pageContextAbort._abortCaller)} doesn't occur while the error page is being rendered.`, { onlyOnce: false });
180
+ const pageContextHttpWithError = getPageContextHttpResponseError(errNominalPage, pageContextBegin);
181
+ return pageContextHttpWithError;
182
+ }
183
+ // `throw redirect()` / `throw render(url)`
184
+ return handled.pageContextReturn;
190
185
  }
191
- // `throw redirect()` / `throw render(url)`
192
- return handled.pageContextReturn;
193
- }
194
- if (isNewError(errErrorPage, errNominalPage)) {
195
- logRuntimeError(errErrorPage, httpRequestId);
186
+ if (isNewError(errErrorPage, errNominalPage)) {
187
+ logRuntimeError(errErrorPage, httpRequestId);
188
+ }
189
+ const pageContextWithError = getPageContextHttpResponseError(errNominalPage, pageContextBegin);
190
+ return pageContextWithError;
196
191
  }
197
- const pageContextWithError = getPageContextHttpResponseError(errNominalPage, pageContextBegin);
198
- return pageContextWithError;
192
+ return pageContextErrorPage;
199
193
  }
200
- return pageContextErrorPage;
201
194
  }
202
195
  function logHttpRequest(urlOriginal, httpRequestId) {
203
196
  logRuntimeInfo?.(getRequestInfoMessage(urlOriginal), httpRequestId, 'info');
@@ -419,7 +412,7 @@ pageContextNominalPageBegin, httpRequestId, pageContextErrorPageInit, globalCont
419
412
  objectAssign(pageContext, { pageId: errorPageId });
420
413
  objectAssign(pageContext, pageContextAbort);
421
414
  objectAssign(pageContext, pageContextErrorPageInit, true);
422
- augmentType(pageContext, await loadPageConfigsLazyServerSide(pageContext));
415
+ objectAssign(pageContext, await loadPageConfigsLazyServerSide(pageContext));
423
416
  // We include pageContextInit: we don't only serialize pageContextAbort because the error page may need to access pageContextInit
424
417
  pageContextSerialized = getPageContextClientSerialized(pageContext);
425
418
  }
@@ -1,9 +1,11 @@
1
1
  export { createPageContextShared };
2
2
  export { createPageContextObject };
3
+ import { execHookGlobal } from './hooks/execHook.js';
4
+ import { preparePageContextForPublicUsage } from './preparePageContextForPublicUsage.js';
3
5
  import { changeEnumerable, objectAssign } from './utils.js';
4
- // TODO/now: make this and parents sync
5
6
  async function createPageContextShared(pageContextCreated, pageConfigGlobal, vikeConfigPublicGlobal) {
6
7
  objectAssign(pageContextCreated, vikeConfigPublicGlobal);
8
+ await execHookGlobal('onCreatePageContext', pageConfigGlobal, pageContextCreated, pageContextCreated, preparePageContextForPublicUsage);
7
9
  return pageContextCreated;
8
10
  }
9
11
  function createPageContextObject() {
@@ -19,7 +19,6 @@ import type { PageContextForPublicUsageServer } from '../../node/runtime/renderP
19
19
  import type { PageContextForPublicUsageClientShared } from '../../client/shared/preparePageContextForPublicUsageClientShared.js';
20
20
  import { type PageContextPrepareMinimum } from '../preparePageContextForPublicUsage.js';
21
21
  import type { GlobalContextPrepareMinimum } from '../prepareGlobalContextForPublicUsage.js';
22
- type PageContextPrepareMinimum2 = PageContextPrepareMinimum & VikeConfigPublicPageLazy;
23
22
  type PageContextExecuteHook = VikeConfigPublicPageLazy & PageContextForPublicUsage;
24
23
  type PageContextForPublicUsage = PageContextForPublicUsageServer | PageContextForPublicUsageClientShared;
25
24
  type HookWithResult = Hook & {
@@ -29,8 +28,8 @@ declare function execHookSingle<PageContext extends PageContextExecuteHook>(hook
29
28
  declare function execHookSingleWithReturn<PageContext extends PageContextExecuteHook>(hook: Hook, pageContext: PageContext, preparePageContextForPublicUsage: (pageContext: PageContext) => PageContext): Promise<{
30
29
  hookReturn: unknown;
31
30
  }>;
32
- declare function execHook<PageContext extends PageContextPrepareMinimum2>(hookName: HookName, pageContext: PageContext, preparePageContextForPublicUsage: (pageContext: PageContext) => PageContext): Promise<HookWithResult[]>;
33
- declare function execHookErrorHandling<PageContext extends PageContextPrepareMinimum2>(hookName: HookName, pageContext: PageContext, preparePageContextForPublicUsage: (pageContext: PageContext) => PageContext): Promise<{
31
+ declare function execHook<PageContext extends PageContextExecuteHook>(hookName: HookName, pageContext: PageContext, preparePageContextForPublicUsage: (pageContext: PageContext) => PageContext): Promise<HookWithResult[]>;
32
+ declare function execHookErrorHandling<PageContext extends PageContextExecuteHook>(hookName: HookName, pageContext: PageContext, preparePageContextForPublicUsage: (pageContext: PageContext) => PageContext): Promise<{
34
33
  hooks: HookWithResult[];
35
34
  err?: undefined;
36
35
  } | {
@@ -12,7 +12,6 @@ import { resolveRouteFunction } from './resolveRouteFunction.js';
12
12
  import { executeOnBeforeRouteHook } from './executeOnBeforeRouteHook.js';
13
13
  import { debug } from './debug.js';
14
14
  import pc from '@brillout/picocolors';
15
- // TODO/next-major-release: make it sync
16
15
  async function route(pageContext, skipOnBeforeRouteHook) {
17
16
  debug('Pages routes:', pageContext._globalContext._pageRoutes);
18
17
  const pageContextFromRoute = {};
@@ -1 +1 @@
1
- export declare const PROJECT_VERSION: "0.4.232-commit-ec54a7e";
1
+ export declare const PROJECT_VERSION: "0.4.232";
@@ -1,2 +1,2 @@
1
1
  // Automatically updated by @brillout/release-me
2
- export const PROJECT_VERSION = '0.4.232-commit-ec54a7e';
2
+ export const PROJECT_VERSION = '0.4.232';
@@ -1,3 +1,2 @@
1
1
  // Copied from https://github.com/vitejs/vite/blob/d649daba7682791178b711d9a3e44a6b5d00990c/packages/vite/src/node/plugins/css.ts#L90-L91
2
- // spellcheck-ignore
3
2
  export const styleFileRE = /\.(css|less|sass|scss|styl|stylus|pcss|postcss)($|\?)/;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vike",
3
- "version": "0.4.232-commit-ec54a7e",
3
+ "version": "0.4.232",
4
4
  "repository": "https://github.com/vikejs/vike",
5
5
  "exports": {
6
6
  "./server": {