vike 0.4.143 → 0.4.144-commit-68c730d

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 (187) hide show
  1. package/dist/cjs/node/plugin/index.js +2 -2
  2. package/dist/cjs/node/plugin/plugins/buildConfig.js +1 -1
  3. package/dist/cjs/node/plugin/plugins/config/index.js +1 -1
  4. package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +31 -30
  5. package/dist/cjs/node/plugin/plugins/importUserCode/generateEagerImport.js +19 -8
  6. package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +19 -10
  7. package/dist/cjs/node/plugin/plugins/importUserCode/index.js +4 -4
  8. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getFilePathToShowToUser.js +7 -1
  9. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +4 -4
  10. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +251 -209
  11. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +11 -35
  12. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +60 -95
  13. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/helpers.js +12 -5
  14. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/isRuntimeEnvMatch.js +18 -0
  15. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/replaceImportStatements.js +25 -25
  16. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/transpileAndExecuteFile.js +25 -24
  17. package/dist/cjs/node/plugin/shared/findPageFiles.js +2 -1
  18. package/dist/cjs/node/plugin/shared/{getConfigValueSource.js → getConfigValueSourcesRelevant.js} +1 -12
  19. package/dist/cjs/node/plugin/shared/loggerNotProd.js +1 -1
  20. package/dist/cjs/node/plugin/utils.js +2 -3
  21. package/dist/cjs/node/prerender/runPrerender.js +18 -20
  22. package/dist/cjs/node/runtime/html/injectAssets/getHtmlTags.js +1 -1
  23. package/dist/cjs/node/runtime/renderPage/analyzePage.js +2 -2
  24. package/dist/cjs/node/runtime/renderPage/loadPageFilesServerSide.js +2 -2
  25. package/dist/cjs/node/runtime/renderPage/log404/index.js +10 -5
  26. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +3 -2
  27. package/dist/cjs/node/runtime/renderPage.js +1 -1
  28. package/dist/cjs/node/shared/getClientEntryFilePath.js +1 -7
  29. package/dist/cjs/shared/assertPageContextProvidedByUser.js +1 -1
  30. package/dist/cjs/shared/error-page.js +1 -1
  31. package/dist/cjs/shared/getPageFiles/getExports.js +8 -11
  32. package/dist/cjs/shared/getPageFiles/parseGlobResults.js +10 -44
  33. package/dist/cjs/shared/hooks/getHook.js +3 -1
  34. package/dist/cjs/shared/page-configs/assertExports.js +60 -0
  35. package/dist/cjs/shared/page-configs/getExportPath.js +9 -10
  36. package/dist/cjs/shared/page-configs/loadConfigValues.js +18 -0
  37. package/dist/cjs/shared/page-configs/serialize/PageConfigSerialized.js +2 -0
  38. package/dist/cjs/shared/page-configs/serialize/assertPageConfigs.js +19 -0
  39. package/dist/cjs/shared/page-configs/serialize/parseConfigValuesImported.js +56 -0
  40. package/dist/cjs/shared/page-configs/serialize/parsePageConfigs.js +65 -0
  41. package/dist/cjs/shared/page-configs/serialize/serializeConfigValue.js +58 -0
  42. package/dist/cjs/shared/page-configs/utils.js +65 -42
  43. package/dist/cjs/shared/route/loadPageRoutes.js +12 -15
  44. package/dist/cjs/shared/route/resolveRedirects.js +1 -1
  45. package/dist/cjs/shared/route/resolveRouteFunction.js +1 -0
  46. package/dist/cjs/shared/utils.js +0 -1
  47. package/dist/cjs/utils/getFilePathAbsolute.js +11 -11
  48. package/dist/cjs/utils/getOutDirs.js +25 -18
  49. package/dist/cjs/utils/getValuePrintable.js +1 -1
  50. package/dist/cjs/utils/objectAssign.js +3 -1
  51. package/dist/cjs/utils/parseUrl.js +1 -1
  52. package/dist/cjs/utils/projectInfo.js +1 -1
  53. package/dist/cjs/utils/{resolve.js → requireResolve.js} +3 -3
  54. package/dist/cjs/utils/warnIfErrorIsNotObject.js +1 -1
  55. package/dist/esm/__internal/index.d.ts +3 -3
  56. package/dist/esm/client/client-routing-runtime/createPageContext.d.ts +2 -2
  57. package/dist/esm/client/client-routing-runtime/getPageContext.d.ts +2 -2
  58. package/dist/esm/client/client-routing-runtime/getPageId.d.ts +2 -2
  59. package/dist/esm/client/client-routing-runtime/useClientRouter.js +3 -3
  60. package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +1 -1
  61. package/dist/esm/client/shared/executeOnRenderClientHook.d.ts +2 -2
  62. package/dist/esm/client/shared/loadPageFilesClientSide.d.ts +2 -2
  63. package/dist/esm/client/shared/loadPageFilesClientSide.js +2 -2
  64. package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.d.ts +2 -2
  65. package/dist/esm/node/plugin/index.js +3 -2
  66. package/dist/esm/node/plugin/plugins/buildConfig.js +2 -2
  67. package/dist/esm/node/plugin/plugins/config/index.js +2 -2
  68. package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +31 -30
  69. package/dist/esm/node/plugin/plugins/importUserCode/generateEagerImport.d.ts +13 -2
  70. package/dist/esm/node/plugin/plugins/importUserCode/generateEagerImport.js +19 -8
  71. package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +20 -11
  72. package/dist/esm/node/plugin/plugins/importUserCode/index.js +5 -5
  73. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getFilePathToShowToUser.d.ts +20 -3
  74. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getFilePathToShowToUser.js +7 -1
  75. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.d.ts +5 -4
  76. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +4 -4
  77. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +4 -4
  78. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +252 -210
  79. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.d.ts +1 -1
  80. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +11 -32
  81. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.d.ts +3 -3
  82. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +60 -95
  83. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/helpers.d.ts +3 -3
  84. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/helpers.js +12 -5
  85. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/isRuntimeEnvMatch.d.ts +7 -0
  86. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/isRuntimeEnvMatch.js +15 -0
  87. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/replaceImportStatements.d.ts +18 -6
  88. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/replaceImportStatements.js +25 -25
  89. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/transpileAndExecuteFile.d.ts +2 -2
  90. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/transpileAndExecuteFile.js +25 -24
  91. package/dist/esm/node/plugin/shared/findPageFiles.js +3 -2
  92. package/dist/esm/node/plugin/shared/{getConfigValueSource.d.ts → getConfigValueSourcesRelevant.d.ts} +0 -2
  93. package/dist/esm/node/plugin/shared/{getConfigValueSource.js → getConfigValueSourcesRelevant.js} +0 -11
  94. package/dist/esm/node/plugin/shared/loggerNotProd.js +2 -2
  95. package/dist/esm/node/plugin/utils.d.ts +1 -2
  96. package/dist/esm/node/plugin/utils.js +2 -3
  97. package/dist/esm/node/prerender/runPrerender.js +20 -22
  98. package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +1 -1
  99. package/dist/esm/node/runtime/html/injectAssets.d.ts +2 -2
  100. package/dist/esm/node/runtime/html/serializePageContextClientSide.d.ts +2 -2
  101. package/dist/esm/node/runtime/renderPage/analyzePage.d.ts +2 -2
  102. package/dist/esm/node/runtime/renderPage/analyzePage.js +2 -2
  103. package/dist/esm/node/runtime/renderPage/createHttpResponseObject.d.ts +2 -2
  104. package/dist/esm/node/runtime/renderPage/debugPageFiles.d.ts +2 -2
  105. package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.d.ts +2 -2
  106. package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.d.ts +2 -2
  107. package/dist/esm/node/runtime/renderPage/loadPageFilesServerSide.d.ts +2 -2
  108. package/dist/esm/node/runtime/renderPage/loadPageFilesServerSide.js +2 -2
  109. package/dist/esm/node/runtime/renderPage/log404/index.js +10 -5
  110. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +2 -2
  111. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +13 -13
  112. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +3 -2
  113. package/dist/esm/node/runtime/renderPage.js +1 -1
  114. package/dist/esm/node/shared/getClientEntryFilePath.d.ts +2 -2
  115. package/dist/esm/node/shared/getClientEntryFilePath.js +2 -8
  116. package/dist/esm/shared/addIs404ToPageProps.d.ts +2 -2
  117. package/dist/esm/shared/addUrlComputedProps.d.ts +4 -2
  118. package/dist/esm/shared/assertPageContextProvidedByUser.js +1 -1
  119. package/dist/esm/shared/error-page.d.ts +3 -3
  120. package/dist/esm/shared/error-page.js +1 -1
  121. package/dist/esm/shared/getPageFiles/analyzeClientSide.d.ts +2 -2
  122. package/dist/esm/shared/getPageFiles/getExports.d.ts +3 -4
  123. package/dist/esm/shared/getPageFiles/getExports.js +7 -10
  124. package/dist/esm/shared/getPageFiles/parseGlobResults.d.ts +3 -3
  125. package/dist/esm/shared/getPageFiles/parseGlobResults.js +9 -43
  126. package/dist/esm/shared/getPageFiles/setPageFiles.d.ts +3 -3
  127. package/dist/esm/shared/hooks/getHook.js +3 -1
  128. package/dist/esm/shared/page-configs/Config.d.ts +201 -14
  129. package/dist/esm/shared/page-configs/PageConfig.d.ts +80 -73
  130. package/dist/esm/shared/page-configs/assertExports.d.ts +6 -0
  131. package/dist/esm/shared/page-configs/assertExports.js +54 -0
  132. package/dist/esm/shared/page-configs/findPageConfig.d.ts +2 -2
  133. package/dist/esm/shared/page-configs/getExportPath.d.ts +1 -1
  134. package/dist/esm/shared/page-configs/getExportPath.js +9 -10
  135. package/dist/esm/shared/page-configs/loadConfigValues.d.ts +3 -0
  136. package/dist/esm/shared/page-configs/loadConfigValues.js +15 -0
  137. package/dist/esm/shared/page-configs/serialize/PageConfigSerialized.d.ts +32 -0
  138. package/dist/esm/shared/page-configs/serialize/PageConfigSerialized.js +1 -0
  139. package/dist/esm/shared/page-configs/serialize/assertPageConfigs.d.ts +5 -0
  140. package/dist/esm/shared/page-configs/serialize/assertPageConfigs.js +16 -0
  141. package/dist/esm/shared/page-configs/serialize/parseConfigValuesImported.d.ts +4 -0
  142. package/dist/esm/shared/page-configs/serialize/parseConfigValuesImported.js +50 -0
  143. package/dist/esm/shared/page-configs/serialize/parsePageConfigs.d.ts +7 -0
  144. package/dist/esm/shared/page-configs/serialize/parsePageConfigs.js +62 -0
  145. package/dist/esm/shared/page-configs/serialize/serializeConfigValue.d.ts +8 -0
  146. package/dist/esm/shared/page-configs/serialize/serializeConfigValue.js +52 -0
  147. package/dist/esm/shared/page-configs/utils.d.ts +21 -14
  148. package/dist/esm/shared/page-configs/utils.js +64 -41
  149. package/dist/esm/shared/route/executeGuardHook.d.ts +2 -2
  150. package/dist/esm/shared/route/index.d.ts +3 -3
  151. package/dist/esm/shared/route/loadPageRoutes.d.ts +2 -2
  152. package/dist/esm/shared/route/loadPageRoutes.js +13 -16
  153. package/dist/esm/shared/route/resolveRedirects.js +1 -1
  154. package/dist/esm/shared/route/resolveRouteFunction.js +1 -0
  155. package/dist/esm/shared/types.d.ts +8 -6
  156. package/dist/esm/shared/utils.d.ts +0 -1
  157. package/dist/esm/shared/utils.js +0 -1
  158. package/dist/esm/types/index.d.ts +2 -1
  159. package/dist/esm/utils/getFilePathAbsolute.d.ts +1 -1
  160. package/dist/esm/utils/getFilePathAbsolute.js +11 -11
  161. package/dist/esm/utils/getOutDirs.d.ts +0 -2
  162. package/dist/esm/utils/getOutDirs.js +24 -17
  163. package/dist/esm/utils/getValuePrintable.js +1 -1
  164. package/dist/esm/utils/objectAssign.js +3 -1
  165. package/dist/esm/utils/parseUrl.js +1 -1
  166. package/dist/esm/utils/projectInfo.d.ts +1 -1
  167. package/dist/esm/utils/projectInfo.js +1 -1
  168. package/dist/esm/utils/requireResolve.d.ts +2 -0
  169. package/dist/esm/utils/{resolve.js → requireResolve.js} +2 -2
  170. package/dist/esm/utils/warnIfErrorIsNotObject.js +1 -1
  171. package/package.json +2 -3
  172. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/isConfigEnvMatch.js +0 -13
  173. package/dist/cjs/shared/getPageFiles/assertPageConfigs.js +0 -19
  174. package/dist/cjs/shared/page-configs/loadPageCode.js +0 -63
  175. package/dist/cjs/utils/assertDefaultExport.js +0 -53
  176. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/isConfigEnvMatch.d.ts +0 -3
  177. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/isConfigEnvMatch.js +0 -10
  178. package/dist/esm/shared/getPageFiles/assertPageConfigs.d.ts +0 -5
  179. package/dist/esm/shared/getPageFiles/assertPageConfigs.js +0 -16
  180. package/dist/esm/shared/page-configs/loadPageCode.d.ts +0 -3
  181. package/dist/esm/shared/page-configs/loadPageCode.js +0 -57
  182. package/dist/esm/utils/assertDefaultExport.d.ts +0 -8
  183. package/dist/esm/utils/assertDefaultExport.js +0 -47
  184. package/dist/esm/utils/resolve.d.ts +0 -2
  185. /package/dist/cjs/shared/getPageFiles/{assertExports.js → assert_exports_old_design.js} +0 -0
  186. /package/dist/esm/shared/getPageFiles/{assertExports.d.ts → assert_exports_old_design.d.ts} +0 -0
  187. /package/dist/esm/shared/getPageFiles/{assertExports.js → assert_exports_old_design.js} +0 -0
