vike 0.4.235 → 0.4.236-commit-85d361d

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 (195) hide show
  1. package/dist/cjs/__internal/index.js +1 -1
  2. package/dist/cjs/client/shared/createGetGlobalContextClient.js +0 -1
  3. package/dist/cjs/client/shared/preparePageContextForPublicUsageClientShared.js +4 -4
  4. package/dist/cjs/node/api/prepareViteApiCall.js +1 -1
  5. package/dist/cjs/node/cli/index.js +1 -1
  6. package/dist/cjs/node/createPageRenderer.js +1 -1
  7. package/dist/cjs/node/importBuild.js +1 -1
  8. package/dist/cjs/node/prerender/context.js +1 -1
  9. package/dist/cjs/node/prerender/index.js +1 -1
  10. package/dist/cjs/node/prerender/resolvePrerenderConfig.js +2 -2
  11. package/dist/cjs/node/prerender/runPrerender.js +9 -13
  12. package/dist/cjs/node/runtime/globalContext.js +32 -13
  13. package/dist/cjs/node/runtime/html/injectAssets/injectAssets__public.js +1 -1
  14. package/dist/cjs/node/runtime/html/injectAssets/injectHtmlTags.js +2 -0
  15. package/dist/cjs/node/runtime/html/serializeContext.js +73 -15
  16. package/dist/cjs/node/runtime/index-deprecated.js +1 -1
  17. package/dist/cjs/node/runtime/index.js +1 -1
  18. package/dist/cjs/node/runtime/page-files/setup.js +1 -1
  19. package/dist/cjs/node/runtime/renderPage/assertArguments.js +1 -1
  20. package/dist/cjs/node/runtime/renderPage/createHttpResponse.js +9 -6
  21. package/dist/cjs/node/runtime/renderPage/createPageContextServerSide.js +4 -4
  22. package/dist/cjs/node/runtime/renderPage/execHookDataAndOnBeforeRender.js +2 -2
  23. package/dist/cjs/node/runtime/renderPage/{createHttpResponse/getCacheControl.js → getCacheControl.js} +9 -9
  24. package/dist/cjs/node/runtime/renderPage/getHttpResponseBody.js +4 -4
  25. package/dist/cjs/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +1 -1
  26. package/dist/cjs/node/runtime/renderPage/loadPageConfigsLazyServerSide.js +35 -16
  27. package/dist/cjs/node/runtime/renderPage/preparePageContextForPublicUsageServer.js +1 -1
  28. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +1 -0
  29. package/dist/cjs/node/runtime/renderPage.js +4 -6
  30. package/dist/cjs/node/vite/onLoad.js +1 -1
  31. package/dist/cjs/node/vite/plugins/pluginBuild/pluginBuildConfig.js +1 -1
  32. package/dist/cjs/node/vite/plugins/pluginBuild/pluginBuildEntry.js +1 -1
  33. package/dist/cjs/node/vite/plugins/pluginCommon/assertResolveAlias.js +1 -1
  34. package/dist/cjs/node/vite/plugins/pluginCommon.js +8 -4
  35. package/dist/cjs/node/vite/plugins/pluginDev.js +1 -1
  36. package/dist/cjs/node/vite/plugins/pluginEnvVars.js +1 -1
  37. package/dist/cjs/node/vite/plugins/pluginFileEnv.js +1 -1
  38. package/dist/cjs/node/vite/plugins/pluginVirtualFiles.js +1 -1
  39. package/dist/cjs/node/vite/shared/addSsrMiddleware.js +1 -1
  40. package/dist/cjs/node/vite/shared/loggerNotProd.js +10 -6
  41. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/configDefinitionsBuiltIn.js +5 -1
  42. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/crawlPlusFiles.js +1 -3
  43. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/filesystemRouting.js +4 -6
  44. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/transpileAndExecuteFile.js +1 -1
  45. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal.js +6 -6
  46. package/dist/cjs/shared/RenderErrorPage.js +1 -1
  47. package/dist/cjs/shared/abort.js +1 -1
  48. package/dist/cjs/shared/createGlobalContextShared.js +20 -7
  49. package/dist/cjs/shared/createPageContextShared.js +1 -2
  50. package/dist/cjs/shared/determinePageIdOld.js +1 -1
  51. package/dist/cjs/shared/error-page.js +3 -3
  52. package/dist/cjs/shared/getPageContextUrlComputed.js +4 -4
  53. package/dist/cjs/shared/getPageFiles/analyzeClientSide.js +1 -1
  54. package/dist/cjs/shared/getPageFiles/analyzePageClientSide/analyzeExports.js +1 -1
  55. package/dist/cjs/shared/getPageFiles/analyzePageClientSide/determineClientEntry.js +1 -1
  56. package/dist/cjs/shared/getPageFiles/analyzePageClientSide.js +2 -2
  57. package/dist/cjs/shared/getPageFiles/assert_exports_old_design.js +1 -1
  58. package/dist/cjs/shared/getPageFiles/fileTypes.js +1 -1
  59. package/dist/cjs/shared/getPageFiles/getAllPageIdFiles.js +1 -1
  60. package/dist/cjs/shared/getPageFiles/getPageFileObject.js +1 -1
  61. package/dist/cjs/shared/getPageFiles/parseVirtualFileExports.js +1 -1
  62. package/dist/cjs/shared/getProxyForPublicUsage.js +1 -1
  63. package/dist/cjs/shared/page-configs/getConfigDefinedAt.js +4 -3
  64. package/dist/cjs/shared/page-configs/resolveVikeConfigPublic.js +10 -10
  65. package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +1 -1
  66. package/dist/cjs/shared/preparePageContextForPublicUsage.js +5 -5
  67. package/dist/cjs/shared/route/abort.js +1 -1
  68. package/dist/cjs/shared/route/deduceRouteStringFromFilesystemPath.js +1 -1
  69. package/dist/cjs/shared/route/execHookGuard.js +1 -1
  70. package/dist/cjs/shared/route/execHookOnBeforeRoute.js +1 -1
  71. package/dist/cjs/shared/route/index.js +1 -1
  72. package/dist/cjs/shared/route/loadPageRoutes.js +10 -4
  73. package/dist/cjs/shared/route/resolveRouteFunction.js +3 -3
  74. package/dist/cjs/shared/route/resolveRouteString.js +1 -1
  75. package/dist/cjs/shared/route/routing.js +1 -1
  76. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  77. package/dist/cjs/utils/assertSetup.js +8 -8
  78. package/dist/cjs/utils/debugGlob.js +1 -1
  79. package/dist/cjs/utils/parseNpmPackage.js +1 -1
  80. package/dist/esm/__internal/index.d.ts +1 -1
  81. package/dist/esm/__internal/index.js +1 -1
  82. package/dist/esm/client/node.js +1 -1
  83. package/dist/esm/client/runtime-client-routing/createPageContextClientSide.js +2 -2
  84. package/dist/esm/client/runtime-client-routing/getPageContextFromHooks.d.ts +8 -0
  85. package/dist/esm/client/runtime-client-routing/getPageContextFromHooks.js +6 -6
  86. package/dist/esm/client/runtime-client-routing/index.js +1 -1
  87. package/dist/esm/client/runtime-client-routing/isClientSideRoutable.js +1 -1
  88. package/dist/esm/client/runtime-client-routing/prefetch/getPrefetchSettings.js +6 -6
  89. package/dist/esm/client/runtime-client-routing/prefetch.js +10 -10
  90. package/dist/esm/client/runtime-client-routing/renderPageClientSide.d.ts +2 -0
  91. package/dist/esm/client/runtime-client-routing/renderPageClientSide.js +3 -3
  92. package/dist/esm/client/runtime-client-routing/skipLink.js +1 -1
  93. package/dist/esm/client/runtime-server-routing/createPageContextClientSide.js +2 -2
  94. package/dist/esm/client/runtime-server-routing/index.js +1 -1
  95. package/dist/esm/client/shared/createGetGlobalContextClient.d.ts +5 -4
  96. package/dist/esm/client/shared/createGetGlobalContextClient.js +0 -1
  97. package/dist/esm/client/shared/execHookOnRenderClient.js +1 -1
  98. package/dist/esm/client/shared/loadPageConfigsLazyClientSide.js +2 -2
  99. package/dist/esm/client/shared/preparePageContextForPublicUsageClientShared.js +4 -4
  100. package/dist/esm/node/api/prepareViteApiCall.js +1 -1
  101. package/dist/esm/node/cli/index.js +1 -1
  102. package/dist/esm/node/createPageRenderer.js +1 -1
  103. package/dist/esm/node/importBuild.js +1 -1
  104. package/dist/esm/node/prerender/context.js +1 -1
  105. package/dist/esm/node/prerender/index.js +1 -1
  106. package/dist/esm/node/prerender/resolvePrerenderConfig.js +2 -2
  107. package/dist/esm/node/prerender/runPrerender.d.ts +2 -1
  108. package/dist/esm/node/prerender/runPrerender.js +9 -13
  109. package/dist/esm/node/runtime/globalContext.d.ts +15 -15
  110. package/dist/esm/node/runtime/globalContext.js +34 -15
  111. package/dist/esm/node/runtime/html/injectAssets/injectAssets__public.js +1 -1
  112. package/dist/esm/node/runtime/html/injectAssets/injectHtmlTags.js +2 -0
  113. package/dist/esm/node/runtime/html/serializeContext.d.ts +7 -1
  114. package/dist/esm/node/runtime/html/serializeContext.js +73 -15
  115. package/dist/esm/node/runtime/index-deprecated.js +1 -1
  116. package/dist/esm/node/runtime/index.js +1 -1
  117. package/dist/esm/node/runtime/page-files/setup.js +1 -1
  118. package/dist/esm/node/runtime/renderPage/assertArguments.js +1 -1
  119. package/dist/esm/node/runtime/renderPage/createHttpResponse.d.ts +1 -0
  120. package/dist/esm/node/runtime/renderPage/createHttpResponse.js +9 -6
  121. package/dist/esm/node/runtime/renderPage/createPageContextServerSide.d.ts +2 -2
  122. package/dist/esm/node/runtime/renderPage/createPageContextServerSide.js +4 -4
  123. package/dist/esm/node/runtime/renderPage/execHookDataAndOnBeforeRender.js +2 -2
  124. package/dist/esm/node/runtime/renderPage/getCacheControl.d.ts +5 -0
  125. package/dist/esm/node/runtime/renderPage/{createHttpResponse/getCacheControl.js → getCacheControl.js} +8 -9
  126. package/dist/esm/node/runtime/renderPage/getHttpResponseBody.js +4 -4
  127. package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +1 -1
  128. package/dist/esm/node/runtime/renderPage/loadPageConfigsLazyServerSide.d.ts +8 -4
  129. package/dist/esm/node/runtime/renderPage/loadPageConfigsLazyServerSide.js +36 -17
  130. package/dist/esm/node/runtime/renderPage/preparePageContextForPublicUsageServer.js +1 -1
  131. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +4 -2
  132. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +1 -0
  133. package/dist/esm/node/runtime/renderPage.d.ts +3 -3
  134. package/dist/esm/node/runtime/renderPage.js +4 -6
  135. package/dist/esm/node/vite/index.js +1 -1
  136. package/dist/esm/node/vite/onLoad.js +1 -1
  137. package/dist/esm/node/vite/plugins/pluginBuild/pluginBuildConfig.js +1 -1
  138. package/dist/esm/node/vite/plugins/pluginBuild/pluginBuildEntry.js +1 -1
  139. package/dist/esm/node/vite/plugins/pluginBuild/pluginDistPackageJsonFile.js +0 -1
  140. package/dist/esm/node/vite/plugins/pluginCommon/assertResolveAlias.js +1 -1
  141. package/dist/esm/node/vite/plugins/pluginCommon.js +8 -4
  142. package/dist/esm/node/vite/plugins/pluginDev.js +1 -1
  143. package/dist/esm/node/vite/plugins/pluginEnvVars.js +1 -1
  144. package/dist/esm/node/vite/plugins/pluginFileEnv.js +1 -1
  145. package/dist/esm/node/vite/plugins/pluginVirtualFiles.js +1 -1
  146. package/dist/esm/node/vite/shared/addSsrMiddleware.js +1 -1
  147. package/dist/esm/node/vite/shared/loggerNotProd.js +10 -0
  148. package/dist/esm/node/vite/shared/resolveVikeConfigInternal/configDefinitionsBuiltIn.js +5 -1
  149. package/dist/esm/node/vite/shared/resolveVikeConfigInternal/crawlPlusFiles.js +1 -3
  150. package/dist/esm/node/vite/shared/resolveVikeConfigInternal/filesystemRouting.js +4 -6
  151. package/dist/esm/node/vite/shared/resolveVikeConfigInternal/transpileAndExecuteFile.js +1 -1
  152. package/dist/esm/node/vite/shared/resolveVikeConfigInternal.js +6 -6
  153. package/dist/esm/shared/RenderErrorPage.js +1 -1
  154. package/dist/esm/shared/abort.js +1 -1
  155. package/dist/esm/shared/createGlobalContextShared.d.ts +3 -3
  156. package/dist/esm/shared/createGlobalContextShared.js +20 -7
  157. package/dist/esm/shared/createPageContextShared.d.ts +2 -3
  158. package/dist/esm/shared/createPageContextShared.js +1 -2
  159. package/dist/esm/shared/determinePageIdOld.js +1 -1
  160. package/dist/esm/shared/error-page.js +3 -3
  161. package/dist/esm/shared/getPageContextUrlComputed.js +4 -4
  162. package/dist/esm/shared/getPageFiles/analyzeClientSide.js +1 -1
  163. package/dist/esm/shared/getPageFiles/analyzePageClientSide/analyzeExports.js +1 -1
  164. package/dist/esm/shared/getPageFiles/analyzePageClientSide/determineClientEntry.js +1 -1
  165. package/dist/esm/shared/getPageFiles/analyzePageClientSide.js +2 -2
  166. package/dist/esm/shared/getPageFiles/assert_exports_old_design.js +1 -1
  167. package/dist/esm/shared/getPageFiles/fileTypes.js +1 -1
  168. package/dist/esm/shared/getPageFiles/getAllPageIdFiles.js +1 -1
  169. package/dist/esm/shared/getPageFiles/getPageFileObject.js +1 -1
  170. package/dist/esm/shared/getPageFiles/parseVirtualFileExports.js +1 -1
  171. package/dist/esm/shared/getProxyForPublicUsage.js +1 -1
  172. package/dist/esm/shared/hooks/getHook.js +1 -1
  173. package/dist/esm/shared/page-configs/getConfigDefinedAt.js +4 -3
  174. package/dist/esm/shared/page-configs/resolveVikeConfigPublic.js +12 -12
  175. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +1 -1
  176. package/dist/esm/shared/preparePageContextForPublicUsage.js +5 -5
  177. package/dist/esm/shared/route/abort.js +1 -1
  178. package/dist/esm/shared/route/deduceRouteStringFromFilesystemPath.js +1 -1
  179. package/dist/esm/shared/route/execHookGuard.js +1 -1
  180. package/dist/esm/shared/route/execHookOnBeforeRoute.js +1 -1
  181. package/dist/esm/shared/route/index.js +1 -1
  182. package/dist/esm/shared/route/loadPageRoutes.d.ts +5 -0
  183. package/dist/esm/shared/route/loadPageRoutes.js +10 -4
  184. package/dist/esm/shared/route/resolveRouteFunction.js +3 -3
  185. package/dist/esm/shared/route/resolveRouteString.js +1 -1
  186. package/dist/esm/shared/route/routing.js +1 -1
  187. package/dist/esm/types/Config.d.ts +9 -1
  188. package/dist/esm/types/PageContext.d.ts +8 -2
  189. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  190. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  191. package/dist/esm/utils/assertSetup.js +8 -8
  192. package/dist/esm/utils/debugGlob.js +1 -1
  193. package/dist/esm/utils/parseNpmPackage.js +1 -1
  194. package/package.json +3 -6
  195. package/dist/esm/node/runtime/renderPage/createHttpResponse/getCacheControl.d.ts +0 -5
