vike 0.4.171-commit-75e1588 → 0.4.171-commit-6e37128

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 (116) hide show
  1. package/dist/cjs/node/plugin/plugins/buildConfig.js +3 -4
  2. package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +18 -15
  3. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +3 -3
  4. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +30 -74
  5. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +4 -42
  6. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +9 -49
  7. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/isRuntimeEnvMatch.js +6 -0
  8. package/dist/cjs/node/prerender/runPrerender.js +33 -13
  9. package/dist/cjs/node/prerender/utils.js +1 -0
  10. package/dist/cjs/node/runtime/renderPage/analyzePage.js +9 -7
  11. package/dist/cjs/node/runtime/renderPage/createHttpResponseObject/getCacheControl.js +1 -1
  12. package/dist/cjs/node/runtime/renderPage/executeOnRenderHtmlHook.js +7 -7
  13. package/dist/cjs/node/runtime/renderPage/loadUserFilesServerSide.js +4 -5
  14. package/dist/cjs/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +2 -2
  15. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +6 -5
  16. package/dist/cjs/node/shared/assertV1Design.js +3 -4
  17. package/dist/cjs/shared/{addUrlComputedProps.js → getPageContextUrlComputed.js} +52 -42
  18. package/dist/cjs/shared/getPageFiles/analyzeClientSide.js +2 -2
  19. package/dist/cjs/shared/hooks/getHook.js +2 -2
  20. package/dist/cjs/shared/page-configs/getConfigValue.js +14 -17
  21. package/dist/cjs/shared/page-configs/getConfigValueBuildTime.js +70 -0
  22. package/dist/cjs/shared/page-configs/loadConfigValues.js +3 -12
  23. package/dist/cjs/shared/page-configs/serialize/assertPageConfigsSerialized.js +1 -2
  24. package/dist/cjs/shared/page-configs/serialize/parsePageConfigs.js +110 -16
  25. package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +198 -0
  26. package/dist/cjs/shared/route/index.js +2 -2
  27. package/dist/cjs/shared/route/loadPageRoutes.js +2 -2
  28. package/dist/cjs/shared/route/resolveRouteFunction.js +2 -2
  29. package/dist/cjs/shared/utils.js +2 -0
  30. package/dist/cjs/utils/changeEnumerable.js +9 -0
  31. package/dist/cjs/utils/hasProp.js +5 -7
  32. package/dist/cjs/utils/objectAssign.js +1 -1
  33. package/dist/cjs/utils/objectDefineProperty.js +8 -0
  34. package/dist/cjs/utils/projectInfo.js +1 -1
  35. package/dist/esm/client/client-routing-runtime/createPageContext.d.ts +6 -4
  36. package/dist/esm/client/client-routing-runtime/createPageContext.js +4 -3
  37. package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +14 -10
  38. package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +4 -4
  39. package/dist/esm/client/shared/loadUserFilesClientSide.js +4 -4
  40. package/dist/esm/node/plugin/plugins/buildConfig.js +3 -4
  41. package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +18 -15
  42. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.d.ts +2 -1
  43. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +3 -3
  44. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +30 -74
  45. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +4 -42
  46. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +9 -49
  47. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/isRuntimeEnvMatch.d.ts +1 -0
  48. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/isRuntimeEnvMatch.js +6 -0
  49. package/dist/esm/node/prerender/runPrerender.js +35 -15
  50. package/dist/esm/node/prerender/utils.d.ts +1 -0
  51. package/dist/esm/node/prerender/utils.js +1 -0
  52. package/dist/esm/node/runtime/renderPage/analyzePage.js +9 -7
  53. package/dist/esm/node/runtime/renderPage/createHttpResponseObject/getCacheControl.js +2 -2
  54. package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.js +7 -7
  55. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.d.ts +1 -9
  56. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +4 -5
  57. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +2 -2
  58. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +2 -2
  59. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +27 -50
  60. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +6 -5
  61. package/dist/esm/node/shared/assertV1Design.d.ts +2 -2
  62. package/dist/esm/node/shared/assertV1Design.js +3 -4
  63. package/dist/esm/shared/{addUrlComputedProps.d.ts → getPageContextUrlComputed.d.ts} +23 -21
  64. package/dist/esm/shared/{addUrlComputedProps.js → getPageContextUrlComputed.js} +52 -42
  65. package/dist/esm/shared/getPageFiles/analyzeClientSide.js +3 -3
  66. package/dist/esm/shared/hooks/getHook.d.ts +2 -2
  67. package/dist/esm/shared/hooks/getHook.js +3 -3
  68. package/dist/esm/shared/page-configs/PageConfig.d.ts +10 -4
  69. package/dist/esm/shared/page-configs/getConfigValue.d.ts +12 -12
  70. package/dist/esm/shared/page-configs/getConfigValue.js +13 -16
  71. package/dist/esm/shared/page-configs/getConfigValueBuildTime.d.ts +9 -0
  72. package/dist/esm/shared/page-configs/getConfigValueBuildTime.js +67 -0
  73. package/dist/esm/shared/page-configs/loadConfigValues.js +3 -12
  74. package/dist/esm/shared/page-configs/serialize/PageConfigSerialized.d.ts +15 -19
  75. package/dist/esm/shared/page-configs/serialize/assertPageConfigsSerialized.js +1 -2
  76. package/dist/esm/shared/page-configs/serialize/parsePageConfigs.d.ts +4 -1
  77. package/dist/esm/shared/page-configs/serialize/parsePageConfigs.js +109 -15
  78. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.d.ts +5 -0
  79. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +192 -0
  80. package/dist/esm/shared/route/index.d.ts +3 -3
  81. package/dist/esm/shared/route/index.js +2 -2
  82. package/dist/esm/shared/route/loadPageRoutes.js +3 -3
  83. package/dist/esm/shared/route/resolveRouteFunction.d.ts +2 -2
  84. package/dist/esm/shared/route/resolveRouteFunction.js +2 -2
  85. package/dist/esm/shared/types.d.ts +4 -4
  86. package/dist/esm/shared/utils.d.ts +2 -0
  87. package/dist/esm/shared/utils.js +2 -0
  88. package/dist/esm/types/index.d.ts +1 -1
  89. package/dist/esm/utils/changeEnumerable.d.ts +2 -0
  90. package/dist/esm/utils/changeEnumerable.js +5 -0
  91. package/dist/esm/utils/hasProp.d.ts +4 -13
  92. package/dist/esm/utils/hasProp.js +5 -7
  93. package/dist/esm/utils/objectAssign.js +1 -1
  94. package/dist/esm/utils/objectDefineProperty.d.ts +4 -0
  95. package/dist/esm/utils/objectDefineProperty.js +4 -0
  96. package/dist/esm/utils/projectInfo.d.ts +2 -2
  97. package/dist/esm/utils/projectInfo.js +1 -1
  98. package/package.json +2 -2
  99. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getConfigValuesSerialized.js +0 -101
  100. package/dist/cjs/node/plugin/shared/getConfigValueSourcesNotOverriden.js +0 -14
  101. package/dist/cjs/node/shared/getClientEntry.js +0 -12
  102. package/dist/cjs/shared/page-configs/serialize/parseConfigValuesImported.js +0 -85
  103. package/dist/cjs/shared/page-configs/serialize/parseConfigValuesSerialized.js +0 -24
  104. package/dist/cjs/shared/page-configs/serialize/serializeConfigValue.js +0 -49
  105. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getConfigValuesSerialized.d.ts +0 -5
  106. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getConfigValuesSerialized.js +0 -95
  107. package/dist/esm/node/plugin/shared/getConfigValueSourcesNotOverriden.d.ts +0 -5
  108. package/dist/esm/node/plugin/shared/getConfigValueSourcesNotOverriden.js +0 -11
  109. package/dist/esm/node/shared/getClientEntry.d.ts +0 -3
  110. package/dist/esm/node/shared/getClientEntry.js +0 -9
  111. package/dist/esm/shared/page-configs/serialize/parseConfigValuesImported.d.ts +0 -4
  112. package/dist/esm/shared/page-configs/serialize/parseConfigValuesImported.js +0 -82
  113. package/dist/esm/shared/page-configs/serialize/parseConfigValuesSerialized.d.ts +0 -4
  114. package/dist/esm/shared/page-configs/serialize/parseConfigValuesSerialized.js +0 -21
  115. package/dist/esm/shared/page-configs/serialize/serializeConfigValue.d.ts +0 -6
  116. package/dist/esm/shared/page-configs/serialize/serializeConfigValue.js +0 -46
