vike 0.4.228 → 0.4.229-commit-2a06dcc

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 (244) hide show
  1. package/dist/cjs/__internal/index.js +2 -2
  2. package/dist/cjs/client/client-routing-runtime/globalContext.js +49 -0
  3. package/dist/cjs/client/server-routing-runtime/globalContext.js +41 -0
  4. package/dist/cjs/client/server-routing-runtime/utils.js +1 -1
  5. package/dist/cjs/client/shared/createGetGlobalContextClient.js +58 -0
  6. package/dist/cjs/client/shared/getJsonSerializedInHtml.js +31 -0
  7. package/dist/cjs/client/shared/utils.js +22 -0
  8. package/dist/cjs/node/plugin/index.js +3 -1
  9. package/dist/cjs/node/plugin/plugins/baseUrls.js +1 -1
  10. package/dist/cjs/node/plugin/plugins/build/handleAssetsManifest.js +10 -5
  11. package/dist/cjs/node/plugin/plugins/build/pluginBuildApp.js +1 -1
  12. package/dist/cjs/node/plugin/plugins/build/pluginBuildConfig.js +3 -10
  13. package/dist/cjs/node/plugin/plugins/build/pluginBuildEntry.js +9 -5
  14. package/dist/cjs/node/plugin/plugins/build/pluginModuleBanner.js +9 -5
  15. package/dist/cjs/node/plugin/plugins/commonConfig/assertResolveAlias.js +1 -1
  16. package/dist/cjs/node/plugin/plugins/commonConfig.js +14 -3
  17. package/dist/cjs/node/plugin/plugins/devConfig/determineFsAllowList.js +2 -7
  18. package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +6 -1
  19. package/dist/cjs/node/plugin/plugins/envVars.js +17 -19
  20. package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +3 -1
  21. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +11 -0
  22. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.js +2 -0
  23. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +1 -1
  24. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +2 -2
  25. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/{transformPointerImports.js → pointerImports.js} +13 -0
  26. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.js +20 -19
  27. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +15 -12
  28. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +11 -11
  29. package/dist/cjs/node/plugin/plugins/replaceConstants.js +76 -0
  30. package/dist/cjs/node/plugin/shared/applyRegExWithMagicString.js +10 -0
  31. package/dist/cjs/node/plugin/shared/findPageFiles.js +1 -1
  32. package/dist/cjs/node/plugin/shared/getFilePath.js +2 -2
  33. package/dist/cjs/node/plugin/shared/resolveClientEntriesDev.js +7 -19
  34. package/dist/cjs/node/plugin/utils.js +1 -0
  35. package/dist/cjs/node/prerender/runPrerender.js +44 -41
  36. package/dist/cjs/node/prerender/utils.js +1 -1
  37. package/dist/cjs/node/runtime/globalContext.js +102 -125
  38. package/dist/cjs/node/runtime/html/injectAssets/getHtmlTags.js +18 -5
  39. package/dist/cjs/node/runtime/html/injectAssets/getViteDevScript.js +2 -2
  40. package/dist/cjs/node/runtime/html/propKeys.js +47 -0
  41. package/dist/cjs/node/runtime/html/renderHtml.js +7 -1
  42. package/dist/cjs/node/runtime/html/{serializePageContextClientSide.js → serializeContext.js} +37 -67
  43. package/dist/cjs/node/runtime/index-deprecated.js +9 -38
  44. package/dist/cjs/node/runtime/index.js +56 -2
  45. package/dist/cjs/node/runtime/renderPage/analyzePage.js +1 -1
  46. package/dist/cjs/node/runtime/renderPage/createHttpResponse.js +8 -3
  47. package/dist/cjs/node/runtime/renderPage/createPageContextServerSide.js +73 -0
  48. package/dist/cjs/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +2 -2
  49. package/dist/cjs/node/runtime/renderPage/executeOnRenderHtmlHook.js +2 -2
  50. package/dist/cjs/node/runtime/renderPage/getPageAssets/getManifestEntry.js +1 -1
  51. package/dist/cjs/node/runtime/renderPage/getPageAssets/retrieveAssetsDev.js +1 -17
  52. package/dist/cjs/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +1 -1
  53. package/dist/cjs/node/runtime/renderPage/getPageAssets.js +2 -2
  54. package/dist/cjs/node/runtime/renderPage/handleErrorWithoutErrorPage.js +1 -1
  55. package/dist/cjs/node/runtime/renderPage/loadUserFilesServerSide.js +1 -1
  56. package/dist/cjs/node/runtime/renderPage/log404/index.js +1 -1
  57. package/dist/cjs/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +1 -1
  58. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +3 -68
  59. package/dist/cjs/node/runtime/renderPage.js +102 -81
  60. package/dist/cjs/node/runtime/universal-middleware.js +7 -1
  61. package/dist/cjs/node/runtime/utils.js +3 -2
  62. package/dist/cjs/shared/assertPageContextProvidedByUser.js +1 -1
  63. package/dist/cjs/shared/createGlobalContextShared.js +54 -0
  64. package/dist/cjs/shared/createPageContextShared.js +17 -0
  65. package/dist/cjs/shared/getPageFiles/fileTypes.js +1 -1
  66. package/dist/cjs/shared/hooks/executeHookGeneric.js +18 -0
  67. package/dist/cjs/shared/hooks/getHook.js +45 -27
  68. package/dist/cjs/shared/htmlElementIds.js +5 -0
  69. package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +3 -7
  70. package/dist/cjs/shared/route/executeGuardHook.js +1 -1
  71. package/dist/cjs/shared/route/loadPageRoutes.js +2 -1
  72. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  73. package/dist/cjs/utils/catchInfiniteLoop.js +3 -3
  74. package/dist/cjs/utils/getPublicProxy.js +27 -0
  75. package/dist/cjs/utils/isImportPath.js +21 -0
  76. package/dist/cjs/utils/isScriptFile.js +24 -21
  77. package/dist/cjs/utils/objectAssign.js +6 -10
  78. package/dist/cjs/utils/objectReplace.js +4 -4
  79. package/dist/cjs/utils/{isNpmPackage.js → parseNpmPackage.js} +24 -23
  80. package/dist/cjs/utils/path.js +12 -2
  81. package/dist/cjs/utils/requireResolve.js +134 -53
  82. package/dist/esm/__internal/index.js +3 -3
  83. package/dist/esm/client/client-routing-runtime/createPageContext.d.ts +29 -10
  84. package/dist/esm/client/client-routing-runtime/createPageContext.js +23 -22
  85. package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +5 -4
  86. package/dist/esm/client/client-routing-runtime/globalContext.d.ts +20 -0
  87. package/dist/esm/client/client-routing-runtime/globalContext.js +13 -0
  88. package/dist/esm/client/client-routing-runtime/initOnLinkClick.js +2 -2
  89. package/dist/esm/client/client-routing-runtime/prefetch.js +2 -2
  90. package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +8 -7
  91. package/dist/esm/client/client-routing-runtime/utils.d.ts +0 -1
  92. package/dist/esm/client/client-routing-runtime/utils.js +0 -1
  93. package/dist/esm/client/index.d.ts +1 -0
  94. package/dist/esm/client/index.js +4 -0
  95. package/dist/esm/client/node.js +1 -3
  96. package/dist/esm/client/server-routing-runtime/createPageContextClientSide.d.ts +36 -0
  97. package/dist/esm/client/server-routing-runtime/createPageContextClientSide.js +47 -0
  98. package/dist/esm/client/server-routing-runtime/entry.js +2 -2
  99. package/dist/esm/client/server-routing-runtime/globalContext.d.ts +17 -0
  100. package/dist/esm/client/server-routing-runtime/globalContext.js +5 -0
  101. package/dist/esm/client/server-routing-runtime/utils.d.ts +1 -1
  102. package/dist/esm/client/server-routing-runtime/utils.js +1 -1
  103. package/dist/esm/client/shared/createGetGlobalContextClient.d.ts +23 -0
  104. package/dist/esm/client/shared/createGetGlobalContextClient.js +58 -0
  105. package/dist/esm/client/shared/executeOnRenderClientHook.js +5 -4
  106. package/dist/esm/client/shared/{getPageContextSerializedInHtml.d.ts → getJsonSerializedInHtml.d.ts} +2 -0
  107. package/dist/esm/client/shared/getJsonSerializedInHtml.js +29 -0
  108. package/dist/esm/client/shared/removeFoucBuster.js +1 -0
  109. package/dist/esm/client/shared/utils.d.ts +4 -0
  110. package/dist/esm/client/shared/utils.js +4 -0
  111. package/dist/esm/node/plugin/index.js +3 -1
  112. package/dist/esm/node/plugin/plugins/baseUrls.js +2 -2
  113. package/dist/esm/node/plugin/plugins/build/handleAssetsManifest.js +11 -6
  114. package/dist/esm/node/plugin/plugins/build/pluginBuildApp.js +2 -2
  115. package/dist/esm/node/plugin/plugins/build/pluginBuildConfig.js +4 -11
  116. package/dist/esm/node/plugin/plugins/build/pluginBuildEntry.d.ts +1 -1
  117. package/dist/esm/node/plugin/plugins/build/pluginBuildEntry.js +10 -6
  118. package/dist/esm/node/plugin/plugins/build/pluginModuleBanner.js +9 -5
  119. package/dist/esm/node/plugin/plugins/commonConfig/assertResolveAlias.js +2 -2
  120. package/dist/esm/node/plugin/plugins/commonConfig.d.ts +2 -0
  121. package/dist/esm/node/plugin/plugins/commonConfig.js +15 -4
  122. package/dist/esm/node/plugin/plugins/devConfig/determineFsAllowList.js +3 -8
  123. package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +7 -2
  124. package/dist/esm/node/plugin/plugins/envVars.js +18 -20
  125. package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +4 -2
  126. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +11 -0
  127. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.d.ts +1 -1
  128. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.js +2 -0
  129. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +2 -2
  130. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +1 -1
  131. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/{transformPointerImports.d.ts → pointerImports.d.ts} +2 -0
  132. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/{transformPointerImports.js → pointerImports.js} +14 -1
  133. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.d.ts +1 -1
  134. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.js +20 -19
  135. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +15 -12
  136. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +11 -11
  137. package/dist/esm/node/plugin/plugins/replaceConstants.d.ts +3 -0
  138. package/dist/esm/node/plugin/plugins/replaceConstants.js +71 -0
  139. package/dist/esm/node/plugin/shared/applyRegExWithMagicString.d.ts +3 -0
  140. package/dist/esm/node/plugin/shared/applyRegExWithMagicString.js +8 -0
  141. package/dist/esm/node/plugin/shared/findPageFiles.js +2 -2
  142. package/dist/esm/node/plugin/shared/getFilePath.js +3 -3
  143. package/dist/esm/node/plugin/shared/resolveClientEntriesDev.js +8 -20
  144. package/dist/esm/node/plugin/utils.d.ts +1 -0
  145. package/dist/esm/node/plugin/utils.js +1 -0
  146. package/dist/esm/node/prerender/runPrerender.d.ts +314 -5
  147. package/dist/esm/node/prerender/runPrerender.js +48 -45
  148. package/dist/esm/node/prerender/utils.d.ts +1 -1
  149. package/dist/esm/node/prerender/utils.js +1 -1
  150. package/dist/esm/node/runtime/globalContext.d.ts +425 -47
  151. package/dist/esm/node/runtime/globalContext.js +103 -126
  152. package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +18 -5
  153. package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.d.ts +2 -2
  154. package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.js +2 -2
  155. package/dist/esm/node/runtime/html/injectAssets.d.ts +3 -3
  156. package/dist/esm/node/runtime/html/propKeys.d.ts +8 -0
  157. package/dist/esm/node/runtime/html/propKeys.js +45 -0
  158. package/dist/esm/node/runtime/html/renderHtml.js +7 -1
  159. package/dist/esm/node/runtime/html/{serializePageContextClientSide.d.ts → serializeContext.d.ts} +7 -6
  160. package/dist/esm/node/runtime/html/{serializePageContextClientSide.js → serializeContext.js} +36 -67
  161. package/dist/esm/node/runtime/index-deprecated.d.ts +1 -16
  162. package/dist/esm/node/runtime/index-deprecated.js +9 -36
  163. package/dist/esm/node/runtime/index.d.ts +23 -1
  164. package/dist/esm/node/runtime/index.js +38 -3
  165. package/dist/esm/node/runtime/renderPage/analyzePage.d.ts +2 -2
  166. package/dist/esm/node/runtime/renderPage/analyzePage.js +1 -1
  167. package/dist/esm/node/runtime/renderPage/createHttpResponse.d.ts +5 -4
  168. package/dist/esm/node/runtime/renderPage/createHttpResponse.js +8 -3
  169. package/dist/esm/node/runtime/renderPage/createPageContextServerSide.d.ts +155 -0
  170. package/dist/esm/node/runtime/renderPage/createPageContextServerSide.js +71 -0
  171. package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +3 -3
  172. package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.d.ts +1 -1
  173. package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.js +3 -3
  174. package/dist/esm/node/runtime/renderPage/getPageAssets/getManifestEntry.js +2 -2
  175. package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsDev.js +1 -17
  176. package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +2 -2
  177. package/dist/esm/node/runtime/renderPage/getPageAssets.d.ts +2 -2
  178. package/dist/esm/node/runtime/renderPage/getPageAssets.js +2 -2
  179. package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.d.ts +2 -2
  180. package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.js +1 -1
  181. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.d.ts +2 -2
  182. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +1 -1
  183. package/dist/esm/node/runtime/renderPage/log404/index.d.ts +2 -2
  184. package/dist/esm/node/runtime/renderPage/log404/index.js +1 -1
  185. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +3 -3
  186. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +1 -1
  187. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +225 -179
  188. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +4 -69
  189. package/dist/esm/node/runtime/renderPage.d.ts +146 -7
  190. package/dist/esm/node/runtime/renderPage.js +105 -84
  191. package/dist/esm/node/runtime/universal-middleware.js +7 -1
  192. package/dist/esm/node/runtime/utils.d.ts +3 -2
  193. package/dist/esm/node/runtime/utils.js +3 -2
  194. package/dist/esm/shared/VikeNamespace.d.ts +35 -13
  195. package/dist/esm/shared/assertPageContextProvidedByUser.js +1 -1
  196. package/dist/esm/shared/createGlobalContextShared.d.ts +39 -0
  197. package/dist/esm/shared/createGlobalContextShared.js +51 -0
  198. package/dist/esm/shared/createPageContextShared.d.ts +9 -0
  199. package/dist/esm/shared/createPageContextShared.js +15 -0
  200. package/dist/esm/shared/getPageFiles/fileTypes.js +1 -1
  201. package/dist/esm/shared/hooks/executeHookGeneric.d.ts +8 -0
  202. package/dist/esm/shared/hooks/executeHookGeneric.js +16 -0
  203. package/dist/esm/shared/hooks/getHook.d.ts +5 -3
  204. package/dist/esm/shared/hooks/getHook.js +47 -29
  205. package/dist/esm/shared/htmlElementIds.d.ts +2 -0
  206. package/dist/esm/shared/htmlElementIds.js +2 -0
  207. package/dist/esm/shared/page-configs/Config.d.ts +12 -2
  208. package/dist/esm/shared/page-configs/getConfigDefinedAt.d.ts +1 -1
  209. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +3 -7
  210. package/dist/esm/shared/route/executeGuardHook.js +2 -2
  211. package/dist/esm/shared/route/loadPageRoutes.js +2 -1
  212. package/dist/esm/shared/types.d.ts +64 -32
  213. package/dist/esm/types/index.d.ts +1 -5
  214. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  215. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  216. package/dist/esm/utils/catchInfiniteLoop.js +4 -4
  217. package/dist/esm/utils/getGlobalObject.d.ts +1 -1
  218. package/dist/esm/utils/getPublicProxy.d.ts +2 -0
  219. package/dist/esm/utils/getPublicProxy.js +25 -0
  220. package/dist/esm/utils/isImportPath.d.ts +4 -0
  221. package/dist/esm/utils/isImportPath.js +19 -0
  222. package/dist/esm/utils/isScriptFile.d.ts +5 -5
  223. package/dist/esm/utils/isScriptFile.js +23 -20
  224. package/dist/esm/utils/objectAssign.d.ts +1 -1
  225. package/dist/esm/utils/objectAssign.js +6 -10
  226. package/dist/esm/utils/objectReplace.d.ts +1 -1
  227. package/dist/esm/utils/objectReplace.js +4 -4
  228. package/dist/esm/utils/parseNpmPackage.d.ts +19 -0
  229. package/dist/esm/utils/{isNpmPackage.js → parseNpmPackage.js} +24 -24
  230. package/dist/esm/utils/path.d.ts +1 -1
  231. package/dist/esm/utils/path.js +12 -2
  232. package/dist/esm/utils/requireResolve.d.ts +20 -7
  233. package/dist/esm/utils/requireResolve.js +134 -53
  234. package/package.json +14 -13
  235. package/dist/cjs/node/runtime/index-common.js +0 -27
  236. package/dist/cjs/utils/makePublicCopy.js +0 -32
  237. package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +0 -19
  238. package/dist/esm/client/server-routing-runtime/getPageContext.js +0 -44
  239. package/dist/esm/client/shared/getPageContextSerializedInHtml.js +0 -20
  240. package/dist/esm/node/runtime/index-common.d.ts +0 -8
  241. package/dist/esm/node/runtime/index-common.js +0 -10
  242. package/dist/esm/utils/isNpmPackage.d.ts +0 -17
  243. package/dist/esm/utils/makePublicCopy.d.ts +0 -3
  244. package/dist/esm/utils/makePublicCopy.js +0 -30
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.retrieveAssetsDev = retrieveAssetsDev;
4
4
  const utils_js_1 = require("../../utils.js");
