vike 0.4.232 → 0.4.233

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 (56) hide show
  1. package/dist/cjs/node/prerender/runPrerender.js +9 -4
  2. package/dist/cjs/node/runtime/renderPage/{executeOnBeforeRenderAndDataHooks.js → execHookDataAndOnBeforeRender.js} +2 -2
  3. package/dist/cjs/node/runtime/renderPage/{executeOnRenderHtmlHook.js → execHookOnRenderHtml.js} +3 -3
  4. package/dist/cjs/node/runtime/renderPage/execHookServer.js +1 -4
  5. package/dist/cjs/node/runtime/renderPage/loadPageConfigsLazyServerSide.js +18 -13
  6. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +11 -11
  7. package/dist/cjs/node/runtime/renderPage.js +55 -48
  8. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/configDefinitionsBuiltIn.js +0 -2
  9. package/dist/cjs/shared/createPageContextShared.js +1 -3
  10. package/dist/cjs/shared/hooks/execHook.js +31 -54
  11. package/dist/cjs/shared/route/{executeGuardHook.js → execHookGuard.js} +3 -3
  12. package/dist/cjs/shared/route/{executeOnBeforeRouteHook.js → execHookOnBeforeRoute.js} +4 -4
  13. package/dist/cjs/shared/route/index.js +3 -2
  14. package/dist/cjs/shared/route/resolveRouteFunction.js +1 -1
  15. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  16. package/dist/cjs/utils/styleFileRE.js +1 -0
  17. package/dist/esm/client/runtime-client-routing/getPageContextFromHooks.d.ts +2 -2
  18. package/dist/esm/client/runtime-client-routing/getPageContextFromHooks.js +9 -9
  19. package/dist/esm/client/runtime-client-routing/renderPageClientSide.js +97 -62
  20. package/dist/esm/client/runtime-server-routing/createPageContextClientSide.js +11 -4
  21. package/dist/esm/client/runtime-server-routing/entry.js +2 -2
  22. package/dist/esm/client/shared/{executeOnRenderClientHook.d.ts → execHookOnRenderClient.d.ts} +2 -2
  23. package/dist/esm/client/shared/{executeOnRenderClientHook.js → execHookOnRenderClient.js} +4 -4
  24. package/dist/esm/client/shared/loadPageConfigsLazyClientSide.d.ts +12 -4
  25. package/dist/esm/client/shared/loadPageConfigsLazyClientSide.js +4 -4
  26. package/dist/esm/node/prerender/runPrerender.d.ts +250 -4
  27. package/dist/esm/node/prerender/runPrerender.js +11 -6
  28. package/dist/esm/node/runtime/renderPage/createHttpResponse.d.ts +1 -1
  29. package/dist/esm/node/runtime/renderPage/execHookDataAndOnBeforeRender.d.ts +6 -0
  30. package/dist/esm/node/runtime/renderPage/{executeOnBeforeRenderAndDataHooks.js → execHookDataAndOnBeforeRender.js} +2 -2
  31. package/dist/esm/node/runtime/renderPage/{executeOnRenderHtmlHook.d.ts → execHookOnRenderHtml.d.ts} +2 -2
  32. package/dist/esm/node/runtime/renderPage/{executeOnRenderHtmlHook.js → execHookOnRenderHtml.js} +4 -4
  33. package/dist/esm/node/runtime/renderPage/execHookServer.d.ts +3 -3
  34. package/dist/esm/node/runtime/renderPage/execHookServer.js +1 -4
  35. package/dist/esm/node/runtime/renderPage/getHttpResponseBody.d.ts +1 -1
  36. package/dist/esm/node/runtime/renderPage/loadPageConfigsLazyServerSide.d.ts +15 -6
  37. package/dist/esm/node/runtime/renderPage/loadPageConfigsLazyServerSide.js +18 -13
  38. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +2 -2
  39. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +13 -13
  40. package/dist/esm/node/runtime/renderPage.js +57 -50
  41. package/dist/esm/node/vite/shared/resolveVikeConfigInternal/configDefinitionsBuiltIn.js +0 -2
  42. package/dist/esm/shared/createPageContextShared.js +1 -3
  43. package/dist/esm/shared/hooks/execHook.d.ts +14 -28
  44. package/dist/esm/shared/hooks/execHook.js +31 -54
  45. package/dist/esm/shared/route/execHookGuard.d.ts +8 -0
  46. package/dist/esm/shared/route/{executeGuardHook.js → execHookGuard.js} +4 -4
  47. package/dist/esm/shared/route/{executeOnBeforeRouteHook.d.ts → execHookOnBeforeRoute.d.ts} +2 -2
  48. package/dist/esm/shared/route/{executeOnBeforeRouteHook.js → execHookOnBeforeRoute.js} +5 -5
  49. package/dist/esm/shared/route/index.js +3 -2
  50. package/dist/esm/shared/route/resolveRouteFunction.js +2 -2
  51. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  52. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  53. package/dist/esm/utils/styleFileRE.js +1 -0
  54. package/package.json +1 -1
  55. package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.d.ts +0 -6
  56. package/dist/esm/shared/route/executeGuardHook.d.ts +0 -8