@@ -13,7 +13,7 @@ export { setGlobalContext_viteDevServer };
13
13
  export { setGlobalContext_viteConfig };
14
14
  export { setGlobalContext_isPrerendering };
15
15
  export { setGlobalContext_isProduction };
16
- export { setGlobalContext_buildEntry };
16
+ export { setGlobalContext_buildEntry }; // production entry
17
17
  export { clearGlobalContext };
18
18
  export { assertBuildInfo };
19
19
  export { updateUserFiles };
@@ -30,7 +30,7 @@ import { assert, onSetupRuntime, assertUsage, assertWarning, isPlainObject, obje
30
30
  import { importServerProductionEntry } from '@brillout/vite-plugin-server-entry/runtime';
31
31
  import { virtualFileIdEntryServer } from '../shared/virtualFiles/virtualFileEntry.js';
32
32
  import pc from '@brillout/picocolors';
33
- import { loadPageRoutes } from '../../shared/route/loadPageRoutes.js';
33
+ import { loadPageRoutes, loadPageRoutesSync } from '../../shared/route/loadPageRoutes.js';
34
34
  import { assertV1Design } from '../shared/assertV1Design.js';
35
35
  import { resolveBase } from '../shared/resolveBase.js';
36
36
  import { createGlobalContextShared, getGlobalContextSyncErrMsg, } from '../../shared/createGlobalContextShared.js';
@@ -39,7 +39,7 @@ import { logRuntimeError, logRuntimeInfo } from './loggerRuntime.js';
39
39
  import { getVikeConfigErrorBuild, setVikeConfigError } from '../shared/getVikeConfigError.js';
40
40
  import { hasAlreadyLogged } from './renderPage/isNewError.js';
41
41
  const debug = createDebugger('vike:globalContext');
42
- const globalObject = getGlobalObject('runtime/globalContext.ts', getInitialGlobalContext());
42
+ const globalObject = getGlobalObject('runtime/globalContext.ts', getInitialGlobalObject());
43
43
  // Trick to break down TypeScript circular dependency
44
44
  // https://chat.deepseek.com/a/chat/s/d7e9f90a-c7f3-4108-9cd5-4ad6caed3539
45
45
  const globalObjectTyped = globalObject;
@@ -99,17 +99,19 @@ async function getGlobalContextAsync(isProduction) {
99
99
  * Get runtime information about your app.
100
100
  *
101
101
  * https://vike.dev/getGlobalContext
102
- *
103
- * @deprecated
104
102
  */
105
103
  function getGlobalContextSync() {
106
104
  debug('getGlobalContextSync()');
107
105
  const { globalContext } = globalObjectTyped;
108
106
  assertUsage(globalContext, getGlobalContextSyncErrMsg);
109
- assertWarning(false,
110
- // 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.
111
- // 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).
112
- 'getGlobalContextSync() is going to be deprecated in the next major release, see https://vike.dev/getGlobalContext', { onlyOnce: true });
107
+ const isProd = globalContext._isProduction;
108
+ assert(typeof isProd === 'boolean');
109
+ assertWarning(isProd,
110
+ // - We discourage users from using it in development because `pageContext.globalContext` is safer: I ain't sure but there could be race conditions when using `getGlobalContextSync()` inside React/Vue components upon HMR.
111
+ // - I don't see any issues with getGlobalContextSync() in production.
112
+ // - getGlobalContextSync() is used in production by vike-vercel
113
+ // - https://discord.com/channels/@me/942519153502339072/1389546794676916344 (PM between Rom and Joël)
114
+ "getGlobalContextSync() shouldn't be used in development, see https://vike.dev/getGlobalContext", { onlyOnce: true });
113
115
  return getGlobalContextForPublicUsage();
114
116
  }
115
117
  function getGlobalContextForPublicUsage() {
@@ -148,7 +150,9 @@ function setGlobalContext_isPrerendering() {
148
150
  globalObject.isPrerendering = true;
149
151
  setIsProduction(true);
150
152
  }
151
- function setGlobalContext_isProduction(isProduction, tolerateContraditction) {
153
+ function setGlobalContext_isProduction(isProduction, tolerateContraditction = false) {
154
+ if (debug.isActivated)
155
+ debug('setGlobalContext_isProduction()', { isProduction, tolerateContraditction });
152
156
  if (globalObject.isProduction === undefined) {
153
157
  setIsProduction(isProduction);
154
158
  }
@@ -230,6 +234,7 @@ function assertViteManifest(manifest) {
230
234
  async function loadBuildEntry(outDir) {
231
235
  debug('loadBuildEntry()');
232
236
  if (globalObject.globalContext) {
237
+ debug('loadBuildEntry() - already done');
233
238
  return;
234
239
  }
235
240
  if (!globalObject.buildEntry) {
@@ -255,6 +260,8 @@ async function loadBuildEntry(outDir) {
255
260
  globalObject.buildInfo = buildEntry.buildInfo;
256
261
  await setGlobalContext(buildEntry.virtualFileExports);
257
262
  }
263
+ // This is the production entry, see:
264
+ // https://github.com/vikejs/vike/blob/798e5465dc3e3e6723b38b601a50350c0a006fb8/packages/vike/node/vite/plugins/pluginBuild/pluginBuildEntry.ts#L47
258
265
  async function setGlobalContext_buildEntry(buildEntry) {
259
266
  debug('setGlobalContext_buildEntry()');
260
267
  setIsProduction(true);
@@ -264,6 +271,7 @@ async function setGlobalContext_buildEntry(buildEntry) {
264
271
  assert(globalObject.buildEntry); // ensure no infinite loop
265
272
  await loadBuildEntry();
266
273
  assertGlobalContextIsDefined();
274
+ debug('setGlobalContext_buildEntry() - done');
267
275
  }
268
276
  function assertBuildEntry(buildEntry) {
269
277
  assert(isObject(buildEntry));
@@ -360,18 +368,29 @@ async function updateUserFiles() {
360
368
  return onSuccess();
361
369
  }
362
370
  async function setGlobalContext(virtualFileExports) {
371
+ debug('setGlobalContext()');
363
372
  assert(!getVikeConfigErrorBuild());
364
- const globalContext = await createGlobalContextShared(virtualFileExports, globalObject, addGlobalContext);
373
+ const globalContext = await createGlobalContextShared(virtualFileExports, globalObject, addGlobalContextAsync, addGlobalContextSync);
365
374
  assertV1Design(
366
375
  // pageConfigs is PageConfigRuntime[] but assertV1Design() requires PageConfigBuildTime[]
367
376
  globalContext._pageConfigs.length > 0, globalContext._pageFilesAll);
368
377
  assertGlobalContextIsDefined();
369
378
  onSetupRuntime();
379
+ debug('setGlobalContext() - done');
370
380
  // Never actually used, only used for TypeScript `ReturnType<typeof setGlobalContext>`
371
381
  return globalContext;
372
382
  }
373
- async function addGlobalContext(globalContext) {
383
+ async function addGlobalContextAsync(globalContext) {
384
+ debug('addGlobalContextAsync()');
374
385
  const { pageRoutes, onBeforeRouteHook } = await loadPageRoutes(globalContext._pageFilesAll, globalContext._pageConfigs, globalContext._pageConfigGlobal, globalContext._allPageIds);
386
+ return addGlobalContextCommon(globalContext, pageRoutes, onBeforeRouteHook);
387
+ }
388
+ function addGlobalContextSync(globalContext) {
389
+ debug('addGlobalContextSync()');
390
+ const { pageRoutes, onBeforeRouteHook } = loadPageRoutesSync(globalContext._pageFilesAll, globalContext._pageConfigs, globalContext._pageConfigGlobal, globalContext._allPageIds);
391
+ return addGlobalContextCommon(globalContext, pageRoutes, onBeforeRouteHook);
392
+ }
393
+ function addGlobalContextCommon(globalContext, pageRoutes, onBeforeRouteHook) {
375
394
  const globalContextBase = {
376
395
  isClientSide: false,
377
396
  _pageRoutes: pageRoutes,
@@ -430,10 +449,10 @@ async function addGlobalContext(globalContext) {
430
449
  }
431
450
  function clearGlobalContext() {
432
451
  debug('clearGlobalContext()');
433
- objectReplace(globalObject, getInitialGlobalContext(), ['buildEntryPrevious']);
452
+ objectReplace(globalObject, getInitialGlobalObject(), ['buildEntryPrevious']);
434
453
  }
435
- function getInitialGlobalContext() {
436
- debug('getInitialGlobalContext()');
454
+ function getInitialGlobalObject() {
455
+ debug('getInitialGlobalObject()');
437
456
  const { promise: viteDevServerPromise, resolve: viteDevServerPromiseResolve } = genPromise();
438
457
  return {
439
458
  viteDevServerPromise,
@@ -1,7 +1,7 @@
1
1
  export { injectAssets__public };
2
2
  import { assertUsage, assertWarning, castProp, hasProp } from '../../utils.js';
3
3
  import { injectHtmlTagsToString } from '../injectAssets.js';
4
- // TODO/v1-release: remove
4
+ // TO-DO/next-major-release: remove
5
5
  async function injectAssets__public(htmlString, pageContext) {
6
6
  assertWarning(false, '`_injectAssets()` is deprecated and will be removed.', { onlyOnce: true, showStackTrace: true });
7
7
  assertUsage(typeof htmlString === 'string', '[injectAssets(htmlString, pageContext)]: Argument `htmlString` should be a string.', { showStackTrace: true });
@@ -149,6 +149,8 @@ function getTagClosing(tag) {
149
149
  return tagClosing;
150
150
  }
151
151
  function injectAtPlaceholder(htmlFragment, htmlString, isFirst) {
152
+ // TO-DO/eventually: soft deprecate in favor of https://github.com/vikejs/vike/issues/695
153
+ // Used by BurdaForward https://github.com/vikejs/vike/discussions/2528#discussioncomment-13637156
152
154
  const placeholder = isFirst ? '__VITE_PLUGIN_SSR__ASSETS_FIRST__' : '__VITE_PLUGIN__SSR_ASSETS_LAST__';
153
155
  const parts = htmlString.split(placeholder);
154
156
  if (parts.length === 1)
@@ -2,19 +2,25 @@ export { getPageContextClientSerialized };
2
2
  export { getPageContextClientSerializedAbort };
3
3
  export { getGlobalContextClientSerialized };
4
4
  export type { PageContextSerialization };
5
+ export type { PassToClient };
5
6
  import type { UrlRedirect } from '../../../shared/route/abort.js';
6
7
  import type { GlobalContextServerInternal } from '../globalContext.js';
7
8
  type PageContextSerialization = {
8
9
  pageId: string;
9
10
  routeParams: Record<string, string>;
10
- _passToClient: string[];
11
+ _passToClient: PassToClient;
11
12
  is404: null | boolean;
12
13
  pageProps?: Record<string, unknown>;
13
14
  _pageContextInit: Record<string, unknown>;
14
15
  _globalContext: GlobalContextServerInternal;
16
+ isClientSideNavigation: boolean;
15
17
  };
16
18
  declare function getPageContextClientSerialized(pageContext: PageContextSerialization): string;
17
19
  declare function getGlobalContextClientSerialized(pageContext: PageContextSerialization): string;
20
+ type PassToClient = (string | {
21
+ prop: string;
22
+ once?: boolean;
23
+ })[];
18
24
  declare function getPageContextClientSerializedAbort(pageContext: Record<string, unknown> & ({
19
25
  _urlRedirect: UrlRedirect;
20
26
  } | {
@@ -27,20 +27,41 @@ const passToClientBuiltInPageContext = [
27
27
  const pageToClientBuiltInPageContextError = ['pageProps', 'is404', isServerSideError];
28
28
  function getPageContextClientSerialized(pageContext) {
29
29
  const passToClientPageContext = getPassToClientPageContext(pageContext);
30
- const pageContextClient = applyPassToClient(passToClientPageContext, pageContext);
31
- if (passToClientPageContext.some((prop) => getPropVal(pageContext._pageContextInit, prop))) {
30
+ const getObj = (passToClientEntry) => {
31
+ if (passToClientEntry.once)
32
+ return undefined; // pass it to client-side globalContext
33
+ return { obj: pageContext, objName: 'pageContext' };
34
+ };
35
+ const res = applyPassToClient(passToClientPageContext, getObj);
36
+ const pageContextClient = res.objClient;
37
+ const pageContextClientProps = res.objClientProps;
38
+ if (pageContextClientProps.some((prop) => getPropVal(pageContext._pageContextInit, prop))) {
32
39
  pageContextClient[pageContextInitIsPassedToClient] = true;
33
40
  }
34
- const pageContextClientSerialized = serializeObject(pageContextClient, 'pageContext', passToClientPageContext);
41
+ const pageContextClientSerialized = serializeObject(pageContextClient, passToClientPageContext, getObj);
35
42
  return pageContextClientSerialized;
36
43
  }
37
44
  function getGlobalContextClientSerialized(pageContext) {
38
45
  const passToClient = pageContext._passToClient;
39
- const globalContextClient = applyPassToClient(passToClient, pageContext._globalContext);
40
- const globalContextClientSerialized = serializeObject(globalContextClient, 'globalContext', passToClient);
46
+ const globalContext = pageContext._globalContext;
47
+ const getObj = ({ prop, once }) => {
48
+ if (once && getPropVal(pageContext, prop)) {
49
+ assert(typeof pageContext.isClientSideNavigation === 'boolean');
50
+ if (!pageContext.isClientSideNavigation) {
51
+ return { obj: pageContext, objName: 'pageContext' }; // pass it to client-side globalContext
52
+ }
53
+ else {
54
+ return undefined; // already passed to client-side
55
+ }
56
+ }
57
+ return { obj: globalContext, objName: 'globalContext' };
58
+ };
59
+ const res = applyPassToClient(passToClient, getObj);
60
+ const globalContextClient = res.objClient;
61
+ const globalContextClientSerialized = serializeObject(globalContextClient, passToClient, getObj);
41
62
  return globalContextClientSerialized;
42
63
  }
43
- function serializeObject(obj, objName, passToClient) {
64
+ function serializeObject(obj, passToClient, getObj) {
44
65
  let serialized;
45
66
  try {
46
67
  serialized = serializeValue(obj);
@@ -49,11 +70,15 @@ function serializeObject(obj, objName, passToClient) {
49
70
  const h = (s) => pc.cyan(s);
50
71
  let hasWarned = false;
51
72
  const propsNonSerializable = [];
52
- passToClient.forEach((prop) => {
73
+ passToClient.forEach((entry) => {
74
+ const entryNormalized = normalizePassToClientEntry(entry);
75
+ const { prop } = entryNormalized;
53
76
  const res = getPropVal(obj, prop);
54
77
  if (!res)
55
78
  return;
56
79
  const { value } = res;
80
+ const { objName } = getObj(entryNormalized) ?? {};
81
+ assert(objName);
57
82
  const varName = `${objName}${getPropKeys(prop).map(getPropAccessNotation).join('')}`;
58
83
  try {
59
84
  serializeValue(value, varName);
@@ -103,7 +128,20 @@ function serializeObject(obj, objName, passToClient) {
103
128
  return serialized;
104
129
  }
105
130
  function serializeValue(value, varName) {
106
- return stringify(value, { forbidReactElements: true, valueName: varName });
131
+ return stringify(value, {
132
+ forbidReactElements: true,
133
+ valueName: varName,
134
+ // Prevent Google from crawling URLs in JSON:
135
+ // - https://github.com/vikejs/vike/discussions/2541#discussioncomment-13660198
136
+ // - https://github.com/vikejs/vike/discussions/2277
137
+ // - https://github.com/vikejs/vike/pull/2542
138
+ replacer(_key, value) {
139
+ if (typeof value === 'string' && value.startsWith('/')) {
140
+ // No need to use a reviver: https://github.com/brillout/json-serializer/blob/70fc8ed3741306391b51655b05df24e6963d1fdb/test/main.spec.ts#L74-L80
141
+ return { replacement: (value = '!' + value) };
142
+ }
143
+ },
144
+ });
107
145
  }
108
146
  function getPassToClientPageContext(pageContext) {
109
147
  let passToClient = [...pageContext._passToClient, ...passToClientBuiltInPageContext];
@@ -139,7 +177,7 @@ function getPageContextClientSerializedAbort(pageContext) {
139
177
  assert(unknownProps.length === 0);
140
178
  }
141
179
  else {
142
- // TODO/v1-release: remove
180
+ // TO-DO/next-major-release: remove
143
181
  assertWarning(unknownProps.length === 0, [
144
182
  "The following pageContext values won't be available on the client-side:",
145
183
  unknownProps.map((p) => ` pageContext[${JSON.stringify(p)}]`),
@@ -150,16 +188,36 @@ function getPageContextClientSerializedAbort(pageContext) {
150
188
  }
151
189
  return serializeValue(pageContext);
152
190
  }
153
- function applyPassToClient(passToClient, pageContext) {
154
- const pageContextClient = {};
155
- passToClient.forEach((prop) => {
191
+ function applyPassToClient(passToClient, getObj) {
192
+ const objClient = {};
193
+ const objClientProps = [];
194
+ passToClient.forEach((entry) => {
195
+ const entryNormalized = normalizePassToClientEntry(entry);
196
+ const { prop } = entryNormalized;
197
+ const { obj } = getObj(entryNormalized) ?? {};
198
+ if (!obj)
199
+ return;
156
200
  // Get value from pageContext
157
- const res = getPropVal(pageContext, prop);
201
+ const res = getPropVal(obj, prop);
158
202
  if (!res)
159
203
  return;
160
204
  const { value } = res;
161
205
  // Set value to pageContextClient
162
- setPropVal(pageContextClient, prop, value);
206
+ setPropVal(objClient, prop, value);
207
+ objClientProps.push(prop);
163
208
  });
164
- return pageContextClient;
209
+ return { objClient, objClientProps };
210
+ }
211
+ function normalizePassToClientEntry(entry) {
212
+ let once;
213
+ let prop;
214
+ if (typeof entry === 'string') {
215
+ prop = entry;
216
+ once = false;
217
+ }
218
+ else {
219
+ prop = entry.prop;
220
+ once = entry.once ?? false;
221
+ }
222
+ return { prop, once };
165
223
  }
@@ -1,4 +1,4 @@
1
- // TO-DO/soon: point package.json#exports['./server'] to this file.
1
+ // TO-DO/eventually: point package.json#exports['./server'] to this file.
2
2
  // - Write migration guide, see comment below.
3
3
  export * from './index.js';
4
4
  import { assertWarning } from './utils.js';
@@ -7,7 +7,7 @@ export { pipeWebStream, pipeNodeStream, pipeStream, stampPipe } from './html/str
7
7
  export { PROJECT_VERSION as version } from './utils.js';
8
8
  export { getGlobalContext, getGlobalContextSync, getGlobalContextAsync } from './globalContext.js';
9
9
  export { createDevMiddleware } from '../runtime-dev/index.js';
10
- // TODO/v1-release: remove
10
+ // TO-DO/next-major-release: remove
11
11
  // Deprecated exports
12
12
  export * from '../../types/index-dreprecated.js';
13
13
  export { injectAssets__public as _injectAssets } from './html/injectAssets/injectAssets__public.js';
@@ -1,3 +1,3 @@
1
1
  export {};
2
- // TODO/v1-release: remove https://github.com/vikejs/vike/issues/2122
2
+ // TO-DO/next-major-release: remove https://github.com/vikejs/vike/issues/2122
3
3
  // This doesn't do anything anymore. (It's kept to avoid introducing a breaking change.)
@@ -10,7 +10,7 @@ function assertArguments(...args) {
10
10
  showStackTrace: true,
11
11
  });
12
12
  assertUsage(isObject(pageContextInit), `${prefix} called with ${pc.code(`typeof pageContextInit === ${JSON.stringify(typeof pageContextInit)}`)} but ${pc.code('pageContextInit')} should be an object.`, { showStackTrace: true });
13
- // TODO/v1-release: remove
13
+ // TO-DO/next-major-release: remove
14
14
  if ('url' in pageContextInit) {
15
15
  assertWarning(false, '`pageContextInit.url` has been renamed to `pageContextInit.urlOriginal`: replace `renderPage({ url })` with `renderPage({ urlOriginal })`. (See https://vike.dev/migration/0.4.23 for more information.)', { showStackTrace: true, onlyOnce: true });
16
16
  pageContextInit.urlOriginal = pageContextInit.url;
@@ -28,6 +28,7 @@ declare function createHttpResponsePage(htmlRender: HtmlRender, renderHook: null
28
28
  __getPageAssets: GetPageAssets;
29
29
  _globalContext: GlobalContextServerInternal;
30
30
  abortStatusCode?: AbortStatusCode;
31
+ headersResponse?: Headers;
31
32
  }): Promise<HttpResponse>;
32
33
  declare function createHttpResponse404(errMsg404: string): HttpResponse;
33
34
  declare function createHttpResponseBaseIsMissing(urlOriginal: string, baseServer: string): HttpResponse;
@@ -9,8 +9,8 @@ import { assert, assertWarning, escapeHtml } from '../utils.js';
9
9
  import { getErrorPageId, isErrorPage } from '../../../shared/error-page.js';
10
10
  import { getHttpResponseBody, getHttpResponseBodyStreamHandlers } from './getHttpResponseBody.js';
11
11
  import { getEarlyHints } from './getEarlyHints.js';
12
- import { getCacheControl } from './createHttpResponse/getCacheControl.js';
13
12
  import { assertNoInfiniteHttpRedirect } from './createHttpResponse/assertNoInfiniteHttpRedirect.js';
13
+ import { cacheControlDisable } from './getCacheControl.js';
14
14
  async function createHttpResponsePage(htmlRender, renderHook, pageContext) {
15
15
  let statusCode = pageContext.abortStatusCode;
16
16
  if (!statusCode) {
@@ -29,10 +29,13 @@ async function createHttpResponsePage(htmlRender, renderHook, pageContext) {
29
29
  }
30
30
  const earlyHints = getEarlyHints(await pageContext.__getPageAssets());
31
31
  const headers = [];
32
- const cacheControl = getCacheControl(pageContext.pageId, pageContext._globalContext._pageConfigs, statusCode);
33
- if (cacheControl) {
34
- headers.push(['Cache-Control', cacheControl]);
35
- }
32
+ const headersResponse = pageContext.headersResponse || new Headers();
33
+ headersResponse.forEach((value, key) => {
34
+ headers.push([key, value]);
35
+ });
36
+ // An 5xx error page shouldn't be cached (it should be temporary)
37
+ if (statusCode >= 500)
38
+ headersResponse.set('Cache-Control', cacheControlDisable);
36
39
  return createHttpResponse(statusCode, 'text/html;charset=utf-8', headers, htmlRender, earlyHints, renderHook);
37
40
  }
38
41
  function createHttpResponse404(errMsg404) {
@@ -102,7 +105,7 @@ function createHttpResponse(statusCode, contentType, headers, htmlRender, earlyH
102
105
  return {
103
106
  statusCode,
104
107
  headers,
105
- // TODO/v1-release: remove
108
+ // TO-DO/next-major-release: remove
106
109
  get contentType() {
107
110
  assertWarning(false, 'pageContext.httpResponse.contentType is deprecated and will be removed in the next major release. Use pageContext.httpResponse.headers instead, see https://vike.dev/migration/0.4.134', { onlyOnce: true });
108
111
  return contentType;
@@ -13,7 +13,7 @@ declare function createPageContextServerSide(pageContextInit: PageContextInit, g
13
13
  } | {
14
14
  isPrerendering: true;
15
15
  ssr?: undefined;
16
- }): Promise<{
16
+ }): {
17
17
  _isOriginalObject: true;
18
18
  isPageContext: true;
19
19
  } & {
@@ -125,7 +125,7 @@ declare function createPageContextServerSide(pageContextInit: PageContextInit, g
125
125
  url: string;
126
126
  } & {
127
127
  headers: Record<string, string> | null;
128
- }>;
128
+ };
129
129
  declare function createPageContextServerSideWithoutGlobalContext(pageContextInit: PageContextInit): {
130
130
  _isOriginalObject: true;
131
131
  isPageContext: true;
@@ -3,7 +3,7 @@ export { createPageContextServerSideWithoutGlobalContext };
3
3
  import { assert, assertUsage, assertWarning, augmentType, normalizeHeaders, objectAssign } from '../utils.js';
4
4
  import { getPageContextUrlComputed } from '../../../shared/getPageContextUrlComputed.js';
5
5
  import { createPageContextObject, createPageContextShared } from '../../../shared/createPageContextShared.js';
6
- async function createPageContextServerSide(pageContextInit, globalContext, { isPrerendering, ssr: { urlHandler, isClientSideNavigation } = {
6
+ function createPageContextServerSide(pageContextInit, globalContext, { isPrerendering, ssr: { urlHandler, isClientSideNavigation } = {
7
7
  urlHandler: null,
8
8
  isClientSideNavigation: false,
9
9
  }, }) {
@@ -11,7 +11,7 @@ async function createPageContextServerSide(pageContextInit, globalContext, { isP
11
11
  const pageContextCreated = createPageContext(pageContextInit, isPrerendering);
12
12
  objectAssign(pageContextCreated, {
13
13
  _globalContext: globalContext,
14
- _pageFilesAll: globalContext._pageFilesAll, // TODO/v1-release: remove
14
+ _pageFilesAll: globalContext._pageFilesAll, // TO-DO/next-major-release: remove
15
15
  // We use pageContext._baseServer and pageContext._baseAssets instead of pageContext._globalContext.baseServer and pageContext._globalContext.baseAssets because the Base URLs can (eventually one day if needed) be made non-global
16
16
  _baseServer: globalContext.baseServer,
17
17
  _baseAssets: globalContext.baseAssets,
@@ -33,7 +33,7 @@ async function createPageContextServerSide(pageContextInit, globalContext, { isP
33
33
  }
34
34
  else if (pageContextInit.headers) {
35
35
  headers = pageContextInit.headers;
36
- // TODO/next-major-release: remove
36
+ // TO-DO/next-major-release: remove
37
37
  assertWarning(false, 'Setting pageContextInit.headers is deprecated: set pageContextInit.headersOriginal instead, see https://vike.dev/headers', { onlyOnce: true });
38
38
  }
39
39
  else {
@@ -41,7 +41,7 @@ async function createPageContextServerSide(pageContextInit, globalContext, { isP
41
41
  }
42
42
  objectAssign(pageContextCreated, { headers });
43
43
  }
44
- const pageContextAugmented = await createPageContextShared(pageContextCreated, globalContext._pageConfigGlobal, globalContext._vikeConfigPublicGlobal);
44
+ const pageContextAugmented = createPageContextShared(pageContextCreated, globalContext._vikeConfigPublicGlobal);
45
45
  augmentType(pageContextCreated, pageContextAugmented);
46
46
  return pageContextCreated;
47
47
  }
@@ -6,7 +6,7 @@ async function execHookDataAndOnBeforeRender(pageContext) {
6
6
  return;
7
7
  }
8
8
  const hooks = await execHookServer('data', pageContext);
9
- const dataHook = hooks[0]; // TO-DO/soon: support cumulative
9
+ const dataHook = hooks[0]; // TO-DO/soon/cumulative-hooks: support cumulative
10
10
  if (dataHook) {
11
11
  // Note: hookReturn can be anything (e.g. an object) and is to be assigned to pageContext.data
12
12
  const pageContextFromHook = {
@@ -19,7 +19,7 @@ async function execHookDataAndOnBeforeRender(pageContext) {
19
19
  }
20
20
  }
21
21
  const res = await execHookServer('onBeforeRender', pageContext);
22
- const onBeforeRenderHook = res[0]; // TO-DO/soon: support cumulative
22
+ const onBeforeRenderHook = res[0]; // TO-DO/soon/cumulative-hooks: support cumulative
23
23
  if (onBeforeRenderHook) {
24
24
  const { hookReturn } = onBeforeRenderHook;
25
25
  assertOnBeforeRenderHookReturn(hookReturn, onBeforeRenderHook.hookFilePath);
@@ -0,0 +1,5 @@
1
+ export { getCacheControl };
2
+ export { cacheControlDisable };
3
+ import type { PageConfigRuntime } from '../../../types/PageConfig.js';
4
+ declare const cacheControlDisable = "no-store, max-age=0";
5
+ declare function getCacheControl(pageId: string | null, pageConfigs: PageConfigRuntime[]): string;
@@ -1,13 +1,12 @@
1
1
  export { getCacheControl };
2
- import { getPageConfig } from '../../../../shared/page-configs/helpers.js';
3
- import { getConfigValueRuntime } from '../../../../shared/page-configs/getConfigValueRuntime.js';
4
- const defaultValue = 'no-store, max-age=0';
5
- function getCacheControl(pageId, pageConfigs, statusCode) {
6
- // TODO/v1-release: remove
2
+ export { cacheControlDisable };
3
+ import { getPageConfig } from '../../../shared/page-configs/helpers.js';
4
+ import { getConfigValueRuntime } from '../../../shared/page-configs/getConfigValueRuntime.js';
5
+ const cacheControlDisable = 'no-store, max-age=0';
6
+ function getCacheControl(pageId, pageConfigs) {
7
+ // TO-DO/next-major-release: remove this line
7
8
  if (pageConfigs.length === 0)
8
- return defaultValue;
9
- if (statusCode > 499)
10
- return defaultValue;
9
+ return cacheControlDisable;
11
10
  if (pageId) {
12
11
  const pageConfig = getPageConfig(pageId, pageConfigs);
13
12
  const configValue = getConfigValueRuntime(pageConfig, 'cacheControl', 'string');
@@ -18,5 +17,5 @@ function getCacheControl(pageId, pageConfigs, statusCode) {
18
17
  // - 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
19
18
  // - Are there use cases when we don't need to disable caching?
20
19
  // - 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.)
21
- return defaultValue;
20
+ return cacheControlDisable;
22
21
  }
@@ -56,7 +56,7 @@ function getHttpResponseBodyStreamHandlers(htmlRender, renderHook) {
56
56
  const body = await getHtmlString(htmlRender);
57
57
  return body;
58
58
  },
59
- // TODO/v1-release: remove
59
+ // TO-DO/next-major-release: remove
60
60
  async getNodeStream() {
61
61
  assertWarning(false, '`pageContext.httpResponse.getNodeStream()` is outdated, use `pageContext.httpResponse.getReadableNodeStream()` instead. ' +
62
62
  streamDocs, { onlyOnce: true, showStackTrace: true });
@@ -66,7 +66,7 @@ function getHttpResponseBodyStreamHandlers(htmlRender, renderHook) {
66
66
  }
67
67
  return nodeStream;
68
68
  },
69
- // TODO/v1-release: remove
69
+ // TO-DO/next-major-release: remove
70
70
  getWebStream() {
71
71
  assertWarning(false, '`pageContext.httpResponse.getWebStream(res)` is outdated, use `pageContext.httpResponse.getReadableWebStream(res)` instead. ' +
72
72
  streamDocs, { onlyOnce: true, showStackTrace: true });
@@ -76,7 +76,7 @@ function getHttpResponseBodyStreamHandlers(htmlRender, renderHook) {
76
76
  }
77
77
  return webStream;
78
78
  },
79
- // TODO/v1-release: remove
79
+ // TO-DO/next-major-release: remove
80
80
  pipeToWebWritable(writable) {
81
81
  assertWarning(false, '`pageContext.httpResponse.pipeToWebWritable(res)` is outdated, use `pageContext.httpResponse.pipe(res)` instead. ' +
82
82
  streamDocs, { onlyOnce: true, showStackTrace: true });
@@ -85,7 +85,7 @@ function getHttpResponseBodyStreamHandlers(htmlRender, renderHook) {
85
85
  assertUsage(false, getErrMsg(htmlRender, renderHook, 'pipeToWebWritable()'));
86
86
  }
87
87
  },
88
- // TODO/v1-release: remove
88
+ // TO-DO/next-major-release: remove
89
89
  pipeToNodeWritable(writable) {
90
90
  assertWarning(false, '`pageContext.httpResponse.pipeToNodeWritable(res)` is outdated, use `pageContext.httpResponse.pipe(res)` instead. ' +
91
91
  streamDocs, { onlyOnce: true, showStackTrace: true });
@@ -9,7 +9,7 @@ function retrieveAssetsProd(clientDependencies, assetsManifest, includeAssetsImp
9
9
  clientDependencies.forEach(({ id, onlyAssets, eagerlyImported }) => {
10
10
  if (eagerlyImported)
11
11
  return; // Eagerly imported assets aren't imported with import() and therefore don't create a new Rollup entry and aren't listed in the manifest file
12
- // TODO/v1-release: remove
12
+ // TO-DO/next-major-release: remove
13
13
  if (includeAssetsImportedByServer &&
14
14
  onlyAssets &&
15
15
  id.includes('.page.server.') &&
@@ -1,11 +1,13 @@
1
1
  export { loadPageConfigsLazyServerSideAndExecHook };
2
2
  export type { PageContext_loadPageConfigsLazyServerSide };
3
3
  export type { PageConfigsLazy };
4
+ import { type VikeConfigPublicPageLazy } from '../../../shared/getPageFiles.js';
4
5
  import { PromiseType } from '../utils.js';
5
6
  import { PageContextGetPageAssets, type PageAsset } from './getPageAssets.js';
6
7
  import { type PageContextDebugRouteMatches } from './debugPageFiles.js';
7
8
  import type { GlobalContextServerInternal } from '../globalContext.js';
8
9
  import { type PageContextExecHookServer } from './execHookServer.js';
10
+ import type { PassToClient } from '../html/serializeContext.js';
9
11
  type PageContextExecuteHook = Omit<PageContextExecHookServer, keyof Awaited<ReturnType<typeof loadPageConfigsLazyServerSide>>>;
10
12
  type PageContext_loadPageConfigsLazyServerSide = PageContextGetPageAssets & PageContextDebugRouteMatches & {
11
13
  pageId: string;
@@ -13,19 +15,21 @@ type PageContext_loadPageConfigsLazyServerSide = PageContextGetPageAssets & Page
13
15
  _globalContext: GlobalContextServerInternal;
14
16
  };
15
17
  type PageConfigsLazy = PromiseType<ReturnType<typeof loadPageConfigsLazyServerSide>>;
16
- declare function loadPageConfigsLazyServerSideAndExecHook<PageContext extends PageContext_loadPageConfigsLazyServerSide & PageContextExecuteHook>(pageContext: PageContext): Promise<PageContext & import("../../../shared/getPageFiles.js").VikeConfigPublicPageLazy & {
18
+ declare function loadPageConfigsLazyServerSideAndExecHook<PageContext extends PageContext_loadPageConfigsLazyServerSide & PageContextExecuteHook>(pageContext: PageContext): Promise<PageContext & VikeConfigPublicPageLazy & {
17
19
  Page: unknown;
18
20
  _isHtmlOnly: boolean;
19
- _passToClient: string[];
21
+ _passToClient: PassToClient;
20
22
  _pageFilePathsLoaded: string[];
23
+ headersResponse: Headers;
21
24
  } & {
22
25
  __getPageAssets: () => Promise<PageAsset[]>;
23
26
  }>;
24
- declare function loadPageConfigsLazyServerSide(pageContext: PageContext_loadPageConfigsLazyServerSide): Promise<import("../../../shared/getPageFiles.js").VikeConfigPublicPageLazy & {
27
+ declare function loadPageConfigsLazyServerSide(pageContext: PageContext_loadPageConfigsLazyServerSide): Promise<VikeConfigPublicPageLazy & {
25
28
  Page: unknown;
26
29
  _isHtmlOnly: boolean;
27
- _passToClient: string[];
30
+ _passToClient: PassToClient;
28
31
  _pageFilePathsLoaded: string[];
32
+ headersResponse: Headers;
29
33
  } & {
30
34
  __getPageAssets: () => Promise<PageAsset[]>;
31
35
  }>;