vike 0.4.220 → 0.4.221-commit-8577456

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (296) hide show
  1. package/dist/cjs/__internal/index.js +5 -23
  2. package/dist/cjs/node/api/build.js +33 -24
  3. package/dist/cjs/node/api/context.js +6 -8
  4. package/dist/cjs/node/api/prepareViteApiCall.js +23 -21
  5. package/dist/cjs/node/api/prerender.js +1 -0
  6. package/dist/cjs/node/api/utils.js +2 -1
  7. package/dist/cjs/node/cli/context.js +16 -0
  8. package/dist/cjs/node/cli/entry.js +2 -0
  9. package/dist/cjs/node/cli/utils.js +1 -0
  10. package/dist/cjs/node/plugin/index.js +4 -8
  11. package/dist/cjs/node/plugin/onLoad.js +6 -1
  12. package/dist/cjs/node/plugin/plugins/autoFullBuild.js +34 -33
  13. package/dist/cjs/node/plugin/plugins/baseUrls.js +2 -2
  14. package/dist/cjs/node/plugin/plugins/buildApp.js +72 -0
  15. package/dist/cjs/node/plugin/plugins/buildConfig/fixServerAssets.js +12 -12
  16. package/dist/cjs/node/plugin/plugins/buildConfig.js +17 -12
  17. package/dist/cjs/node/plugin/plugins/buildEntry/index.js +28 -24
  18. package/dist/cjs/node/plugin/plugins/commonConfig.js +9 -7
  19. package/dist/cjs/node/plugin/plugins/extractAssetsPlugin.js +7 -4
  20. package/dist/cjs/node/plugin/plugins/extractExportNamesPlugin.js +2 -1
  21. package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +15 -10
  22. package/dist/cjs/node/plugin/plugins/importUserCode/index.js +11 -6
  23. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/{assertExtensions.js → getVikeConfig/assertExtensions.js} +41 -36
  24. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +59 -22
  25. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/{getConfigFileExport.js → getVikeConfig/getConfigFileExport.js} +2 -2
  26. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.js +159 -0
  27. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +40 -23
  28. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.js +9 -64
  29. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +11 -5
  30. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +403 -590
  31. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/{debug.js → virtual-files/debug.js} +1 -1
  32. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/{getVirtualFilePageConfigValuesAll.js → virtual-files/getVirtualFilePageConfigValuesAll.js} +12 -9
  33. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/{getVirtualFilePageConfigs.js → virtual-files/getVirtualFilePageConfigs.js} +13 -11
  34. package/dist/cjs/node/plugin/plugins/packageJsonFile.js +2 -2
  35. package/dist/cjs/node/plugin/plugins/previewConfig.js +7 -7
  36. package/dist/cjs/node/plugin/plugins/setGlobalContext.js +3 -5
  37. package/dist/cjs/node/plugin/shared/findPageFiles.js +2 -1
  38. package/dist/cjs/node/plugin/shared/getFullBuildInlineConfig.js +20 -0
  39. package/dist/cjs/{utils → node/plugin/shared}/getOutDirs.js +70 -61
  40. package/dist/cjs/node/plugin/{resolveClientEntriesDev.js → shared/resolveClientEntriesDev.js} +5 -8
  41. package/dist/cjs/{utils → node/plugin/shared}/viteIsSSR.js +2 -2
  42. package/dist/cjs/node/plugin/utils.js +1 -2
  43. package/dist/cjs/node/prerender/context.js +31 -0
  44. package/dist/cjs/node/prerender/resolvePrerenderConfig.js +46 -0
  45. package/dist/cjs/node/prerender/runPrerender.js +89 -68
  46. package/dist/cjs/node/prerender/utils.js +2 -2
  47. package/dist/cjs/node/runtime/globalContext.js +222 -150
  48. package/dist/cjs/node/runtime/html/injectAssets/getHtmlTags.js +11 -7
  49. package/dist/cjs/node/runtime/html/injectAssets/getViteDevScript.js +2 -3
  50. package/dist/cjs/node/runtime/html/injectAssets.js +4 -4
  51. package/dist/cjs/node/runtime/html/renderHtml.js +4 -5
  52. package/dist/cjs/node/runtime/page-files/setup.js +1 -1
  53. package/dist/cjs/node/runtime/renderPage/analyzePage.js +2 -3
  54. package/dist/cjs/node/runtime/renderPage/getEarlyHints.js +2 -27
  55. package/dist/cjs/node/runtime/renderPage/getPageAssets/sortPageAssetsForEarlyHintsHeader.js +2 -4
  56. package/dist/cjs/node/runtime/renderPage/getPageAssets.js +4 -4
  57. package/dist/cjs/node/runtime/renderPage/handleErrorWithoutErrorPage.js +3 -5
  58. package/dist/cjs/node/runtime/renderPage/isFontFallback.js +29 -0
  59. package/dist/cjs/node/runtime/renderPage/loadUserFilesServerSide.js +5 -4
  60. package/dist/cjs/node/runtime/renderPage/log404/index.js +1 -2
  61. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +14 -10
  62. package/dist/cjs/node/runtime/renderPage/resolveRedirects.js +6 -5
  63. package/dist/cjs/node/runtime/renderPage.js +31 -29
  64. package/dist/cjs/node/runtime/utils.js +3 -3
  65. package/dist/cjs/node/runtime-dev/createDevMiddleware.js +5 -3
  66. package/dist/cjs/node/shared/resolveBase.js +7 -0
  67. package/dist/cjs/shared/getPageConfigsRuntime.js +20 -0
  68. package/dist/cjs/shared/getPageContextUrlComputed.js +6 -1
  69. package/dist/cjs/shared/getPageFiles/fileTypes.js +0 -1
  70. package/dist/cjs/shared/getPageFiles/getAllPageIdFiles.js +0 -3
  71. package/dist/cjs/shared/getPageFiles/getPageFileObject.js +0 -5
  72. package/dist/cjs/shared/getPageFiles/parseGlobResults.js +4 -3
  73. package/dist/cjs/shared/getPageFiles.js +1 -3
  74. package/dist/cjs/shared/page-configs/getPageConfigUserFriendly.js +15 -6
  75. package/dist/cjs/shared/page-configs/loadConfigValues.js +5 -1
  76. package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +69 -18
  77. package/dist/cjs/shared/route/loadPageRoutes.js +1 -0
  78. package/dist/cjs/shared/utils.js +0 -1
  79. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  80. package/dist/cjs/utils/assertSetup.js +1 -1
  81. package/dist/cjs/utils/catchInfiniteLoop.js +34 -0
  82. package/dist/cjs/utils/debug.js +8 -6
  83. package/dist/cjs/utils/findFile.js +4 -3
  84. package/dist/cjs/utils/isDev.js +2 -2
  85. package/dist/cjs/utils/isFilePathAbsoluteFilesystem.js +2 -2
  86. package/dist/cjs/utils/makePublicCopy.js +32 -0
  87. package/dist/cjs/utils/objectAssignSafe.js +7 -0
  88. package/dist/cjs/utils/path.js +48 -0
  89. package/dist/cjs/utils/requireResolve.js +3 -3
  90. package/dist/esm/__internal/index.d.ts +2 -2
  91. package/dist/esm/__internal/index.js +7 -26
  92. package/dist/esm/client/client-routing-runtime/createPageContext.js +5 -9
  93. package/dist/esm/client/client-routing-runtime/history.d.ts +3 -1
  94. package/dist/esm/client/client-routing-runtime/history.js +23 -18
  95. package/dist/esm/client/client-routing-runtime/index.d.ts +0 -1
  96. package/dist/esm/client/client-routing-runtime/index.js +0 -1
  97. package/dist/esm/client/client-routing-runtime/initClientRouter.js +2 -2
  98. package/dist/esm/client/client-routing-runtime/initOnLinkClick.d.ts +0 -4
  99. package/dist/esm/client/client-routing-runtime/initOnLinkClick.js +0 -11
  100. package/dist/esm/client/client-routing-runtime/initOnPopState.d.ts +0 -10
  101. package/dist/esm/client/client-routing-runtime/initOnPopState.js +50 -70
  102. package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +15 -15
  103. package/dist/esm/client/client-routing-runtime/scrollRestoration.d.ts +4 -6
  104. package/dist/esm/client/client-routing-runtime/scrollRestoration.js +17 -12
  105. package/dist/esm/client/client-routing-runtime/setScrollPosition.d.ts +1 -1
  106. package/dist/esm/client/client-routing-runtime/setScrollPosition.js +29 -5
  107. package/dist/esm/client/client-routing-runtime/skipLink.d.ts +0 -2
  108. package/dist/esm/client/client-routing-runtime/skipLink.js +0 -1
  109. package/dist/esm/client/client-routing-runtime/utils.d.ts +1 -0
  110. package/dist/esm/client/client-routing-runtime/utils.js +1 -0
  111. package/dist/esm/client/server-routing-runtime/getPageContext.js +3 -4
  112. package/dist/esm/client/shared/loadUserFilesClientSide.js +3 -2
  113. package/dist/esm/node/api/build.d.ts +1 -6
  114. package/dist/esm/node/api/build.js +31 -25
  115. package/dist/esm/node/api/context.d.ts +4 -4
  116. package/dist/esm/node/api/context.js +6 -9
  117. package/dist/esm/node/api/prepareViteApiCall.d.ts +4 -3
  118. package/dist/esm/node/api/prepareViteApiCall.js +24 -22
  119. package/dist/esm/node/api/prerender.js +1 -0
  120. package/dist/esm/node/api/utils.d.ts +2 -1
  121. package/dist/esm/node/api/utils.js +2 -1
  122. package/dist/esm/node/cli/context.d.ts +5 -0
  123. package/dist/esm/node/cli/context.js +14 -0
  124. package/dist/esm/node/cli/entry.js +2 -0
  125. package/dist/esm/node/cli/parseCli.d.ts +3 -1
  126. package/dist/esm/node/cli/utils.d.ts +1 -0
  127. package/dist/esm/node/cli/utils.js +1 -0
  128. package/dist/esm/node/plugin/index.d.ts +29 -1
  129. package/dist/esm/node/plugin/index.js +5 -9
  130. package/dist/esm/node/plugin/onLoad.js +7 -2
  131. package/dist/esm/node/plugin/plugins/autoFullBuild.js +35 -34
  132. package/dist/esm/node/plugin/plugins/baseUrls.js +2 -2
  133. package/dist/esm/node/plugin/plugins/buildApp.d.ts +3 -0
  134. package/dist/esm/node/plugin/plugins/buildApp.js +70 -0
  135. package/dist/esm/node/plugin/plugins/buildConfig/fixServerAssets.d.ts +0 -2
  136. package/dist/esm/node/plugin/plugins/buildConfig/fixServerAssets.js +11 -11
  137. package/dist/esm/node/plugin/plugins/buildConfig.js +16 -11
  138. package/dist/esm/node/plugin/plugins/buildEntry/index.d.ts +3 -3
  139. package/dist/esm/node/plugin/plugins/buildEntry/index.js +28 -24
  140. package/dist/esm/node/plugin/plugins/commonConfig.d.ts +8 -2
  141. package/dist/esm/node/plugin/plugins/commonConfig.js +7 -5
  142. package/dist/esm/node/plugin/plugins/extractAssetsPlugin.js +6 -3
  143. package/dist/esm/node/plugin/plugins/extractExportNamesPlugin.js +2 -1
  144. package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.d.ts +2 -2
  145. package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +14 -9
  146. package/dist/esm/node/plugin/plugins/importUserCode/index.js +11 -6
  147. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/assertExtensions.d.ts +6 -0
  148. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{assertExtensions.js → getVikeConfig/assertExtensions.js} +41 -36
  149. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.d.ts +2 -2
  150. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +58 -21
  151. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{getConfigFileExport.js → getVikeConfig/getConfigFileExport.js} +2 -2
  152. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.d.ts +39 -0
  153. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.js +154 -0
  154. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.d.ts +15 -9
  155. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +41 -24
  156. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.d.ts +8 -18
  157. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.js +10 -65
  158. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.d.ts +6 -2
  159. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +12 -6
  160. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +10 -122
  161. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +407 -594
  162. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{debug.js → virtual-files/debug.js} +1 -1
  163. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{getVirtualFilePageConfigValuesAll.js → virtual-files/getVirtualFilePageConfigValuesAll.js} +12 -9
  164. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{getVirtualFilePageConfigs.js → virtual-files/getVirtualFilePageConfigs.js} +13 -11
  165. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{isRuntimeEnvMatch.d.ts → virtual-files/isRuntimeEnvMatch.d.ts} +1 -1
  166. package/dist/esm/node/plugin/plugins/packageJsonFile.js +1 -1
  167. package/dist/esm/node/plugin/plugins/previewConfig.js +5 -5
  168. package/dist/esm/node/plugin/plugins/setGlobalContext.js +4 -6
  169. package/dist/esm/node/plugin/shared/findPageFiles.js +2 -1
  170. package/dist/esm/node/plugin/shared/getFullBuildInlineConfig.d.ts +2 -0
  171. package/dist/esm/node/plugin/shared/getFullBuildInlineConfig.js +17 -0
  172. package/dist/esm/{utils → node/plugin/shared}/getOutDirs.d.ts +1 -1
  173. package/dist/esm/{utils → node/plugin/shared}/getOutDirs.js +52 -43
  174. package/dist/esm/node/plugin/{resolveClientEntriesDev.js → shared/resolveClientEntriesDev.js} +5 -8
  175. package/dist/esm/{utils → node/plugin/shared}/viteIsSSR.d.ts +2 -5
  176. package/dist/esm/{utils → node/plugin/shared}/viteIsSSR.js +2 -2
  177. package/dist/esm/node/plugin/utils.d.ts +0 -1
  178. package/dist/esm/node/plugin/utils.js +1 -2
  179. package/dist/esm/node/prerender/context.d.ts +11 -0
  180. package/dist/esm/node/prerender/context.js +29 -0
  181. package/dist/esm/node/prerender/resolvePrerenderConfig.d.ts +12 -0
  182. package/dist/esm/node/prerender/resolvePrerenderConfig.js +44 -0
  183. package/dist/esm/node/prerender/runPrerender.d.ts +42 -1
  184. package/dist/esm/node/prerender/runPrerender.js +90 -69
  185. package/dist/esm/node/prerender/utils.d.ts +2 -2
  186. package/dist/esm/node/prerender/utils.js +2 -2
  187. package/dist/esm/node/runtime/globalContext.d.ts +44 -36
  188. package/dist/esm/node/runtime/globalContext.js +223 -151
  189. package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.d.ts +1 -1
  190. package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +11 -7
  191. package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.d.ts +4 -1
  192. package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.js +2 -3
  193. package/dist/esm/node/runtime/html/injectAssets.d.ts +2 -0
  194. package/dist/esm/node/runtime/html/injectAssets.js +4 -4
  195. package/dist/esm/node/runtime/html/renderHtml.js +4 -5
  196. package/dist/esm/node/runtime/page-files/setup.js +1 -1
  197. package/dist/esm/node/runtime/renderPage/analyzePage.d.ts +2 -1
  198. package/dist/esm/node/runtime/renderPage/analyzePage.js +2 -3
  199. package/dist/esm/node/runtime/renderPage/getEarlyHints.js +1 -26
  200. package/dist/esm/node/runtime/renderPage/getPageAssets/sortPageAssetsForEarlyHintsHeader.d.ts +1 -1
  201. package/dist/esm/node/runtime/renderPage/getPageAssets/sortPageAssetsForEarlyHintsHeader.js +2 -4
  202. package/dist/esm/node/runtime/renderPage/getPageAssets.d.ts +3 -1
  203. package/dist/esm/node/runtime/renderPage/getPageAssets.js +4 -4
  204. package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.d.ts +2 -0
  205. package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.js +3 -5
  206. package/dist/esm/node/runtime/renderPage/isFontFallback.d.ts +3 -0
  207. package/dist/esm/node/runtime/renderPage/isFontFallback.js +27 -0
  208. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.d.ts +2 -0
  209. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +6 -5
  210. package/dist/esm/node/runtime/renderPage/log404/index.d.ts +2 -0
  211. package/dist/esm/node/runtime/renderPage/log404/index.js +1 -2
  212. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +3 -0
  213. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +26 -10
  214. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +14 -10
  215. package/dist/esm/node/runtime/renderPage/resolveRedirects.d.ts +2 -0
  216. package/dist/esm/node/runtime/renderPage/resolveRedirects.js +5 -5
  217. package/dist/esm/node/runtime/renderPage.js +32 -30
  218. package/dist/esm/node/runtime/utils.d.ts +3 -3
  219. package/dist/esm/node/runtime/utils.js +3 -3
  220. package/dist/esm/node/runtime-dev/createDevMiddleware.js +5 -3
  221. package/dist/esm/node/shared/resolveBase.d.ts +5 -1
  222. package/dist/esm/node/shared/resolveBase.js +7 -0
  223. package/dist/esm/shared/getPageConfigsRuntime.d.ts +13 -0
  224. package/dist/esm/shared/getPageConfigsRuntime.js +18 -0
  225. package/dist/esm/shared/getPageContextUrlComputed.js +6 -1
  226. package/dist/esm/shared/getPageFiles/fileTypes.js +1 -2
  227. package/dist/esm/shared/getPageFiles/getAllPageIdFiles.js +0 -3
  228. package/dist/esm/shared/getPageFiles/getPageFileObject.js +0 -5
  229. package/dist/esm/shared/getPageFiles/parseGlobResults.d.ts +1 -1
  230. package/dist/esm/shared/getPageFiles/parseGlobResults.js +4 -3
  231. package/dist/esm/shared/getPageFiles.d.ts +0 -1
  232. package/dist/esm/shared/getPageFiles.js +0 -1
  233. package/dist/esm/shared/page-configs/Config.d.ts +83 -3
  234. package/dist/esm/shared/page-configs/PageConfig.d.ts +30 -18
  235. package/dist/esm/shared/page-configs/getPageConfigUserFriendly.d.ts +6 -8
  236. package/dist/esm/shared/page-configs/getPageConfigUserFriendly.js +15 -6
  237. package/dist/esm/shared/page-configs/loadConfigValues.js +6 -2
  238. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.d.ts +7 -1
  239. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +70 -19
  240. package/dist/esm/shared/route/loadPageRoutes.js +1 -0
  241. package/dist/esm/shared/utils.d.ts +0 -1
  242. package/dist/esm/shared/utils.js +0 -1
  243. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  244. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  245. package/dist/esm/utils/assertSetup.js +1 -1
  246. package/dist/esm/utils/catchInfiniteLoop.d.ts +2 -0
  247. package/dist/esm/utils/catchInfiniteLoop.js +32 -0
  248. package/dist/esm/utils/debug.d.ts +1 -1
  249. package/dist/esm/utils/debug.js +8 -6
  250. package/dist/esm/utils/findFile.js +2 -1
  251. package/dist/esm/utils/isDev.js +3 -3
  252. package/dist/esm/utils/isFilePathAbsoluteFilesystem.js +1 -1
  253. package/dist/esm/utils/makePublicCopy.d.ts +3 -0
  254. package/dist/esm/utils/makePublicCopy.js +30 -0
  255. package/dist/esm/utils/objectAssignSafe.d.ts +1 -0
  256. package/dist/esm/utils/objectAssignSafe.js +4 -0
  257. package/dist/esm/utils/path.d.ts +14 -0
  258. package/dist/esm/utils/path.js +46 -0
  259. package/dist/esm/utils/projectInfo.d.ts +1 -1
  260. package/dist/esm/utils/requireResolve.js +1 -1
  261. package/package.json +2 -2
  262. package/dist/cjs/node/plugin/plugins/buildEntry/getVikeManifest.js +0 -17
  263. package/dist/cjs/node/plugin/plugins/importUserCode/addImportStatement.js +0 -29
  264. package/dist/cjs/node/prerender/isPrerenderAutoRunEnabled.js +0 -16
  265. package/dist/cjs/node/shared/assertPluginManifest.js +0 -20
  266. package/dist/cjs/node/shared/assertRuntimeManifest.js +0 -16
  267. package/dist/cjs/shared/assertPageFilePath.js +0 -11
  268. package/dist/cjs/shared/getPageFiles/getPageFiles.js +0 -48
  269. package/dist/cjs/utils/filesystemPathHandling.js +0 -18
  270. package/dist/cjs/utils/path-shim.js +0 -19
  271. package/dist/esm/node/plugin/plugins/buildEntry/getVikeManifest.d.ts +0 -5
  272. package/dist/esm/node/plugin/plugins/buildEntry/getVikeManifest.js +0 -15
  273. package/dist/esm/node/plugin/plugins/importUserCode/addImportStatement.d.ts +0 -14
  274. package/dist/esm/node/plugin/plugins/importUserCode/addImportStatement.js +0 -27
  275. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/assertExtensions.d.ts +0 -5
  276. package/dist/esm/node/prerender/isPrerenderAutoRunEnabled.d.ts +0 -5
  277. package/dist/esm/node/prerender/isPrerenderAutoRunEnabled.js +0 -14
  278. package/dist/esm/node/shared/assertPluginManifest.d.ts +0 -12
  279. package/dist/esm/node/shared/assertPluginManifest.js +0 -18
  280. package/dist/esm/node/shared/assertRuntimeManifest.d.ts +0 -10
  281. package/dist/esm/node/shared/assertRuntimeManifest.js +0 -14
  282. package/dist/esm/shared/assertPageFilePath.d.ts +0 -2
  283. package/dist/esm/shared/assertPageFilePath.js +0 -9
  284. package/dist/esm/shared/getPageFiles/getPageFiles.d.ts +0 -15
  285. package/dist/esm/shared/getPageFiles/getPageFiles.js +0 -46
  286. package/dist/esm/utils/filesystemPathHandling.d.ts +0 -4
  287. package/dist/esm/utils/filesystemPathHandling.js +0 -16
  288. package/dist/esm/utils/path-shim.d.ts +0 -2
  289. package/dist/esm/utils/path-shim.js +0 -17
  290. /package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/{isRuntimeEnvMatch.js → virtual-files/isRuntimeEnvMatch.js} +0 -0
  291. /package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{getConfigFileExport.d.ts → getVikeConfig/getConfigFileExport.d.ts} +0 -0
  292. /package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{debug.d.ts → virtual-files/debug.d.ts} +0 -0
  293. /package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{getVirtualFilePageConfigValuesAll.d.ts → virtual-files/getVirtualFilePageConfigValuesAll.d.ts} +0 -0
  294. /package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{getVirtualFilePageConfigs.d.ts → virtual-files/getVirtualFilePageConfigs.d.ts} +0 -0
  295. /package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{isRuntimeEnvMatch.js → virtual-files/isRuntimeEnvMatch.js} +0 -0
  296. /package/dist/esm/node/plugin/{resolveClientEntriesDev.d.ts → shared/resolveClientEntriesDev.d.ts} +0 -0
