vike 0.4.229 → 0.4.230

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 (222) hide show
  1. package/dist/cjs/client/server-routing-runtime/utils.js +1 -0
  2. package/dist/cjs/client/shared/{preparePageContextForUserConsumptionClientSide.js → preparePageContextForPublicUsageClientShared.js} +14 -19
  3. package/dist/cjs/node/api/build.js +1 -5
  4. package/dist/cjs/node/plugin/index.js +3 -1
  5. package/dist/cjs/node/plugin/plugins/build/pluginModuleBanner.js +4 -4
  6. package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +5 -0
  7. package/dist/cjs/node/plugin/plugins/envVars.js +17 -19
  8. package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +3 -1
  9. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +5 -0
  10. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +1 -1
  11. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +2 -2
  12. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +12 -6
  13. package/dist/cjs/node/plugin/plugins/replaceConstants.js +76 -0
  14. package/dist/cjs/node/plugin/shared/applyRegExWithMagicString.js +10 -0
  15. package/dist/cjs/node/plugin/shared/findPageFiles.js +1 -1
  16. package/dist/cjs/node/plugin/shared/loggerNotProd.js +2 -2
  17. package/dist/cjs/node/plugin/shared/resolveClientEntriesDev.js +1 -1
  18. package/dist/cjs/node/prerender/runPrerender.js +42 -38
  19. package/dist/cjs/node/prerender/utils.js +1 -1
  20. package/dist/cjs/node/runtime/globalContext.js +13 -27
  21. package/dist/cjs/node/runtime/html/renderHtml.js +12 -2
  22. package/dist/cjs/node/runtime/html/serializeContext.js +1 -1
  23. package/dist/cjs/node/runtime/renderPage/createHttpResponse/getCacheControl.js +7 -5
  24. package/dist/cjs/node/runtime/renderPage/createHttpResponse.js +3 -4
  25. package/dist/cjs/node/runtime/renderPage/createPageContextServerSide.js +6 -9
  26. package/dist/cjs/node/runtime/renderPage/execHookServer.js +11 -0
  27. package/dist/cjs/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +14 -15
  28. package/dist/cjs/node/runtime/renderPage/executeOnRenderHtmlHook.js +8 -12
  29. package/dist/cjs/node/runtime/renderPage/getPageAssets.js +1 -1
  30. package/dist/cjs/node/runtime/renderPage/{loadUserFilesServerSide.js → loadPageConfigsLazyServerSide.js} +4 -4
  31. package/dist/cjs/node/runtime/renderPage/preparePageContextForPublicUsageServer.js +10 -0
  32. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +5 -5
  33. package/dist/cjs/node/runtime/renderPage/resolveRedirects.js +0 -2
  34. package/dist/cjs/node/runtime/renderPage.js +21 -12
  35. package/dist/cjs/node/runtime/utils.js +1 -1
  36. package/dist/cjs/shared/NOT_SERIALIZABLE.js +0 -1
  37. package/dist/cjs/shared/addIs404ToPageProps.js +0 -7
  38. package/dist/cjs/shared/createGlobalContextShared.js +37 -8
  39. package/dist/cjs/shared/createPageContextShared.js +14 -11
  40. package/dist/cjs/shared/getPageContext.js +3 -3
  41. package/dist/cjs/shared/getPageContextUrlComputed.js +2 -36
  42. package/dist/cjs/shared/getProxyForPublicUsage.js +56 -0
  43. package/dist/cjs/shared/hooks/execHook.js +170 -0
  44. package/dist/cjs/shared/hooks/getHook.js +23 -4
  45. package/dist/cjs/shared/page-configs/{getPageConfigUserFriendly.js → getUserFriendlyConfigs.js} +54 -47
  46. package/dist/cjs/shared/prepareGlobalContextForPublicUsage.js +10 -0
  47. package/dist/cjs/shared/preparePageContextForPublicUsage.js +80 -0
  48. package/dist/cjs/shared/route/abort.js +2 -2
  49. package/dist/cjs/shared/route/debug.js +17 -7
  50. package/dist/cjs/shared/route/executeGuardHook.js +4 -9
  51. package/dist/cjs/shared/route/executeOnBeforeRouteHook.js +4 -3
  52. package/dist/cjs/shared/route/index.js +2 -4
  53. package/dist/cjs/shared/route/loadPageRoutes.js +6 -0
  54. package/dist/cjs/shared/route/resolveRouteFunction.js +14 -10
  55. package/dist/cjs/shared/utils.js +1 -0
  56. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  57. package/dist/cjs/utils/debug.js +15 -6
  58. package/dist/cjs/utils/isScriptFile.js +24 -21
  59. package/dist/cjs/utils/objectAssign.js +3 -3
  60. package/dist/cjs/utils/objectDefineProperty.js +1 -1
  61. package/dist/cjs/utils/parseNpmPackage.js +1 -0
  62. package/dist/cjs/utils/parseUrl-extras.js +0 -1
  63. package/dist/cjs/utils/requireResolve.js +39 -19
  64. package/dist/esm/client/client-routing-runtime/{createPageContext.d.ts → createPageContextClientSide.d.ts} +21 -13
  65. package/dist/esm/client/client-routing-runtime/{createPageContext.js → createPageContextClientSide.js} +9 -11
  66. package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.d.ts +400 -15
  67. package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +56 -54
  68. package/dist/esm/client/client-routing-runtime/globalContext.d.ts +11 -1
  69. package/dist/esm/client/client-routing-runtime/prefetch.d.ts +3 -8
  70. package/dist/esm/client/client-routing-runtime/prefetch.js +3 -3
  71. package/dist/esm/client/client-routing-runtime/preparePageContextForPublicUsageClient.d.ts +11 -0
  72. package/dist/esm/client/client-routing-runtime/preparePageContextForPublicUsageClient.js +5 -0
  73. package/dist/esm/client/client-routing-runtime/renderPageClientSide.d.ts +135 -0
  74. package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +72 -81
  75. package/dist/esm/client/client-routing-runtime/utils.d.ts +1 -0
  76. package/dist/esm/client/client-routing-runtime/utils.js +1 -0
  77. package/dist/esm/client/server-routing-runtime/createPageContextClientSide.d.ts +19 -13
  78. package/dist/esm/client/server-routing-runtime/createPageContextClientSide.js +15 -26
  79. package/dist/esm/client/server-routing-runtime/entry.js +4 -4
  80. package/dist/esm/client/server-routing-runtime/globalContext.d.ts +11 -1
  81. package/dist/esm/client/server-routing-runtime/preparePageContextForPublicUsageClient.d.ts +9 -0
  82. package/dist/esm/client/server-routing-runtime/preparePageContextForPublicUsageClient.js +5 -0
  83. package/dist/esm/client/server-routing-runtime/utils.d.ts +1 -0
  84. package/dist/esm/client/server-routing-runtime/utils.js +1 -0
  85. package/dist/esm/client/shared/createGetGlobalContextClient.d.ts +11 -1
  86. package/dist/esm/client/shared/executeOnRenderClientHook.d.ts +3 -3
  87. package/dist/esm/client/shared/executeOnRenderClientHook.js +4 -13
  88. package/dist/esm/client/shared/{loadUserFilesClientSide.d.ts → loadPageConfigsLazyClientSide.d.ts} +2 -2
  89. package/dist/esm/client/shared/{loadUserFilesClientSide.js → loadPageConfigsLazyClientSide.js} +4 -4
  90. package/dist/esm/client/shared/preparePageContextForPublicUsageClientShared.d.ts +11 -0
  91. package/dist/esm/client/shared/preparePageContextForPublicUsageClientShared.js +39 -0
  92. package/dist/esm/node/api/build.js +1 -2
  93. package/dist/esm/node/plugin/index.js +3 -1
  94. package/dist/esm/node/plugin/plugins/build/pluginModuleBanner.js +4 -4
  95. package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +6 -1
  96. package/dist/esm/node/plugin/plugins/envVars.js +18 -20
  97. package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +4 -2
  98. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +5 -0
  99. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +2 -2
  100. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +3 -3
  101. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +1 -1
  102. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +12 -6
  103. package/dist/esm/node/plugin/plugins/replaceConstants.d.ts +3 -0
  104. package/dist/esm/node/plugin/plugins/replaceConstants.js +71 -0
  105. package/dist/esm/node/plugin/shared/applyRegExWithMagicString.d.ts +3 -0
  106. package/dist/esm/node/plugin/shared/applyRegExWithMagicString.js +8 -0
  107. package/dist/esm/node/plugin/shared/findPageFiles.js +2 -2
  108. package/dist/esm/node/plugin/shared/loggerNotProd.js +1 -1
  109. package/dist/esm/node/plugin/shared/resolveClientEntriesDev.d.ts +1 -1
  110. package/dist/esm/node/plugin/shared/resolveClientEntriesDev.js +1 -1
  111. package/dist/esm/node/prerender/runPrerender.d.ts +37 -73
  112. package/dist/esm/node/prerender/runPrerender.js +42 -38
  113. package/dist/esm/node/prerender/utils.d.ts +1 -1
  114. package/dist/esm/node/prerender/utils.js +1 -1
  115. package/dist/esm/node/runtime/globalContext.d.ts +46 -251
  116. package/dist/esm/node/runtime/globalContext.js +14 -28
  117. package/dist/esm/node/runtime/html/renderHtml.js +12 -2
  118. package/dist/esm/node/runtime/html/serializeContext.d.ts +1 -1
  119. package/dist/esm/node/runtime/html/serializeContext.js +1 -1
  120. package/dist/esm/node/runtime/renderPage/createHttpResponse/getCacheControl.d.ts +1 -1
  121. package/dist/esm/node/runtime/renderPage/createHttpResponse/getCacheControl.js +7 -5
  122. package/dist/esm/node/runtime/renderPage/createHttpResponse.d.ts +2 -2
  123. package/dist/esm/node/runtime/renderPage/createHttpResponse.js +3 -4
  124. package/dist/esm/node/runtime/renderPage/createPageContextServerSide.d.ts +26 -41
  125. package/dist/esm/node/runtime/renderPage/createPageContextServerSide.js +7 -10
  126. package/dist/esm/node/runtime/renderPage/execHookServer.d.ts +12 -0
  127. package/dist/esm/node/runtime/renderPage/execHookServer.js +9 -0
  128. package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.d.ts +2 -3
  129. package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +14 -15
  130. package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.d.ts +4 -2
  131. package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.js +8 -12
  132. package/dist/esm/node/runtime/renderPage/getPageAssets.js +1 -1
  133. package/dist/esm/node/runtime/renderPage/{loadUserFilesServerSide.d.ts → loadPageConfigsLazyServerSide.d.ts} +6 -6
  134. package/dist/esm/node/runtime/renderPage/{loadUserFilesServerSide.js → loadPageConfigsLazyServerSide.js} +4 -4
  135. package/dist/esm/node/runtime/renderPage/preparePageContextForPublicUsageServer.d.ts +20 -0
  136. package/dist/esm/node/runtime/renderPage/preparePageContextForPublicUsageServer.js +8 -0
  137. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +38 -74
  138. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +5 -5
  139. package/dist/esm/node/runtime/renderPage/resolveRedirects.d.ts +0 -2
  140. package/dist/esm/node/runtime/renderPage/resolveRedirects.js +0 -1
  141. package/dist/esm/node/runtime/renderPage.d.ts +21 -39
  142. package/dist/esm/node/runtime/renderPage.js +22 -13
  143. package/dist/esm/node/runtime/utils.d.ts +1 -1
  144. package/dist/esm/node/runtime/utils.js +1 -1
  145. package/dist/esm/shared/NOT_SERIALIZABLE.js +0 -1
  146. package/dist/esm/shared/addIs404ToPageProps.d.ts +1 -6
  147. package/dist/esm/shared/addIs404ToPageProps.js +1 -8
  148. package/dist/esm/shared/createGlobalContextShared.d.ts +28 -6
  149. package/dist/esm/shared/createGlobalContextShared.js +37 -8
  150. package/dist/esm/shared/createPageContextShared.d.ts +7 -6
  151. package/dist/esm/shared/createPageContextShared.js +15 -12
  152. package/dist/esm/shared/getPageContext.d.ts +1 -1
  153. package/dist/esm/shared/getPageContext.js +1 -1
  154. package/dist/esm/shared/getPageContextUrlComputed.d.ts +2 -5
  155. package/dist/esm/shared/getPageContextUrlComputed.js +3 -37
  156. package/dist/esm/shared/getPageFiles.d.ts +1 -1
  157. package/dist/esm/shared/getProxyForPublicUsage.d.ts +4 -0
  158. package/dist/esm/shared/getProxyForPublicUsage.js +54 -0
  159. package/dist/esm/shared/hooks/execHook.d.ts +63 -0
  160. package/dist/esm/shared/hooks/execHook.js +168 -0
  161. package/dist/esm/shared/hooks/getHook.d.ts +10 -11
  162. package/dist/esm/shared/hooks/getHook.js +23 -4
  163. package/dist/esm/shared/page-configs/Config.d.ts +11 -4
  164. package/dist/esm/shared/page-configs/{getPageConfigUserFriendly.d.ts → getUserFriendlyConfigs.d.ts} +8 -6
  165. package/dist/esm/shared/page-configs/{getPageConfigUserFriendly.js → getUserFriendlyConfigs.js} +55 -48
  166. package/dist/esm/shared/prepareGlobalContextForPublicUsage.d.ts +7 -0
  167. package/dist/esm/shared/prepareGlobalContextForPublicUsage.js +8 -0
  168. package/dist/esm/shared/preparePageContextForPublicUsage.d.ts +11 -0
  169. package/dist/esm/shared/preparePageContextForPublicUsage.js +78 -0
  170. package/dist/esm/shared/route/abort.js +1 -1
  171. package/dist/esm/shared/route/debug.d.ts +4 -1
  172. package/dist/esm/shared/route/debug.js +17 -7
  173. package/dist/esm/shared/route/executeGuardHook.d.ts +4 -3
  174. package/dist/esm/shared/route/executeGuardHook.js +4 -9
  175. package/dist/esm/shared/route/executeOnBeforeRouteHook.js +4 -3
  176. package/dist/esm/shared/route/index.js +2 -4
  177. package/dist/esm/shared/route/loadPageRoutes.d.ts +2 -1
  178. package/dist/esm/shared/route/loadPageRoutes.js +7 -1
  179. package/dist/esm/shared/route/resolveRouteFunction.d.ts +2 -2
  180. package/dist/esm/shared/route/resolveRouteFunction.js +14 -10
  181. package/dist/esm/shared/types.d.ts +14 -4
  182. package/dist/esm/shared/utils.d.ts +1 -0
  183. package/dist/esm/shared/utils.js +1 -0
  184. package/dist/esm/types/index.d.ts +1 -1
  185. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  186. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  187. package/dist/esm/utils/debug.d.ts +1 -1
  188. package/dist/esm/utils/debug.js +15 -6
  189. package/dist/esm/utils/isScriptFile.d.ts +5 -5
  190. package/dist/esm/utils/isScriptFile.js +23 -20
  191. package/dist/esm/utils/objectAssign.d.ts +1 -1
  192. package/dist/esm/utils/objectAssign.js +3 -3
  193. package/dist/esm/utils/objectDefineProperty.d.ts +0 -1
  194. package/dist/esm/utils/objectDefineProperty.js +1 -1
  195. package/dist/esm/utils/parseNpmPackage.d.ts +2 -0
  196. package/dist/esm/utils/parseNpmPackage.js +1 -1
  197. package/dist/esm/utils/parseUrl-extras.js +0 -1
  198. package/dist/esm/utils/requireResolve.js +39 -19
  199. package/package.json +2 -2
  200. package/dist/cjs/client/shared/getPageContextProxyForUser.js +0 -16
  201. package/dist/cjs/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +0 -16
  202. package/dist/cjs/shared/getPageConfigsRuntime.js +0 -23
  203. package/dist/cjs/shared/hooks/executeHook.js +0 -87
  204. package/dist/cjs/shared/hooks/executeHookGeneric.js +0 -18
  205. package/dist/cjs/shared/preparePageContextForUserConsumption.js +0 -34
  206. package/dist/cjs/utils/getPublicProxy.js +0 -27
  207. package/dist/esm/client/shared/getPageContextProxyForUser.d.ts +0 -2
  208. package/dist/esm/client/shared/getPageContextProxyForUser.js +0 -14
  209. package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.d.ts +0 -12
  210. package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.js +0 -44
  211. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +0 -24
  212. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +0 -14
  213. package/dist/esm/shared/getPageConfigsRuntime.d.ts +0 -14
  214. package/dist/esm/shared/getPageConfigsRuntime.js +0 -21
  215. package/dist/esm/shared/hooks/executeHook.d.ts +0 -21
  216. package/dist/esm/shared/hooks/executeHook.js +0 -85
  217. package/dist/esm/shared/hooks/executeHookGeneric.d.ts +0 -8
  218. package/dist/esm/shared/hooks/executeHookGeneric.js +0 -16
  219. package/dist/esm/shared/preparePageContextForUserConsumption.d.ts +0 -5
  220. package/dist/esm/shared/preparePageContextForUserConsumption.js +0 -32
  221. package/dist/esm/utils/getPublicProxy.d.ts +0 -2
  222. package/dist/esm/utils/getPublicProxy.js +0 -25
