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