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
@@ -12,7 +12,7 @@ const assertSetup_js_1 = require("../utils/assertSetup.js");
12
12
  /**
13
13
  * Used by {@link https://github.com/magne4000/vite-plugin-vercel|vite-plugin-vercel} to compute some rewrite rules and extract { isr } configs.
14
14
  *
15
- * TODO/eventually: remove
15
+ * TO-DO/eventually: remove
16
16
  */
17
17
  async function getPagesAndRoutes() {
18
18
  (0, assertSetup_js_1.setNodeEnvProduction)();
@@ -46,7 +46,6 @@ function createGetGlobalContextClient(virtualFileExports, isClientRouting, addGl
46
46
  return globalContext;
47
47
  }
48
48
  }
49
- // The type is never used: it's the type of the server-side getGlobalContext() that is used.
50
49
  async function getGlobalContext() {
51
50
  const globalContext = await globalObject.globalContextPromise;
52
51
  return globalContext;
@@ -5,14 +5,14 @@ exports.preparePageContextForPublicUsageClientMinimal = preparePageContextForPub
5
5
  const utils_js_1 = require("../runtime-server-routing/utils.js");
6
6
  const preparePageContextForPublicUsage_js_1 = require("../../shared/preparePageContextForPublicUsage.js");
7
7
  function preparePageContextForPublicUsageClientShared(pageContext) {
8
- // TODO/now-proxy use proxy
8
+ // TO-DO/soon/proxy: use proxy
9
9
  const Page = pageContext.config?.Page ||
10
- // TODO/next-major-release: remove
10
+ // TO-DO/next-major-release: remove
11
11
  pageContext.exports?.Page;
12
12
  (0, utils_js_1.objectAssign)(pageContext, { Page });
13
- // TODO/next-major-release: after we remove supportVueReactiviy() we can call this later inside the agnostic preparePageContextForPublicUsage()
13
+ // TO-DO/next-major-release: after we remove supportVueReactiviy() we can call this later inside the agnostic preparePageContextForPublicUsage()
14
14
  (0, preparePageContextForPublicUsage_js_1.assertPropertyGetters)(pageContext);
15
- // TODO/next-major-release: remove
15
+ // TO-DO/next-major-release: remove
16
16
  // - Requires https://github.com/vikejs/vike-vue/issues/198
17
17
  // - Last time I tried to remove it (https://github.com/vikejs/vike/commit/705fd23598d9d69bf46a52c8550216cd7117ce71) the tests were failing as expected: only the Vue integrations that used shallowReactive() failed.
18
18
  supportVueReactiviy(pageContext);
@@ -122,7 +122,7 @@ async function getViteInfo(viteConfigFromUserApiOptions, operation) {
122
122
  const root = normalizeViteRoot(viteConfigResolved.root ?? process.cwd());
123
123
  globalObject.root = root;
124
124
  // - Find options `vike(options)` set in vite.config.js
125
- // - TODO/next-major: remove
125
+ // - TO-DO/next-major-release: remove
126
126
  // - Add Vike's Vite plugin if missing
127
127
  let vikeVitePluginOptions;
128
128
  const found = findVikeVitePlugin(viteConfigResolved);
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // TODO/v1-release: remove this file
2
+ // TO-DO/next-major-release: remove this file
3
3
  var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  return (mod && mod.__esModule) ? mod : { "default": mod };
5
5
  };
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // TODO/v1-release: remove this file
2
+ // TO-DO/next-major-release: remove this file
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.createPageRenderer = createPageRenderer;
5
5
  //import { SsrEnv, setSsrEnv } from './ssrEnv.js'
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
- // TODO/v1-release: remove
2
+ // TO-DO/next-major-release: remove
3
3
  console.warn("[vike][Warning] importBuild.js is not needed anymore; it has no effect. Remove `import 'dist/server/importBuild.js'` to remove this warning. More infos at https://vike.dev/importBuild.js");
@@ -14,7 +14,7 @@ function isPrerenderAutoRunEnabled(vikeConfig) {
14
14
  !globalObject.isDisabled &&
15
15
  vikeConfig.config.disableAutoFullBuild !== 'prerender');
16
16
  }
17
- // TODO/v1-release: remove
17
+ // TO-DO/next-major-release: remove
18
18
  function temp_disablePrerenderAutoRun() {
19
19
  globalObject.isDisabled = true;
20
20
  }
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // TODO/v1-release: remove this file
2
+ // TO-DO/next-major-release: remove this file
3
3
  var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  return (mod && mod.__esModule) ? mod : { "default": mod };
5
5
  };
@@ -24,7 +24,7 @@ function resolvePrerenderConfigGlobal(vikeConfig) {
24
24
  defaultLocalValue = true;
25
25
  }
26
26
  }
27
- // TODO/next-major: remove
27
+ // TO-DO/next-major-release: remove
28
28
  // Backwards compatibility for `vike({prerender:true})` in vite.config.js