@@ -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("../shared/utils.js").UrlPublic;
174
+ urlParsed: import("../runtime/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("../shared/utils.js").UrlPublic;
295
+ urlParsed: import("../runtime/utils.js").UrlPublic;
296
296
  urlPathname: string;
297
297
  url: string;
298
298
  } & {
@@ -310,13 +310,259 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
310
310
  pageId: string;
311
311
  _debugRouteMatches: never[];
312
312
  routeParams: {};
313
- })) & import("../../shared/getPageFiles.js").VikeConfigPublicPageLazy & {
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) & {
314
560
  Page: unknown;
315
561
  _isHtmlOnly: boolean;
316
562
  _passToClient: string[];
317
563
  _pageFilePathsLoaded: string[];
318
564
  } & {
319
565
  __getPageAssets: () => Promise<import("../runtime/renderPage/getPageAssets.js").PageAsset[]>;
320
- }) & {
566
+ })) & {
321
567
  _usesClientRouter: boolean;
322
568
  }>;
@@ -18,17 +18,18 @@ import { getConfigValueRuntime } from '../../shared/page-configs/getConfigValueR
18
18
  import { loadConfigValues } from '../../shared/page-configs/loadConfigValues.js';
19
19
  import { getErrorPageId, isErrorPage } from '../../shared/error-page.js';
20
20
  import { isAbortError } from '../../shared/route/abort.js';
21
- import { loadPageConfigsLazyServerSide } from '../runtime/renderPage/loadPageConfigsLazyServerSide.js';
21
+ import { loadPageConfigsLazyServerSideAndExecHook } from '../runtime/renderPage/loadPageConfigsLazyServerSide.js';
22
22
  import { getHookFromPageConfig, getHookFromPageConfigGlobal, getHookTimeoutDefault, getHook_setIsPrerenderering, } from '../../shared/hooks/getHook.js';
23
23
  import { noRouteMatch } from '../../shared/route/noRouteMatch.js';
24
24
  import { getVikeConfigInternal } from '../vite/shared/resolveVikeConfigInternal.js';
25
- import { execHookWithoutPageContext, isUserHookError } from '../../shared/hooks/execHook.js';
25
+ import { execHookDirectWithoutPageContext, isUserHookError } from '../../shared/hooks/execHook.js';
26
26
  import { setWasPrerenderRun } from './context.js';
27
27
  import { resolvePrerenderConfigGlobal, resolvePrerenderConfigLocal } from './resolvePrerenderConfig.js';
28
28
  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';
32
33
  const docLink = 'https://vike.dev/i18n#pre-rendering';
