vike 0.4.237 → 0.4.238-commit-3c1a09d

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 (299) hide show
  1. package/dist/cjs/__internal/index.js +3 -3
  2. package/dist/cjs/client/runtime-client-routing/globalContext.js +2 -2
  3. package/dist/cjs/client/runtime-server-routing/globalContext.js +2 -2
  4. package/dist/cjs/client/runtime-server-routing/utils.js +1 -1
  5. package/dist/cjs/client/shared/createGetGlobalContextClient.js +5 -5
  6. package/dist/cjs/node/api/build.js +5 -31
  7. package/dist/cjs/node/api/context.js +13 -12
  8. package/dist/cjs/node/api/dev.js +0 -2
  9. package/dist/cjs/node/api/index.js +0 -2
  10. package/dist/cjs/node/api/onLoad.js +2 -2
  11. package/dist/cjs/node/api/prepareViteApiCall.js +2 -3
  12. package/dist/cjs/node/api/preview.js +2 -3
  13. package/dist/cjs/node/api/utils.js +1 -0
  14. package/dist/cjs/node/cli/index.js +2 -2
  15. package/dist/cjs/node/cli/onLoad.js +2 -2
  16. package/dist/cjs/node/prerender/runPrerender.js +7 -8
  17. package/dist/cjs/node/prerender/runPrerenderEntry.js +1 -1
  18. package/dist/cjs/node/runtime/csp.js +46 -0
  19. package/dist/cjs/node/runtime/globalContext.js +128 -112
  20. package/dist/cjs/node/runtime/html/injectAssets/getHtmlTags.js +11 -8
  21. package/dist/cjs/node/runtime/html/injectAssets/inferHtmlTags.js +5 -2
  22. package/dist/cjs/node/runtime/html/injectAssets/mergeScriptTags.js +4 -2
  23. package/dist/cjs/node/runtime/renderPage/analyzePage.js +6 -4
  24. package/dist/cjs/node/runtime/renderPage/createPageContextServerSide.js +1 -1
  25. package/dist/cjs/node/runtime/renderPage/execHookOnRenderHtml.js +1 -11
  26. package/dist/cjs/node/runtime/renderPage/getPageAssets/getManifestEntry.js +5 -4
  27. package/dist/cjs/node/runtime/renderPage/getPageAssets/{retrieveAssetsDev.js → retrievePageAssetsDev.js} +21 -6
  28. package/dist/cjs/node/runtime/renderPage/getPageAssets/{retrieveAssetsProd.js → retrievePageAssetsProd.js} +19 -2
  29. package/dist/cjs/node/runtime/renderPage/getPageAssets.js +5 -34
  30. package/dist/cjs/node/runtime/renderPage/loadPageConfigsLazyServerSide.js +57 -50
  31. package/dist/cjs/node/runtime/renderPage/{renderPageAlreadyRouted.js → renderPageAfterRoute.js} +3 -4
  32. package/dist/cjs/node/runtime/renderPage.js +18 -16
  33. package/dist/cjs/node/runtime/utils.js +3 -2
  34. package/dist/cjs/node/runtime-dev/createDevMiddleware.js +0 -2
  35. package/dist/cjs/node/shared/virtualFileId.js +110 -0
  36. package/dist/cjs/node/vite/index.js +3 -3
  37. package/dist/cjs/node/vite/onLoad.js +5 -3
  38. package/dist/cjs/node/vite/plugins/pluginBuild/handleAssetsManifest.js +29 -30
  39. package/dist/cjs/node/vite/plugins/pluginBuild/pluginBuildApp.js +122 -10
  40. package/dist/cjs/node/vite/plugins/pluginBuild/pluginBuildConfig.js +12 -17
  41. package/dist/cjs/node/vite/plugins/pluginBuild/pluginDistPackageJsonFile.js +2 -10
  42. package/dist/cjs/node/vite/plugins/pluginBuild/pluginModuleBanner.js +5 -11
  43. package/dist/cjs/node/vite/plugins/pluginBuild/{pluginBuildEntry.js → pluginProdBuildEntry.js} +11 -11
  44. package/dist/cjs/node/vite/plugins/pluginBuild.js +2 -4
  45. package/dist/cjs/node/vite/plugins/pluginDev/determineFsAllowList.js +2 -2
  46. package/dist/cjs/node/vite/plugins/pluginDev/determineOptimizeDeps.js +6 -5
  47. package/dist/cjs/node/vite/plugins/pluginEnvVars.js +6 -13
  48. package/dist/cjs/node/vite/plugins/pluginExtractAssets.js +7 -7
  49. package/dist/cjs/node/vite/plugins/pluginExtractExportNames.js +6 -2
  50. package/dist/cjs/node/vite/plugins/pluginFileEnv.js +4 -3
  51. package/dist/cjs/node/vite/plugins/pluginNonRunnableDev.js +11 -11
  52. package/dist/cjs/node/vite/plugins/pluginPreview.js +4 -7
  53. package/dist/cjs/node/vite/plugins/pluginReplaceConstants.js +6 -13
  54. package/dist/cjs/node/vite/plugins/pluginSetGlobalContext.js +1 -1
  55. package/dist/cjs/node/vite/plugins/pluginVirtualFiles/{getVirtualFilePageConfigsEager.js → generateVirtualFileGlobalEntry.js} +5 -6
  56. package/dist/cjs/node/vite/plugins/pluginVirtualFiles/{getVirtualFileEntry.js → generateVirtualFileGlobalEntryWithOldDesign.js} +12 -12
  57. package/dist/cjs/node/vite/plugins/pluginVirtualFiles/{getVirtualFilePageConfigLazy.js → generateVirtualFilePageEntry.js} +10 -11
  58. package/dist/cjs/node/vite/plugins/pluginVirtualFiles/getConfigValueSourcesRelevant.js +51 -21
  59. package/dist/cjs/node/vite/plugins/pluginVirtualFiles.js +14 -12
  60. package/dist/cjs/node/vite/shared/findPageFiles.js +1 -1
  61. package/dist/cjs/node/vite/shared/{resolveClientEntriesDev.js → getClientEntrySrcDev.js} +3 -3
  62. package/dist/cjs/node/vite/shared/getHttpRequestAsyncStore.js +8 -6
  63. package/dist/cjs/node/vite/shared/getMagicString.js +1 -1
  64. package/dist/cjs/node/vite/shared/getOutDirs.js +21 -22
  65. package/dist/cjs/node/vite/shared/getViteConfigRuntime.js +1 -1
  66. package/dist/cjs/node/vite/shared/isViteServerSide.js +68 -0
  67. package/dist/cjs/node/vite/shared/loggerVite/removeSuperfluousViteLog.js +6 -4
  68. package/dist/cjs/node/vite/shared/loggerVite.js +1 -1
  69. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/configDefinitionsBuiltIn.js +23 -36
  70. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/crawlPlusFiles.js +5 -4
  71. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal.js +46 -48
  72. package/dist/cjs/shared/createGlobalContextShared.js +16 -14
  73. package/dist/cjs/shared/getPageFiles/{parseVirtualFileExports.js → parseVirtualFileExportsGlobalEntry.js} +20 -26
  74. package/dist/cjs/shared/page-configs/loadAndParseVirtualFilePageEntry.js +25 -0
  75. package/dist/cjs/shared/page-configs/resolveVikeConfigPublic.js +10 -4
  76. package/dist/cjs/shared/page-configs/serialize/{parsePageConfigs.js → parsePageConfigsSerialized.js} +2 -2
  77. package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +3 -3
  78. package/dist/cjs/shared/route/execHookOnBeforeRoute.js +0 -1
  79. package/dist/cjs/shared/route/index.js +0 -1
  80. package/dist/cjs/types/VikeGlobalInternal.js +2 -0
  81. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  82. package/dist/cjs/utils/assertSetup.js +2 -3
  83. package/dist/cjs/utils/assertVersion.js +2 -0
  84. package/dist/cjs/utils/debug.js +4 -4
  85. package/dist/cjs/utils/getGlobalObject.js +8 -15
  86. package/dist/cjs/utils/isNonRunnableDev.js +12 -0
  87. package/dist/cjs/utils/isScriptFile.js +1 -1
  88. package/dist/cjs/utils/path.js +5 -5
  89. package/dist/cjs/utils/requireResolve.js +13 -12
  90. package/dist/cjs/utils/{augmentType.js → updateType.js} +3 -3
  91. package/dist/esm/__internal/index.d.ts +2 -2
  92. package/dist/esm/__internal/index.js +3 -3
  93. package/dist/esm/client/runtime-client-routing/createPageContextClientSide.d.ts +2 -2
  94. package/dist/esm/client/runtime-client-routing/createPageContextClientSide.js +2 -2
  95. package/dist/esm/client/runtime-client-routing/getPageContextCurrent.d.ts +2 -2
  96. package/dist/esm/client/runtime-client-routing/getPageContextFromHooks.d.ts +12 -12
  97. package/dist/esm/client/runtime-client-routing/globalContext.d.ts +2 -2
  98. package/dist/esm/client/runtime-client-routing/globalContext.js +2 -2
  99. package/dist/esm/client/runtime-client-routing/prefetch/getPrefetchSettings.d.ts +2 -2
  100. package/dist/esm/client/runtime-client-routing/prefetch.d.ts +2 -2
  101. package/dist/esm/client/runtime-client-routing/prefetch.js +2 -2
  102. package/dist/esm/client/runtime-client-routing/preparePageContextForPublicUsageClient.d.ts +2 -2
  103. package/dist/esm/client/runtime-client-routing/renderPageClientSide.d.ts +6 -7
  104. package/dist/esm/client/runtime-client-routing/renderPageClientSide.js +6 -6
  105. package/dist/esm/client/runtime-client-routing/utils.d.ts +1 -1
  106. package/dist/esm/client/runtime-client-routing/utils.js +1 -1
  107. package/dist/esm/client/runtime-server-routing/createPageContextClientSide.d.ts +3 -3
  108. package/dist/esm/client/runtime-server-routing/createPageContextClientSide.js +3 -3
  109. package/dist/esm/client/runtime-server-routing/globalContext.d.ts +2 -2
  110. package/dist/esm/client/runtime-server-routing/globalContext.js +2 -2
  111. package/dist/esm/client/runtime-server-routing/preparePageContextForPublicUsageClient.d.ts +2 -2
  112. package/dist/esm/client/runtime-server-routing/utils.d.ts +1 -1
  113. package/dist/esm/client/runtime-server-routing/utils.js +1 -1
  114. package/dist/esm/client/shared/createGetGlobalContextClient.d.ts +3 -3
  115. package/dist/esm/client/shared/createGetGlobalContextClient.js +5 -5
  116. package/dist/esm/client/shared/execHookOnRenderClient.d.ts +2 -2
  117. package/dist/esm/client/shared/loadPageConfigsLazyClientSide.d.ts +1 -1
  118. package/dist/esm/client/shared/loadPageConfigsLazyClientSide.js +4 -4
  119. package/dist/esm/client/shared/preparePageContextForPublicUsageClientShared.d.ts +2 -2
  120. package/dist/esm/node/api/build.d.ts +2 -2
  121. package/dist/esm/node/api/build.js +6 -32
  122. package/dist/esm/node/api/context.d.ts +10 -10
  123. package/dist/esm/node/api/context.js +13 -12
  124. package/dist/esm/node/api/dev.d.ts +2 -2
  125. package/dist/esm/node/api/dev.js +0 -2
  126. package/dist/esm/node/api/index.js +0 -2
  127. package/dist/esm/node/api/onLoad.js +1 -1
  128. package/dist/esm/node/api/prepareViteApiCall.d.ts +3 -5
  129. package/dist/esm/node/api/prepareViteApiCall.js +3 -4
  130. package/dist/esm/node/api/preview.d.ts +2 -2
  131. package/dist/esm/node/api/preview.js +2 -3
  132. package/dist/esm/node/api/types.d.ts +4 -4
  133. package/dist/esm/node/api/utils.d.ts +1 -0
  134. package/dist/esm/node/api/utils.js +1 -0
  135. package/dist/esm/node/cli/index.js +1 -1
  136. package/dist/esm/node/cli/onLoad.js +1 -1
  137. package/dist/esm/node/prerender/runPrerender.d.ts +14 -303
  138. package/dist/esm/node/prerender/runPrerender.js +8 -9
  139. package/dist/esm/node/prerender/runPrerenderEntry.js +1 -1
  140. package/dist/esm/node/runtime/csp.d.ts +12 -0
  141. package/dist/esm/node/runtime/csp.js +44 -0
  142. package/dist/esm/node/runtime/globalContext.d.ts +13 -13
  143. package/dist/esm/node/runtime/globalContext.js +125 -109
  144. package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +11 -8
  145. package/dist/esm/node/runtime/html/injectAssets/inferHtmlTags.d.ts +2 -1
  146. package/dist/esm/node/runtime/html/injectAssets/inferHtmlTags.js +5 -2
  147. package/dist/esm/node/runtime/html/injectAssets/mergeScriptTags.d.ts +2 -1
  148. package/dist/esm/node/runtime/html/injectAssets/mergeScriptTags.js +4 -2
  149. package/dist/esm/node/runtime/html/serializeContext.d.ts +2 -1
  150. package/dist/esm/node/runtime/renderPage/analyzePage.d.ts +4 -3
  151. package/dist/esm/node/runtime/renderPage/analyzePage.js +6 -4
  152. package/dist/esm/node/runtime/renderPage/createPageContextServerSide.d.ts +2 -2
  153. package/dist/esm/node/runtime/renderPage/createPageContextServerSide.js +2 -2
  154. package/dist/esm/node/runtime/renderPage/execHookOnRenderHtml.d.ts +0 -1
  155. package/dist/esm/node/runtime/renderPage/execHookOnRenderHtml.js +1 -11
  156. package/dist/esm/node/runtime/renderPage/execHookServer.d.ts +2 -2
  157. package/dist/esm/node/runtime/renderPage/getPageAssets/getManifestEntry.js +5 -4
  158. package/dist/esm/node/runtime/renderPage/getPageAssets/retrievePageAssetsDev.d.ts +10 -0
  159. package/dist/esm/node/runtime/renderPage/getPageAssets/{retrieveAssetsDev.js → retrievePageAssetsDev.js} +22 -7
  160. package/dist/esm/node/runtime/renderPage/getPageAssets/retrievePageAssetsProd.d.ts +10 -0
  161. package/dist/esm/node/runtime/renderPage/getPageAssets/{retrieveAssetsProd.js → retrievePageAssetsProd.js} +19 -2
  162. package/dist/esm/node/runtime/renderPage/getPageAssets.d.ts +2 -10
  163. package/dist/esm/node/runtime/renderPage/getPageAssets.js +4 -33
  164. package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.d.ts +1 -1
  165. package/dist/esm/node/runtime/renderPage/loadPageConfigsLazyServerSide.d.ts +108 -20
  166. package/dist/esm/node/runtime/renderPage/loadPageConfigsLazyServerSide.js +59 -52
  167. package/dist/esm/node/runtime/renderPage/preparePageContextForPublicUsageServer.d.ts +2 -2
  168. package/dist/esm/node/runtime/renderPage/{renderPageAlreadyRouted.d.ts → renderPageAfterRoute.d.ts} +30 -10
  169. package/dist/esm/node/runtime/renderPage/{renderPageAlreadyRouted.js → renderPageAfterRoute.js} +5 -6
  170. package/dist/esm/node/runtime/renderPage.d.ts +9 -6
  171. package/dist/esm/node/runtime/renderPage.js +20 -18
  172. package/dist/esm/node/runtime/utils.d.ts +3 -2
  173. package/dist/esm/node/runtime/utils.js +3 -2
  174. package/dist/esm/node/runtime-dev/createDevMiddleware.d.ts +2 -2
  175. package/dist/esm/node/runtime-dev/createDevMiddleware.js +0 -2
  176. package/dist/esm/node/shared/virtualFileId.d.ts +28 -0
  177. package/dist/esm/node/shared/virtualFileId.js +107 -0
  178. package/dist/esm/node/vite/index.js +3 -3
  179. package/dist/esm/node/vite/onLoad.js +5 -3
  180. package/dist/esm/node/vite/plugins/pluginBuild/handleAssetsManifest.d.ts +5 -6
  181. package/dist/esm/node/vite/plugins/pluginBuild/handleAssetsManifest.js +31 -32
  182. package/dist/esm/node/vite/plugins/pluginBuild/pluginBuildApp.js +119 -10
  183. package/dist/esm/node/vite/plugins/pluginBuild/pluginBuildConfig.js +12 -17
  184. package/dist/esm/node/vite/plugins/pluginBuild/pluginDistPackageJsonFile.js +2 -10
  185. package/dist/esm/node/vite/plugins/pluginBuild/pluginModuleBanner.js +5 -8
  186. package/dist/esm/node/vite/plugins/pluginBuild/{pluginBuildEntry.d.ts → pluginProdBuildEntry.d.ts} +2 -2
  187. package/dist/esm/node/vite/plugins/pluginBuild/{pluginBuildEntry.js → pluginProdBuildEntry.js} +12 -12
  188. package/dist/esm/node/vite/plugins/pluginBuild.js +2 -4
  189. package/dist/esm/node/vite/plugins/pluginDev/determineFsAllowList.js +3 -3
  190. package/dist/esm/node/vite/plugins/pluginDev/determineOptimizeDeps.js +6 -5
  191. package/dist/esm/node/vite/plugins/pluginEnvVars.js +6 -10
  192. package/dist/esm/node/vite/plugins/pluginExtractAssets.js +5 -5
  193. package/dist/esm/node/vite/plugins/pluginExtractExportNames.js +6 -2
  194. package/dist/esm/node/vite/plugins/pluginFileEnv.js +4 -3
  195. package/dist/esm/node/vite/plugins/pluginNonRunnableDev.js +12 -12
  196. package/dist/esm/node/vite/plugins/pluginPreview.js +5 -8
  197. package/dist/esm/node/vite/plugins/pluginReplaceConstants.js +6 -10
  198. package/dist/esm/node/vite/plugins/pluginSetGlobalContext.js +2 -2
  199. package/dist/esm/node/vite/plugins/pluginVirtualFiles/generateVirtualFileGlobalEntry.d.ts +2 -0
  200. package/dist/esm/node/vite/plugins/pluginVirtualFiles/{getVirtualFilePageConfigsEager.js → generateVirtualFileGlobalEntry.js} +5 -6
  201. package/dist/esm/node/vite/plugins/pluginVirtualFiles/generateVirtualFileGlobalEntryWithOldDesign.d.ts +6 -0
  202. package/dist/esm/node/vite/plugins/pluginVirtualFiles/{getVirtualFileEntry.js → generateVirtualFileGlobalEntryWithOldDesign.js} +11 -11
  203. package/dist/esm/node/vite/plugins/pluginVirtualFiles/generateVirtualFilePageEntry.d.ts +2 -0
  204. package/dist/esm/node/vite/plugins/pluginVirtualFiles/{getVirtualFilePageConfigLazy.js → generateVirtualFilePageEntry.js} +10 -11
  205. package/dist/esm/node/vite/plugins/pluginVirtualFiles/getConfigValueSourcesRelevant.d.ts +5 -1
  206. package/dist/esm/node/vite/plugins/pluginVirtualFiles/getConfigValueSourcesRelevant.js +52 -22
  207. package/dist/esm/node/vite/plugins/pluginVirtualFiles.js +14 -12
  208. package/dist/esm/node/vite/shared/findPageFiles.js +1 -1
  209. package/dist/esm/node/vite/shared/getClientEntrySrcDev.d.ts +4 -0
  210. package/dist/esm/node/vite/shared/{resolveClientEntriesDev.js → getClientEntrySrcDev.js} +4 -4
  211. package/dist/esm/node/vite/shared/getHttpRequestAsyncStore.js +9 -7
  212. package/dist/esm/node/vite/shared/getMagicString.js +1 -1
  213. package/dist/esm/node/vite/shared/getOutDirs.d.ts +4 -3
  214. package/dist/esm/node/vite/shared/getOutDirs.js +21 -22
  215. package/dist/esm/node/vite/shared/getViteConfigRuntime.js +1 -1
  216. package/dist/esm/node/vite/shared/isViteServerSide.d.ts +18 -0
  217. package/dist/esm/node/vite/shared/isViteServerSide.js +66 -0
  218. package/dist/esm/node/vite/shared/loggerVite/removeSuperfluousViteLog.js +7 -5
  219. package/dist/esm/node/vite/shared/loggerVite.js +1 -1
  220. package/dist/esm/node/vite/shared/resolveVikeConfigInternal/configDefinitionsBuiltIn.d.ts +3 -2
  221. package/dist/esm/node/vite/shared/resolveVikeConfigInternal/configDefinitionsBuiltIn.js +24 -37
  222. package/dist/esm/node/vite/shared/resolveVikeConfigInternal/crawlPlusFiles.js +6 -5
  223. package/dist/esm/node/vite/shared/resolveVikeConfigInternal.d.ts +4 -2
  224. package/dist/esm/node/vite/shared/resolveVikeConfigInternal.js +49 -51
  225. package/dist/esm/shared/createGlobalContextShared.d.ts +7 -6
  226. package/dist/esm/shared/createGlobalContextShared.js +18 -16
  227. package/dist/esm/shared/getPageFiles/{parseVirtualFileExports.d.ts → parseVirtualFileExportsGlobalEntry.d.ts} +2 -2
  228. package/dist/esm/shared/getPageFiles/{parseVirtualFileExports.js → parseVirtualFileExportsGlobalEntry.js} +20 -26
  229. package/dist/esm/shared/getPageFiles.d.ts +1 -1
  230. package/dist/esm/shared/hooks/execHook.d.ts +2 -2
  231. package/dist/esm/shared/hooks/getHook.d.ts +3 -3
  232. package/dist/esm/shared/page-configs/loadAndParseVirtualFilePageEntry.d.ts +3 -0
  233. package/dist/esm/shared/page-configs/loadAndParseVirtualFilePageEntry.js +23 -0
  234. package/dist/esm/shared/page-configs/resolveVikeConfigPublic.d.ts +9 -9
  235. package/dist/esm/shared/page-configs/resolveVikeConfigPublic.js +10 -4
  236. package/dist/esm/shared/page-configs/serialize/PageConfigSerialized.d.ts +1 -1
  237. package/dist/esm/shared/page-configs/serialize/{parsePageConfigs.d.ts → parsePageConfigsSerialized.d.ts} +2 -2
  238. package/dist/esm/shared/page-configs/serialize/{parsePageConfigs.js → parsePageConfigsSerialized.js} +2 -2
  239. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +3 -3
  240. package/dist/esm/shared/route/execHookOnBeforeRoute.d.ts +3 -3
  241. package/dist/esm/shared/route/execHookOnBeforeRoute.js +0 -1
  242. package/dist/esm/shared/route/index.d.ts +5 -6
  243. package/dist/esm/shared/route/index.js +0 -1
  244. package/dist/esm/types/Config.d.ts +13 -9
  245. package/dist/esm/types/PageConfig.d.ts +11 -9
  246. package/dist/esm/types/PageContext.d.ts +6 -0
  247. package/dist/esm/types/VikeGlobalInternal.d.ts +4 -0
  248. package/dist/esm/types/VikeGlobalInternal.js +1 -0
  249. package/dist/esm/types/VikeNamespace.d.ts +13 -0
  250. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  251. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  252. package/dist/esm/utils/assertSetup.js +2 -3
  253. package/dist/esm/utils/assertVersion.js +2 -0
  254. package/dist/esm/utils/debug.js +3 -3
  255. package/dist/esm/utils/getGlobalObject.d.ts +6 -5
  256. package/dist/esm/utils/getGlobalObject.js +8 -15
  257. package/dist/esm/utils/isNonRunnableDev.d.ts +2 -0
  258. package/dist/esm/utils/isNonRunnableDev.js +10 -0
  259. package/dist/esm/utils/isScriptFile.d.ts +1 -1
  260. package/dist/esm/utils/isScriptFile.js +1 -1
  261. package/dist/esm/utils/path.d.ts +2 -0
  262. package/dist/esm/utils/path.js +5 -5
  263. package/dist/esm/utils/requireResolve.d.ts +4 -4
  264. package/dist/esm/utils/requireResolve.js +13 -12
  265. package/dist/esm/utils/updateType.d.ts +3 -0
  266. package/dist/esm/utils/updateType.js +7 -0
  267. package/package.json +6 -6
  268. package/dist/cjs/node/runtime/renderPage/debugPageFiles.js +0 -52
  269. package/dist/cjs/node/shared/virtualFiles/virtualFileEntry.js +0 -31
  270. package/dist/cjs/node/shared/virtualFiles/virtualFilePageConfigLazy.js +0 -45
  271. package/dist/cjs/node/vite/plugins/pluginBuild/pluginAutoFullBuild.js +0 -149
  272. package/dist/cjs/node/vite/shared/applyRegExWithMagicString.js +0 -11
  273. package/dist/cjs/node/vite/shared/isViteServerBuild.js +0 -47
  274. package/dist/cjs/shared/page-configs/loadConfigValues.js +0 -21
  275. package/dist/esm/node/runtime/renderPage/debugPageFiles.d.ts +0 -23
  276. package/dist/esm/node/runtime/renderPage/debugPageFiles.js +0 -47
  277. package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsDev.d.ts +0 -4
  278. package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.d.ts +0 -4
  279. package/dist/esm/node/shared/virtualFiles/virtualFileEntry.d.ts +0 -11
  280. package/dist/esm/node/shared/virtualFiles/virtualFileEntry.js +0 -28
  281. package/dist/esm/node/shared/virtualFiles/virtualFilePageConfigLazy.d.ts +0 -9
  282. package/dist/esm/node/shared/virtualFiles/virtualFilePageConfigLazy.js +0 -43
  283. package/dist/esm/node/vite/plugins/pluginBuild/pluginAutoFullBuild.d.ts +0 -5
  284. package/dist/esm/node/vite/plugins/pluginBuild/pluginAutoFullBuild.js +0 -144
  285. package/dist/esm/node/vite/plugins/pluginVirtualFiles/getVirtualFileEntry.d.ts +0 -5
  286. package/dist/esm/node/vite/plugins/pluginVirtualFiles/getVirtualFilePageConfigLazy.d.ts +0 -3
  287. package/dist/esm/node/vite/plugins/pluginVirtualFiles/getVirtualFilePageConfigsEager.d.ts +0 -2
  288. package/dist/esm/node/vite/shared/applyRegExWithMagicString.d.ts +0 -3
  289. package/dist/esm/node/vite/shared/applyRegExWithMagicString.js +0 -9
  290. package/dist/esm/node/vite/shared/isViteServerBuild.d.ts +0 -15
  291. package/dist/esm/node/vite/shared/isViteServerBuild.js +0 -45
  292. package/dist/esm/node/vite/shared/resolveClientEntriesDev.d.ts +0 -4
  293. package/dist/esm/shared/page-configs/loadConfigValues.d.ts +0 -3
  294. package/dist/esm/shared/page-configs/loadConfigValues.js +0 -19
  295. package/dist/esm/utils/augmentType.d.ts +0 -3
  296. package/dist/esm/utils/augmentType.js +0 -7
  297. /package/dist/cjs/utils/{getTerminWidth.js → getTerminalWidth.js} +0 -0
  298. /package/dist/esm/utils/{getTerminWidth.d.ts → getTerminalWidth.d.ts} +0 -0
  299. /package/dist/esm/utils/{getTerminWidth.js → getTerminalWidth.js} +0 -0
