vike 0.4.220 → 0.4.221-commit-8577456

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 (296) hide show
  1. package/dist/cjs/__internal/index.js +5 -23
  2. package/dist/cjs/node/api/build.js +33 -24
  3. package/dist/cjs/node/api/context.js +6 -8
  4. package/dist/cjs/node/api/prepareViteApiCall.js +23 -21
  5. package/dist/cjs/node/api/prerender.js +1 -0
  6. package/dist/cjs/node/api/utils.js +2 -1
  7. package/dist/cjs/node/cli/context.js +16 -0
  8. package/dist/cjs/node/cli/entry.js +2 -0
  9. package/dist/cjs/node/cli/utils.js +1 -0
  10. package/dist/cjs/node/plugin/index.js +4 -8
  11. package/dist/cjs/node/plugin/onLoad.js +6 -1
  12. package/dist/cjs/node/plugin/plugins/autoFullBuild.js +34 -33
  13. package/dist/cjs/node/plugin/plugins/baseUrls.js +2 -2
  14. package/dist/cjs/node/plugin/plugins/buildApp.js +72 -0
  15. package/dist/cjs/node/plugin/plugins/buildConfig/fixServerAssets.js +12 -12
  16. package/dist/cjs/node/plugin/plugins/buildConfig.js +17 -12
  17. package/dist/cjs/node/plugin/plugins/buildEntry/index.js +28 -24
  18. package/dist/cjs/node/plugin/plugins/commonConfig.js +9 -7
  19. package/dist/cjs/node/plugin/plugins/extractAssetsPlugin.js +7 -4
  20. package/dist/cjs/node/plugin/plugins/extractExportNamesPlugin.js +2 -1
  21. package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +15 -10
  22. package/dist/cjs/node/plugin/plugins/importUserCode/index.js +11 -6
  23. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/{assertExtensions.js → getVikeConfig/assertExtensions.js} +41 -36
  24. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +59 -22
  25. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/{getConfigFileExport.js → getVikeConfig/getConfigFileExport.js} +2 -2
  26. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.js +159 -0
  27. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +40 -23
  28. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.js +9 -64
  29. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +11 -5
  30. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +403 -590
  31. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/{debug.js → virtual-files/debug.js} +1 -1
  32. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/{getVirtualFilePageConfigValuesAll.js → virtual-files/getVirtualFilePageConfigValuesAll.js} +12 -9
  33. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/{getVirtualFilePageConfigs.js → virtual-files/getVirtualFilePageConfigs.js} +13 -11
  34. package/dist/cjs/node/plugin/plugins/packageJsonFile.js +2 -2
  35. package/dist/cjs/node/plugin/plugins/previewConfig.js +7 -7
  36. package/dist/cjs/node/plugin/plugins/setGlobalContext.js +3 -5
  37. package/dist/cjs/node/plugin/shared/findPageFiles.js +2 -1
  38. package/dist/cjs/node/plugin/shared/getFullBuildInlineConfig.js +20 -0
  39. package/dist/cjs/{utils → node/plugin/shared}/getOutDirs.js +70 -61
  40. package/dist/cjs/node/plugin/{resolveClientEntriesDev.js → shared/resolveClientEntriesDev.js} +5 -8
  41. package/dist/cjs/{utils → node/plugin/shared}/viteIsSSR.js +2 -2
  42. package/dist/cjs/node/plugin/utils.js +1 -2
  43. package/dist/cjs/node/prerender/context.js +31 -0
  44. package/dist/cjs/node/prerender/resolvePrerenderConfig.js +46 -0
  45. package/dist/cjs/node/prerender/runPrerender.js +89 -68
  46. package/dist/cjs/node/prerender/utils.js +2 -2
  47. package/dist/cjs/node/runtime/globalContext.js +222 -150
  48. package/dist/cjs/node/runtime/html/injectAssets/getHtmlTags.js +11 -7
  49. package/dist/cjs/node/runtime/html/injectAssets/getViteDevScript.js +2 -3
  50. package/dist/cjs/node/runtime/html/injectAssets.js +4 -4
  51. package/dist/cjs/node/runtime/html/renderHtml.js +4 -5
  52. package/dist/cjs/node/runtime/page-files/setup.js +1 -1
  53. package/dist/cjs/node/runtime/renderPage/analyzePage.js +2 -3
  54. package/dist/cjs/node/runtime/renderPage/getEarlyHints.js +2 -27
  55. package/dist/cjs/node/runtime/renderPage/getPageAssets/sortPageAssetsForEarlyHintsHeader.js +2 -4
  56. package/dist/cjs/node/runtime/renderPage/getPageAssets.js +4 -4
  57. package/dist/cjs/node/runtime/renderPage/handleErrorWithoutErrorPage.js +3 -5
  58. package/dist/cjs/node/runtime/renderPage/isFontFallback.js +29 -0
  59. package/dist/cjs/node/runtime/renderPage/loadUserFilesServerSide.js +5 -4
  60. package/dist/cjs/node/runtime/renderPage/log404/index.js +1 -2
  61. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +14 -10
  62. package/dist/cjs/node/runtime/renderPage/resolveRedirects.js +6 -5
  63. package/dist/cjs/node/runtime/renderPage.js +31 -29
  64. package/dist/cjs/node/runtime/utils.js +3 -3
  65. package/dist/cjs/node/runtime-dev/createDevMiddleware.js +5 -3
  66. package/dist/cjs/node/shared/resolveBase.js +7 -0
  67. package/dist/cjs/shared/getPageConfigsRuntime.js +20 -0
  68. package/dist/cjs/shared/getPageContextUrlComputed.js +6 -1
  69. package/dist/cjs/shared/getPageFiles/fileTypes.js +0 -1
  70. package/dist/cjs/shared/getPageFiles/getAllPageIdFiles.js +0 -3
  71. package/dist/cjs/shared/getPageFiles/getPageFileObject.js +0 -5
  72. package/dist/cjs/shared/getPageFiles/parseGlobResults.js +4 -3
  73. package/dist/cjs/shared/getPageFiles.js +1 -3
  74. package/dist/cjs/shared/page-configs/getPageConfigUserFriendly.js +15 -6
  75. package/dist/cjs/shared/page-configs/loadConfigValues.js +5 -1
  76. package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +69 -18
  77. package/dist/cjs/shared/route/loadPageRoutes.js +1 -0
  78. package/dist/cjs/shared/utils.js +0 -1
  79. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  80. package/dist/cjs/utils/assertSetup.js +1 -1
  81. package/dist/cjs/utils/catchInfiniteLoop.js +34 -0
  82. package/dist/cjs/utils/debug.js +8 -6
  83. package/dist/cjs/utils/findFile.js +4 -3
  84. package/dist/cjs/utils/isDev.js +2 -2
  85. package/dist/cjs/utils/isFilePathAbsoluteFilesystem.js +2 -2
  86. package/dist/cjs/utils/makePublicCopy.js +32 -0
  87. package/dist/cjs/utils/objectAssignSafe.js +7 -0
  88. package/dist/cjs/utils/path.js +48 -0
  89. package/dist/cjs/utils/requireResolve.js +3 -3
  90. package/dist/esm/__internal/index.d.ts +2 -2
  91. package/dist/esm/__internal/index.js +7 -26
  92. package/dist/esm/client/client-routing-runtime/createPageContext.js +5 -9
  93. package/dist/esm/client/client-routing-runtime/history.d.ts +3 -1
  94. package/dist/esm/client/client-routing-runtime/history.js +23 -18
  95. package/dist/esm/client/client-routing-runtime/index.d.ts +0 -1
  96. package/dist/esm/client/client-routing-runtime/index.js +0 -1
  97. package/dist/esm/client/client-routing-runtime/initClientRouter.js +2 -2
  98. package/dist/esm/client/client-routing-runtime/initOnLinkClick.d.ts +0 -4
  99. package/dist/esm/client/client-routing-runtime/initOnLinkClick.js +0 -11
  100. package/dist/esm/client/client-routing-runtime/initOnPopState.d.ts +0 -10
  101. package/dist/esm/client/client-routing-runtime/initOnPopState.js +50 -70
  102. package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +15 -15
  103. package/dist/esm/client/client-routing-runtime/scrollRestoration.d.ts +4 -6
  104. package/dist/esm/client/client-routing-runtime/scrollRestoration.js +17 -12
  105. package/dist/esm/client/client-routing-runtime/setScrollPosition.d.ts +1 -1
  106. package/dist/esm/client/client-routing-runtime/setScrollPosition.js +29 -5
  107. package/dist/esm/client/client-routing-runtime/skipLink.d.ts +0 -2
  108. package/dist/esm/client/client-routing-runtime/skipLink.js +0 -1
  109. package/dist/esm/client/client-routing-runtime/utils.d.ts +1 -0
  110. package/dist/esm/client/client-routing-runtime/utils.js +1 -0
  111. package/dist/esm/client/server-routing-runtime/getPageContext.js +3 -4
  112. package/dist/esm/client/shared/loadUserFilesClientSide.js +3 -2
  113. package/dist/esm/node/api/build.d.ts +1 -6
  114. package/dist/esm/node/api/build.js +31 -25
  115. package/dist/esm/node/api/context.d.ts +4 -4
  116. package/dist/esm/node/api/context.js +6 -9
  117. package/dist/esm/node/api/prepareViteApiCall.d.ts +4 -3
  118. package/dist/esm/node/api/prepareViteApiCall.js +24 -22
  119. package/dist/esm/node/api/prerender.js +1 -0
  120. package/dist/esm/node/api/utils.d.ts +2 -1
  121. package/dist/esm/node/api/utils.js +2 -1
  122. package/dist/esm/node/cli/context.d.ts +5 -0
  123. package/dist/esm/node/cli/context.js +14 -0
  124. package/dist/esm/node/cli/entry.js +2 -0
  125. package/dist/esm/node/cli/parseCli.d.ts +3 -1
  126. package/dist/esm/node/cli/utils.d.ts +1 -0
  127. package/dist/esm/node/cli/utils.js +1 -0
  128. package/dist/esm/node/plugin/index.d.ts +29 -1
  129. package/dist/esm/node/plugin/index.js +5 -9
  130. package/dist/esm/node/plugin/onLoad.js +7 -2
  131. package/dist/esm/node/plugin/plugins/autoFullBuild.js +35 -34
  132. package/dist/esm/node/plugin/plugins/baseUrls.js +2 -2
  133. package/dist/esm/node/plugin/plugins/buildApp.d.ts +3 -0
  134. package/dist/esm/node/plugin/plugins/buildApp.js +70 -0
  135. package/dist/esm/node/plugin/plugins/buildConfig/fixServerAssets.d.ts +0 -2
  136. package/dist/esm/node/plugin/plugins/buildConfig/fixServerAssets.js +11 -11
  137. package/dist/esm/node/plugin/plugins/buildConfig.js +16 -11
  138. package/dist/esm/node/plugin/plugins/buildEntry/index.d.ts +3 -3
  139. package/dist/esm/node/plugin/plugins/buildEntry/index.js +28 -24
  140. package/dist/esm/node/plugin/plugins/commonConfig.d.ts +8 -2
  141. package/dist/esm/node/plugin/plugins/commonConfig.js +7 -5
  142. package/dist/esm/node/plugin/plugins/extractAssetsPlugin.js +6 -3
  143. package/dist/esm/node/plugin/plugins/extractExportNamesPlugin.js +2 -1
  144. package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.d.ts +2 -2
  145. package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +14 -9
  146. package/dist/esm/node/plugin/plugins/importUserCode/index.js +11 -6
  147. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/assertExtensions.d.ts +6 -0
  148. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{assertExtensions.js → getVikeConfig/assertExtensions.js} +41 -36
  149. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.d.ts +2 -2
  150. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +58 -21
  151. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{getConfigFileExport.js → getVikeConfig/getConfigFileExport.js} +2 -2
  152. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.d.ts +39 -0
  153. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.js +154 -0
  154. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.d.ts +15 -9
  155. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +41 -24
  156. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.d.ts +8 -18
  157. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.js +10 -65
  158. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.d.ts +6 -2
  159. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +12 -6
  160. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +10 -122
  161. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +407 -594
  162. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{debug.js → virtual-files/debug.js} +1 -1
  163. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{getVirtualFilePageConfigValuesAll.js → virtual-files/getVirtualFilePageConfigValuesAll.js} +12 -9
  164. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{getVirtualFilePageConfigs.js → virtual-files/getVirtualFilePageConfigs.js} +13 -11
  165. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{isRuntimeEnvMatch.d.ts → virtual-files/isRuntimeEnvMatch.d.ts} +1 -1
  166. package/dist/esm/node/plugin/plugins/packageJsonFile.js +1 -1
  167. package/dist/esm/node/plugin/plugins/previewConfig.js +5 -5
  168. package/dist/esm/node/plugin/plugins/setGlobalContext.js +4 -6
  169. package/dist/esm/node/plugin/shared/findPageFiles.js +2 -1
  170. package/dist/esm/node/plugin/shared/getFullBuildInlineConfig.d.ts +2 -0
  171. package/dist/esm/node/plugin/shared/getFullBuildInlineConfig.js +17 -0
  172. package/dist/esm/{utils → node/plugin/shared}/getOutDirs.d.ts +1 -1
  173. package/dist/esm/{utils → node/plugin/shared}/getOutDirs.js +52 -43
  174. package/dist/esm/node/plugin/{resolveClientEntriesDev.js → shared/resolveClientEntriesDev.js} +5 -8
  175. package/dist/esm/{utils → node/plugin/shared}/viteIsSSR.d.ts +2 -5
  176. package/dist/esm/{utils → node/plugin/shared}/viteIsSSR.js +2 -2
  177. package/dist/esm/node/plugin/utils.d.ts +0 -1
  178. package/dist/esm/node/plugin/utils.js +1 -2
  179. package/dist/esm/node/prerender/context.d.ts +11 -0
  180. package/dist/esm/node/prerender/context.js +29 -0
  181. package/dist/esm/node/prerender/resolvePrerenderConfig.d.ts +12 -0
  182. package/dist/esm/node/prerender/resolvePrerenderConfig.js +44 -0
  183. package/dist/esm/node/prerender/runPrerender.d.ts +42 -1
  184. package/dist/esm/node/prerender/runPrerender.js +90 -69
  185. package/dist/esm/node/prerender/utils.d.ts +2 -2
  186. package/dist/esm/node/prerender/utils.js +2 -2
  187. package/dist/esm/node/runtime/globalContext.d.ts +44 -36
  188. package/dist/esm/node/runtime/globalContext.js +223 -151
  189. package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.d.ts +1 -1
  190. package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +11 -7
  191. package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.d.ts +4 -1
  192. package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.js +2 -3
  193. package/dist/esm/node/runtime/html/injectAssets.d.ts +2 -0
  194. package/dist/esm/node/runtime/html/injectAssets.js +4 -4
  195. package/dist/esm/node/runtime/html/renderHtml.js +4 -5
  196. package/dist/esm/node/runtime/page-files/setup.js +1 -1
  197. package/dist/esm/node/runtime/renderPage/analyzePage.d.ts +2 -1
  198. package/dist/esm/node/runtime/renderPage/analyzePage.js +2 -3
  199. package/dist/esm/node/runtime/renderPage/getEarlyHints.js +1 -26
  200. package/dist/esm/node/runtime/renderPage/getPageAssets/sortPageAssetsForEarlyHintsHeader.d.ts +1 -1
  201. package/dist/esm/node/runtime/renderPage/getPageAssets/sortPageAssetsForEarlyHintsHeader.js +2 -4
  202. package/dist/esm/node/runtime/renderPage/getPageAssets.d.ts +3 -1
  203. package/dist/esm/node/runtime/renderPage/getPageAssets.js +4 -4
  204. package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.d.ts +2 -0
  205. package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.js +3 -5
  206. package/dist/esm/node/runtime/renderPage/isFontFallback.d.ts +3 -0
  207. package/dist/esm/node/runtime/renderPage/isFontFallback.js +27 -0
  208. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.d.ts +2 -0
  209. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +6 -5
  210. package/dist/esm/node/runtime/renderPage/log404/index.d.ts +2 -0
  211. package/dist/esm/node/runtime/renderPage/log404/index.js +1 -2
  212. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +3 -0
  213. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +26 -10
  214. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +14 -10
  215. package/dist/esm/node/runtime/renderPage/resolveRedirects.d.ts +2 -0
  216. package/dist/esm/node/runtime/renderPage/resolveRedirects.js +5 -5
  217. package/dist/esm/node/runtime/renderPage.js +32 -30
  218. package/dist/esm/node/runtime/utils.d.ts +3 -3
  219. package/dist/esm/node/runtime/utils.js +3 -3
  220. package/dist/esm/node/runtime-dev/createDevMiddleware.js +5 -3
  221. package/dist/esm/node/shared/resolveBase.d.ts +5 -1
  222. package/dist/esm/node/shared/resolveBase.js +7 -0
  223. package/dist/esm/shared/getPageConfigsRuntime.d.ts +13 -0
  224. package/dist/esm/shared/getPageConfigsRuntime.js +18 -0
  225. package/dist/esm/shared/getPageContextUrlComputed.js +6 -1
  226. package/dist/esm/shared/getPageFiles/fileTypes.js +1 -2
  227. package/dist/esm/shared/getPageFiles/getAllPageIdFiles.js +0 -3
  228. package/dist/esm/shared/getPageFiles/getPageFileObject.js +0 -5
  229. package/dist/esm/shared/getPageFiles/parseGlobResults.d.ts +1 -1
  230. package/dist/esm/shared/getPageFiles/parseGlobResults.js +4 -3
  231. package/dist/esm/shared/getPageFiles.d.ts +0 -1
  232. package/dist/esm/shared/getPageFiles.js +0 -1
  233. package/dist/esm/shared/page-configs/Config.d.ts +83 -3
  234. package/dist/esm/shared/page-configs/PageConfig.d.ts +30 -18
  235. package/dist/esm/shared/page-configs/getPageConfigUserFriendly.d.ts +6 -8
  236. package/dist/esm/shared/page-configs/getPageConfigUserFriendly.js +15 -6
  237. package/dist/esm/shared/page-configs/loadConfigValues.js +6 -2
  238. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.d.ts +7 -1
  239. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +70 -19
  240. package/dist/esm/shared/route/loadPageRoutes.js +1 -0
  241. package/dist/esm/shared/utils.d.ts +0 -1
  242. package/dist/esm/shared/utils.js +0 -1
  243. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  244. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  245. package/dist/esm/utils/assertSetup.js +1 -1
  246. package/dist/esm/utils/catchInfiniteLoop.d.ts +2 -0
  247. package/dist/esm/utils/catchInfiniteLoop.js +32 -0
  248. package/dist/esm/utils/debug.d.ts +1 -1
  249. package/dist/esm/utils/debug.js +8 -6
  250. package/dist/esm/utils/findFile.js +2 -1
  251. package/dist/esm/utils/isDev.js +3 -3
  252. package/dist/esm/utils/isFilePathAbsoluteFilesystem.js +1 -1
  253. package/dist/esm/utils/makePublicCopy.d.ts +3 -0
  254. package/dist/esm/utils/makePublicCopy.js +30 -0
  255. package/dist/esm/utils/objectAssignSafe.d.ts +1 -0
  256. package/dist/esm/utils/objectAssignSafe.js +4 -0
  257. package/dist/esm/utils/path.d.ts +14 -0
  258. package/dist/esm/utils/path.js +46 -0
  259. package/dist/esm/utils/projectInfo.d.ts +1 -1
  260. package/dist/esm/utils/requireResolve.js +1 -1
  261. package/package.json +2 -2
  262. package/dist/cjs/node/plugin/plugins/buildEntry/getVikeManifest.js +0 -17
  263. package/dist/cjs/node/plugin/plugins/importUserCode/addImportStatement.js +0 -29
  264. package/dist/cjs/node/prerender/isPrerenderAutoRunEnabled.js +0 -16
  265. package/dist/cjs/node/shared/assertPluginManifest.js +0 -20
  266. package/dist/cjs/node/shared/assertRuntimeManifest.js +0 -16
  267. package/dist/cjs/shared/assertPageFilePath.js +0 -11
  268. package/dist/cjs/shared/getPageFiles/getPageFiles.js +0 -48
  269. package/dist/cjs/utils/filesystemPathHandling.js +0 -18
  270. package/dist/cjs/utils/path-shim.js +0 -19
  271. package/dist/esm/node/plugin/plugins/buildEntry/getVikeManifest.d.ts +0 -5
  272. package/dist/esm/node/plugin/plugins/buildEntry/getVikeManifest.js +0 -15
  273. package/dist/esm/node/plugin/plugins/importUserCode/addImportStatement.d.ts +0 -14
  274. package/dist/esm/node/plugin/plugins/importUserCode/addImportStatement.js +0 -27
  275. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/assertExtensions.d.ts +0 -5
  276. package/dist/esm/node/prerender/isPrerenderAutoRunEnabled.d.ts +0 -5
  277. package/dist/esm/node/prerender/isPrerenderAutoRunEnabled.js +0 -14
  278. package/dist/esm/node/shared/assertPluginManifest.d.ts +0 -12
  279. package/dist/esm/node/shared/assertPluginManifest.js +0 -18
  280. package/dist/esm/node/shared/assertRuntimeManifest.d.ts +0 -10
  281. package/dist/esm/node/shared/assertRuntimeManifest.js +0 -14
  282. package/dist/esm/shared/assertPageFilePath.d.ts +0 -2
  283. package/dist/esm/shared/assertPageFilePath.js +0 -9
  284. package/dist/esm/shared/getPageFiles/getPageFiles.d.ts +0 -15
  285. package/dist/esm/shared/getPageFiles/getPageFiles.js +0 -46
  286. package/dist/esm/utils/filesystemPathHandling.d.ts +0 -4
  287. package/dist/esm/utils/filesystemPathHandling.js +0 -16
  288. package/dist/esm/utils/path-shim.d.ts +0 -2
  289. package/dist/esm/utils/path-shim.js +0 -17
  290. /package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/{isRuntimeEnvMatch.js → virtual-files/isRuntimeEnvMatch.js} +0 -0
  291. /package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{getConfigFileExport.d.ts → getVikeConfig/getConfigFileExport.d.ts} +0 -0
  292. /package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{debug.d.ts → virtual-files/debug.d.ts} +0 -0
  293. /package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{getVirtualFilePageConfigValuesAll.d.ts → virtual-files/getVirtualFilePageConfigValuesAll.d.ts} +0 -0
  294. /package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{getVirtualFilePageConfigs.d.ts → virtual-files/getVirtualFilePageConfigs.d.ts} +0 -0
  295. /package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{isRuntimeEnvMatch.js → virtual-files/isRuntimeEnvMatch.js} +0 -0
  296. /package/dist/esm/node/plugin/{resolveClientEntriesDev.d.ts → shared/resolveClientEntriesDev.d.ts} +0 -0