@@ -0,0 +1,71 @@
1
+ export { replaceConstants };
2
+ import MagicString from 'magic-string';
3
+ import { assert, assertPosixPath } from '../utils.js';
4
+ import { normalizeId } from '../shared/normalizeId.js';
5
+ import { isViteServerBuild_safe } from '../shared/isViteServerBuild.js';
6
+ import { applyRegExpWithMagicString } from '../shared/applyRegExWithMagicString.js';
7
+ function replaceConstants() {
8
+ let config;
9
+ return {
10
+ name: 'vike:replaceConstants',
11
+ enforce: 'post',
12
+ apply: 'build',
13
+ configResolved(config_) {
14
+ config = config_;
15
+ },
16
+ transform(code, id, options) {
17
+ id = normalizeId(id);
18
+ assertPosixPath(id);
19
+ if (id.includes('/node_modules/'))
20
+ return;
21
+ assertPosixPath(config.root);
22
+ if (!id.startsWith(config.root))
23
+ return;
24
+ if (!code.includes('import.meta.env.'))
25
+ return;
26
+ const isBuild = config.command === 'build';
27
+ assert(isBuild);
28
+ // Used by vike.dev
29
+ // https://github.com/vikejs/vike/blob/08a1ff55c80ddca64ca6d4417fefd45fefeb4ffb/docs/vite.config.ts#L12
30
+ // @ts-expect-error
31
+ if (config._skipVikeReplaceConstants?.(id))
32
+ return;
33
+ const magicString = new MagicString(code);
34
+ const constantsMap = [];
35
+ constantsMap.push({
36
+ constants: ['pageContext.isClientSide', 'globalContext.isClientSide', 'pageContext.globalContext.isClientSide'],
37
+ replacement: !isViteServerBuild_safe(config, options)
38
+ });
39
+ constantsMap.forEach(({ constants, replacement }) => {
40
+ if (!constants.some((c) => code.includes(c)))
41
+ return;
42
+ const regExp = getConstantRegExp(constants);
43
+ applyRegExpWithMagicString(magicString, regExp, replacement);
44
+ });
45
+ if (!magicString.hasChanged())
46
+ return null;
47
+ return {
48
+ code: magicString.toString(),
49
+ map: magicString.generateMap({ hires: true, source: id })
50
+ };
51
+ }
52
+ };
53
+ }
54
+ // Copied & adapted from:
55
+ // https://github.com/rollup/plugins/blob/e1a5ef99f1578eb38a8c87563cb9651db228f3bd/packages/replace/src/index.js#L57-L67
56
+ function getConstantRegExp(constants) {
57
+ const keys = Object.values(constants).sort(longest).map(escape);
58
+ // const delimiters = ['\\b', '\\b(?!\\.)']
59
+ const delimiters = ['(?<!\\.)\\b', '\\b(?!\\.)']; // Improved version, to avoid replacing `globalContext.pageContext.isClientSide` with `globalContext.false`
60
+ const preventAssignment = false; // Let's try without it first, let's see if a user complains
61
+ const lookbehind = preventAssignment ? '(?<!\\b(?:const|let|var)\\s*)' : '';
62
+ const lookahead = preventAssignment ? '(?!\\s*=[^=])' : '';
63
+ const pattern = new RegExp(`${lookbehind}${delimiters[0]}(${keys.join('|')})${delimiters[1]}${lookahead}`, 'g');
64
+ return pattern;
65
+ }
66
+ function escape(str) {
67
+ return str.replace(/[-[\]/{}()*+?.\\^$|]/g, '\\$&');
68
+ }
69
+ function longest(a, b) {
70
+ return b.length - a.length;
71
+ }
@@ -0,0 +1,3 @@
1
+ export { applyRegExpWithMagicString };
2
+ import type MagicString from 'magic-string';
3
+ declare function applyRegExpWithMagicString(magicString: MagicString, regExp: string | RegExp, replacement: unknown): void;
@@ -0,0 +1,8 @@
1
+ export { applyRegExpWithMagicString };
2
+ function applyRegExpWithMagicString(magicString, regExp, replacement) {
3
+ const envStatementRegEx = typeof regExp === 'string' ? new RegExp(regExp, 'g') : regExp;
4
+ let match;
5
+ while ((match = envStatementRegEx.exec(magicString.original))) {
6
+ magicString.overwrite(match.index, match.index + match[0].length, JSON.stringify(replacement));
7
+ }
8
+ }
@@ -1,13 +1,13 @@
1
1
  export { findPageFiles };