@@ -4,52 +4,53 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.assertExtensionsConventions = assertExtensionsConventions;
7
- exports.assertExtensionsPeerDependencies = assertExtensionsPeerDependencies;
7
+ exports.assertExtensionsRequire = assertExtensionsRequire;
8
8
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
9
- const isObjectOfStrings_js_1 = require("../../../../../utils/isObjectOfStrings.js");
10
- const utils_js_1 = require("../../../utils.js");
11
- const getVikeConfig_js_1 = require("./getVikeConfig.js");
9
+ const isObjectOfStrings_js_1 = require("../../../../../../utils/isObjectOfStrings.js");
10
+ const utils_js_1 = require("../../../../utils.js");
11
+ const getVikeConfig_js_1 = require("../getVikeConfig.js");
12
12
  const path_1 = __importDefault(require("path"));
13
13
  const semver_1 = __importDefault(require("semver"));
14
- function assertExtensionsConventions(interfaceFile) {
15
- assertExtensionName(interfaceFile);
16
- assertConfigExportPath(interfaceFile);
14
+ function assertExtensionsConventions(plusFile) {
15
+ assertExtensionName(plusFile);
16
+ assertConfigExportPath(plusFile);
17
17
  }
18
- function assertConfigExportPath(interfaceFile) {
19
- const { importPathAbsolute, filePathAbsoluteFilesystem } = interfaceFile.filePath;
18
+ function assertConfigExportPath(plusFile) {
19
+ const { importPathAbsolute, filePathAbsoluteFilesystem } = plusFile.filePath;
20
20
  // Ejected Vike extension
21
21
  if (!importPathAbsolute) {
22
22
  const p = filePathAbsoluteFilesystem;
23
23
  (0, utils_js_1.assert)(!p.includes('node_modules'));
24
24
  return;
25
25
  }
26
- const name = getConfigNameValue(interfaceFile);
26
+ const name = getNameValue(plusFile);
27
27
  (0, utils_js_1.assert)(name); // already asserted in assertExtensionName()
28
28
  const importPathAbsoluteExpected = `${name}/config`;
29
29
  (0, utils_js_1.assertWarning)(importPathAbsolute === importPathAbsoluteExpected, `The Vike configuration of ${picocolors_1.default.bold(name)} is exported at ${picocolors_1.default.bold(importPathAbsolute)}, but it should be exported at ${picocolors_1.default.bold(importPathAbsoluteExpected)} instead.`, { onlyOnce: true });
30
30
  }
31
- function assertExtensionName(interfaceFile) {
32
- const filePathToShowToUser = getFilePathToShowToUser(interfaceFile);
33
- const name = getConfigNameValue(interfaceFile);
31
+ function assertExtensionName(plusFile) {
32
+ const filePathToShowToUser = getFilePathToShowToUser(plusFile);
33
+ const name = getNameValue(plusFile);
34
34
  (0, utils_js_1.assertUsage)(name, `Vike extension name missing: the config ${filePathToShowToUser} must define the setting ${picocolors_1.default.cyan('name')}`);
35
35
  }
36
- function assertExtensionsPeerDependencies(interfaceFilesRelevantList) {
37
- // Get installed extensions
36
+ function assertExtensionsRequire(pageConfig) {
37
+ const plusFilesRelevantList = Object.values(pageConfig.plusFiles).flat(1);
38
+ // Collect extensions
38
39
  const extensions = {};
39
- interfaceFilesRelevantList.forEach((interfaceFile) => {
40
- const name = getConfigNameValue(interfaceFile);
40
+ plusFilesRelevantList.forEach((plusFile) => {
41
+ const name = getNameValue(plusFile);
41
42
  if (name) {
42
- const version = getExtensionVersion(name, interfaceFile);
43
+ const version = getExtensionVersion(name, plusFile);
43
44
  extensions[name] = version;
44
45
  }
45
46
  });
46
- // Enforce peer dependencies
47
- interfaceFilesRelevantList.forEach((interfaceFile) => {
48
- const require = getConfigRequireValue(interfaceFile);
47
+ // Enforce `require`
48
+ plusFilesRelevantList.forEach((plusFile) => {
49
+ const require = getConfigRequireValue(plusFile);
49
50
  if (!require)
50
51
  return;
51
- const name = getConfigNameValue(interfaceFile);
52
- const filePathToShowToUser = getFilePathToShowToUser(interfaceFile);
52
+ const name = getNameValue(plusFile);
53
+ const filePathToShowToUser = getFilePathToShowToUser(plusFile);
53
54
  (0, utils_js_1.assertUsage)(name, `Setting ${picocolors_1.default.bold('name')} is required for being able to use setting ${picocolors_1.default.bold('require')} in ${filePathToShowToUser}.`);
54
55
  Object.entries(require).forEach(([reqName, reqVersion]) => {
55
56
  const errBase = `${picocolors_1.default.bold(name)} requires ${picocolors_1.default.bold(reqName)}`;
@@ -63,32 +64,36 @@ function assertExtensionsPeerDependencies(interfaceFilesRelevantList) {
63
64
  });
64
65
  });
65
66
  }
66
- function getConfigRequireValue(interfaceFile) {
67
- const require = (0, getVikeConfig_js_1.getConfigValueInterfaceFile)(interfaceFile, 'require');
68
- if (!require)
67
+ function getConfigRequireValue(plusFile) {
68
+ const confVal = (0, getVikeConfig_js_1.getConfVal)(plusFile, 'require');
69
+ if (!confVal)
69
70
  return null;
70
- const { filePathToShowToUserResolved } = interfaceFile.filePath;
71
+ (0, utils_js_1.assert)(confVal.configValueLoaded);
72
+ const require = confVal.configValue;
73
+ const { filePathToShowToUserResolved } = plusFile.filePath;
71
74
  (0, utils_js_1.assert)(filePathToShowToUserResolved);
72
75
  (0, utils_js_1.assertUsage)((0, isObjectOfStrings_js_1.isObjectOfStrings)(require), `The setting ${picocolors_1.default.bold('require')} defined at ${filePathToShowToUserResolved} should be an object with string values (${picocolors_1.default.bold('Record<string, string>')}).`);
73
76
  return require;
74
77
  }
75
- function getConfigNameValue(interfaceFile) {
76
- const name = (0, getVikeConfig_js_1.getConfigValueInterfaceFile)(interfaceFile, 'name');
77
- if (!name)
78
+ function getNameValue(plusFile) {
79
+ const confVal = (0, getVikeConfig_js_1.getConfVal)(plusFile, 'name');
80
+ if (!confVal)
78
81
  return null;
79
- const filePathToShowToUser = getFilePathToShowToUser(interfaceFile);
82
+ (0, utils_js_1.assert)(confVal.configValueLoaded);
83
+ const name = confVal.configValue;
84
+ const filePathToShowToUser = getFilePathToShowToUser(plusFile);
80
85
  (0, utils_js_1.assertUsage)(typeof name === 'string', `The setting ${picocolors_1.default.bold('name')} defined at ${filePathToShowToUser} should be a string.`);
81
86
  return name;
82
87
  }
83
88
  // We use a forever cache: users need to restart the dev server anyways when touching node_modules/**/* (I presume Vite doesn't pick up node_modules/**/* changes).
84
89
  const extensionsVersion = {};
85
- function getExtensionVersion(name, interfaceFile) {
90
+ function getExtensionVersion(name, plusFile) {
86
91
  if (!extensionsVersion[name]) {
87
- const extensionConfigFilePath = interfaceFile.filePath.filePathAbsoluteFilesystem;
92
+ const extensionConfigFilePath = plusFile.filePath.filePathAbsoluteFilesystem;
88
93
  const found = (0, utils_js_1.findPackageJson)(path_1.default.posix.dirname(extensionConfigFilePath));
89
94
  (0, utils_js_1.assert)(found);
90
95
  const { packageJson, packageJsonPath } = found;
91
- const filePathToShowToUser = getFilePathToShowToUser(interfaceFile);
96
+ const filePathToShowToUser = getFilePathToShowToUser(plusFile);
92
97
  const nameExpected = packageJson.name;
93
98
  (0, utils_js_1.assertWarning)(name === nameExpected, `The setting ${picocolors_1.default.bold('name')} defined at ${filePathToShowToUser} is ${picocolors_1.default.bold(JSON.stringify(name))}, but it should be equal to ${picocolors_1.default.bold(JSON.stringify(nameExpected))} (the value of ${packageJsonPath}${picocolors_1.default.dim('#')}${picocolors_1.default.bold('name')})`, { onlyOnce: true });
94
99
  const { version } = packageJson;
@@ -97,8 +102,8 @@ function getExtensionVersion(name, interfaceFile) {
97
102
  }
98
103
  return extensionsVersion[name];
99
104
  }
100
- function getFilePathToShowToUser(interfaceFile) {
101
- const { filePathToShowToUserResolved } = interfaceFile.filePath;
105
+ function getFilePathToShowToUser(plusFile) {
106
+ const { filePathToShowToUserResolved } = plusFile.filePath;
102
107
  (0, utils_js_1.assert)(filePathToShowToUserResolved);
103
108
  return filePathToShowToUserResolved;
104
109
  }
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.configDefinitionsBuiltInAll = void 0;
3
+ exports.configDefinitionsBuiltIn = void 0;
4
4
  const utils_js_1 = require("../../../../utils.js");
5
5
  const getConfigDefinedAt_js_1 = require("../../../../../../shared/page-configs/getConfigDefinedAt.js");
6
- const configDefinitionsBuiltInAll = {
6
+ const configDefinitionsBuiltIn = {
7
7
  onRenderHtml: {
8
8
  env: { server: true }
9
9
  },
@@ -89,11 +89,14 @@ const configDefinitionsBuiltInAll = {
89
89
  _computed: (configValueSources) => {
90
90
  {
91
91
  const source = getConfigValueSource(configValueSources, 'clientHooks');
92
- if (source && source.value !== null) {
93
- const { value } = source;
94
- const definedAt = (0, getConfigDefinedAt_js_1.getConfigDefinedAt)('Config', 'clientHooks', source.definedAtFilePath);
95
- (0, utils_js_1.assertUsage)(typeof value === 'boolean', `${definedAt} should be a boolean`);
96
- return value;
92
+ if (source) {
93
+ (0, utils_js_1.assert)(source.valueIsLoaded);
94
+ if (source.value !== null) {
95
+ const { value } = source;
96
+ const definedAt = (0, getConfigDefinedAt_js_1.getConfigDefinedAt)('Config', 'clientHooks', source.definedAtFilePath);
97
+ (0, utils_js_1.assertUsage)(typeof value === 'boolean', `${definedAt} should be a boolean`);
98
+ return value;
99
+ }
97
100
  }
98
101
  }
99
102
  return (isConfigSet(configValueSources, 'onRenderClient') &&
@@ -129,8 +132,7 @@ const configDefinitionsBuiltInAll = {
129
132
  keepScrollPosition: {
130
133
  env: { client: true }
131
134
  },
132
- // TODO/eventually: define it as a global config.
133
- middleware: { env: { server: true }, cumulative: true, eager: true },
135
+ middleware: { env: { server: true }, cumulative: true, eager: true, global: true },
134
136
  onPrerenderStart: {
135
137
  env: { server: true, production: true },
136
138
  eager: true,
@@ -141,7 +143,12 @@ const configDefinitionsBuiltInAll = {
141
143
  eager: true,
142
144
  global: true
143
145
  },
144
- prerender: { env: { config: true }, global: (value) => typeof value !== 'object', type: ['boolean', 'object'] },
146
+ prerender: {
147
+ env: { config: true },
148
+ global: (value) => typeof value === 'object',
149
+ type: ['boolean', 'object'],
150
+ cumulative: true
151
+ },
145
152
  vite: { env: { config: true }, global: true, cumulative: true, type: 'object' },
146
153
  disableAutoFullBuild: {
147
154
  env: { config: true },
@@ -152,14 +159,44 @@ const configDefinitionsBuiltInAll = {
152
159
  'string'
153
160
  ]
154
161
  },
155
- includeAssetsImportedByServer: { env: { config: true }, global: true, type: 'boolean' },
156
- baseAssets: { env: { config: true }, global: true, type: 'string' },
157
- baseServer: { env: { config: true }, global: true, type: 'string' },
158
- redirects: { env: { server: true }, global: true, type: 'string{}', cumulative: true },
159
- trailingSlash: { env: { server: true }, global: true, type: 'boolean' },
160
- disableUrlNormalization: { env: { server: true }, global: true, type: 'boolean' }
162
+ viteEnvironmentAPI: {
163
+ env: { config: true },
164
+ global: true,
165
+ type: 'boolean'
166
+ },
167
+ includeAssetsImportedByServer: {
168
+ env: { config: true },
169
+ global: true,
170
+ type: 'boolean'
171
+ },
172
+ baseAssets: {
173
+ env: { config: true, server: true },
174
+ global: true,
175
+ type: 'string'
176
+ },
177
+ baseServer: {
178
+ env: { config: true, server: true },
179
+ global: true,
180
+ type: 'string'
181
+ },
182
+ redirects: {
183
+ env: { server: true },
184
+ global: true,
185
+ type: 'string{}',
186
+ cumulative: true
187
+ },
188
+ trailingSlash: {
189
+ env: { server: true },
190
+ global: true,
191
+ type: 'boolean'
192
+ },
193
+ disableUrlNormalization: {
194
+ env: { server: true },
195
+ global: true,
196
+ type: 'boolean'
197
+ }
161
198
  };
162
- exports.configDefinitionsBuiltInAll = configDefinitionsBuiltInAll;
199
+ exports.configDefinitionsBuiltIn = configDefinitionsBuiltIn;
163
200
  function getConfigEnv(configValueSources, configName) {
164
201
  const configValueSource = getConfigValueSource(configValueSources, configName);
165
202
  if (!configValueSource)
@@ -173,11 +210,11 @@ function getConfigEnv(configValueSources, configName) {
173
210
  return env;
174
211
  }
175
212
  function isConfigSet(configValueSources, configName) {
176
- const configValueSource = getConfigValueSource(configValueSources, configName);
177
- // Enable users to suppress global config values by overriding the config's value to null
178
- if (configValueSource?.value === null)
179
- return false;
180
- return !!configValueSource;
213
+ const source = getConfigValueSource(configValueSources, configName);
214
+ return (!!source &&
215
+ !(source.valueIsLoaded &&
216
+ // Enable users to suppress inherited config by overriding it with `null`
217
+ source.value === null));
181
218
  }
182
219
  function getConfigValueSource(configValueSources, configName) {
183
220
  const sources = configValueSources[configName];
@@ -5,8 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getConfigFileExport = getConfigFileExport;
7
7
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
8
- const assertPlusFileExport_js_1 = require("../../../../../shared/page-configs/assertPlusFileExport.js");
9
- const utils_js_1 = require("../../../utils.js");
8
+ const assertPlusFileExport_js_1 = require("../../../../../../shared/page-configs/assertPlusFileExport.js");
9
+ const utils_js_1 = require("../../../../utils.js");
10
10
  function getConfigFileExport(fileExports, filePathToShowToUser) {
11
11
  (0, assertPlusFileExport_js_1.assertPlusFileExport)(fileExports, filePathToShowToUser, 'config');
12
12
  const usesNamedExport = !!fileExports.config;
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getPlusFilesAll = getPlusFilesAll;
7
+ exports.getPlusFileValueConfigName = getPlusFileValueConfigName;
8
+ const utils_js_1 = require("../../../../utils.js");
9
+ const configDefinitionsBuiltIn_js_1 = require("./configDefinitionsBuiltIn.js");
10
+ const filesystemRouting_js_1 = require("./filesystemRouting.js");
11
+ const transpileAndExecuteFile_js_1 = require("./transpileAndExecuteFile.js");
12
+ const crawlPlusFiles_js_1 = require("./crawlPlusFiles.js");
13
+ const getConfigFileExport_js_1 = require("./getConfigFileExport.js");
14
+ const loadFileAtConfigTime_js_1 = require("./loadFileAtConfigTime.js");
15
+ const resolvePointerImport_js_1 = require("./resolvePointerImport.js");
16
+ const getFilePath_js_1 = require("../../../../shared/getFilePath.js");
17
+ const assertExtensions_js_1 = require("./assertExtensions.js");
18
+ const node_path_1 = __importDefault(require("node:path"));
19
+ async function getPlusFilesAll(userRootDir, esbuildCache) {
20
+ const plusFiles = await findPlusFiles(userRootDir, null);
21
+ const configFiles = [];
22
+ const valueFiles = [];
23
+ plusFiles.forEach((f) => {
24
+ if (getPlusFileValueConfigName(f.filePathAbsoluteFilesystem) === 'config') {
25
+ configFiles.push(f);
26
+ }
27
+ else {
28
+ valueFiles.push(f);
29
+ }
30
+ });
31
+ let plusFilesAll = {};
32
+ await Promise.all([
33
+ // Config files
34
+ ...configFiles.map(async (filePath) => {
35
+ const { filePathAbsoluteUserRootDir } = filePath;
36
+ (0, utils_js_1.assert)(filePathAbsoluteUserRootDir);
37
+ const { configFile, extendsConfigs } = await (0, loadFileAtConfigTime_js_1.loadConfigFile)(filePath, userRootDir, [], false, esbuildCache);
38
+ (0, utils_js_1.assert)(filePath.filePathAbsoluteUserRootDir);
39
+ const locationId = (0, filesystemRouting_js_1.getLocationId)(filePathAbsoluteUserRootDir);
40
+ const plusFile = getPlusFileFromConfigFile(configFile, false, locationId, userRootDir);
41
+ plusFilesAll[locationId] = plusFilesAll[locationId] ?? [];
42
+ plusFilesAll[locationId].push(plusFile);
43
+ extendsConfigs.forEach((extendsConfig) => {
44
+ /* We purposely use the same locationId because the Vike extension's config should only apply to where it's being extended from, for example:
45
+ ```js
46
+ // /pages/admin/+config.js
47
+
48
+ import vikeVue from 'vike-vue/config'
49
+ // Should only apply to /pages/admin/**
50
+ export default { extends: [vikeVue] }
51
+ ```
52
+ ```js
53
+ // /pages/marketing/+config.js
54
+
55
+ import vikeReact from 'vike-react/config'
56
+ // Should only apply to /pages/marketing/**
57
+ export default { extends: [vikeReact] }
58
+ ```
59
+ */
60
+ const plusFile = getPlusFileFromConfigFile(extendsConfig, true, locationId, userRootDir);
61
+ (0, assertExtensions_js_1.assertExtensionsConventions)(plusFile);
62
+ plusFilesAll[locationId].push(plusFile);
63
+ });
64
+ }),
65
+ // Value files
66
+ ...valueFiles.map(async (filePath) => {
67
+ const { filePathAbsoluteUserRootDir } = filePath;
68
+ (0, utils_js_1.assert)(filePathAbsoluteUserRootDir);
69
+ const configName = getPlusFileValueConfigName(filePathAbsoluteUserRootDir);
70
+ (0, utils_js_1.assert)(configName);
71
+ const locationId = (0, filesystemRouting_js_1.getLocationId)(filePathAbsoluteUserRootDir);
72
+ const plusFile = {
73
+ locationId,
74
+ filePath,
75
+ isConfigFile: false,
76
+ isNotLoaded: true,
77
+ configName
78
+ };
79
+ plusFilesAll[locationId] = plusFilesAll[locationId] ?? [];
80
+ plusFilesAll[locationId].push(plusFile);
81
+ // We don't have access to the custom config definitions defined by the user yet.
82
+ // - If `configDef` is `undefined` => we load the file +{configName}.js later.
83
+ // - We already need to load +meta.js here (to get the custom config definitions defined by the user)
84
+ await (0, loadFileAtConfigTime_js_1.loadValueFile)(plusFile, configDefinitionsBuiltIn_js_1.configDefinitionsBuiltIn, userRootDir, esbuildCache);
85
+ })
86
+ ]);
87
+ // Make lists element order deterministic
88
+ Object.entries(plusFilesAll).forEach(([_locationId, plusFiles]) => {
89
+ plusFiles.sort(sortMakeDeterministic);
90
+ });
91
+ return plusFilesAll;
92
+ }
93
+ function getPlusFileFromConfigFile(configFile, isExtensionConfig, locationId, userRootDir) {
94
+ const { fileExports, filePath, extendsFilePaths } = configFile;
95
+ const fileExportsByConfigName = {};
96
+ const pointerImportsByConfigName = {};
97
+ const fileExport = (0, getConfigFileExport_js_1.getConfigFileExport)(fileExports, filePath.filePathToShowToUser);
98
+ Object.entries(fileExport).forEach(([configName, configValue]) => {
99
+ fileExportsByConfigName[configName] = configValue;
100
+ const pointerImport = (0, resolvePointerImport_js_1.resolvePointerImport)(configValue, configFile.filePath, userRootDir, configName);
101
+ if (pointerImport) {
102
+ pointerImportsByConfigName[configName] = {
103
+ ...pointerImport,
104
+ fileExportValueLoaded: false
105
+ };
106
+ }
107
+ });
108
+ const plusFile = {
109
+ locationId,
110
+ filePath,
111
+ fileExportsByConfigName,
112
+ pointerImportsByConfigName,
113
+ isConfigFile: true,
114
+ isExtensionConfig,
115
+ extendsFilePaths
116
+ };
117
+ return plusFile;
118
+ }
119
+ // Make order deterministic (no other purpose)
120
+ function sortMakeDeterministic(plusFile1, plusFile2) {
121
+ return plusFile1.filePath.filePathAbsoluteVite < plusFile2.filePath.filePathAbsoluteVite ? -1 : 1;
122
+ }
123
+ async function findPlusFiles(userRootDir, outDirRoot) {
124
+ const files = await (0, crawlPlusFiles_js_1.crawlPlusFiles)(userRootDir, outDirRoot);
125
+ const plusFiles = files.map(({ filePathAbsoluteUserRootDir }) => (0, getFilePath_js_1.getFilePathResolved)({ filePathAbsoluteUserRootDir, userRootDir }));
126
+ return plusFiles;
127
+ }
128
+ function getPlusFileValueConfigName(filePath) {
129
+ (0, utils_js_1.assertPosixPath)(filePath);
130
+ if ((0, transpileAndExecuteFile_js_1.isTemporaryBuildFile)(filePath))
131
+ return null;
132
+ const fileName = node_path_1.default.posix.basename(filePath);
133
+ // assertNoUnexpectedPlusSign(filePath, fileName)
134
+ const basename = fileName.split('.')[0];
135
+ if (!basename.startsWith('+')) {
136
+ return null;
137
+ }
138
+ else {
139
+ const configName = basename.slice(1);
140
+ (0, utils_js_1.assertUsage)(configName !== '', `${filePath} Invalid filename ${fileName}`);
141
+ return configName;
142
+ }
143
+ }
144
+ /* https://github.com/vikejs/vike/issues/1407
145
+ function assertNoUnexpectedPlusSign(filePath: string, fileName: string) {
146
+ const dirs = path.posix.dirname(filePath).split('/')
147
+ dirs.forEach((dir, i) => {
148
+ const dirPath = dirs.slice(0, i + 1).join('/')
149
+ assertUsage(
150
+ !dir.includes('+'),
151
+ `Character '+' is a reserved character: remove '+' from the directory name ${dirPath}/`
152
+ )
153
+ })
154
+ assertUsage(
155
+ !fileName.slice(1).includes('+'),
156
+ `Character '+' is only allowed at the beginning of filenames: make sure ${filePath} doesn't contain any '+' in its filename other than its first letter`
157
+ )
158
+ }
159
+ */
@@ -1,49 +1,63 @@
1
1
  "use strict";
2
- // Files loadded at config time:
2
+ // Files loaded at config time:
3
3
  var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  return (mod && mod.__esModule) ? mod : { "default": mod };
5
5
  };
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.loadImportedFile = loadImportedFile;
7
+ exports.loadPointerImport = loadPointerImport;
8
8
  exports.loadValueFile = loadValueFile;
9
9
  exports.loadConfigFile = loadConfigFile;
10
10
  const utils_js_1 = require("../../../../utils.js");
11
11
  const transpileAndExecuteFile_js_1 = require("./transpileAndExecuteFile.js");
12
+ const getVikeConfig_js_1 = require("../getVikeConfig.js");
12
13
  const assertPlusFileExport_js_1 = require("../../../../../../shared/page-configs/assertPlusFileExport.js");
13
14
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
14
15
  const transformPointerImports_js_1 = require("./transformPointerImports.js");
15
- const getConfigFileExport_js_1 = require("../getConfigFileExport.js");
16
+ const getConfigFileExport_js_1 = require("./getConfigFileExport.js");
16
17
  const resolvePointerImport_js_1 = require("./resolvePointerImport.js");
18
+ const getConfigDefinedAt_js_1 = require("../../../../../../shared/page-configs/getConfigDefinedAt.js");
17
19
  (0, utils_js_1.assertIsNotProductionRuntime)();
18
20
  // Load pointer import
19
- async function loadImportedFile(import_, userRootDir, importedFilesLoaded) {
20
- const f = import_.filePathAbsoluteFilesystem;
21
- if (!importedFilesLoaded[f]) {
22
- importedFilesLoaded[f] = (0, transpileAndExecuteFile_js_1.transpileAndExecuteFile)(import_, userRootDir, false).then((r) => r.fileExports);
23
- }
24
- const fileExports = await importedFilesLoaded[f];
25
- const fileExport = fileExports[import_.fileExportName];
26
- return fileExport;
21
+ async function loadPointerImport(pointerImport, userRootDir, configName, configDefinitions, esbuildCache) {
22
+ // The value of `extends` was already loaded and already used: we don't need the value of `extends` anymore
23
+ if (configName === 'extends')
24
+ return;
25
+ const configDef = (0, getVikeConfig_js_1.getConfigDefinitionOptional)(configDefinitions, configName);
26
+ // Only load pointer import if `env.config===true`
27
+ if (!configDef || !shouldBeLoadableAtBuildTime(configDef))
28
+ return;
29
+ const configDefinedAt = (0, getConfigDefinedAt_js_1.getConfigDefinedAt)('Config', configName, pointerImport.fileExportPath);
30
+ (0, utils_js_1.assertUsage)(pointerImport.fileExportPath.filePathAbsoluteFilesystem, `${configDefinedAt} cannot be defined over an aliased import`);
31
+ const { fileExports } = await (0, transpileAndExecuteFile_js_1.transpileAndExecuteFile)(pointerImport.fileExportPath, userRootDir, false, esbuildCache);
32
+ const fileExportValue = fileExports[pointerImport.fileExportPath.fileExportName];
33
+ pointerImport.fileExportValueLoaded = true;
34
+ (0, utils_js_1.assert)(pointerImport.fileExportValueLoaded);
35
+ pointerImport.fileExportValue = fileExportValue;
27
36
  }
28
37
  // Load +{configName}.js
29
- async function loadValueFile(interfaceValueFile, configName, userRootDir) {
30
- const { fileExports } = await (0, transpileAndExecuteFile_js_1.transpileAndExecuteFile)(interfaceValueFile.filePath, userRootDir, false);
38
+ async function loadValueFile(interfaceValueFile, configDefinitions, userRootDir, esbuildCache) {
39
+ const { configName } = interfaceValueFile;
40
+ const configDef = (0, getVikeConfig_js_1.getConfigDefinitionOptional)(configDefinitions, configName);
41
+ // Only load value files with `env.config===true`
42
+ if (!configDef || !shouldBeLoadableAtBuildTime(configDef))
43
+ return;
44
+ interfaceValueFile.isNotLoaded = false;
45
+ (0, utils_js_1.assert)(!interfaceValueFile.isNotLoaded);
46
+ interfaceValueFile.fileExportsByConfigName = {};
47
+ const { fileExports } = await (0, transpileAndExecuteFile_js_1.transpileAndExecuteFile)(interfaceValueFile.filePath, userRootDir, false, esbuildCache);
31
48
  const { filePathToShowToUser } = interfaceValueFile.filePath;
32
49
  (0, assertPlusFileExport_js_1.assertPlusFileExport)(fileExports, filePathToShowToUser, configName);
33
50
  Object.entries(fileExports).forEach(([exportName, configValue]) => {
34
51
  const configName_ = exportName === 'default' ? configName : exportName;
35
- interfaceValueFile.fileExportsByConfigName[configName_] = { configValue };
52
+ interfaceValueFile.fileExportsByConfigName[configName_] = configValue;
36
53
  });
37
54
  }
38
55
  // Load +config.js, including all its extends pointer imports
39
- async function loadConfigFile(configFilePath, userRootDir, visited, isExtensionConfig) {
56
+ async function loadConfigFile(configFilePath, userRootDir, visited, isExtensionConfig, esbuildCache) {
40
57
  const { filePathAbsoluteFilesystem } = configFilePath;
41
58
  assertNoInfiniteLoop(visited, filePathAbsoluteFilesystem);
42
- const { fileExports } = await (0, transpileAndExecuteFile_js_1.transpileAndExecuteFile)(configFilePath, userRootDir, isExtensionConfig ? 'is-extension-config' : true);
43
- const { extendsConfigs, extendsFilePaths } = await loadExtendsConfigs(fileExports, configFilePath, userRootDir, [
44
- ...visited,
45
- filePathAbsoluteFilesystem
46
- ]);
59
+ const { fileExports } = await (0, transpileAndExecuteFile_js_1.transpileAndExecuteFile)(configFilePath, userRootDir, isExtensionConfig ? 'is-extension-config' : true, esbuildCache);
60
+ const { extendsConfigs, extendsFilePaths } = await loadExtendsConfigs(fileExports, configFilePath, userRootDir, [...visited, filePathAbsoluteFilesystem], esbuildCache);
47
61
  const configFile = {
48
62
  fileExports,
49
63
  filePath: configFilePath,
@@ -59,15 +73,15 @@ function assertNoInfiniteLoop(visited, filePathAbsoluteFilesystem) {
59
73
  (0, utils_js_1.assert)(loop[0] === filePathAbsoluteFilesystem);
60
74
  (0, utils_js_1.assertUsage)(idx === -1, `Infinite extends loop ${[...loop, filePathAbsoluteFilesystem].join('>')}`);
61
75
  }
62
- async function loadExtendsConfigs(configFileExports, configFilePath, userRootDir, visited) {
76
+ async function loadExtendsConfigs(configFileExports, configFilePath, userRootDir, visited, esbuildCache) {
63
77
  const { extendsPointerImportData, extendsConfigs } = getExtendsPointerImportData(configFileExports, configFilePath);
64
78
  const extendsConfigFiles = [];
65
79
  extendsPointerImportData.map((pointerImportData) => {
66
- const filePath = (0, resolvePointerImport_js_1.resolvePointerImport)(pointerImportData, configFilePath, userRootDir);
80
+ const filePath = (0, resolvePointerImport_js_1.resolvePointerImportData)(pointerImportData, configFilePath, userRootDir);
67
81
  (0, utils_js_1.assert)(filePath.filePathAbsoluteFilesystem);
68
82
  extendsConfigFiles.push(filePath);
69
83
  });
70
- const results = await Promise.all(extendsConfigFiles.map(async (configFilePath) => await loadConfigFile(configFilePath, userRootDir, visited, true)));
84
+ const results = await Promise.all(extendsConfigFiles.map(async (configFilePath) => await loadConfigFile(configFilePath, userRootDir, visited, true, esbuildCache)));
71
85
  results.forEach((result) => {
72
86
  extendsConfigs.push(result.configFile);
73
87
  extendsConfigs.push(...result.extendsConfigs);
@@ -110,3 +124,6 @@ function getExtendsPointerImportData(configFileExports, configFilePath) {
110
124
  }
111
125
  return { extendsPointerImportData, extendsConfigs };
112
126
  }
127
+ function shouldBeLoadableAtBuildTime(configDef) {
128
+ return !!configDef.env.config && !configDef._valueIsFilePath;
129
+ }