vike 0.4.229 → 0.4.230-commit-dd11364

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 (235) 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 +2 -5
  4. package/dist/cjs/node/plugin/index.js +3 -1
  5. package/dist/cjs/node/plugin/onLoad.js +2 -0
  6. package/dist/cjs/node/plugin/plugins/build/pluginDistFileNames.js +1 -0
  7. package/dist/cjs/node/plugin/plugins/build/pluginModuleBanner.js +4 -4
  8. package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +5 -0
  9. package/dist/cjs/node/plugin/plugins/envVars.js +17 -19
  10. package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +3 -1
  11. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/assertExtensions.js +2 -2
  12. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +5 -0
  13. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +1 -1
  14. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.js +6 -0
  15. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +2 -2
  16. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +12 -8
  17. package/dist/cjs/node/plugin/plugins/replaceConstants.js +76 -0
  18. package/dist/cjs/node/plugin/shared/applyRegExWithMagicString.js +10 -0
  19. package/dist/cjs/node/plugin/shared/findPageFiles.js +1 -1
  20. package/dist/cjs/node/plugin/shared/loggerNotProd.js +2 -2
  21. package/dist/cjs/node/plugin/shared/resolveClientEntriesDev.js +1 -1
  22. package/dist/cjs/node/prerender/runPrerender.js +42 -38
  23. package/dist/cjs/node/prerender/utils.js +1 -1
  24. package/dist/cjs/node/runtime/globalContext.js +13 -27
  25. package/dist/cjs/node/runtime/html/renderHtml.js +12 -2
  26. package/dist/cjs/node/runtime/html/serializeContext.js +4 -2
  27. package/dist/cjs/node/runtime/renderPage/createHttpResponse/getCacheControl.js +7 -5
  28. package/dist/cjs/node/runtime/renderPage/createHttpResponse.js +3 -4
  29. package/dist/cjs/node/runtime/renderPage/createPageContextServerSide.js +6 -9
  30. package/dist/cjs/node/runtime/renderPage/execHookServer.js +11 -0
  31. package/dist/cjs/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +14 -15
  32. package/dist/cjs/node/runtime/renderPage/executeOnRenderHtmlHook.js +8 -12
  33. package/dist/cjs/node/runtime/renderPage/getHttpResponseBody.js +1 -1
  34. package/dist/cjs/node/runtime/renderPage/getPageAssets.js +1 -1
  35. package/dist/cjs/node/runtime/renderPage/{loadUserFilesServerSide.js → loadPageConfigsLazyServerSide.js} +4 -4
  36. package/dist/cjs/node/runtime/renderPage/preparePageContextForPublicUsageServer.js +10 -0
  37. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +5 -5
  38. package/dist/cjs/node/runtime/renderPage/resolveRedirects.js +0 -2
  39. package/dist/cjs/node/runtime/renderPage.js +21 -12
  40. package/dist/cjs/node/runtime/utils.js +1 -1
  41. package/dist/cjs/shared/NOT_SERIALIZABLE.js +0 -1
  42. package/dist/cjs/shared/addIs404ToPageProps.js +0 -7
  43. package/dist/cjs/shared/createGlobalContextShared.js +37 -8
  44. package/dist/cjs/shared/createPageContextShared.js +14 -11
  45. package/dist/cjs/shared/getPageContext.js +3 -3
  46. package/dist/cjs/shared/getPageContextUrlComputed.js +2 -36
  47. package/dist/cjs/shared/getProxyForPublicUsage.js +56 -0
  48. package/dist/cjs/shared/hooks/execHook.js +170 -0
  49. package/dist/cjs/shared/hooks/getHook.js +23 -4
  50. package/dist/cjs/shared/page-configs/{getPageConfigUserFriendly.js → getUserFriendlyConfigs.js} +54 -47
  51. package/dist/cjs/shared/prepareGlobalContextForPublicUsage.js +10 -0
  52. package/dist/cjs/shared/preparePageContextForPublicUsage.js +80 -0
  53. package/dist/cjs/shared/route/abort.js +2 -2
  54. package/dist/cjs/shared/route/debug.js +17 -7
  55. package/dist/cjs/shared/route/executeGuardHook.js +4 -9
  56. package/dist/cjs/shared/route/executeOnBeforeRouteHook.js +4 -3
  57. package/dist/cjs/shared/route/index.js +2 -4
  58. package/dist/cjs/shared/route/loadPageRoutes.js +6 -0
  59. package/dist/cjs/shared/route/resolveRouteFunction.js +14 -10
  60. package/dist/cjs/shared/utils.js +1 -0
  61. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  62. package/dist/cjs/utils/debug.js +15 -6
  63. package/dist/cjs/utils/isDev.js +3 -1
  64. package/dist/cjs/utils/isScriptFile.js +24 -21
  65. package/dist/cjs/utils/objectAssign.js +3 -3
  66. package/dist/cjs/utils/objectDefineProperty.js +1 -1
  67. package/dist/cjs/utils/parseNpmPackage.js +1 -0
  68. package/dist/cjs/utils/parseUrl-extras.js +0 -1
  69. package/dist/cjs/utils/requireResolve.js +39 -19
  70. package/dist/esm/client/client-routing-runtime/{createPageContext.d.ts → createPageContextClientSide.d.ts} +21 -13
  71. package/dist/esm/client/client-routing-runtime/{createPageContext.js → createPageContextClientSide.js} +9 -11
  72. package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.d.ts +400 -15
  73. package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +56 -54
  74. package/dist/esm/client/client-routing-runtime/globalContext.d.ts +11 -1
  75. package/dist/esm/client/client-routing-runtime/prefetch.d.ts +3 -8
  76. package/dist/esm/client/client-routing-runtime/prefetch.js +3 -3
  77. package/dist/esm/client/client-routing-runtime/preparePageContextForPublicUsageClient.d.ts +11 -0
  78. package/dist/esm/client/client-routing-runtime/preparePageContextForPublicUsageClient.js +5 -0
  79. package/dist/esm/client/client-routing-runtime/renderPageClientSide.d.ts +135 -0
  80. package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +72 -81
  81. package/dist/esm/client/client-routing-runtime/utils.d.ts +1 -0
  82. package/dist/esm/client/client-routing-runtime/utils.js +1 -0
  83. package/dist/esm/client/server-routing-runtime/createPageContextClientSide.d.ts +19 -13
  84. package/dist/esm/client/server-routing-runtime/createPageContextClientSide.js +15 -26
  85. package/dist/esm/client/server-routing-runtime/entry.js +4 -4
  86. package/dist/esm/client/server-routing-runtime/globalContext.d.ts +11 -1
  87. package/dist/esm/client/server-routing-runtime/preparePageContextForPublicUsageClient.d.ts +9 -0
  88. package/dist/esm/client/server-routing-runtime/preparePageContextForPublicUsageClient.js +5 -0
  89. package/dist/esm/client/server-routing-runtime/utils.d.ts +1 -0
  90. package/dist/esm/client/server-routing-runtime/utils.js +1 -0
  91. package/dist/esm/client/shared/createGetGlobalContextClient.d.ts +11 -1
  92. package/dist/esm/client/shared/executeOnRenderClientHook.d.ts +3 -3
  93. package/dist/esm/client/shared/executeOnRenderClientHook.js +4 -13
  94. package/dist/esm/client/shared/{loadUserFilesClientSide.d.ts → loadPageConfigsLazyClientSide.d.ts} +2 -2
  95. package/dist/esm/client/shared/{loadUserFilesClientSide.js → loadPageConfigsLazyClientSide.js} +4 -4
  96. package/dist/esm/client/shared/preparePageContextForPublicUsageClientShared.d.ts +11 -0
  97. package/dist/esm/client/shared/preparePageContextForPublicUsageClientShared.js +39 -0
  98. package/dist/esm/node/api/build.js +2 -2
  99. package/dist/esm/node/plugin/index.js +3 -1
  100. package/dist/esm/node/plugin/onLoad.js +2 -0
  101. package/dist/esm/node/plugin/plugins/build/pluginDistFileNames.js +1 -0
  102. package/dist/esm/node/plugin/plugins/build/pluginModuleBanner.js +4 -4
  103. package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +6 -1
  104. package/dist/esm/node/plugin/plugins/envVars.js +18 -20
  105. package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +4 -2
  106. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/assertExtensions.d.ts +1 -2
  107. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/assertExtensions.js +2 -2
  108. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +5 -0
  109. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +2 -2
  110. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.js +7 -1
  111. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +3 -3
  112. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +1 -1
  113. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +12 -8
  114. package/dist/esm/node/plugin/plugins/replaceConstants.d.ts +3 -0
  115. package/dist/esm/node/plugin/plugins/replaceConstants.js +71 -0
  116. package/dist/esm/node/plugin/shared/applyRegExWithMagicString.d.ts +3 -0
  117. package/dist/esm/node/plugin/shared/applyRegExWithMagicString.js +8 -0
  118. package/dist/esm/node/plugin/shared/findPageFiles.js +2 -2
  119. package/dist/esm/node/plugin/shared/loggerNotProd.js +1 -1
  120. package/dist/esm/node/plugin/shared/resolveClientEntriesDev.d.ts +1 -1
  121. package/dist/esm/node/plugin/shared/resolveClientEntriesDev.js +1 -1
  122. package/dist/esm/node/prerender/runPrerender.d.ts +37 -73
  123. package/dist/esm/node/prerender/runPrerender.js +42 -38
  124. package/dist/esm/node/prerender/utils.d.ts +1 -1
  125. package/dist/esm/node/prerender/utils.js +1 -1
  126. package/dist/esm/node/runtime/globalContext.d.ts +46 -251
  127. package/dist/esm/node/runtime/globalContext.js +14 -28
  128. package/dist/esm/node/runtime/html/renderHtml.js +12 -2
  129. package/dist/esm/node/runtime/html/serializeContext.d.ts +1 -1
  130. package/dist/esm/node/runtime/html/serializeContext.js +4 -2
  131. package/dist/esm/node/runtime/renderPage/createHttpResponse/getCacheControl.d.ts +1 -1
  132. package/dist/esm/node/runtime/renderPage/createHttpResponse/getCacheControl.js +7 -5
  133. package/dist/esm/node/runtime/renderPage/createHttpResponse.d.ts +2 -2
  134. package/dist/esm/node/runtime/renderPage/createHttpResponse.js +3 -4
  135. package/dist/esm/node/runtime/renderPage/createPageContextServerSide.d.ts +26 -41
  136. package/dist/esm/node/runtime/renderPage/createPageContextServerSide.js +7 -10
  137. package/dist/esm/node/runtime/renderPage/execHookServer.d.ts +12 -0
  138. package/dist/esm/node/runtime/renderPage/execHookServer.js +9 -0
  139. package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.d.ts +2 -3
  140. package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +14 -15
  141. package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.d.ts +4 -2
  142. package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.js +8 -12
  143. package/dist/esm/node/runtime/renderPage/getHttpResponseBody.js +1 -1
  144. package/dist/esm/node/runtime/renderPage/getPageAssets.js +1 -1
  145. package/dist/esm/node/runtime/renderPage/{loadUserFilesServerSide.d.ts → loadPageConfigsLazyServerSide.d.ts} +6 -6
  146. package/dist/esm/node/runtime/renderPage/{loadUserFilesServerSide.js → loadPageConfigsLazyServerSide.js} +4 -4
  147. package/dist/esm/node/runtime/renderPage/preparePageContextForPublicUsageServer.d.ts +20 -0
  148. package/dist/esm/node/runtime/renderPage/preparePageContextForPublicUsageServer.js +8 -0
  149. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +38 -74
  150. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +5 -5
  151. package/dist/esm/node/runtime/renderPage/resolveRedirects.d.ts +0 -2
  152. package/dist/esm/node/runtime/renderPage/resolveRedirects.js +0 -1
  153. package/dist/esm/node/runtime/renderPage.d.ts +21 -39
  154. package/dist/esm/node/runtime/renderPage.js +22 -13
  155. package/dist/esm/node/runtime/utils.d.ts +1 -1
  156. package/dist/esm/node/runtime/utils.js +1 -1
  157. package/dist/esm/shared/NOT_SERIALIZABLE.js +0 -1
  158. package/dist/esm/shared/addIs404ToPageProps.d.ts +1 -6
  159. package/dist/esm/shared/addIs404ToPageProps.js +1 -8
  160. package/dist/esm/shared/createGlobalContextShared.d.ts +28 -6
  161. package/dist/esm/shared/createGlobalContextShared.js +37 -8
  162. package/dist/esm/shared/createPageContextShared.d.ts +7 -6
  163. package/dist/esm/shared/createPageContextShared.js +15 -12
  164. package/dist/esm/shared/getPageContext.d.ts +1 -1
  165. package/dist/esm/shared/getPageContext.js +1 -1
  166. package/dist/esm/shared/getPageContextUrlComputed.d.ts +2 -5
  167. package/dist/esm/shared/getPageContextUrlComputed.js +3 -37
  168. package/dist/esm/shared/getPageFiles.d.ts +1 -1
  169. package/dist/esm/shared/getProxyForPublicUsage.d.ts +4 -0
  170. package/dist/esm/shared/getProxyForPublicUsage.js +54 -0
  171. package/dist/esm/shared/hooks/execHook.d.ts +63 -0
  172. package/dist/esm/shared/hooks/execHook.js +168 -0
  173. package/dist/esm/shared/hooks/getHook.d.ts +10 -11
  174. package/dist/esm/shared/hooks/getHook.js +23 -4
  175. package/dist/esm/shared/page-configs/Config.d.ts +11 -4
  176. package/dist/esm/shared/page-configs/{getPageConfigUserFriendly.d.ts → getUserFriendlyConfigs.d.ts} +8 -6
  177. package/dist/esm/shared/page-configs/{getPageConfigUserFriendly.js → getUserFriendlyConfigs.js} +55 -48
  178. package/dist/esm/shared/prepareGlobalContextForPublicUsage.d.ts +7 -0
  179. package/dist/esm/shared/prepareGlobalContextForPublicUsage.js +8 -0
  180. package/dist/esm/shared/preparePageContextForPublicUsage.d.ts +11 -0
  181. package/dist/esm/shared/preparePageContextForPublicUsage.js +78 -0
  182. package/dist/esm/shared/route/abort.js +1 -1
  183. package/dist/esm/shared/route/debug.d.ts +4 -1
  184. package/dist/esm/shared/route/debug.js +17 -7
  185. package/dist/esm/shared/route/executeGuardHook.d.ts +4 -3
  186. package/dist/esm/shared/route/executeGuardHook.js +4 -9
  187. package/dist/esm/shared/route/executeOnBeforeRouteHook.js +4 -3
  188. package/dist/esm/shared/route/index.js +2 -4
  189. package/dist/esm/shared/route/loadPageRoutes.d.ts +2 -1
  190. package/dist/esm/shared/route/loadPageRoutes.js +7 -1
  191. package/dist/esm/shared/route/resolveRouteFunction.d.ts +2 -2
  192. package/dist/esm/shared/route/resolveRouteFunction.js +14 -10
  193. package/dist/esm/shared/types.d.ts +14 -4
  194. package/dist/esm/shared/utils.d.ts +1 -0
  195. package/dist/esm/shared/utils.js +1 -0
  196. package/dist/esm/types/index.d.ts +1 -1
  197. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  198. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  199. package/dist/esm/utils/debug.d.ts +1 -1
  200. package/dist/esm/utils/debug.js +15 -6
  201. package/dist/esm/utils/isDev.js +3 -1
  202. package/dist/esm/utils/isScriptFile.d.ts +5 -5
  203. package/dist/esm/utils/isScriptFile.js +23 -20
  204. package/dist/esm/utils/objectAssign.d.ts +1 -1
  205. package/dist/esm/utils/objectAssign.js +3 -3
  206. package/dist/esm/utils/objectDefineProperty.d.ts +0 -1
  207. package/dist/esm/utils/objectDefineProperty.js +1 -1
  208. package/dist/esm/utils/parseNpmPackage.d.ts +2 -0
  209. package/dist/esm/utils/parseNpmPackage.js +1 -1
  210. package/dist/esm/utils/parseUrl-extras.js +0 -1
  211. package/dist/esm/utils/requireResolve.js +39 -19
  212. package/package.json +2 -2
  213. package/dist/cjs/client/shared/getPageContextProxyForUser.js +0 -16
  214. package/dist/cjs/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +0 -16
  215. package/dist/cjs/shared/getPageConfigsRuntime.js +0 -23
  216. package/dist/cjs/shared/hooks/executeHook.js +0 -87
  217. package/dist/cjs/shared/hooks/executeHookGeneric.js +0 -18
  218. package/dist/cjs/shared/preparePageContextForUserConsumption.js +0 -34
  219. package/dist/cjs/utils/getPublicProxy.js +0 -27
  220. package/dist/esm/client/shared/getPageContextProxyForUser.d.ts +0 -2
  221. package/dist/esm/client/shared/getPageContextProxyForUser.js +0 -14
  222. package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.d.ts +0 -12
  223. package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.js +0 -44
  224. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +0 -24
  225. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +0 -14
  226. package/dist/esm/shared/getPageConfigsRuntime.d.ts +0 -14
  227. package/dist/esm/shared/getPageConfigsRuntime.js +0 -21
  228. package/dist/esm/shared/hooks/executeHook.d.ts +0 -21
  229. package/dist/esm/shared/hooks/executeHook.js +0 -85
  230. package/dist/esm/shared/hooks/executeHookGeneric.d.ts +0 -8
  231. package/dist/esm/shared/hooks/executeHookGeneric.js +0 -16
  232. package/dist/esm/shared/preparePageContextForUserConsumption.d.ts +0 -5
  233. package/dist/esm/shared/preparePageContextForUserConsumption.js +0 -32
  234. package/dist/esm/utils/getPublicProxy.d.ts +0 -2
  235. package/dist/esm/utils/getPublicProxy.js +0 -25