2
2
  import { glob } from 'tinyglobby';
3
- import { assertWarning, toPosixPath, scriptFileExtensions } from '../utils.js';
3
+ import { assertWarning, toPosixPath, scriptFileExtensionPattern } from '../utils.js';
4
4
  import pc from '@brillout/picocolors';
5
5
  import { getOutDirs } from './getOutDirs.js';
6
6
  async function findPageFiles(config, fileTypes, isDev) {
7
7
  const cwd = config.root;
8
8
  const { outDirRoot } = getOutDirs(config);
9
9
  const timeBase = new Date().getTime();
10
- let pageFiles = await glob(fileTypes.map((fileType) => `**/*${fileType}.${scriptFileExtensions}`), { ignore: ['**/node_modules/**', `${outDirRoot}/**`], cwd, dot: false, expandDirectories: false });
10
+ let pageFiles = await glob(fileTypes.map((fileType) => `**/*${fileType}.${scriptFileExtensionPattern}`), { ignore: ['**/node_modules/**', `${outDirRoot}/**`], cwd, dot: false, expandDirectories: false });
11
11
  pageFiles = pageFiles.map((p) => '/' + toPosixPath(p));
12
12
  const time = new Date().getTime() - timeBase;
13
13
  if (isDev) {
@@ -22,7 +22,7 @@ import { logWithVikeTag, logWithViteTag, logDirectly, applyViteSourceMapToStackT
22
22
  import pc from '@brillout/picocolors';
23
23
  import { setAlreadyLogged } from '../../runtime/renderPage/isNewError.js';
24
24
  import { onRuntimeError } from '../../runtime/renderPage/loggerProd.js';
25
- import { isUserHookError } from '../../../shared/hooks/executeHook.js';
25
+ import { isUserHookError } from '../../../shared/hooks/execHook.js';
26
26
  assertIsNotProductionRuntime();
27
27
  overwriteRuntimeProductionLogger(logRuntimeError, logRuntimeInfo);
28
28
  overwriteAssertProductionLogger(assertLogger);
@@ -1,4 +1,4 @@
1
1
  export { resolveClientEntriesDev };
2
2
  export type ResolveClientEntriesDev = typeof resolveClientEntriesDev;
3
3
  import type { ViteDevServer } from 'vite';
4
- declare function resolveClientEntriesDev(clientEntry: string, viteDevServer: ViteDevServer): Promise<string>;
4
+ declare function resolveClientEntriesDev(clientEntry: string, viteDevServer: ViteDevServer): string;
@@ -1,7 +1,7 @@
1
1
  export { resolveClientEntriesDev };
2
2
  import { assert, assertPosixPath, toPosixPath, pathJoin, assertIsImportPathNpmPackage, assertIsNotProductionRuntime, requireResolveNpmPackage, requireResolveVikeDistFile } from '../utils.js';
3
3
  assertIsNotProductionRuntime();
4
- async function resolveClientEntriesDev(clientEntry, viteDevServer) {
4
+ function resolveClientEntriesDev(clientEntry, viteDevServer) {
5
5
  let userRootDir = viteDevServer.config.root;
6
6
  assert(userRootDir);
7
7
  userRootDir = toPosixPath(userRootDir);
@@ -5,7 +5,7 @@ export { runPrerender_forceExit };
5
5
  export type { PrerenderOptions };
6
6
  export type { PrerenderContextPublic };
7
7
  import type { PageFile } from '../../shared/getPageFiles.js';
8
- import { type GlobalContextServerInternal, type GlobalContextServer } from '../runtime/globalContext.js';
8
+ import { type GlobalContextServerInternal } from '../runtime/globalContext.js';
9
9
  import type { InlineConfig, ResolvedConfig } from 'vite';
10
10
  import type { APIOptions } from '../api/types.js';
11
11
  type ProvidedByHook = null | {
@@ -22,6 +22,7 @@ type PageContextPrerendered = {
22
22
  pageId: string;
23
23
  };
24
24
  type PrerenderedPageContexts = Record<string, PageContextPrerendered>;
25
+ type PrerenderContextPublic = Pick<PrerenderContext, 'pageContexts' | 'output'>;
25
26
  type PrerenderContext = {
26
27
  pageContexts: PageContext[];
27
28
  output: Output;
@@ -66,23 +67,35 @@ declare function runPrerenderFromCLIPrerenderCommand(): Promise<void>;
66
67
  declare function runPrerenderFromAutoRun(viteConfig: InlineConfig | undefined): Promise<{
67
68
  forceExit: boolean;
68
69
  }>;
69
- declare function createPageContextPrerendering(urlOriginal: string, prerenderContext: PrerenderContext, globalContext: GlobalContextServerInternal, globalContext_public: GlobalContextServer, is404: boolean, pageId: string | undefined, providedByHook: ProvidedByHook): Promise<((({
70
- isClientSide: boolean;
70
+ declare function createPageContextPrerendering(urlOriginal: string, prerenderContext: PrerenderContext, globalContext: GlobalContextServerInternal, is404: boolean, pageId: string | undefined, providedByHook: ProvidedByHook): Promise<((({
71
+ _isOriginalObject: true;
72
+ isPageContext: true;
73
+ } & {
74
+ isClientSide: false;
71
75
  isPrerendering: boolean;
72
- } & Pick<import("../../shared/types.js").PageContextBuiltInServerInternal, "urlOriginal" | "headersOriginal"> & {
76
+ } & Pick<import("../../shared/types.js").PageContextInternalServer, "urlOriginal" | "headersOriginal"> & {
73
77
  url?: string;
74
78
  headers?: Record<string, string>;
75
79
  } & {
76
- globalContext: GlobalContextServer;
77
80
  _globalContext: {
78
81
  isGlobalContext: true;
82
+ _isOriginalObject: true;
79
83
  _virtualFileExports: unknown;
80
84
  _pageFilesAll: PageFile[];
81
85
  _pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
82
86
  _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
83
87
  _allPageIds: string[];
88
+ _userFriendlyConfigsGlobal: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly;
84
89
  config: import("../../types/index.js").ConfigResolved;
85
- pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
90
+ pages: {
91
+ [k: string]: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly & ({
92
+ route: import("../../shared/page-configs/Config.js").Route;
93
+ isErrorPage?: undefined;
94
+ } | {
95
+ route?: undefined;
96
+ isErrorPage: true;
97
+ });
98
+ };
86
99
  } & ({
87
100
  _isProduction: false;
88
101
  _isPrerendering: false;
@@ -104,14 +117,6 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
104
117
  isClientSide: false;
105
118
  _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
106
119
  _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
107
- isGlobalContext: true;
108
- _virtualFileExports: unknown;
109
- _pageFilesAll: PageFile[];
110
- _pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
111
- _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
112
- _allPageIds: string[];
113
- config: import("../../types/index.js").ConfigResolved;
114
- pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
115
120
  } | {
116
121
  _isPrerendering: true;
117
122
  viteConfig: ResolvedConfig;
@@ -134,14 +139,6 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
134
139
  isClientSide: false;
135
140
  _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
136
141
  _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
137
- isGlobalContext: true;
138
- _virtualFileExports: unknown;
139
- _pageFilesAll: PageFile[];
140
- _pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
141
- _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
142
- _allPageIds: string[];
143
- config: import("../../types/index.js").ConfigResolved;
144
- pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
145
142
  } | {
146
143
  _isPrerendering: false;
147
144
  viteConfig: null;
@@ -164,14 +161,6 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
164
161
  isClientSide: false;
165
162
  _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
166
163
  _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
167
- isGlobalContext: true;
168
- _virtualFileExports: unknown;
169
- _pageFilesAll: PageFile[];
170
- _pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
171
- _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
172
- _allPageIds: string[];
173
- config: import("../../types/index.js").ConfigResolved;
174
- pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
175
164
  });
176
165
  _baseServer: string;
177
166
  _baseAssets: string;
@@ -186,18 +175,12 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
186
175
  _urlRewrite: null;
187
176
  _urlHandler: ((url: string) => string) | null;
188
177
  isClientSideNavigation: boolean;
189
- } & {
178
+ } & import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly & {
190
179
  urlParsed: import("../shared/utils.js").UrlPublic;
191
180
  urlPathname: string;
192
181
  url: string;
193
182
  } & {
194
183
  headers: Record<string, string> | null;
195
- } & {
196
- config: import("../../types/index.js").ConfigResolved;
197
- _source: import("../../shared/page-configs/getPageConfigUserFriendly.js").Source;
198
- _sources: import("../../shared/page-configs/getPageConfigUserFriendly.js").Sources;
199
- _from: import("../../shared/page-configs/getPageConfigUserFriendly.js").From;
200
- isPageContext: true;
201
184
  } & {
202
185
  _urlHandler: null;
203
186
  _httpRequestId: null;
@@ -208,22 +191,34 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
208
191
  _urlOriginalModifiedByHook: ProvidedByHookTransformer;
209
192
  is404: boolean;
210
193
  } & import("../../shared/route/index.js").PageContextFromRoute & Record<"pageId", string>) | ({
211
- isClientSide: boolean;
194
+ _isOriginalObject: true;
195
+ isPageContext: true;
196
+ } & {
197
+ isClientSide: false;
212
198
  isPrerendering: boolean;
213
- } & Pick<import("../../shared/types.js").PageContextBuiltInServerInternal, "urlOriginal" | "headersOriginal"> & {
199
+ } & Pick<import("../../shared/types.js").PageContextInternalServer, "urlOriginal" | "headersOriginal"> & {
214
200
  url?: string;
215
201
  headers?: Record<string, string>;
216
202
  } & {
217
- globalContext: GlobalContextServer;
218
203
  _globalContext: {
219
204
  isGlobalContext: true;
205
+ _isOriginalObject: true;
220
206
  _virtualFileExports: unknown;
221
207
  _pageFilesAll: PageFile[];
222
208
  _pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
223
209
  _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
224
210
  _allPageIds: string[];
211
+ _userFriendlyConfigsGlobal: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly;
225
212
  config: import("../../types/index.js").ConfigResolved;
226
- pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
213
+ pages: {
214
+ [k: string]: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly & ({
215
+ route: import("../../shared/page-configs/Config.js").Route;
216
+ isErrorPage?: undefined;
217
+ } | {
218
+ route?: undefined;
219
+ isErrorPage: true;
220
+ });
221
+ };
227
222
  } & ({
228
223
  _isProduction: false;
229
224
  _isPrerendering: false;
@@ -245,14 +240,6 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
245
240
  isClientSide: false;
246
241
  _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
247
242
  _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
248
- isGlobalContext: true;
249
- _virtualFileExports: unknown;
250
- _pageFilesAll: PageFile[];
251
- _pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
252
- _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
253
- _allPageIds: string[];
254
- config: import("../../types/index.js").ConfigResolved;
255
- pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
256
243
  } | {
257
244
  _isPrerendering: true;
258
245
  viteConfig: ResolvedConfig;
@@ -275,14 +262,6 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
275
262
  isClientSide: false;
276
263
  _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
277
264
  _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
278
- isGlobalContext: true;
279
- _virtualFileExports: unknown;
280
- _pageFilesAll: PageFile[];
281
- _pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
282
- _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
283
- _allPageIds: string[];
284
- config: import("../../types/index.js").ConfigResolved;
285
- pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
286
265
  } | {
287
266
  _isPrerendering: false;
288
267
  viteConfig: null;
@@ -305,14 +284,6 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
305
284
  isClientSide: false;
306
285
  _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
307
286
  _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
308
- isGlobalContext: true;
309
- _virtualFileExports: unknown;
310
- _pageFilesAll: PageFile[];
311
- _pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
312
- _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
313
- _allPageIds: string[];
314
- config: import("../../types/index.js").ConfigResolved;
315
- pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
316
287
  });
317
288
  _baseServer: string;
318
289
  _baseAssets: string;
@@ -327,18 +298,12 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
327
298
  _urlRewrite: null;
328
299
  _urlHandler: ((url: string) => string) | null;
329
300
  isClientSideNavigation: boolean;
330
- } & {
301
+ } & import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly & {
331
302
  urlParsed: import("../shared/utils.js").UrlPublic;
332
303
  urlPathname: string;
333
304
  url: string;
334
305
  } & {
335
306
  headers: Record<string, string> | null;
336
- } & {
337
- config: import("../../types/index.js").ConfigResolved;
338
- _source: import("../../shared/page-configs/getPageConfigUserFriendly.js").Source;
339
- _sources: import("../../shared/page-configs/getPageConfigUserFriendly.js").Sources;
340
- _from: import("../../shared/page-configs/getPageConfigUserFriendly.js").From;
341
- isPageContext: true;
342
307
  } & {
343
308
  _urlHandler: null;
344
309
  _httpRequestId: null;
@@ -363,4 +328,3 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
363
328
  _usesClientRouter: boolean;
364
329
  }>;
365
330
  declare function runPrerender_forceExit(): void;
366
- type PrerenderContextPublic = Pick<PrerenderContext, 'output' | 'pageContexts'>;
@@ -4,7 +4,7 @@ export { runPrerenderFromAutoRun };
4
4
  export { runPrerender_forceExit };
5
5
  import path from 'path';
6
6
  import { route } from '../../shared/route/index.js';
7
- import { assert, assertUsage, assertWarning, hasProp, objectAssign, isObjectWithKeys, isCallable, isPropertyGetter, assertPosixPath, urlToFile, isPlainObject, pLimit, isArray, onSetupPrerender, getPublicProxy, PROJECT_VERSION, preservePropertyGetters } from './utils.js';
7
+ import { assert, assertUsage, assertWarning, hasProp, objectAssign, isObjectWithKeys, isCallable, isPropertyGetter, assertPosixPath, urlToFile, isPlainObject, pLimit, isArray, onSetupPrerender, PROJECT_VERSION, preservePropertyGetters, changeEnumerable } from './utils.js';
8
8
  import { prerenderPage } from '../runtime/renderPage/renderPageAlreadyRouted.js';
9
9
  import { createPageContextServerSide } from '../runtime/renderPage/createPageContextServerSide.js';
10
10
  import pc from '@brillout/picocolors';
@@ -18,12 +18,12 @@ 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 { loadUserFilesServerSide } from '../runtime/renderPage/loadUserFilesServerSide.js';
21
+ import { loadPageConfigsLazyServerSide } 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 { getVikeConfig } from '../plugin/plugins/importUserCode/v1-design/getVikeConfig.js';
25
25
  import { logErrorHint } from '../runtime/renderPage/logErrorHint.js';
26
- import { executeHook, isUserHookError } from '../../shared/hooks/executeHook.js';
26
+ import { execHookWithoutPageContext, isUserHookError } from '../../shared/hooks/execHook.js';
27
27
  import { prepareViteApiCall } from '../api/prepareViteApiCall.js';
28
28
  import { setContextIsPrerendering } from './context.js';
29
29
  import { resolvePrerenderConfigGlobal, resolvePrerenderConfigLocal } from './resolvePrerenderConfig.js';
@@ -32,6 +32,8 @@ import { isVikeCli } from '../cli/context.js';
32
32
  import { isViteCliCall } from '../plugin/shared/isViteCliCall.js';
33
33
  import { getVikeConfigInternal } from '../plugin/plugins/commonConfig.js';
34
34
  import fs from 'node:fs';
35
+ import { getProxyForPublicUsage } from '../../shared/getProxyForPublicUsage.js';
36
+ const docLink = 'https://vike.dev/i18n#pre-rendering';
35
37
  async function runPrerenderFromAPI(options = {}) {
36
38
  return await runPrerender(options, 'prerender()');
37
39
  // - 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.
@@ -94,7 +96,7 @@ async function runPrerender(options = {}, standaloneTrigger) {
94
96
  }
95
97
  const concurrencyLimit = pLimit(parallel === false || parallel === 0 ? 1 : parallel === true || parallel === undefined ? cpus().length : parallel);
96
98
  await initGlobalContext_runPrerender();
97
- const { globalContext, globalContext_public } = await getGlobalContextServerInternal();
99
+ const { globalContext } = await getGlobalContextServerInternal();
98
100
  globalContext._pageFilesAll.forEach(assertExportNames);
99
101
  const prerenderContext = {
100
102
  pageContexts: [],
@@ -107,13 +109,13 @@ async function runPrerender(options = {}, standaloneTrigger) {
107
109
  await collectDoNoPrerenderList(vikeConfig.pageConfigs, doNotPrerenderList, defaultLocalValue, concurrencyLimit, globalContext);
108
110
  // Allow user to create `pageContext` for parameterized routes and/or bulk data fetching
109
111
  // https://vike.dev/onBeforePrerenderStart
110
- await callOnBeforePrerenderStartHooks(prerenderContext, globalContext, globalContext_public, concurrencyLimit, doNotPrerenderList);
112
+ await callOnBeforePrerenderStartHooks(prerenderContext, globalContext, concurrencyLimit, doNotPrerenderList);
111
113
  // Create `pageContext` for each page with a static route
112
114
  const urlList = getUrlListFromPagesWithStaticRoute(globalContext, doNotPrerenderList);
113
- await createPageContexts(urlList, prerenderContext, globalContext, globalContext_public, concurrencyLimit, false);
115
+ await createPageContexts(urlList, prerenderContext, globalContext, concurrencyLimit, false);
114
116
  // Create `pageContext` for 404 page
115
117
  const urlList404 = getUrlList404(globalContext);
116
- await createPageContexts(urlList404, prerenderContext, globalContext, globalContext_public, concurrencyLimit, true);
118
+ await createPageContexts(urlList404, prerenderContext, globalContext, concurrencyLimit, true);
117
119
  // Allow user to duplicate the list of `pageContext` for i18n
118
120
  // https://vike.dev/onPrerenderStart
119
121
  await callOnPrerenderStartHook(prerenderContext, globalContext, concurrencyLimit);
@@ -132,8 +134,8 @@ async function runPrerender(options = {}, standaloneTrigger) {
132
134
  console.log(`${pc.green(`✓`)} ${prerenderedCount} HTML documents pre-rendered.`);
133
135
  }
134
136
  await warnMissingPages(prerenderContext._prerenderedPageContexts, globalContext, doNotPrerenderList, partial);
135
- const prerenderContextPublic = makePublic(prerenderContext);
136
- objectAssign(vike.prerenderContext, prerenderContextPublic);
137
+ const prerenderContextPublic = preparePrerenderContextForPublicUsage(prerenderContext);
138
+ objectAssign(vike.prerenderContext, prerenderContextPublic, true);
137
139
  if (prerenderConfigGlobal.isPrerenderingEnabledForAllPages && !prerenderConfigGlobal.keepDistServer) {
138
140
  fs.rmSync(outDirServer, { recursive: true });
139
141
  }
@@ -195,7 +197,7 @@ function assertExportNames(pageFile) {
195
197
  const { exportNames, fileType } = pageFile;
196
198
  assert(exportNames || fileType === '.page.route' || fileType === '.css', pageFile.filePath);
197
199
  }
198
- async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext, globalContext_public, concurrencyLimit, doNotPrerenderList) {
200
+ async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext, concurrencyLimit, doNotPrerenderList) {
199
201
  const onBeforePrerenderStartHooks = [];
200
202
  // V1 design
201
203
  await Promise.all(globalContext._pageConfigs.map((pageConfig) => concurrencyLimit(async () => {
@@ -238,10 +240,11 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext,
238
240
  hookTimeout: getHookTimeoutDefault('onBeforePrerenderStart')
239
241
  });
240
242
  })));
241
- await Promise.all(onBeforePrerenderStartHooks.map(({ hookFn, hookName, hookFilePath, pageId, hookTimeout }) => concurrencyLimit(async () => {
243
+ await Promise.all(onBeforePrerenderStartHooks.map(({ pageId, ...hook }) => concurrencyLimit(async () => {
242
244
  if (doNotPrerenderList.find((p) => p.pageId === pageId))
243
245
  return;
244
- const prerenderResult = await executeHook(() => hookFn(), { hookName, hookFilePath, hookTimeout }, null);
246
+ const { hookName, hookFilePath } = hook;
247
+ const prerenderResult = await execHookWithoutPageContext(() => hook.hookFn(), hook);
245
248
  const result = normalizeOnPrerenderHookResult(prerenderResult, hookFilePath, hookName);
246
249
  // Handle result
247
250
  await Promise.all(result.map(async ({ url, pageContext }) => {
@@ -258,7 +261,7 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext,
258
261
  }
259
262
  // Add result
260
263
  const providedByHook = { hookFilePath, hookName };
261
- const pageContextNew = await createPageContextPrerendering(url, prerenderContext, globalContext, globalContext_public, false, undefined, providedByHook);
264
+ const pageContextNew = await createPageContextPrerendering(url, prerenderContext, globalContext, false, undefined, providedByHook);
262
265
  prerenderContext.pageContexts.push(pageContextNew);
263
266
  if (pageContext) {
264
267
  objectAssign(pageContextNew, { _pageContextAlreadyProvidedByOnPrerenderHook: true });
@@ -304,22 +307,22 @@ function getUrlList404(globalContext) {
304
307
  }
305
308
  return urlList;
306
309
  }
307
- async function createPageContexts(urlList, prerenderContext, globalContext, globalContext_public, concurrencyLimit, is404) {
310
+ async function createPageContexts(urlList, prerenderContext, globalContext, concurrencyLimit, is404) {
308
311
  await Promise.all(urlList.map(({ urlOriginal, pageId }) => concurrencyLimit(async () => {
309
312
  // Already included in a onBeforePrerenderStart() hook
310
313
  if (prerenderContext.pageContexts.find((pageContext) => isSameUrl(pageContext.urlOriginal, urlOriginal))) {
311
314
  return;
312
315
  }
313
- const pageContext = await createPageContextPrerendering(urlOriginal, prerenderContext, globalContext, globalContext_public, is404, pageId, null);
316
+ const pageContext = await createPageContextPrerendering(urlOriginal, prerenderContext, globalContext, is404, pageId, null);
314
317
  prerenderContext.pageContexts.push(pageContext);
315
318
  })));
316
319
  }
317
- async function createPageContextPrerendering(urlOriginal, prerenderContext, globalContext, globalContext_public, is404, pageId, providedByHook) {
320
+ async function createPageContextPrerendering(urlOriginal, prerenderContext, globalContext, is404, pageId, providedByHook) {
318
321
  const pageContextInit = {
319
322
  urlOriginal,
320
323
  ...prerenderContext._pageContextInit
321
324
  };
322
- const pageContext = await createPageContextServerSide(pageContextInit, globalContext, globalContext_public, {
325
+ const pageContext = await createPageContextServerSide(pageContextInit, globalContext, {
323
326
  isPrerendering: true
324
327
  });
325
328
  assert(pageContext.isPrerendering === true);
@@ -348,7 +351,7 @@ async function createPageContextPrerendering(urlOriginal, prerenderContext, glob
348
351
  routeParams: {}
349
352
  });
350
353
  }
351
- objectAssign(pageContext, await loadUserFilesServerSide(pageContext));
354
+ objectAssign(pageContext, await loadPageConfigsLazyServerSide(pageContext));
352
355
  let usesClientRouter;
353
356
  {
354
357
  const { pageId } = pageContext;
@@ -463,26 +466,13 @@ async function callOnPrerenderStartHook(prerenderContext, globalContext, concurr
463
466
  assert(pageContext.urlOriginal);
464
467
  pageContext._urlOriginalBeforeHook = pageContext.urlOriginal;
465
468
  });
466
- const docLink = 'https://vike.dev/i18n#pre-rendering';
467
469
  prerenderContext.pageContexts.forEach((pageContext) => {
468
470
  // Preserve URL computed properties when the user is copying pageContext is his onPrerenderStart() hook, e.g. /examples/i18n/
469
471
  // https://vike.dev/i18n#pre-rendering
470
472
  preservePropertyGetters(pageContext);
471
473
  });
472
- let result = await executeHook(() => {
473
- const prerenderContextPublic = makePublic(prerenderContext);
474
- // TODO/v1-release: remove warning
475
- Object.defineProperty(prerenderContextPublic, 'prerenderPageContexts', {
476
- get() {
477
- assertWarning(false, `prerenderPageContexts has been renamed pageContexts, see ${docLink}`, {
478
- showStackTrace: true,
479
- onlyOnce: true
480
- });
481
- return prerenderContext.pageContexts;
482
- }
483
- });
484
- return hookFn(prerenderContextPublic);
485
- }, onPrerenderStartHook, null);
474
+ const prerenderContextPublic = preparePrerenderContextForPublicUsage(prerenderContext);
475
+ let result = await execHookWithoutPageContext(() => hookFn(prerenderContextPublic), onPrerenderStartHook);
486
476
  // Before applying result
487
477
  prerenderContext.pageContexts.forEach((pageContext) => {
488
478
  ;
@@ -731,10 +721,24 @@ function assertIsNotAbort(err, urlOriginal) {
731
721
  assert(abortCall);
732
722
  assertUsage(false, `${pc.cyan(abortCall)} thrown${thrownBy} while pre-rendering ${urlOriginal} but ${pc.cyan(abortCaller)} isn't supported for pre-rendered pages`);
733
723
  }
734
- function makePublic(prerenderContext) {
735
- const prerenderContextPublic = getPublicProxy(prerenderContext, 'prerenderContext', [
736
- 'output', // vite-plugin-vercel
737
- 'pageContexts' // https://vike.dev/i18n#pre-rendering
738
- ]);
724
+ function preparePrerenderContextForPublicUsage(prerenderContext) {
725
+ // TODO/v1-release: remove
726
+ if (!('prerenderPageContexts' in prerenderContext)) {
727
+ Object.defineProperty(prerenderContext, 'prerenderPageContexts', {
728
+ get() {
729
+ assertWarning(false, `prerenderPageContexts has been renamed pageContexts, see ${pc.underline(docLink)}`, {
730
+ showStackTrace: true,
731
+ onlyOnce: true
732
+ });
733
+ return prerenderContext.pageContexts;
734
+ }
735
+ });
736
+ }
737
+ // Required because of https://vike.dev/i18n#pre-rendering
738
+ // - Thus, we have to let users access the original pageContext object => we cannot use ES proxies and we cannot use preparePageContextForPublicUsage()
739
+ prerenderContext.pageContexts.forEach((pageContext) => {
740
+ changeEnumerable(pageContext, '_isOriginalObject', true);
741
+ });
742
+ const prerenderContextPublic = getProxyForPublicUsage(prerenderContext, 'prerenderContext');
739
743
  return prerenderContextPublic;
740
744
  }
@@ -13,6 +13,6 @@ export * from '../../utils/pLimit.js';
13
13
  export * from '../../utils/isFilePathAbsoluteFilesystem.js';
14
14
  export * from '../../utils/isArray.js';
15
15
  export * from '../../utils/isObject.js';
16
- export * from '../../utils/getPublicProxy.js';
17
16
  export * from '../../utils/isNullish.js';
18
17
  export * from '../../utils/preservePropertyGetters.js';
18
+ export * from '../../utils/changeEnumerable.js';
@@ -15,6 +15,6 @@ export * from '../../utils/pLimit.js';
15
15
  export * from '../../utils/isFilePathAbsoluteFilesystem.js';
16
16
  export * from '../../utils/isArray.js';
17
17
  export * from '../../utils/isObject.js';
18
- export * from '../../utils/getPublicProxy.js';
19
18
  export * from '../../utils/isNullish.js';
20
19
  export * from '../../utils/preservePropertyGetters.js';
20
+ export * from '../../utils/changeEnumerable.js';