@@ -0,0 +1,107 @@
1
+ export { parseVirtualFileId };
2
+ export { generateVirtualFileId };
3
+ export { virtualFileIdGlobalEntryServer };
4
+ export { virtualFileIdGlobalEntryClientSR };
5
+ export { virtualFileIdGlobalEntryClientCR };
6
+ import { extractAssetsRemoveQuery } from './extractAssetsQuery.js';
7
+ import { assert, assertIsNotBrowser, removeVirtualFileIdPrefix } from './utils.js';
8
+ assertIsNotBrowser();
9
+ // Global entries
10
+ const virtualFileIdGlobalEntryServer =
11
+ //
12
+ 'virtual:vike:global-entry:server';
13
+ const virtualFileIdGlobalEntryClientSR =
14
+ //
15
+ 'virtual:vike:global-entry:client:server-routing';
16
+ const virtualFileIdGlobalEntryClientCR =
17
+ //
18
+ 'virtual:vike:global-entry:client:client-routing';
19
+ // Page entries
20
+ const virtualFileIdPageEntryClient =
21
+ //
22
+ 'virtual:vike:page-entry:client:'; // ${pageId}
23
+ const virtualFileIdPageEntryServer =
24
+ //
25
+ 'virtual:vike:page-entry:server:'; // ${pageId}
26
+ // Virtual ID prefixes
27
+ const virtualFileIdPageEntryPrefix =
28
+ //
29
+ 'virtual:vike:page-entry:';
30
+ const virtualFileIdGlobalEntryPrefix =
31
+ //
32
+ 'virtual:vike:global-entry:';
33
+ const virtualFileIdGlobalEntries = [
34
+ virtualFileIdGlobalEntryServer,
35
+ virtualFileIdGlobalEntryClientCR,
36
+ virtualFileIdGlobalEntryClientSR,
37
+ ];
38
+ assert(virtualFileIdGlobalEntries.every((v) =>
39
+ //
40
+ v.startsWith(virtualFileIdGlobalEntryPrefix)));
41
+ assert([virtualFileIdPageEntryClient, virtualFileIdPageEntryServer].every((v) =>
42
+ //
43
+ v.startsWith(virtualFileIdPageEntryPrefix)));
44
+ function parseVirtualFileId(id) {
45
+ id = removeVirtualFileIdPrefix(id);
46
+ if (!id.startsWith(virtualFileIdGlobalEntryPrefix) && !id.startsWith(virtualFileIdPageEntryPrefix))
47
+ return false;
48
+ // Global entry
49
+ if (id.includes(virtualFileIdGlobalEntryPrefix)) {
50
+ assert(virtualFileIdGlobalEntries.includes(id));
51
+ const isForClientSide = id !== virtualFileIdGlobalEntryServer;
52
+ const isClientRouting = id === virtualFileIdGlobalEntryClientCR;
53
+ return {
54
+ type: 'global-entry',
55
+ isForClientSide,
56
+ isClientRouting,
57
+ };
58
+ }
59
+ // Page entry
60
+ if (id.includes(virtualFileIdPageEntryPrefix)) {
61
+ assert(id.startsWith(virtualFileIdPageEntryPrefix));
62
+ const idOriginal = id;
63
+ id = extractAssetsRemoveQuery(id);
64
+ const isExtractAssets = idOriginal !== id;
65
+ if (id.startsWith(virtualFileIdPageEntryClient)) {
66
+ assert(isExtractAssets === false);
67
+ return {
68
+ type: 'page-entry',
69
+ pageId: id.slice(virtualFileIdPageEntryClient.length),
70
+ isForClientSide: true,
71
+ isExtractAssets,
72
+ };
73
+ }
74
+ if (id.startsWith(virtualFileIdPageEntryServer)) {
75
+ return {
76
+ type: 'page-entry',
77
+ pageId: id.slice(virtualFileIdPageEntryServer.length),
78
+ isForClientSide: false,
79
+ isExtractAssets,
80
+ };
81
+ }
82
+ assert(false);
83
+ }
84
+ return false;
85
+ }
86
+ function generateVirtualFileId(args) {
87
+ if (args.type === 'global-entry') {
88
+ const { isForClientSide, isClientRouting } = args;
89
+ assert(typeof isClientRouting === 'boolean');
90
+ if (!isForClientSide) {
91
+ return virtualFileIdGlobalEntryServer;
92
+ }
93
+ else if (isClientRouting) {
94
+ return virtualFileIdGlobalEntryClientCR;
95
+ }
96
+ else {
97
+ return virtualFileIdGlobalEntryClientSR;
98
+ }
99
+ }
100
+ if (args.type === 'page-entry') {
101
+ const { pageId, isForClientSide } = args;
102
+ assert(typeof pageId === 'string');
103
+ const id = `${isForClientSide ? virtualFileIdPageEntryClient : virtualFileIdPageEntryServer}${pageId}`;
104
+ return id;
105
+ }
106
+ assert(false);
107
+ }
@@ -17,14 +17,14 @@ import { pluginBaseUrls } from './plugins/pluginBaseUrls.js';
17
17
  import { pluginEnvVars } from './plugins/pluginEnvVars.js';
