vike 0.4.220 → 0.4.221-commit-ab9e52a

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
@@ -2,86 +2,94 @@
2
2
  export { getGlobalContextSync };
3
3
  export { getGlobalContextAsync };
4
4
  // Internal use
5
- export { getGlobalContext };
5
+ export { getGlobalContextInternal };
6
6
  export { getViteDevServer };
7
7
  export { getViteConfig };
8
- export { getRuntimeManifest };
9
8
  export { initGlobalContext_renderPage };
10
9
  export { initGlobalContext_runPrerender };
11
- export { initGlobalContext_getGlobalContextAsync };
10
+ export { initGlobalContext_getPagesAndRoutes };
12
11
  export { setGlobalContext_viteDevServer };
13
12
  export { setGlobalContext_viteConfig };
14
- export { setGlobalContext_vikeConfig };
15
- export { setGlobalContext_isViteDev };
16
13
  export { setGlobalContext_isPrerendering };
14
+ export { setGlobalContext_isProduction };
17
15
  export { setGlobalContext_buildEntry };
18
16
  export { clearGlobalContext };
19
- import { assert, onSetupRuntime, assertUsage, assertWarning, isPlainObject, objectAssign, objectReplace, objectKeys, isObject, hasProp, debugGlob, getGlobalObject, genPromise, createDebugger } from './utils.js';
17
+ export { assertBuildInfo };
18
+ export { getViteConfigRuntime };
19
+ export { updateUserFiles };
20
+ // The core logic revolves around:
21
+ // - globalObject.userFiles which is the main requirement for assembleGlobalContext()
22
+ // - In production: globalObject.buildEntry which is the production entry set by @brillout/vite-plugin-server-entry
23
+ // - loadBuildEntry() sets globalObject.buildEntry and then sets globalObject.userFiles
24
+ // - With vike-server it's set at server start: @brillout/vite-plugin-server-entry injects `import './entry.mjs'` (the production entry generated by @brillout/vite-plugin-server-entry) as first line of code of dist/server/index.mjs while dist/server/entry.mjs calls setGlobalContext_buildEntry()
25
+ // - Without vike-server it's manually loaded here using importServerProductionEntry() which uses @brillout/vite-plugin-server-entry's autoImporter or crawler
26
+ // - In development: globalObject.viteDevServer which is Vite's development server
27
+ // - globalObject.viteDevServer is used by updateUserFiles() which then sets globalConfig.userFiles
28
+ import { assert, onSetupRuntime, assertUsage, assertWarning, isPlainObject, objectAssign, objectReplace, isObject, hasProp, debugGlob, getGlobalObject, genPromise, createDebugger, makePublicCopy, projectInfo, checkType } from './utils.js';
20
29
  import { importServerProductionEntry } from '@brillout/vite-plugin-server-entry/runtime';
21
30
  import { virtualFileIdImportUserCodeServer } from '../shared/virtual-files/virtualFileImportUserCode.js';
22
- import { getPageFilesAll, setPageFiles, setPageFilesAsync } from '../../shared/getPageFiles/getPageFiles.js';
23
- import { assertPluginManifest } from '../shared/assertPluginManifest.js';
24
- import { assertRuntimeManifest } from '../shared/assertRuntimeManifest.js';
25
31
  import pc from '@brillout/picocolors';
26
- import { resolveBaseFromResolvedConfig } from '../shared/resolveBase.js';
27
32
  import { loadPageRoutes } from '../../shared/route/loadPageRoutes.js';
28
33
  import { assertV1Design } from '../shared/assertV1Design.js';
34
+ import { getPageConfigsRuntime } from '../../shared/getPageConfigsRuntime.js';
29
35
  const debug = createDebugger('vike:globalContext');
30
36
  const globalObject = getGlobalObject('globalContext.ts', getInitialGlobalContext());
