vike 0.4.232-commit-ec54a7e → 0.4.232-commit-1690f53

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 (49) hide show
  1. package/dist/cjs/node/prerender/runPrerender.js +3 -3
  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/loadPageConfigsLazyServerSide.js +4 -4
  5. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +11 -11
  6. package/dist/cjs/node/runtime/renderPage.js +1 -1
  7. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/configDefinitionsBuiltIn.js +0 -2
  8. package/dist/cjs/shared/hooks/execHook.js +31 -54
  9. package/dist/cjs/shared/route/{executeGuardHook.js → execHookGuard.js} +3 -3
  10. package/dist/cjs/shared/route/{executeOnBeforeRouteHook.js → execHookOnBeforeRoute.js} +4 -4
  11. package/dist/cjs/shared/route/index.js +2 -2
  12. package/dist/cjs/shared/route/resolveRouteFunction.js +1 -1
  13. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  14. package/dist/esm/client/runtime-client-routing/getPageContextFromHooks.d.ts +2 -2
  15. package/dist/esm/client/runtime-client-routing/getPageContextFromHooks.js +9 -9
  16. package/dist/esm/client/runtime-client-routing/prefetch.js +2 -2
  17. package/dist/esm/client/runtime-client-routing/renderPageClientSide.js +88 -65
  18. package/dist/esm/client/runtime-server-routing/createPageContextClientSide.js +4 -4
  19. package/dist/esm/client/runtime-server-routing/entry.js +2 -2
  20. package/dist/esm/client/shared/{executeOnRenderClientHook.d.ts → execHookOnRenderClient.d.ts} +2 -2
  21. package/dist/esm/client/shared/{executeOnRenderClientHook.js → execHookOnRenderClient.js} +4 -4
  22. package/dist/esm/client/shared/loadPageConfigsLazyClientSide.d.ts +5 -7
  23. package/dist/esm/client/shared/loadPageConfigsLazyClientSide.js +6 -6
  24. package/dist/esm/node/prerender/runPrerender.js +5 -5
  25. package/dist/esm/node/runtime/renderPage/createHttpResponse.d.ts +1 -1
  26. package/dist/esm/node/runtime/renderPage/execHookDataAndOnBeforeRender.d.ts +6 -0
  27. package/dist/esm/node/runtime/renderPage/{executeOnBeforeRenderAndDataHooks.js → execHookDataAndOnBeforeRender.js} +2 -2
  28. package/dist/esm/node/runtime/renderPage/{executeOnRenderHtmlHook.d.ts → execHookOnRenderHtml.d.ts} +2 -2
  29. package/dist/esm/node/runtime/renderPage/{executeOnRenderHtmlHook.js → execHookOnRenderHtml.js} +4 -4
  30. package/dist/esm/node/runtime/renderPage/execHookServer.d.ts +3 -3
  31. package/dist/esm/node/runtime/renderPage/getHttpResponseBody.d.ts +1 -1
  32. package/dist/esm/node/runtime/renderPage/loadPageConfigsLazyServerSide.d.ts +6 -6
  33. package/dist/esm/node/runtime/renderPage/loadPageConfigsLazyServerSide.js +4 -4
  34. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +12 -12
  35. package/dist/esm/node/runtime/renderPage.js +2 -2
  36. package/dist/esm/node/vite/shared/resolveVikeConfigInternal/configDefinitionsBuiltIn.js +0 -2
  37. package/dist/esm/shared/hooks/execHook.d.ts +14 -29
  38. package/dist/esm/shared/hooks/execHook.js +31 -54
  39. package/dist/esm/shared/route/execHookGuard.d.ts +8 -0
  40. package/dist/esm/shared/route/{executeGuardHook.js → execHookGuard.js} +4 -4
  41. package/dist/esm/shared/route/{executeOnBeforeRouteHook.d.ts → execHookOnBeforeRoute.d.ts} +2 -2
  42. package/dist/esm/shared/route/{executeOnBeforeRouteHook.js → execHookOnBeforeRoute.js} +5 -5
  43. package/dist/esm/shared/route/index.js +2 -2
  44. package/dist/esm/shared/route/resolveRouteFunction.js +2 -2
  45. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  46. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  47. package/package.json +1 -1
  48. package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.d.ts +0 -6
  49. package/dist/esm/shared/route/executeGuardHook.d.ts +0 -8