18
18
  import pc from '@brillout/picocolors';
19
19
  import { pluginFileEnv } from './plugins/pluginFileEnv.js';
20
- import { setResolveClientEntriesDev } from '../runtime/renderPage/getPageAssets.js';
21
- import { resolveClientEntriesDev } from './shared/resolveClientEntriesDev.js';
20
+ import { getClientEntrySrcDev } from './shared/getClientEntrySrcDev.js';
22
21
  import { pluginWorkaroundCssModuleHmr } from './plugins/pluginWorkaroundCssModuleHmr.js';
23
22
  import { pluginWorkaroundVite6HmrRegression } from './plugins/pluginWorkaroundVite6HmrRegression.js';
24
23
  import { pluginReplaceConstants } from './plugins/pluginReplaceConstants.js';
25
24
  import { pluginNonRunnableDev } from './plugins/pluginNonRunnableDev.js';
25
+ import { setGetClientEntrySrcDev } from '../runtime/renderPage/getPageAssets/retrievePageAssetsDev.js';
26
26
  // We don't call this in ./onLoad.ts to avoid a cyclic dependency with utils.ts
27
- setResolveClientEntriesDev(resolveClientEntriesDev);
27
+ setGetClientEntrySrcDev(getClientEntrySrcDev);
28
28
  // Return `PluginInterop` instead of `Plugin` to avoid type mismatch upon different Vite versions