@@ -4,16 +4,15 @@ export { runPrerenderFromAutoRun };
4
4
  export { runPrerender_forceExit };
5
5
  import path from 'path';
6
6
  import { route } from '../../shared/route/index.js';
7
- import { assert, assertUsage, assertWarning, hasProp, projectInfo, objectAssign, isObjectWithKeys, isCallable, getOutDirs, isPropertyGetter, assertPosixPath, urlToFile, isPlainObject, pLimit, isArray, changeEnumerable, onSetupPrerender, isObject } from './utils.js';
7
+ import { assert, assertUsage, assertWarning, hasProp, projectInfo, objectAssign, isObjectWithKeys, isCallable, isPropertyGetter, assertPosixPath, urlToFile, isPlainObject, pLimit, isArray, changeEnumerable, onSetupPrerender, isObject, makePublicCopy } from './utils.js';
8
8
  import { prerenderPage, prerender404Page, getPageContextInitEnhanced } from '../runtime/renderPage/renderPageAlreadyRouted.js';
9
9
  import pc from '@brillout/picocolors';
10
10
  import { cpus } from 'os';
11
- import { getGlobalContext, initGlobalContext_runPrerender, setGlobalContext_isPrerendering } from '../runtime/globalContext.js';
11
+ import { getGlobalContextInternal, initGlobalContext_runPrerender, setGlobalContext_isPrerendering } from '../runtime/globalContext.js';
12
12
  import { resolveConfig } from 'vite';