33
34
  async function runPrerender(options = {}, trigger) {
34
35
  setWasPrerenderRun(trigger);
@@ -215,7 +216,7 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext,
215
216
  if (doNotPrerenderList.find((p) => p.pageId === pageId))
216
217
  return;
217
218
  const { hookName, hookFilePath } = hook;
218
- const prerenderResult = await execHookWithoutPageContext(() => hook.hookFn(), hook);
219
+ const prerenderResult = await execHookDirectWithoutPageContext(() => hook.hookFn(), hook);
219
220
  const result = normalizeOnPrerenderHookResult(prerenderResult, hookFilePath, hookName);
220
221
  // Handle result
221
222
  await Promise.all(result.map(async ({ url, pageContext }) => {
@@ -322,7 +323,7 @@ async function createPageContextPrerendering(urlOriginal, prerenderContext, glob
322
323
  routeParams: {},
323
324
  });
324
325
  }
325
- objectAssign(pageContext, await loadPageConfigsLazyServerSide(pageContext));
326
+ augmentType(pageContext, await loadPageConfigsLazyServerSideAndExecHook(pageContext));
326
327
  let usesClientRouter;
327
328
  {
328
329
  const { pageId } = pageContext;
@@ -443,7 +444,7 @@ async function callOnPrerenderStartHook(prerenderContext, globalContext, concurr
443
444
  preservePropertyGetters(pageContext);
444
445
  });
445
446
  const prerenderContextPublic = preparePrerenderContextForPublicUsage(prerenderContext);
446
- let result = await execHookWithoutPageContext(() => hookFn(prerenderContextPublic), onPrerenderStartHook);
447
+ let result = await execHookDirectWithoutPageContext(() => hookFn(prerenderContextPublic), onPrerenderStartHook);
447
448
  // Before applying result
448
449
  prerenderContext.pageContexts.forEach((pageContext) => {
449
450
  ;
@@ -725,9 +726,13 @@ function getRedirectHtml(urlTarget) {
725
726
  <meta charset="UTF-8">
726
727
  <meta http-equiv="refresh" content="0;url=${urlTargetSafe}">
727
728
  <title>Redirect ${urlTargetSafe}</title>
729
+ <style>body{opacity:0}</style>
730
+ <noscript>
731
+ <style>body{opacity:1}</style>
732
+ </noscript>
728
733
  </head>
729
734
  <body style="min-height: 100vh; margin: 0; font-family: sans-serif; display: flex; justify-content: center; align-items: center; transition: opacity 0.3s;">
730
- <script>document.body.style.opacity=0; setTimeout(()=>{document.body.style.opacity=1},1000);</script>
735
+ <script>setTimeout(()=>{document.body.style.opacity=1},2000)</script>
731
736
  <div>
732
737
  <h1>Redirect <a href="${urlTargetSafe}"><code style="background-color: #eaeaea; padding: 3px 5px; border-radius: 4px;">${urlTargetSafe}</code></a></h1>
733
738
  <p>If you aren't redirected, click the link above.</p>
@@ -8,7 +8,7 @@ export { createHttpResponseBaseIsMissing };
8
8
  export type { HttpResponse };
9
9
  import type { GetPageAssets } from './getPageAssets.js';
10
10
  import type { HtmlRender } from '../html/renderHtml.js';
11
- import type { RenderHook } from './executeOnRenderHtmlHook.js';
11
+ import type { RenderHook } from './execHookOnRenderHtml.js';
12
12
  import type { RedirectStatusCode, AbortStatusCode, UrlRedirect } from '../../../shared/route/abort.js';
13
13
  import { HttpResponseBody } from './getHttpResponseBody.js';
14
14
  import { type EarlyHint } from './getEarlyHints.js';
@@ -0,0 +1,6 @@
1
+ export { execHookDataAndOnBeforeRender };
2
+ import { type PageContextExecHookServer } from './execHookServer.js';
3
+ declare function execHookDataAndOnBeforeRender(pageContext: {
4
+ pageId: string;
5
+ _pageContextAlreadyProvidedByOnPrerenderHook?: true;
6
+ } & PageContextExecHookServer): Promise<void>;
@@ -1,7 +1,7 @@
1
- export { executeOnBeforeRenderAndDataHooks };
1
+ export { execHookDataAndOnBeforeRender };
2
2
  import { assertOnBeforeRenderHookReturn } from '../../../shared/assertOnBeforeRenderHookReturn.js';
3
3
  import { execHookServer } from './execHookServer.js';
4
- async function executeOnBeforeRenderAndDataHooks(pageContext) {
4
+ async function execHookDataAndOnBeforeRender(pageContext) {
5
5
  if (pageContext._pageContextAlreadyProvidedByOnPrerenderHook) {
6
6
  return;
7
7
  }
@@ -1,4 +1,4 @@
1
- export { executeOnRenderHtmlHook };
1
+ export { execHookOnRenderHtml };
2
2
  export type { RenderHook };
3
3
  import { type HtmlRender } from '../html/renderHtml.js';
4
4
  import { type Hook } from '../../../shared/hooks/getHook.js';
@@ -11,7 +11,7 @@ type RenderHook = Hook & {
11
11
  hookName: HookName;
12
12
  };
13
13
  type HookName = 'onRenderHtml' | 'render';
14
- declare function executeOnRenderHtmlHook(pageContext: PageContextForPublicUsageServer & PageContextSerialization & {
14
+ declare function execHookOnRenderHtml(pageContext: PageContextForPublicUsageServer & PageContextSerialization & {
15
15
  pageId: string;
16
16
  _globalContext: GlobalContextServerInternal;
17
17
  __getPageAssets: GetPageAssets;
@@ -1,4 +1,4 @@
1
- export { executeOnRenderHtmlHook };
1
+ export { execHookOnRenderHtml };
2
2
  import { isDocumentHtml, renderDocumentHtml, dangerouslySkipEscape, } from '../html/renderHtml.js';
3
3
  import { getHookFromPageContext } from '../../../shared/hooks/getHook.js';
4
4
  import { assert, assertUsage, assertWarning, isObject, objectAssign, isPromise, isCallable } from '../utils.js';
@@ -8,11 +8,11 @@ import { preparePageContextForPublicUsageServer, } from './preparePageContextFor
8
8
  import { assertHookReturnedObject } from '../../../shared/assertHookReturnedObject.js';
9
9
  import { logRuntimeError } from '../loggerRuntime.js';
10
10
  import pc from '@brillout/picocolors';
11
- import { execHookSingleWithReturn } from '../../../shared/hooks/execHook.js';
12
- async function executeOnRenderHtmlHook(pageContext) {
11
+ import { execHookDirectSingleWithReturn } from '../../../shared/hooks/execHook.js';
12
+ async function execHookOnRenderHtml(pageContext) {
13
13
  const hook = getRenderHook(pageContext);
14
14
  objectAssign(pageContext, { _renderHook: hook });
15
- const { hookReturn } = await execHookSingleWithReturn(hook, pageContext, preparePageContextForPublicUsageServer);
15
+ const { hookReturn } = await execHookDirectSingleWithReturn(hook, pageContext, preparePageContextForPublicUsageServer);
16
16
  const { documentHtml, pageContextProvidedByRenderHook, pageContextPromise, injectFilter } = processHookReturnValue(hookReturn, hook);
17
17
  Object.assign(pageContext, pageContextProvidedByRenderHook);
18
18
  objectAssign(pageContext, { _pageContextPromise: pageContextPromise });
@@ -1,10 +1,10 @@
1
1
  export { execHookServer };
2
- export type { PageContextExecuteHookServer };
2
+ export type { PageContextExecHookServer };
3
3
  import { type PageContextForPublicUsageServer } from './preparePageContextForPublicUsageServer.js';
4
4
  import type { VikeConfigPublicPageLazy } from '../../../shared/getPageFiles.js';
5
5
  import type { HookName } from '../../../types/Config.js';
6
- type PageContextExecuteHookServer = VikeConfigPublicPageLazy & PageContextForPublicUsageServer;
7
- declare function execHookServer(hookName: HookName, pageContext: PageContextExecuteHookServer): Promise<(import("../../../shared/hooks/getHook.js").HookLoc & {
6
+ type PageContextExecHookServer = VikeConfigPublicPageLazy & PageContextForPublicUsageServer;
7
+ declare function execHookServer(hookName: HookName, pageContext: PageContextExecHookServer): Promise<(import("../../../shared/hooks/getHook.js").HookLoc & {
8
8
  hookFn: (arg: import("../../../shared/preparePageContextForPublicUsage.js").PageContextPrepareMinimum | import("../../../shared/prepareGlobalContextForPublicUsage.js").GlobalContextPrepareMinimum) => unknown;
9
9
  hookTimeout: import("../../../shared/hooks/getHook.js").HookTimeout;
10
10
  } & {
@@ -2,8 +2,5 @@ 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, (p) => {
6
- preparePageContextForPublicUsageServer(p);
7
- return p;
8
- });
5
+ return await execHook(hookName, pageContext, preparePageContextForPublicUsageServer);
9
6
  }
@@ -3,7 +3,7 @@ export { getHttpResponseBodyStreamHandlers };
3
3
  export type { HttpResponseBody };
4
4
  import { StreamPipeNode, StreamPipeWeb, StreamReadableNode, StreamReadableWeb, StreamWritableNode, StreamWritableWeb } from '../html/stream.js';
5
5
  import { type HtmlRender } from '../html/renderHtml.js';
6
- import type { RenderHook } from './executeOnRenderHtmlHook.js';
6
+ import type { RenderHook } from './execHookOnRenderHtml.js';
7
7
  type HttpResponseBody = {
8
8
  body: string;
9
9
  pipe: (writable: StreamWritableWeb | StreamWritableNode) => void;
@@ -1,18 +1,27 @@
1
- export { loadPageConfigsLazyServerSide };
2
- export type { PageFiles };
1
+ export { loadPageConfigsLazyServerSideAndExecHook };
3
2
  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 PageContextExecHookServer } from './execHookServer.js';
9
+ type PageContextExecuteHook = Omit<PageContextExecHookServer, keyof Awaited<ReturnType<typeof loadPageConfigsLazyServerSide>>>;
8
10
  type PageContext_loadPageConfigsLazyServerSide = PageContextGetPageAssets & PageContextDebugRouteMatches & {
11
+ pageId: string;
9
12
  urlOriginal: string;
10
13
  _globalContext: GlobalContextServerInternal;
11
14
  };
12
- type PageFiles = PromiseType<ReturnType<typeof loadPageConfigsLazyServerSide>>;
13
- declare function loadPageConfigsLazyServerSide(pageContext: {
14
- pageId: string;
15
- } & PageContext_loadPageConfigsLazyServerSide): Promise<import("../../../shared/getPageFiles.js").VikeConfigPublicPageLazy & {
15
+ type PageConfigsLazy = PromiseType<ReturnType<typeof loadPageConfigsLazyServerSide>>;
16
+ declare function loadPageConfigsLazyServerSideAndExecHook<PageContext extends PageContext_loadPageConfigsLazyServerSide & PageContextExecuteHook>(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 loadPageConfigsLazyServerSide(pageContext: PageContext_loadPageConfigsLazyServerSide): Promise<import("../../../shared/getPageFiles.js").VikeConfigPublicPageLazy & {
16
25
  Page: unknown;
17
26
  _isHtmlOnly: boolean;
18
27
  _passToClient: string[];
@@ -1,4 +1,4 @@
1
- export { loadPageConfigsLazyServerSide };
1
+ export { loadPageConfigsLazyServerSideAndExecHook };
2
2
  import { getPageFilesServerSide } from '../../../shared/getPageFiles.js';
3
3
  import { resolveVikeConfigPublicPageLazy } from '../../../shared/page-configs/resolveVikeConfigPublic.js';
4
4
  import { analyzePageClientSideInit } from '../../../shared/getPageFiles/analyzePageClientSide.js';
@@ -8,6 +8,13 @@ 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
+ async function loadPageConfigsLazyServerSideAndExecHook(pageContext) {
13
+ const pageContextAddendum = await loadPageConfigsLazyServerSide(pageContext);
14
+ objectAssign(pageContext, pageContextAddendum);
15
+ await execHookServer('onCreatePageContext', pageContext);
16
+ return pageContext;
17
+ }
11
18
  async function loadPageConfigsLazyServerSide(pageContext) {
12
19
  const pageConfig = findPageConfig(pageContext._globalContext._pageConfigs, pageContext.pageId); // Make pageConfig globally available as pageContext._pageConfig ?
13
20
  const globalContext = pageContext._globalContext;
@@ -84,18 +91,16 @@ async function loadPageConfigsLazyServerSide(pageContext) {
84
91
  return pageAssetsOldFormat;
85
92
  },
86
93
  });
87
- {
88
- debugPageFiles({
89
- pageContext,
90
- isHtmlOnly,
91
- isClientRouting,
92
- pageFilesLoaded,
93
- pageFilesClientSide,
94
- pageFilesServerSide,
95
- clientEntries,
96
- clientDependencies,
97
- });
98
- }
94
+ debugPageFiles({
95
+ pageContext,
96
+ isHtmlOnly,
97
+ isClientRouting,
98
+ pageFilesLoaded,
99
+ pageFilesClientSide,
100
+ pageFilesServerSide,
101
+ clientEntries,
102
+ clientDependencies,
103
+ });
99
104
  return pageContextAddendum;
100
105
  }
101
106
  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 PageFiles } from './loadPageConfigsLazyServerSide.js';
6
+ import { PageContext_loadPageConfigsLazyServerSide, type PageConfigsLazy } 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 & PageFiles & {
20
+ declare function prerenderPage(pageContext: PageContextCreated & PageConfigsLazy & {
21
21
  routeParams: Record<string, string>;
22
22
  pageId: string;
23
23
  _urlRewrite: null;
@@ -2,16 +2,16 @@ 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, hasProp, objectAssign } from '../utils.js';
5
+ import { assert, assertUsage, augmentType, hasProp, objectAssign } from '../utils.js';
6
6
  import { getPageContextClientSerialized } from '../html/serializeContext.js';
7
7
  import { createHttpResponsePage, createHttpResponsePageContextJson } from './createHttpResponse.js';
8
- import { loadPageConfigsLazyServerSide, } from './loadPageConfigsLazyServerSide.js';
9
- import { executeOnRenderHtmlHook } from './executeOnRenderHtmlHook.js';
10
- import { executeOnBeforeRenderAndDataHooks } from './executeOnBeforeRenderAndDataHooks.js';
8
+ import { loadPageConfigsLazyServerSideAndExecHook, } from './loadPageConfigsLazyServerSide.js';
9
+ import { execHookOnRenderHtml } from './execHookOnRenderHtml.js';
10
+ import { execHookDataAndOnBeforeRender } from './execHookDataAndOnBeforeRender.js';
11
11
  import { logRuntimeError } from '../loggerRuntime.js';
12
12
  import { isNewError } from './isNewError.js';
13
13
  import { preparePageContextForPublicUsageServer } from './preparePageContextForPublicUsageServer.js';
14
- import { executeGuardHook } from '../../../shared/route/executeGuardHook.js';
14
+ import { execHookGuard } from '../../../shared/route/execHookGuard.js';
15
15
  import pc from '@brillout/picocolors';
16
16
  import { isServerSideError } from '../../../shared/misc/isServerSideError.js';
17
17
  async function renderPageAlreadyRouted(pageContext) {
@@ -23,16 +23,16 @@ async function renderPageAlreadyRouted(pageContext) {
23
23
  assert(isError ===
24
24
  (pageContext.pageId ===
25
25
  getErrorPageId(pageContext._globalContext._pageFilesAll, pageContext._globalContext._pageConfigs)));
26
- objectAssign(pageContext, await loadPageConfigsLazyServerSide(pageContext));
26
+ augmentType(pageContext, await loadPageConfigsLazyServerSideAndExecHook(pageContext));
27
27
  if (!isError) {
28
- await executeGuardHook(pageContext, (pageContext) => preparePageContextForPublicUsageServer(pageContext));
28
+ await execHookGuard(pageContext, (pageContext) => preparePageContextForPublicUsageServer(pageContext));
29
29
  }
30
30
  if (!isError) {
31
- await executeOnBeforeRenderAndDataHooks(pageContext);
31
+ await execHookDataAndOnBeforeRender(pageContext);
32
32
  }
33
33
  else {
34
34
  try {
35
- await executeOnBeforeRenderAndDataHooks(pageContext);
35
+ await execHookDataAndOnBeforeRender(pageContext);
36
36
  }
37
37
  catch (err) {
38
38
  if (isNewError(err, pageContext.errorWhileRendering)) {
@@ -49,7 +49,7 @@ async function renderPageAlreadyRouted(pageContext) {
49
49
  objectAssign(pageContext, { httpResponse });
50
50
  return pageContext;
51
51
  }
52
- const renderHookResult = await executeOnRenderHtmlHook(pageContext);
52
+ const renderHookResult = await execHookOnRenderHtml(pageContext);
53
53
  const { htmlRender, renderHook } = renderHookResult;
54
54
  const httpResponse = await createHttpResponsePage(htmlRender, renderHook, pageContext);
55
55
  objectAssign(pageContext, { httpResponse });
@@ -62,10 +62,10 @@ async function prerenderPage(pageContext) {
62
62
  });
63
63
  /* Should we execute the guard() hook upon pre-rendering? Is there a use case for this?
64
64
  * - It isn't trivial to implement, as it requires to duplicate / factor out the isAbortError() handling
65
- await executeGuardHook(pageContext, (pageContext) => preparePageContextForPublicUsageServer(pageContext))
65
+ await execHookGuard(pageContext, (pageContext) => preparePageContextForPublicUsageServer(pageContext))
66
66
  */
67
- await executeOnBeforeRenderAndDataHooks(pageContext);
68
- const { htmlRender, renderHook } = await executeOnRenderHtmlHook(pageContext);
67
+ await execHookDataAndOnBeforeRender(pageContext);
68
+ const { htmlRender, renderHook } = await execHookOnRenderHtml(pageContext);
69
69
  assertUsage(htmlRender !== null, `Cannot pre-render ${pc.cyan(pageContext.urlOriginal)} because the ${renderHook.hookName}() hook defined by ${renderHook.hookFilePath} didn't return an HTML string.`);
70
70
  assert(pageContext.isClientSideNavigation === false);
71
71
  const documentHtml = await getHtmlString(htmlRender);