@@ -5,7 +5,7 @@ export { runPrerender_forceExit };
5
5
  import '../runtime/page-files/setup.js';
6
6
  import path from 'path';
7
7
  import { route } from '../../shared/route/index.js';
8
- import { assert, assertUsage, assertWarning, hasProp, projectInfo, objectAssign, isObjectWithKeys, isCallable, getOutDirs, isPropertyGetter, assertPosixPath, urlToFile, isPlainObject, handleNodeEnv_prerender, pLimit, assertPathFilesystemAbsolute, isArray } from './utils.js';
8
+ import { assert, assertUsage, assertWarning, hasProp, projectInfo, objectAssign, isObjectWithKeys, isCallable, getOutDirs, isPropertyGetter, assertPosixPath, urlToFile, isPlainObject, handleNodeEnv_prerender, pLimit, assertPathFilesystemAbsolute, isArray, changeEnumerable } from './utils.js';
9
9
  import { prerenderPage, prerender404Page, getRenderContext, getPageContextInitEnhanced } from '../runtime/renderPage/renderPageAlreadyRouted.js';
10
10
  import pc from '@brillout/picocolors';
11
11
  import { cpus } from 'os';
@@ -16,10 +16,10 @@ import { getPageFilesServerSide } from '../../shared/getPageFiles.js';
16
16
  import { getPageContextRequestUrl } from '../../shared/getPageContextRequestUrl.js';
17
17
  import { getUrlFromRouteString } from '../../shared/route/resolveRouteString.js';
18
18
  import { getConfigValueFilePathToShowToUser } from '../../shared/page-configs/helpers.js';
19
- import { getConfigValue } from '../../shared/page-configs/getConfigValue.js';
19
+ import { getConfigValueRuntime } from '../../shared/page-configs/getConfigValue.js';
20
20
  import { loadConfigValues } from '../../shared/page-configs/loadConfigValues.js';
21
21
  import { isErrorPage } from '../../shared/error-page.js';
22
- import { addUrlComputedProps } from '../../shared/addUrlComputedProps.js';
22
+ import { getPageContextUrlComputed } from '../../shared/getPageContextUrlComputed.js';
23
23
  import { isAbortError } from '../../shared/route/abort.js';
24
24
  import { loadUserFilesServerSide } from '../runtime/renderPage/loadUserFilesServerSide.js';
25
25
  import { getHookFromPageConfig, getHookFromPageConfigGlobal, getHookTimeoutDefault, setIsPrerenderering } from '../../shared/hooks/getHook.js';
@@ -27,6 +27,7 @@ import { noRouteMatch } from '../../shared/route/noRouteMatch.js';
27
27
  import { getVikeConfig } from '../plugin/plugins/importUserCode/v1-design/getVikeConfig.js';
28
28
  import { logErrorHint } from '../runtime/renderPage/logErrorHint.js';
29
29
  import { executeHook, isUserHookError } from '../../shared/hooks/executeHook.js';