@@ -20,20 +20,31 @@ export type { GlobalContextServerInternal as GlobalContextServerInternal };
20
20
  export type { GlobalContextServer };
21
21
  import type { ViteManifest } from '../shared/ViteManifest.js';
22
22
  import type { ResolvedConfig, ViteDevServer } from 'vite';
23
+ import type { PageConfigUserFriendly } from '../../shared/page-configs/getUserFriendlyConfigs.js';
23
24
  import type { ViteConfigRuntime } from '../plugin/shared/getViteConfigRuntime.js';
24
25
  import type { GlobalContext } from '../../shared/types.js';
25
- type GlobalContextServer = ReturnType<typeof makePublic> & Vike.GlobalContext & Vike.GlobalContextServer;
26
+ type GlobalContextServer = Pick<GlobalContextServerInternal, 'assetsManifest' | 'config' | 'viteConfig' | 'viteConfigRuntime' | 'pages' | 'baseServer' | 'baseAssets' | 'isClientSide'> & Vike.GlobalContext & Vike.GlobalContextServer;
26
27
  type GlobalContextServerInternal = Awaited<ReturnType<typeof setGlobalContext>>;
27
28
  declare function getGlobalContextServerInternal(): Promise<{
28
29
  globalContext: (Record<string, unknown> & {
29
30
  isGlobalContext: true;
31
+ _isOriginalObject: true;
30
32
  _virtualFileExports: unknown;
31
33
  _pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
32
34
  _pageConfigs: import("../../__internal/index.js").PageConfig[];
33
35
  _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
34
36
  _allPageIds: string[];
37
+ _userFriendlyConfigsGlobal: PageConfigUserFriendly;
35
38
  config: import("../../types/index.js").ConfigResolved;
36
- pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
39
+ pages: {
40
+ [k: string]: PageConfigUserFriendly & ({
41
+ route: import("../../shared/page-configs/Config.js").Route;
42
+ isErrorPage?: undefined;
43
+ } | {
44
+ route?: undefined;
45
+ isErrorPage: true;
46
+ });
47
+ };
37
48
  } & {
38
49
  _isProduction: false;
39
50
  _isPrerendering: false;
@@ -55,23 +66,25 @@ declare function getGlobalContextServerInternal(): Promise<{
55
66
  isClientSide: false;
56
67
  _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
57
68
  _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
58
- isGlobalContext: true;
59
- _virtualFileExports: unknown;
60
- _pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
61
- _pageConfigs: import("../../__internal/index.js").PageConfig[];
62
- _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
63
- _allPageIds: string[];
64
- config: import("../../types/index.js").ConfigResolved;
65
- pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
66
69
  }) | (Record<string, unknown> & {
67
70
  isGlobalContext: true;
71
+ _isOriginalObject: true;
68
72
  _virtualFileExports: unknown;
69
73
  _pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
70
74
  _pageConfigs: import("../../__internal/index.js").PageConfig[];
71
75
  _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
72
76
  _allPageIds: string[];
77
+ _userFriendlyConfigsGlobal: PageConfigUserFriendly;
73
78
  config: import("../../types/index.js").ConfigResolved;
74
- pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
79
+ pages: {
80
+ [k: string]: PageConfigUserFriendly & ({
81
+ route: import("../../shared/page-configs/Config.js").Route;
82
+ isErrorPage?: undefined;
83
+ } | {
84
+ route?: undefined;
85
+ isErrorPage: true;
86
+ });
87
+ };
75
88
  } & {
76
89
  _isPrerendering: true;
77
90
  viteConfig: ResolvedConfig;
@@ -94,23 +107,25 @@ declare function getGlobalContextServerInternal(): Promise<{
94
107
  isClientSide: false;
95
108
  _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
96
109
  _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
97
- isGlobalContext: true;
98
- _virtualFileExports: unknown;
99
- _pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
100
- _pageConfigs: import("../../__internal/index.js").PageConfig[];
101
- _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
102
- _allPageIds: string[];
103
- config: import("../../types/index.js").ConfigResolved;
104
- pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
105
110
  }) | (Record<string, unknown> & {
106
111
  isGlobalContext: true;
112
+ _isOriginalObject: true;
107
113
  _virtualFileExports: unknown;
108
114
  _pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
109
115
  _pageConfigs: import("../../__internal/index.js").PageConfig[];
110
116
  _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
111
117
  _allPageIds: string[];
118
+ _userFriendlyConfigsGlobal: PageConfigUserFriendly;
112
119
  config: import("../../types/index.js").ConfigResolved;
113
- pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
120
+ pages: {
121
+ [k: string]: PageConfigUserFriendly & ({
122
+ route: import("../../shared/page-configs/Config.js").Route;
123
+ isErrorPage?: undefined;
124
+ } | {
125
+ route?: undefined;
126
+ isErrorPage: true;
127
+ });
128
+ };
114
129
  } & {
115
130
  _isPrerendering: false;
116
131
  viteConfig: null;
@@ -133,114 +148,7 @@ declare function getGlobalContextServerInternal(): Promise<{
133
148
  isClientSide: false;
134
149
  _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
135
150
  _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
136
- isGlobalContext: true;
137
- _virtualFileExports: unknown;
138
- _pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
139
- _pageConfigs: import("../../__internal/index.js").PageConfig[];
140
- _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
141
- _allPageIds: string[];
142
- config: import("../../types/index.js").ConfigResolved;
143
- pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
144
151
  });
145
- globalContext_public: Record<string, unknown> & Pick<{
146
- isGlobalContext: true;
147
- _virtualFileExports: unknown;
148
- _pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
149
- _pageConfigs: import("../../__internal/index.js").PageConfig[];
150
- _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
151
- _allPageIds: string[];
152
- config: import("../../types/index.js").ConfigResolved;
153
- pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
154
- } & ({
155
- _isProduction: false;
156
- _isPrerendering: false;
157
- assetsManifest: null;
158
- _viteDevServer: ViteDevServer;
159
- viteConfig: ResolvedConfig;
160
- viteConfigRuntime: {
161
- root: string;
162
- build: {
163
- outDir: string;
164
- };
165
- _baseViteOriginal: string;
166
- vitePluginServerEntry: {
167
- inject: boolean | undefined;
168
- };
169
- };
170
- baseServer: string;
171
- baseAssets: string;
172
- isClientSide: false;
173
- _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
174
- _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
175
- isGlobalContext: true;
176
- _virtualFileExports: unknown;
177
- _pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
178
- _pageConfigs: import("../../__internal/index.js").PageConfig[];
179
- _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
180
- _allPageIds: string[];
181
- config: import("../../types/index.js").ConfigResolved;
182
- pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
183
- } | {
184
- _isPrerendering: true;
185
- viteConfig: ResolvedConfig;
186
- _isProduction: true;
187
- assetsManifest: ViteManifest;
188
- _viteDevServer: null;
189
- viteConfigRuntime: {
190
- root: string;
191
- build: {
192
- outDir: string;
193
- };
194
- _baseViteOriginal: string;
195
- vitePluginServerEntry: {
196
- inject: boolean | undefined;
197
- };
198
- };
199
- _usesClientRouter: boolean;
200
- baseServer: string;
201
- baseAssets: string;
202
- isClientSide: false;
203
- _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
204
- _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
205
- isGlobalContext: true;
206
- _virtualFileExports: unknown;
207
- _pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
208
- _pageConfigs: import("../../__internal/index.js").PageConfig[];
209
- _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
210
- _allPageIds: string[];
211
- config: import("../../types/index.js").ConfigResolved;
212
- pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
213
- } | {
214
- _isPrerendering: false;
215
- viteConfig: null;
216
- _isProduction: true;
217
- assetsManifest: ViteManifest;
218
- _viteDevServer: null;
219
- viteConfigRuntime: {
220
- root: string;
221
- build: {
222
- outDir: string;
223
- };
224
- _baseViteOriginal: string;
225
- vitePluginServerEntry: {
226
- inject: boolean | undefined;
227
- };
228
- };
229
- _usesClientRouter: boolean;
230
- baseServer: string;
231
- baseAssets: string;
232
- isClientSide: false;
233
- _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
234
- _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
235
- isGlobalContext: true;
236
- _virtualFileExports: unknown;
237
- _pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
238
- _pageConfigs: import("../../__internal/index.js").PageConfig[];
239
- _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
240
- _allPageIds: string[];
241
- config: import("../../types/index.js").ConfigResolved;
242
- pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
243
- }), "pages" | "viteConfig" | "viteConfigRuntime" | "assetsManifest" | "baseServer" | "baseAssets" | "config" | "isClientSide"> & Vike.GlobalContext & Vike.GlobalContextServer;
244
152
  }>;
245
153
  /**
246
154
  * Get runtime information about your app.
@@ -262,105 +170,6 @@ declare function getGlobalContextAsync(isProduction: boolean): Promise<GlobalCon
262
170
  * @deprecated
263
171
  */
264
172
  declare function getGlobalContextSync(): GlobalContext;
265
- declare function makePublic(globalContext: GlobalContextServerInternal): Pick<{
266
- isGlobalContext: true;
267
- _virtualFileExports: unknown;
268
- _pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
269
- _pageConfigs: import("../../__internal/index.js").PageConfig[];
270
- _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
271
- _allPageIds: string[];
272
- config: import("../../types/index.js").ConfigResolved;
273
- pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
274
- } & ({
275
- _isProduction: false;
276
- _isPrerendering: false;
277
- assetsManifest: null;
278
- _viteDevServer: ViteDevServer;
279
- viteConfig: ResolvedConfig;
280
- viteConfigRuntime: {
281
- root: string;
282
- build: {
283
- outDir: string;
284
- };
285
- _baseViteOriginal: string;
286
- vitePluginServerEntry: {
287
- inject: boolean | undefined;
288
- };
289
- };
290
- baseServer: string;
291
- baseAssets: string;
292
- isClientSide: false;
293
- _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
294
- _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
295
- isGlobalContext: true;
296
- _virtualFileExports: unknown;
297
- _pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
298
- _pageConfigs: import("../../__internal/index.js").PageConfig[];
299
- _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
300
- _allPageIds: string[];
301
- config: import("../../types/index.js").ConfigResolved;
302
- pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
303
- } | {
304
- _isPrerendering: true;
305
- viteConfig: ResolvedConfig;
306
- _isProduction: true;
307
- assetsManifest: ViteManifest;
308
- _viteDevServer: null;
309
- viteConfigRuntime: {
310
- root: string;
311
- build: {
312
- outDir: string;
313
- };
314
- _baseViteOriginal: string;
315
- vitePluginServerEntry: {
316
- inject: boolean | undefined;
317
- };
318
- };
319
- _usesClientRouter: boolean;
320
- baseServer: string;
321
- baseAssets: string;
322
- isClientSide: false;
323
- _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
324
- _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
325
- isGlobalContext: true;
326
- _virtualFileExports: unknown;
327
- _pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
328
- _pageConfigs: import("../../__internal/index.js").PageConfig[];
329
- _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
330
- _allPageIds: string[];
331
- config: import("../../types/index.js").ConfigResolved;
332
- pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
333
- } | {
334
- _isPrerendering: false;
335
- viteConfig: null;
336
- _isProduction: true;
337
- assetsManifest: ViteManifest;
338
- _viteDevServer: null;
339
- viteConfigRuntime: {
340
- root: string;
341
- build: {
342
- outDir: string;
343
- };
344
- _baseViteOriginal: string;
345
- vitePluginServerEntry: {
346
- inject: boolean | undefined;
347
- };
348
- };
349
- _usesClientRouter: boolean;
350
- baseServer: string;
351
- baseAssets: string;
352
- isClientSide: false;
353
- _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
354
- _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
355
- isGlobalContext: true;
356
- _virtualFileExports: unknown;
357
- _pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
358
- _pageConfigs: import("../../__internal/index.js").PageConfig[];
359
- _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
360
- _allPageIds: string[];
361
- config: import("../../types/index.js").ConfigResolved;
362
- pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
363
- }), "pages" | "viteConfig" | "viteConfigRuntime" | "assetsManifest" | "baseServer" | "baseAssets" | "config" | "isClientSide">;
364
173
  declare function setGlobalContext_viteDevServer(viteDevServer: ViteDevServer): Promise<void>;
365
174
  declare function setGlobalContext_viteConfig(viteConfig: ResolvedConfig, viteConfigRuntime: ViteConfigRuntime): void;
366
175
  declare function setGlobalContext_isPrerendering(): void;
@@ -380,13 +189,23 @@ declare function assertBuildInfo(buildInfo: unknown): asserts buildInfo is Build
380
189
  declare function updateUserFiles(): Promise<void>;
381
190
  declare function setGlobalContext(virtualFileExports: unknown): Promise<{
382
191
  isGlobalContext: true;
192
+ _isOriginalObject: true;
383
193
  _virtualFileExports: unknown;
384
194
  _pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
385
195
  _pageConfigs: import("../../__internal/index.js").PageConfig[];
386
196
  _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
387
197
  _allPageIds: string[];
198
+ _userFriendlyConfigsGlobal: PageConfigUserFriendly;
388
199
  config: import("../../types/index.js").ConfigResolved;
389
- pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
200
+ pages: {
201
+ [k: string]: PageConfigUserFriendly & ({
202
+ route: import("../../shared/page-configs/Config.js").Route;
203
+ isErrorPage?: undefined;
204
+ } | {
205
+ route?: undefined;
206
+ isErrorPage: true;
207
+ });
208
+ };
390
209
  } & ({
391
210
  _isProduction: false;
392
211
  _isPrerendering: false;
@@ -408,14 +227,6 @@ declare function setGlobalContext(virtualFileExports: unknown): Promise<{
408
227
  isClientSide: false;
409
228
  _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
410
229
  _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
411
- isGlobalContext: true;
412
- _virtualFileExports: unknown;
413
- _pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
414
- _pageConfigs: import("../../__internal/index.js").PageConfig[];
415
- _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
416
- _allPageIds: string[];
417
- config: import("../../types/index.js").ConfigResolved;
418
- pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
419
230
  } | {
420
231
  _isPrerendering: true;
421
232
  viteConfig: ResolvedConfig;
@@ -438,14 +249,6 @@ declare function setGlobalContext(virtualFileExports: unknown): Promise<{
438
249
  isClientSide: false;
439
250
  _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
440
251
  _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
441
- isGlobalContext: true;
442
- _virtualFileExports: unknown;
443
- _pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
444
- _pageConfigs: import("../../__internal/index.js").PageConfig[];
445
- _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
446
- _allPageIds: string[];
447
- config: import("../../types/index.js").ConfigResolved;
448
- pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
449
252
  } | {
450
253
  _isPrerendering: false;
451
254
  viteConfig: null;
@@ -468,13 +271,5 @@ declare function setGlobalContext(virtualFileExports: unknown): Promise<{
468
271
  isClientSide: false;
469
272
  _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
470
273
  _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
471
- isGlobalContext: true;
472
- _virtualFileExports: unknown;
473
- _pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
474
- _pageConfigs: import("../../__internal/index.js").PageConfig[];
475
- _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
476
- _allPageIds: string[];
477
- config: import("../../types/index.js").ConfigResolved;
478
- pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
479
274
  })>;
480
275
  declare function clearGlobalContext(): void;
@@ -25,7 +25,7 @@ export { updateUserFiles };
25
25
  // - Without vike-server it's manually loaded here using importServerProductionEntry() which uses @brillout/vite-plugin-server-entry's autoImporter or crawler
26
26
  // - In development: globalObject.viteDevServer which is Vite's development server
27
27
  // - globalObject.viteDevServer is used by updateUserFiles() which then sets virtualFileExports
28
- import { assert, onSetupRuntime, assertUsage, assertWarning, isPlainObject, objectReplace, isObject, hasProp, debugGlob, getGlobalObject, genPromise, createDebugger, getPublicProxy, checkType, PROJECT_VERSION } from './utils.js';
28
+ import { assert, onSetupRuntime, assertUsage, assertWarning, isPlainObject, objectReplace, isObject, hasProp, debugGlob, getGlobalObject, genPromise, createDebugger, checkType, PROJECT_VERSION } from './utils.js';
29
29
  import { importServerProductionEntry } from '@brillout/vite-plugin-server-entry/runtime';
30
30
  import { virtualFileIdImportUserCodeServer } from '../shared/virtual-files/virtualFileImportUserCode.js';
31
31
  import pc from '@brillout/picocolors';
@@ -33,6 +33,7 @@ import { loadPageRoutes } from '../../shared/route/loadPageRoutes.js';
33
33
  import { assertV1Design } from '../shared/assertV1Design.js';
34
34
  import { resolveBase } from '../shared/resolveBase.js';
35
35
  import { createGlobalContextShared, getGlobalContextSyncErrMsg } from '../../shared/createGlobalContextShared.js';
36
+ import { prepareGlobalContextForPublicUsage } from '../../shared/prepareGlobalContextForPublicUsage.js';
36
37
  const debug = createDebugger('vike:globalContext');
37
38
  const globalObject = getGlobalObject('runtime/globalContext.ts', getInitialGlobalContext());
38
39
  // Trick to break down TypeScript circular dependency
@@ -44,10 +45,9 @@ async function getGlobalContextServerInternal() {
44
45
  assertGlobalContextIsDefined();
45
46
  if (globalObject.isProduction !== true)
46
47
  await globalObject.waitForUserFilesUpdate;
47
- const { globalContext, globalContext_public } = globalObjectTyped;
48
+ const { globalContext } = globalObjectTyped;
48
49
  assertIsDefined(globalContext);
49
- assert(globalContext_public);
50
- return { globalContext, globalContext_public };
50
+ return { globalContext };
51
51
  }
52
52
  function assertIsDefined(globalContext) {
53
53
  if (!globalContext) {
@@ -59,7 +59,6 @@ function assertIsDefined(globalContext) {
59
59
  function assertGlobalContextIsDefined() {
60
60
  assertIsDefined(globalObjectTyped.globalContext);
61
61
  assert(globalObject.globalContext);
62
- assert(globalObject.globalContext_public);
63
62
  }
64
63
  // We purposely return GlobalContext instead of GlobalContextServer because `import { getGlobalContext } from 'vike'` can resolve to the client-side implementation.
65
64
  /**
@@ -89,9 +88,7 @@ async function getGlobalContextAsync(isProduction) {
89
88
  if (!isProduction)
90
89
  await globalObject.waitForUserFilesUpdate;
91
90
  assertGlobalContextIsDefined();
92
- const { globalContext_public } = globalObjectTyped;
93
- assert(globalContext_public);
94
- return globalContext_public;
91
+ return getGlobalContextForPublicUsage();
95
92
  }
96
93
  /**
97
94
  * Get runtime information about your app.
@@ -102,26 +99,19 @@ async function getGlobalContextAsync(isProduction) {
102
99
  */
103
100
  function getGlobalContextSync() {
104
101
  debug('getGlobalContextSync()');
105
- const { globalContext_public } = globalObjectTyped;
106
- assertUsage(globalContext_public, getGlobalContextSyncErrMsg);
102
+ const { globalContext } = globalObjectTyped;
103
+ assertUsage(globalContext, getGlobalContextSyncErrMsg);
107
104
  assertWarning(false,
108
105
  // We discourage users from using it because `pageContext.globalContext` is safer: I ain't sure but there could be race conditions when using `getGlobalContextSync()` inside React/Vue components upon HMR.
109
106
  // We're lying about "is going to be deprecated in the next major release": let's keep it and see if users need it (so far I can't see a use case for it).
110
107
  'getGlobalContextSync() is going to be deprecated in the next major release, see https://vike.dev/getGlobalContext', { onlyOnce: true });
111
- return globalContext_public;
112
- }
113
- function makePublic(globalContext) {
114
- const globalContextPublic = getPublicProxy(globalContext, 'globalContext', [
115
- 'assetsManifest',
116
- 'config',
117
- 'viteConfig',
118
- 'viteConfigRuntime',
119
- 'pages',
120
- 'baseServer',
121
- 'baseAssets',
122
- 'isClientSide'
123
- ], true);
124
- return globalContextPublic;
108
+ return getGlobalContextForPublicUsage();
109
+ }
110
+ function getGlobalContextForPublicUsage() {
111
+ const { globalContext } = globalObjectTyped;
112
+ assert(globalContext);
113
+ const globalContextForPublicUsage = prepareGlobalContextForPublicUsage(globalContext);
114
+ return globalContextForPublicUsage;
125
115
  }
126
116
  async function setGlobalContext_viteDevServer(viteDevServer) {
127
117
  debug('setGlobalContext_viteDevServer()');
@@ -335,8 +325,6 @@ async function setGlobalContext(virtualFileExports) {
335
325
  assertV1Design(
336
326
  // pageConfigs is PageConfigRuntime[] but assertV1Design() requires PageConfigBuildTime[]
337
327
  globalContext._pageConfigs.length > 0, globalContext._pageFilesAll);
338
- // Public usage
339
- globalObject.globalContext_public = makePublic(globalContext);
340
328
  assertGlobalContextIsDefined();
341
329
  onSetupRuntime();
342
330
  // Never actually used, only used for TypeScript `ReturnType<typeof setGlobalContext>`
@@ -358,7 +346,6 @@ async function addGlobalContext(globalContext) {
358
346
  assert(viteConfigRuntime);
359
347
  assert(!isPrerendering);
360
348
  return {
361
- ...globalContext,
362
349
  ...globalContextBase,
363
350
  ...resolveBaseRuntime(viteConfigRuntime, globalContext.config),
364
351
  _isProduction: false,
@@ -376,7 +363,6 @@ async function addGlobalContext(globalContext) {
376
363
  assert(buildInfo);
377
364
  assert(assetsManifest);
378
365
  const globalContextBase2 = {
379
- ...globalContext,
380
366
  ...globalContextBase,
381
367
  ...resolveBaseRuntime(buildInfo.viteConfigRuntime, globalContext.config),
382
368
  _isProduction: true,
@@ -71,8 +71,18 @@ async function renderHtmlStream(streamOriginal, injectString, pageContext, onErr
71
71
  return injectAtStreamAfterFirstChunk();
72
72
  };
73
73
  }
74
- const streamWrapper = await processStream(streamOriginal, processStreamOptions);
75
- return streamWrapper;
74
+ let makeClosableAgain = () => { };
75
+ if (isStreamFromReactStreamingPackage(streamOriginal)) {
76
+ // Make sure Vike injects its HTML fragments, such as `<script id="vike_pageContext" type="application/json">`, before the stream is closed (if React/Vue finishes its stream before the promise below resolves).
77
+ makeClosableAgain = streamOriginal.doNotClose();
78
+ }
79
+ try {
80
+ const streamWrapper = await processStream(streamOriginal, processStreamOptions);
81
+ return streamWrapper;
82
+ }
83
+ finally {
84
+ makeClosableAgain();
85
+ }
76
86
  }
77
87
  function isTemplateWrapped(something) {
78
88
  return hasProp(something, '_template');
@@ -12,7 +12,7 @@ type PageContextSerialization = {
12
12
  is404: null | boolean;
13
13
  pageProps?: Record<string, unknown>;
14
14
  _pageContextInit: Record<string, unknown>;
15
- globalContext: Record<string, any>;
15
+ _globalContext: Record<string, any>;
16
16
  };
17
17
  declare function getPageContextClientSerialized(pageContext: PageContextSerialization): string;
18
18
  declare function getGlobalContextClientSerialized(pageContext: PageContextSerialization): string;
@@ -36,7 +36,7 @@ function getPageContextClientSerialized(pageContext) {
36
36
  }
37
37
  function getGlobalContextClientSerialized(pageContext) {
38
38
  const passToClient = pageContext._passToClient;
39
- const globalContextClient = applyPassToClient(passToClient, pageContext.globalContext);
39
+ const globalContextClient = applyPassToClient(passToClient, pageContext._globalContext);
40
40
  const globalContextClientSerialized = serializeObject(globalContextClient, 'globalContext', passToClient);
41
41
  return globalContextClientSerialized;
42
42
  }
@@ -66,7 +66,9 @@ function serializeObject(obj, objName, passToClient) {
66
66
  if (isJsonSerializerError(err)) {
67
67
  pathString = err.pathString;
68
68
  }
69
- assertUsage(false, `Cannot serialize config ${h(pathString)} set by useConfig(), see https://vike.dev/useConfig#serialization-error`);
69
+ // There used to be a `## Serialization Error` section in the docs but we removed it at:
70
+ // https://github.com/vikejs/vike/commit/c9da2f577db01bd1c8f72265ff83e78484ddc2c0
71
+ assertUsage(false, `Cannot serialize config value ${h(pathString)} set by useConfig()`);
70
72
  }
71
73
  // Non-serializable property set by the user
72
74
  let msg = [
@@ -2,4 +2,4 @@ export { getCacheControl };
2
2
  import type { PageConfigRuntime } from '../../../../shared/page-configs/PageConfig.js';
3
3
  import type { HttpResponse } from '../createHttpResponse.js';
4
4
  type StatusCode = HttpResponse['statusCode'];
5
- declare function getCacheControl(pageId: string, pageConfigs: PageConfigRuntime[], statusCode: StatusCode): string;
5
+ declare function getCacheControl(pageId: string | null, pageConfigs: PageConfigRuntime[], statusCode: StatusCode): string;
@@ -8,11 +8,13 @@ function getCacheControl(pageId, pageConfigs, statusCode) {
8
8
  return defaultValue;
9
9
  if (statusCode > 499)
10
10
  return defaultValue;
11
- const pageConfig = getPageConfig(pageId, pageConfigs);
12
- const configValue = getConfigValueRuntime(pageConfig, 'cacheControl', 'string');
13
- const value = configValue?.value;
14
- if (value)
15
- return value;
11
+ if (pageId) {
12
+ const pageConfig = getPageConfig(pageId, pageConfigs);
13
+ const configValue = getConfigValueRuntime(pageConfig, 'cacheControl', 'string');
14
+ const value = configValue?.value;
15
+ if (value)
16
+ return value;
17
+ }
16
18
  // - Disabling caching by default is the safest strategy, because caching is problematic with authentication as described in https://github.com/vikejs/vike/issues/1275#issuecomment-1824366875
17
19
  // - Are there use cases when we don't need to disable caching?
18
20
  // - When there isn't any <script id="vike_pageContext" type="application/json"> then we can safely have caching. (We don't implement this exception because we're lazy and it's quite a rare situation.)
@@ -3,7 +3,7 @@ export { createHttpResponsePageContextJson };
3
3
  export { createHttpResponseError };
4
4
  export { createHttpResponseErrorWithoutGlobalContext };
5
5
  export { createHttpResponseRedirect };
6
- export { createHttpResponseFavicon404 };
6
+ export { createHttpResponse404 };
7
7
  export { createHttpResponseBaseIsMissing };
8
8
  export type { HttpResponse };
9
9
  import type { GetPageAssets } from './getPageAssets.js';
@@ -30,7 +30,7 @@ declare function createHttpResponsePage(htmlRender: HtmlRender, renderHook: null
30
30
  _pageConfigs: PageConfigRuntime[];
31
31
  abortStatusCode?: AbortStatusCode;
32
32
  }): Promise<HttpResponse>;
33
- declare function createHttpResponseFavicon404(): HttpResponse;
33
+ declare function createHttpResponse404(errMsg404: string): HttpResponse;
34
34
  declare function createHttpResponseBaseIsMissing(urlOriginal: string, baseServer: string): HttpResponse;
35
35
  declare function createHttpResponseError(pageContext: {
36
36
  _pageFilesAll: PageFile[];
@@ -3,7 +3,7 @@ export { createHttpResponsePageContextJson };
3
3
  export { createHttpResponseError };
4
4
  export { createHttpResponseErrorWithoutGlobalContext };
5
5
  export { createHttpResponseRedirect };
6
- export { createHttpResponseFavicon404 };
6
+ export { createHttpResponse404 };
7
7
  export { createHttpResponseBaseIsMissing };
8
8
  import { assert, assertWarning, escapeHtml } from '../utils.js';
9
9
  import { getErrorPageId, isErrorPage } from '../../../shared/error-page.js';
@@ -29,15 +29,14 @@ async function createHttpResponsePage(htmlRender, renderHook, pageContext) {
29
29
  }
30
30
  const earlyHints = getEarlyHints(await pageContext.__getPageAssets());
31
31
  const headers = [];
32
- assert(pageContext.pageId);
33
32
  const cacheControl = getCacheControl(pageContext.pageId, pageContext._pageConfigs, statusCode);
34
33
  if (cacheControl) {
35
34
  headers.push(['Cache-Control', cacheControl]);
36
35
  }
37
36
  return createHttpResponse(statusCode, 'text/html;charset=utf-8', headers, htmlRender, earlyHints, renderHook);
38
37
  }
39
- function createHttpResponseFavicon404() {
40
- const httpResponse = createHttpResponse(404, 'text/html;charset=utf-8', [], "<p>No favicon.ico found.</p><script>console.log('This HTTP response was generated by Vike.')</script>");
38
+ function createHttpResponse404(errMsg404) {
39
+ const httpResponse = createHttpResponse(404, 'text/html;charset=utf-8', [], `<p>${errMsg404}.</p><script>console.log('This HTTP response was generated by Vike.')</script>`);
41
40
  return httpResponse;
42
41
  }
43
42
  function createHttpResponseBaseIsMissing(urlOriginal, baseServer) {