13
13
  import { getPageFilesServerSide } from '../../shared/getPageFiles.js';
14
14
  import { getPageContextRequestUrl } from '../../shared/getPageContextRequestUrl.js';
15
15
  import { getUrlFromRouteString } from '../../shared/route/resolveRouteString.js';
16
- import { getConfigValueFilePathToShowToUser } from '../../shared/page-configs/helpers.js';
17
16
  import { getConfigValueRuntime } from '../../shared/page-configs/getConfigValueRuntime.js';
18
17
  import { loadConfigValues } from '../../shared/page-configs/loadConfigValues.js';
19
18
  import { isErrorPage } from '../../shared/error-page.js';
@@ -25,8 +24,12 @@ import { noRouteMatch } from '../../shared/route/noRouteMatch.js';
25
24
  import { getVikeConfig } from '../plugin/plugins/importUserCode/v1-design/getVikeConfig.js';
26
25
  import { logErrorHint } from '../runtime/renderPage/logErrorHint.js';
27
26
  import { executeHook, isUserHookError } from '../../shared/hooks/executeHook.js';
28
- import { getConfigValueBuildTime } from '../../shared/page-configs/getConfigValueBuildTime.js';
29
27
  import { prepareViteApiCall } from '../api/prepareViteApiCall.js';