30
+ import { getConfigValueBuildTime } from '../../shared/page-configs/getConfigValueBuildTime.js';
30
31
  async function runPrerenderFromAPI(options = {}) {
31
32
  await runPrerender(options, 'prerender()');
32
33
  // - We purposely propagate the error to the user land, so that the error interrupts the user land. It's also, I guess, a nice-to-have that the user has control over the error.
@@ -114,7 +115,7 @@ async function collectDoNoPrerenderList(renderContext, pageConfigs, doNotPrerend
114
115
  // V1 design
115
116
  pageConfigs.forEach((pageConfig) => {
116
117
  const configName = 'prerender';
117
- const configValue = getConfigValue(pageConfig, configName, 'boolean');
118
+ const configValue = getConfigValueBuildTime(pageConfig, configName, 'boolean');
118
119
  if (configValue?.value === false) {
119
120
  const configValueFilePathToShowToUser = getConfigValueFilePathToShowToUser(configValue.definedAtData);
120
121
  assert(configValueFilePathToShowToUser);
@@ -240,9 +241,9 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, renderContext,
240
241
  prerenderContext.pageContexts.push(pageContextNew);
241
242
  if (pageContext) {
242
243
  objectAssign(pageContextNew, {
243
- _pageContextAlreadyProvidedByOnPrerenderHook: true,
244
- ...pageContext
244
+ _pageContextAlreadyProvidedByOnPrerenderHook: true
245
245
  });
246
+ objectAssign(pageContextNew, pageContext);
246
247
  }
247
248
  });
248
249
  })));
@@ -300,14 +301,11 @@ function createPageContext(urlOriginal, renderContext, prerenderContext) {
300
301
  _prerenderContext: prerenderContext
301
302
  };
302
303
  const pageContextInit = {
303
- urlOriginal,
304
- ...prerenderContext.pageContextInit
304
+ urlOriginal
305
305
  };
306
+ objectAssign(pageContextInit, prerenderContext.pageContextInit);
306
307
  {
307
- const pageContextInitEnhanced = getPageContextInitEnhanced(pageContextInit, renderContext, {
308
- // We set `enumerable` to `false` to avoid computed URL properties from being iterated & copied in a onPrerenderStart() hook, e.g. /examples/i18n/
309
- urlComputedPropsNonEnumerable: true
310
- });
308
+ const pageContextInitEnhanced = getPageContextInitEnhanced(pageContextInit, renderContext);
311
309
  objectAssign(pageContext, pageContextInitEnhanced);
312
310
  }
313
311
  return pageContext;
@@ -382,6 +380,8 @@ async function callOnPrerenderStartHook(prerenderContext, renderContext) {
382
380
  pageContext._urlOriginalBeforeHook = pageContext.urlOriginal;
383
381
  });
384
382
  const docLink = 'https://vike.dev/i18n#pre-rendering';
383
+ // Set `enumerable` to `false` to avoid computed URL properties from being iterated & copied in onPrerenderStart() hook, e.g. /examples/i18n/
384
+ const { restoreEnumerable, addPageContextComputedUrl } = makePageContextComputedUrlNonEnumerable(prerenderContext.pageContexts);
385
385
  let result = await executeHook(() => hookFn({
386
386
  pageContexts: prerenderContext.pageContexts,
387
387
  // TODO/v1-release: remove warning
@@ -393,6 +393,7 @@ async function callOnPrerenderStartHook(prerenderContext, renderContext) {
393
393
  return prerenderContext.pageContexts;
394
394
  }
395
395
  }), onPrerenderStartHook, null);
396
+ restoreEnumerable();
396
397
  if (result === null || result === undefined) {
397
398
  return;
398
399
  }
@@ -430,9 +431,8 @@ async function callOnPrerenderStartHook(prerenderContext, renderContext) {
430
431
  hookName
431
432
  };
432
433
  }
433
- // Restore as URL computed props are lost when user makes a pageContext copy
434
- addUrlComputedProps(pageContext);
435
434
  });
435
+ addPageContextComputedUrl(prerenderContext.pageContexts);
436
436
  }