29
29
  {
30
30
  const valuesWithDefinedAt = vikeConfig._from.configsCumulative.prerender?.values ?? [];
@@ -39,7 +39,7 @@ function resolvePrerenderConfigGlobal(vikeConfig) {
39
39
  isPrerenderingEnabled: vikeConfig._pageConfigs.length > 0 &&
40
40
  vikeConfig._pageConfigs.some((pageConfig) => resolvePrerenderConfigLocal(pageConfig)?.value ?? defaultLocalValue),
41
41
  });
42
- // TODO/next-major remove
42
+ // TO-DO/next-major-release: remove
43
43
  if (vikeConfig._pageConfigs.length === 0 && defaultLocalValue)
44
44
  prerenderConfigGlobal.isPrerenderingEnabled = true;
45
45
  return prerenderConfigGlobal;
@@ -87,7 +87,7 @@ async function runPrerender(options = {}, trigger) {
87
87
  const { partial, noExtraDir, parallel, defaultLocalValue, isPrerenderingEnabled } = prerenderConfigGlobal;
88
88
  if (!isPrerenderingEnabled) {
89
89
  (0, utils_js_1.assert)(trigger !== 'auto-run');
90
- /* TODO/v1-release: use this assertUsage() again.
90
+ /* TO-DO/next-major-release: use this assertUsage() again.
91
91
  * - Make sure https://github.com/magne4000/vite-plugin-vercel/pull/156 is merged before using this assertUsage() again. (Otherwise vite-plugin-vercel will trigger this assertUsage() call.)
92
92
  * - Done: PR is merged as of June 20205
93
93
  assertUsage(
@@ -169,7 +169,7 @@ async function collectDoNoPrerenderList(pageConfigs, doNotPrerenderList, default
169
169
  }
170
170
  });
171
171
  // Old design
172
- // TODO/v1-release: remove
172
+ // TO-DO/next-major-release: remove
173
173
  await Promise.all(globalContext._pageFilesAll
174
174
  .filter((p) => {
175
175
  assertExportNames(p);
@@ -332,7 +332,7 @@ async function createPageContextPrerendering(urlOriginal, prerenderContext, glob
332
332
  urlOriginal,
333
333
  ...prerenderContext._pageContextInit,
334
334
  };
335
- const pageContext = await (0, createPageContextServerSide_js_1.createPageContextServerSide)(pageContextInit, globalContext, {
335
+ const pageContext = (0, createPageContextServerSide_js_1.createPageContextServerSide)(pageContextInit, globalContext, {
336
336
  isPrerendering: true,
337
337
  });
338
338
  (0, utils_js_1.assert)(pageContext.isPrerendering === true);
@@ -423,7 +423,7 @@ async function callOnPrerenderStartHook(prerenderContext, globalContext, concurr
423
423
  }
424
424
  }
425
425
  // Old design
426
- // TODO/v1-release: remove
426
+ // TO-DO/next-major-release: remove
427
427
  if (globalContext._pageConfigs.length === 0) {
428
428
  const hookTimeout = (0, getHook_js_1.getHookTimeoutDefault)('onBeforePrerender');
429
429
  const pageFilesWithOnBeforePrerenderHook = globalContext._pageFilesAll.filter((p) => {
@@ -463,7 +463,7 @@ async function callOnPrerenderStartHook(prerenderContext, globalContext, concurr
463
463
  (0, utils_js_1.assertUsage)((0, utils_js_1.isCallable)(hookFn), `${msgPrefix} should be a function.`);
464
464
  prerenderContext.pageContexts.forEach((pageContext) => {
465
465
  Object.defineProperty(pageContext, 'url', {
466
- // TODO/v1-release: remove warning
466
+ // TO-DO/next-major-release: remove warning
467
467
  get() {
468
468
  (0, utils_js_1.assertWarning)(false, msgPrefix +
469
469
  ' uses pageContext.url but it should use pageContext.urlOriginal instead, see https://vike.dev/migration/0.4.23', { showStackTrace: true, onlyOnce: true });
@@ -493,7 +493,7 @@ async function callOnPrerenderStartHook(prerenderContext, globalContext, concurr
493
493
  }
494
494
  const errPrefix = `The ${hookName}() hook exported by ${hookFilePath}`;
495
495
  const rightUsage = `${errPrefix} should return ${picocolors_1.default.cyan('null')}, ${picocolors_1.default.cyan('undefined')}, or ${picocolors_1.default.cyan('{ prerenderContext: { pageContexts } }')}`;
496
- // TODO/v1-release: remove
496
+ // TO-DO/next-major-release: remove
497
497
  if ((0, utils_js_1.hasProp)(result, 'globalContext')) {
498
498
  (0, utils_js_1.assertUsage)((0, utils_js_1.isObjectWithKeys)(result, ['globalContext']) &&
499
499
  (0, utils_js_1.hasProp)(result, 'globalContext', 'object') &&
@@ -510,7 +510,7 @@ async function callOnPrerenderStartHook(prerenderContext, globalContext, concurr
510
510
  (0, utils_js_1.hasProp)(result.prerenderContext, 'pageContexts', 'array'), rightUsage);
511
511
  prerenderContext.pageContexts = result.prerenderContext.pageContexts;
512
512
  prerenderContext.pageContexts.forEach((pageContext) => {
513
- // TODO/v1-release: remove
513
+ // TO-DO/next-major-release: remove
514
514
  if (pageContext.url && !(0, utils_js_1.isPropertyGetter)(pageContext, 'url')) {
515
515
  (0, utils_js_1.assertWarning)(false, msgPrefix +
516
516
  ' provided pageContext.url but it should provide pageContext.urlOriginal instead, see https://vike.dev/migration/0.4.23', { onlyOnce: true });
@@ -571,10 +571,6 @@ function warnContradictoryNoPrerenderList(prerenderedPageContexts, doNotPrerende
571
571
  async function warnMissingPages(prerenderedPageContexts, globalContext, doNotPrerenderList, partial) {
572
572
  const isV1 = globalContext._pageConfigs.length > 0;
573
573
  const hookName = isV1 ? 'onBeforePrerenderStart' : 'prerender';
574
- /* TODO/after-v1-design-release: document setting `prerender: false` as an alternative to using prerender.partial (both in the warnings and the docs)
575
- const optOutName = isV1 ? 'prerender' : 'doNotPrerender'
576
- const msgAddendum = `Explicitly opt-out by setting the config ${optOutName} to ${isV1 ? 'false' : 'true'} or use the option prerender.partial`
577
- */
578
574
  globalContext._allPageIds
579
575
  .filter((pageId) => !prerenderedPageContexts[pageId])
580
576
  .filter((pageId) => !doNotPrerenderList.find((p) => p.pageId === pageId))
@@ -677,7 +673,7 @@ function normalizeOnPrerenderHookResult(prerenderResult, prerenderHookFile, hook
677
673
  return prerenderElement;
678
674
  }
679
675
  }
680
- // TODO/v1-release: remove
676
+ // TO-DO/next-major-release: remove
681
677
  function checkOutdatedOptions(options) {
682
678
  (0, utils_js_1.assertUsage)(options.root === undefined, 'Option `prerender({ root })` deprecated: set `prerender({ viteConfig: { root }})` instead.', { showStackTrace: true });
683
679
  (0, utils_js_1.assertUsage)(options.configFile === undefined, 'Option `prerender({ configFile })` deprecated: set `prerender({ viteConfig: { configFile }})` instead.', { showStackTrace: true });
@@ -722,7 +718,7 @@ function assertIsNotAbort(err, urlOriginal) {
722
718
  (0, utils_js_1.assertUsage)(false, `${picocolors_1.default.cyan(abortCall)} thrown${thrownBy} while pre-rendering ${urlOriginal} but ${picocolors_1.default.cyan(abortCaller)} isn't supported for pre-rendered pages`);
723
719
  }
724
720
  function preparePrerenderContextForPublicUsage(prerenderContext) {
725
- // TODO/v1-release: remove
721
+ // TO-DO/next-major-release: remove
726
722
  if (!('prerenderPageContexts' in prerenderContext)) {
727
723
  Object.defineProperty(prerenderContext, 'prerenderPageContexts', {
728
724
  get() {
@@ -42,7 +42,7 @@ const loggerRuntime_js_1 = require("./loggerRuntime.js");
42
42
  const getVikeConfigError_js_1 = require("../shared/getVikeConfigError.js");
43
43
  const isNewError_js_1 = require("./renderPage/isNewError.js");
44
44
  const debug = (0, utils_js_1.createDebugger)('vike:globalContext');
45
- const globalObject = (0, utils_js_1.getGlobalObject)('runtime/globalContext.ts', getInitialGlobalContext());
45
+ const globalObject = (0, utils_js_1.getGlobalObject)('runtime/globalContext.ts', getInitialGlobalObject());
46
46
  // Trick to break down TypeScript circular dependency
47
47
  // https://chat.deepseek.com/a/chat/s/d7e9f90a-c7f3-4108-9cd5-4ad6caed3539
48
48
  const globalObjectTyped = globalObject;
@@ -103,17 +103,19 @@ async function getGlobalContextAsync(isProduction) {
103
103
  * Get runtime information about your app.
104
104
  *
105
105
  * https://vike.dev/getGlobalContext
106
- *
107
- * @deprecated
108
106
  */
109
107
  function getGlobalContextSync() {
110
108
  debug('getGlobalContextSync()');
111
109
  const { globalContext } = globalObjectTyped;
112
110
  (0, utils_js_1.assertUsage)(globalContext, createGlobalContextShared_js_1.getGlobalContextSyncErrMsg);
113
- (0, utils_js_1.assertWarning)(false,
114
- // 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.
115
- // 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).
116
- 'getGlobalContextSync() is going to be deprecated in the next major release, see https://vike.dev/getGlobalContext', { onlyOnce: true });
111
+ const isProd = globalContext._isProduction;
112
+ (0, utils_js_1.assert)(typeof isProd === 'boolean');
113
+ (0, utils_js_1.assertWarning)(isProd,
114
+ // - 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.
115
+ // - I don't see any issues with getGlobalContextSync() in production.
116
+ // - getGlobalContextSync() is used in production by vike-vercel
117
+ // - https://discord.com/channels/@me/942519153502339072/1389546794676916344 (PM between Rom and Joël)
118
+ "getGlobalContextSync() shouldn't be used in development, see https://vike.dev/getGlobalContext", { onlyOnce: true });
117
119
  return getGlobalContextForPublicUsage();
118
120
  }
119
121
  function getGlobalContextForPublicUsage() {
@@ -152,7 +154,9 @@ function setGlobalContext_isPrerendering() {
152
154
  globalObject.isPrerendering = true;
153
155
  setIsProduction(true);
154
156
  }
155
- function setGlobalContext_isProduction(isProduction, tolerateContraditction) {
157
+ function setGlobalContext_isProduction(isProduction, tolerateContraditction = false) {
158
+ if (debug.isActivated)
159
+ debug('setGlobalContext_isProduction()', { isProduction, tolerateContraditction });
156
160
  if (globalObject.isProduction === undefined) {
157
161
  setIsProduction(isProduction);
158
162
  }
@@ -234,6 +238,7 @@ function assertViteManifest(manifest) {
234
238
  async function loadBuildEntry(outDir) {
235
239
  debug('loadBuildEntry()');
236
240
  if (globalObject.globalContext) {
241
+ debug('loadBuildEntry() - already done');
237
242
  return;
238
243
  }
239
244
  if (!globalObject.buildEntry) {
@@ -259,6 +264,8 @@ async function loadBuildEntry(outDir) {
259
264
  globalObject.buildInfo = buildEntry.buildInfo;
260
265
  await setGlobalContext(buildEntry.virtualFileExports);
261
266
  }
267
+ // This is the production entry, see:
268
+ // https://github.com/vikejs/vike/blob/798e5465dc3e3e6723b38b601a50350c0a006fb8/packages/vike/node/vite/plugins/pluginBuild/pluginBuildEntry.ts#L47
262
269
  async function setGlobalContext_buildEntry(buildEntry) {
263
270
  debug('setGlobalContext_buildEntry()');
264
271
  setIsProduction(true);
@@ -268,6 +275,7 @@ async function setGlobalContext_buildEntry(buildEntry) {
268
275
  (0, utils_js_1.assert)(globalObject.buildEntry); // ensure no infinite loop
269
276
  await loadBuildEntry();
270
277
  assertGlobalContextIsDefined();
278
+ debug('setGlobalContext_buildEntry() - done');
271
279
  }
272
280
  function assertBuildEntry(buildEntry) {
273
281
  (0, utils_js_1.assert)((0, utils_js_1.isObject)(buildEntry));
@@ -364,18 +372,29 @@ async function updateUserFiles() {
364
372
  return onSuccess();
365
373
  }
366
374
  async function setGlobalContext(virtualFileExports) {
375
+ debug('setGlobalContext()');
367
376
  (0, utils_js_1.assert)(!(0, getVikeConfigError_js_1.getVikeConfigErrorBuild)());
368
- const globalContext = await (0, createGlobalContextShared_js_1.createGlobalContextShared)(virtualFileExports, globalObject, addGlobalContext);
377
+ const globalContext = await (0, createGlobalContextShared_js_1.createGlobalContextShared)(virtualFileExports, globalObject, addGlobalContextAsync, addGlobalContextSync);
369
378
  (0, assertV1Design_js_1.assertV1Design)(
370
379
  // pageConfigs is PageConfigRuntime[] but assertV1Design() requires PageConfigBuildTime[]
371
380
  globalContext._pageConfigs.length > 0, globalContext._pageFilesAll);
372
381
  assertGlobalContextIsDefined();
373
382
  (0, utils_js_1.onSetupRuntime)();
383
+ debug('setGlobalContext() - done');
374
384
  // Never actually used, only used for TypeScript `ReturnType<typeof setGlobalContext>`
375
385
  return globalContext;
376
386
  }
377
- async function addGlobalContext(globalContext) {
387
+ async function addGlobalContextAsync(globalContext) {
388
+ debug('addGlobalContextAsync()');
378
389
  const { pageRoutes, onBeforeRouteHook } = await (0, loadPageRoutes_js_1.loadPageRoutes)(globalContext._pageFilesAll, globalContext._pageConfigs, globalContext._pageConfigGlobal, globalContext._allPageIds);
390
+ return addGlobalContextCommon(globalContext, pageRoutes, onBeforeRouteHook);
391
+ }
392
+ function addGlobalContextSync(globalContext) {
393
+ debug('addGlobalContextSync()');
394
+ const { pageRoutes, onBeforeRouteHook } = (0, loadPageRoutes_js_1.loadPageRoutesSync)(globalContext._pageFilesAll, globalContext._pageConfigs, globalContext._pageConfigGlobal, globalContext._allPageIds);
395
+ return addGlobalContextCommon(globalContext, pageRoutes, onBeforeRouteHook);
396
+ }
397
+ function addGlobalContextCommon(globalContext, pageRoutes, onBeforeRouteHook) {
379
398
  const globalContextBase = {
380
399
  isClientSide: false,
381
400
  _pageRoutes: pageRoutes,
@@ -434,10 +453,10 @@ async function addGlobalContext(globalContext) {
434
453
  }
435
454
  function clearGlobalContext() {
436
455
  debug('clearGlobalContext()');
437
- (0, utils_js_1.objectReplace)(globalObject, getInitialGlobalContext(), ['buildEntryPrevious']);
456
+ (0, utils_js_1.objectReplace)(globalObject, getInitialGlobalObject(), ['buildEntryPrevious']);
438
457
  }
439
- function getInitialGlobalContext() {
440
- debug('getInitialGlobalContext()');
458
+ function getInitialGlobalObject() {
459
+ debug('getInitialGlobalObject()');
441
460
  const { promise: viteDevServerPromise, resolve: viteDevServerPromiseResolve } = (0, utils_js_1.genPromise)();
442
461
  return {
443
462
  viteDevServerPromise,
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.injectAssets__public = injectAssets__public;
4
4
  const utils_js_1 = require("../../utils.js");
5
5
  const injectAssets_js_1 = require("../injectAssets.js");
6
- // TODO/v1-release: remove
6
+ // TO-DO/next-major-release: remove
7
7
  async function injectAssets__public(htmlString, pageContext) {
8
8
  (0, utils_js_1.assertWarning)(false, '`_injectAssets()` is deprecated and will be removed.', { onlyOnce: true, showStackTrace: true });
9
9
  (0, utils_js_1.assertUsage)(typeof htmlString === 'string', '[injectAssets(htmlString, pageContext)]: Argument `htmlString` should be a string.', { showStackTrace: true });
@@ -150,6 +150,8 @@ function getTagClosing(tag) {
150
150
  return tagClosing;
151
151
  }
152
152
  function injectAtPlaceholder(htmlFragment, htmlString, isFirst) {
153
+ // TO-DO/eventually: soft deprecate in favor of https://github.com/vikejs/vike/issues/695
154
+ // Used by BurdaForward https://github.com/vikejs/vike/discussions/2528#discussioncomment-13637156
153
155
  const placeholder = isFirst ? '__VITE_PLUGIN_SSR__ASSETS_FIRST__' : '__VITE_PLUGIN__SSR_ASSETS_LAST__';
154
156
  const parts = htmlString.split(placeholder);
155
157
  if (parts.length === 1)
@@ -32,20 +32,41 @@ const passToClientBuiltInPageContext = [
32
32
  const pageToClientBuiltInPageContextError = ['pageProps', 'is404', isServerSideError_js_1.isServerSideError];
33
33
  function getPageContextClientSerialized(pageContext) {
34
34
  const passToClientPageContext = getPassToClientPageContext(pageContext);
35
- const pageContextClient = applyPassToClient(passToClientPageContext, pageContext);
36
- if (passToClientPageContext.some((prop) => (0, propKeys_js_1.getPropVal)(pageContext._pageContextInit, prop))) {
35
+ const getObj = (passToClientEntry) => {
36
+ if (passToClientEntry.once)
37
+ return undefined; // pass it to client-side globalContext
38
+ return { obj: pageContext, objName: 'pageContext' };
39
+ };
40
+ const res = applyPassToClient(passToClientPageContext, getObj);
41
+ const pageContextClient = res.objClient;
42
+ const pageContextClientProps = res.objClientProps;
43
+ if (pageContextClientProps.some((prop) => (0, propKeys_js_1.getPropVal)(pageContext._pageContextInit, prop))) {
37
44
  pageContextClient[pageContextInitIsPassedToClient_js_1.pageContextInitIsPassedToClient] = true;
38
45
  }
39
- const pageContextClientSerialized = serializeObject(pageContextClient, 'pageContext', passToClientPageContext);
46
+ const pageContextClientSerialized = serializeObject(pageContextClient, passToClientPageContext, getObj);
40
47
  return pageContextClientSerialized;
41
48
  }
42
49
  function getGlobalContextClientSerialized(pageContext) {
43
50
  const passToClient = pageContext._passToClient;
44
- const globalContextClient = applyPassToClient(passToClient, pageContext._globalContext);
45
- const globalContextClientSerialized = serializeObject(globalContextClient, 'globalContext', passToClient);
51
+ const globalContext = pageContext._globalContext;
52
+ const getObj = ({ prop, once }) => {
53
+ if (once && (0, propKeys_js_1.getPropVal)(pageContext, prop)) {
54
+ (0, utils_js_1.assert)(typeof pageContext.isClientSideNavigation === 'boolean');
55
+ if (!pageContext.isClientSideNavigation) {
56
+ return { obj: pageContext, objName: 'pageContext' }; // pass it to client-side globalContext
57
+ }
58
+ else {
59
+ return undefined; // already passed to client-side
60
+ }
61
+ }
62
+ return { obj: globalContext, objName: 'globalContext' };
63
+ };
64
+ const res = applyPassToClient(passToClient, getObj);
65
+ const globalContextClient = res.objClient;
66
+ const globalContextClientSerialized = serializeObject(globalContextClient, passToClient, getObj);
46
67
  return globalContextClientSerialized;
47
68
  }
48
- function serializeObject(obj, objName, passToClient) {
69
+ function serializeObject(obj, passToClient, getObj) {
49
70
  let serialized;
50
71
  try {
51
72
  serialized = serializeValue(obj);
@@ -54,11 +75,15 @@ function serializeObject(obj, objName, passToClient) {
54
75
  const h = (s) => picocolors_1.default.cyan(s);
55
76
  let hasWarned = false;
56
77
  const propsNonSerializable = [];
57
- passToClient.forEach((prop) => {
78
+ passToClient.forEach((entry) => {
79
+ const entryNormalized = normalizePassToClientEntry(entry);
80
+ const { prop } = entryNormalized;
58
81
  const res = (0, propKeys_js_1.getPropVal)(obj, prop);
59
82
  if (!res)
60
83
  return;
61
84
  const { value } = res;
85
+ const { objName } = getObj(entryNormalized) ?? {};
86
+ (0, utils_js_1.assert)(objName);
62
87
  const varName = `${objName}${(0, propKeys_js_1.getPropKeys)(prop).map(utils_js_1.getPropAccessNotation).join('')}`;
63
88
  try {
64
89
  serializeValue(value, varName);
@@ -108,7 +133,20 @@ function serializeObject(obj, objName, passToClient) {
108
133
  return serialized;
109
134
  }
110
135
  function serializeValue(value, varName) {
111
- return (0, stringify_1.stringify)(value, { forbidReactElements: true, valueName: varName });
136
+ return (0, stringify_1.stringify)(value, {
137
+ forbidReactElements: true,
138
+ valueName: varName,
139
+ // Prevent Google from crawling URLs in JSON:
140
+ // - https://github.com/vikejs/vike/discussions/2541#discussioncomment-13660198
141
+ // - https://github.com/vikejs/vike/discussions/2277
142
+ // - https://github.com/vikejs/vike/pull/2542
143
+ replacer(_key, value) {
144
+ if (typeof value === 'string' && value.startsWith('/')) {
145
+ // No need to use a reviver: https://github.com/brillout/json-serializer/blob/70fc8ed3741306391b51655b05df24e6963d1fdb/test/main.spec.ts#L74-L80
146
+ return { replacement: (value = '!' + value) };
147
+ }
148
+ },
149
+ });
112
150
  }
113
151
  function getPassToClientPageContext(pageContext) {
114
152
  let passToClient = [...pageContext._passToClient, ...passToClientBuiltInPageContext];
@@ -144,7 +182,7 @@ function getPageContextClientSerializedAbort(pageContext) {
144
182
  (0, utils_js_1.assert)(unknownProps.length === 0);
145
183
  }
146
184
  else {
147
- // TODO/v1-release: remove
185
+ // TO-DO/next-major-release: remove
148
186
  (0, utils_js_1.assertWarning)(unknownProps.length === 0, [
149
187
  "The following pageContext values won't be available on the client-side:",
150
188
  unknownProps.map((p) => ` pageContext[${JSON.stringify(p)}]`),
@@ -155,16 +193,36 @@ function getPageContextClientSerializedAbort(pageContext) {
155
193
  }
156
194
  return serializeValue(pageContext);
157
195
  }
158
- function applyPassToClient(passToClient, pageContext) {
159
- const pageContextClient = {};
160
- passToClient.forEach((prop) => {
196
+ function applyPassToClient(passToClient, getObj) {
197
+ const objClient = {};
198
+ const objClientProps = [];
199
+ passToClient.forEach((entry) => {
200
+ const entryNormalized = normalizePassToClientEntry(entry);
201
+ const { prop } = entryNormalized;
202
+ const { obj } = getObj(entryNormalized) ?? {};
203
+ if (!obj)
204
+ return;
161
205
  // Get value from pageContext
162
- const res = (0, propKeys_js_1.getPropVal)(pageContext, prop);
206
+ const res = (0, propKeys_js_1.getPropVal)(obj, prop);
163
207
  if (!res)
164
208
  return;
165
209
  const { value } = res;
166
210
  // Set value to pageContextClient
167
- (0, propKeys_js_1.setPropVal)(pageContextClient, prop, value);
211
+ (0, propKeys_js_1.setPropVal)(objClient, prop, value);
212
+ objClientProps.push(prop);
168
213
  });
169
- return pageContextClient;
214
+ return { objClient, objClientProps };
215
+ }
216
+ function normalizePassToClientEntry(entry) {
217
+ let once;
218
+ let prop;
219
+ if (typeof entry === 'string') {
220
+ prop = entry;
221
+ once = false;
222
+ }
223
+ else {
224
+ prop = entry.prop;
225
+ once = entry.once ?? false;
226
+ }
227
+ return { prop, once };
170
228
  }
@@ -17,7 +17,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
17
17
  return (mod && mod.__esModule) ? mod : { "default": mod };
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
- // TO-DO/soon: point package.json#exports['./server'] to this file.
20
+ // TO-DO/eventually: point package.json#exports['./server'] to this file.
21
21
  // - Write migration guide, see comment below.
22
22
  __exportStar(require("./index.js"), exports);
23
23
  const utils_js_1 = require("./utils.js");
@@ -39,7 +39,7 @@ Object.defineProperty(exports, "getGlobalContextSync", { enumerable: true, get:
39
39
  Object.defineProperty(exports, "getGlobalContextAsync", { enumerable: true, get: function () { return globalContext_js_1.getGlobalContextAsync; } });
40
40
  var index_js_1 = require("../runtime-dev/index.js");
41
41
  Object.defineProperty(exports, "createDevMiddleware", { enumerable: true, get: function () { return index_js_1.createDevMiddleware; } });
42
- // TODO/v1-release: remove
42
+ // TO-DO/next-major-release: remove
43
43
  // Deprecated exports
44
44
  __exportStar(require("../../types/index-dreprecated.js"), exports);
45
45
  var injectAssets__public_js_1 = require("./html/injectAssets/injectAssets__public.js");
@@ -1,3 +1,3 @@
1
1
  "use strict";
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.)
@@ -15,7 +15,7 @@ function assertArguments(...args) {
15
15
  showStackTrace: true,
16
16
  });
17
17
  (0, utils_js_1.assertUsage)((0, utils_js_1.isObject)(pageContextInit), `${prefix} called with ${picocolors_1.default.code(`typeof pageContextInit === ${JSON.stringify(typeof pageContextInit)}`)} but ${picocolors_1.default.code('pageContextInit')} should be an object.`, { showStackTrace: true });
18
- // TODO/v1-release: remove
18
+ // TO-DO/next-major-release: remove
19
19
  if ('url' in pageContextInit) {
20
20
  (0, utils_js_1.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 });
21
21
  pageContextInit.urlOriginal = pageContextInit.url;
@@ -11,8 +11,8 @@ const utils_js_1 = require("../utils.js");
11
11
  const error_page_js_1 = require("../../../shared/error-page.js");
12
12
  const getHttpResponseBody_js_1 = require("./getHttpResponseBody.js");
13
13
  const getEarlyHints_js_1 = require("./getEarlyHints.js");
14
- const getCacheControl_js_1 = require("./createHttpResponse/getCacheControl.js");
15
14
  const assertNoInfiniteHttpRedirect_js_1 = require("./createHttpResponse/assertNoInfiniteHttpRedirect.js");
15
+ const getCacheControl_js_1 = require("./getCacheControl.js");
16
16
  async function createHttpResponsePage(htmlRender, renderHook, pageContext) {
17
17
  let statusCode = pageContext.abortStatusCode;
18
18
  if (!statusCode) {
@@ -31,10 +31,13 @@ async function createHttpResponsePage(htmlRender, renderHook, pageContext) {
31
31
  }
32
32
  const earlyHints = (0, getEarlyHints_js_1.getEarlyHints)(await pageContext.__getPageAssets());
33
33
  const headers = [];
34
- const cacheControl = (0, getCacheControl_js_1.getCacheControl)(pageContext.pageId, pageContext._globalContext._pageConfigs, statusCode);
35
- if (cacheControl) {
36
- headers.push(['Cache-Control', cacheControl]);
37
- }
34
+ const headersResponse = pageContext.headersResponse || new Headers();
35
+ headersResponse.forEach((value, key) => {
36
+ headers.push([key, value]);
37
+ });
38
+ // An 5xx error page shouldn't be cached (it should be temporary)
39
+ if (statusCode >= 500)
40
+ headersResponse.set('Cache-Control', getCacheControl_js_1.cacheControlDisable);
38
41
  return createHttpResponse(statusCode, 'text/html;charset=utf-8', headers, htmlRender, earlyHints, renderHook);
39
42
  }
40
43
  function createHttpResponse404(errMsg404) {
@@ -104,7 +107,7 @@ function createHttpResponse(statusCode, contentType, headers, htmlRender, earlyH
104
107
  return {
105
108
  statusCode,
106
109
  headers,
107
- // TODO/v1-release: remove
110
+ // TO-DO/next-major-release: remove
108
111
  get contentType() {
109
112
  (0, utils_js_1.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 });
110
113
  return contentType;
@@ -5,7 +5,7 @@ exports.createPageContextServerSideWithoutGlobalContext = createPageContextServe
5
5
  const utils_js_1 = require("../utils.js");
6
6
  const getPageContextUrlComputed_js_1 = require("../../../shared/getPageContextUrlComputed.js");
7
7
  const createPageContextShared_js_1 = require("../../../shared/createPageContextShared.js");
8
- async function createPageContextServerSide(pageContextInit, globalContext, { isPrerendering, ssr: { urlHandler, isClientSideNavigation } = {
8
+ function createPageContextServerSide(pageContextInit, globalContext, { isPrerendering, ssr: { urlHandler, isClientSideNavigation } = {
9
9
  urlHandler: null,
10
10
  isClientSideNavigation: false,
11
11
  }, }) {
@@ -13,7 +13,7 @@ async function createPageContextServerSide(pageContextInit, globalContext, { isP
13
13
  const pageContextCreated = createPageContext(pageContextInit, isPrerendering);
14
14
  (0, utils_js_1.objectAssign)(pageContextCreated, {
15
15
  _globalContext: globalContext,
16
- _pageFilesAll: globalContext._pageFilesAll, // TODO/v1-release: remove
16
+ _pageFilesAll: globalContext._pageFilesAll, // TO-DO/next-major-release: remove
17
17
  // 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
18
18
  _baseServer: globalContext.baseServer,
19
19
  _baseAssets: globalContext.baseAssets,
@@ -35,7 +35,7 @@ async function createPageContextServerSide(pageContextInit, globalContext, { isP
35
35
  }
36
36
  else if (pageContextInit.headers) {
37
37
  headers = pageContextInit.headers;
38
- // TODO/next-major-release: remove
38
+ // TO-DO/next-major-release: remove
39
39
  (0, utils_js_1.assertWarning)(false, 'Setting pageContextInit.headers is deprecated: set pageContextInit.headersOriginal instead, see https://vike.dev/headers', { onlyOnce: true });
40
40
  }
41
41
  else {
@@ -43,7 +43,7 @@ async function createPageContextServerSide(pageContextInit, globalContext, { isP
43
43
  }
44
44
  (0, utils_js_1.objectAssign)(pageContextCreated, { headers });
45
45
  }
46
- const pageContextAugmented = await (0, createPageContextShared_js_1.createPageContextShared)(pageContextCreated, globalContext._pageConfigGlobal, globalContext._vikeConfigPublicGlobal);
46
+ const pageContextAugmented = (0, createPageContextShared_js_1.createPageContextShared)(pageContextCreated, globalContext._vikeConfigPublicGlobal);
47
47
  (0, utils_js_1.augmentType)(pageContextCreated, pageContextAugmented);
48
48
  return pageContextCreated;
49
49
  }
@@ -8,7 +8,7 @@ async function execHookDataAndOnBeforeRender(pageContext) {
8
8
  return;
9
9
  }
10
10
  const hooks = await (0, execHookServer_js_1.execHookServer)('data', pageContext);
11
- const dataHook = hooks[0]; // TO-DO/soon: support cumulative
11
+ const dataHook = hooks[0]; // TO-DO/soon/cumulative-hooks: support cumulative
12
12
  if (dataHook) {
13
13
  // Note: hookReturn can be anything (e.g. an object) and is to be assigned to pageContext.data
14
14
  const pageContextFromHook = {
@@ -21,7 +21,7 @@ async function execHookDataAndOnBeforeRender(pageContext) {
21
21
  }
22
22
  }
23
23
  const res = await (0, execHookServer_js_1.execHookServer)('onBeforeRender', pageContext);
24
- const onBeforeRenderHook = res[0]; // TO-DO/soon: support cumulative
24
+ const onBeforeRenderHook = res[0]; // TO-DO/soon/cumulative-hooks: support cumulative
25
25
  if (onBeforeRenderHook) {
26
26
  const { hookReturn } = onBeforeRenderHook;
27
27
  (0, assertOnBeforeRenderHookReturn_js_1.assertOnBeforeRenderHookReturn)(hookReturn, onBeforeRenderHook.hookFilePath);