28
+ import { setContextIsPrerendering } from './context.js';
29
+ import { resolvePrerenderConfig, resolvePrerenderConfigLocal } from './resolvePrerenderConfig.js';
30
+ import { getOutDirs } from '../plugin/shared/getOutDirs.js';
31
+ import { isVikeCli } from '../cli/context.js';
32
+ import { isViteCliCall } from '../plugin/shared/isViteCliCall.js';
30
33
  async function runPrerenderFromAPI(options = {}) {
31
34
  return await runPrerender(options, 'prerender()');
32
35
  // - We purposely propagate the error to the user land, so that the error interrupts the user land. It's also, I guess, a nice-to-have that the user has control over the error.
@@ -44,18 +47,25 @@ async function runPrerenderFromCLIPrerenderCommand() {
44
47
  process.exit(1);
45
48
  }
46
49
  runPrerender_forceExit();
50
+ assert(false);
47
51
  }
48
- async function runPrerenderFromAutoRun(viteConfig) {
52
+ async function runPrerenderFromAutoRun(viteConfig, config) {
53
+ let prerenderContextPublic;
49
54
  try {
50
- await runPrerender({ viteConfig });
55
+ const ret = await runPrerender({ viteConfig });
56
+ prerenderContextPublic = ret.prerenderContextPublic;
51
57
  }
52
58
  catch (err) {
53
59
  console.error(err);
54
60
  logErrorHint(err);
55
61
  process.exit(1);
56
62
  }
63
+ config.vike.prerenderContext = prerenderContextPublic;
64
+ const forceExit = isVikeCli() || isViteCliCall();
65
+ return { forceExit };
57
66
  }
58
67
  async function runPrerender(options = {}, standaloneTrigger) {
68
+ setContextIsPrerendering();
59
69
  checkOutdatedOptions(options);
60
70
  onSetupPrerender();
61
71
  setGlobalContext_isPrerendering();
@@ -69,7 +79,7 @@ async function runPrerender(options = {}, standaloneTrigger) {
69
79
  const vikeConfig = await getVikeConfig(viteConfig);
70
80
  const { outDirClient } = getOutDirs(viteConfig);
71
81
  const { root } = viteConfig;
72
- const prerenderConfig = vikeConfig.vikeConfigGlobal.prerender;
82
+ const prerenderConfig = resolvePrerenderConfig(vikeConfig);
73
83
  validatePrerenderConfig(prerenderConfig);
74
84
  if (!prerenderConfig) {
75
85
  assert(standaloneTrigger);
@@ -80,46 +90,47 @@ async function runPrerender(options = {}, standaloneTrigger) {
80
90
  const { partial = false, noExtraDir = false, parallel = true } = prerenderConfig || {};
81
91
  const concurrencyLimit = pLimit(parallel === false || parallel === 0 ? 1 : parallel === true || parallel === undefined ? cpus().length : parallel);
82
92
  await initGlobalContext_runPrerender();
83
- const globalContext = getGlobalContext();
93
+ const globalContext = await getGlobalContextInternal();
84
94
  globalContext.pageFilesAll.forEach(assertExportNames);
85
- const prerenderContext = {};
86
- objectAssign(prerenderContext, {
87
- _urlHandler: null,
88
- _noExtraDir: noExtraDir ?? false,
95
+ const prerenderContext = {
96
+ noExtraDir: noExtraDir ?? false,
89
97
  pageContexts: [],
90
- pageContextInit: options.pageContextInit ?? null
91
- });
98
+ pageContextInit: options.pageContextInit ?? null,
99
+ prerenderedPageContexts: {},
100
+ output: []
101
+ };
92
102
  const doNotPrerenderList = [];
93
- await collectDoNoPrerenderList(vikeConfig.pageConfigs, doNotPrerenderList, concurrencyLimit);
94
- await callOnBeforePrerenderStartHooks(prerenderContext, concurrencyLimit, doNotPrerenderList);
95
- await handlePagesWithStaticRoutes(prerenderContext, doNotPrerenderList, concurrencyLimit);
96
- await callOnPrerenderStartHook(prerenderContext);
97
- const prerenderedPageContexts = {};
103
+ await collectDoNoPrerenderList(vikeConfig.pageConfigs, doNotPrerenderList, concurrencyLimit, globalContext);
104
+ await callOnBeforePrerenderStartHooks(prerenderContext, globalContext, concurrencyLimit, doNotPrerenderList);
105
+ await handlePagesWithStaticRoutes(prerenderContext, globalContext, doNotPrerenderList, concurrencyLimit);
106
+ await callOnPrerenderStartHook(prerenderContext, globalContext);
98
107
  let prerenderedCount = 0;
108
+ // Write files as soon as pages finish rendering (instead of writing all files at once only after all pages have rendered).
99
109
  const onComplete = async (htmlFile) => {
100
110
  prerenderedCount++;
101
111
  if (htmlFile.pageId) {
102
- prerenderedPageContexts[htmlFile.pageId] = htmlFile.pageContext;
112
+ prerenderContext.prerenderedPageContexts[htmlFile.pageId] = htmlFile.pageContext;
103
113
  }
104
- await writeFiles(htmlFile, root, outDirClient, options.onPagePrerender, logLevel);
114
+ await writeFiles(htmlFile, root, outDirClient, options.onPagePrerender, prerenderContext.output, logLevel);
105
115
  };
106
- await routeAndPrerender(prerenderContext, concurrencyLimit, onComplete);
107
- warnContradictoryNoPrerenderList(prerenderedPageContexts, doNotPrerenderList);
108
- await prerender404(prerenderedPageContexts, prerenderContext, onComplete);
116
+ await routeAndPrerender(prerenderContext, globalContext, concurrencyLimit, onComplete);
117
+ warnContradictoryNoPrerenderList(prerenderContext.prerenderedPageContexts, doNotPrerenderList);
118
+ await prerender404(prerenderContext, globalContext, onComplete);
109
119
  if (logLevel === 'info') {
110
120
  console.log(`${pc.green(`✓`)} ${prerenderedCount} HTML documents pre-rendered.`);
111
121
  }
112
- warnMissingPages(prerenderedPageContexts, doNotPrerenderList, partial);
113
- return { viteConfig };
122
+ await warnMissingPages(prerenderContext.prerenderedPageContexts, globalContext, doNotPrerenderList, partial);
123
+ const prerenderContextPublic = makePublic(prerenderContext);
124
+ return { viteConfig, prerenderContextPublic };
114
125
  }
115
- async function collectDoNoPrerenderList(pageConfigs, doNotPrerenderList, concurrencyLimit) {
126
+ async function collectDoNoPrerenderList(pageConfigs, doNotPrerenderList, concurrencyLimit, globalContext) {
116
127
  // V1 design
117
128
  pageConfigs.forEach((pageConfig) => {
118
- const configName = 'prerender';
119
- const configValue = getConfigValueBuildTime(pageConfig, configName, 'boolean');
120
- if (configValue?.value === false) {
121
- const configValueFilePathToShowToUser = getConfigValueFilePathToShowToUser(configValue.definedAtData);
122
- assert(configValueFilePathToShowToUser);
129
+ const configValue = resolvePrerenderConfigLocal(pageConfig);
130
+ if (!configValue)
131
+ return;
132
+ const { value, configValueFilePathToShowToUser } = configValue;
133
+ if (value === false) {
123
134
  doNotPrerenderList.push({
124
135
  pageId: pageConfig.pageId,
125
136
  setByConfigName: 'prerender',
@@ -130,7 +141,6 @@ async function collectDoNoPrerenderList(pageConfigs, doNotPrerenderList, concurr
130
141
  });
131
142
  // Old design
132
143
  // TODO/v1-release: remove
133
- const globalContext = getGlobalContext();
134
144
  await Promise.all(globalContext.pageFilesAll
135
145
  .filter((p) => {
136
146
  assertExportNames(p);
@@ -173,9 +183,8 @@ function assertExportNames(pageFile) {
173
183
  const { exportNames, fileType } = pageFile;
174
184
  assert(exportNames || fileType === '.page.route' || fileType === '.css', pageFile.filePath);
175
185
  }
176
- async function callOnBeforePrerenderStartHooks(prerenderContext, concurrencyLimit, doNotPrerenderList) {
186
+ async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext, concurrencyLimit, doNotPrerenderList) {
177
187
  const onBeforePrerenderStartHooks = [];
178
- const globalContext = getGlobalContext();
179
188
  // V1 design
180
189
  await Promise.all(globalContext.pageConfigs.map((pageConfig) => concurrencyLimit(async () => {
181
190
  const hookName = 'onBeforePrerenderStart';
@@ -223,7 +232,7 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, concurrencyLimi
223
232
  }
224
233
  const prerenderResult = await executeHook(() => hookFn(), { hookName, hookFilePath, hookTimeout }, null);
225
234
  const result = normalizeOnPrerenderHookResult(prerenderResult, hookFilePath, hookName);
226
- result.forEach(({ url, pageContext }) => {
235
+ await Promise.all(result.map(async ({ url, pageContext }) => {
227
236
  {
228
237
  const pageContextFound = prerenderContext.pageContexts.find((pageContext) => isSameUrl(pageContext.urlOriginal, url));
229
238
  if (pageContextFound) {
@@ -234,7 +243,7 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, concurrencyLimi
234
243
  assertUsage(false, `URL ${pc.cyan(url)} provided ${providedTwice}. Make sure to provide the URL only once instead.`);
235
244
  }
236
245
  }
237
- const pageContextNew = createPageContext(url, prerenderContext);
246
+ const pageContextNew = await createPageContext(url, prerenderContext, globalContext);
238
247
  objectAssign(pageContextNew, {
239
248
  _providedByHook: {
240
249
  hookFilePath,
@@ -248,12 +257,11 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, concurrencyLimi
248
257
  });
249
258
  objectAssign(pageContextNew, pageContext);
250
259
  }
251
- });
260
+ }));
252
261
  })));
253
262
  }
254
- async function handlePagesWithStaticRoutes(prerenderContext, doNotPrerenderList, concurrencyLimit) {
263
+ async function handlePagesWithStaticRoutes(prerenderContext, globalContext, doNotPrerenderList, concurrencyLimit) {
255
264
  // Pre-render pages with a static route
256
- const globalContext = getGlobalContext();
257
265
  await Promise.all(globalContext.pageRoutes.map((pageRoute) => concurrencyLimit(async () => {
258
266
  const { pageId } = pageRoute;
259
267
  if (doNotPrerenderList.find((p) => p.pageId === pageId)) {
@@ -279,7 +287,7 @@ async function handlePagesWithStaticRoutes(prerenderContext, doNotPrerenderList,
279
287
  return;
280
288
  }
281
289
  const routeParams = {};
282
- const pageContext = createPageContext(urlOriginal, prerenderContext);
290
+ const pageContext = await createPageContext(urlOriginal, prerenderContext, globalContext);
283
291
  objectAssign(pageContext, {
284
292
  _providedByHook: null,
285
293
  routeParams,
@@ -297,11 +305,11 @@ async function handlePagesWithStaticRoutes(prerenderContext, doNotPrerenderList,
297
305
  prerenderContext.pageContexts.push(pageContext);
298
306
  })));
299
307
  }
300
- function createPageContext(urlOriginal, prerenderContext) {
308
+ async function createPageContext(urlOriginal, prerenderContext, globalContext) {
301
309
  const pageContext = {
302
310
  _urlHandler: null,
303
311
  _urlRewrite: null,
304
- _noExtraDir: prerenderContext._noExtraDir,
312
+ _noExtraDir: prerenderContext.noExtraDir,
305
313
  _prerenderContext: prerenderContext
306
314
  };
307
315
  const pageContextInit = {
@@ -309,13 +317,12 @@ function createPageContext(urlOriginal, prerenderContext) {
309
317
  };
310
318
  objectAssign(pageContextInit, prerenderContext.pageContextInit);
311
319
  {
312
- const pageContextInitEnhanced = getPageContextInitEnhanced(pageContextInit);
320
+ const pageContextInitEnhanced = await getPageContextInitEnhanced(pageContextInit, globalContext);
313
321
  objectAssign(pageContext, pageContextInitEnhanced);
314
322
  }
315
323
  return pageContext;
316
324
  }
317
- async function callOnPrerenderStartHook(prerenderContext) {
318
- const globalContext = getGlobalContext();
325
+ async function callOnPrerenderStartHook(prerenderContext, globalContext) {
319
326
  let onPrerenderStartHook;
320
327
  // V1 design
321
328
  if (globalContext.pageConfigs.length > 0) {
@@ -387,17 +394,20 @@ async function callOnPrerenderStartHook(prerenderContext) {
387
394
  const docLink = 'https://vike.dev/i18n#pre-rendering';
388
395
  // Set `enumerable` to `false` to avoid computed URL properties from being iterated & copied in onPrerenderStart() hook, e.g. /examples/i18n/
389
396
  const { restoreEnumerable, addPageContextComputedUrl } = makePageContextComputedUrlNonEnumerable(prerenderContext.pageContexts);
390
- let result = await executeHook(() => hookFn({
391
- pageContexts: prerenderContext.pageContexts,
397
+ let result = await executeHook(() => {
398
+ const prerenderContextPublic = makePublic(prerenderContext);
392
399
  // TODO/v1-release: remove warning
393
- get prerenderPageContexts() {
394
- assertWarning(false, `prerenderPageContexts has been renamed pageContexts, see ${docLink}`, {
395
- showStackTrace: true,
396
- onlyOnce: true
397
- });
398
- return prerenderContext.pageContexts;
399
- }
400
- }), onPrerenderStartHook, null);
400
+ Object.defineProperty(prerenderContextPublic, 'prerenderPageContexts', {
401
+ get() {
402
+ assertWarning(false, `prerenderPageContexts has been renamed pageContexts, see ${docLink}`, {
403
+ showStackTrace: true,
404
+ onlyOnce: true
405
+ });
406
+ return prerenderContext.pageContexts;
407
+ }
408
+ });
409
+ return hookFn(prerenderContextPublic);
410
+ }, onPrerenderStartHook, null);
401
411
  restoreEnumerable();
402
412
  if (result === null || result === undefined) {
403
413
  return;
@@ -439,8 +449,7 @@ async function callOnPrerenderStartHook(prerenderContext) {
439
449
  });
440
450
  addPageContextComputedUrl(prerenderContext.pageContexts);
441
451
  }
442
- async function routeAndPrerender(prerenderContext, concurrencyLimit, onComplete) {
443
- const globalContext = getGlobalContext();
452
+ async function routeAndPrerender(prerenderContext, globalContext, concurrencyLimit, onComplete) {
444
453
  assert(globalContext.isPrerendering);
445
454
  // Route all URLs
446
455
  await Promise.all(prerenderContext.pageContexts.map((pageContext) => concurrencyLimit(async () => {
@@ -504,7 +513,7 @@ async function routeAndPrerender(prerenderContext, concurrencyLimit, onComplete)
504
513
  pageContext,
505
514
  htmlString: documentHtml,
506
515
  pageContextSerialized,
507
- doNotCreateExtraDirectory: prerenderContext._noExtraDir,
516
+ doNotCreateExtraDirectory: prerenderContext.noExtraDir,
508
517
  pageId
509
518
  });
510
519
  })));
@@ -522,8 +531,7 @@ function warnContradictoryNoPrerenderList(prerenderedPageContexts, doNotPrerende
522
531
  assertWarning(false, `The ${providedByHook.hookName}() hook defined by ${providedByHook.hookFilePath} returns the URL ${pc.cyan(urlOriginal)}, while ${setByConfigFile} sets the config ${pc.cyan(setByConfigName)} to ${pc.cyan(String(setByConfigValue))}. This is contradictory: either don't set the config ${pc.cyan(setByConfigName)} to ${pc.cyan(String(setByConfigValue))} or remove the URL ${pc.cyan(urlOriginal)} from the list of URLs to be pre-rendered.`, { onlyOnce: true });
523
532
  });
524
533
  }
525
- function warnMissingPages(prerenderedPageContexts, doNotPrerenderList, partial) {
526
- const globalContext = getGlobalContext();
534
+ async function warnMissingPages(prerenderedPageContexts, globalContext, doNotPrerenderList, partial) {
527
535
  const isV1 = globalContext.pageConfigs.length > 0;
528
536
  const hookName = isV1 ? 'onBeforePrerenderStart' : 'prerender';
529
537
  /* TODO/after-v1-design-release: document setting `prerender: false` as an alternative to using prerender.partial (both in the warnings and the docs)
@@ -539,11 +547,11 @@ function warnMissingPages(prerenderedPageContexts, doNotPrerenderList, partial)
539
547
  assertWarning(partial, `Cannot pre-render page ${pageAt} because it has a non-static route, while no ${hookName}() hook returned any URL matching the page's route. You need to use a ${hookName}() hook (https://vike.dev/${hookName}) providing a list of URLs for ${pageAt} that should be pre-rendered. If you don't want to pre-render ${pageAt} then use the option prerender.partial (https://vike.dev/prerender#partial) to suppress this warning.`, { onlyOnce: true });
540
548
  });
541
549
  }
542
- async function prerender404(prerenderedPageContexts, prerenderContext, onComplete) {
543
- if (!Object.values(prerenderedPageContexts).find(({ urlOriginal }) => urlOriginal === '/404')) {
550
+ async function prerender404(prerenderContext, globalContext, onComplete) {
551
+ if (!Object.values(prerenderContext.prerenderedPageContexts).find(({ urlOriginal }) => urlOriginal === '/404')) {
544
552
  let result;
545
553
  try {
546
- result = await prerender404Page(prerenderContext.pageContextInit);
554
+ result = await prerender404Page(prerenderContext.pageContextInit, globalContext);
547
555
  }
548
556
  catch (err) {
549
557
  assertIsNotAbort(err, 'the 404 page');
@@ -563,22 +571,23 @@ async function prerender404(prerenderedPageContexts, prerenderContext, onComplet
563
571
  }
564
572
  }
565
573
  }
566
- async function writeFiles({ urlOriginal, pageContext, htmlString, pageContextSerialized, doNotCreateExtraDirectory }, root, outDirClient, onPagePrerender, logLevel) {
574
+ async function writeFiles({ urlOriginal, pageContext, htmlString, pageContextSerialized, doNotCreateExtraDirectory }, root, outDirClient, onPagePrerender, output, logLevel) {
567
575
  assert(urlOriginal.startsWith('/'));
568
576
  const writeJobs = [
569
- write(urlOriginal, pageContext, '.html', htmlString, root, outDirClient, doNotCreateExtraDirectory, onPagePrerender, logLevel)
577
+ write(urlOriginal, pageContext, 'HTML', htmlString, root, outDirClient, doNotCreateExtraDirectory, onPagePrerender, output, logLevel)
570
578
  ];
571
579
  if (pageContextSerialized !== null) {
572
- writeJobs.push(write(urlOriginal, pageContext, '.pageContext.json', pageContextSerialized, root, outDirClient, doNotCreateExtraDirectory, onPagePrerender, logLevel));
580
+ writeJobs.push(write(urlOriginal, pageContext, 'JSON', pageContextSerialized, root, outDirClient, doNotCreateExtraDirectory, onPagePrerender, output, logLevel));
573
581
  }
574
582
  await Promise.all(writeJobs);
575
583
  }
576
- async function write(urlOriginal, pageContext, fileExtension, fileContent, root, outDirClient, doNotCreateExtraDirectory, onPagePrerender, logLevel) {
584
+ async function write(urlOriginal, pageContext, fileType, fileContent, root, outDirClient, doNotCreateExtraDirectory, onPagePrerender, output, logLevel) {
577
585
  let fileUrl;
578
- if (fileExtension === '.html') {
586
+ if (fileType === 'HTML') {
579
587
  fileUrl = urlToFile(urlOriginal, '.html', doNotCreateExtraDirectory);
580
588
  }
581
589
  else {
590
+ assert(fileType === 'JSON');
582
591
  fileUrl = getPageContextRequestUrl(urlOriginal);
583
592
  }
584
593
  assertPosixPath(fileUrl);
@@ -590,6 +599,12 @@ async function write(urlOriginal, pageContext, fileExtension, fileContent, root,
590
599
  assertPosixPath(outDirClient);
591
600
  assertPosixPath(filePathRelative);
592
601
  const filePath = path.posix.join(outDirClient, filePathRelative);
602
+ output.push({
603
+ filePath,
604
+ fileType,
605
+ fileContent,
606
+ pageContext
607
+ });
593
608
  if (onPagePrerender) {
594
609
  const prerenderPageContext = {};
595
610
  objectAssign(prerenderPageContext, pageContext);
@@ -758,3 +773,9 @@ prerenderConfig) {
758
773
  assertUsage(false, `Setting ${pc.cyan(`prerender.${prop}`)} ${errMsg}`);
759
774
  }
760
775
  }
776
+ function makePublic(prerenderContext) {
777
+ const prerenderContextPublic = makePublicCopy(prerenderContext, 'prerenderContext', [
778
+ 'pageContexts'
779
+ ]);
780
+ return prerenderContextPublic;
781
+ }
@@ -4,9 +4,8 @@ export * from '../../utils/projectInfo.js';
4
4
  export * from '../../utils/objectAssign.js';
5
5
  export * from '../../utils/isObjectWithKeys.js';
6
6
  export * from '../../utils/isCallable.js';
7
- export * from '../../utils/getOutDirs.js';
8
7
  export * from '../../utils/isPropertyGetter.js';
9
- export * from '../../utils/filesystemPathHandling.js';
8
+ export * from '../../utils/path.js';
10
9
  export * from '../../utils/urlToFile.js';
11
10
  export * from '../../utils/isPlainObject.js';
12
11
  export * from '../../utils/assertSetup.js';
@@ -15,3 +14,4 @@ export * from '../../utils/isFilePathAbsoluteFilesystem.js';
15
14
  export * from '../../utils/isArray.js';
16
15
  export * from '../../utils/isObject.js';
17
16
  export * from '../../utils/changeEnumerable.js';
17
+ export * from '../../utils/makePublicCopy.js';
@@ -6,9 +6,8 @@ export * from '../../utils/projectInfo.js';
6
6
  export * from '../../utils/objectAssign.js';
7
7
  export * from '../../utils/isObjectWithKeys.js';
8
8
  export * from '../../utils/isCallable.js';
9
- export * from '../../utils/getOutDirs.js';
10
9
  export * from '../../utils/isPropertyGetter.js';
11
- export * from '../../utils/filesystemPathHandling.js';
10
+ export * from '../../utils/path.js';
12
11
  export * from '../../utils/urlToFile.js';
13
12
  export * from '../../utils/isPlainObject.js';
14
13
  export * from '../../utils/assertSetup.js';
@@ -17,3 +16,4 @@ export * from '../../utils/isFilePathAbsoluteFilesystem.js';
17
16
  export * from '../../utils/isArray.js';
18
17
  export * from '../../utils/isObject.js';
19
18
  export * from '../../utils/changeEnumerable.js';
19
+ export * from '../../utils/makePublicCopy.js';
@@ -1,38 +1,37 @@
1
1
  export { getGlobalContextSync };
2
2
  export { getGlobalContextAsync };
3
- export { getGlobalContext };
3
+ export { getGlobalContextInternal };
4
4
  export { getViteDevServer };
5
5
  export { getViteConfig };
6
- export { getRuntimeManifest };
7
6
  export { initGlobalContext_renderPage };
8
7
  export { initGlobalContext_runPrerender };
9
- export { initGlobalContext_getGlobalContextAsync };
8
+ export { initGlobalContext_getPagesAndRoutes };
10
9
  export { setGlobalContext_viteDevServer };
11
10
  export { setGlobalContext_viteConfig };
12
- export { setGlobalContext_vikeConfig };
13
- export { setGlobalContext_isViteDev };
14
11
  export { setGlobalContext_isPrerendering };
12
+ export { setGlobalContext_isProduction };
15
13
  export { setGlobalContext_buildEntry };
16
14
  export { clearGlobalContext };
15
+ export { assertBuildInfo };
16
+ export { getViteConfigRuntime };
17
+ export { updateUserFiles };
18
+ export type { BuildInfo };
19
+ export type { GlobalContext };
20
+ export type { GlobalContextPublic };
17
21
  import type { ViteManifest } from '../shared/ViteManifest.js';
18
22
  import type { ResolvedConfig, ViteDevServer } from 'vite';
19
- import type { VikeConfigGlobal } from '../plugin/plugins/importUserCode/v1-design/getVikeConfig.js';
20
- import { type RuntimeManifest } from '../shared/assertRuntimeManifest.js';
21
- import type { VikeConfigObject } from '../plugin/plugins/importUserCode/v1-design/getVikeConfig.js';
22
23
  import type { ConfigUserFriendly } from '../../shared/page-configs/getPageConfigUserFriendly.js';
23
- type GlobalContextPublic = {
24
- assetsManifest: null | ViteManifest;
24
+ import type { ConfigVitePluginServerEntry } from '@brillout/vite-plugin-server-entry/plugin';
25
+ type GlobalContextPublic = Pick<GlobalContext, 'assetsManifest' | 'config' | 'viteConfig'>;
26
+ type PageRuntimeInfo = Awaited<ReturnType<typeof getUserFiles>>;
27
+ type GlobalContext = GlobalContextWithoutPublicCopy & {
28
+ globalContext_public: GlobalContextPublic;
25
29
  };
26
- type PageRuntimeInfo = Awaited<ReturnType<typeof getPageRuntimeInfo>>['userFiles'];
27
- type GlobalContext = {
28
- baseServer: string;
29
- baseAssets: null | string;
30
- includeAssetsImportedByServer: boolean;
31
- trailingSlash: boolean;
32
- disableUrlNormalization: boolean;
33
- vikeConfig: {
34
- global: ConfigUserFriendly;
30
+ type GlobalContextWithoutPublicCopy = {
31
+ viteConfigRuntime: {
32
+ _baseViteOriginal: null | string;
35
33
  };
34
+ config: ConfigUserFriendly['config'];
36
35
  } & PageRuntimeInfo & ({
37
36
  isProduction: false;
38
37
  isPrerendering: false;
@@ -51,32 +50,41 @@ type GlobalContext = {
51
50
  usesClientRouter: boolean;
52
51
  viteConfig: ResolvedConfig;
53
52
  })));
54
- declare function getGlobalContext(): GlobalContext;
53
+ declare function getGlobalContextInternal(): Promise<GlobalContext>;
55
54
  /** @experimental https://vike.dev/getGlobalContext */
56
55
  declare function getGlobalContextSync(): GlobalContextPublic;
57
56
  /** @experimental https://vike.dev/getGlobalContext */
58
57
  declare function getGlobalContextAsync(isProduction: boolean): Promise<GlobalContextPublic>;
59
- declare function setGlobalContext_viteDevServer(viteDevServer: ViteDevServer): void;
58
+ declare function setGlobalContext_viteDevServer(viteDevServer: ViteDevServer): Promise<void>;
60
59
  declare function setGlobalContext_viteConfig(viteConfig: ResolvedConfig, outDirRoot: string): void;
61
- declare function setGlobalContext_vikeConfig(vikeConfig: VikeConfigObject): void;
62
- declare function setGlobalContext_isViteDev(isViteDev: boolean): void;
63
60
  declare function setGlobalContext_isPrerendering(): void;
61
+ declare function setGlobalContext_isProduction(isProduction: boolean): void;
64
62
  declare function getViteDevServer(): ViteDevServer | null;
65
63
  declare function getViteConfig(): ResolvedConfig | null;
66
64
  declare function initGlobalContext_renderPage(): Promise<void>;
67
65
  declare function initGlobalContext_runPrerender(): Promise<void>;
68
- declare function initGlobalContext_getGlobalContextAsync(isProduction: boolean): Promise<void>;
69
- declare function getPageRuntimeInfo(isProduction: boolean): Promise<{
70
- userFiles: {
71
- pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
72
- pageConfigs: import("../../__internal/index.js").PageConfig[];
73
- pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
74
- allPageIds: string[];
75
- pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
76
- onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
77
- };
78
- globalConfig: ConfigUserFriendly;
66
+ declare function initGlobalContext_getPagesAndRoutes(): Promise<void>;
67
+ declare function getUserFiles(): Promise<{
68
+ pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
69
+ pageConfigs: import("../../__internal/index.js").PageConfig[];
70
+ pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
71
+ allPageIds: string[];
72
+ pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
73
+ onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
74
+ config: import("../../shared/page-configs/Config/PageContextConfig.js").ConfigResolved;
79
75
  }>;
80
- declare function getRuntimeManifest(vikeConfigGlobal: VikeConfigGlobal, viteConfig: ResolvedConfig): RuntimeManifest;
81
- declare function setGlobalContext_buildEntry(buildEntry: unknown): void;
76
+ declare function setGlobalContext_buildEntry(buildEntry: unknown): Promise<void>;
77
+ type BuildInfo = {
78
+ versionAtBuildTime: string;
79
+ usesClientRouter: boolean;
80
+ viteConfigRuntime: {
81
+ _baseViteOriginal: string;
82
+ vitePluginServerEntry: {
83
+ inject?: NonNullable<ConfigVitePluginServerEntry['vitePluginServerEntry']>['inject'];
84
+ };
85
+ };
86
+ };
87
+ declare function assertBuildInfo(buildInfo: unknown): asserts buildInfo is BuildInfo;
88
+ declare function getViteConfigRuntime(viteConfig: ResolvedConfig & ConfigVitePluginServerEntry): BuildInfo['viteConfigRuntime'];
89
+ declare function updateUserFiles(): Promise<void>;
82
90
  declare function clearGlobalContext(): void;