31
- initDevEntry();
32
- function getGlobalContext() {
33
- if (!globalObject.globalContext) {
34
- debug('getGlobalContext()', new Error().stack);
37
+ async function getGlobalContextInternal() {
38
+ // getGlobalContextInternal() should always be called after initGlobalContext()
39
+ assert(globalObject.isInitialized);
40
+ assertGlobalContextIsDefined();
41
+ if (globalObject.isProduction !== true)
42
+ await globalObject.waitForUserFilesUpdate;
43
+ const { globalContext } = globalObject;
44
+ assertIsDefined(globalContext);
45
+ return globalContext;
46
+ }
47
+ function assertIsDefined(globalContext) {
48
+ if (!globalContext) {
49
+ debug('globalContext', globalContext);
50
+ debug('assertIsDefined()', new Error().stack);
35
51
  assert(false);
36
52
  }
37
- return globalObject.globalContext;
53
+ }
54
+ function assertGlobalContextIsDefined() {
55
+ assertIsDefined(globalObject.globalContext);
56
+ assert(globalObject.globalContext_public);
38
57
  }
39
58
  /** @experimental https://vike.dev/getGlobalContext */
40
59
  function getGlobalContextSync() {
41
- assertUsage(globalObject.globalContext, "The global context isn't set yet, call getGlobalContextSync() later or use getGlobalContextAsync() instead.");
42
- return makePublic(globalObject.globalContext);
60
+ const { globalContext_public } = globalObject;
61
+ assertUsage(globalContext_public, "The global context isn't set yet, call getGlobalContextSync() later or use getGlobalContextAsync() instead.");
62
+ return globalContext_public;
43
63
  }
44
64
  /** @experimental https://vike.dev/getGlobalContext */
45
65
  async function getGlobalContextAsync(isProduction) {
46
66
  assertUsage(typeof isProduction === 'boolean', `[getGlobalContextAsync(isProduction)] Argument ${pc.cyan('isProduction')} ${isProduction === undefined ? 'is missing' : `should be ${pc.cyan('true')} or ${pc.cyan('false')}`}`);
47
- await initGlobalContext_getGlobalContextAsync(isProduction);
48
- const { globalContext } = globalObject;
49
- assert(globalContext);
50
- return makePublic(globalContext);
67
+ setIsProduction(isProduction);
68
+ if (!globalObject.globalContext)
69
+ await initGlobalContext_getGlobalContextAsync();
70
+ if (!isProduction)
71
+ await globalObject.waitForUserFilesUpdate;
72
+ assertGlobalContextIsDefined();
73
+ const { globalContext_public } = globalObject;
74
+ assert(globalContext_public);
75
+ return globalContext_public;
51
76
  }
52
77
  function makePublic(globalContext) {
53
- const globalContextPublic = {
54
- // TODO/now: add viteConfig and vikeConfig
55
- assetsManifest: globalContext.assetsManifest
56
- };
57
- // Add internals (and prepended _ prefix to their keys)
58
- {
59
- const publicKeys = Object.keys(globalContextPublic);
60
- objectKeys(globalContext)
61
- .filter((key) => !publicKeys.includes(key))
62
- .forEach((key) => {
63
- const keyPublic = `_${key}`;
64
- Object.defineProperty(globalContextPublic, keyPublic, {
65
- enumerable: true,
66
- get() {
67
- assertWarning(false, `Using internal globalContext.${keyPublic} which is discouraged: it may break in any minor version update. Instead, reach out on GitHub and elaborate your use case.`, {
68
- onlyOnce: true
69
- });
70
- return globalContext[key];
71
- }
72
- });
73
- });
74
- }
78
+ // TODO/soon: add `pages`
79
+ const globalContextPublic = makePublicCopy(globalContext, 'globalContext', ['assetsManifest', 'config', 'viteConfig']);
75
80
  return globalContextPublic;
76
81
  }
77
- function setGlobalContext_viteDevServer(viteDevServer) {
82
+ async function setGlobalContext_viteDevServer(viteDevServer) {
83
+ debug('setGlobalContext_viteDevServer()');
84
+ setIsProduction(false);
78
85
  if (globalObject.viteDevServer)
79
86
  return;
80
87
  assertIsNotInitilizedYet();
81
88
  assert(globalObject.viteConfig);
82
89
  globalObject.viteDevServer = viteDevServer;
90
+ await updateUserFiles();
91
+ assertGlobalContextIsDefined();
83
92
  globalObject.viteDevServerPromiseResolve(viteDevServer);
84
- eagerlyLoadUserFiles();
85
93
  }
86
94
  function setGlobalContext_viteConfig(viteConfig, outDirRoot) {
87
95
  if (globalObject.viteConfig)
@@ -90,21 +98,16 @@ function setGlobalContext_viteConfig(viteConfig, outDirRoot) {
90
98
  globalObject.viteConfig = viteConfig;
91
99
  globalObject.outDirRoot = outDirRoot;
92
100
  }
93
- function setGlobalContext_vikeConfig(vikeConfig) {
94
- if (globalObject.vikeConfig)
95
- return;
96
- assertIsNotInitilizedYet();
97
- globalObject.vikeConfig = vikeConfig;
98
- }
99
101
  function assertIsNotInitilizedYet() {
100
- // In develpoment, globalObject.viteDevServer always needs to be awaited for before initializing globalObject.globalContext
102
+ // In development, globalObject.viteDevServer always needs to be awaited for before initializing globalObject.globalContext
101
103
  assert(!globalObject.globalContext);
102
104
  }
103
- function setGlobalContext_isViteDev(isViteDev) {
104
- globalObject.isViteDev = isViteDev;
105
- }
106
105
  function setGlobalContext_isPrerendering() {
107
106
  globalObject.isPrerendering = true;
107
+ setIsProduction(true);
108
+ }
109
+ function setGlobalContext_isProduction(isProduction) {
110
+ setIsProduction(isProduction);
108
111
  }
109
112
  function getViteDevServer() {
110
113
  return globalObject.viteDevServer ?? null;
@@ -114,10 +117,15 @@ function getViteConfig() {
114
117
  }
115
118
  async function initGlobalContext_renderPage() {
116
119
  debug('initGlobalContext_renderPage()');
117
- await initGlobalContext(!globalObject.isViteDev);
120
+ // globalObject.isProduction isn't set upon production server without vike-server (there isn't any signal we can use)
121
+ if (globalObject.isProduction === undefined)
122
+ setIsProduction(true);
123
+ await initGlobalContext();
118
124
  }
119
125
  async function initGlobalContext_runPrerender() {
120
126
  debug('initGlobalContext_runPrerender()');
127
+ assert(globalObject.isPrerendering === true);
128
+ assert(globalObject.isProduction === true);
121
129
  if (globalObject.initGlobalContext_runPrerender_alreadyCalled)
122
130
  return;
123
131
  globalObject.initGlobalContext_runPrerender_alreadyCalled = true;
@@ -127,99 +135,122 @@ async function initGlobalContext_runPrerender() {
127
135
  // We assume initGlobalContext_runPrerender() to be called before:
128
136
  // - initGlobalContext_renderPage()
129
137
  // - initGlobalContext_getGlobalContextAsync()
130
- assert(!globalObject.globalContext);
131
- await initGlobalContext(true);
138
+ assertIsNotInitilizedYet();
139
+ await initGlobalContext();
132
140
  }
133
- async function initGlobalContext_getGlobalContextAsync(isProduction) {
141
+ async function initGlobalContext_getGlobalContextAsync() {
134
142
  debug('initGlobalContext_getGlobalContextAsync()');
143
+ await initGlobalContext();
144
+ }
145
+ async function initGlobalContext_getPagesAndRoutes() {
146
+ debug('initGlobalContext_getPagesAndRoutes()');
147
+ setIsProduction(true);
148
+ await initGlobalContext();
149
+ }
150
+ async function waitForViteDevServer() {
151
+ debug('waitForViteDevServer()');
152
+ const waitFor = 20;
153
+ const timeout = setTimeout(() => {
154
+ assertWarning(false, `Vite's development server still not created after ${waitFor} seconds.`, {
155
+ onlyOnce: false,
156
+ showStackTrace: true
157
+ });
158
+ }, waitFor * 1000);
159
+ await globalObject.viteDevServerPromise;
160
+ clearTimeout(timeout);
161
+ assertGlobalContextIsDefined();
162
+ }
163
+ async function initGlobalContext() {
164
+ const { isProduction } = globalObject;
165
+ assert(typeof isProduction === 'boolean');
135
166
  if (!isProduction) {
136
- const waitFor = 20;
137
- const timeout = setTimeout(() => {
138
- assertWarning(false, `Vite's development server still not created after ${waitFor} seconds.`, {
139
- onlyOnce: false,
140
- showStackTrace: true
141
- });
142
- }, waitFor * 1000);
143
- await globalObject.viteDevServerPromise;
144
- clearTimeout(timeout);
167
+ await waitForViteDevServer();
145
168
  }
146
- await initGlobalContext(isProduction);
147
- }
148
- // TODO/now: refactor: move this to the top of the file
149
- async function initGlobalContext(isProduction) {
150
- if (globalObject.globalContext) {
151
- assert(globalObject.globalContext.isProduction === isProduction);
152
- // We assume setGlobalContext_isPrerendering() is called before initGlobalContext()
153
- assert(globalObject.globalContext.isPrerendering === (globalObject.isPrerendering ?? false));
154
- return;
169
+ else {
170
+ await loadBuildEntry(globalObject.outDirRoot);
155
171
  }
156
- const { viteDevServer, viteConfig, vikeConfig, isPrerendering } = globalObject;
172
+ assertGlobalContextIsDefined();
173
+ globalObject.isInitialized = true;
174
+ }
175
+ function setIsProduction(isProduction) {
176
+ debug('setIsProduction', isProduction);
177
+ assert(typeof isProduction === 'boolean');
178
+ if (globalObject.isProduction !== undefined)
179
+ assert(globalObject.isProduction === isProduction);
180
+ globalObject.isProduction = isProduction;
181
+ }
182
+ function defineGlobalContext() {
183
+ const globalContext = assembleGlobalContext();
184
+ assertIsDefined(globalContext);
185
+ const globalContext_public = makePublic(globalContext);
186
+ objectAssign(globalContext, { globalContext_public });
187
+ globalObject.globalContext = globalContext;
188
+ globalObject.globalContext_public = globalContext_public;
189
+ assertGlobalContextIsDefined();
157
190
  onSetupRuntime();
191
+ }
192
+ function assembleGlobalContext() {
193
+ const { viteDevServer, viteConfig, isPrerendering, isProduction, userFiles } = globalObject;
194
+ assert(typeof isProduction === 'boolean');
195
+ let globalContext;
158
196
  if (!isProduction) {
197
+ // Requires globalObject.viteDevServer
198
+ if (!viteDevServer)
199
+ return null;
200
+ assert(userFiles); // main common requiement
159
201
  assert(viteConfig);
160
- assert(vikeConfig);
161
- assert(viteDevServer);
162
202
  assert(!isPrerendering);
163
- const { globalConfig, userFiles } = await getPageRuntimeInfo(isProduction);
164
- const pluginManifest = getRuntimeManifest(vikeConfig.vikeConfigGlobal, viteConfig);
165
- globalObject.globalContext = {
203
+ const viteConfigRuntime = getViteConfigRuntime(viteConfig);
204
+ globalContext = {
166
205
  isProduction: false,
167
206
  isPrerendering: false,
168
207
  assetsManifest: null,
169
208
  viteDevServer,
170
209
  viteConfig,
171
- vikeConfig: {
172
- global: globalConfig
173
- },
174
210
  ...userFiles,
175
- baseServer: pluginManifest.baseServer,
176
- baseAssets: pluginManifest.baseAssets,
177
- includeAssetsImportedByServer: pluginManifest.includeAssetsImportedByServer,
178
- trailingSlash: pluginManifest.trailingSlash,
179
- disableUrlNormalization: pluginManifest.disableUrlNormalization
211
+ viteConfigRuntime
180
212
  };
181
213
  }
182
214
  else {
183
- const buildEntry = await getBuildEntry(globalObject.outDirRoot, isPrerendering);
184
- const { assetsManifest, pluginManifest } = buildEntry;
185
- setPageFiles(buildEntry.pageFiles);
186
- const { globalConfig, userFiles } = await getPageRuntimeInfo(isProduction);
187
- assertViteManifest(assetsManifest);
188
- assertPluginManifest(pluginManifest);
189
- const globalContext = {
215
+ // Requires globalObject.buildEntry
216
+ if (!globalObject.buildEntry)
217
+ return null;
218
+ assert(userFiles); // main common requiement
219
+ const { buildInfo, assetsManifest } = globalObject;
220
+ assert(buildInfo);
221
+ assert(assetsManifest);
222
+ const globalContext_ = {
190
223
  isProduction: true,
191
224
  assetsManifest,
192
- vikeConfig: {
193
- global: globalConfig
194
- },
195
225
  ...userFiles,
196
226
  viteDevServer: null,
197
- baseServer: pluginManifest.baseServer,
198
- baseAssets: pluginManifest.baseAssets,
199
- includeAssetsImportedByServer: pluginManifest.includeAssetsImportedByServer,
200
- trailingSlash: pluginManifest.trailingSlash,
201
- usesClientRouter: pluginManifest.usesClientRouter,
202
- disableUrlNormalization: pluginManifest.disableUrlNormalization
227
+ viteConfigRuntime: buildInfo.viteConfigRuntime,
228
+ usesClientRouter: buildInfo.usesClientRouter
203
229
  };
204
230
  if (isPrerendering) {
205
231
  assert(viteConfig);
206
- objectAssign(globalContext, {
232
+ objectAssign(globalContext_, {
207
233
  isPrerendering: true,
208
234
  viteConfig
209
235
  });
210
- globalObject.globalContext = globalContext;
236
+ globalContext = globalContext_;
211
237
  }
212
238
  else {
213
- objectAssign(globalContext, {
239
+ objectAssign(globalContext_, {
214
240
  isPrerendering: false,
215
241
  viteConfig: null
216
242
  });
217
- globalObject.globalContext = globalContext;
243
+ globalContext = globalContext_;
218
244
  }
219
245
  }
246
+ return globalContext;
220
247
  }
221
- async function getPageRuntimeInfo(isProduction) {
222
- const { pageFilesAll, allPageIds, pageConfigs, pageConfigGlobal, globalConfig } = await getPageFilesAll(false, isProduction);
248
+ async function getUserFiles() {
249
+ // Help TypeScript resolve what TypeScript (wrongfully) believes to be cyclic dependency
250
+ const globalObject_ = globalObject;
251
+ const { pageConfigsRuntime } = globalObject_;
252
+ assert(pageConfigsRuntime);
253
+ const { pageFilesAll, allPageIds, pageConfigs, pageConfigGlobal, globalConfig } = pageConfigsRuntime;
223
254
  const { pageRoutes, onBeforeRouteHook } = await loadPageRoutes(pageFilesAll, pageConfigs, pageConfigGlobal, allPageIds);
224
255
  const userFiles = {
225
256
  pageFilesAll,
@@ -227,25 +258,13 @@ async function getPageRuntimeInfo(isProduction) {
227
258
  pageConfigGlobal,
228
259
  allPageIds,
229
260
  pageRoutes,
230
- onBeforeRouteHook
261
+ onBeforeRouteHook,
262
+ config: globalConfig.config
231
263
  };
232
264
  assertV1Design(
233
265
  // pageConfigs is PageConfigRuntime[] but assertV1Design() requires PageConfigBuildTime[]
234
266
  pageConfigs.length > 0, pageFilesAll);
235
- return { userFiles, globalConfig };
236
- }
237
- function getRuntimeManifest(vikeConfigGlobal, viteConfig) {
238
- const { includeAssetsImportedByServer, trailingSlash, disableUrlNormalization } = vikeConfigGlobal;
239
- const { baseServer, baseAssets } = resolveBaseFromResolvedConfig(vikeConfigGlobal.baseServer, vikeConfigGlobal.baseAssets, viteConfig);
240
- const manifest = {
241
- baseServer,
242
- baseAssets,
243
- includeAssetsImportedByServer,
244
- trailingSlash,
245
- disableUrlNormalization
246
- };
247
- assertRuntimeManifest(manifest);
248
- return manifest;
267
+ return userFiles;
249
268
  }
250
269
  function assertViteManifest(manifest) {
251
270
  assert(isPlainObject(manifest));
@@ -260,54 +279,107 @@ function assertViteManifest(manifest) {
260
279
  })
261
280
  */
262
281
  }
263
- function eagerlyLoadUserFiles() {
264
- // Other than here, the getPageFilesExports() function is only called only upon calling the renderPage() function.
265
- // We call it as early as possible here for better performance.
266
- getPageFilesExports();
267
- }
268
- async function getBuildEntry(outDir, isPrerendering) {
269
- debug('getBuildEntry()');
282
+ async function loadBuildEntry(outDir) {
283
+ debug('loadBuildEntry()');
284
+ if (globalObject.userFiles) {
285
+ assert(globalObject.buildInfo);
286
+ assert(globalObject.assetsManifest);
287
+ assert(globalObject.buildEntry);
288
+ return;
289
+ }
270
290
  if (!globalObject.buildEntry) {
271
291
  debug('importServerProductionEntry()');
272
292
  // importServerProductionEntry() loads dist/server/entry.mjs which calls setGlobalContext_buildEntry()
273
- await importServerProductionEntry({ outDir, doNotLoadServer: isPrerendering });
293
+ await importServerProductionEntry({ outDir });
274
294
  if (!globalObject.buildEntry) {
275
295
  debug('globalObject.buildEntryPrevious');
276
296
  // Needed, for example, when calling the API prerender() then preview() because both trigger a importServerProductionEntry() call but only the first only is applied because of the import() cache. (A proper implementation would be to clear the import() cache, but it probably isn't possible on platforms such as Cloudflare Workers.)
277
297
  globalObject.buildEntry = globalObject.buildEntryPrevious;
278
298
  }
279
299
  assert(globalObject.buildEntry);
300
+ assertWarning(!globalObject.buildInfo?.viteConfigRuntime.vitePluginServerEntry.inject,
301
+ // TODO/soon: show precise path
302
+ // TODO/soon: make this warning work on test/vike-node/
303
+ `Run the server production build (e.g. ${pc.cyan('$ node dist/server/index.mjs')}) instead of running the original server entry (e.g. ${pc.cyan('$ ts-node server/index.ts')})`, { onlyOnce: true });
280
304
  }
281
305
  const { buildEntry } = globalObject;
282
- assert(isObject(buildEntry));
283
- assert(hasProp(buildEntry, 'pageFiles', 'object'));
284
- assert(hasProp(buildEntry, 'assetsManifest', 'object'));
285
- assert(hasProp(buildEntry, 'pluginManifest', 'object'));
286
- return buildEntry;
306
+ assertBuildEntry(buildEntry);
307
+ globalObject.assetsManifest = buildEntry.assetsManifest;
308
+ globalObject.buildInfo = buildEntry.buildInfo;
309
+ await setUserFiles(buildEntry.virtualFileExports);
287
310
  }
288
- function setGlobalContext_buildEntry(buildEntry) {
311
+ async function setGlobalContext_buildEntry(buildEntry) {
289
312
  debug('setGlobalContext_buildEntry()');
313
+ setIsProduction(true);
314
+ assertBuildEntry(buildEntry);
290
315
  globalObject.buildEntry = buildEntry;
291
316
  globalObject.buildEntryPrevious = buildEntry;
317
+ assert(globalObject.buildEntry); // ensure no infinite loop
318
+ await loadBuildEntry();
319
+ assertGlobalContextIsDefined();
320
+ }
321
+ function assertBuildEntry(buildEntry) {
322
+ assert(isObject(buildEntry));
323
+ assert(hasProp(buildEntry, 'virtualFileExports', 'object'));
324
+ const { virtualFileExports } = buildEntry;
325
+ assert(hasProp(buildEntry, 'assetsManifest', 'object'));
326
+ const { assetsManifest } = buildEntry;
327
+ assertViteManifest(assetsManifest);
328
+ assert(hasProp(buildEntry, 'buildInfo', 'object'));
329
+ const { buildInfo } = buildEntry;
330
+ assertBuildInfo(buildInfo);
331
+ checkType({ virtualFileExports, assetsManifest, buildInfo });
292
332
  }
293
- function initDevEntry() {
294
- setPageFilesAsync(getPageFilesExports);
333
+ function assertBuildInfo(buildInfo) {
334
+ assert(isObject(buildInfo));
335
+ assert(hasProp(buildInfo, 'versionAtBuildTime', 'string'));
336
+ assertVersionAtBuildTime(buildInfo.versionAtBuildTime);
337
+ assert(hasProp(buildInfo, 'viteConfigRuntime', 'object'));
338
+ assert(hasProp(buildInfo.viteConfigRuntime, '_baseViteOriginal', 'string'));
339
+ assert(hasProp(buildInfo.viteConfigRuntime, 'vitePluginServerEntry', 'object'));
340
+ assert(hasProp(buildInfo, 'usesClientRouter', 'boolean'));
341
+ checkType({ ...buildInfo, viteConfigRuntime: buildInfo.viteConfigRuntime });
295
342
  }
296
- async function getPageFilesExports() {
343
+ function assertVersionAtBuildTime(versionAtBuildTime) {
344
+ const versionAtRuntime = projectInfo.projectVersion;
345
+ const pretty = (version) => pc.bold(`vike@${version}`);
346
+ assertUsage(versionAtBuildTime === versionAtRuntime, `Re-build your app (you're using ${pretty(versionAtRuntime)} but your app was built with ${pretty(versionAtBuildTime)})`);
347
+ }
348
+ function getViteConfigRuntime(viteConfig) {
349
+ assert(hasProp(viteConfig, '_baseViteOriginal', 'string'));
350
+ const viteConfigRuntime = {
351
+ _baseViteOriginal: viteConfig._baseViteOriginal,
352
+ vitePluginServerEntry: {
353
+ inject: viteConfig.vitePluginServerEntry?.inject
354
+ }
355
+ };
356
+ return viteConfigRuntime;
357
+ }
358
+ async function updateUserFiles() {
359
+ const { promise, resolve } = genPromise();
360
+ assert(!globalObject.isProduction);
361
+ globalObject.waitForUserFilesUpdate = promise;
297
362
  const viteDevServer = getViteDevServer();
298
363
  assert(viteDevServer);
299
- let moduleExports;
364
+ let virtualFileExports;
300
365
  try {
301
- moduleExports = await viteDevServer.ssrLoadModule(virtualFileIdImportUserCodeServer);
366
+ virtualFileExports = await viteDevServer.ssrLoadModule(virtualFileIdImportUserCodeServer);
302
367
  }
303
368
  catch (err) {
304
369
  debugGlob(`Glob error: ${virtualFileIdImportUserCodeServer} transpile error: `, err);
305
370
  throw err;
306
371
  }
307
- moduleExports = moduleExports.default || moduleExports;
308
- debugGlob('Glob result: ', moduleExports);
309
- assert(isObject(moduleExports));
310
- return moduleExports;
372
+ virtualFileExports = virtualFileExports.default || virtualFileExports;
373
+ debugGlob('Glob result: ', virtualFileExports);
374
+ await setUserFiles(virtualFileExports);
375
+ resolve();
376
+ }
377
+ async function setUserFiles(virtualFileExports) {
378
+ globalObject.pageConfigsRuntime = getPageConfigsRuntime(virtualFileExports);
379
+ const userFiles = await getUserFiles();
380
+ globalObject.userFiles = userFiles;
381
+ defineGlobalContext();
382
+ assertGlobalContextIsDefined();
311
383
  }
312
384
  function clearGlobalContext() {
313
385
  debug('clearGlobalContext()');
@@ -29,4 +29,4 @@ type HtmlTag = {
29
29
  };
30
30
  declare function getHtmlTags(pageContext: {
31
31
  _isStream: boolean;
32
- } & PageContextInjectAssets, streamFromReactStreamingPackage: null | StreamFromReactStreamingPackage, injectFilter: PreloadFilter, pageAssets: PageAsset[], viteDevScript: string, isStream: boolean): HtmlTag[];
32
+ } & PageContextInjectAssets, streamFromReactStreamingPackage: null | StreamFromReactStreamingPackage, injectFilter: PreloadFilter, pageAssets: PageAsset[], viteDevScript: string, isStream: boolean): Promise<HtmlTag[]>;
@@ -1,3 +1,4 @@
1
+ import { isFontFallback } from '../../renderPage/isFontFallback.js';
1
2
  export { getHtmlTags };
2
3
  import { assert, assertWarning, assertUsage, isObject, freezePartial } from '../../utils.js';
3
4
  import { serializePageContextClientSide } from '../serializePageContextClientSide.js';
@@ -6,16 +7,16 @@ import { inferAssetTag, inferPreloadTag } from './inferHtmlTags.js';
6
7
  import { mergeScriptTags } from './mergeScriptTags.js';
7
8
  import { getPageConfig } from '../../../../shared/page-configs/helpers.js';
8
9
  import { getConfigValueRuntime } from '../../../../shared/page-configs/getConfigValueRuntime.js';
9
- import { getGlobalContext } from '../../globalContext.js';
10
10
  import pc from '@brillout/picocolors';
11
11
  import { getConfigDefinedAt } from '../../../../shared/page-configs/getConfigDefinedAt.js';
12
12
  const stamp = '__injectFilterEntry';
13
- function getHtmlTags(pageContext, streamFromReactStreamingPackage, injectFilter, pageAssets, viteDevScript, isStream) {
13
+ async function getHtmlTags(pageContext, streamFromReactStreamingPackage, injectFilter, pageAssets, viteDevScript, isStream) {
14
14
  assert([true, false].includes(pageContext._isHtmlOnly));
15
15
  const isHtmlOnly = pageContext._isHtmlOnly;
16
- const { isProduction } = getGlobalContext();
16
+ const { isProduction } = pageContext._globalContext;
17
17
  const injectScriptsAt = getInjectScriptsAt(pageContext.pageId, pageContext._pageConfigs);
18
- const injectFilterEntries = pageAssets
18
+ const injectFilterEntries = [];
19
+ pageAssets
19
20
  .filter((asset) => {
20
21
  if (asset.isEntry && asset.assetType === 'script') {
21
22
  // We could allow the user to change the position of <script> but we currently don't:
@@ -26,15 +27,18 @@ function getHtmlTags(pageContext, streamFromReactStreamingPackage, injectFilter,
26
27
  }
27
28
  return true;
28
29
  })
29
- .map((asset) => {
30
+ .forEach((asset) => {
30
31
  const inject = (() => {
31
32
  if (!isProduction) {
32
33
  // In development, we should always load assets as soon as possible, in order to eagerly process assets (e.g. applying the transform() hooks of Vite plugins) which are lazily discovered.
33
34
  return 'HTML_BEGIN';
34
35
  }
35
- if (asset.assetType === 'style' || asset.assetType === 'font') {
36
+ if (asset.assetType === 'style') {
36
37
  return 'HTML_BEGIN';
37
38
  }
39
+ if (asset.assetType === 'font') {
40
+ return !isFontFallback(asset, injectFilterEntries) ? 'HTML_BEGIN' : false;
41
+ }
38
42
  if (asset.assetType === 'script') {
39
43
  if (isHtmlOnly)
40
44
  return false;
@@ -48,7 +52,7 @@ function getHtmlTags(pageContext, streamFromReactStreamingPackage, injectFilter,
48
52
  // @ts-ignore
49
53
  [stamp]: true
50
54
  };
51
- return entry;
55
+ injectFilterEntries.push(entry);
52
56
  });
53
57
  assertInjectFilterEntries(injectFilterEntries);
54
58
  // ==============
@@ -1,2 +1,5 @@
1
1
  export { getViteDevScript };
2
- declare function getViteDevScript(): Promise<string>;
2
+ import type { GlobalContext } from '../../globalContext.js';
3
+ declare function getViteDevScript(pageContext: {
4
+ _globalContext: GlobalContext;
5
+ }): Promise<string>;
@@ -1,9 +1,8 @@
1
1
  export { getViteDevScript };
2
- import { getGlobalContext } from '../../globalContext.js';
3
2
  import { assert, assertUsage, assertWarning } from '../../utils.js';
4
3
  import pc from '@brillout/picocolors';
5
- async function getViteDevScript() {
6
- const globalContext = getGlobalContext();
4
+ async function getViteDevScript(pageContext) {
5
+ const globalContext = pageContext._globalContext;
7
6
  if (globalContext.isProduction) {
8
7
  return '';
9
8
  }
@@ -8,6 +8,7 @@ import { type PreloadFilter } from './injectAssets/getHtmlTags.js';
8
8
  import type { StreamFromReactStreamingPackage } from './stream/react-streaming.js';
9
9
  import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
10
10
  import type { PageContextSerialization } from './serializePageContextClientSide.js';
11
+ import type { GlobalContext } from '../globalContext.js';
11
12
  type PageContextInjectAssets = {
12
13
  urlPathname: string;
13
14
  __getPageAssets: () => Promise<PageAsset[]>;
@@ -21,6 +22,7 @@ type PageContextInjectAssets = {
21
22
  _baseServer: string;
22
23
  _pageConfigs: PageConfigRuntime[];
23
24
  is404: null | boolean;
25
+ _globalContext: GlobalContext;
24
26
  } & PageContextSerialization;
25
27
  declare function injectHtmlTagsToString(htmlParts: HtmlPart[], pageContext: PageContextInjectAssets & {
26
28
  _isStream: false;
@@ -7,8 +7,8 @@ import { getHtmlTags } from './injectAssets/getHtmlTags.js';
7
7
  import { getViteDevScript } from './injectAssets/getViteDevScript.js';
8
8
  async function injectHtmlTagsToString(htmlParts, pageContext, injectFilter) {
9
9
  const pageAssets = await pageContext.__getPageAssets();
10
- const viteDevScript = await getViteDevScript();
11
- const htmlTags = getHtmlTags(pageContext, null, injectFilter, pageAssets, viteDevScript, false);
10
+ const viteDevScript = await getViteDevScript(pageContext);
11
+ const htmlTags = await getHtmlTags(pageContext, null, injectFilter, pageAssets, viteDevScript, false);
12
12
  let htmlString = htmlPartsToString(htmlParts, pageAssets);
13
13
  htmlString = injectToHtmlBegin(htmlString, htmlTags);
14
14
  htmlString = injectToHtmlEnd(htmlString, htmlTags);
@@ -24,8 +24,8 @@ function injectHtmlTagsToStream(pageContext, streamFromReactStreamingPackage, in
24
24
  };
25
25
  async function injectAtStreamBegin(htmlPartsBegin) {
26
26
  const pageAssets = await pageContext.__getPageAssets();
27
- const viteDevScript = await getViteDevScript();
28
- htmlTags = getHtmlTags(pageContext, streamFromReactStreamingPackage, injectFilter, pageAssets, viteDevScript, true);
27
+ const viteDevScript = await getViteDevScript(pageContext);
28
+ htmlTags = await getHtmlTags(pageContext, streamFromReactStreamingPackage, injectFilter, pageAssets, viteDevScript, true);
29
29
  let htmlBegin = htmlPartsToString(htmlPartsBegin, pageAssets);
30
30
  htmlBegin = injectToHtmlBegin(htmlBegin, htmlTags);
31
31
  if (streamFromReactStreamingPackage) {