29
29
  function plugin(vikeVitePluginOptions = {}) {
30
30
  const plugins = [
@@ -9,9 +9,11 @@ function onLoad() {
9
9
  assertIsNotBrowser();
10
10
  assertNodeVersion();
11
11
  // package.json#peerDependencies isn't enough as users often ignore it
12
- // This assertion isn't reliable: the user may still use a Vite version older than 5.1.0 — see https://github.com/vitejs/vite/pull/19355
13
- // TO-DO/eventually: let's also use this.meta.viteVersion https://github.com/vitejs/vite/pull/20088
14
- assertVersion('Vite', version, '5.1.0');
12
+ // This assertion isn't reliable: the user may still use a Vite version older than 6.0.0 — see https://github.com/vitejs/vite/pull/19355
13
+ // TO-DO/eventually: let's also use this.meta.viteVersion
14
+ // - https://github.com/vitejs/vite/pull/20088
15
+ // - https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md#700-2025-06-24
16
+ assertVersion('Vite', version, '6.0.0');
15
17
  // Ensure we don't bloat the server runtime with heavy dependencies such Vite and esbuild
16
18
  assertIsNotProductionRuntime();
17
19
  }
@@ -3,17 +3,16 @@ export { handleAssetsManifest_getBuildConfig };
3
3
  export { handleAssetsManifest_isFixEnabled };
4
4
  export { handleAssetsManifest_assertUsageCssCodeSplit };
5
5
  export { handleAssetsManifest_assertUsageCssTarget };
6
- import type { Environment, ResolvedConfig, Rollup, UserConfig } from 'vite';
6
+ import type { Environment, ResolvedConfig, Rollup } from 'vite';
7
7
  type Bundle = Rollup.OutputBundle;
8
- declare function handleAssetsManifest_isFixEnabled(config: ResolvedConfig | UserConfig): boolean;
8
+ declare function handleAssetsManifest_isFixEnabled(): boolean;
9
9
  declare function handleAssetsManifest_assertUsageCssCodeSplit(config: ResolvedConfig): void;
10
- declare function handleAssetsManifest_assertUsageCssTarget(config: ResolvedConfig): void;
11
- declare function handleAssetsManifest_getBuildConfig(config: UserConfig): Promise<{
10
+ declare function handleAssetsManifest_assertUsageCssTarget(config: ResolvedConfig, env: Environment): void;
11
+ declare function handleAssetsManifest_getBuildConfig(): Promise<{
12
12
  readonly ssrEmitAssets: true | undefined;
13
13
  readonly cssMinify: "esbuild" | undefined;
14
14
  readonly manifest: true;
15
- readonly copyPublicDir: boolean | undefined;
16
15
  }>;
17
- declare function handleAssetsManifest(config: ResolvedConfig, viteEnv: Environment | undefined, options: {
16
+ declare function handleAssetsManifest(config: ResolvedConfig, viteEnv: Environment, options: {
18
17
  dir: string | undefined;
19
18
  }, bundle: Bundle): Promise<void>;
@@ -7,20 +7,21 @@ import fs from 'node:fs/promises';
7
7
  import fs_sync from 'node:fs';
8
8
  import path from 'node:path';
9
9
  import { existsSync } from 'node:fs';
10
- import { assert, assertIsSingleModuleInstance, assertWarning, isEqualStringList, isObject, pLimit, unique, } from '../../utils.js';
11
- import { isVirtualFileIdPageConfigLazy } from '../../../shared/virtualFiles/virtualFilePageConfigLazy.js';
10
+ import { assert, assertWarning, getGlobalObject, isEqualStringList, isObject, pLimit, unique } from '../../utils.js';
11
+ import { parseVirtualFileId } from '../../../shared/virtualFileId.js';
12
12
  import { getAssetsDir } from '../../shared/getAssetsDir.js';
13
13
  import pc from '@brillout/picocolors';
14
- import { getVikeConfigInternal, isV1Design } from '../../shared/resolveVikeConfigInternal.js';
14
+ import { isV1Design } from '../../shared/resolveVikeConfigInternal.js';
15
15
  import { getOutDirs } from '../../shared/getOutDirs.js';
16
- import { isViteServerBuild_onlySsrEnv, isViteServerBuild } from '../../shared/isViteServerBuild.js';
17
- import { set_macro_ASSETS_MANIFEST } from './pluginBuildEntry.js';
16
+ import { isViteServerSide_onlySsrEnv, isViteServerSide } from '../../shared/isViteServerSide.js';
17
+ import { set_macro_ASSETS_MANIFEST } from './pluginProdBuildEntry.js';
18
18
  import { getManifestFilePathRelative } from '../../shared/getManifestFilePathRelative.js';
19
- assertIsSingleModuleInstance('build/handleAssetsManifest.ts');
20
- let assetsJsonFilePath;
19
+ const globalObject = getGlobalObject('build/handleAssetsManifest.ts', {
20
+ assetsJsonFilePath: undefined,
21
+ });
21
22
  // true => use workaround config.build.ssrEmitAssets
22
23
  // false => use workaround extractAssets plugin
23
- function handleAssetsManifest_isFixEnabled(config) {
24
+ function handleAssetsManifest_isFixEnabled() {
24
25
  // Allow user to toggle between the two workarounds? E.g. based on https://vike.dev/includeAssetsImportedByServer.
25
26
  return isV1Design();
26
27
  }
@@ -33,7 +34,7 @@ async function fixServerAssets(config) {
33
34
  return { clientManifestMod, serverManifestMod };
34
35
  }
35
36
  async function copyAssets(filesToMove, filesToRemove, config) {
36
- const { outDirClient, outDirServer } = getOutDirs(config);
37
+ const { outDirClient, outDirServer } = getOutDirs(config, undefined);
37
38
  const assetsDir = getAssetsDir(config);
38
39
  const assetsDirServer = path.posix.join(outDirServer, assetsDir);
39
40
  if (!filesToMove.length && !filesToRemove.length && !existsSync(assetsDirServer))
@@ -165,13 +166,13 @@ function addServerAssets(clientManifest, serverManifest) {
165
166
  }
166
167
  function getPageId(key) {
167
168
  // Normalize from:
168
- // ../../virtual:vike:pageConfigLazy:client:/pages/index
169
+ // ../../virtual:vike:page-entry:client:/pages/index
169
170
  // to:
170
- // virtual:vike:pageConfigLazy:client:/pages/index
171
+ // virtual:vike:page-entry:client:/pages/index
171
172
  // (This seems to be needed only for vitest tests that use Vite's build() API with an inline config.)
172
173
  key = key.substring(key.indexOf('virtual:vike'));
173
- const result = isVirtualFileIdPageConfigLazy(key);
174
- return result && result.pageId;
174
+ const result = parseVirtualFileId(key);
175
+ return result && result.type === 'page-entry' ? result.pageId : null;
175
176
  }
176
177
  function collectResources(entryRoot, manifest) {
177
178
  const css = [];
@@ -211,15 +212,15 @@ function getHash(src) {
211
212
  }
212
213
  // https://github.com/vikejs/vike/issues/1993
213
214
  function handleAssetsManifest_assertUsageCssCodeSplit(config) {
214
- if (!handleAssetsManifest_isFixEnabled(config))
215
+ if (!handleAssetsManifest_isFixEnabled())
215
216
  return;
216
217
  assertWarning(config.build.cssCodeSplit, `${pc.cyan('build.cssCodeSplit')} shouldn't be set to ${pc.cyan('false')} (https://github.com/vikejs/vike/issues/1993)`, { onlyOnce: true });
217
218
  }
218
219
  const targets = [];
219
- function handleAssetsManifest_assertUsageCssTarget(config) {
220
- if (!handleAssetsManifest_isFixEnabled(config))
220
+ function handleAssetsManifest_assertUsageCssTarget(config, env) {
221
+ if (!handleAssetsManifest_isFixEnabled())
221
222
  return;
222
- const isServerSide = isViteServerBuild(config);
223
+ const isServerSide = isViteServerSide(config, env);
223
224
  assert(typeof isServerSide === 'boolean');
224
225
  assert(config.build.target !== undefined);
225
226
  targets.push({ global: config.build.target, css: config.build.cssTarget, isServerSide });
@@ -278,43 +279,41 @@ async function writeManifestFile(manifest, manifestFilePath) {
278
279
  const manifestFileContent = JSON.stringify(manifest, null, 2);
279
280
  await fs.writeFile(manifestFilePath, manifestFileContent, 'utf-8');
280
281
  }
281
- async function handleAssetsManifest_getBuildConfig(config) {
282
- const vikeConfig = await getVikeConfigInternal();
283
- const isFixEnabled = handleAssetsManifest_isFixEnabled(config);
282
+ async function handleAssetsManifest_getBuildConfig() {
283
+ const isFixEnabled = handleAssetsManifest_isFixEnabled();
284
284
  return {
285
285
  // https://github.com/vikejs/vike/issues/1339
286
286
  ssrEmitAssets: isFixEnabled ? true : undefined,
287
287
  // Required if `ssrEmitAssets: true`, see https://github.com/vitejs/vite/pull/11430#issuecomment-1454800934
288
288
  cssMinify: isFixEnabled ? 'esbuild' : undefined,
289
289
  manifest: true,
290
- copyPublicDir: vikeConfig.config.vite6BuilderApp
291
- ? // Already set by vike:build:pluginBuildApp
292
- undefined
293
- : !isViteServerBuild(config),
290
+ /* Already set by vike:build:pluginBuildApp
291
+ copyPublicDir: !isViteServerSide_viteEnvOptional(config),
292
+ */
294
293
  };
295
294
  }
296
295
  async function handleAssetsManifest(config, viteEnv, options, bundle) {
297
- const isSsrEnv = isViteServerBuild_onlySsrEnv(config, viteEnv);
296
+ const isSsrEnv = isViteServerSide_onlySsrEnv(config, viteEnv);
298
297
  if (isSsrEnv) {
299
- assert(!assetsJsonFilePath);
298
+ assert(!globalObject.assetsJsonFilePath);
300
299
  const outDirs = getOutDirs(config, viteEnv);
301
- assetsJsonFilePath = path.posix.join(outDirs.outDirRoot, 'assets.json');
302
- await writeAssetsManifestFile(assetsJsonFilePath, config);
300
+ globalObject.assetsJsonFilePath = path.posix.join(outDirs.outDirRoot, 'assets.json');
301
+ await writeAssetsManifestFile(globalObject.assetsJsonFilePath, config);
303
302
  }
304
- if (isViteServerBuild(config, viteEnv)) {
303
+ if (isViteServerSide(config, viteEnv)) {
305
304
  const outDir = options.dir;
306
305
  assert(outDir);
307
306
  // Replace __VITE_ASSETS_MANIFEST__ in server builds
308
307
  // - Always replace it in dist/server/
309
308
  // - Also in some other server builds such as dist/vercel/ from vike-vercel
310
309
  // - Don't replace it in dist/rsc/ from vike-react-rsc since __VITE_ASSETS_MANIFEST__ doesn't exist there
311
- const noop = await set_macro_ASSETS_MANIFEST(assetsJsonFilePath, bundle, outDir);
310
+ const noop = await set_macro_ASSETS_MANIFEST(globalObject.assetsJsonFilePath, bundle, outDir);
312
311
  if (isSsrEnv)
313
312
  assert(!noop); // dist/server should always contain __VITE_ASSETS_MANIFEST__
314
313
  }
315
314
  }
316
315
  async function writeAssetsManifestFile(assetsJsonFilePath, config) {
317
- const isFixEnabled = handleAssetsManifest_isFixEnabled(config);
316
+ const isFixEnabled = handleAssetsManifest_isFixEnabled();
318
317
  const clientManifestFilePath = getManifestFilePath(config, true);
319
318
  const serverManifestFilePath = getManifestFilePath(config, false);
320
319
  if (!isFixEnabled) {
@@ -328,7 +327,7 @@ async function writeAssetsManifestFile(assetsJsonFilePath, config) {
328
327
  await fs.rm(serverManifestFilePath);
329
328
  }
330
329
  function getManifestFilePath(config, client) {
331
- const outDirs = getOutDirs(config);
330
+ const outDirs = getOutDirs(config, undefined);
332
331
  const outDir = client ? outDirs.outDirClient : outDirs.outDirServer;
333
332
  const env = client ? config.environments.client : config.environments.ssr;
334
333
  assert(env);
@@ -1,10 +1,22 @@
1
1
  export { pluginBuildApp };
2
2
  import { runPrerender_forceExit } from '../../../prerender/runPrerenderEntry.js';
3
3
  import { resolveOutDir } from '../../shared/getOutDirs.js';
4
- import { assert } from '../../utils.js';
5
- import { isPrerenderForceExit } from './pluginAutoFullBuild.js';
4
+ import { assert, assertWarning, getGlobalObject, onSetupBuild } from '../../utils.js';
5
+ import { isPrerenderAutoRunEnabled, wasPrerenderRun } from '../../../prerender/context.js';
6
+ import { isViteCliCall, getViteConfigFromCli } from '../../shared/isViteCliCall.js';
7
+ import pc from '@brillout/picocolors';
8
+ import { logErrorHint } from '../../../runtime/renderPage/logErrorHint.js';
6
9
  import { getVikeConfigInternal } from '../../shared/resolveVikeConfigInternal.js';
10
+ import { isVikeCliOrApi } from '../../../api/context.js';
11
+ import { handleAssetsManifest, handleAssetsManifest_assertUsageCssTarget } from './handleAssetsManifest.js';
12
+ import { isViteServerSide_onlySsrEnv } from '../../shared/isViteServerSide.js';
13
+ import { runPrerenderFromAutoRun } from '../../../prerender/runPrerenderEntry.js';
14
+ import { getManifestFilePathRelative } from '../../shared/getManifestFilePathRelative.js';
15
+ const globalObject = getGlobalObject('build/pluginBuildApp.ts', {
16
+ forceExit: false,
17
+ });
7
18
  function pluginBuildApp() {
19
+ let config;
8
20
  return [
9
21
  {
10
22
  name: 'vike:build:pluginBuildApp:pre',
@@ -12,10 +24,7 @@ function pluginBuildApp() {
12
24
  enforce: 'pre',
13
25
  config: {
14
26
  order: 'pre',
15
- async handler(_config) {
16
- const vikeConfig = await getVikeConfigInternal();
17
- if (!vikeConfig.config.vite6BuilderApp)
18
- return;
27
+ handler(_config) {
19
28
  return {
20
29
  builder: {
21
30
  // Can be overridden by another plugin e.g vike-vercel https://github.com/vikejs/vike/pull/2184#issuecomment-2659425195
@@ -37,10 +46,7 @@ function pluginBuildApp() {
37
46
  {
38
47
  name: 'vike:build:pluginBuildApp',
39
48
  apply: 'build',
40
- async config(config) {
41
- const vikeConfig = await getVikeConfigInternal();
42
- if (!vikeConfig.config.vite6BuilderApp)
43
- return;
49
+ config(config) {
44
50
  return {
45
51
  environments: {
46
52
  ssr: {
@@ -53,6 +59,7 @@ function pluginBuildApp() {
53
59
  client: {
54
60
  consumer: 'client',
55
61
  build: {
62
+ outDir: resolveOutDir(config, false),
56
63
  copyPublicDir: true,
57
64
  ssr: false,
58
65
  },
@@ -61,5 +68,107 @@ function pluginBuildApp() {
61
68
  };
62
69
  },
63
70
  },
71
+ {
72
+ name: 'vike:build:pluginBuildApp:autoFullBuild:pre',
73
+ apply: 'build',
74
+ enforce: 'pre',
75
+ async configResolved(config_) {
76
+ config = config_;
77
+ await abortViteBuildSsr();
78
+ },
79
+ // TO-DO/eventually: stop using this writeBundle() hack and, instead, use the buildApp() implementation above.
80
+ // - Could it cause issues if a tool uses the writeBundle() hack together with getVikeConfig() ?
81
+ writeBundle: {
82
+ /* We can't use this because it breaks Vite's logging. TO-DO/eventually: try again with latest Vite version.
83
+ sequential: true,
84
+ order: 'pre',
85
+ */
86
+ async handler(options, bundle) {
87
+ try {
88
+ await handleAssetsManifest(config, this.environment, options, bundle);
89
+ await triggerPrerendering(config, this.environment, bundle);
90
+ }
91
+ catch (err) {
92
+ // We use try-catch also because:
93
+ // - Vite/Rollup swallows errors thrown inside the writeBundle() hook. (It doesn't swallow errors thrown inside the first writeBundle() hook while building the client-side, but it does swallow errors thrown inside the second writeBundle() while building the server-side triggered after Vike calls Vite's `build()` API.)
94
+ // - Avoid Rollup prefixing the error with [vike:build:pluginBuildApp], see for example https://github.com/vikejs/vike/issues/472#issuecomment-1276274203
95
+ console.error(err);
96
+ logErrorHint(err);
97
+ process.exit(1);
98
+ }
99
+ },
100
+ },
101
+ },
102
+ {
103
+ name: 'vike:build:pluginBuildApp:autoFullBuild:post',
104
+ apply: 'build',
105
+ enforce: 'post',
106
+ closeBundle: {
107
+ sequential: true,
108
+ order: 'post',
109
+ handler() {
110
+ onSetupBuild();
111
+ handleAssetsManifest_assertUsageCssTarget(config, this.environment);
112
+ /* Let vike:build:pluginBuildApp force exit
113
+ runPrerender_forceExit()
114
+ */
115
+ },
116
+ },
117
+ },
64
118
  ];
65
119
  }
120
+ async function triggerPrerendering(config, viteEnv, bundle) {
121
+ const vikeConfig = await getVikeConfigInternal();
122
+ if (!isViteServerSide_onlySsrEnv(config, viteEnv))
123
+ return;
124
+ if (isDisabled(vikeConfig))
125
+ return;
126
+ // Workaround for @vitejs/plugin-legacy
127
+ // - The legacy plugin triggers its own Rollup build for the client-side.
128
+ // - The legacy plugin doesn't generate a manifest => we can use that to detect the legacy plugin build.
129
+ // - Issue & reproduction: https://github.com/vikejs/vike/issues/1154#issuecomment-1965954636
130
+ if (!bundle[getManifestFilePathRelative(config.build.manifest)])
131
+ return;
132
+ if (!isPrerenderAutoRunEnabled(vikeConfig))
133
+ return;
134
+ const configInline = getFullBuildInlineConfig(config);
135
+ const res = await runPrerenderFromAutoRun(configInline);
136
+ globalObject.forceExit = res.forceExit;
137
+ assert(wasPrerenderRun());
138
+ }
139
+ async function abortViteBuildSsr() {
140
+ const vikeConfig = await getVikeConfigInternal();
141
+ if (vikeConfig.config.disableAutoFullBuild !== true && isViteCliCall() && getViteConfigFromCli()?.build.ssr) {
142
+ assertWarning(false, `The CLI call ${pc.cyan('$ vite build --ssr')} is superfluous since ${pc.cyan('$ vite build')} also builds the server-side. If you want two separate build steps then use https://vike.dev/disableAutoFullBuild or use Vite's ${pc.cyan('build()')} API.`, { onlyOnce: true });
143
+ process.exit(0);
144
+ }
145
+ }
146
+ function isDisabled(vikeConfig) {
147
+ const { disableAutoFullBuild } = vikeConfig.config;
148
+ if (disableAutoFullBuild === undefined || disableAutoFullBuild === 'prerender') {
149
+ const isUserUsingViteApi = !isViteCliCall() && !isVikeCliOrApi();
150
+ return isUserUsingViteApi;
151
+ }
152
+ else {
153
+ return disableAutoFullBuild;
154
+ }
155
+ }
156
+ function isPrerenderForceExit() {
157
+ return globalObject.forceExit;
158
+ }
159
+ function getFullBuildInlineConfig(config) {
160
+ const configFromCli = !isViteCliCall() ? null : getViteConfigFromCli();
161
+ if (config._viteConfigFromUserEnhanced) {
162
+ return config._viteConfigFromUserEnhanced;
163
+ }
164
+ else {
165
+ return {
166
+ ...configFromCli,
167
+ configFile: configFromCli?.configFile || config.configFile,
168
+ root: config.root,
169
+ build: {
170
+ ...configFromCli?.build,
171
+ },
172
+ };
173
+ }
174
+ }
@@ -1,18 +1,17 @@
1
1
  export { pluginBuildConfig };
2
2
  export { assertRollupInput };
3
3
  export { analyzeClientEntries };
4
- import { assert, addOnBeforeLogHook, removeFileExtension, unique, assertUsage, injectRollupInputs, normalizeRollupInput, onSetupBuild, assertIsImportPathNpmPackage, requireResolveVikeDistFile, } from '../../utils.js';
4
+ import { assert, addOnBeforeLogHook, removeFileExtension, unique, assertUsage, injectRollupInputs, normalizeRollupInput, onSetupBuild, assertIsImportPathNpmPackage, requireResolveDistFile, } from '../../utils.js';
5
5
  import { getVikeConfigInternal } from '../../shared/resolveVikeConfigInternal.js';
6
6
  import { findPageFiles } from '../../shared/findPageFiles.js';
7
- import { getVirtualFileIdPageConfigLazy } from '../../../shared/virtualFiles/virtualFilePageConfigLazy.js';
7
+ import { generateVirtualFileId } from '../../../shared/virtualFileId.js';
8
8
  import { extractAssetsAddQuery } from '../../../shared/extractAssetsQuery.js';
9
9
  import { prependEntriesDir } from '../../../shared/prependEntriesDir.js';
10
10
  import { getFilePathResolved } from '../../shared/getFilePath.js';
11
11
  import { getConfigValueBuildTime } from '../../../../shared/page-configs/getConfigValueBuildTime.js';
12
- import { isViteServerBuild } from '../../shared/isViteServerBuild.js';
13
- import { resolveOutDir } from '../../shared/getOutDirs.js';
12
+ import { isViteServerSide_viteEnvOptional } from '../../shared/isViteServerSide.js';
14
13
  import { handleAssetsManifest_assertUsageCssCodeSplit, handleAssetsManifest_getBuildConfig, } from './handleAssetsManifest.js';
15
- import { resolveIncludeAssetsImportedByServer } from '../../../runtime/renderPage/getPageAssets.js';
14
+ import { resolveIncludeAssetsImportedByServer } from '../../../runtime/renderPage/getPageAssets/retrievePageAssetsProd.js';
16
15
  function pluginBuildConfig() {
17
16
  let config;
18
17
  return [
@@ -35,14 +34,10 @@ function pluginBuildConfig() {
35
34
  },
36
35
  config: {
37
36
  order: 'post',
38
- async handler(config) {
37
+ async handler() {
39
38
  onSetupBuild();
40
- return {
41
- build: {
42
- outDir: resolveOutDir(config),
43
- ...(await handleAssetsManifest_getBuildConfig(config)),
44
- },
45
- };
39
+ const build = await handleAssetsManifest_getBuildConfig();
40
+ return { build };
46
41
  },
47
42
  },
48
43
  buildStart() {
@@ -57,7 +52,7 @@ async function getEntries(config) {
57
52
  // TO-DO/next-major-release: remove
58
53
  const pageFileEntries = await getPageFileEntries(config, resolveIncludeAssetsImportedByServer(vikeConfig.config));
59
54
  assertUsage(Object.keys(pageFileEntries).length !== 0 || pageConfigs.length !== 0, 'At least one page should be defined, see https://vike.dev/add');
60
- if (isViteServerBuild(config)) {
55
+ if (isViteServerSide_viteEnvOptional(config)) {
61
56
  const pageEntries = getPageEntries(pageConfigs);
62
57
  const entries = {
63
58
  ...pageFileEntries,
@@ -76,8 +71,8 @@ async function getEntries(config) {
76
71
  ...clientEntries,
77
72
  ...pageFileEntries,
78
73
  };
79
- const clientRoutingEntry = requireResolveVikeDistFile('dist/esm/client/runtime-client-routing/entry.js');
80
- const serverRoutingEntry = requireResolveVikeDistFile('dist/esm/client/runtime-server-routing/entry.js');
74
+ const clientRoutingEntry = requireResolveDistFile('dist/esm/client/runtime-client-routing/entry.js');
75
+ const serverRoutingEntry = requireResolveDistFile('dist/esm/client/runtime-server-routing/entry.js');
81
76
  if (hasClientRouting) {
82
77
  entries['entries/entry-client-routing'] = clientRoutingEntry;
83
78
  }
@@ -130,7 +125,7 @@ function analyzeClientEntries(pageConfigs, config) {
130
125
  // Ensure Rollup creates entries for each page file, see https://github.com/vikejs/vike/issues/350
131
126
  // (Otherwise the page files may be missing in the client manifest.json)
132
127
  async function getPageFileEntries(config, includeAssetsImportedByServer) {
133
- const isForClientSide = !isViteServerBuild(config);
128
+ const isForClientSide = !isViteServerSide_viteEnvOptional(config);
134
129
  const fileTypes = isForClientSide ? ['.page', '.page.client'] : ['.page', '.page.server'];
135
130
  if (isForClientSide && includeAssetsImportedByServer) {
136
131
  fileTypes.push('.page.server');
@@ -174,7 +169,7 @@ function getEntryFromClientEntry(clientEntry, config, addExtractAssetsQuery) {
174
169
  }
175
170
  function getEntryFromPageConfig(pageConfig, isForClientSide) {
176
171
  let { pageId } = pageConfig;
177
- const entryTarget = getVirtualFileIdPageConfigLazy(pageId, isForClientSide);
172
+ const entryTarget = generateVirtualFileId({ type: 'page-entry', pageId, isForClientSide });
178
173
  let entryName = pageId;
179
174
  // Avoid:
180
175
  // ```
@@ -1,14 +1,6 @@
1
- /*
2
- * We create a file `dist/server/package.json` to support ESM users.
3
- * Otherwise, following error is thrown:
4
- * Must use import to load ES Module: dist/server/pageFiles.js
5
- * require() of ES modules is not supported.
6
- * require() of dist/server/pageFiles.js from node_modules/vike/dist/esm/node/runtime/page-files/setup.js is an ES module file as it is a .js file whose nearest parent package.json contains "type": "module" which defines all .js files in that package scope as ES modules.
7
- * Reproduction: https://github.com/brillout/vite-plugin-ssr-server-import-syntax
8
- */
9
1
  export { pluginDistPackageJsonFile };
10
2
  import { rollupIsEsm } from '../../shared/rollupIsEsm.js';
11
- import { isViteServerBuild } from '../../shared/isViteServerBuild.js';
3
+ import { isViteServerSide } from '../../shared/isViteServerSide.js';
12
4
  function pluginDistPackageJsonFile() {
13
5
  let config;
14
6
  return {
@@ -18,7 +10,7 @@ function pluginDistPackageJsonFile() {
18
10
  config = config_;
19
11
  },
20
12
  generateBundle(options, bundle) {
21
- if (!isViteServerBuild(config))
13
+ if (!isViteServerSide(config, this.environment))
22
14
  return;
23
15
  const isEsm = rollupIsEsm(options);
24
16
  const fileName = 'package.json';
@@ -1,7 +1,7 @@
1
1
  export { pluginModuleBanner };
2
- import MagicString from 'magic-string';
3
2
  import { removeVirtualFileIdPrefix } from '../../utils.js';
4
- import { isViteServerBuild_safe } from '../../shared/isViteServerBuild.js';
3
+ import { getMagicString } from '../../shared/getMagicString.js';
4
+ import { isViteServerSide_extraSafe } from '../../shared/isViteServerSide.js';
5
5
  // Rollup's banner feature doesn't work with Vite: https://github.com/vitejs/vite/issues/8412
6
6
  // But, anyways, we want to prepend the banner at the beginning of each module, not at the beginning of each file (I believe that's what Rollup's banner feature does).
7
7
  function pluginModuleBanner() {
@@ -16,7 +16,7 @@ function pluginModuleBanner() {
16
16
  transform: {
17
17
  order: 'post',
18
18
  handler(code, id, options) {
19
- if (!isViteServerBuild_safe(config, options) &&
19
+ if (!isViteServerSide_extraSafe(config, this.environment, options) &&
20
20
  // Inject module banners if user sets `build.minify` to `false` for inspecting dist/client/
21
21
  config.build.minify) {
22
22
  return;
@@ -27,15 +27,12 @@ function pluginModuleBanner() {
27
27
  if (id.startsWith(config.root))
28
28
  id = id.slice(config.root.length + 1);
29
29
  id = id.replaceAll('*/', '*\\/'); // https://github.com/vikejs/vike/issues/2377
30
- const magicString = new MagicString(code);
30
+ const { magicString, getMagicStringResult } = getMagicString(code, id);
31
31
  // Use legal comment so that esbuild doesn't remove it.
32
32
  // - Terser still removes the comment, but I guess users use terser to minify JavaScript so I guess it's a good thing that comment is removed.
33
33
  // - https://esbuild.github.io/api/#legal-comments
34
34
  magicString.prepend(`/*! ${id} [vike:pluginModuleBanner] */\n`);
35
- return {
36
- code: magicString.toString(),
37
- map: magicString.generateMap({ hires: true, source: id }),
38
- };
35
+ return getMagicStringResult();
39
36
  },
40
37
  },
41
38
  };
@@ -1,6 +1,6 @@
1
- export { pluginBuildEntry };
1
+ export { pluginProdBuildEntry };
2
2
  export { set_macro_ASSETS_MANIFEST };
3
3
  import type { Plugin, Rollup } from 'vite';
4
4
  type Bundle = Rollup.OutputBundle;
5
- declare function pluginBuildEntry(): Plugin[];
5
+ declare function pluginProdBuildEntry(): Plugin[];
6
6
  declare function set_macro_ASSETS_MANIFEST(assetsJsonFilePath: string | undefined, bundle: Bundle, outDir: string): Promise<boolean>;