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
@@ -5,17 +5,12 @@ export { populatePageContextPrefetchCache };
5
5
  export { addLinkPrefetchHandlers };
6
6
  export { addLinkPrefetchHandlers_watch };
7
7
  export { addLinkPrefetchHandlers_unwatch };
8
+ import { type PageContextCreated } from './createPageContextClientSide.js';
8
9
  import { type PageContextFromServerHooks, getPageContextFromServerHooks } from './getPageContextFromHooks.js';
9
- import type { PageConfigUserFriendlyOld, PageFile } from '../../shared/getPageFiles.js';
10
- import { type PageConfigRuntime } from '../../shared/page-configs/PageConfig.js';
10
+ import type { PageConfigUserFriendlyOld } from '../../shared/getPageFiles.js';
11
11
  type ResultPageContextFromServer = Awaited<ReturnType<typeof getPageContextFromServerHooks>>;
12
- type PageContextForPrefetch = {
13
- urlOriginal: string;
14
- urlPathname: string;
12
+ type PageContextForPrefetch = PageContextCreated & {
15
13
  pageId: string;
16
- _urlRewrite: null;
17
- _pageFilesAll: PageFile[];
18
- _pageConfigs: PageConfigRuntime[];
19
14
  };
20
15
  declare function getPageContextPrefetched(pageContext: {
21
16
  urlPathname: string;
@@ -6,11 +6,11 @@ export { addLinkPrefetchHandlers };
6
6
  export { addLinkPrefetchHandlers_watch };
7
7
  export { addLinkPrefetchHandlers_unwatch };
8
8
  import { assert, assertClientRouting, assertUsage, assertWarning, checkIfClientRouting, getGlobalObject, hasProp, objectAssign } from './utils.js';
9
- import { isErrorFetchingStaticAssets, loadUserFilesClientSide } from '../shared/loadUserFilesClientSide.js';
9
+ import { isErrorFetchingStaticAssets, loadPageConfigsLazyClientSide } from '../shared/loadPageConfigsLazyClientSide.js';
10
10
  import { skipLink } from './skipLink.js';
11
11
  import { disableClientRouting } from './renderPageClientSide.js';
12
12
  import { isClientSideRoutable } from './isClientSideRoutable.js';
13
- import { createPageContextClientSide } from './createPageContext.js';
13
+ import { createPageContextClientSide } from './createPageContextClientSide.js';
14
14
  import { route } from '../../shared/route/index.js';
15
15
  import { noRouteMatch } from '../../shared/route/noRouteMatch.js';
16
16
  import { getPageContextFromServerHooks } from './getPageContextFromHooks.js';
@@ -45,7 +45,7 @@ function getPageContextPrefetched(pageContext) {
45
45
  }
46
46
  async function prefetchAssets(pageContextLink) {
47
47
  try {
48
- await loadUserFilesClientSide(pageContextLink.pageId, pageContextLink._pageFilesAll, pageContextLink._pageConfigs, pageContextLink._pageConfigGlobal);
48
+ await loadPageConfigsLazyClientSide(pageContextLink.pageId, pageContextLink._pageFilesAll, pageContextLink._pageConfigs, pageContextLink._pageConfigGlobal);
49
49
  }
50
50
  catch (err) {
51
51
  if (isErrorFetchingStaticAssets(err)) {
@@ -0,0 +1,11 @@
1
+ export { preparePageContextForPublicUsageClient };
2
+ export type { PageContextForPublicUsageClient };
3
+ import type { PageConfigUserFriendlyOld } from '../../shared/getPageFiles.js';
4
+ import type { PageContextInternalClient_ClientRouting } from '../../shared/types.js';
5
+ import type { PageContextPrepareMinimum } from '../../shared/preparePageContextForPublicUsage.js';
6
+ type PageContextForPublicUsageClient = PageContextPrepareMinimum & PageContextInternalClient_ClientRouting & PageConfigUserFriendlyOld & {
7
+ urlOriginal: string;
8
+ };
9
+ declare function preparePageContextForPublicUsageClient<PageContext extends PageContextForPublicUsageClient>(pageContext: PageContext): PageContext & {
10
+ Page: unknown;
11
+ };
@@ -0,0 +1,5 @@
1
+ export { preparePageContextForPublicUsageClient };
2
+ import { preparePageContextForPublicUsageClientShared } from '../shared/preparePageContextForPublicUsageClientShared.js';
3
+ function preparePageContextForPublicUsageClient(pageContext) {
4
+ return preparePageContextForPublicUsageClientShared(pageContext);
5
+ }
@@ -3,10 +3,17 @@ export { getRenderCount };
3
3
  export { disableClientRouting };
4
4
  export { firstRenderStartPromise };
5
5
  export { getPageContextClient };
6
+ export type { PageContextBegin };
6
7
  import { type PageContextFromRewrite } from '../../shared/route/abort.js';
7
8
  import { type ScrollTarget } from './setScrollPosition.js';
9
+ import type { PageConfigUserFriendlyOld } from '../../shared/getPageFiles.js';
8
10
  import type { PageContextClient } from '../../shared/types.js';
9
11
  declare const firstRenderStartPromise: Promise<void>;
12
+ type PageContextRouted = {
13
+ pageId: string;
14
+ routeParams: Record<string, string>;
15
+ };
16
+ type PageContextBegin = Awaited<ReturnType<typeof getPageContextBegin>>;
10
17
  type RenderArgs = {
11
18
  scrollTarget: ScrollTarget;
12
19
  isBackwardNavigation: boolean | null;
@@ -19,6 +26,134 @@ type RenderArgs = {
19
26
  pageContextInitClient?: Record<string, unknown>;
20
27
  };
21
28
  declare function renderPageClientSide(renderArgs: RenderArgs): Promise<void>;
29
+ declare function getPageContextBegin(isForErrorPage: boolean, { urlOriginal, isBackwardNavigation, pageContextsFromRewrite, isClientSideNavigation, pageContextInitClient, isFirstRender }: {
30
+ urlOriginal: string;
31
+ isBackwardNavigation: boolean | null;
32
+ pageContextsFromRewrite: PageContextFromRewrite[];
33
+ isClientSideNavigation: boolean;
34
+ pageContextInitClient: Record<string, unknown> | undefined;
35
+ isFirstRender: boolean;
36
+ }): Promise<{
37
+ _isOriginalObject: true;
38
+ isPageContext: true;
39
+ } & {
40
+ isClientSide: true;
41
+ isPrerendering: false;
42
+ urlOriginal: string;
43
+ _globalContext: {
44
+ isGlobalContext: true;
45
+ _isOriginalObject: true;
46
+ _virtualFileExports: unknown;
47
+ _pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
48
+ _pageConfigs: import("../../__internal/index.js").PageConfig[];
49
+ _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
50
+ _allPageIds: string[];
51
+ _userFriendlyConfigsGlobal: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly;
52
+ config: import("../../types/index.js").ConfigResolved;
53
+ pages: {
54
+ [k: string]: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly & ({
55
+ route: import("../../shared/page-configs/Config.js").Route;
56
+ isErrorPage?: undefined;
57
+ } | {
58
+ route?: undefined;
59
+ isErrorPage: true;
60
+ });
61
+ };
62
+ } & {
63
+ isClientSide: true;
64
+ } & {
65
+ _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
66
+ _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
67
+ };
68
+ _pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
69
+ _pageConfigs: import("../../__internal/index.js").PageConfig[];
70
+ _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
71
+ _allPageIds: string[];
72
+ _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
73
+ _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
74
+ _urlHandler: null;
75
+ _urlRewrite: null | string;
76
+ _baseServer: string;
77
+ } & {
78
+ urlParsed: import("./utils.js").UrlPublic;
79
+ urlPathname: string;
80
+ url: string;
81
+ } & import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly & {
82
+ isBackwardNavigation: boolean | null;
83
+ isClientSideNavigation: boolean;
84
+ isHydration: boolean;
85
+ previousPageContext: ({
86
+ pageId: string;
87
+ } & PageConfigUserFriendlyOld & PageContextRouted & import("../../shared/preparePageContextForPublicUsage.js").PageContextPrepareMinimum & import("../../shared/types.js").PageContextInternalClient & Omit<Partial<{
88
+ isPageContext: true;
89
+ Page: import("../../types/index.js").Config["Page"];
90
+ routeParams: Record<string, string>;
91
+ data: unknown;
92
+ config: import("../../shared/page-configs/Config/PageContextConfig.js").PageContextConfig;
93
+ configEntries: import("../../types/index.js").ConfigEntries;
94
+ exports: Record<string, unknown>;
95
+ exportsAll: import("../../shared/getPageFiles.js").ExportsAll;
96
+ urlOriginal: string;
97
+ headers: Record<string, string> | null;
98
+ headersOriginal?: unknown;
99
+ is404: boolean | null;
100
+ isClientSideNavigation: boolean;
101
+ abortReason?: unknown;
102
+ abortStatusCode?: import("../../shared/route/abort.js").AbortStatusCode;
103
+ errorWhileRendering?: unknown;
104
+ pageId: string | null;
105
+ from: import("../../shared/page-configs/getUserFriendlyConfigs.js").From;
106
+ source: import("../../shared/page-configs/getUserFriendlyConfigs.js").Source;
107
+ sources: import("../../shared/page-configs/getUserFriendlyConfigs.js").Sources;
108
+ url: string;
109
+ pageExports: Record<string, unknown>;
110
+ isBaseMissing?: true;
111
+ }> & Pick<{
112
+ isPageContext: true;
113
+ Page: import("../../types/index.js").Config["Page"];
114
+ routeParams: Record<string, string>;
115
+ data: unknown;
116
+ config: import("../../shared/page-configs/Config/PageContextConfig.js").PageContextConfig;
117
+ configEntries: import("../../types/index.js").ConfigEntries;
118
+ exports: Record<string, unknown>;
119
+ exportsAll: import("../../shared/getPageFiles.js").ExportsAll;
120
+ urlOriginal: string;
121
+ headers: Record<string, string> | null;
122
+ headersOriginal?: unknown;
123
+ is404: boolean | null;
124
+ isClientSideNavigation: boolean;
125
+ abortReason?: unknown;
126
+ abortStatusCode?: import("../../shared/route/abort.js").AbortStatusCode;
127
+ errorWhileRendering?: unknown;
128
+ pageId: string | null;
129
+ from: import("../../shared/page-configs/getUserFriendlyConfigs.js").From;
130
+ source: import("../../shared/page-configs/getUserFriendlyConfigs.js").Source;
131
+ sources: import("../../shared/page-configs/getUserFriendlyConfigs.js").Sources;
132
+ url: string;
133
+ pageExports: Record<string, unknown>;
134
+ isBaseMissing?: true;
135
+ }, "exports" | "pageId" | "Page" | "data" | "config" | "pageExports" | "routeParams" | "configEntries" | "exportsAll" | "abortReason" | "source" | "sources" | "from"> & {
136
+ isClientSide: true;
137
+ isPrerendering: false;
138
+ } & {
139
+ isHydration: boolean;
140
+ isBackwardNavigation: boolean | null;
141
+ previousPageContext: PageContextClient<unknown> | null;
142
+ globalContext: import("./globalContext.js").GlobalContextClient;
143
+ } & {
144
+ urlOriginal: string;
145
+ } & {
146
+ urlParsed: import("./utils.js").UrlPublic;
147
+ urlPathname: string;
148
+ url: string;
149
+ }, ("globalContext" | "Page" | "data") | "previousPageContext"> & {
150
+ previousPageContext: {
151
+ pageId: string;
152
+ } | null;
153
+ } & {
154
+ urlOriginal: string;
155
+ }) | null;
156
+ }>;
22
157
  declare global {
23
158
  var _vike: {
24
159
  fullyRenderedUrl?: string;
@@ -5,12 +5,11 @@ export { firstRenderStartPromise };
5
5
  export { getPageContextClient };
6
6
  import { assert, isSameErrorMessage, objectAssign, redirectHard, getGlobalObject, hasProp, augmentType, genPromise, isCallable, catchInfiniteLoop } from './utils.js';
7
7
  import { getPageContextFromClientHooks, getPageContextFromServerHooks, getPageContextFromHooks_isHydration, getPageContextFromHooks_serialized, setPageContextInitIsPassedToClient } from './getPageContextFromHooks.js';
8
- import { createPageContextClientSide } from './createPageContext.js';
8
+ import { createPageContextClientSide } from './createPageContextClientSide.js';
9
9
  import { addLinkPrefetchHandlers, addLinkPrefetchHandlers_unwatch, addLinkPrefetchHandlers_watch, getPageContextPrefetched, populatePageContextPrefetchCache } from './prefetch.js';
10
10
  import { assertInfo, assertWarning, isReact } from './utils.js';
11
11
  import { executeOnRenderClientHook } from '../shared/executeOnRenderClientHook.js';
12
- import { assertHook, getHookFromPageContext } from '../../shared/hooks/getHook.js';
13
- import { isErrorFetchingStaticAssets, loadUserFilesClientSide } from '../shared/loadUserFilesClientSide.js';
12
+ import { isErrorFetchingStaticAssets, loadPageConfigsLazyClientSide } from '../shared/loadPageConfigsLazyClientSide.js';
14
13
  import { pushHistoryState } from './history.js';
15
14
  import { assertNoInfiniteAbortLoop, getPageContextFromAllRewrites, isAbortError, logAbortErrorHandled } from '../../shared/route/abort.js';
16
15
  import { route } from '../../shared/route/index.js';
@@ -21,7 +20,10 @@ import { getErrorPageId } from '../../shared/error-page.js';
21
20
  import { setPageContextCurrent } from './getPageContextCurrent.js';
22
21
  import { getRouteStringParameterList } from '../../shared/route/resolveRouteString.js';
23
22
  import { getCurrentUrl } from '../shared/getCurrentUrl.js';
24
- import { executeHook } from '../../shared/hooks/executeHook.js';
23
+ import { execHooksErrorHandling, execHookErrorHandling } from '../../shared/hooks/execHook.js';
24
+ import { preparePageContextForPublicUsageClient } from './preparePageContextForPublicUsageClient.js';
25
+ import { getHookFromPageContextNew } from '../../shared/hooks/getHook.js';
26
+ import { preparePageContextForPublicUsageClientMinimal } from '../shared/preparePageContextForPublicUsageClientShared.js';
25
27
  const globalObject = getGlobalObject('client-routing-runtime/renderPageClientSide.ts', (() => {
26
28
  const { promise: firstRenderStartPromise, resolve: firstRenderStartPromiseResolve } = genPromise();
27
29
  return {
@@ -39,6 +41,14 @@ async function renderPageClientSide(renderArgs) {
39
41
  addLinkPrefetchHandlers_unwatch();
40
42
  const { isRenderOutdated, setHydrationCanBeAborted, isFirstRender } = getIsRenderOutdated();
41
43
  assertNoInfiniteAbortLoop(pageContextsFromRewrite.length, redirectCount);
44
+ const pageContextBeginArgs = {
45
+ urlOriginal,
46
+ isBackwardNavigation,
47
+ pageContextsFromRewrite,
48
+ isClientSideNavigation,
49
+ pageContextInitClient,
50
+ isFirstRender
51
+ };
42
52
  if (globalObject.clientRoutingIsDisabled) {
43
53
  redirectHard(urlOriginal);
44
54
  return;
@@ -52,7 +62,7 @@ async function renderPageClientSide(renderArgs) {
52
62
  const onError = async (err) => {
53
63
  await renderErrorPage({ err });
54
64
  };
55
- const pageContext = await getPageContextBegin(false);
65
+ const pageContext = await getPageContextBegin(false, pageContextBeginArgs);
56
66
  if (isRenderOutdated())
57
67
  return;
58
68
  // onPageTransitionStart()
@@ -60,29 +70,22 @@ async function renderPageClientSide(renderArgs) {
60
70
  assert(previousPageContext);
61
71
  // We use the hook of the previous page in order to be able to call onPageTransitionStart() before fetching the files of the next page.
62
72
  // https://github.com/vikejs/vike/issues/1560
63
- assertHook(previousPageContext, 'onPageTransitionStart');
64
73
  if (!globalObject.isTransitioning) {
65
74
  globalObject.isTransitioning = true;
66
- const onPageTransitionStartHook = getHookFromPageContext(previousPageContext, 'onPageTransitionStart');
67
- if (onPageTransitionStartHook) {
68
- const hook = onPageTransitionStartHook;
69
- const { hookFn } = hook;
70
- try {
71
- await executeHook(() => hookFn(pageContext), hook, pageContext);
72
- }
73
- catch (err) {
74
- await onError(err);
75
- return;
76
- }
77
- if (isRenderOutdated())
78
- return;
75
+ const hooks = getHookFromPageContextNew('onPageTransitionStart', previousPageContext);
76
+ const res = await execHooksErrorHandling(hooks, pageContext, preparePageContextForPublicUsageClientMinimal);
77
+ if ('err' in res) {
78
+ await onError(res.err);
79
+ return;
79
80
  }
81
+ if (isRenderOutdated())
82
+ return;
80
83
  }
81
84
  }
82
85
  // Route
83
86
  if (isFirstRender) {
84
87
  const pageContextSerialized = getPageContextFromHooks_serialized();
85
- // TODO/eventually: create helper assertPageContextFromHook()
88
+ // TO-DO/eventually: create helper assertPageContextFromHook()
86
89
  assert(!('urlOriginal' in pageContextSerialized));
87
90
  objectAssign(pageContext, pageContextSerialized);
88
91
  // TODO/pageContext-prefetch: remove or change, because this only makes sense for a pre-rendered page
@@ -127,12 +130,12 @@ async function renderPageClientSide(renderArgs) {
127
130
  // Skip's Vike's rendering; let the user handle the navigation
128
131
  return;
129
132
  }
130
- // TODO/eventually: create helper assertPageContextFromHook()
133
+ // TO-DO/eventually: create helper assertPageContextFromHook()
131
134
  assert(!('urlOriginal' in pageContextFromRoute));
132
135
  objectAssign(pageContext, pageContextFromRoute);
133
136
  }
134
137
  try {
135
- objectAssign(pageContext, await loadUserFilesClientSide(pageContext.pageId, pageContext._pageFilesAll, pageContext._pageConfigs, pageContext._pageConfigGlobal));
138
+ objectAssign(pageContext, await loadPageConfigsLazyClientSide(pageContext.pageId, pageContext._pageFilesAll, pageContext._pageConfigs, pageContext._pageConfigGlobal));
136
139
  }
137
140
  catch (err) {
138
141
  if (handleErrorFetchingStaticAssets(err, pageContext, isFirstRender)) {
@@ -197,7 +200,7 @@ async function renderPageClientSide(renderArgs) {
197
200
  }
198
201
  if (isRenderOutdated())
199
202
  return;
200
- // TODO/eventually: create helper assertPageContextFromHook()
203
+ // TO-DO/eventually: create helper assertPageContextFromHook()
201
204
  assert(!('urlOriginal' in pageContextFromServerHooks));
202
205
  objectAssign(pageContext, pageContextFromServerHooks);
203
206
  // Get pageContext from client-side hooks
@@ -215,33 +218,6 @@ async function renderPageClientSide(renderArgs) {
215
218
  await renderPageView(pageContext);
216
219
  }
217
220
  }
218
- async function getPageContextBegin(isForErrorPage) {
219
- const pageContext = await createPageContextClientSide(urlOriginal);
220
- objectAssign(pageContext, {
221
- isBackwardNavigation,
222
- isClientSideNavigation,
223
- isHydration: isFirstRender && !isForErrorPage,
224
- previousPageContext,
225
- ...pageContextInitClient
226
- });
227
- // TODO/next-major-release: remove
228
- Object.defineProperty(pageContext, '_previousPageContext', {
229
- get() {
230
- assertWarning(false, 'pageContext._previousPageContext has been renamed pageContext.previousPageContext', {
231
- showStackTrace: true,
232
- onlyOnce: true
233
- });
234
- return previousPageContext;
235
- },
236
- enumerable: false
237
- });
238
- {
239
- const pageContextFromAllRewrites = getPageContextFromAllRewrites(pageContextsFromRewrite);
240
- assert(!('urlOriginal' in pageContextFromAllRewrites));
241
- objectAssign(pageContext, pageContextFromAllRewrites);
242
- }
243
- return pageContext;
244
- }
245
221
  async function renderErrorPage(args) {
246
222
  const onError = (err) => {
247
223
  if (!isSameErrorMessage(err, args.err)) {
@@ -267,9 +243,10 @@ async function renderPageClientSide(renderArgs) {
267
243
  // We handle the abort error down below.
268
244
  }
269
245
  }
270
- const pageContext = await getPageContextBegin(true);
246
+ const pageContext = await getPageContextBegin(true, pageContextBeginArgs);
271
247
  if (isRenderOutdated())
272
248
  return;
249
+ objectAssign(pageContext, { routeParams: {} });
273
250
  if (args.is404)
274
251
  objectAssign(pageContext, { is404: true });
275
252
  if (args.pageContextError)
@@ -337,7 +314,7 @@ async function renderPageClientSide(renderArgs) {
337
314
  return;
338
315
  }
339
316
  try {
340
- objectAssign(pageContext, await loadUserFilesClientSide(pageContext.pageId, pageContext._pageFilesAll, pageContext._pageConfigs, pageContext._pageConfigGlobal));
317
+ objectAssign(pageContext, await loadPageConfigsLazyClientSide(pageContext.pageId, pageContext._pageFilesAll, pageContext._pageConfigs, pageContext._pageConfigGlobal));
341
318
  }
342
319
  catch (err) {
343
320
  if (handleErrorFetchingStaticAssets(err, pageContext, isFirstRender)) {
@@ -365,7 +342,7 @@ async function renderPageClientSide(renderArgs) {
365
342
  }
366
343
  if (isRenderOutdated())
367
344
  return;
368
- // TODO/eventually: create helper assertPageContextFromHook()
345
+ // TO-DO/eventually: create helper assertPageContextFromHook()
369
346
  assert(!('urlOriginal' in pageContextFromServerHooks));
370
347
  objectAssign(pageContext, pageContextFromServerHooks);
371
348
  let pageContextFromClientHooks;
@@ -379,7 +356,6 @@ async function renderPageClientSide(renderArgs) {
379
356
  if (isRenderOutdated())
380
357
  return;
381
358
  augmentType(pageContext, pageContextFromClientHooks);
382
- objectAssign(pageContext, { routeParams: {} });
383
359
  await renderPageView(pageContext, args);
384
360
  }
385
361
  async function renderPageView(pageContext, isErrorPage) {
@@ -407,7 +383,7 @@ async function renderPageClientSide(renderArgs) {
407
383
  const onRenderClientPromise = (async () => {
408
384
  let onRenderClientError;
409
385
  try {
410
- await executeOnRenderClientHook(pageContext, true);
386
+ await executeOnRenderClientHook(pageContext, preparePageContextForPublicUsageClient);
411
387
  }
412
388
  catch (err) {
413
389
  onRenderClientError = err;
@@ -429,21 +405,14 @@ async function renderPageClientSide(renderArgs) {
429
405
  */
430
406
  // onHydrationEnd()
431
407
  if (isFirstRender && !onRenderClientError) {
432
- assertHook(pageContext, 'onHydrationEnd');
433
- const hook = getHookFromPageContext(pageContext, 'onHydrationEnd');
434
- if (hook) {
435
- const { hookFn } = hook;
436
- try {
437
- await executeHook(() => hookFn(pageContext), hook, pageContext);
438
- }
439
- catch (err) {
440
- await onError(err);
441
- if (!isErrorPage)
442
- return;
443
- }
444
- if (isRenderOutdated(true))
408
+ const res = await execHookErrorHandling('onHydrationEnd', pageContext, preparePageContextForPublicUsageClient);
409
+ if ('err' in res) {
410
+ await onError(res.err);
411
+ if (!isErrorPage)
445
412
  return;
446
413
  }
414
+ if (isRenderOutdated(true))
415
+ return;
447
416
  }
448
417
  // We purposely abort *after* onHydrationEnd() is called (see comment above).
449
418
  if (isRenderOutdated(true))
@@ -452,21 +421,15 @@ async function renderPageClientSide(renderArgs) {
452
421
  if (globalObject.isTransitioning) {
453
422
  globalObject.isTransitioning = undefined;
454
423
  assert(previousPageContext);
455
- assertHook(previousPageContext, 'onPageTransitionEnd');
456
- const hook = getHookFromPageContext(previousPageContext, 'onPageTransitionEnd');
457
- if (hook) {
458
- const { hookFn } = hook;
459
- try {
460
- await executeHook(() => hookFn(pageContext), hook, pageContext);
461
- }
462
- catch (err) {
463
- await onError(err);
464
- if (!isErrorPage)
465
- return;
466
- }
467
- if (isRenderOutdated(true))
424
+ const hooks = getHookFromPageContextNew('onPageTransitionEnd', previousPageContext);
425
+ const res = await execHooksErrorHandling(hooks, pageContext, preparePageContextForPublicUsageClient);
426
+ if ('err' in res) {
427
+ await onError(res.err);
428
+ if (!isErrorPage)
468
429
  return;
469
430
  }
431
+ if (isRenderOutdated(true))
432
+ return;
470
433
  }
471
434
  if (!scrollTarget && previousPageContext) {
472
435
  const keepScrollPositionPrev = getKeepScrollPositionSetting(previousPageContext);
@@ -489,6 +452,34 @@ async function renderPageClientSide(renderArgs) {
489
452
  stampFinished(urlOriginal);
490
453
  }
491
454
  }
455
+ async function getPageContextBegin(isForErrorPage, { urlOriginal, isBackwardNavigation, pageContextsFromRewrite, isClientSideNavigation, pageContextInitClient, isFirstRender }) {
456
+ const previousPageContext = globalObject.previousPageContext ?? null;
457
+ const pageContext = await createPageContextClientSide(urlOriginal);
458
+ objectAssign(pageContext, {
459
+ isBackwardNavigation,
460
+ isClientSideNavigation,
461
+ isHydration: isFirstRender && !isForErrorPage,
462
+ previousPageContext,
463
+ ...pageContextInitClient
464
+ });
465
+ // TODO/next-major-release: remove
466
+ Object.defineProperty(pageContext, '_previousPageContext', {
467
+ get() {
468
+ assertWarning(false, 'pageContext._previousPageContext has been renamed pageContext.previousPageContext', {
469
+ showStackTrace: true,
470
+ onlyOnce: true
471
+ });
472
+ return previousPageContext;
473
+ },
474
+ enumerable: false
475
+ });
476
+ {
477
+ const pageContextFromAllRewrites = getPageContextFromAllRewrites(pageContextsFromRewrite);
478
+ assert(!('urlOriginal' in pageContextFromAllRewrites));
479
+ objectAssign(pageContext, pageContextFromAllRewrites);
480
+ }
481
+ return pageContext;
482
+ }
492
483
  // For Vike tests (but also potentially for Vike users)
493
484
  // https://github.com/vikejs/vike/blob/ffbc5cf16407bcc075f414447e50d997c87c0c94/test/playground/pages/nested-layout/e2e-test.ts#L59
494
485
  function stampFinished(urlOriginal) {
@@ -21,3 +21,4 @@ export * from '../../utils/augmentType.js';
21
21
  export * from '../../utils/PROJECT_VERSION.js';
22
22
  export * from '../../utils/genPromise.js';
23
23
  export * from '../../utils/catchInfiniteLoop.js';
24
+ export * from '../../utils/changeEnumerable.js';
@@ -25,3 +25,4 @@ export * from '../../utils/augmentType.js';
25
25
  export * from '../../utils/PROJECT_VERSION.js';
26
26
  export * from '../../utils/genPromise.js';
27
27
  export * from '../../utils/catchInfiniteLoop.js';
28
+ export * from '../../utils/changeEnumerable.js';
@@ -1,14 +1,30 @@
1
1
  export { createPageContextClientSide };
2
2
  declare function createPageContextClientSide(): Promise<{
3
- globalContext: {
3
+ _isOriginalObject: true;
4
+ isPageContext: true;
5
+ } & {
6
+ isClientSide: true;
7
+ isPrerendering: false;
8
+ isHydration: true;
9
+ _globalContext: {
4
10
  isGlobalContext: true;
11
+ _isOriginalObject: true;
5
12
  _virtualFileExports: unknown;
6
13
  _pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
7
14
  _pageConfigs: import("../../__internal/index.js").PageConfig[];
8
15
  _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
9
16
  _allPageIds: string[];
17
+ _userFriendlyConfigsGlobal: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly;
10
18
  config: import("../../types/index.js").ConfigResolved;
11
- pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
19
+ pages: {
20
+ [k: string]: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly & ({
21
+ route: import("../../shared/page-configs/Config.js").Route;
22
+ isErrorPage?: undefined;
23
+ } | {
24
+ route?: undefined;
25
+ isErrorPage: true;
26
+ });
27
+ };
12
28
  } & {
13
29
  isClientSide: true;
14
30
  } & object;
@@ -16,21 +32,11 @@ declare function createPageContextClientSide(): Promise<{
16
32
  _pageConfigs: import("../../__internal/index.js").PageConfig[];
17
33
  _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
18
34
  _allPageIds: string[];
19
- isPrerendering: boolean;
20
- isClientSide: boolean;
21
- isHydration: true;
22
35
  isBackwardNavigation: null;
23
36
  _hasPageContextFromServer: true;
24
- _hasPageContextFromClient: false;
25
37
  } & {
26
38
  pageId: string;
27
39
  routeParams: Record<string, string>;
28
- } & import("../../shared/getPageFiles.js").PageConfigUserFriendlyOld & {
40
+ } & import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly & import("../../shared/getPageFiles.js").PageConfigUserFriendlyOld & {
29
41
  _pageFilesLoaded: import("../../shared/getPageFiles.js").PageFile[];
30
- } & {
31
- config: import("../../types/index.js").ConfigResolved;
32
- _source: import("../../shared/page-configs/getPageConfigUserFriendly.js").Source;
33
- _sources: import("../../shared/page-configs/getPageConfigUserFriendly.js").Sources;
34
- _from: import("../../shared/page-configs/getPageConfigUserFriendly.js").From;
35
- isPageContext: true;
36
42
  }>;
@@ -1,33 +1,32 @@
1
1
  export { createPageContextClientSide };
2
- import { assertUsage, assertWarning, augmentType, objectAssign } from './utils.js';
2
+ import { assertUsage, augmentType, objectAssign } from './utils.js';
3
3
  import { getPageContextSerializedInHtml } from '../shared/getJsonSerializedInHtml.js';
4
- import { loadUserFilesClientSide } from '../shared/loadUserFilesClientSide.js';
4
+ import { loadPageConfigsLazyClientSide } from '../shared/loadPageConfigsLazyClientSide.js';
5
5
  import { getCurrentUrl } from '../shared/getCurrentUrl.js';
6
- import { createPageContextShared } from '../../shared/createPageContextShared.js';
6
+ import { createPageContextObject, createPageContextShared } from '../../shared/createPageContextShared.js';
7
7
  import { getGlobalContextClientInternal } from './globalContext.js';
8
8
  const urlFirst = getCurrentUrl({ withoutHash: true });
9
9
  async function createPageContextClientSide() {
10
10
  const globalContext = await getGlobalContextClientInternal();
11
- const pageContextCreated = {
12
- /* Don't spread globalContext for now? Or never spread it as it leads to confusion? The convenience isn't worth the added confusion?
13
- ...globalContext, // least precedence
14
- */
15
- globalContext,
11
+ const pageContextCreated = createPageContextObject();
12
+ objectAssign(pageContextCreated, {
13
+ isClientSide: true,
14
+ isPrerendering: false,
15
+ isHydration: true,
16
+ _globalContext: globalContext,
16
17
  _pageFilesAll: globalContext._pageFilesAll,
17
18
  _pageConfigs: globalContext._pageConfigs,
18
19
  _pageConfigGlobal: globalContext._pageConfigGlobal,
19
20
  _allPageIds: globalContext._allPageIds,
20
- isPrerendering: false,
21
- isClientSide: true,
22
- isHydration: true,
23
21
  isBackwardNavigation: null,
24
- _hasPageContextFromServer: true,
25
- _hasPageContextFromClient: false
26
- };
22
+ _hasPageContextFromServer: true
23
+ });
27
24
  objectAssign(pageContextCreated, getPageContextSerializedInHtml());
28
- objectAssign(pageContextCreated, await loadPageUserFiles(pageContextCreated.pageId, pageContextCreated));
29
- const pageContextAugmented = await createPageContextShared(pageContextCreated, globalContext._pageConfigGlobal);
25
+ // Sets pageContext.config to global configs
26
+ const pageContextAugmented = await createPageContextShared(pageContextCreated, globalContext._pageConfigGlobal, globalContext._userFriendlyConfigsGlobal);
30
27
  augmentType(pageContextCreated, pageContextAugmented);
28
+ // Sets pageContext.config to local configs (overrides the pageContext.config set above)
29
+ objectAssign(pageContextCreated, await loadPageConfigsLazyClientSide(pageContextCreated.pageId, pageContextCreated._pageFilesAll, pageContextCreated._pageConfigs, pageContextCreated._pageConfigGlobal));
31
30
  assertPristineUrl();
32
31
  return pageContextCreated;
33
32
  }
@@ -35,13 +34,3 @@ function assertPristineUrl() {
35
34
  const urlCurrent = getCurrentUrl({ withoutHash: true });
36
35
  assertUsage(urlFirst === urlCurrent, `The URL was manipulated before the hydration finished ('${urlFirst}' to '${urlCurrent}'). Ensure the hydration has finished before manipulating the URL. Consider using the onHydrationEnd() hook.`);
37
36
  }
38
- async function loadPageUserFiles(pageId, pageContext) {
39
- const pageContextAddendum = {};
40
- objectAssign(pageContextAddendum, await loadUserFilesClientSide(pageId, pageContext._pageFilesAll, pageContext._pageConfigs, pageContext._pageConfigGlobal));
41
- pageContext._pageFilesAll
42
- .filter((p) => p.fileType !== '.page.server')
43
- .forEach((p) => {
44
- assertWarning(!p.fileExports?.onBeforeRender, `export { onBeforeRender } of ${p.filePath} is loaded in the browser but never executed (because you are using Server-side Routing). In order to reduce the size of you browser-side JavaScript, define onBeforeRender() in a .page.server.js file instead, see https://vike.dev/onBeforeRender-isomorphic#server-routing`, { onlyOnce: true });
45
- });
46
- return pageContextAddendum;
47
- }