@@ -1,27 +1,28 @@
1
1
  export { transpileAndExecuteFile };
2
2
  export { getConfigBuildErrorFormatted };
3
- export { getConfigExececutionErrorIntroMsg };
3
+ export { getConfigExecutionErrorIntroMsg as getConfigExecutionErrorIntroMsg };
4
4
  export { isTmpFile };
5
5
  import { build, formatMessages } from 'esbuild';
6
6
  import fs from 'fs';
7
7
  import path from 'path';
8
8
  import pc from '@brillout/picocolors';
9
9
  import { import_ } from '@brillout/import';
10
- import { assertPosixPath, getRandomId, assertIsNotProductionRuntime, assert, assertDefaultExportObject, unique, assertWarning, isObject, toPosixPath, assertUsage } from '../../../utils.js';
10
+ import { assertPosixPath, getRandomId, assertIsNotProductionRuntime, assert, unique, assertWarning, isObject, toPosixPath, assertUsage } from '../../../utils.js';
11
11
  import { isImportData, replaceImportStatements } from './replaceImportStatements.js';
12
12
  import { vikeConfigDependencies } from './getVikeConfig.js';
13
13
  import 'source-map-support/register.js';
14
14
  import { getFilePathToShowToUser } from './getFilePathToShowToUser.js';