437
437
  async function routeAndPrerender(prerenderContext, concurrencyLimit, onComplete) {
438
438
  const globalContext = getGlobalContext();
@@ -474,7 +474,7 @@ async function routeAndPrerender(prerenderContext, concurrencyLimit, onComplete)
474
474
  if (pageContext._pageConfigs.length > 0) {
475
475
  const pageConfig = pageContext._pageConfigs.find((p) => p.pageId === pageId);
476
476
  assert(pageConfig);
477
- usesClientRouter = getConfigValue(pageConfig, 'clientRouting', 'boolean')?.value ?? false;
477
+ usesClientRouter = getConfigValueRuntime(pageConfig, 'clientRouting', 'boolean')?.value ?? false;
478
478
  }
479
479
  else {
480
480
  usesClientRouter = globalContext.pluginManifest.usesClientRouter;
@@ -714,3 +714,23 @@ function assertIsNotAbort(err, urlOr404) {
714
714
  assert(abortCall);
715
715
  assertUsage(false, `${pc.cyan(abortCall)} thrown${thrownBy} while pre-rendering ${urlOr404} but ${pc.cyan(abortCaller)} isn't supported for pre-rendered pages`);
716
716
  }
717
+ function makePageContextComputedUrlNonEnumerable(pageContexts) {
718
+ change(false);
719
+ return { restoreEnumerable, addPageContextComputedUrl };
720
+ function restoreEnumerable() {
721
+ change(true);
722
+ }
723
+ function addPageContextComputedUrl(pageContexts) {
724
+ // Add URL computed props to the user-generated pageContext copies
725
+ pageContexts.forEach((pageContext) => {
726
+ const pageContextUrlComputed = getPageContextUrlComputed(pageContext);
727
+ objectAssign(pageContext, pageContextUrlComputed);
728
+ });
729
+ }
730
+ function change(enumerable) {
731
+ pageContexts.forEach((pageContext) => {
732
+ changeEnumerable(pageContext, 'urlPathname', enumerable);
733
+ changeEnumerable(pageContext, 'urlParsed', enumerable);
734
+ });
735
+ }
736
+ }
@@ -13,3 +13,4 @@ export * from '../../utils/assertNodeEnv.js';
13
13
  export * from '../../utils/pLimit.js';
14
14
  export * from '../../utils/assertPathFilesystemAbsolute.js';
15
15
  export * from '../../utils/isArray.js';
16
+ export * from '../../utils/changeEnumerable.js';
@@ -15,3 +15,4 @@ export * from '../../utils/assertNodeEnv.js';
15
15
  export * from '../../utils/pLimit.js';
16
16
  export * from '../../utils/assertPathFilesystemAbsolute.js';
17
17
  export * from '../../utils/isArray.js';
18
+ export * from '../../utils/changeEnumerable.js';
@@ -4,12 +4,16 @@ import { analyzePageClientSide } from '../../../shared/getPageFiles/analyzePageC
4
4
  import { getVirtualFileIdPageConfigValuesAll } from '../../shared/virtual-files/virtualFilePageConfigValuesAll.js';
5
5
  import { analyzeClientSide } from '../../../shared/getPageFiles/analyzeClientSide.js';
6
6
  import { getGlobalContext } from '../globalContext.js';
7
- import { getClientEntry } from '../../shared/getClientEntry.js';
7
+ import { getConfigValueRuntime } from '../../../shared/page-configs/getConfigValue.js';
8
8
  function analyzePage(pageFilesAll, pageConfig, pageId) {
9
9
  if (pageConfig) {
10
10
  const { isClientSideRenderable, isClientRouting } = analyzeClientSide(pageConfig, pageFilesAll, pageId);
11
- const clientFilePath = getClientEntry(pageConfig);
12
- const clientEntry = !isClientSideRenderable ? clientFilePath : getVikeClientEntry(isClientRouting);
11
+ const clientEntries = [];
12
+ const clientFilePath = getConfigValueRuntime(pageConfig, 'client', 'string')?.value ?? null;
13
+ if (clientFilePath)
14
+ clientEntries.push(clientFilePath);
15
+ if (isClientSideRenderable)
16
+ clientEntries.push(getVikeClientEntry(isClientRouting));
13
17
  const clientDependencies = [];
14
18
  clientDependencies.push({
15
19
  id: getVirtualFileIdPageConfigValuesAll(pageConfig.pageId, true),
@@ -41,15 +45,13 @@ function analyzePage(pageFilesAll, pageConfig, pageId) {
41
45
  }
42
46
  })
43
47
  */
44
- const clientEntries = [];
45
- if (clientEntry) {
48
+ clientEntries.forEach((clientEntry) => {
46
49
  clientDependencies.push({
47
50
  id: clientEntry,
48
51
  onlyAssets: false,
49
52
  eagerlyImported: false
50
53
  });
51
- clientEntries.push(clientEntry);
52
- }
54
+ });
53
55
  return {
54
56
  isHtmlOnly: !isClientSideRenderable,
55
57
  isClientRouting,
@@ -1,13 +1,13 @@
1
1
  export { getCacheControl };
2
2
  import { getPageConfig } from '../../../../shared/page-configs/helpers.js';
3
- import { getConfigValue } from '../../../../shared/page-configs/getConfigValue.js';
3
+ import { getConfigValueRuntime } from '../../../../shared/page-configs/getConfigValue.js';
4
4
  const defaultValue = 'no-store, max-age=0';
5
5
  function getCacheControl(pageId, pageConfigs) {
6
6
  // TODO/v1-release: remove
7
7
  if (pageConfigs.length === 0)
8
8
  return defaultValue;
9
9
  const pageConfig = getPageConfig(pageId, pageConfigs);
10
- const configValue = getConfigValue(pageConfig, 'cacheControl', 'string');
10
+ const configValue = getConfigValueRuntime(pageConfig, 'cacheControl', 'string');
11
11
  const value = configValue?.value;
12
12
  if (value)
13
13
  return value;
@@ -63,13 +63,13 @@ function getRenderHook(pageContext) {
63
63
  assertUsage(false, [
64
64
  `No ${hookName}() hook found, see https://vike.dev/${hookName}`
65
65
  /*
66
- 'See https://vike.dev/render-modes for more information.',
67
- [
68
- // 'Loaded config files (none of them define the onRenderHtml() hook):',
69
- 'Loaded server-side page files (none of them `export { render }`):',
70
- ...pageContext._pageFilePathsLoaded.map((f, i) => ` (${i + 1}): ${f}`)
71
- ].join('\n')
72
- */
66
+ 'See https://vike.dev/render-modes for more information.',
67
+ [
68
+ // 'Loaded config files (none of them define the onRenderHtml() hook):',
69
+ 'Loaded server-side page files (none of them `export { render }`):',
70
+ ...pageContext._pageFilePathsLoaded.map((f, i) => ` (${i + 1}): ${f}`)
71
+ ].join('\n')
72
+ */
73
73
  ].join(' '));
74
74
  }
75
75
  return hookFound;
@@ -14,19 +14,11 @@ type PageContext_loadUserFilesServerSide = PageContextGetPageAssets & PageContex
14
14
  type PageFiles = PromiseType<ReturnType<typeof loadUserFilesServerSide>>;
15
15
  declare function loadUserFilesServerSide(pageContext: {
16
16
  _pageId: string;
17
- } & PageContext_loadUserFilesServerSide): Promise<{
17
+ } & PageContext_loadUserFilesServerSide): Promise<import("../../../shared/getPageFiles.js").PageContextExports & {
18
18
  Page: unknown;
19
19
  _isHtmlOnly: boolean;
20
20
  _passToClient: string[];
21
21
  _pageFilePathsLoaded: string[];
22
- source: import("../../../shared/getPageFiles/getExports.js").Source;
23
- sources: import("../../../shared/getPageFiles/getExports.js").Sources;
24
- from: import("../../../shared/getPageFiles/getExports.js").From;
25
- config: Record<string, unknown>;
26
- configEntries: import("../../../shared/getPageFiles/getExports.js").ConfigEntries;
27
- exports: Record<string, unknown>;
28
- exportsAll: import("../../../shared/getPageFiles/getExports.js").ExportsAll;
29
- pageExports: Record<string, unknown>;
30
22
  } & {
31
23
  __getPageAssets: () => Promise<PageAsset[]>;
32
24
  }>;
@@ -10,7 +10,7 @@ import { getGlobalContext } from '../globalContext.js';
10
10
  import { loadConfigValues } from '../../../shared/page-configs/loadConfigValues.js';
11
11
  async function loadUserFilesServerSide(pageContext) {
12
12
  const pageConfig = findPageConfig(pageContext._pageConfigs, pageContext._pageId); // Make pageConfig globally available as pageContext._pageConfig?
13
- const [{ pageFilesLoaded, pageConfigLoaded, ...pageContextExports }] = await Promise.all([
13
+ const [{ pageFilesLoaded, pageContextExports }] = await Promise.all([
14
14
  loadPageUserFiles(pageContext._pageFilesAll, pageConfig, pageContext._pageId, !getGlobalContext().isProduction),
15
15
  analyzePageClientSideInit(pageContext._pageFilesAll, pageContext._pageId, { sharedPageFilesAlreadyLoaded: true })
16
16
  ]);
@@ -35,8 +35,8 @@ async function loadUserFilesServerSide(pageContext) {
35
35
  });
36
36
  }
37
37
  const pageContextAddendum = {};
38
+ objectAssign(pageContextAddendum, pageContextExports);
38
39
  objectAssign(pageContextAddendum, {
39
- ...pageContextExports,
40
40
  Page: pageContextExports.exports.Page,
41
41
  _isHtmlOnly: isHtmlOnly,
42
42
  _passToClient: passToClient,
@@ -101,8 +101,7 @@ async function loadPageUserFiles(pageFilesAll, pageConfig, pageId, isDev) {
101
101
  await Promise.all(pageFilesServerSide.map((p) => p.loadFile?.()));
102
102
  const pageContextExports = getPageContextExports(pageFilesServerSide, pageConfigLoaded);
103
103
  return {
104
- ...pageContextExports,
105
- pageFilesLoaded: pageFilesServerSide,
106
- pageConfigLoaded
104
+ pageContextExports,
105
+ pageFilesLoaded: pageFilesServerSide
107
106
  };
108
107
  }
@@ -1,6 +1,6 @@
1
1
  export { preparePageContextForUserConsumptionServerSide };
2
2
  export type { PageContextForUserConsumptionServerSide };
3
- import { PageContextUrlComputedPropsInternal } from '../../../shared/addUrlComputedProps.js';
3
+ import { PageContextUrlInternal } from '../../../shared/getPageContextUrlComputed.js';
4
4
  import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
5
5
  import type { PageContextExports } from '../../../shared/getPageFiles/getExports.js';
6
6
  import { PageContextBuiltInServerInternal } from '../../../shared/types.js';
@@ -9,7 +9,7 @@ type PageContextForUserConsumptionServerSide = PageContextBuiltInServerInternal
9
9
  /** @deprecated */
10
10
  url: string;
11
11
  urlPathname: string;
12
- urlParsed: PageContextUrlComputedPropsInternal['urlParsed'];
12
+ urlParsed: PageContextUrlInternal['urlParsed'];
13
13
  routeParams: Record<string, string>;
14
14
  Page: unknown;
15
15
  _pageId: string;
@@ -1,10 +1,10 @@
1
1
  export { preparePageContextForUserConsumptionServerSide };
2
2
  import { assert, isPlainObject, isObject } from '../utils.js';
3
3
  import { sortPageContext } from '../../../shared/sortPageContext.js';
4
- import { assertPageContextUrlComputedProps } from '../../../shared/addUrlComputedProps.js';
4
+ import { assertPageContextUrl } from '../../../shared/getPageContextUrlComputed.js';
5
5
  import { addIs404ToPageProps } from '../../../shared/addIs404ToPageProps.js';
6
6
  function preparePageContextForUserConsumptionServerSide(pageContext) {
7
- assertPageContextUrlComputedProps(pageContext);
7
+ assertPageContextUrl(pageContext);
8
8
  assert(isPlainObject(pageContext.routeParams));
9
9
  assert('Page' in pageContext);
10
10
  assert(isObject(pageContext.pageExports));
@@ -7,7 +7,7 @@ export type { RenderContext };
7
7
  export type { PageContextAfterRender };
8
8
  export type { PageContextInitEnhanced };
9
9
  import { type PageFile } from '../../../shared/getPageFiles.js';
10
- import { type PageContextUrlComputedPropsInternal } from '../../../shared/addUrlComputedProps.js';
10
+ import { type PageContextUrlInternal } from '../../../shared/getPageContextUrlComputed.js';
11
11
  import { HttpResponse } from './createHttpResponseObject.js';
12
12
  import { PageContext_loadUserFilesServerSide, type PageFiles } from './loadUserFilesServerSide.js';
13
13
  import type { PageConfigRuntime, PageConfigGlobalRuntime } from '../../../shared/page-configs/PageConfig.js';
@@ -24,7 +24,7 @@ declare function renderPageAlreadyRouted<PageContext extends {
24
24
  routeParams: Record<string, string>;
25
25
  errorWhileRendering: null | Error;
26
26
  _httpRequestId: number;
27
- } & PageContextInitEnhanced & PageContextUrlComputedPropsInternal & PageContext_loadUserFilesServerSide>(pageContext: PageContext): Promise<PageContext & PageContextAfterRender>;
27
+ } & PageContextInitEnhanced & PageContextUrlInternal & PageContext_loadUserFilesServerSide>(pageContext: PageContext): Promise<PageContext & PageContextAfterRender>;
28
28
  declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles & {
29
29
  routeParams: Record<string, string>;
30
30
  _pageId: string;
@@ -59,23 +59,17 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
59
59
  _urlRewrite: string | null;
60
60
  _urlHandler: ((url: string) => string) | null;
61
61
  isClientSideNavigation: boolean;
62
- } & import("../../../shared/addUrlComputedProps.js").PageContextUrlComputedPropsClient & {
63
- _urlRewrite: string | null;
64
62
  } & {
65
- headers: Record<string, string> | null;
63
+ urlParsed: import("../../../shared/getPageContextUrlComputed.js").Url;
64
+ urlPathname: string;
65
+ url: string;
66
66
  } & {
67
+ headers: Record<string, string> | null;
68
+ } & import("../../../shared/getPageFiles.js").PageContextExports & {
67
69
  Page: unknown;
68
70
  _isHtmlOnly: boolean;
69
71
  _passToClient: string[];
70
72
  _pageFilePathsLoaded: string[];
71
- source: import("../../../shared/getPageFiles/getExports.js").Source;
72
- sources: import("../../../shared/getPageFiles/getExports.js").Sources;
73
- from: import("../../../shared/getPageFiles/getExports.js").From;
74
- config: Record<string, unknown>;
75
- configEntries: import("../../../shared/getPageFiles/getExports.js").ConfigEntries;
76
- exports: Record<string, unknown>;
77
- exportsAll: import("../../../shared/getPageFiles/getExports.js").ExportsAll;
78
- pageExports: Record<string, unknown>;
79
73
  } & {
80
74
  __getPageAssets: () => Promise<import("./getPageAssets.js").PageAsset[]>;
81
75
  } & {
@@ -116,23 +110,17 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
116
110
  _urlRewrite: string | null;
117
111
  _urlHandler: ((url: string) => string) | null;
118
112
  isClientSideNavigation: boolean;
119
- } & import("../../../shared/addUrlComputedProps.js").PageContextUrlComputedPropsClient & {
120
- _urlRewrite: string | null;
121
113
  } & {
122
- headers: Record<string, string> | null;
114
+ urlParsed: import("../../../shared/getPageContextUrlComputed.js").Url;
115
+ urlPathname: string;
116
+ url: string;
123
117
  } & {
118
+ headers: Record<string, string> | null;
119
+ } & import("../../../shared/getPageFiles.js").PageContextExports & {
124
120
  Page: unknown;
125
121
  _isHtmlOnly: boolean;
126
122
  _passToClient: string[];
127
123
  _pageFilePathsLoaded: string[];
128
- source: import("../../../shared/getPageFiles/getExports.js").Source;
129
- sources: import("../../../shared/getPageFiles/getExports.js").Sources;
130
- from: import("../../../shared/getPageFiles/getExports.js").From;
131
- config: Record<string, unknown>;
132
- configEntries: import("../../../shared/getPageFiles/getExports.js").ConfigEntries;
133
- exports: Record<string, unknown>;
134
- exportsAll: import("../../../shared/getPageFiles/getExports.js").ExportsAll;
135
- pageExports: Record<string, unknown>;
136
124
  } & {
137
125
  __getPageAssets: () => Promise<import("./getPageAssets.js").PageAsset[]>;
138
126
  } & {
@@ -174,23 +162,17 @@ declare function prerender404Page(renderContext: RenderContext, pageContextInit_
174
162
  _urlRewrite: string | null;
175
163
  _urlHandler: ((url: string) => string) | null;
176
164
  isClientSideNavigation: boolean;
177
- } & import("../../../shared/addUrlComputedProps.js").PageContextUrlComputedPropsClient & {
178
- _urlRewrite: string | null;
179
165
  } & {
180
- headers: Record<string, string> | null;
166
+ urlParsed: import("../../../shared/getPageContextUrlComputed.js").Url;
167
+ urlPathname: string;
168
+ url: string;
181
169
  } & {
170
+ headers: Record<string, string> | null;
171
+ } & import("../../../shared/getPageFiles.js").PageContextExports & {
182
172
  Page: unknown;
183
173
  _isHtmlOnly: boolean;
184
174
  _passToClient: string[];
185
175
  _pageFilePathsLoaded: string[];
186
- source: import("../../../shared/getPageFiles/getExports.js").Source;
187
- sources: import("../../../shared/getPageFiles/getExports.js").Sources;
188
- from: import("../../../shared/getPageFiles/getExports.js").From;
189
- config: Record<string, unknown>;
190
- configEntries: import("../../../shared/getPageFiles/getExports.js").ConfigEntries;
191
- exports: Record<string, unknown>;
192
- exportsAll: import("../../../shared/getPageFiles/getExports.js").ExportsAll;
193
- pageExports: Record<string, unknown>;
194
176
  } & {
195
177
  __getPageAssets: () => Promise<import("./getPageAssets.js").PageAsset[]>;
196
178
  } & {
@@ -231,23 +213,17 @@ declare function prerender404Page(renderContext: RenderContext, pageContextInit_
231
213
  _urlRewrite: string | null;
232
214
  _urlHandler: ((url: string) => string) | null;
233
215
  isClientSideNavigation: boolean;
234
- } & import("../../../shared/addUrlComputedProps.js").PageContextUrlComputedPropsClient & {
235
- _urlRewrite: string | null;
236
216
  } & {
237
- headers: Record<string, string> | null;
217
+ urlParsed: import("../../../shared/getPageContextUrlComputed.js").Url;
218
+ urlPathname: string;
219
+ url: string;
238
220
  } & {
221
+ headers: Record<string, string> | null;
222
+ } & import("../../../shared/getPageFiles.js").PageContextExports & {
239
223
  Page: unknown;
240
224
  _isHtmlOnly: boolean;
241
225
  _passToClient: string[];
242
226
  _pageFilePathsLoaded: string[];
243
- source: import("../../../shared/getPageFiles/getExports.js").Source;
244
- sources: import("../../../shared/getPageFiles/getExports.js").Sources;
245
- from: import("../../../shared/getPageFiles/getExports.js").From;
246
- config: Record<string, unknown>;
247
- configEntries: import("../../../shared/getPageFiles/getExports.js").ConfigEntries;
248
- exports: Record<string, unknown>;
249
- exportsAll: import("../../../shared/getPageFiles/getExports.js").ExportsAll;
250
- pageExports: Record<string, unknown>;
251
227
  } & {
252
228
  __getPageAssets: () => Promise<import("./getPageAssets.js").PageAsset[]>;
253
229
  } & {
@@ -268,8 +244,7 @@ declare function getPageContextInitEnhanced(pageContextInit: {
268
244
  urlOriginal: string;
269
245
  headersOriginal?: unknown;
270
246
  headers?: unknown;
271
- }, renderContext: RenderContext, { urlComputedPropsNonEnumerable, ssr: { urlRewrite, urlHandler, isClientSideNavigation } }?: {
272
- urlComputedPropsNonEnumerable?: boolean;
247
+ }, renderContext: RenderContext, { ssr: { urlRewrite, urlHandler, isClientSideNavigation } }?: {
273
248
  ssr?: {
274
249
  urlRewrite: null | string;
275
250
  urlHandler: null | ((url: string) => string);
@@ -298,8 +273,10 @@ declare function getPageContextInitEnhanced(pageContextInit: {
298
273
  _urlRewrite: string | null;
299
274
  _urlHandler: ((url: string) => string) | null;
300
275
  isClientSideNavigation: boolean;
301
- } & import("../../../shared/addUrlComputedProps.js").PageContextUrlComputedPropsClient & {
302
- _urlRewrite: string | null;
276
+ } & {
277
+ urlParsed: import("../../../shared/getPageContextUrlComputed.js").Url;
278
+ urlPathname: string;
279
+ url: string;
303
280
  } & {
304
281
  headers: Record<string, string> | null;
305
282
  };
@@ -8,7 +8,7 @@ import { getHtmlString } from '../html/renderHtml.js';
8
8
  import { getPageFilesAll } from '../../../shared/getPageFiles.js';
9
9
  import { assert, assertUsage, assertWarning, hasProp, normalizeHeaders, objectAssign } from '../utils.js';
10
10
  import { serializePageContextClientSide } from '../html/serializePageContextClientSide.js';
11
- import { addUrlComputedProps } from '../../../shared/addUrlComputedProps.js';
11
+ import { getPageContextUrlComputed } from '../../../shared/getPageContextUrlComputed.js';
12
12
  import { getGlobalContext } from '../globalContext.js';
13
13
  import { createHttpResponseObject, createHttpResponsePageContextJson } from './createHttpResponseObject.js';
14
14
  import { loadUserFilesServerSide } from './loadUserFilesServerSide.js';
@@ -21,7 +21,6 @@ import { executeGuardHook } from '../../../shared/route/executeGuardHook.js';
21
21
  import { loadPageRoutes } from '../../../shared/route/loadPageRoutes.js';
22
22
  import pc from '@brillout/picocolors';
23
23
  import { isServerSideError } from '../../../shared/misc/isServerSideError.js';
24
- import { assertV1Design } from '../../shared/assertV1Design.js';
25
24
  async function renderPageAlreadyRouted(pageContext) {
26
25
  // pageContext._pageId can either be the:
27
26
  // - ID of the page matching the routing, or the
@@ -116,7 +115,7 @@ async function prerender404Page(renderContext, pageContextInit_) {
116
115
  objectAssign(pageContext, await loadUserFilesServerSide(pageContext));
117
116
  return prerenderPage(pageContext);
118
117
  }
119
- function getPageContextInitEnhanced(pageContextInit, renderContext, { urlComputedPropsNonEnumerable = false, ssr: { urlRewrite, urlHandler, isClientSideNavigation } = {
118
+ function getPageContextInitEnhanced(pageContextInit, renderContext, { ssr: { urlRewrite, urlHandler, isClientSideNavigation } = {
120
119
  urlRewrite: null,
121
120
  urlHandler: null,
122
121
  isClientSideNavigation: false
@@ -144,7 +143,8 @@ function getPageContextInitEnhanced(pageContextInit, renderContext, { urlCompute
144
143
  isClientSideNavigation
145
144
  });
146
145
  // pageContext.urlParsed
147
- addUrlComputedProps(pageContextInitEnhanced, !urlComputedPropsNonEnumerable);
146
+ const pageContextUrlComputed = getPageContextUrlComputed(pageContextInitEnhanced);
147
+ objectAssign(pageContextInitEnhanced, pageContextUrlComputed);
148
148
  // pageContext.headers
149
149
  {
150
150
  let headers;
@@ -170,7 +170,8 @@ async function getRenderContext() {
170
170
  const globalContext = getGlobalContext();
171
171
  const { pageFilesAll, allPageIds, pageConfigs, pageConfigGlobal } = await getPageFilesAll(false, globalContext.isProduction);
172
172
  const { pageRoutes, onBeforeRouteHook } = await loadPageRoutes(pageFilesAll, pageConfigs, pageConfigGlobal, allPageIds);
173
- assertV1Design(pageFilesAll.length > 0, pageConfigs, pageFilesAll);
173
+ // We assume assertV1Design() was already called at build-time
174
+ assert(pageFilesAll.length === 0 || pageConfigs.length === 0);
174
175
  const renderContext = {
175
176
  pageFilesAll: pageFilesAll,
176
177
  pageConfigs,
@@ -1,4 +1,4 @@
1
1
  export { assertV1Design };
2
2
  import { PageFile } from '../../shared/getPageFiles.js';
3
- import type { PageConfigBuildTime, PageConfigRuntime } from '../../shared/page-configs/PageConfig.js';
4
- declare function assertV1Design(isOldDesign: boolean, pageConfigs: (PageConfigRuntime | PageConfigBuildTime)[], pageFilesAll?: PageFile[]): void;
3
+ import type { PageConfigBuildTime } from '../../shared/page-configs/PageConfig.js';
4
+ declare function assertV1Design(isOldDesign: boolean, pageConfigs: PageConfigBuildTime[], pageFilesAll?: PageFile[]): void;
@@ -1,5 +1,4 @@
1
1
  export { assertV1Design };
2
- import { getConfigValueFilePathToShowToUser } from '../../shared/page-configs/helpers.js';
3
2
  import { assert, assertUsage, assertWarning, isNotNullish, unique } from './utils.js';
4
3
  function assertV1Design(isOldDesign, pageConfigs, pageFilesAll) {
5
4
  const isV1Design = pageConfigs.length > 0;
@@ -9,10 +8,10 @@ function assertV1Design(isOldDesign, pageConfigs, pageFilesAll) {
9
8
  assert(pageFilesAll.length > 0);
10
9
  const indent = '- ';
11
10
  const filesV1 = unique(pageConfigs
12
- .map((p) => Object.values(p.configValues)
13
- .map((c) => getConfigValueFilePathToShowToUser(c.definedAtData))
11
+ .map((p) => Object.values(p.configValueSources).map((sources) => sources
12
+ .map((c) => c.definedAtFilePath.filePathAbsoluteUserRootDir)
14
13
  .filter(isNotNullish)
15
- .map((filePathToShowToUser) => indent + filePathToShowToUser))
14
+ .map((filePathToShowToUser) => indent + filePathToShowToUser)))
16
15
  .flat(2));
17
16
  const filesOld = pageFilesAll.map((p) => indent + p.filePath);
18
17
  lines.push(...['V1 design files:', ...filesV1, 'Old design files:', ...filesOld]);
@@ -1,9 +1,9 @@
1
- export { addUrlComputedProps };
2
- export { assertPageContextUrlComputedProps };
3
- export type { PageContextUrlComputedPropsInternal };
4
- export type { PageContextUrlComputedPropsClient };
5
- export type { PageContextUrlComputedPropsServer };
6
- export type { PageContextUrlSources };
1
+ export { getPageContextUrlComputed };
2
+ export { assertPageContextUrl };
3
+ export type { PageContextUrlInternal };
4
+ export type { PageContextUrlClient };
5
+ export type { PageContextUrlServer };
6
+ export type { PageContextUrlSource };
7
7
  export type { Url };
8
8
  type Url = {
9
9
  /** The URL origin, e.g. `https://example.com` of `https://example.com/product/42?details=yes#reviews` */
@@ -27,23 +27,24 @@ type Url = {
27
27
  /** @deprecated */
28
28
  searchString: null | string;
29
29
  };
30
- type PageContextUrlComputedPropsClient = {
30
+ type PageContextUrlComputed = {
31
+ /** Parsed information about the current URL */
32
+ urlParsed: Url;
33
+ /** The URL pathname, e.g. `/product/42` of `https://example.com/product/42?details=yes#reviews` */
34
+ urlPathname: string;
31
35
  /** @deprecated */
32
36
  url: string;
37
+ };
38
+ type PageContextUrl = {
33
39
  /** The URL of the HTTP request */
34
40
  urlOriginal: string;
35
- /** The URL pathname, e.g. `/product/42` of `https://example.com/product/42?details=yes#reviews` */
36
- urlPathname: string;
37
- /** Parsed information about the current URL */
38
- urlParsed: Url;
39
- };
40
- /** For Vike internal use */
41
- type PageContextUrlComputedPropsInternal = PageContextUrlComputedPropsClient & {
41
+ } & PageContextUrlComputed;
42
+ type PageContextUrlInternal = PageContextUrl & {
42
43
  _urlRewrite: string | null;
43
44
  };
44
- type HashProps = 'hash' | 'hashString' | 'hashOriginal';
45
- type PageContextUrlComputedPropsServer = PageContextUrlComputedPropsClient & {
46
- urlParsed: Omit<PageContextUrlComputedPropsClient['urlParsed'], HashProps> & {
45
+ type PageContextUrlClient = PageContextUrl;
46
+ type PageContextUrlServer = PageContextUrl & {
47
+ urlParsed: Omit<PageContextUrl['urlParsed'], HashProps> & {
47
48
  /** Only available on the client-side */
48
49
  hash: '';
49
50
  /** Only available on the client-side */
@@ -52,14 +53,15 @@ type PageContextUrlComputedPropsServer = PageContextUrlComputedPropsClient & {
52
53
  hashOriginal: null;
53
54
  };
54
55
  };
55
- declare function addUrlComputedProps<PageContext extends Record<string, unknown> & PageContextUrlSources>(pageContext: PageContext, enumerable?: boolean): asserts pageContext is PageContext & PageContextUrlComputedPropsInternal;
56
- type PageContextUrlSources = {
56
+ type HashProps = 'hash' | 'hashString' | 'hashOriginal';
57
+ declare function getPageContextUrlComputed(pageContext: PageContextUrlSource): PageContextUrlComputed;
58
+ type PageContextUrlSource = {
57
59
  urlOriginal: string;
58
60
  urlLogical?: string;
59
61
  _urlRewrite: string | null;
60
62
  _baseServer: string;
61
63
  _urlHandler: null | ((url: string) => string);
62
64
  };
63
- declare function assertPageContextUrlComputedProps(pageContext: {
65
+ declare function assertPageContextUrl(pageContext: {
64
66
  urlOriginal: string;
65
- } & PageContextUrlComputedPropsClient): void;
67
+ } & PageContextUrlClient): void;