@@ -8,8 +8,8 @@ import { getPageContextFromClientHooks, getPageContextFromServerHooks, getPageCo
8
8
  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
- import { executeOnRenderClientHook } from '../shared/executeOnRenderClientHook.js';
12
- import { isErrorFetchingStaticAssets, loadPageConfigsLazy, } from '../shared/loadPageConfigsLazyClientSide.js';
11
+ import { execHookOnRenderClient } from '../shared/execHookOnRenderClient.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 { execHookDirect, execHook } 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';
@@ -73,9 +73,11 @@ async function renderPageClientSide(renderArgs) {
73
73
  if (!globalObject.isTransitioning) {
74
74
  globalObject.isTransitioning = true;
75
75
  const hooks = getHookFromPageContextNew('onPageTransitionStart', previousPageContext);
76
- const res = await execHooksErrorHandling(hooks, pageContext, preparePageContextForPublicUsageClientMinimal);
77
- if ('err' in res) {
78
- await onError(res.err);
76
+ try {
77
+ await execHookDirect(hooks, pageContext, preparePageContextForPublicUsageClientMinimal);
78
+ }
79
+ catch (err) {
80
+ await onError(err);
79
81
  return;
80
82
  }
81
83
  if (isRenderOutdated())
@@ -134,23 +136,17 @@ async function renderPageClientSide(renderArgs) {
134
136
  assert(!('urlOriginal' in pageContextFromRoute));
135
137
  objectAssign(pageContext, pageContextFromRoute);
136
138
  }
137
- let pageContextAugmented;
138
- try {
139
- pageContextAugmented = await loadPageConfigsLazyClientSide(pageContext);
140
- }
141
- catch (err) {
142
- if (handleErrorFetchingStaticAssets(err, pageContext, isFirstRender)) {
143
- return;
144
- }
145
- else {
146
- // A user file has a syntax error
147
- await onError(err);
148
- return;
149
- }
150
- }
151
- augmentType(pageContext, pageContextAugmented);
152
- if (isRenderOutdated())
139
+ const res = await loadPageConfigsLazyClientSideAndExecHook(pageContext, isFirstRender, isRenderOutdated);
140
+ /* Already called inside loadPageConfigsLazyClientSideAndExecHook()
141
+ if (isRenderOutdated()) return
142
+ */
143
+ if (res.skip)
153
144
  return;
145
+ if ('err' in res) {
146
+ await onError(res.err);
147
+ return;
148
+ }
149
+ augmentType(pageContext, res.pageContext);
154
150
  setPageContextCurrent(pageContext);
155
151
  // Set global hydrationCanBeAborted
156
152
  if (pageContext.exports.hydrationCanBeAborted) {
@@ -317,23 +313,17 @@ async function renderPageClientSide(renderArgs) {
317
313
  redirectHard(urlOriginal);
318
314
  return;
319
315
  }
320
- let pageContextAugmented;
321
- try {
322
- pageContextAugmented = await loadPageConfigsLazyClientSide(pageContext);
323
- }
324
- catch (err) {
325
- if (handleErrorFetchingStaticAssets(err, pageContext, isFirstRender)) {
326
- return;
327
- }
328
- else {
329
- // A user file has a syntax error
330
- onError(err);
331
- return;
332
- }
333
- }
334
- augmentType(pageContext, pageContextAugmented);
335
- if (isRenderOutdated())
316
+ const res = await loadPageConfigsLazyClientSideAndExecHook(pageContext, isFirstRender, isRenderOutdated);
317
+ /* Already called inside loadPageConfigsLazyClientSideAndExecHook()
318
+ if (isRenderOutdated()) return
319
+ */
320
+ if (res.skip)
336
321
  return;
322
+ if ('err' in res) {
323
+ onError(res.err);
324
+ return;
325
+ }
326
+ augmentType(pageContext, res.pageContext);
337
327
  setPageContextCurrent(pageContext);
338
328
  let pageContextFromServerHooks;
339
329
  try {
@@ -389,7 +379,7 @@ async function renderPageClientSide(renderArgs) {
389
379
  const onRenderClientPromise = (async () => {
390
380
  let onRenderClientError;
391
381
  try {
392
- await executeOnRenderClientHook(pageContext, preparePageContextForPublicUsageClient);
382
+ await execHookOnRenderClient(pageContext, preparePageContextForPublicUsageClient);
393
383
  }
394
384
  catch (err) {
395
385
  onRenderClientError = err;
@@ -411,9 +401,11 @@ async function renderPageClientSide(renderArgs) {
411
401
  */
412
402
  // onHydrationEnd()
413
403
  if (isFirstRender && !onRenderClientError) {
414
- const res = await execHookErrorHandling('onHydrationEnd', pageContext, preparePageContextForPublicUsageClient);
415
- if ('err' in res) {
416
- await onError(res.err);
404
+ try {
405
+ await execHook('onHydrationEnd', pageContext, preparePageContextForPublicUsageClient);
406
+ }
407
+ catch (err) {
408
+ await onError(err);
417
409
  if (!isErrorPage)
418
410
  return;
419
411
  }
@@ -428,9 +420,11 @@ async function renderPageClientSide(renderArgs) {
428
420
  globalObject.isTransitioning = undefined;
429
421
  assert(previousPageContext);
430
422
  const hooks = getHookFromPageContextNew('onPageTransitionEnd', previousPageContext);
431
- const res = await execHooksErrorHandling(hooks, pageContext, preparePageContextForPublicUsageClient);
432
- if ('err' in res) {
433
- await onError(res.err);
423
+ try {
424
+ await execHookDirect(hooks, pageContext, preparePageContextForPublicUsageClient);
425
+ }
426
+ catch (err) {
427
+ await onError(err);
434
428
  if (!isErrorPage)
435
429
  return;
436
430
  }
@@ -497,22 +491,6 @@ function changeUrl(url, overwriteLastHistoryEntry) {
497
491
  return;
498
492
  pushHistoryState(url, overwriteLastHistoryEntry);
499
493
  }
500
- function handleErrorFetchingStaticAssets(err, pageContext, isFirstRender) {
501
- if (!isErrorFetchingStaticAssets(err)) {
502
- return false;
503
- }
504
- if (isFirstRender) {
505
- disableClientRouting(err, false);
506
- // This may happen if the frontend was newly deployed during hydration.
507
- // Ideally: re-try a couple of times by reloading the page (not entirely trivial to implement since `localStorage` is needed.)
508
- throw err;
509
- }
510
- else {
511
- disableClientRouting(err, true);
512
- }
513
- redirectHard(pageContext.urlOriginal);
514
- return true;
515
- }
516
494
  function disableClientRouting(err, log) {
517
495
  assert(isErrorFetchingStaticAssets(err));
518
496
  globalObject.clientRoutingIsDisabled = true;
@@ -602,9 +580,54 @@ function areKeysEqual(key1, key2) {
602
580
  function getPageContextClient() {
603
581
  return globalObject.renderedPageContext ?? null;
604
582
  }
605
- async function loadPageConfigsLazyClientSide(pageContext) {
606
- const pageContextAddendum = await loadPageConfigsLazy(pageContext.pageId, pageContext._pageFilesAll, pageContext._globalContext._pageConfigs, pageContext._globalContext._pageConfigGlobal);
583
+ async function loadPageConfigsLazyClientSideAndExecHook(pageContext, isFirstRender, isRenderOutdated) {
584
+ let hasErr = false;
585
+ let err;
586
+ let pageContextAddendum;
587
+ try {
588
+ pageContextAddendum = await loadPageConfigsLazyClientSide(pageContext.pageId, pageContext._pageFilesAll, pageContext._globalContext._pageConfigs, pageContext._globalContext._pageConfigGlobal);
589
+ }
590
+ catch (err_) {
591
+ err = err_;
592
+ hasErr = true;
593
+ if (handleErrorFetchingStaticAssets(err, pageContext, isFirstRender)) {
594
+ return { skip: true };
595
+ }
596
+ else {
597
+ // Syntax error in user file
598
+ }
599
+ }
600
+ if (isRenderOutdated())
601
+ return { skip: true };
602
+ if (hasErr)
603
+ return { err };
607
604
  objectAssign(pageContext, pageContextAddendum);
608
- await execHook('onCreatePageContext', pageContext, preparePageContextForPublicUsageClient);
609
- return pageContext;
605
+ try {
606
+ await execHook('onCreatePageContext', pageContext, preparePageContextForPublicUsageClient);
607
+ }
608
+ catch (err_) {
609
+ err = err;
610
+ hasErr = true;
611
+ }
612
+ if (isRenderOutdated())
613
+ return { skip: true };
614
+ if (hasErr)
615
+ return { err };
616
+ return { pageContext };
617
+ }
618
+ function handleErrorFetchingStaticAssets(err, pageContext, isFirstRender) {
619
+ if (!isErrorFetchingStaticAssets(err)) {
620
+ return false;
621
+ }
622
+ if (isFirstRender) {
623
+ disableClientRouting(err, false);
624
+ // This may happen if the frontend was newly deployed during hydration.
625
+ // Ideally: re-try a couple of times by reloading the page (not entirely trivial to implement since `localStorage` is needed.)
626
+ throw err;
627
+ }
628
+ else {
629
+ disableClientRouting(err, true);
630
+ }
631
+ redirectHard(pageContext.urlOriginal);
632
+ return true;
610
633
  }
@@ -1,7 +1,7 @@
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';
@@ -24,7 +24,7 @@ async function createPageContextClientSide() {
24
24
  // Sets pageContext.config to global configs
25
25
  augmentType(pageContextCreated, await createPageContextShared(pageContextCreated, globalContext._pageConfigGlobal, globalContext._vikeConfigPublicGlobal));
26
26
  // Sets pageContext.config to local configs (overrides the pageContext.config set above)
27
- augmentType(pageContextCreated, await loadPageConfigsLazyClientSide(pageContextCreated));
27
+ augmentType(pageContextCreated, await loadPageConfigsLazyClientSideAndExecHook(pageContextCreated));
28
28
  assertPristineUrl();
29
29
  return pageContextCreated;
30
30
  }
@@ -32,8 +32,8 @@ function assertPristineUrl() {
32
32
  const urlCurrent = getCurrentUrl({ withoutHash: true });
33
33
  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
34
  }
35
- async function loadPageConfigsLazyClientSide(pageContext) {
36
- const pageContextAddendum = await loadPageConfigsLazy(pageContext.pageId, pageContext._pageFilesAll, pageContext._globalContext._pageConfigs, pageContext._globalContext._pageConfigGlobal);
35
+ async function loadPageConfigsLazyClientSideAndExecHook(pageContext) {
36
+ const pageContextAddendum = await loadPageConfigsLazyClientSide(pageContext.pageId, pageContext._pageFilesAll, pageContext._globalContext._pageConfigs, pageContext._globalContext._pageConfigGlobal);
37
37
  objectAssign(pageContext, pageContextAddendum);
38
38
  await execHook('onCreatePageContext', pageContext, preparePageContextForPublicUsageClient);
39
39
  return pageContext;
@@ -1,7 +1,7 @@
1
1
  import { assertServerRouting } from '../../utils/assertRoutingType.js';
2
2
  assertServerRouting();
3
3
  import { createPageContextClientSide } from './createPageContextClientSide.js';
4
- import { executeOnRenderClientHook } from '../shared/executeOnRenderClientHook.js';
4
+ import { execHookOnRenderClient } from '../shared/execHookOnRenderClient.js';
5
5
  import { assertSingleInstance_onClientEntryServerRouting } from './utils.js';
6
6
  import { removeFoucBuster } from '../shared/removeFoucBuster.js';
7
7
  import { execHook } from '../../shared/hooks/execHook.js';
@@ -14,6 +14,6 @@ if (import.meta.env.DEV)
14
14
  hydrate();
15
15
  async function hydrate() {
16
16
  const pageContext = await createPageContextClientSide();
17
- await executeOnRenderClientHook(pageContext, preparePageContextForPublicUsageClient);
17
+ await execHookOnRenderClient(pageContext, preparePageContextForPublicUsageClient);
18
18
  await execHook('onHydrationEnd', pageContext, preparePageContextForPublicUsageClient);
19
19
  }
@@ -1,4 +1,4 @@
1
- export { executeOnRenderClientHook };
1
+ export { execHookOnRenderClient };
2
2
  export type { PageContextBeforeRenderClient };
3
3
  import type { PageFile, VikeConfigPublicPageLazy } from '../../shared/getPageFiles.js';
4
4
  import type { PageContextForPublicUsageClientShared } from './preparePageContextForPublicUsageClientShared.js';
@@ -10,4 +10,4 @@ type PageContextBeforeRenderClient = {
10
10
  pageId: string;
11
11
  _globalContext: GlobalContextClientInternalShared;
12
12
  } & VikeConfigPublicPageLazy & PageContextForPublicUsageClientShared;
13
- declare function executeOnRenderClientHook<PageContext extends PageContextBeforeRenderClient>(pageContext: PageContext, prepareForPublicUsage: (pageConfig: PageContext) => PageContext): Promise<void>;
13
+ declare function execHookOnRenderClient<PageContext extends PageContextBeforeRenderClient>(pageContext: PageContext, prepareForPublicUsage: (pageConfig: PageContext) => PageContext): Promise<void>;
@@ -1,8 +1,8 @@
1
- export { executeOnRenderClientHook };
1
+ export { execHookOnRenderClient };
2
2
  import { assert, assertUsage } from '../runtime-server-routing/utils.js';
3
3
  import { getHookFromPageContext } from '../../shared/hooks/getHook.js';
4
- import { execHookSingle } from '../../shared/hooks/execHook.js';
5
- async function executeOnRenderClientHook(pageContext, prepareForPublicUsage) {
4
+ import { execHookDirectSingle } from '../../shared/hooks/execHook.js';
5
+ async function execHookOnRenderClient(pageContext, prepareForPublicUsage) {
6
6
  let hook = null;
7
7
  {
8
8
  const renderHook = getHookFromPageContext(pageContext, 'render');
@@ -38,7 +38,7 @@ async function executeOnRenderClientHook(pageContext, prepareForPublicUsage) {
38
38
  }
39
39
  }
40
40
  // We don't use a try-catch wrapper because rendering errors are usually handled by the UI framework. (E.g. React's Error Boundaries.)
41
- await execHookSingle(hook, pageContext, prepareForPublicUsage);
41
+ await execHookDirectSingle(hook, pageContext, prepareForPublicUsage);
42
42
  }
43
43
  function getUrlToShowToUser(pageContext) {
44
44
  let url;
@@ -1,9 +1,8 @@
1
- export { loadPageConfigsLazy };
1
+ export { loadPageConfigsLazyClientSide };
2
2
  export type { PageContext_loadPageConfigsLazyClientSide };
3
3
  export { isErrorFetchingStaticAssets };
4
- import { type PageFile, type VikeConfigPublicPageLazy } from '../../shared/getPageFiles.js';
4
+ import { type PageFile } from '../../shared/getPageFiles.js';
5
5
  import type { PageConfigGlobalRuntime, PageConfigRuntime } from '../../types/PageConfig.js';
6
- import { PageContextPrepareMinimum } from '../../shared/preparePageContextForPublicUsage.js';
7
6
  type PageContext_loadPageConfigsLazyClientSide = {
8
7
  pageId: string;
9
8
  _pageFilesAll: PageFile[];
@@ -11,9 +10,8 @@ type PageContext_loadPageConfigsLazyClientSide = {
11
10
  _pageConfigs: PageConfigRuntime[];
12
11
  _pageConfigGlobal: PageConfigGlobalRuntime;
13
12
  };
14
- } & PageContextPrepareMinimum;
15
- type PageContextUserFilesLoaded = VikeConfigPublicPageLazy & {
16
- _pageFilesLoaded: PageFile[];
17
13
  };
18
- declare function loadPageConfigsLazy(pageId: string, pageFilesAll: PageFile[], pageConfigs: PageConfigRuntime[], pageConfigGlobal: PageConfigGlobalRuntime): Promise<PageContextUserFilesLoaded>;
14
+ declare function loadPageConfigsLazyClientSide(pageId: string, pageFilesAll: PageFile[], pageConfigs: PageConfigRuntime[], pageConfigGlobal: PageConfigGlobalRuntime): Promise<import("../../shared/getPageFiles.js").VikeConfigPublicPageLazy & {
15
+ _pageFilesLoaded: PageFile[];
16
+ }>;
19
17
  declare function isErrorFetchingStaticAssets(err: unknown): boolean;
@@ -1,12 +1,12 @@
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';
5
5
  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
- const stamp = '__whileFetchingAssets';
9
- async function loadPageConfigsLazy(pageId, pageFilesAll, pageConfigs, pageConfigGlobal) {
8
+ const errStamp = '_isAssetsError';
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;
@@ -23,10 +23,10 @@ async function loadPageConfigsLazy(pageId, pageFilesAll, pageConfigs, pageConfig
23
23
  }
24
24
  catch (err) {
25
25
  if (isFetchError(err)) {
26
- Object.assign(err, { [stamp]: true });
26
+ Object.assign(err, { [errStamp]: true });
27
27
  }
28
28
  else {
29
- // A user file has a syntax error
29
+ // Syntax error in user file
30
30
  }
31
31
  throw err;
32
32
  }
@@ -40,7 +40,7 @@ function isErrorFetchingStaticAssets(err) {
40
40
  if (!err) {
41
41
  return false;
42
42
  }
43
- return err[stamp] === true;
43
+ return err[errStamp] === true;
44
44
  }
45
45
  // https://stackoverflow.com/questions/75928310/how-to-detect-that-import-some-url-failed-because-some-url-isnt-a-javasc
46
46
  function isFetchError(err) {
@@ -18,11 +18,11 @@ 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';
@@ -216,7 +216,7 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext,
216
216
  if (doNotPrerenderList.find((p) => p.pageId === pageId))
217
217
  return;
218
218
  const { hookName, hookFilePath } = hook;
219
- const prerenderResult = await execHookWithoutPageContext(() => hook.hookFn(), hook);
219
+ const prerenderResult = await execHookDirectWithoutPageContext(() => hook.hookFn(), hook);
220
220
  const result = normalizeOnPrerenderHookResult(prerenderResult, hookFilePath, hookName);
221
221
  // Handle result
222
222
  await Promise.all(result.map(async ({ url, pageContext }) => {
@@ -323,7 +323,7 @@ async function createPageContextPrerendering(urlOriginal, prerenderContext, glob
323
323
  routeParams: {},
324
324
  });
325
325
  }
326
- augmentType(pageContext, await loadPageConfigsLazyServerSide(pageContext));
326
+ augmentType(pageContext, await loadPageConfigsLazyServerSideAndExecHook(pageContext));
327
327
  let usesClientRouter;
328
328
  {
329
329
  const { pageId } = pageContext;
@@ -444,7 +444,7 @@ async function callOnPrerenderStartHook(prerenderContext, globalContext, concurr
444
444
  preservePropertyGetters(pageContext);
445
445
  });
446
446
  const prerenderContextPublic = preparePrerenderContextForPublicUsage(prerenderContext);
447
- let result = await execHookWithoutPageContext(() => hookFn(prerenderContextPublic), onPrerenderStartHook);
447
+ let result = await execHookDirectWithoutPageContext(() => hookFn(prerenderContextPublic), onPrerenderStartHook);
448
448
  // Before applying result
449
449
  prerenderContext.pageContexts.forEach((pageContext) => {
450
450
  ;
@@ -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
  } & {
@@ -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,19 +1,19 @@
1
- export { loadPageConfigsLazyServerSide };
1
+ export { loadPageConfigsLazyServerSideAndExecHook };
2
2
  export type { PageContext_loadPageConfigsLazyServerSide };
3
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>>>;
8
+ import { type PageContextExecHookServer } from './execHookServer.js';
9
+ type PageContextExecuteHook = Omit<PageContextExecHookServer, keyof Awaited<ReturnType<typeof loadPageConfigsLazyServerSide>>>;
10
10
  type PageContext_loadPageConfigsLazyServerSide = PageContextGetPageAssets & PageContextDebugRouteMatches & {
11
11
  pageId: string;
12
12
  urlOriginal: string;
13
13
  _globalContext: GlobalContextServerInternal;
14
14
  };
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 & {
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
17
  Page: unknown;
18
18
  _isHtmlOnly: boolean;
19
19
  _passToClient: string[];
@@ -21,7 +21,7 @@ declare function loadPageConfigsLazyServerSide<PageContext extends PageContext_l
21
21
  } & {
22
22
  __getPageAssets: () => Promise<PageAsset[]>;
23
23
  }>;
24
- declare function loadPageConfigsLazy(pageContext: PageContext_loadPageConfigsLazyServerSide): Promise<import("../../../shared/getPageFiles.js").VikeConfigPublicPageLazy & {
24
+ declare function loadPageConfigsLazyServerSide(pageContext: PageContext_loadPageConfigsLazyServerSide): Promise<import("../../../shared/getPageFiles.js").VikeConfigPublicPageLazy & {
25
25
  Page: unknown;
26
26
  _isHtmlOnly: boolean;
27
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';
@@ -9,13 +9,13 @@ 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
11
  import { execHookServer } from './execHookServer.js';
12
- async function loadPageConfigsLazyServerSide(pageContext) {
13
- const pageContextAddendum = await loadPageConfigsLazy(pageContext);
12
+ async function loadPageConfigsLazyServerSideAndExecHook(pageContext) {
13
+ const pageContextAddendum = await loadPageConfigsLazyServerSide(pageContext);
14
14
  objectAssign(pageContext, pageContextAddendum);
15
15
  await execHookServer('onCreatePageContext', pageContext);
16
16
  return pageContext;
17
17
  }
18
- async function loadPageConfigsLazy(pageContext) {
18
+ async function loadPageConfigsLazyServerSide(pageContext) {
19
19
  const pageConfig = findPageConfig(pageContext._globalContext._pageConfigs, pageContext.pageId); // Make pageConfig globally available as pageContext._pageConfig ?
20
20
  const globalContext = pageContext._globalContext;
21
21
  const [{ pageFilesLoaded, pageContextExports }] = await Promise.all([
@@ -5,13 +5,13 @@ import { getHtmlString } from '../html/renderHtml.js';
5
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
- augmentType(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);