5
5
  async function retrieveAssetsDev(clientDependencies, viteDevServer) {
6
- const visitedModules = new Set();
7
6
  const assetUrls = new Set();
8
7
  await Promise.all(clientDependencies.map(async ({ id }) => {
9
8
  if (id.startsWith('@@vike'))
@@ -22,7 +21,7 @@ async function retrieveAssetsDev(clientDependencies, viteDevServer) {
22
21
  return;
23
22
  }
24
23
  (0, utils_js_1.assert)(mod, { id });
25
- collectCss(mod, assetUrls, visitedModules);
24
+ collectCss(mod, assetUrls, new Set());
26
25
  }));
27
26
  return Array.from(assetUrls);
28
27
  }
@@ -52,9 +51,6 @@ function collectCss(mod, styleUrls, visitedModules, importer) {
52
51
  // Is this useful? Maybe for virtual modules that don't respect the \0 virtual module convention?
53
52
  styleUrls.add(`/@id/${mod.url}`);
54
53
  }
55
- /* Debug:
56
- logModule(mod)
57
- //*/
58
54
  }
59
55
  mod.importedModules.forEach((dep) => {
60
56
  collectCss(dep, styleUrls, visitedModules, mod);
@@ -69,15 +65,3 @@ function isStyle(mod) {
69
65
  // CSS of .vue files
70
66
  (mod.id && /\?vue&type=style/.test(mod.id)));
71
67
  }
72
- /*
73
- function logModule(mod: ModuleNode) {
74
- const redacted = 'redacted'
75
- console.log({
76
- ...mod,
77
- ssrModule: redacted,
78
- ssrTransformResult: redacted,
79
- importedModules: redacted,
80
- importers: redacted
81
- })
82
- }
83
- //*/
@@ -16,7 +16,7 @@ function retrieveAssetsProd(clientDependencies, assetsManifest, includeAssetsImp
16
16
  onlyAssets &&
17
17
  id.includes('.page.server.') &&
18
18
  // We assume that all npm packages have already built their files: bundlers (Rollup, esbuild, tsup, ...) extract the CSS out of JavaScript => we can assume JavaScript to not import any CSS/assets.
19
- !(0, utils_js_1.isNpmPackageImport)(id, {
19
+ !(0, utils_js_1.isImportPathNpmPackage)(id, {
20
20
  // I presume Vite already resolves path aliases when Vite sets the module's id
21
21
  cannotBePathAlias: true
22
22
  })) {
@@ -13,12 +13,12 @@ const globalObject = (0, utils_js_1.getGlobalObject)('renderPage/getPageAssets.t
13
13
  });
14
14
  async function getPageAssets(pageContext, clientDependencies, clientEntries) {
15
15
  const globalContext = pageContext._globalContext;
16
- const { isProduction } = globalContext;
16
+ const { _isProduction: isProduction } = globalContext;
17
17
  const isDev = !isProduction;
18
18
  let assetUrls;
19
19
  let clientEntriesSrc;
20
20
  if (isDev) {
21
- const { viteDevServer } = globalContext;
21
+ const { _viteDevServer: viteDevServer } = globalContext;
22
22
  clientEntriesSrc = await Promise.all(clientEntries.map((clientEntry) => globalObject.resolveClientEntriesDev(clientEntry, viteDevServer)));
23
23
  assetUrls = await (0, retrieveAssetsDev_js_1.retrieveAssetsDev)(clientDependencies, viteDevServer);
24
24
  }
@@ -14,7 +14,7 @@ async function handleErrorWithoutErrorPage(pageContext) {
14
14
  (0, utils_js_1.assert)(pageContext.errorWhileRendering || pageContext.is404);
15
15
  {
16
16
  const isV1 = pageContext._pageConfigs.length > 0;
17
- await warnMissingErrorPage(isV1, pageContext._globalContext.isProduction);
17
+ await warnMissingErrorPage(isV1, pageContext._globalContext._isProduction);
18
18
  }
19
19
  if (!pageContext.isClientSideNavigation) {
20
20
  const httpResponse = (0, createHttpResponse_js_1.createHttpResponseError)(pageContext);
@@ -14,7 +14,7 @@ async function loadUserFilesServerSide(pageContext) {
14
14
  const pageConfig = (0, findPageConfig_js_1.findPageConfig)(pageContext._pageConfigs, pageContext.pageId); // Make pageConfig globally available as pageContext._pageConfig?
15
15
  const globalContext = pageContext._globalContext;
16
16
  const [{ pageFilesLoaded, pageContextExports }] = await Promise.all([
17
- loadPageUserFiles(pageContext._pageFilesAll, pageConfig, globalContext.pageConfigGlobal, pageContext.pageId, !globalContext.isProduction),
17
+ loadPageUserFiles(pageContext._pageFilesAll, pageConfig, globalContext._pageConfigGlobal, pageContext.pageId, !globalContext._isProduction),
18
18
  (0, analyzePageClientSide_js_1.analyzePageClientSideInit)(pageContext._pageFilesAll, pageContext.pageId, { sharedPageFilesAlreadyLoaded: true })
19
19
  ]);
20
20
  const { isHtmlOnly, isClientRouting, clientEntries, clientDependencies, pageFilesClientSide, pageFilesServerSide } = await (0, analyzePage_js_1.analyzePage)(pageContext._pageFilesAll, pageConfig, pageContext.pageId, globalContext);
@@ -17,7 +17,7 @@ async function log404(pageContext) {
17
17
  */
18
18
  );
19
19
  const globalContext = pageContext._globalContext;
20
- if (!globalContext.isProduction && !isFileRequest(urlPathname) && !pageContext.isClientSideNavigation) {
20
+ if (!globalContext._isProduction && !isFileRequest(urlPathname) && !pageContext.isClientSideNavigation) {
21
21
  const routesInfo = getRoutesInfo(pageRoutes);
22
22
  let msg = `URL ${picocolors_1.default.cyan(urlPathname)} ${noRouteMatch_js_1.noRouteMatch}`;
23
23
  const outro = 'See https://vike.dev/routing for more information about routing.';
@@ -9,7 +9,7 @@ function preparePageContextForUserConsumptionServerSide(pageContext) {
9
9
  (0, utils_js_1.assert)((0, utils_js_1.isPlainObject)(pageContext.routeParams));
10
10
  (0, utils_js_1.assert)('Page' in pageContext);
11
11
  (0, utils_js_1.assert)(typeof pageContext.isClientSideNavigation === 'boolean');
12
- (0, utils_js_1.assert)(pageContext._isPageContextObject);
12
+ (0, utils_js_1.assert)(pageContext.isPageContext);
13
13
  (0, utils_js_1.assert)(pageContext.isClientSide === false);
14
14
  (0, utils_js_1.assert)(typeof pageContext.isPrerendering === 'boolean');
15
15
  (0, preparePageContextForUserConsumption_js_1.preparePageContextForUserConsumption)(pageContext);
@@ -5,13 +5,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.renderPageAlreadyRouted = renderPageAlreadyRouted;
7
7
  exports.prerenderPage = prerenderPage;
8
- exports.getPageContextInitEnhanced = getPageContextInitEnhanced;
9
- exports.createPageContext = createPageContext;
10
8
  const error_page_js_1 = require("../../../shared/error-page.js");
11
9
  const renderHtml_js_1 = require("../html/renderHtml.js");
12
10
  const utils_js_1 = require("../utils.js");
13
- const serializePageContextClientSide_js_1 = require("../html/serializePageContextClientSide.js");
14
- const getPageContextUrlComputed_js_1 = require("../../../shared/getPageContextUrlComputed.js");
11
+ const serializeContext_js_1 = require("../html/serializeContext.js");
15
12
  const createHttpResponse_js_1 = require("./createHttpResponse.js");
16
13
  const loadUserFilesServerSide_js_1 = require("./loadUserFilesServerSide.js");
17
14
  const executeOnRenderHtmlHook_js_1 = require("./executeOnRenderHtmlHook.js");
@@ -50,7 +47,7 @@ async function renderPageAlreadyRouted(pageContext) {
50
47
  if (isError) {
51
48
  (0, utils_js_1.objectAssign)(pageContext, { [isServerSideError_js_1.isServerSideError]: true });
52
49
  }
53
- const pageContextSerialized = (0, serializePageContextClientSide_js_1.serializePageContextClientSide)(pageContext);
50
+ const pageContextSerialized = (0, serializeContext_js_1.getPageContextClientSerialized)(pageContext);
54
51
  const httpResponse = await (0, createHttpResponse_js_1.createHttpResponsePageContextJson)(pageContextSerialized);
55
52
  (0, utils_js_1.objectAssign)(pageContext, { httpResponse });
56
53
  return pageContext;
@@ -80,69 +77,7 @@ async function prerenderPage(pageContext) {
80
77
  return { documentHtml, pageContextSerialized: null, pageContext };
81
78
  }
82
79
  else {
83
- const pageContextSerialized = (0, serializePageContextClientSide_js_1.serializePageContextClientSide)(pageContext);
80
+ const pageContextSerialized = (0, serializeContext_js_1.getPageContextClientSerialized)(pageContext);
84
81
  return { documentHtml, pageContextSerialized, pageContext };
85
82
  }
86
83
  }
87
- async function getPageContextInitEnhanced(pageContextInit, globalContext, isPrerendering, { ssr: { urlRewrite, urlHandler, isClientSideNavigation } = {
88
- urlRewrite: null,
89
- urlHandler: null,
90
- isClientSideNavigation: false
91
- } } = {}) {
92
- (0, utils_js_1.assert)(pageContextInit.urlOriginal);
93
- const pageContextInitEnhanced = createPageContext(pageContextInit, isPrerendering);
94
- (0, utils_js_1.objectAssign)(pageContextInitEnhanced, pageContextInit);
95
- (0, utils_js_1.objectAssign)(pageContextInitEnhanced, {
96
- _objectCreatedByVike: true,
97
- // The following is defined on `pageContext` because we can eventually make these non-global
98
- _baseServer: globalContext.baseServer,
99
- _baseAssets: globalContext.baseAssets,
100
- // TODO/now: add meta.default
101
- _includeAssetsImportedByServer: globalContext.config.includeAssetsImportedByServer ?? true,
102
- // TODO/soon: use GloablContext instead
103
- _pageFilesAll: globalContext.pageFilesAll,
104
- _pageConfigs: globalContext.pageConfigs,
105
- _pageConfigGlobal: globalContext.pageConfigGlobal,
106
- _allPageIds: globalContext.allPageIds,
107
- _pageRoutes: globalContext.pageRoutes,
108
- _onBeforeRouteHook: globalContext.onBeforeRouteHook,
109
- _globalContext: globalContext,
110
- // TODO/now: add PageContext['globalContext']
111
- /** @experimental This is a beta feature https://vike.dev/getGlobalContext */
112
- globalContext: globalContext.globalContext_public,
113
- _pageContextInit: pageContextInit,
114
- _urlRewrite: urlRewrite,
115
- _urlHandler: urlHandler,
116
- isClientSideNavigation
117
- });
118
- // pageContext.urlParsed
119
- const pageContextUrlComputed = (0, getPageContextUrlComputed_js_1.getPageContextUrlComputed)(pageContextInitEnhanced);
120
- (0, utils_js_1.objectAssign)(pageContextInitEnhanced, pageContextUrlComputed);
121
- // pageContext.headers
122
- {
123
- let headers;
124
- if (pageContextInit.headersOriginal) {
125
- headers = (0, utils_js_1.normalizeHeaders)(pageContextInit.headersOriginal);
126
- (0, utils_js_1.assertUsage)(!('headers' in pageContextInit), "You're defining pageContextInit.headersOriginal as well as pageContextInit.headers but you should only define pageContextInit.headersOriginal instead, see https://vike.dev/headers");
127
- }
128
- else if (pageContextInit.headers) {
129
- headers = pageContextInit.headers;
130
- // TODO/next-major-release: assertUsage() instead of assertWarning()
131
- (0, utils_js_1.assertWarning)(false, 'Setting pageContextInit.headers is deprecated: set pageContextInit.headersOriginal instead, see https://vike.dev/headers', { onlyOnce: true });
132
- }
133
- else {
134
- headers = null;
135
- }
136
- (0, utils_js_1.objectAssign)(pageContextInitEnhanced, { headers });
137
- }
138
- return pageContextInitEnhanced;
139
- }
140
- function createPageContext(pageContextInit, isPrerendering) {
141
- const pageContext = {
142
- _isPageContextObject: true,
143
- isClientSide: false,
144
- isPrerendering
145
- };
146
- (0, utils_js_1.objectAssign)(pageContext, pageContextInit);
147
- return pageContext;
148
- }
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.renderPage = renderPage;
7
7
  exports.renderPage_addAsyncHookwrapper = renderPage_addAsyncHookwrapper;
8
8
  const renderPageAlreadyRouted_js_1 = require("./renderPage/renderPageAlreadyRouted.js");
9
+ const createPageContextServerSide_js_1 = require("./renderPage/createPageContextServerSide.js");
9
10
  const index_js_1 = require("../../shared/route/index.js");
10
11
  const utils_js_1 = require("./utils.js");
11
12
  const abort_js_1 = require("../../shared/route/abort.js");
@@ -18,7 +19,7 @@ const assertArguments_js_1 = require("./renderPage/assertArguments.js");
18
19
  const index_js_2 = require("./renderPage/log404/index.js");
19
20
  const isVikeConfigInvalid_js_1 = require("./renderPage/isVikeConfigInvalid.js");
20
21
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
21
- const serializePageContextClientSide_js_1 = require("./html/serializePageContextClientSide.js");
22
+ const serializeContext_js_1 = require("./html/serializeContext.js");
22
23
  const error_page_js_1 = require("../../shared/error-page.js");
23
24
  const handleErrorWithoutErrorPage_js_1 = require("./renderPage/handleErrorWithoutErrorPage.js");
24
25
  const loadUserFilesServerSide_js_1 = require("./renderPage/loadUserFilesServerSide.js");
@@ -32,13 +33,13 @@ async function renderPage(pageContextInit) {
32
33
  (0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageContextInit, 'urlOriginal', 'string')); // assertUsage() already implemented at assertArguments()
33
34
  assertIsUrl(pageContextInit.urlOriginal);
34
35
  (0, utils_js_1.onSetupRuntime)();
35
- const pageContextInvalidRequest = renderInvalidRequest(pageContextInit);
36
+ const pageContextInvalidRequest = getPageContextInvalidRequest(pageContextInit);
36
37
  if (pageContextInvalidRequest)
37
38
  return pageContextInvalidRequest;
38
39
  const httpRequestId = getRequestId();
39
40
  const urlOriginalPretty = (0, utils_js_1.getUrlPretty)(pageContextInit.urlOriginal);
40
41
  logHttpRequest(urlOriginalPretty, httpRequestId);
41
- const { pageContextReturn } = await asyncHookWrapper(httpRequestId, () => renderPageAndPrepare(pageContextInit, httpRequestId));
42
+ const { pageContextReturn } = await asyncHookWrapper(httpRequestId, () => renderPagePrepare(pageContextInit, httpRequestId));
42
43
  logHttpResponse(urlOriginalPretty, httpRequestId, pageContextReturn);
43
44
  (0, utils_js_1.checkType)(pageContextReturn);
44
45
  (0, utils_js_1.assert)(pageContextReturn.httpResponse);
@@ -52,13 +53,12 @@ let asyncHookWrapper = async (_httpRequestId, ret) => ({
52
53
  function renderPage_addAsyncHookwrapper(wrapper) {
53
54
  asyncHookWrapper = wrapper;
54
55
  }
55
- async function renderPageAndPrepare(pageContextInit, httpRequestId) {
56
+ async function renderPagePrepare(pageContextInit, httpRequestId) {
56
57
  // Invalid config
57
- if (isVikeConfigInvalid_js_1.isVikeConfigInvalid) {
58
- if (1 < 2 // Make TS happy
59
- ) {
60
- return renderInvalidVikeConfig(isVikeConfigInvalid_js_1.isVikeConfigInvalid.err, pageContextInit, httpRequestId);
61
- }
58
+ if (isVikeConfigInvalid_js_1.isVikeConfigInvalid &&
59
+ true // Make TS happy
60
+ ) {
61
+ return getPageContextInvalidVikeConfig(isVikeConfigInvalid_js_1.isVikeConfigInvalid.err, pageContextInit, httpRequestId);
62
62
  }
63
63
  // Prepare context
64
64
  try {
@@ -72,49 +72,52 @@ async function renderPageAndPrepare(pageContextInit, httpRequestId) {
72
72
  // initGlobalContext_renderPage() doens't call any user hook => err isn't thrown from user code.
73
73
  (0, utils_js_1.assert)(!(0, abort_js_1.isAbortError)(err));
74
74
  (0, loggerRuntime_js_1.logRuntimeError)(err, httpRequestId);
75
- const pageContextWithError = getPageContextHttpResponseError(err, pageContextInit, null);
75
+ const pageContextWithError = getPageContextHttpResponseErrorWithoutGlobalContext(err, pageContextInit);
76
76
  return pageContextWithError;
77
77
  }
78
78
  if (isVikeConfigInvalid_js_1.isVikeConfigInvalid) {
79
- return renderInvalidVikeConfig(isVikeConfigInvalid_js_1.isVikeConfigInvalid.err, pageContextInit, httpRequestId);
79
+ return getPageContextInvalidVikeConfig(isVikeConfigInvalid_js_1.isVikeConfigInvalid.err, pageContextInit, httpRequestId);
80
80
  }
81
81
  else {
82
82
  // `globalContext` now contains the entire Vike config and getVikeConfig() isn't called anymore for this request.
83
83
  }
84
- const globalContext = await (0, globalContext_js_1.getGlobalContextInternal)();
84
+ const { globalContext, globalContext_public } = await (0, globalContext_js_1.getGlobalContextServerInternal)();
85
+ const pageContextBegin = await getPageContextBegin(pageContextInit, globalContext, globalContext_public, httpRequestId);
85
86
  // Check Base URL
86
87
  {
87
- const pageContextHttpResponse = await checkBaseUrl(pageContextInit, globalContext);
88
+ const pageContextHttpResponse = await checkBaseUrl(pageContextBegin, globalContext);
88
89
  if (pageContextHttpResponse)
89
90
  return pageContextHttpResponse;
90
91
  }
91
92
  // Normalize URL
92
93
  {
93
- const pageContextHttpResponse = await normalizeUrl(pageContextInit, globalContext, httpRequestId);
94
+ const pageContextHttpResponse = await normalizeUrl(pageContextBegin, globalContext, httpRequestId);
94
95
  if (pageContextHttpResponse)
95
96
  return pageContextHttpResponse;
96
97
  }
97
98
  // Permanent redirects (HTTP status code `301`)
98
99
  {
99
- const pageContextHttpResponse = await getPermanentRedirect(pageContextInit, globalContext, httpRequestId);
100
+ const pageContextHttpResponse = await getPermanentRedirect(pageContextBegin, globalContext, httpRequestId);
100
101
  if (pageContextHttpResponse)
101
102
  return pageContextHttpResponse;
102
103
  }
103
- return await renderPageAlreadyPrepared(pageContextInit, globalContext, httpRequestId, []);
104
+ return await renderPageAlreadyPrepared(pageContextBegin, globalContext, httpRequestId, []);
104
105
  }
105
- async function renderPageAlreadyPrepared(pageContextInit, globalContext, httpRequestId, pageContextsFromRewrite) {
106
+ async function renderPageAlreadyPrepared(pageContextBegin, globalContext, httpRequestId, pageContextsFromRewrite) {
107
+ const pageContextNominalPageBegin = forkPageContext(pageContextBegin);
106
108
  (0, abort_js_1.assertNoInfiniteAbortLoop)(pageContextsFromRewrite.length,
107
109
  // There doesn't seem to be a way to count the number of HTTP redirects (vike don't have access to the HTTP request headers/cookies)
108
110
  // https://stackoverflow.com/questions/9683007/detect-infinite-http-redirect-loop-on-server-side
109
111
  0);
110
112
  let pageContextNominalPageSuccess;
111
113
  const pageContextFromAllRewrites = (0, abort_js_1.getPageContextFromAllRewrites)(pageContextsFromRewrite);
112
- const pageContextNominalPageInit = await getPageContextInitEnhancedSSR(pageContextInit, globalContext, pageContextFromAllRewrites._urlRewrite, httpRequestId);
113
- (0, utils_js_1.objectAssign)(pageContextNominalPageInit, pageContextFromAllRewrites);
114
+ // This is where pageContext._urlRewrite is set
115
+ (0, utils_js_1.assert)(pageContextFromAllRewrites._urlRewrite === null || typeof pageContextFromAllRewrites._urlRewrite === 'string');
116
+ (0, utils_js_1.objectAssign)(pageContextNominalPageBegin, pageContextFromAllRewrites);
114
117
  let errNominalPage;
115
118
  {
116
119
  try {
117
- pageContextNominalPageSuccess = await renderPageNominal(pageContextNominalPageInit);
120
+ pageContextNominalPageSuccess = await renderPageNominal(pageContextNominalPageBegin);
118
121
  }
119
122
  catch (err) {
120
123
  errNominalPage = err;
@@ -122,7 +125,7 @@ async function renderPageAlreadyPrepared(pageContextInit, globalContext, httpReq
122
125
  (0, loggerRuntime_js_1.logRuntimeError)(errNominalPage, httpRequestId);
123
126
  }
124
127
  if (!errNominalPage) {
125
- (0, utils_js_1.assert)(pageContextNominalPageSuccess === pageContextNominalPageInit);
128
+ (0, utils_js_1.assert)(pageContextNominalPageSuccess === pageContextNominalPageBegin);
126
129
  }
127
130
  }
128
131
  // Log upon 404
@@ -138,12 +141,12 @@ async function renderPageAlreadyPrepared(pageContextInit, globalContext, httpReq
138
141
  else {
139
142
  (0, utils_js_1.assert)(errNominalPage);
140
143
  (0, utils_js_1.assert)(pageContextNominalPageSuccess === undefined);
141
- (0, utils_js_1.assert)(pageContextNominalPageInit);
142
- (0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageContextNominalPageInit, 'urlOriginal', 'string'));
143
- const pageContextErrorPageInit = await getPageContextErrorPageInit(pageContextInit, globalContext, errNominalPage, pageContextNominalPageInit, httpRequestId);
144
+ (0, utils_js_1.assert)(pageContextNominalPageBegin);
145
+ (0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageContextNominalPageBegin, 'urlOriginal', 'string'));
146
+ const pageContextErrorPageInit = await getPageContextErrorPageInit(pageContextBegin, errNominalPage, pageContextNominalPageBegin);
144
147
  // Handle `throw redirect()` and `throw render()` while rendering nominal page
145
148
  if ((0, abort_js_1.isAbortError)(errNominalPage)) {
146
- const handled = await handleAbortError(errNominalPage, pageContextsFromRewrite, pageContextInit, pageContextNominalPageInit, httpRequestId, pageContextErrorPageInit, globalContext);
149
+ const handled = await handleAbortError(errNominalPage, pageContextsFromRewrite, pageContextBegin, pageContextNominalPageBegin, httpRequestId, pageContextErrorPageInit, globalContext);
147
150
  if (handled.pageContextReturn) {
148
151
  // - throw redirect()
149
152
  // - throw render(url)
@@ -156,7 +159,7 @@ async function renderPageAlreadyPrepared(pageContextInit, globalContext, httpReq
156
159
  Object.assign(pageContextErrorPageInit, handled.pageContextAbort);
157
160
  }
158
161
  {
159
- const errorPageId = (0, error_page_js_1.getErrorPageId)(globalContext.pageFilesAll, globalContext.pageConfigs);
162
+ const errorPageId = (0, error_page_js_1.getErrorPageId)(globalContext._pageFilesAll, globalContext._pageConfigs);
160
163
  if (!errorPageId) {
161
164
  (0, utils_js_1.objectAssign)(pageContextErrorPageInit, { pageId: null });
162
165
  return (0, handleErrorWithoutErrorPage_js_1.handleErrorWithoutErrorPage)(pageContextErrorPageInit);
@@ -172,12 +175,12 @@ async function renderPageAlreadyPrepared(pageContextInit, globalContext, httpReq
172
175
  catch (errErrorPage) {
173
176
  // Handle `throw redirect()` and `throw render()` while rendering error page
174
177
  if ((0, abort_js_1.isAbortError)(errErrorPage)) {
175
- const handled = await handleAbortError(errErrorPage, pageContextsFromRewrite, pageContextInit, pageContextNominalPageInit, httpRequestId, pageContextErrorPageInit, globalContext);
178
+ const handled = await handleAbortError(errErrorPage, pageContextsFromRewrite, pageContextBegin, pageContextNominalPageBegin, httpRequestId, pageContextErrorPageInit, globalContext);
176
179
  // throw render(abortStatusCode)
177
180
  if (!handled.pageContextReturn) {
178
181
  const pageContextAbort = errErrorPage._pageContextAbort;
179
182
  (0, utils_js_1.assertWarning)(false, `Failed to render error page because ${picocolors_1.default.cyan(pageContextAbort._abortCall)} was called: make sure ${picocolors_1.default.cyan(pageContextAbort._abortCaller)} doesn't occur while the error page is being rendered.`, { onlyOnce: false });
180
- const pageContextHttpWithError = getPageContextHttpResponseError(errNominalPage, pageContextInit, pageContextErrorPageInit);
183
+ const pageContextHttpWithError = getPageContextHttpResponseError(errNominalPage, pageContextBegin);
181
184
  return pageContextHttpWithError;
182
185
  }
183
186
  // `throw redirect()` / `throw render(url)`
@@ -186,7 +189,7 @@ async function renderPageAlreadyPrepared(pageContextInit, globalContext, httpReq
186
189
  if ((0, isNewError_js_1.isNewError)(errErrorPage, errNominalPage)) {
187
190
  (0, loggerRuntime_js_1.logRuntimeError)(errErrorPage, httpRequestId);
188
191
  }
189
- const pageContextWithError = getPageContextHttpResponseError(errNominalPage, pageContextInit, pageContextErrorPageInit);
192
+ const pageContextWithError = getPageContextHttpResponseError(errNominalPage, pageContextBegin);
190
193
  return pageContextWithError;
191
194
  }
192
195
  return pageContextErrorPage;
@@ -238,11 +241,26 @@ function logHttpResponse(urlOriginalPretty, httpRequestId, pageContextReturn) {
238
241
  (0, loggerRuntime_js_1.logRuntimeInfo)?.(msg, httpRequestId, isNominal ? 'info' : 'error');
239
242
  }
240
243
  function prettyUrl(url) {
241
- return picocolors_1.default.bold(decodeURI(url));
244
+ try {
245
+ url = decodeURI(url);
246
+ }
247
+ catch {
248
+ // https://github.com/vikejs/vike/pull/2367#issuecomment-2800967564
249
+ }
250
+ return picocolors_1.default.bold(url);
242
251
  }
243
- function getPageContextHttpResponseError(err, pageContextInit, pageContext) {
244
- const pageContextWithError = (0, renderPageAlreadyRouted_js_1.createPageContext)(pageContextInit, false);
245
- const httpResponse = (0, createHttpResponse_js_1.createHttpResponseError)(pageContext);
252
+ function getPageContextHttpResponseError(err, pageContextBegin) {
253
+ const pageContextWithError = forkPageContext(pageContextBegin);
254
+ const httpResponse = (0, createHttpResponse_js_1.createHttpResponseError)(pageContextBegin);
255
+ (0, utils_js_1.objectAssign)(pageContextWithError, {
256
+ httpResponse,
257
+ errorWhileRendering: err
258
+ });
259
+ return pageContextWithError;
260
+ }
261
+ function getPageContextHttpResponseErrorWithoutGlobalContext(err, pageContextInit) {
262
+ const pageContextWithError = (0, createPageContextServerSide_js_1.createPageContextServerSideWithoutGlobalContext)(pageContextInit);
263
+ const httpResponse = (0, createHttpResponse_js_1.createHttpResponseErrorWithoutGlobalContext)();
246
264
  (0, utils_js_1.objectAssign)(pageContextWithError, {
247
265
  httpResponse,
248
266
  errorWhileRendering: err
@@ -272,8 +290,8 @@ async function renderPageNominal(pageContext) {
272
290
  (0, utils_js_1.assert)(pageContext === pageContextAfterRender);
273
291
  return pageContextAfterRender;
274
292
  }
275
- async function getPageContextErrorPageInit(pageContextInit, globalContext, errNominalPage, pageContextNominalPagePartial, httpRequestId) {
276
- const pageContext = await getPageContextInitEnhancedSSR(pageContextInit, globalContext, null, httpRequestId);
293
+ async function getPageContextErrorPageInit(pageContextBegin, errNominalPage, pageContextNominalPagePartial) {
294
+ const pageContext = forkPageContext(pageContextBegin);
277
295
  (0, utils_js_1.assert)(errNominalPage);
278
296
  (0, utils_js_1.objectAssign)(pageContext, {
279
297
  is404: false,
@@ -286,17 +304,17 @@ async function getPageContextErrorPageInit(pageContextInit, globalContext, errNo
286
304
  (0, utils_js_1.assert)(pageContext.errorWhileRendering);
287
305
  return pageContext;
288
306
  }
289
- async function getPageContextInitEnhancedSSR(pageContextInit, globalContext, urlRewrite, httpRequestId) {
307
+ async function getPageContextBegin(pageContextInit, globalContext, globalContext_public, httpRequestId) {
290
308
  const { isClientSideNavigation, _urlHandler } = handlePageContextUrl(pageContextInit.urlOriginal);
291
- const pageContextInitEnhanced = await (0, renderPageAlreadyRouted_js_1.getPageContextInitEnhanced)(pageContextInit, globalContext, false, {
309
+ const pageContextBegin = await (0, createPageContextServerSide_js_1.createPageContextServerSide)(pageContextInit, globalContext, globalContext_public, {
310
+ isPrerendering: false,
292
311
  ssr: {
293
- urlRewrite,
294
312
  urlHandler: _urlHandler,
295
313
  isClientSideNavigation
296
314
  }
297
315
  });
298
- (0, utils_js_1.objectAssign)(pageContextInitEnhanced, { _httpRequestId: httpRequestId });
299
- return pageContextInitEnhanced;
316
+ (0, utils_js_1.objectAssign)(pageContextBegin, { _httpRequestId: httpRequestId });
317
+ return pageContextBegin;
300
318
  }
301
319
  function handlePageContextUrl(urlOriginal) {
302
320
  const { isPageContextRequest } = (0, handlePageContextRequestUrl_js_1.handlePageContextRequestUrl)(urlOriginal);
@@ -319,11 +337,12 @@ function assertIsNotViteRequest(urlPathname, urlOriginal) {
319
337
  return;
320
338
  (0, utils_js_1.assertUsage)(false, `${picocolors_1.default.code('renderPage(pageContextInit)')} called with ${picocolors_1.default.code(`pageContextInit.urlOriginal===${JSON.stringify(urlOriginal)}`)} which is unexpected because the URL ${picocolors_1.default.bold(urlOriginal)} should have already been handled by the development middleware: make sure the ${picocolors_1.default.cyan('createDevMiddleware()')} middleware is executed *before* the ${picocolors_1.default.cyan('renderPage()')} middleware, see ${picocolors_1.default.underline('https://vike.dev/renderPage')}`);
321
339
  }
322
- async function normalizeUrl(pageContextInit, globalContext, httpRequestId) {
340
+ async function normalizeUrl(pageContextBegin, globalContext, httpRequestId) {
341
+ const pageContext = forkPageContext(pageContextBegin);
323
342
  const { trailingSlash, disableUrlNormalization } = globalContext.config;
324
343
  if (disableUrlNormalization)
325
344
  return null;
326
- const { urlOriginal } = pageContextInit;
345
+ const { urlOriginal } = pageContext;
327
346
  const { isPageContextRequest } = (0, handlePageContextRequestUrl_js_1.handlePageContextRequestUrl)(urlOriginal);
328
347
  if (isPageContextRequest)
329
348
  return null;
@@ -331,13 +350,13 @@ async function normalizeUrl(pageContextInit, globalContext, httpRequestId) {
331
350
  if (!urlNormalized)
332
351
  return null;
333
352
  (0, loggerRuntime_js_1.logRuntimeInfo)?.(`URL normalized from ${picocolors_1.default.cyan(urlOriginal)} to ${picocolors_1.default.cyan(urlNormalized)} (https://vike.dev/url-normalization)`, httpRequestId, 'info');
334
- const httpResponse = (0, createHttpResponse_js_1.createHttpResponseRedirect)({ url: urlNormalized, statusCode: 301 }, pageContextInit);
335
- const pageContextHttpResponse = (0, renderPageAlreadyRouted_js_1.createPageContext)(pageContextInit, false);
336
- (0, utils_js_1.objectAssign)(pageContextHttpResponse, { httpResponse });
337
- return pageContextHttpResponse;
353
+ const httpResponse = (0, createHttpResponse_js_1.createHttpResponseRedirect)({ url: urlNormalized, statusCode: 301 }, pageContext);
354
+ (0, utils_js_1.objectAssign)(pageContext, { httpResponse });
355
+ return pageContext;
338
356
  }
339
- async function getPermanentRedirect(pageContextInit, globalContext, httpRequestId) {
340
- const urlWithoutBase = (0, utils_js_1.removeBaseServer)(pageContextInit.urlOriginal, globalContext.baseServer);
357
+ async function getPermanentRedirect(pageContextBegin, globalContext, httpRequestId) {
358
+ const pageContext = forkPageContext(pageContextBegin);
359
+ const urlWithoutBase = (0, utils_js_1.removeBaseServer)(pageContext.urlOriginal, globalContext.baseServer);
341
360
  let origin = null;
342
361
  let urlTargetExternal = null;
343
362
  let urlTarget = (0, utils_js_1.modifyUrlPathname)(urlWithoutBase, (urlPathname) => {
@@ -370,48 +389,45 @@ async function getPermanentRedirect(pageContextInit, globalContext, httpRequestI
370
389
  return null;
371
390
  if (!originChanged)
372
391
  urlTarget = (0, utils_js_1.prependBase)(urlTarget, globalContext.baseServer);
373
- (0, utils_js_1.assert)(urlTarget !== pageContextInit.urlOriginal);
392
+ (0, utils_js_1.assert)(urlTarget !== pageContext.urlOriginal);
374
393
  }
375
394
  (0, loggerRuntime_js_1.logRuntimeInfo)?.(`Permanent redirection defined by config.redirects (https://vike.dev/redirects)`, httpRequestId, 'info');
376
- const httpResponse = (0, createHttpResponse_js_1.createHttpResponseRedirect)({ url: urlTarget, statusCode: 301 }, pageContextInit);
377
- const pageContextHttpResponse = (0, renderPageAlreadyRouted_js_1.createPageContext)(pageContextInit, false);
378
- (0, utils_js_1.objectAssign)(pageContextHttpResponse, { httpResponse });
379
- return pageContextHttpResponse;
395
+ const httpResponse = (0, createHttpResponse_js_1.createHttpResponseRedirect)({ url: urlTarget, statusCode: 301 }, pageContext);
396
+ (0, utils_js_1.objectAssign)(pageContext, { httpResponse });
397
+ return pageContext;
380
398
  }
381
399
  function normalize(url) {
382
400
  return url || '/';
383
401
  }
384
- async function handleAbortError(errAbort, pageContextsFromRewrite,
385
- // The original `pageContextInit` object passed to `renderPage(pageContextInit)`
386
- pageContextInit,
387
- // handleAbortError() creates a new pageContext object and we don't merge pageContextNominalPageInit to it: we only use some pageContextNominalPageInit information.
388
- pageContextNominalPageInit, httpRequestId, pageContextErrorPageInit, globalContext) {
389
- (0, abort_js_1.logAbortErrorHandled)(errAbort, globalContext.isProduction, pageContextNominalPageInit);
402
+ async function handleAbortError(errAbort, pageContextsFromRewrite, pageContextBegin,
403
+ // handleAbortError() creates a new pageContext object and we don't merge pageContextNominalPageBegin to it: we only use some pageContextNominalPageBegin information.
404
+ pageContextNominalPageBegin, httpRequestId, pageContextErrorPageInit, globalContext) {
405
+ (0, abort_js_1.logAbortErrorHandled)(errAbort, globalContext._isProduction, pageContextNominalPageBegin);
390
406
  const pageContextAbort = errAbort._pageContextAbort;
391
407
  let pageContextSerialized;
392
- if (pageContextNominalPageInit.isClientSideNavigation) {
408
+ if (pageContextNominalPageBegin.isClientSideNavigation) {
393
409
  if (pageContextAbort.abortStatusCode) {
394
- const errorPageId = (0, error_page_js_1.getErrorPageId)(globalContext.pageFilesAll, globalContext.pageConfigs);
410
+ const errorPageId = (0, error_page_js_1.getErrorPageId)(globalContext._pageFilesAll, globalContext._pageConfigs);
395
411
  const abortCall = pageContextAbort._abortCall;
396
412
  (0, utils_js_1.assert)(abortCall);
397
413
  (0, utils_js_1.assertUsage)(errorPageId, `You called ${picocolors_1.default.cyan(abortCall)} but you didn't define an error page, make sure to define one https://vike.dev/error-page`);
398
- const pageContext = (0, renderPageAlreadyRouted_js_1.createPageContext)({}, false);
414
+ const pageContext = forkPageContext(pageContextBegin);
399
415
  (0, utils_js_1.objectAssign)(pageContext, { pageId: errorPageId });
400
416
  (0, utils_js_1.objectAssign)(pageContext, pageContextAbort);
401
417
  (0, utils_js_1.objectAssign)(pageContext, pageContextErrorPageInit, true);
402
418
  (0, utils_js_1.objectAssign)(pageContext, await (0, loadUserFilesServerSide_js_1.loadUserFilesServerSide)(pageContext));
403
419
  // We include pageContextInit: we don't only serialize pageContextAbort because the error page may need to access pageContextInit
404
- pageContextSerialized = (0, serializePageContextClientSide_js_1.serializePageContextClientSide)(pageContext);
420
+ pageContextSerialized = (0, serializeContext_js_1.getPageContextClientSerialized)(pageContext);
405
421
  }
406
422
  else {
407
- pageContextSerialized = (0, serializePageContextClientSide_js_1.serializePageContextAbort)(pageContextAbort);
423
+ pageContextSerialized = (0, serializeContext_js_1.getPageContextClientSerializedAbort)(pageContextAbort);
408
424
  }
409
425
  const httpResponse = await (0, createHttpResponse_js_1.createHttpResponsePageContextJson)(pageContextSerialized);
410
426
  const pageContextReturn = { httpResponse };
411
427
  return { pageContextReturn };
412
428
  }
413
429
  if (pageContextAbort._urlRewrite) {
414
- const pageContextReturn = await renderPageAlreadyPrepared(pageContextInit, globalContext, httpRequestId, [
430
+ const pageContextReturn = await renderPageAlreadyPrepared(pageContextBegin, globalContext, httpRequestId, [
415
431
  ...pageContextsFromRewrite,
416
432
  pageContextAbort
417
433
  ]);
@@ -419,22 +435,22 @@ pageContextNominalPageInit, httpRequestId, pageContextErrorPageInit, globalConte
419
435
  return { pageContextReturn };
420
436
  }
421
437
  if (pageContextAbort._urlRedirect) {
422
- const pageContextReturn = (0, renderPageAlreadyRouted_js_1.createPageContext)(pageContextInit, false);
438
+ const pageContextReturn = forkPageContext(pageContextBegin);
423
439
  (0, utils_js_1.objectAssign)(pageContextReturn, pageContextAbort);
424
- const httpResponse = (0, createHttpResponse_js_1.createHttpResponseRedirect)(pageContextAbort._urlRedirect, pageContextInit);
440
+ const httpResponse = (0, createHttpResponse_js_1.createHttpResponseRedirect)(pageContextAbort._urlRedirect, pageContextBegin);
425
441
  (0, utils_js_1.objectAssign)(pageContextReturn, { httpResponse });
426
442
  return { pageContextReturn };
427
443
  }
428
444
  (0, utils_js_1.assert)(pageContextAbort.abortStatusCode);
429
445
  return { pageContextAbort };
430
446
  }
431
- async function checkBaseUrl(pageContextInit, globalContext) {
447
+ async function checkBaseUrl(pageContextBegin, globalContext) {
448
+ const pageContext = forkPageContext(pageContextBegin);
432
449
  const { baseServer } = globalContext;
433
- const { urlOriginal } = pageContextInit;
450
+ const { urlOriginal } = pageContext;
434
451
  const { isBaseMissing } = (0, utils_js_1.parseUrl)(urlOriginal, baseServer);
435
452
  if (!isBaseMissing)
436
453
  return;
437
- const pageContext = (0, renderPageAlreadyRouted_js_1.createPageContext)(pageContextInit, false);
438
454
  const httpResponse = (0, createHttpResponse_js_1.createHttpResponseBaseIsMissing)(urlOriginal, baseServer);
439
455
  (0, utils_js_1.objectAssign)(pageContext, {
440
456
  httpResponse,
@@ -443,20 +459,25 @@ async function checkBaseUrl(pageContextInit, globalContext) {
443
459
  (0, utils_js_1.checkType)(pageContext);
444
460
  return pageContext;
445
461
  }
446
- function renderInvalidRequest(pageContextInit) {
462
+ function getPageContextInvalidRequest(pageContextInit) {
447
463
  const urlPathnameWithBase = (0, utils_js_1.parseUrl)(pageContextInit.urlOriginal, '/').pathname;
448
464
  assertIsNotViteRequest(urlPathnameWithBase, pageContextInit.urlOriginal);
449
- if (urlPathnameWithBase.endsWith('/favicon.ico')) {
450
- const pageContext = (0, renderPageAlreadyRouted_js_1.createPageContext)(pageContextInit, false);
451
- const httpResponse = (0, createHttpResponse_js_1.createHttpResponseFavicon404)();
452
- (0, utils_js_1.objectAssign)(pageContext, { httpResponse });
453
- (0, utils_js_1.checkType)(pageContext);
454
- return pageContext;
455
- }
456
- return null;
465
+ if (!urlPathnameWithBase.endsWith('/favicon.ico'))
466
+ return;
467
+ const pageContext = (0, createPageContextServerSide_js_1.createPageContextServerSideWithoutGlobalContext)(pageContextInit);
468
+ const httpResponse = (0, createHttpResponse_js_1.createHttpResponseFavicon404)();
469
+ (0, utils_js_1.objectAssign)(pageContext, { httpResponse });
470
+ (0, utils_js_1.checkType)(pageContext);
471
+ return pageContext;
457
472
  }
458
- function renderInvalidVikeConfig(err, pageContextInit, httpRequestId) {
473
+ function getPageContextInvalidVikeConfig(err, pageContextInit, httpRequestId) {
459
474
  (0, loggerRuntime_js_1.logRuntimeInfo)?.(picocolors_1.default.bold(picocolors_1.default.red('Error while loading a Vike config file, see error above.')), httpRequestId, 'error');
460
- const pageContextWithError = getPageContextHttpResponseError(err, pageContextInit, null);
475
+ const pageContextWithError = getPageContextHttpResponseErrorWithoutGlobalContext(err, pageContextInit);
461
476
  return pageContextWithError;
462
477
  }
478
+ // Create pageContext forks to avoid leaks: upon an error (bug or abort) a brand new pageContext object is created, in order to avoid previous pageContext modifications that are now obsolete to leak to the new pageContext object.
479
+ function forkPageContext(pageContextBegin) {
480
+ const pageContext = {};
481
+ (0, utils_js_1.objectAssign)(pageContext, pageContextBegin, true);
482
+ return pageContext;
483
+ }
@@ -3,7 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = universalVikeHandler;
4
4
  const index_js_1 = require("./index.js");
5
5
  async function universalVikeHandler(request, context, runtime) {
6
- const pageContextInit = { ...context, ...runtime, urlOriginal: request.url, headersOriginal: request.headers };
6
+ const pageContextInit = {
7
+ ...context,
8
+ ...runtime,
9
+ runtime,
10
+ urlOriginal: request.url,
11
+ headersOriginal: request.headers
12
+ };
7
13
  const pageContext = await (0, index_js_1.renderPage)(pageContextInit);
8
14
  const response = pageContext.httpResponse;
9
15
  const readable = response.getReadableWebStream();