15
+ import { assertExportsOfConfigFile } from '../../../../../shared/page-configs/assertExports.js';
15
16
  assertIsNotProductionRuntime();
16
17
  async function transpileAndExecuteFile(filePath, isValueFile, userRootDir) {
17
18
  const { code, fileImports } = await transpileFile(filePath, isValueFile, userRootDir);
18
- const { fileExports } = await executeFile(filePath, code, fileImports);
19
+ const { fileExports } = await executeFile(filePath, code, fileImports, isValueFile);
19
20
  return { fileExports };
20
21
  }
21
22
  async function transpileFile(filePath, isValueFile, userRootDir) {
22
- const { filePathAbsolute } = filePath;
23
- assertPosixPath(filePathAbsolute);
24
- vikeConfigDependencies.add(filePathAbsolute);
23
+ const { filePathAbsoluteFilesystem } = filePath;
24
+ assertPosixPath(filePathAbsoluteFilesystem);
25
+ vikeConfigDependencies.add(filePathAbsoluteFilesystem);
25
26
  let code = await transpileWithEsbuild(filePath, isValueFile, userRootDir);
26
27
  let fileImports = null;
27
28
  {
@@ -35,9 +36,9 @@ async function transpileFile(filePath, isValueFile, userRootDir) {
35
36
  }
36
37
  function transpileImports(codeOriginal, filePath, isValueFile) {
37
38
  // Do we need to remove the imports?
38
- const { filePathAbsolute } = filePath;
39
- assertPosixPath(filePathAbsolute);
40
- const isHeader = isHeaderFile(filePathAbsolute);
39
+ const { filePathAbsoluteFilesystem } = filePath;
40
+ assertPosixPath(filePathAbsoluteFilesystem);
41
+ const isHeader = isHeaderFile(filePathAbsoluteFilesystem);
41
42
  const isPageConfigFile = !isValueFile;
42
43
  if (!isHeader && !isPageConfigFile) {
43
44
  return null;
@@ -59,7 +60,7 @@ function transpileImports(codeOriginal, filePath, isValueFile) {
59
60
  return { code, fileImports };
60
61
  }
61
62
  async function transpileWithEsbuild(filePath, bundle, userRootDir) {
62
- const entryFilePath = filePath.filePathAbsolute;
63
+ const entryFilePath = filePath.filePathAbsoluteFilesystem;
63
64
  const entryFileDir = path.posix.dirname(entryFilePath);
64
65
  const options = {
65
66
  platform: 'node',
@@ -124,19 +125,19 @@ async function transpileWithEsbuild(filePath, bundle, userRootDir) {
124
125
  Object.keys(result.metafile.inputs).forEach((filePathRelative) => {
125
126
  filePathRelative = toPosixPath(filePathRelative);
126
127
  assertPosixPath(userRootDir);
127
- const filePathAbsolute = path.posix.join(userRootDir, filePathRelative);
128
- vikeConfigDependencies.add(filePathAbsolute);
128
+ const filePathAbsoluteFilesystem = path.posix.join(userRootDir, filePathRelative);
129
+ vikeConfigDependencies.add(filePathAbsoluteFilesystem);
129
130
  });
130
131
  }
131
132
  const code = result.outputFiles[0].text;
132
133
  assert(typeof code === 'string');
133
134
  return code;
134
135
  }
135
- async function executeFile(filePath, code, fileImports) {
136
- const { filePathAbsolute, filePathRelativeToUserRootDir } = filePath;
136
+ async function executeFile(filePath, code, fileImports, isValueFile) {
137
+ const { filePathAbsoluteFilesystem, filePathRelativeToUserRootDir } = filePath;
137
138
  // Alternative to using a temporary file: https://github.com/vitejs/vite/pull/13269
138
139
  // - But seems to break source maps, so I don't think it's worth it
139
- const filePathTmp = getFilePathTmp(filePathAbsolute);
140
+ const filePathTmp = getFilePathTmp(filePathAbsoluteFilesystem);
140
141
  fs.writeFileSync(filePathTmp, code);
141
142
  const clean = () => fs.unlinkSync(filePathTmp);
142
143
  let fileExports = {};
@@ -157,10 +158,10 @@ async function executeFile(filePath, code, fileImports) {
157
158
  // - import() returns `[Module: null prototype] { default: { onRenderClient: '...' }}`
158
159
  // - We don't need this special object
159
160
  fileExports = { ...fileExports };
160
- if (fileImports) {
161
+ if (fileImports && !isValueFile) {
161
162
  assert(filePathRelativeToUserRootDir !== undefined);
162
- const filePath = filePathRelativeToUserRootDir ?? filePathAbsolute;
163
- assertFileImports(fileImports, fileExports, filePath);
163
+ const filePathToShowToUser = filePathRelativeToUserRootDir ?? filePathAbsoluteFilesystem;
164
+ assertImportsAreReExported(fileImports, fileExports, filePathToShowToUser);
164
165
  }
165
166
  return { fileExports };
166
167
  }
@@ -185,7 +186,7 @@ async function formatBuildErr(err, filePath) {
185
186
  err[formatted] = `${msgIntro}\n${msgEsbuild}`;
186
187
  }
187
188
  const execErrIntroMsg = new WeakMap();
188
- function getConfigExececutionErrorIntroMsg(err) {
189
+ function getConfigExecutionErrorIntroMsg(err) {
189
190
  if (!isObject(err))
190
191
  return null;
191
192
  const errIntroMsg = execErrIntroMsg.get(err);
@@ -206,17 +207,17 @@ function isTmpFile(filePath) {
206
207
  const fileName = path.posix.basename(filePath);
207
208
  return fileName.startsWith(tmpPrefix);
208
209
  }
209
- function assertFileImports(fileImports, fileExports, filePath) {
210
- assertDefaultExportObject(fileExports, filePath);
210
+ function assertImportsAreReExported(fileImports, fileExports, filePathToShowToUser) {
211
+ assertExportsOfConfigFile(fileExports, filePathToShowToUser);
211
212
  const exportedStrings = getExportedStrings(fileExports.default);
212
213
  Object.values(exportedStrings).forEach((exportVal) => {
213
214
  if (typeof exportVal !== 'string')
214
215
  return;
215
216
  if (!isImportData(exportVal))
216
217
  return;
217
- const importDataString = exportVal;
218
+ const importString = exportVal;
218
219
  fileImports.forEach((fileImport) => {
219
- if (fileImport.importDataString === importDataString) {
220
+ if (fileImport.importString === importString) {
220
221
  fileImport.isReExported = true;
221
222
  }
222
223
  });
@@ -228,7 +229,7 @@ function assertFileImports(fileImports, fileExports, filePath) {
228
229
  const importNamesUnused = fileImportsUnused.map((fi) => pc.cyan(fi.importLocalName)).join(', ');
229
230
  const singular = fileImportsUnused.length === 1;
230
231
  assertUsage(fileImportsUnused.length === 0, [
231
- `${filePath} imports the following:`,
232
+ `${filePathToShowToUser} imports the following:`,
232
233
  ...importStatements.map((s) => pc.cyan(` ${s}`)),
233
234
  `But the import${singular ? '' : 's'} ${importNamesUnused} ${singular ? "isn't" : "aren't"} re-exported at ${pc.cyan('export default { ... }')} and therefore ${singular ? 'has' : 'have'} no effect, see explanation at https://vike.dev/header-file`
234
235
  ].join('\n'));
@@ -1,11 +1,12 @@
1
1
  export { findPageFiles };
2
2
  import glob from 'fast-glob';
3
- import { assertWarning, toPosixPath, scriptFileExtensions } from '../utils.js';
3
+ import { assertWarning, toPosixPath, scriptFileExtensions, getOutDirs } from '../utils.js';
4
4
  import pc from '@brillout/picocolors';
5
5
  async function findPageFiles(config, fileTypes, isDev) {
6
6
  const cwd = config.root;
7
+ const { outDirRoot } = getOutDirs(config);
7
8
  const timeBase = new Date().getTime();
8
- let pageFiles = await glob(fileTypes.map((fileType) => `**/*${fileType}.${scriptFileExtensions}`), { ignore: ['**/node_modules/**'], cwd, dot: false });
9
+ let pageFiles = await glob(fileTypes.map((fileType) => `**/*${fileType}.${scriptFileExtensions}`), { ignore: ['**/node_modules/**', `${outDirRoot}/**`], cwd, dot: false });
9
10
  pageFiles = pageFiles.map((p) => '/' + toPosixPath(p));
10
11
  const time = new Date().getTime() - timeBase;
11
12
  if (isDev) {
@@ -1,7 +1,5 @@
1
- export { getConfigValueSource };
2
1
  export { getConfigValueSourcesRelevant };
3
2
  import type { ConfigValueSource, PageConfigBuildTime } from '../../../shared/page-configs/PageConfig.js';
4
- declare function getConfigValueSource(pageConfig: PageConfigBuildTime, configName: string): null | ConfigValueSource;
5
3
  declare function getConfigValueSourcesRelevant(pageConfig: PageConfigBuildTime): (ConfigValueSource & {
6
4
  configName: string;
7
5
  })[];
@@ -1,17 +1,6 @@
1
- export { getConfigValueSource };
2
1
  export { getConfigValueSourcesRelevant };
3
2
  import { assert, assertIsNotBrowser } from '../../shared/utils.js';
4
3
  assertIsNotBrowser();
5
- function getConfigValueSource(pageConfig, configName) {
6
- // Doesn't exist on the client-side, but we are on the server-side as attested by assertIsNotBrowser()
7
- assert(pageConfig.configValueSources);
8
- const sources = pageConfig.configValueSources[configName];
9
- if (!sources)
10
- return null;
11
- const configValueSource = sources[0];
12
- assert(configValueSource);
13
- return configValueSource;
14
- }
15
4
  function getConfigValueSourcesRelevant(pageConfig) {
16
5
  const configValueSourcesRelevant = Object.entries(pageConfig.configValueSources).map(([configName, sources]) => {
17
6
  const configValueSource = sources[0];
@@ -18,7 +18,7 @@ import { assert, assertIsNotProductionRuntime, getAssertErrMsg, isUserHookError,
18
18
  import { getHttpRequestAsyncStore } from './getHttpRequestAsyncStore.js';
19
19
  import { isErrorDebug } from './isErrorDebug.js';
20
20
  import { isErrorWithCodeSnippet, getPrettyErrorWithCodeSnippet } from './loggerNotProd/errorWithCodeSnippet.js';
21
- import { getConfigExececutionErrorIntroMsg, getConfigBuildErrorFormatted } from '../plugins/importUserCode/v1-design/transpileAndExecuteFile.js';
21
+ import { getConfigExecutionErrorIntroMsg, getConfigBuildErrorFormatted } from '../plugins/importUserCode/v1-design/transpileAndExecuteFile.js';
22
22
  import { logWithVikeTag, logWithViteTag, logDirectly, isFirstLog, screenHasErrors, clearScreen } from './loggerNotProd/log.js';
23
23
  import pc from '@brillout/picocolors';
24
24
  import { setAlreadyLogged } from '../../runtime/renderPage/isNewError.js';
@@ -108,7 +108,7 @@ function logConfigError(err) {
108
108
  warnIfErrorIsNotObject(err);
109
109
  const category = getConfigCategory();
110
110
  {
111
- const errIntroMsg = getConfigExececutionErrorIntroMsg(err);
111
+ const errIntroMsg = getConfigExecutionErrorIntroMsg(err);
112
112
  if (errIntroMsg) {
113
113
  assert(stripAnsi(errIntroMsg).startsWith('Failed to execute'));
114
114
  logWithVikeTag(errIntroMsg, 'error', category);
@@ -2,8 +2,7 @@ export * from '../runtime/utils.js';
2
2
  export * from '../../utils/viteIsSSR.js';
3
3
  export * from '../../utils/getFilePathAbsolute.js';
4
4
  export * from '../../utils/getDependencyPackageJson.js';
5
- export * from '../../utils/resolve.js';
6
- export * from '../../utils/assertDefaultExport.js';
5
+ export * from '../../utils/requireResolve.js';
7
6
  export * from '../../utils/arrayIncludes.js';
8
7
  export * from '../../utils/isDev.js';
9
8
  export * from '../../utils/objectKeys.js';
@@ -1,4 +1,4 @@
1
- // Utils needed by vike's Vite plugin.
1
+ // Utils needed by Vike's Vite plugin.
2
2
  // We assume all runtime entries will load this utils.ts file
3
3
  import { onLoad } from './onLoad.js';
4
4
  onLoad();
@@ -8,8 +8,7 @@ export * from '../runtime/utils.js';
8
8
  export * from '../../utils/viteIsSSR.js';
9
9
  export * from '../../utils/getFilePathAbsolute.js';
10
10
  export * from '../../utils/getDependencyPackageJson.js';
11
- export * from '../../utils/resolve.js';
12
- export * from '../../utils/assertDefaultExport.js';
11
+ export * from '../../utils/requireResolve.js';
13
12
  export * from '../../utils/arrayIncludes.js';
14
13
  export * from '../../utils/isDev.js';
15
14
  export * from '../../utils/objectKeys.js';
@@ -5,7 +5,7 @@ export { prerenderForceExit };
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_prerender, hasPropertyGetter, assertPosixPath, urlToFile, executeHook, isPlainObject, setNodeEnvToProduction } from './utils.js';
8
+ import { assert, assertUsage, assertWarning, hasProp, projectInfo, objectAssign, isObjectWithKeys, isCallable, getOutDirs, hasPropertyGetter, assertPosixPath, urlToFile, executeHook, isPlainObject, setNodeEnvToProduction } from './utils.js';
9
9
  import { pLimit } from '../../utils/pLimit.js';
10
10
  import { prerenderPage, prerender404Page, getRenderContext, getPageContextInitEnhanced } from '../runtime/renderPage/renderPageAlreadyRouted.js';
11
11
  import pc from '@brillout/picocolors';
@@ -16,8 +16,8 @@ import { getConfigVike } from '../shared/getConfigVike.js';
16
16
  import { getPageFilesServerSide } from '../../shared/getPageFiles.js';
17
17
  import { getPageContextRequestUrl } from '../../shared/getPageContextRequestUrl.js';
18
18
  import { getUrlFromRouteString } from '../../shared/route/resolveRouteString.js';
19
- import { getConfigDefinedAtInfo, getConfigValue } from '../../shared/page-configs/utils.js';
20
- import { loadPageCode } from '../../shared/page-configs/loadPageCode.js';
19
+ import { getConfigValue, getConfigValueFilePathToShowToUser, getHookFilePathToShowToUser } from '../../shared/page-configs/utils.js';
20
+ import { loadConfigValues } from '../../shared/page-configs/loadConfigValues.js';
21
21
  import { isErrorPage } from '../../shared/error-page.js';
22
22
  import { addUrlComputedProps } from '../../shared/addUrlComputedProps.js';
23
23
  import { assertPathIsFilesystemAbsolute } from '../../utils/assertPathIsFilesystemAbsolute.js';
@@ -44,7 +44,7 @@ async function runPrerender(options, manuallyTriggered) {
44
44
  const viteConfig = await resolveConfig(options.viteConfig || {}, 'vike pre-rendering', 'production');
45
45
  assertLoadedConfig(viteConfig, options);
46
46
  const configVike = await getConfigVike(viteConfig);
47
- const { outDirClient, outDirRoot } = getOutDirs_prerender(viteConfig);
47
+ const { outDirClient, outDirRoot } = getOutDirs(viteConfig);
48
48
  const { root } = viteConfig;
49
49
  const prerenderConfig = configVike.prerender;
50
50
  if (!prerenderConfig) {
@@ -87,12 +87,13 @@ async function collectDoNoPrerenderList(renderContext, doNotPrerenderList, concu
87
87
  const configName = 'prerender';
88
88
  const configValue = getConfigValue(pageConfig, configName, 'boolean');
89
89
  if (configValue?.value === false) {
90
- const definedAtInfo = getConfigDefinedAtInfo(pageConfig, configName);
90
+ const configValueFilePathToShowToUser = getConfigValueFilePathToShowToUser(configValue);
91
+ assert(configValueFilePathToShowToUser);
91
92
  doNotPrerenderList.push({
92
93
  pageId: pageConfig.pageId,
93
94
  setByConfigName: 'prerender',
94
95
  setByConfigValue: false,
95
- setByConfigFile: definedAtInfo.filePath
96
+ setByConfigFile: configValueFilePathToShowToUser
96
97
  });
97
98
  }
98
99
  });
@@ -143,13 +144,12 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, renderContext,
143
144
  // V1 design
144
145
  await Promise.all(renderContext.pageConfigs.map((pageConfig) => concurrencyLimit(async () => {
145
146
  const hookName = 'onBeforePrerenderStart';
146
- const pageConfigLoaded = await loadPageCode(pageConfig, false);
147
+ const pageConfigLoaded = await loadConfigValues(pageConfig, false);
147
148
  const configValue = getConfigValue(pageConfigLoaded, hookName);
148
149
  if (!configValue)
149
150
  return;
150
151
  const hookFn = configValue.value;
151
- const definedAtInfo = getConfigDefinedAtInfo(pageConfigLoaded, hookName);
152
- const hookFilePath = definedAtInfo.filePath;
152
+ const hookFilePath = getHookFilePathToShowToUser(configValue);
153
153
  assert(hookFilePath);
154
154
  assertHookFn(hookFn, { hookName, hookFilePath });
155
155
  onBeforePrerenderStartHooks.push({
@@ -281,20 +281,18 @@ async function callOnPrerenderStartHook(prerenderContext, renderContext) {
281
281
  let onPrerenderStartHook;
282
282
  // V1 design
283
283
  if (renderContext.pageConfigs.length > 0) {
284
- const configValueSource = renderContext.pageConfigGlobal.onPrerenderStart;
285
- if (configValueSource) {
286
- const hookFn = configValueSource.value;
287
- assert(!configValueSource.isComputed);
288
- const hookFilePath = configValueSource.definedAtInfo.filePath;
289
- assert(hookFn);
284
+ const { pageConfigGlobal } = renderContext;
285
+ const configValue = pageConfigGlobal.configValues.onPrerenderStart;
286
+ if (configValue?.value) {
287
+ const { value: hookFn } = configValue;
288
+ // config.onPrerenderStart isn't a computed nor a cumulative config => definedAtInfo should always be defined
289
+ const hookFilePath = getHookFilePathToShowToUser(configValue);
290
290
  assert(hookFilePath);
291
- if (hookFn) {
292
- onPrerenderStartHook = {
293
- hookFn,
294
- hookName: 'onPrerenderStart',
295
- hookFilePath
296
- };
297
- }
291
+ onPrerenderStartHook = {
292
+ hookFn,
293
+ hookName: 'onPrerenderStart',
294
+ hookFilePath
295
+ };
298
296
  }
299
297
  }
300
298
  // Old design
@@ -106,7 +106,7 @@ async function getHtmlTags(pageContext, injectToStream, injectFilter) {
106
106
  if (!isHtmlOnly) {
107
107
  // Don't allow the user to manipulate with injectFilter(): injecting <script type="application/json"> before the stream can break the app when:
108
108
  // - using https://vike.dev/stream#initial-data-after-stream-end
109
- // - `pageContext` is modified during the stream, e.g. /examples/vue-pinia which uses https://vuejs.org/api/composition-api-lifecycle.html#onserverprefetch
109
+ // - `pageContext` is modified during the stream, e.g. https://github.com/brillout/vike-with-pinia which uses https://vuejs.org/api/composition-api-lifecycle.html#onserverprefetch
110
110
  // The <script> tags are handled separately by vike down below.
111
111
  htmlTags.push({
112
112
  // Needs to be called after `resolvePageContextPromise()`
@@ -6,7 +6,7 @@ import type { PageAsset } from '../renderPage/getPageAssets.js';
6
6
  import type { HtmlPart } from './renderHtml.js';
7
7
  import { type PreloadFilter } from './injectAssets/getHtmlTags.js';
8
8
  import type { InjectToStream } from './stream/react-streaming.js';
9
- import type { PageConfig } from '../../../shared/page-configs/PageConfig.js';
9
+ import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
10
10
  import type { PageContextSerialization } from './serializePageContextClientSide.js';
11
11
  type PageContextInjectAssets = {
12
12
  urlPathname: string;
@@ -19,7 +19,7 @@ type PageContextInjectAssets = {
19
19
  hookName: 'onRenderHtml' | 'render';
20
20
  };
21
21
  _baseServer: string;
22
- _pageConfigs: PageConfig[];
22
+ _pageConfigs: PageConfigRuntime[];
23
23
  is404: null | boolean;
24
24
  } & PageContextSerialization;
25
25
  declare function injectHtmlTagsToString(htmlParts: HtmlPart[], pageContext: PageContextInjectAssets & {
@@ -1,12 +1,12 @@
1
1
  export { serializePageContextClientSide };
2
2
  export { serializePageContextAbort };
3
3
  export type { PageContextSerialization };
4
- import type { PageConfig } from '../../../shared/page-configs/PageConfig.js';
4
+ import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
5
5
  import type { UrlRedirect } from '../../../shared/route/abort.js';
6
6
  type PageContextSerialization = {
7
7
  _pageId: string;
8
8
  _passToClient: string[];
9
- _pageConfigs: PageConfig[];
9
+ _pageConfigs: PageConfigRuntime[];
10
10
  is404: null | boolean;
11
11
  pageProps?: Record<string, unknown>;
12
12
  _isError?: true;
@@ -1,5 +1,5 @@
1
1
  export { analyzePage };
2
2
  import type { PageFile } from '../../../shared/getPageFiles/getPageFileObject.js';
3
- import type { PageConfig } from '../../../shared/page-configs/PageConfig.js';
3
+ import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
4
4
  import { type AnalysisResult } from '../../../shared/getPageFiles/analyzePageClientSide.js';
5
- declare function analyzePage(pageFilesAll: PageFile[], pageConfig: null | PageConfig, pageId: string): AnalysisResult;
5
+ declare function analyzePage(pageFilesAll: PageFile[], pageConfig: null | PageConfigRuntime, pageId: string): AnalysisResult;
@@ -26,14 +26,14 @@ function analyzePage(pageFilesAll, pageConfig, pageId) {
26
26
  }
27
27
  /* Remove?
28
28
  Object.values(pageConfig.configElements).forEach((configElement) => {
29
- if (configElement.importFilePath) {
29
+ if (configElement.importPath) {
30
30
  const { env } = configElement
31
31
  assert(env)
32
32
  const onlyAssets = env === 'server-only'
33
33
  const eagerlyImported = env === '_routing-eager'
34
34
  if (onlyAssets || eagerlyImported) {
35
35
  clientDependencies.push({
36
- id: configElement.importFilePath,
36
+ id: configElement.importPath,
37
37
  onlyAssets,
38
38
  eagerlyImported
39
39
  })
@@ -4,7 +4,7 @@ export { createHttpResponseObjectRedirect };
4
4
  export type { HttpResponse };
5
5
  import type { GetPageAssets } from './getPageAssets.js';
6
6
  import type { HtmlRender } from '../html/renderHtml.js';
7
- import type { PageConfig } from '../../../shared/page-configs/PageConfig.js';
7
+ import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
8
8
  import type { RenderHook } from './executeOnRenderHtmlHook.js';
9
9
  import type { RedirectStatusCode, AbortStatusCode, UrlRedirect } from '../../../shared/route/abort.js';
10
10
  import { HttpResponseBody } from './getHttpResponseBody.js';
@@ -21,7 +21,7 @@ declare function createHttpResponseObject(htmlRender: null | HtmlRender, renderH
21
21
  is404: null | boolean;
22
22
  errorWhileRendering: null | Error;
23
23
  __getPageAssets: GetPageAssets;
24
- _pageConfigs: PageConfig[];
24
+ _pageConfigs: PageConfigRuntime[];
25
25
  abortStatusCode?: AbortStatusCode;
26
26
  }): Promise<HttpResponse | null>;
27
27
  declare function createHttpResponsePageContextJson(pageContextSerialized: string): Promise<HttpResponse>;
@@ -3,7 +3,7 @@ export type { PageContextDebug };
3
3
  import { RouteMatches } from '../../../shared/route/index.js';
4
4
  import type { ClientDependency } from '../../../shared/getPageFiles/analyzePageClientSide/ClientDependency.js';
5
5
  import type { PageFile } from '../../../shared/getPageFiles.js';
6
- import type { PageConfig } from '../../../shared/page-configs/PageConfig.js';
6
+ import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
7
7
  type PageContextDebug = {
8
8
  _routeMatches: 'ROUTE_ERROR' | RouteMatches;
9
9
  };
@@ -12,7 +12,7 @@ declare function debugPageFiles({ pageContext, isHtmlOnly, isClientRouting, page
12
12
  urlOriginal: string;
13
13
  _pageId: string;
14
14
  _pageFilesAll: PageFile[];
15
- _pageConfigs: PageConfig[];
15
+ _pageConfigs: PageConfigRuntime[];
16
16
  } & PageContextDebug;
17
17
  isHtmlOnly: boolean;
18
18
  isClientRouting: boolean;
@@ -3,7 +3,7 @@ export type { RenderHook };
3
3
  import { type HtmlRender } from '../html/renderHtml.js';
4
4
  import type { PageAsset } from './getPageAssets.js';
5
5
  import { type PageContextForUserConsumptionServerSide } from './preparePageContextForUserConsumptionServerSide.js';
6
- import type { PageConfig } from '../../../shared/page-configs/PageConfig.js';
6
+ import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
7
7
  import type { PageContextSerialization } from '../html/serializePageContextClientSide.js';
8
8
  type GetPageAssets = () => Promise<PageAsset[]>;
9
9
  type RenderHook = {
@@ -13,7 +13,7 @@ type RenderHook = {
13
13
  type HookName = 'onRenderHtml' | 'render';
14
14
  declare function executeOnRenderHtmlHook(pageContext: PageContextForUserConsumptionServerSide & PageContextSerialization & {
15
15
  _pageId: string;
16
- _pageConfigs: PageConfig[];
16
+ _pageConfigs: PageConfigRuntime[];
17
17
  __getPageAssets: GetPageAssets;
18
18
  _isHtmlOnly: boolean;
19
19
  _baseServer: string;
@@ -1,11 +1,11 @@
1
1
  export { handleErrorWithoutErrorPage };
2
2
  import type { PageContextAfterRender } from './renderPageAlreadyRouted.js';
3
- import type { PageConfig } from '../../../shared/page-configs/PageConfig.js';
3
+ import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
4
4
  declare function handleErrorWithoutErrorPage<PageContext extends {
5
5
  isClientSideNavigation: boolean;
6
6
  errorWhileRendering: null | Error;
7
7
  is404: null | boolean;
8
8
  _pageId: null;
9
- _pageConfigs: PageConfig[];
9
+ _pageConfigs: PageConfigRuntime[];
10
10
  urlOriginal: string;
11
11
  }>(pageContext: PageContext): Promise<PageContext & PageContextAfterRender>;
@@ -5,11 +5,11 @@ import { type PageFile } from '../../../shared/getPageFiles.js';
5
5
  import { PromiseType } from '../utils.js';
6
6
  import { PageContextGetPageAssets, type PageAsset } from './getPageAssets.js';
7
7
  import { type PageContextDebug } from './debugPageFiles.js';
8
- import type { PageConfig } from '../../../shared/page-configs/PageConfig.js';
8
+ import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
9
9
  type PageContext_loadPageFilesServerSide = PageContextGetPageAssets & PageContextDebug & {
10
10
  urlOriginal: string;
11
11
  _pageFilesAll: PageFile[];
12
- _pageConfigs: PageConfig[];
12
+ _pageConfigs: PageConfigRuntime[];
13
13
  };
14
14
  type PageFiles = PromiseType<ReturnType<typeof loadPageFilesServerSide>>;
15
15
  declare function loadPageFilesServerSide(pageContext: {
@@ -7,7 +7,7 @@ import { debugPageFiles } from './debugPageFiles.js';
7
7
  import { findPageConfig } from '../../../shared/page-configs/findPageConfig.js';
8
8
  import { analyzePage } from './analyzePage.js';
9
9
  import { getGlobalContext } from '../globalContext.js';
10
- import { loadPageCode } from '../../../shared/page-configs/loadPageCode.js';
10
+ import { loadConfigValues } from '../../../shared/page-configs/loadConfigValues.js';
11
11
  async function loadPageFilesServerSide(pageContext) {
12
12
  const pageConfig = findPageConfig(pageContext._pageConfigs, pageContext._pageId); // Make pageConfig globally available as pageContext._pageConfig?
13
13
  const [{ config, configEntries, exports, exportsAll, pageExports, pageFilesLoaded, pageConfigLoaded }] = await Promise.all([
@@ -82,7 +82,7 @@ async function loadPageFilesServerSide(pageContext) {
82
82
  }
83
83
  async function loadPageFiles(pageFilesAll, pageConfig, pageId, isDev) {
84
84
  const pageFilesServerSide = getPageFilesServerSide(pageFilesAll, pageId);
85
- const pageConfigLoaded = !pageConfig ? null : await loadPageCode(pageConfig, isDev);
85
+ const pageConfigLoaded = !pageConfig ? null : await loadConfigValues(pageConfig, isDev);
86
86
  await Promise.all(pageFilesServerSide.map((p) => p.loadFile?.()));
87
87
  const { config, configEntries, exports, exportsAll, pageExports } = getExports(pageFilesServerSide, pageConfigLoaded);
88
88
  return {
@@ -67,8 +67,8 @@ function getPagesAndRoutesInfo(pageRoutes) {
67
67
  ...entries
68
68
  ];
69
69
  const terminalWidth = getTerminalWidth() || 134;
70
- let width2 = Math.max(...linesContent.map(({ routeTypeSrc }) => routeTypeSrc.length));
71
- let width3 = Math.max(...linesContent.map(({ routeDefinedBy }) => routeDefinedBy.length));
70
+ let width2 = Math.max(...linesContent.map(({ routeTypeSrc }) => stripAnsi(routeTypeSrc).length));
71
+ let width3 = Math.max(...linesContent.map(({ routeDefinedBy }) => stripAnsi(routeDefinedBy).length));
72
72
  let width1 = terminalWidth - width3 - width2 - 10;
73
73
  linesContent.forEach((lineContent) => {
74
74
  let { routeStr } = lineContent;
@@ -83,9 +83,9 @@ function getPagesAndRoutesInfo(pageRoutes) {
83
83
  });
84
84
  width1 = Math.max(...linesContent.map(({ routeStr }) => stripAnsi(routeStr).length));
85
85
  let lines = linesContent.map(({ routeStr, routeTypeSrc, routeDefinedBy }, i) => {
86
- let cell1 = routeStr.padEnd(width1 + (routeStr.length - stripAnsi(routeStr).length), ' ');
87
- let cell2 = routeTypeSrc.padEnd(width2, ' ');
88
- let cell3 = routeDefinedBy.padEnd(width3, ' ');
86
+ let cell1 = padEnd(routeStr, width1 + (stripAnsi(routeStr).length - stripAnsi(routeStr).length));
87
+ let cell2 = padEnd(routeTypeSrc, width2);
88
+ let cell3 = padEnd(routeDefinedBy, width3);
89
89
  const isHeader = i === 0;
90
90
  if (isHeader) {
91
91
  cell1 = pc.dim(cell1);
@@ -119,6 +119,11 @@ function truncateRouteFunction(routeStr, lenMax) {
119
119
  routeStr = truncateString(routeStr, lenMax, (s) => pc.dim(s));
120
120
  return routeStr;
121
121
  }
122
+ /** Same as String.prototype.padEnd but with stripAnsi() */
123
+ function padEnd(str, width) {
124
+ const padWidth = Math.max(0, width - stripAnsi(str).length);
125
+ return str + ''.padEnd(padWidth, ' ');
126
+ }
122
127
  function removeNonAscii(str) {
123
128
  // https://stackoverflow.com/questions/20856197/remove-non-ascii-character-in-string/20856346#20856346
124
129
  return str.replace(/[^\x00-\x7F]/g, '');
@@ -1,7 +1,7 @@
1
1
  export { preparePageContextForUserConsumptionServerSide };
2
2
  export type { PageContextForUserConsumptionServerSide };
3
3
  import { PageContextUrlComputedPropsInternal } from '../../../shared/addUrlComputedProps.js';
4
- import type { PageConfig } from '../../../shared/page-configs/PageConfig.js';
4
+ import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
5
5
  import type { ConfigEntries, ExportsAll } from '../../../shared/getPageFiles/getExports.js';
6
6
  import { PageContextBuiltInServerInternal } from '../../../shared/types.js';
7
7
  type PageContextForUserConsumptionServerSide = PageContextBuiltInServerInternal & {
@@ -18,7 +18,7 @@ type PageContextForUserConsumptionServerSide = PageContextBuiltInServerInternal
18
18
  exports: Record<string, unknown>;
19
19
  exportsAll: ExportsAll;
20
20
  _pageId: string;
21
- _pageConfigs: PageConfig[];
21
+ _pageConfigs: PageConfigRuntime[];
22
22
  is404: null | boolean;
23
23
  isClientSideNavigation: boolean;
24
24
  pageProps?: Record<string, unknown>;
@@ -10,7 +10,7 @@ import { type PageFile } from '../../../shared/getPageFiles.js';
10
10
  import { type PageContextUrlComputedPropsInternal } from '../../../shared/addUrlComputedProps.js';
11
11
  import { HttpResponse } from './createHttpResponseObject.js';
12
12
  import { PageContext_loadPageFilesServerSide, type PageFiles } from './loadPageFilesServerSide.js';
13
- import type { PageConfig, PageConfigGlobal } from '../../../shared/page-configs/PageConfig.js';
13
+ import type { PageConfigRuntime, PageConfigGlobalRuntime } from '../../../shared/page-configs/PageConfig.js';
14
14
  import { type PageRoutes } from '../../../shared/route/loadPageRoutes.js';
15
15
  import type { OnBeforeRouteHook } from '../../../shared/route/executeOnBeforeRouteHook.js';
16
16
  type PageContextAfterRender = {
@@ -42,8 +42,8 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
42
42
  _baseAssets: string | null;
43
43
  _includeAssetsImportedByServer: boolean;
44
44
  _pageFilesAll: PageFile[];
45
- _pageConfigs: PageConfig[];
46
- _pageConfigGlobal: PageConfigGlobal;
45
+ _pageConfigs: PageConfigRuntime[];
46
+ _pageConfigGlobal: PageConfigGlobalRuntime;
47
47
  _allPageIds: string[];
48
48
  _pageRoutes: PageRoutes;
49
49
  _onBeforeRouteHook: OnBeforeRouteHook | null;
@@ -89,8 +89,8 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
89
89
  _baseAssets: string | null;
90
90
  _includeAssetsImportedByServer: boolean;
91
91
  _pageFilesAll: PageFile[];
92
- _pageConfigs: PageConfig[];
93
- _pageConfigGlobal: PageConfigGlobal;
92
+ _pageConfigs: PageConfigRuntime[];
93
+ _pageConfigGlobal: PageConfigGlobalRuntime;
94
94
  _allPageIds: string[];
95
95
  _pageRoutes: PageRoutes;
96
96
  _onBeforeRouteHook: OnBeforeRouteHook | null;
@@ -137,8 +137,8 @@ declare function prerender404Page(renderContext: RenderContext, pageContextInit_
137
137
  _baseAssets: string | null;
138
138
  _includeAssetsImportedByServer: boolean;
139
139
  _pageFilesAll: PageFile[];
140
- _pageConfigs: PageConfig[];
141
- _pageConfigGlobal: PageConfigGlobal;
140
+ _pageConfigs: PageConfigRuntime[];
141
+ _pageConfigGlobal: PageConfigGlobalRuntime;
142
142
  _allPageIds: string[];
143
143
  _pageRoutes: PageRoutes;
144
144
  _onBeforeRouteHook: OnBeforeRouteHook | null;
@@ -184,8 +184,8 @@ declare function prerender404Page(renderContext: RenderContext, pageContextInit_
184
184
  _baseAssets: string | null;
185
185
  _includeAssetsImportedByServer: boolean;
186
186
  _pageFilesAll: PageFile[];
187
- _pageConfigs: PageConfig[];
188
- _pageConfigGlobal: PageConfigGlobal;
187
+ _pageConfigs: PageConfigRuntime[];
188
+ _pageConfigGlobal: PageConfigGlobalRuntime;
189
189
  _allPageIds: string[];
190
190
  _pageRoutes: PageRoutes;
191
191
  _onBeforeRouteHook: OnBeforeRouteHook | null;
@@ -239,8 +239,8 @@ declare function getPageContextInitEnhanced(pageContextInit: {
239
239
  _baseAssets: string | null;
240
240
  _includeAssetsImportedByServer: boolean;
241
241
  _pageFilesAll: PageFile[];
242
- _pageConfigs: PageConfig[];
243
- _pageConfigGlobal: PageConfigGlobal;
242
+ _pageConfigs: PageConfigRuntime[];
243
+ _pageConfigGlobal: PageConfigGlobalRuntime;
244
244
  _allPageIds: string[];
245
245
  _pageRoutes: PageRoutes;
246
246
  _onBeforeRouteHook: OnBeforeRouteHook | null;
@@ -256,8 +256,8 @@ declare function getPageContextInitEnhanced(pageContextInit: {
256
256
  };
257
257
  type RenderContext = {
258
258
  pageFilesAll: PageFile[];
259
- pageConfigs: PageConfig[];
260
- pageConfigGlobal: PageConfigGlobal;
259
+ pageConfigs: PageConfigRuntime[];
260
+ pageConfigGlobal: PageConfigGlobalRuntime;
261
261
  allPageIds: string[];
262
262
  pageRoutes: PageRoutes;
263
263
  onBeforeRouteHook: OnBeforeRouteHook | null;