vike 0.4.231-commit-e1c3295 → 0.4.232-commit-134207d

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 (437) hide show
  1. package/README.md +4 -2
  2. package/dist/cjs/__internal/index.js +2 -2
  3. package/dist/cjs/client/runtime-client-routing/globalContext.js +1 -1
  4. package/dist/cjs/client/shared/createGetGlobalContextClient.js +2 -2
  5. package/dist/cjs/client/shared/preparePageContextForPublicUsageClientShared.js +2 -2
  6. package/dist/cjs/node/api/build.js +6 -2
  7. package/dist/cjs/node/api/dev.js +1 -1
  8. package/dist/cjs/node/api/prepareViteApiCall.js +8 -8
  9. package/dist/cjs/node/api/prerender.js +1 -1
  10. package/dist/cjs/node/api/preview.js +2 -2
  11. package/dist/cjs/node/cli/entry.js +1 -1
  12. package/dist/cjs/node/cli/parseCli.js +2 -2
  13. package/dist/cjs/node/client/router.js +1 -1
  14. package/dist/cjs/node/createPageRenderer.js +1 -1
  15. package/dist/cjs/node/prerender/context.js +1 -1
  16. package/dist/cjs/node/prerender/resolvePrerenderConfig.js +3 -2
  17. package/dist/cjs/node/prerender/runPrerender.js +91 -46
  18. package/dist/cjs/node/prerender/runPrerenderEntry.js +1 -1
  19. package/dist/cjs/node/prerender/utils.js +1 -0
  20. package/dist/cjs/node/runtime/globalContext.js +22 -15
  21. package/dist/cjs/node/runtime/html/injectAssets/getHtmlTags.js +7 -7
  22. package/dist/cjs/node/runtime/html/injectAssets/getViteDevScript.js +1 -1
  23. package/dist/cjs/node/runtime/html/injectAssets/inferHtmlTags.js +1 -1
  24. package/dist/cjs/node/runtime/html/injectAssets/injectAssets__public.js +5 -5
  25. package/dist/cjs/node/runtime/html/injectAssets/injectHtmlTags.js +3 -3
  26. package/dist/cjs/node/runtime/html/injectAssets.js +1 -1
  27. package/dist/cjs/node/runtime/html/renderHtml.js +8 -8
  28. package/dist/cjs/node/runtime/html/serializeContext.js +5 -5
  29. package/dist/cjs/node/runtime/html/stream.js +19 -19
  30. package/dist/cjs/node/runtime/index-deprecated.js +2 -2
  31. package/dist/cjs/node/runtime/index.js +1 -1
  32. package/dist/cjs/node/runtime/renderPage/analyzePage.js +4 -4
  33. package/dist/cjs/node/runtime/renderPage/assertArguments.js +1 -1
  34. package/dist/cjs/node/runtime/renderPage/createHttpResponse/assertNoInfiniteHttpRedirect.js +1 -1
  35. package/dist/cjs/node/runtime/renderPage/createHttpResponse.js +5 -6
  36. package/dist/cjs/node/runtime/renderPage/createPageContextServerSide.js +4 -4
  37. package/dist/cjs/node/runtime/renderPage/debugPageFiles.js +1 -1
  38. package/dist/cjs/node/runtime/renderPage/execHookServer.js +1 -4
  39. package/dist/cjs/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +1 -1
  40. package/dist/cjs/node/runtime/renderPage/executeOnRenderHtmlHook.js +3 -3
  41. package/dist/cjs/node/runtime/renderPage/getEarlyHints.js +1 -1
  42. package/dist/cjs/node/runtime/renderPage/getHttpResponseBody.js +1 -1
  43. package/dist/cjs/node/runtime/renderPage/getPageAssets/getManifestEntry.js +1 -1
  44. package/dist/cjs/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +1 -1
  45. package/dist/cjs/node/runtime/renderPage/getPageAssets.js +2 -2
  46. package/dist/cjs/node/runtime/renderPage/handleErrorWithoutErrorPage.js +1 -1
  47. package/dist/cjs/node/runtime/renderPage/handlePageContextRequestUrl.js +1 -1
  48. package/dist/cjs/node/runtime/renderPage/isFontFallback.js +3 -3
  49. package/dist/cjs/node/runtime/renderPage/isNewError.js +2 -1
  50. package/dist/cjs/node/runtime/renderPage/loadPageConfigsLazyServerSide.js +10 -10
  51. package/dist/cjs/node/runtime/renderPage/log404/index.js +4 -8
  52. package/dist/cjs/node/runtime/renderPage/logErrorHint/errors.js +2 -2
  53. package/dist/cjs/node/runtime/renderPage/logErrorHint.js +18 -18
  54. package/dist/cjs/node/runtime/renderPage/loggerProd.js +3 -3
  55. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +1 -1
  56. package/dist/cjs/node/runtime/renderPage/resolveRedirects.js +22 -4
  57. package/dist/cjs/node/runtime/renderPage.js +17 -34
  58. package/dist/cjs/node/runtime/universal-middleware.js +2 -2
  59. package/dist/cjs/node/runtime/utils.js +1 -1
  60. package/dist/cjs/node/runtime-dev/createDevMiddleware.js +3 -3
  61. package/dist/cjs/node/shared/extractAssetsQuery.js +1 -1
  62. package/dist/cjs/node/shared/getVikeConfigError.js +22 -0
  63. package/dist/cjs/node/shared/resolveBase.js +1 -1
  64. package/dist/cjs/node/shared/utils.js +1 -0
  65. package/dist/cjs/node/shared/virtualFiles/virtualFilePageConfigLazy.js +2 -2
  66. package/dist/cjs/node/vite/index.js +2 -2
  67. package/dist/cjs/node/vite/plugins/pluginBaseUrls.js +3 -3
  68. package/dist/cjs/node/vite/plugins/pluginBuild/handleAssetsManifest.js +30 -28
  69. package/dist/cjs/node/vite/plugins/pluginBuild/pluginAutoFullBuild.js +10 -10
  70. package/dist/cjs/node/vite/plugins/pluginBuild/pluginBuildApp.js +10 -10
  71. package/dist/cjs/node/vite/plugins/pluginBuild/pluginBuildConfig.js +10 -10
  72. package/dist/cjs/node/vite/plugins/pluginBuild/pluginBuildEntry.js +12 -13
  73. package/dist/cjs/node/vite/plugins/pluginBuild/pluginDistFileNames.js +14 -12
  74. package/dist/cjs/node/vite/plugins/pluginBuild/pluginDistPackageJsonFile.js +2 -2
  75. package/dist/cjs/node/vite/plugins/pluginBuild/pluginModuleBanner.js +3 -3
  76. package/dist/cjs/node/vite/plugins/pluginBuild/pluginSuppressRollupWarning.js +3 -3
  77. package/dist/cjs/node/vite/plugins/pluginBuild.js +1 -1
  78. package/dist/cjs/node/vite/plugins/pluginCommon/assertResolveAlias.js +2 -2
  79. package/dist/cjs/node/vite/plugins/pluginCommon.js +14 -14
  80. package/dist/cjs/node/vite/plugins/pluginDev/determineFsAllowList.js +2 -2
  81. package/dist/cjs/node/vite/plugins/pluginDev/determineOptimizeDeps.js +2 -2
  82. package/dist/cjs/node/vite/plugins/pluginDev.js +8 -8
  83. package/dist/cjs/node/vite/plugins/pluginEnvVars.js +4 -4
  84. package/dist/cjs/node/vite/plugins/pluginExtractAssets.js +6 -6
  85. package/dist/cjs/node/vite/plugins/pluginExtractExportNames.js +2 -2
  86. package/dist/cjs/node/vite/plugins/pluginFileEnv.js +3 -3
  87. package/dist/cjs/node/vite/plugins/pluginPreview.js +9 -9
  88. package/dist/cjs/node/vite/plugins/pluginReplaceConstants.js +3 -3
  89. package/dist/cjs/node/vite/plugins/pluginSetGlobalContext.js +6 -6
  90. package/dist/cjs/node/vite/plugins/pluginVirtualFiles/getVirtualFileEntry.js +10 -10
  91. package/dist/cjs/node/vite/plugins/pluginVirtualFiles/getVirtualFilePageConfigLazy.js +11 -1
  92. package/dist/cjs/node/vite/plugins/pluginVirtualFiles.js +3 -3
  93. package/dist/cjs/node/vite/plugins/pluginWorkaroundCssModuleHmr.js +1 -1
  94. package/dist/cjs/node/vite/plugins/pluginWorkaroundVite6HmrRegression.js +2 -2
  95. package/dist/cjs/node/vite/shared/addSsrMiddleware.js +3 -3
  96. package/dist/cjs/node/vite/shared/findPageFiles.js +1 -1
  97. package/dist/cjs/node/vite/shared/getFilePath.js +24 -24
  98. package/dist/cjs/node/vite/shared/getHttpRequestAsyncStore.js +4 -4
  99. package/dist/cjs/node/vite/shared/getOutDirs.js +2 -2
  100. package/dist/cjs/node/vite/shared/getViteConfigRuntime.js +3 -3
  101. package/dist/cjs/node/vite/shared/isAsset.js +1 -1
  102. package/dist/cjs/node/vite/shared/isViteCliCall.js +1 -1
  103. package/dist/cjs/node/vite/shared/isViteServerBuild.js +2 -2
  104. package/dist/cjs/node/vite/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errBabelReact.js +1 -1
  105. package/dist/cjs/node/vite/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errBabelSolid.js +1 -1
  106. package/dist/cjs/node/vite/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errEsbuild.js +5 -5
  107. package/dist/cjs/node/vite/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errMdx1.js +3 -3
  108. package/dist/cjs/node/vite/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errMdx2.js +10 -10
  109. package/dist/cjs/node/vite/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errPostcss.js +2 -2
  110. package/dist/cjs/node/vite/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errSwc.js +2 -2
  111. package/dist/cjs/node/vite/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errSwcBig.js +2 -2
  112. package/dist/cjs/node/vite/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errVueCss.js +2 -2
  113. package/dist/cjs/node/vite/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errVueHtml.js +1 -1
  114. package/dist/cjs/node/vite/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errVueJavascript.js +1 -1
  115. package/dist/cjs/node/vite/shared/loggerNotProd/errorWithCodeSnippet.js +3 -3
  116. package/dist/cjs/node/vite/shared/loggerNotProd.js +1 -1
  117. package/dist/cjs/node/vite/shared/resolveClientEntriesDev.js +2 -2
  118. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/assertExtensions.js +2 -2
  119. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/configDefinitionsBuiltIn.js +50 -50
  120. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/crawlPlusFiles/ignorePatternsBuiltIn.js +1 -1
  121. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/crawlPlusFiles.js +13 -13
  122. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/filesystemRouting.js +14 -5
  123. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/getPlusFilesAll.js +4 -4
  124. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/loadFileAtConfigTime.js +1 -1
  125. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/pointerImports.js +5 -5
  126. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/resolvePointerImport.js +5 -5
  127. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/transpileAndExecuteFile.js +25 -25
  128. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal.js +46 -46
  129. package/dist/cjs/node/vite/utils.js +2 -7
  130. package/dist/cjs/shared/assertHookReturnedObject.js +1 -1
  131. package/dist/cjs/shared/assertPageContextProvidedByUser.js +2 -2
  132. package/dist/cjs/shared/createGlobalContextShared.js +26 -18
  133. package/dist/cjs/shared/createPageContextShared.js +1 -1
  134. package/dist/cjs/shared/getPageContextRequestUrl.js +1 -1
  135. package/dist/cjs/shared/getPageContextUrlComputed.js +5 -5
  136. package/dist/cjs/shared/getPageFiles/analyzePageClientSide/analyzeExports.js +3 -3
  137. package/dist/cjs/shared/getPageFiles/analyzePageClientSide/determineClientEntry.js +1 -1
  138. package/dist/cjs/shared/getPageFiles/analyzePageClientSide.js +3 -3
  139. package/dist/cjs/shared/getPageFiles/fileTypes.js +1 -1
  140. package/dist/cjs/shared/getPageFiles/getAllPageIdFiles.js +2 -2
  141. package/dist/cjs/shared/getPageFiles/getPageFileObject.js +1 -1
  142. package/dist/cjs/shared/getProxyForPublicUsage.js +2 -2
  143. package/dist/cjs/shared/hooks/execHook.js +2 -2
  144. package/dist/cjs/shared/hooks/getHook.js +4 -4
  145. package/dist/cjs/shared/modifyUrl.js +1 -1
  146. package/dist/cjs/shared/page-configs/assertPlusFileExport.js +2 -2
  147. package/dist/cjs/shared/page-configs/getConfigValueBuildTime.js +4 -4
  148. package/dist/cjs/shared/page-configs/resolveVikeConfigPublic.js +21 -21
  149. package/dist/cjs/shared/page-configs/serialize/parsePageConfigs.js +3 -3
  150. package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +9 -9
  151. package/dist/cjs/shared/preparePageContextForPublicUsage.js +3 -3
  152. package/dist/cjs/shared/route/abort.js +7 -7
  153. package/dist/cjs/shared/route/debug.js +1 -1
  154. package/dist/cjs/shared/route/deduceRouteStringFromFilesystemPath.js +1 -1
  155. package/dist/cjs/shared/route/executeOnBeforeRouteHook.js +3 -3
  156. package/dist/cjs/shared/route/index.js +5 -5
  157. package/dist/cjs/shared/route/loadPageRoutes.js +8 -8
  158. package/dist/cjs/shared/route/resolvePrecedence.js +2 -2
  159. package/dist/cjs/shared/route/resolveRoute.js +1 -1
  160. package/dist/cjs/shared/route/resolveRouteFunction.js +2 -2
  161. package/dist/cjs/shared/utils.js +1 -0
  162. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  163. package/dist/cjs/utils/assert.js +9 -9
  164. package/dist/cjs/utils/assertKeys.js +1 -1
  165. package/dist/cjs/utils/assertSetup.js +1 -1
  166. package/dist/cjs/utils/assertSingleInstance.js +5 -5
  167. package/dist/cjs/utils/catchInfiniteLoop.js +1 -1
  168. package/dist/cjs/utils/debug.js +1 -1
  169. package/dist/cjs/utils/findFile.js +5 -5
  170. package/dist/cjs/utils/findPackageJson.js +3 -3
  171. package/dist/cjs/utils/formatHintLog.js +1 -1
  172. package/dist/cjs/utils/freezePartial.js +1 -1
  173. package/dist/cjs/utils/genPromise.js +2 -2
  174. package/dist/cjs/utils/getMostSimilar.js +1 -1
  175. package/dist/cjs/utils/injectRollupInputs.js +2 -2
  176. package/dist/cjs/utils/isFilePathAbsoluteFilesystem.js +1 -1
  177. package/dist/cjs/utils/objectAssignSafe.js +1 -1
  178. package/dist/cjs/utils/pLimit.js +4 -4
  179. package/dist/cjs/utils/parseNpmPackage.js +2 -2
  180. package/dist/cjs/utils/parseUrl.js +3 -3
  181. package/dist/cjs/utils/path.js +1 -1
  182. package/dist/cjs/utils/preservePropertyGetters.js +1 -1
  183. package/dist/cjs/utils/{removeFileExtention.js → removeFileExtension.js} +2 -2
  184. package/dist/cjs/utils/requireResolve.js +10 -10
  185. package/dist/cjs/utils/rollupSourceMap.js +2 -2
  186. package/dist/cjs/utils/stripAnsi.js +1 -1
  187. package/dist/cjs/utils/styleFileRE.js +1 -0
  188. package/dist/cjs/utils/trimWithAnsi.js +1 -1
  189. package/dist/esm/__internal/index.js +2 -2
  190. package/dist/esm/client/index.d.ts +1 -1
  191. package/dist/esm/client/index.js +1 -1
  192. package/dist/esm/client/node.js +1 -1
  193. package/dist/esm/client/runtime-client-routing/createPageContextClientSide.js +1 -1
  194. package/dist/esm/client/runtime-client-routing/getPageContext/removeBuiltInOverrides.js +1 -1
  195. package/dist/esm/client/runtime-client-routing/getPageContextCurrent.js +1 -1
  196. package/dist/esm/client/runtime-client-routing/getPageContextFromHooks.d.ts +2 -3
  197. package/dist/esm/client/runtime-client-routing/getPageContextFromHooks.js +5 -5
  198. package/dist/esm/client/runtime-client-routing/globalContext.js +1 -1
  199. package/dist/esm/client/runtime-client-routing/history.js +6 -6
  200. package/dist/esm/client/runtime-client-routing/initClientRouter.js +1 -1
  201. package/dist/esm/client/runtime-client-routing/initOnLinkClick.js +1 -1
  202. package/dist/esm/client/runtime-client-routing/initOnPopState.js +1 -1
  203. package/dist/esm/client/runtime-client-routing/isClientSideRoutable.js +1 -1
  204. package/dist/esm/client/runtime-client-routing/navigate.js +1 -1
  205. package/dist/esm/client/runtime-client-routing/prefetch/getPrefetchSettings.js +2 -2
  206. package/dist/esm/client/runtime-client-routing/prefetch.js +10 -10
  207. package/dist/esm/client/runtime-client-routing/renderPageClientSide.d.ts +1 -1
  208. package/dist/esm/client/runtime-client-routing/renderPageClientSide.js +20 -20
  209. package/dist/esm/client/runtime-client-routing/setScrollPosition.js +1 -1
  210. package/dist/esm/client/runtime-server-routing/createPageContextClientSide.js +1 -1
  211. package/dist/esm/client/shared/createGetGlobalContextClient.js +3 -3
  212. package/dist/esm/client/shared/loadPageConfigsLazyClientSide.js +1 -1
  213. package/dist/esm/client/shared/preparePageContextForPublicUsageClientShared.js +3 -3
  214. package/dist/esm/node/api/build.js +6 -2
  215. package/dist/esm/node/api/dev.js +1 -1
  216. package/dist/esm/node/api/prepareViteApiCall.js +8 -8
  217. package/dist/esm/node/api/prerender.js +1 -1
  218. package/dist/esm/node/api/preview.js +2 -2
  219. package/dist/esm/node/cli/entry.js +1 -1
  220. package/dist/esm/node/cli/parseCli.js +2 -2
  221. package/dist/esm/node/client/router.js +1 -1
  222. package/dist/esm/node/createPageRenderer.js +1 -1
  223. package/dist/esm/node/prerender/context.d.ts +1 -1
  224. package/dist/esm/node/prerender/context.js +1 -1
  225. package/dist/esm/node/prerender/resolvePrerenderConfig.d.ts +1 -0
  226. package/dist/esm/node/prerender/resolvePrerenderConfig.js +3 -2
  227. package/dist/esm/node/prerender/runPrerender.d.ts +9 -6
  228. package/dist/esm/node/prerender/runPrerender.js +90 -45
  229. package/dist/esm/node/prerender/runPrerenderEntry.js +1 -1
  230. package/dist/esm/node/prerender/utils.d.ts +1 -0
  231. package/dist/esm/node/prerender/utils.js +1 -0
  232. package/dist/esm/node/runtime/globalContext.js +25 -18
  233. package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +8 -8
  234. package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.js +1 -1
  235. package/dist/esm/node/runtime/html/injectAssets/inferHtmlTags.js +1 -1
  236. package/dist/esm/node/runtime/html/injectAssets/injectAssets__public.js +5 -5
  237. package/dist/esm/node/runtime/html/injectAssets/injectHtmlTags.js +3 -3
  238. package/dist/esm/node/runtime/html/injectAssets.js +2 -2
  239. package/dist/esm/node/runtime/html/renderHtml.js +10 -10
  240. package/dist/esm/node/runtime/html/serializeContext.js +5 -5
  241. package/dist/esm/node/runtime/html/stream.d.ts +1 -1
  242. package/dist/esm/node/runtime/html/stream.js +21 -21
  243. package/dist/esm/node/runtime/index-deprecated.js +2 -2
  244. package/dist/esm/node/runtime/index.js +1 -1
  245. package/dist/esm/node/runtime/renderPage/analyzePage.js +4 -4
  246. package/dist/esm/node/runtime/renderPage/assertArguments.js +1 -1
  247. package/dist/esm/node/runtime/renderPage/createHttpResponse/assertNoInfiniteHttpRedirect.js +1 -1
  248. package/dist/esm/node/runtime/renderPage/createHttpResponse.js +5 -6
  249. package/dist/esm/node/runtime/renderPage/createPageContextServerSide.d.ts +1 -1
  250. package/dist/esm/node/runtime/renderPage/createPageContextServerSide.js +4 -4
  251. package/dist/esm/node/runtime/renderPage/debugPageFiles.d.ts +1 -1
  252. package/dist/esm/node/runtime/renderPage/debugPageFiles.js +1 -1
  253. package/dist/esm/node/runtime/renderPage/execHookServer.js +2 -5
  254. package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +1 -1
  255. package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.js +5 -5
  256. package/dist/esm/node/runtime/renderPage/getEarlyHints.js +1 -1
  257. package/dist/esm/node/runtime/renderPage/getHttpResponseBody.js +2 -2
  258. package/dist/esm/node/runtime/renderPage/getPageAssets/getManifestEntry.js +1 -1
  259. package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +1 -1
  260. package/dist/esm/node/runtime/renderPage/getPageAssets.js +2 -2
  261. package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.js +1 -1
  262. package/dist/esm/node/runtime/renderPage/handlePageContextRequestUrl.js +1 -1
  263. package/dist/esm/node/runtime/renderPage/isFontFallback.js +3 -3
  264. package/dist/esm/node/runtime/renderPage/isNewError.d.ts +2 -0
  265. package/dist/esm/node/runtime/renderPage/isNewError.js +2 -1
  266. package/dist/esm/node/runtime/renderPage/loadPageConfigsLazyServerSide.js +11 -11
  267. package/dist/esm/node/runtime/renderPage/log404/index.js +5 -9
  268. package/dist/esm/node/runtime/renderPage/logErrorHint/errors.d.ts +1 -1
  269. package/dist/esm/node/runtime/renderPage/logErrorHint/errors.js +1 -1
  270. package/dist/esm/node/runtime/renderPage/logErrorHint.js +18 -18
  271. package/dist/esm/node/runtime/renderPage/loggerProd.d.ts +1 -1
  272. package/dist/esm/node/runtime/renderPage/loggerProd.js +3 -3
  273. package/dist/esm/node/runtime/renderPage/preparePageContextForPublicUsageServer.js +1 -1
  274. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +2 -2
  275. package/dist/esm/node/runtime/renderPage/resolveRedirects.d.ts +2 -0
  276. package/dist/esm/node/runtime/renderPage/resolveRedirects.js +24 -6
  277. package/dist/esm/node/runtime/renderPage.d.ts +0 -11
  278. package/dist/esm/node/runtime/renderPage.js +20 -37
  279. package/dist/esm/node/runtime/universal-middleware.js +2 -2
  280. package/dist/esm/node/runtime/utils.d.ts +1 -1
  281. package/dist/esm/node/runtime/utils.js +1 -1
  282. package/dist/esm/node/runtime-dev/createDevMiddleware.js +3 -3
  283. package/dist/esm/node/shared/extractAssetsQuery.js +1 -1
  284. package/dist/esm/node/shared/getVikeConfigError.d.ts +13 -0
  285. package/dist/esm/node/shared/getVikeConfigError.js +20 -0
  286. package/dist/esm/node/shared/resolveBase.js +1 -1
  287. package/dist/esm/node/shared/utils.d.ts +1 -0
  288. package/dist/esm/node/shared/utils.js +1 -0
  289. package/dist/esm/node/shared/virtualFiles/virtualFilePageConfigLazy.js +2 -2
  290. package/dist/esm/node/vite/index.js +2 -2
  291. package/dist/esm/node/vite/plugins/pluginBaseUrls.js +3 -3
  292. package/dist/esm/node/vite/plugins/pluginBuild/handleAssetsManifest.d.ts +3 -2
  293. package/dist/esm/node/vite/plugins/pluginBuild/handleAssetsManifest.js +14 -12
  294. package/dist/esm/node/vite/plugins/pluginBuild/pluginAutoFullBuild.js +10 -10
  295. package/dist/esm/node/vite/plugins/pluginBuild/pluginBuildApp.js +10 -10
  296. package/dist/esm/node/vite/plugins/pluginBuild/pluginBuildConfig.js +12 -12
  297. package/dist/esm/node/vite/plugins/pluginBuild/pluginBuildEntry.d.ts +1 -2
  298. package/dist/esm/node/vite/plugins/pluginBuild/pluginBuildEntry.js +11 -12
  299. package/dist/esm/node/vite/plugins/pluginBuild/pluginDistFileNames.js +11 -9
  300. package/dist/esm/node/vite/plugins/pluginBuild/pluginDistPackageJsonFile.js +2 -2
  301. package/dist/esm/node/vite/plugins/pluginBuild/pluginModuleBanner.js +3 -3
  302. package/dist/esm/node/vite/plugins/pluginBuild/pluginSuppressRollupWarning.js +3 -3
  303. package/dist/esm/node/vite/plugins/pluginBuild.js +1 -1
  304. package/dist/esm/node/vite/plugins/pluginCommon/assertResolveAlias.js +2 -2
  305. package/dist/esm/node/vite/plugins/pluginCommon.js +14 -14
  306. package/dist/esm/node/vite/plugins/pluginDev/determineFsAllowList.js +1 -1
  307. package/dist/esm/node/vite/plugins/pluginDev/determineOptimizeDeps.js +5 -5
  308. package/dist/esm/node/vite/plugins/pluginDev.js +8 -8
  309. package/dist/esm/node/vite/plugins/pluginEnvVars.js +5 -5
  310. package/dist/esm/node/vite/plugins/pluginExtractAssets.js +8 -8
  311. package/dist/esm/node/vite/plugins/pluginExtractExportNames.js +3 -3
  312. package/dist/esm/node/vite/plugins/pluginFileEnv.js +4 -4
  313. package/dist/esm/node/vite/plugins/pluginPreview.js +5 -5
  314. package/dist/esm/node/vite/plugins/pluginReplaceConstants.js +3 -3
  315. package/dist/esm/node/vite/plugins/pluginSetGlobalContext.js +7 -7
  316. package/dist/esm/node/vite/plugins/pluginVirtualFiles/getVirtualFileEntry.js +11 -11
  317. package/dist/esm/node/vite/plugins/pluginVirtualFiles/getVirtualFilePageConfigLazy.js +13 -3
  318. package/dist/esm/node/vite/plugins/pluginVirtualFiles.js +3 -3
  319. package/dist/esm/node/vite/plugins/pluginWorkaroundCssModuleHmr.js +1 -1
  320. package/dist/esm/node/vite/plugins/pluginWorkaroundVite6HmrRegression.js +2 -2
  321. package/dist/esm/node/vite/shared/addSsrMiddleware.js +3 -3
  322. package/dist/esm/node/vite/shared/findPageFiles.js +1 -1
  323. package/dist/esm/node/vite/shared/getFilePath.d.ts +5 -5
  324. package/dist/esm/node/vite/shared/getFilePath.js +22 -22
  325. package/dist/esm/node/vite/shared/getHttpRequestAsyncStore.js +4 -4
  326. package/dist/esm/node/vite/shared/getOutDirs.js +2 -2
  327. package/dist/esm/node/vite/shared/getViteConfigRuntime.js +3 -3
  328. package/dist/esm/node/vite/shared/isAsset.js +1 -1
  329. package/dist/esm/node/vite/shared/isViteCliCall.js +1 -1
  330. package/dist/esm/node/vite/shared/isViteServerBuild.js +2 -2
  331. package/dist/esm/node/vite/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errBabelReact.js +1 -1
  332. package/dist/esm/node/vite/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errBabelSolid.js +1 -1
  333. package/dist/esm/node/vite/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errEsbuild.js +5 -5
  334. package/dist/esm/node/vite/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errMdx1.js +3 -3
  335. package/dist/esm/node/vite/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errMdx2.js +10 -10
  336. package/dist/esm/node/vite/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errPostcss.js +2 -2
  337. package/dist/esm/node/vite/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errSwc.js +2 -2
  338. package/dist/esm/node/vite/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errSwcBig.js +2 -2
  339. package/dist/esm/node/vite/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errVueCss.js +2 -2
  340. package/dist/esm/node/vite/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errVueHtml.js +1 -1
  341. package/dist/esm/node/vite/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errVueJavascript.js +1 -1
  342. package/dist/esm/node/vite/shared/loggerNotProd/errorWithCodeSnippet.js +4 -4
  343. package/dist/esm/node/vite/shared/loggerNotProd.js +3 -3
  344. package/dist/esm/node/vite/shared/resolveClientEntriesDev.js +3 -3
  345. package/dist/esm/node/vite/shared/resolveVikeConfigInternal/assertExtensions.js +1 -1
  346. package/dist/esm/node/vite/shared/resolveVikeConfigInternal/configDefinitionsBuiltIn.js +50 -50
  347. package/dist/esm/node/vite/shared/resolveVikeConfigInternal/crawlPlusFiles/ignorePatternsBuiltIn.js +1 -1
  348. package/dist/esm/node/vite/shared/resolveVikeConfigInternal/crawlPlusFiles.js +10 -10
  349. package/dist/esm/node/vite/shared/resolveVikeConfigInternal/filesystemRouting.js +14 -5
  350. package/dist/esm/node/vite/shared/resolveVikeConfigInternal/getPlusFilesAll.js +4 -4
  351. package/dist/esm/node/vite/shared/resolveVikeConfigInternal/loadFileAtConfigTime.js +1 -1
  352. package/dist/esm/node/vite/shared/resolveVikeConfigInternal/pointerImports.js +5 -5
  353. package/dist/esm/node/vite/shared/resolveVikeConfigInternal/resolvePointerImport.js +6 -6
  354. package/dist/esm/node/vite/shared/resolveVikeConfigInternal/transpileAndExecuteFile.js +14 -14
  355. package/dist/esm/node/vite/shared/resolveVikeConfigInternal.d.ts +2 -2
  356. package/dist/esm/node/vite/shared/resolveVikeConfigInternal.js +52 -52
  357. package/dist/esm/node/vite/utils.d.ts +0 -6
  358. package/dist/esm/node/vite/utils.js +2 -7
  359. package/dist/esm/shared/assertHookReturnedObject.js +1 -1
  360. package/dist/esm/shared/assertPageContextProvidedByUser.d.ts +1 -1
  361. package/dist/esm/shared/assertPageContextProvidedByUser.js +2 -2
  362. package/dist/esm/shared/createGlobalContextShared.d.ts +2 -0
  363. package/dist/esm/shared/createGlobalContextShared.js +28 -20
  364. package/dist/esm/shared/createPageContextShared.js +1 -1
  365. package/dist/esm/shared/getPageContextRequestUrl.js +1 -1
  366. package/dist/esm/shared/getPageContextUrlComputed.js +5 -5
  367. package/dist/esm/shared/getPageFiles/analyzePageClientSide/analyzeExports.d.ts +1 -1
  368. package/dist/esm/shared/getPageFiles/analyzePageClientSide/analyzeExports.js +3 -3
  369. package/dist/esm/shared/getPageFiles/analyzePageClientSide/determineClientEntry.d.ts +1 -1
  370. package/dist/esm/shared/getPageFiles/analyzePageClientSide/determineClientEntry.js +1 -1
  371. package/dist/esm/shared/getPageFiles/analyzePageClientSide.js +3 -3
  372. package/dist/esm/shared/getPageFiles/fileTypes.js +1 -1
  373. package/dist/esm/shared/getPageFiles/getAllPageIdFiles.js +2 -2
  374. package/dist/esm/shared/getPageFiles/getPageFileObject.js +1 -1
  375. package/dist/esm/shared/getProxyForPublicUsage.js +2 -2
  376. package/dist/esm/shared/hooks/execHook.js +3 -3
  377. package/dist/esm/shared/hooks/getHook.js +4 -4
  378. package/dist/esm/shared/modifyUrl.js +1 -1
  379. package/dist/esm/shared/modifyUrlSameOrigin.js +1 -1
  380. package/dist/esm/shared/page-configs/assertPlusFileExport.js +2 -2
  381. package/dist/esm/shared/page-configs/getConfigValueBuildTime.js +4 -4
  382. package/dist/esm/shared/page-configs/resolveVikeConfigPublic.d.ts +2 -2
  383. package/dist/esm/shared/page-configs/resolveVikeConfigPublic.js +22 -22
  384. package/dist/esm/shared/page-configs/serialize/parsePageConfigs.js +3 -3
  385. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +11 -11
  386. package/dist/esm/shared/preparePageContextForPublicUsage.js +4 -4
  387. package/dist/esm/shared/route/abort.js +8 -8
  388. package/dist/esm/shared/route/debug.js +1 -1
  389. package/dist/esm/shared/route/deduceRouteStringFromFilesystemPath.js +1 -1
  390. package/dist/esm/shared/route/executeOnBeforeRouteHook.js +5 -5
  391. package/dist/esm/shared/route/index.js +6 -6
  392. package/dist/esm/shared/route/loadPageRoutes.js +8 -8
  393. package/dist/esm/shared/route/resolvePrecedence.d.ts +2 -2
  394. package/dist/esm/shared/route/resolvePrecedence.js +2 -2
  395. package/dist/esm/shared/route/resolveRoute.js +1 -1
  396. package/dist/esm/shared/route/resolveRouteFunction.js +2 -2
  397. package/dist/esm/shared/utils.d.ts +1 -0
  398. package/dist/esm/shared/utils.js +1 -0
  399. package/dist/esm/types/Config.d.ts +6 -0
  400. package/dist/esm/types/FilePath.d.ts +1 -1
  401. package/dist/esm/types/PageConfig.d.ts +1 -1
  402. package/dist/esm/types/PageContext.d.ts +2 -2
  403. package/dist/esm/types/index-dreprecated.d.ts +1 -1
  404. package/dist/esm/types/index.d.ts +3 -3
  405. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  406. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  407. package/dist/esm/utils/assert.js +9 -9
  408. package/dist/esm/utils/assertKeys.js +1 -1
  409. package/dist/esm/utils/assertSetup.js +1 -1
  410. package/dist/esm/utils/assertSingleInstance.js +5 -5
  411. package/dist/esm/utils/catchInfiniteLoop.js +1 -1
  412. package/dist/esm/utils/debug.js +1 -1
  413. package/dist/esm/utils/findFile.js +2 -2
  414. package/dist/esm/utils/findPackageJson.js +2 -2
  415. package/dist/esm/utils/formatHintLog.js +1 -1
  416. package/dist/esm/utils/freezePartial.js +1 -1
  417. package/dist/esm/utils/genPromise.d.ts +1 -1
  418. package/dist/esm/utils/genPromise.js +2 -2
  419. package/dist/esm/utils/getMostSimilar.js +1 -1
  420. package/dist/esm/utils/injectRollupInputs.js +2 -2
  421. package/dist/esm/utils/isFilePathAbsoluteFilesystem.js +1 -1
  422. package/dist/esm/utils/objectAssignSafe.js +1 -1
  423. package/dist/esm/utils/pLimit.js +4 -4
  424. package/dist/esm/utils/parseNpmPackage.js +2 -2
  425. package/dist/esm/utils/parseUrl.js +3 -3
  426. package/dist/esm/utils/path.js +1 -1
  427. package/dist/esm/utils/preservePropertyGetters.js +1 -1
  428. package/dist/esm/utils/removeFileExtension.d.ts +1 -0
  429. package/dist/esm/utils/{removeFileExtention.js → removeFileExtension.js} +1 -1
  430. package/dist/esm/utils/requireResolve.d.ts +3 -3
  431. package/dist/esm/utils/requireResolve.js +10 -10
  432. package/dist/esm/utils/rollupSourceMap.js +2 -2
  433. package/dist/esm/utils/stripAnsi.js +1 -1
  434. package/dist/esm/utils/styleFileRE.js +1 -0
  435. package/dist/esm/utils/trimWithAnsi.js +1 -1
  436. package/package.json +2 -2
  437. package/dist/esm/utils/removeFileExtention.d.ts +0 -1
@@ -21,14 +21,14 @@ async function preview(options = {}) {
21
21
  const outServerIndexRelative = path.relative(viteConfigResolved.root, outServerIndex);
22
22
  assertWarning(false, `Never run ${pc.cyan('$ vike preview')} in production, run ${pc.cyan(`$ node ${outServerIndexRelative}`)} instead (or Bun/Deno).`, { onlyOnce: true });
23
23
  return {
24
- viteConfig: viteConfigResolved
24
+ viteConfig: viteConfigResolved,
25
25
  };
26
26
  }
27
27
  else {
28
28
  const server = await previewVite(viteConfigFromUserEnhanced);
29
29
  return {
30
30
  viteServer: server,
31
- viteConfig: server.config
31
+ viteConfig: server.config,
32
32
  };
33
33
  }
34
34
  }
@@ -30,7 +30,7 @@ async function cmdDev() {
30
30
  const startupDurationString = pc.dim(`ready in ${pc.reset(pc.bold(String(Math.ceil(performance.now() - startTime))))} ms`);
31
31
  const hasExistingLogs = process.stdout.bytesWritten > 0 || process.stderr.bytesWritten > 0;
32
32
  info(` ${pc.yellow(`${pc.bold('Vike')} v${PROJECT_VERSION}`)} ${startupDurationString}\n`, {
33
- clear: !hasExistingLogs
33
+ clear: !hasExistingLogs,
34
34
  });
35
35
  viteServer.printUrls();
36
36
  }
@@ -6,7 +6,7 @@ const commands = [
6
6
  { name: 'dev', desc: 'Start development server' },
7
7
  { name: 'build', desc: 'Build for production' },
8
8
  { name: 'preview', desc: 'Start preview server using production build (only works for SSG apps)' },
9
- { name: 'prerender', desc: 'Pre-render pages (only needed when prerender.disableAutoRun is true)' }
9
+ { name: 'prerender', desc: 'Pre-render pages (only needed when prerender.disableAutoRun is true)' },
10
10
  ];
11
11
  function parseCli() {
12
12
  const command = getCommand();
@@ -67,7 +67,7 @@ function showHelp() {
67
67
  `More Vike settings can be passed over the ${pc.cyan('VIKE_CONFIG')} environment variable or as ${pc.cyan('CLI options')}.`,
68
68
  `More Vite settings can be passed over the ${pc.cyan('VITE_CONFIG')} environment variable.`,
69
69
  ``,
70
- `See ${pc.underline('https://vike.dev/cli')} for more information.`
70
+ `See ${pc.underline('https://vike.dev/cli')} for more information.`,
71
71
  ].join('\n'));
72
72
  process.exit(1);
73
73
  }
@@ -11,6 +11,6 @@ const onPopState = (() => { });
11
11
  function warnNoEffect(caller) {
12
12
  assertWarning(false, `Calling ${caller}() on the server-side has no effect`, {
13
13
  showStackTrace: true,
14
- onlyOnce: false
14
+ onlyOnce: false,
15
15
  });
16
16
  }
@@ -17,7 +17,7 @@ function showWarnings(options) {
17
17
  viteDevServer !== undefined && 'viteDevServer',
18
18
  root !== undefined && 'root',
19
19
  outDir !== undefined && 'outDir',
20
- isProduction !== undefined && 'isProduction'
20
+ isProduction !== undefined && 'isProduction',
21
21
  ].filter(notFalse);
22
22
  assertWarning(opts.length === 0, `The options ${str(opts)} you passed to \`createPageRenderer()\` have no effect anymore: they are now automatically determined.`, { onlyOnce: true });
23
23
  }
@@ -6,5 +6,5 @@ import type { VikeConfigInternal } from '../vite/shared/resolveVikeConfigInterna
6
6
  import type { PrerenderTrigger } from './runPrerender.js';
7
7
  declare function isPrerenderAutoRunEnabled(vikeConfig: VikeConfigInternal): boolean;
8
8
  declare function temp_disablePrerenderAutoRun(): void;
9
- declare function wasPrerenderRun(): PrerenderTrigger | undefined;
9
+ declare function wasPrerenderRun(): false | PrerenderTrigger;
10
10
  declare function setWasPrerenderRun(trigger: PrerenderTrigger): void;
@@ -17,7 +17,7 @@ function temp_disablePrerenderAutoRun() {
17
17
  globalObject.isDisabled = true;
18
18
  }
19
19
  function wasPrerenderRun() {
20
- return globalObject.wasPrerenderRun;
20
+ return globalObject.wasPrerenderRun || false;
21
21
  }
22
22
  function setWasPrerenderRun(trigger) {
23
23
  globalObject.wasPrerenderRun = trigger;
@@ -4,6 +4,7 @@ import { VikeConfigInternal } from '../vite/shared/resolveVikeConfigInternal.js'
4
4
  import type { PageConfigBuildTime } from '../../types/PageConfig.js';
5
5
  declare function resolvePrerenderConfigGlobal(vikeConfig: Pick<VikeConfigInternal, 'config' | '_pageConfigs' | '_from'>): {
6
6
  partial: boolean;
7
+ redirects: boolean | null;
7
8
  noExtraDir: boolean | null;
8
9
  keepDistServer: boolean;
9
10
  parallel: number | boolean;
@@ -9,10 +9,11 @@ function resolvePrerenderConfigGlobal(vikeConfig) {
9
9
  const prerenderSettings = prerenderConfigs.filter(isObject2);
10
10
  const prerenderConfigGlobal = {
11
11
  partial: pickFirst(prerenderSettings.map((c) => c.partial)) ?? false,
12
+ redirects: pickFirst(prerenderSettings.map((c) => c.redirects)) ?? null,
12
13
  noExtraDir: pickFirst(prerenderSettings.map((c) => c.noExtraDir)) ?? null,
13
14
  keepDistServer: pickFirst(prerenderSettings.map((c) => c.keepDistServer)) ?? false,
14
15
  parallel: pickFirst(prerenderSettings.map((c) => c.parallel)) ?? true,
15
- disableAutoRun: pickFirst(prerenderSettings.map((c) => c.disableAutoRun)) ?? false
16
+ disableAutoRun: pickFirst(prerenderSettings.map((c) => c.disableAutoRun)) ?? false,
16
17
  };
17
18
  let defaultLocalValue = false;
18
19
  {
@@ -34,7 +35,7 @@ function resolvePrerenderConfigGlobal(vikeConfig) {
34
35
  isPrerenderingEnabledForAllPages: vikeConfig._pageConfigs.length > 0 &&
35
36
  vikeConfig._pageConfigs.every((pageConfig) => resolvePrerenderConfigLocal(pageConfig)?.value ?? defaultLocalValue),
36
37
  isPrerenderingEnabled: vikeConfig._pageConfigs.length > 0 &&
37
- vikeConfig._pageConfigs.some((pageConfig) => resolvePrerenderConfigLocal(pageConfig)?.value ?? defaultLocalValue)
38
+ vikeConfig._pageConfigs.some((pageConfig) => resolvePrerenderConfigLocal(pageConfig)?.value ?? defaultLocalValue),
38
39
  });
39
40
  // TODO/next-major remove
40
41
  if (vikeConfig._pageConfigs.length === 0 && defaultLocalValue)
@@ -4,6 +4,7 @@ export type { PrerenderContextPublic };
4
4
  export type { PrerenderTrigger };
5
5
  import type { PageFile } from '../../shared/getPageFiles.js';
6
6
  import { type GlobalContextServerInternal } from '../runtime/globalContext.js';
7
+ import { type ResolvedConfig } from 'vite';
7
8
  import type { APIOptions } from '../api/types.js';
8
9
  type ProvidedByHook = null | {
9
10
  hookFilePath: string;
@@ -16,7 +17,9 @@ type ProvidedByHookTransformer = null | {
16
17
  type PageContextPrerendered = {
17
18
  urlOriginal: string;
18
19
  _providedByHook?: ProvidedByHook;
19
- pageId: string;
20
+ pageId: string | null;
21
+ isRedirect?: true;
22
+ is404: boolean;
20
23
  };
21
24
  type PrerenderedPageContexts = Record<string, PageContextPrerendered>;
22
25
  type PrerenderContextPublic = Pick<PrerenderContext, 'pageContexts' | 'output'>;
@@ -59,7 +62,7 @@ type PrerenderOptions = APIOptions & {
59
62
  };
60
63
  type PrerenderTrigger = '$ vike prerender' | 'prerender()' | 'auto-run';
61
64
  declare function runPrerender(options: PrerenderOptions | undefined, trigger: PrerenderTrigger): Promise<{
62
- viteConfig: import("vite").ResolvedConfig;
65
+ viteConfig: ResolvedConfig;
63
66
  }>;
64
67
  declare function createPageContextPrerendering(urlOriginal: string, prerenderContext: PrerenderContext, globalContext: GlobalContextServerInternal, is404: boolean, pageId: string | undefined, providedByHook: ProvidedByHook): Promise<((({
65
68
  _isOriginalObject: true;
@@ -94,7 +97,7 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
94
97
  _isPrerendering: false;
95
98
  assetsManifest: null;
96
99
  _viteDevServer: import("vite").ViteDevServer;
97
- viteConfig: import("vite").ResolvedConfig;
100
+ viteConfig: ResolvedConfig;
98
101
  viteConfigRuntime: {
99
102
  root: string;
100
103
  build: {
@@ -112,7 +115,7 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
112
115
  _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
113
116
  } | {
114
117
  _isPrerendering: true;
115
- viteConfig: import("vite").ResolvedConfig;
118
+ viteConfig: ResolvedConfig;
116
119
  _isProduction: true;
117
120
  assetsManifest: import("../../types/ViteManifest.js").ViteManifest;
118
121
  _viteDevServer: null;
@@ -215,7 +218,7 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
215
218
  _isPrerendering: false;
216
219
  assetsManifest: null;
217
220
  _viteDevServer: import("vite").ViteDevServer;
218
- viteConfig: import("vite").ResolvedConfig;
221
+ viteConfig: ResolvedConfig;
219
222
  viteConfigRuntime: {
220
223
  root: string;
221
224
  build: {
@@ -233,7 +236,7 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
233
236
  _onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
234
237
  } | {
235
238
  _isPrerendering: true;
236
- viteConfig: import("vite").ResolvedConfig;
239
+ viteConfig: ResolvedConfig;
237
240
  _isProduction: true;
238
241
  assetsManifest: import("../../types/ViteManifest.js").ViteManifest;
239
242
  _viteDevServer: null;
@@ -2,14 +2,14 @@ export { runPrerender };
2
2
  // Failed attempt to run this file (i.e. pre-rendering) in a separate process: https://github.com/vikejs/vike/commit/48feda87012115b32a5c9701da354cb8c138dfd2
3
3
  // - The issue is that prerenderContext needs to be serialized for being able to pass it from the child process to the parent process.
4
4
  // - The prerenderContext is used by vike-vercel
5
- import path from 'path';
5
+ import path from 'node:path';
6
6
  import { route } from '../../shared/route/index.js';
7
- import { assert, assertUsage, assertWarning, hasProp, objectAssign, isObjectWithKeys, isCallable, isPropertyGetter, assertPosixPath, urlToFile, isPlainObject, pLimit, isArray, onSetupPrerender, PROJECT_VERSION, preservePropertyGetters, changeEnumerable } from './utils.js';
7
+ import { assert, assertUsage, assertWarning, hasProp, objectAssign, isObjectWithKeys, isCallable, isPropertyGetter, assertPosixPath, urlToFile, isPlainObject, pLimit, isArray, onSetupPrerender, PROJECT_VERSION, preservePropertyGetters, changeEnumerable, escapeHtml, } from './utils.js';
8
8
  import { prerenderPage } from '../runtime/renderPage/renderPageAlreadyRouted.js';
9
9
  import { createPageContextServerSide } from '../runtime/renderPage/createPageContextServerSide.js';
10
10
  import pc from '@brillout/picocolors';
11
- import { cpus } from 'os';
12
- import { getGlobalContextServerInternal, initGlobalContext_runPrerender, setGlobalContext_isPrerendering } from '../runtime/globalContext.js';
11
+ import { cpus } from 'node:os';
12
+ import { getGlobalContextServerInternal, initGlobalContext_runPrerender, setGlobalContext_isPrerendering, } from '../runtime/globalContext.js';
13
13
  import { resolveConfig as resolveViteConfig } from 'vite';
14
14
  import { getPageFilesServerSide } from '../../shared/getPageFiles.js';
15
15
  import { getPageContextRequestUrl } from '../../shared/getPageContextRequestUrl.js';
@@ -19,7 +19,7 @@ import { loadConfigValues } from '../../shared/page-configs/loadConfigValues.js'
19
19
  import { getErrorPageId, isErrorPage } from '../../shared/error-page.js';
20
20
  import { isAbortError } from '../../shared/route/abort.js';
21
21
  import { loadPageConfigsLazyServerSide } from '../runtime/renderPage/loadPageConfigsLazyServerSide.js';
22
- import { getHookFromPageConfig, getHookFromPageConfigGlobal, getHookTimeoutDefault, getHook_setIsPrerenderering } from '../../shared/hooks/getHook.js';
22
+ import { getHookFromPageConfig, getHookFromPageConfigGlobal, getHookTimeoutDefault, getHook_setIsPrerenderering, } from '../../shared/hooks/getHook.js';
23
23
  import { noRouteMatch } from '../../shared/route/noRouteMatch.js';
24
24
  import { getVikeConfigInternal } from '../vite/shared/resolveVikeConfigInternal.js';
25
25
  import { execHookWithoutPageContext, isUserHookError } from '../../shared/hooks/execHook.js';
@@ -28,6 +28,7 @@ import { resolvePrerenderConfigGlobal, resolvePrerenderConfigLocal } from './res
28
28
  import { getOutDirs } from '../vite/shared/getOutDirs.js';
29
29
  import fs from 'node:fs';
30
30
  import { getProxyForPublicUsage } from '../../shared/getProxyForPublicUsage.js';
31
+ import { getStaticRedirectsForPrerender } from '../runtime/renderPage/resolveRedirects.js';
31
32
  const docLink = 'https://vike.dev/i18n#pre-rendering';
32
33
  async function runPrerender(options = {}, trigger) {
33
34
  setWasPrerenderRun(trigger);
@@ -42,8 +43,7 @@ async function runPrerender(options = {}, trigger) {
42
43
  await disableReactStreaming();
43
44
  const viteConfig = await resolveViteConfig(options.viteConfig || {}, 'build', 'production');
44
45
  const vikeConfig = await getVikeConfigInternal();
45
- const { outDirClient, outDirServer } = getOutDirs(viteConfig);
46
- const { root } = viteConfig;
46
+ const { outDirServer } = getOutDirs(viteConfig);
47
47
  const prerenderConfigGlobal = resolvePrerenderConfigGlobal(vikeConfig);
48
48
  const { partial, noExtraDir, parallel, defaultLocalValue, isPrerenderingEnabled } = prerenderConfigGlobal;
49
49
  if (!isPrerenderingEnabled) {
@@ -67,7 +67,7 @@ async function runPrerender(options = {}, trigger) {
67
67
  output: [],
68
68
  _noExtraDir: noExtraDir,
69
69
  _pageContextInit: options.pageContextInit ?? null,
70
- _prerenderedPageContexts: {}
70
+ _prerenderedPageContexts: {},
71
71
  };
72
72
  const doNotPrerenderList = [];
73
73
  await collectDoNoPrerenderList(vikeConfig._pageConfigs, doNotPrerenderList, defaultLocalValue, concurrencyLimit, globalContext);
@@ -88,12 +88,19 @@ async function runPrerender(options = {}, trigger) {
88
88
  const onComplete = async (htmlFile) => {
89
89
  prerenderedCount++;
90
90
  const { pageId } = htmlFile.pageContext;
91
- assert(pageId);
92
- prerenderContext._prerenderedPageContexts[pageId] = htmlFile.pageContext;
93
- await writeFiles(htmlFile, root, outDirClient, options.onPagePrerender, prerenderContext.output, logLevel);
91
+ assert((typeof pageId === 'string' && pageId) || pageId === null);
92
+ if (pageId) {
93
+ prerenderContext._prerenderedPageContexts[pageId] = htmlFile.pageContext;
94
+ }
95
+ await writeFiles(htmlFile, viteConfig, options.onPagePrerender, prerenderContext, logLevel);
94
96
  };
95
97
  await prerenderPages(prerenderContext, concurrencyLimit, onComplete);
96
98
  warnContradictoryNoPrerenderList(prerenderContext._prerenderedPageContexts, doNotPrerenderList);
99
+ const { redirects, isPrerenderingEnabledForAllPages } = prerenderConfigGlobal;
100
+ if (redirects !== null ? redirects : isPrerenderingEnabledForAllPages) {
101
+ const showWarningUponDynamicRedirects = !prerenderConfigGlobal.partial;
102
+ await prerenderRedirects(globalContext, onComplete, showWarningUponDynamicRedirects);
103
+ }
97
104
  if (logLevel === 'info') {
98
105
  console.log(`${pc.green(`✓`)} ${prerenderedCount} HTML documents pre-rendered.`);
99
106
  }
@@ -176,7 +183,7 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext,
176
183
  hookName: 'onBeforePrerenderStart',
177
184
  hookFilePath,
178
185
  pageId: pageConfig.pageId,
179
- hookTimeout
186
+ hookTimeout,
180
187
  });
181
188
  })));
182
189
  // 0.4 design
@@ -201,7 +208,7 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext,
201
208
  hookName: 'prerender',
202
209
  hookFilePath,
203
210
  pageId: p.pageId,
204
- hookTimeout: getHookTimeoutDefault('onBeforePrerenderStart')
211
+ hookTimeout: getHookTimeoutDefault('onBeforePrerenderStart'),
205
212
  });
206
213
  })));
207
214
  await Promise.all(onBeforePrerenderStartHooks.map(({ pageId, ...hook }) => concurrencyLimit(async () => {
@@ -266,7 +273,7 @@ function getUrlList404(globalContext) {
266
273
  urlList.push({
267
274
  // A URL is required for `viteDevServer.transformIndexHtml(url,html)`
268
275
  urlOriginal: '/404',
269
- pageId: errorPageId
276
+ pageId: errorPageId,
270
277
  });
271
278
  }
272
279
  return urlList;
@@ -284,10 +291,10 @@ async function createPageContexts(urlList, prerenderContext, globalContext, conc
284
291
  async function createPageContextPrerendering(urlOriginal, prerenderContext, globalContext, is404, pageId, providedByHook) {
285
292
  const pageContextInit = {
286
293
  urlOriginal,
287
- ...prerenderContext._pageContextInit
294
+ ...prerenderContext._pageContextInit,
288
295
  };
289
296
  const pageContext = await createPageContextServerSide(pageContextInit, globalContext, {
290
- isPrerendering: true
297
+ isPrerendering: true,
291
298
  });
292
299
  assert(pageContext.isPrerendering === true);
293
300
  objectAssign(pageContext, {
@@ -298,7 +305,7 @@ async function createPageContextPrerendering(urlOriginal, prerenderContext, glob
298
305
  _prerenderContext: prerenderContext,
299
306
  _providedByHook: providedByHook,
300
307
  _urlOriginalModifiedByHook: null,
301
- is404
308
+ is404,
302
309
  });
303
310
  if (!is404) {
304
311
  const pageContextFromRoute = await route(pageContext);
@@ -312,7 +319,7 @@ async function createPageContextPrerendering(urlOriginal, prerenderContext, glob
312
319
  objectAssign(pageContext, {
313
320
  pageId,
314
321
  _debugRouteMatches: [],
315
- routeParams: {}
322
+ routeParams: {},
316
323
  });
317
324
  }
318
325
  objectAssign(pageContext, await loadPageConfigsLazyServerSide(pageContext));
@@ -355,7 +362,7 @@ function assertRouteMatch(pageContextFromRoute, pageContext) {
355
362
  assertUsage(false, `The ${hookName}() hook defined by ${hookFilePath} returns a URL ${pc.cyan(urlOriginal)} that ${noRouteMatch}. Make sure that the URLs returned by ${hookName}() always match the route of a page.`);
356
363
  }
357
364
  else {
358
- // `prerenderHookFile` is `null` when the URL was deduced by the Filesytem Routing of `.page.js` files. The `onBeforeRoute()` can override Filesystem Routing; it is therefore expected that the deduced URL may not match any page.
365
+ // `prerenderHookFile` is `null` when the URL was deduced by the Filesystem Routing of `.page.js` files. The `onBeforeRoute()` can override Filesystem Routing; it is therefore expected that the deduced URL may not match any page.
359
366
  assert(pageContextFromRoute._routingProvidedByOnBeforeRouteHook);
360
367
  // Abort since the URL doesn't correspond to any page
361
368
  return;
@@ -372,7 +379,7 @@ async function callOnPrerenderStartHook(prerenderContext, globalContext, concurr
372
379
  onPrerenderStartHook = {
373
380
  ...hook,
374
381
  // Make TypeScript happy
375
- hookName
382
+ hookName,
376
383
  };
377
384
  }
378
385
  }
@@ -385,7 +392,7 @@ async function callOnPrerenderStartHook(prerenderContext, globalContext, concurr
385
392
  if (!p.exportNames?.includes('onBeforePrerender'))
386
393
  return false;
387
394
  assertUsage(p.fileType !== '.page.client', `${p.filePath} (which is a \`.page.client.js\` file) has \`export { onBeforePrerender }\` but it is only allowed in \`.page.server.js\` or \`.page.js\` files`);
388
- assertUsage(p.isDefaultPageFile, `${p.filePath} has \`export { onBeforePrerender }\` but it is only allowed in \`_defaut.page.\` files`);
395
+ assertUsage(p.isDefaultPageFile, `${p.filePath} has \`export { onBeforePrerender }\` but it is only allowed in \`_default.page.\` files`);
389
396
  return true;
390
397
  });
391
398
  if (pageFilesWithOnBeforePrerenderHook.length === 0) {
@@ -406,7 +413,7 @@ async function callOnPrerenderStartHook(prerenderContext, globalContext, concurr
406
413
  hookFn: hook.onBeforePrerender,
407
414
  hookFilePath: hook.hookFilePath,
408
415
  hookName: 'onBeforePrerender',
409
- hookTimeout
416
+ hookTimeout,
410
417
  };
411
418
  }
412
419
  if (!onPrerenderStartHook) {
@@ -424,7 +431,7 @@ async function callOnPrerenderStartHook(prerenderContext, globalContext, concurr
424
431
  return pageContext.urlOriginal;
425
432
  },
426
433
  enumerable: false,
427
- configurable: true
434
+ configurable: true,
428
435
  });
429
436
  assert(isPropertyGetter(pageContext, 'url'));
430
437
  assert(pageContext.urlOriginal);
@@ -455,8 +462,8 @@ async function callOnPrerenderStartHook(prerenderContext, globalContext, concurr
455
462
  assertWarning(false, `${errPrefix} returns ${pc.cyan('{ globalContext: { prerenderPageContexts } }')} but the return value has been renamed to ${pc.cyan('{ prerenderContext: { pageContexts } }')}, see ${docLink}`, { onlyOnce: true });
456
463
  result = {
457
464
  prerenderContext: {
458
- pageContexts: result.globalContext.prerenderPageContexts
459
- }
465
+ pageContexts: result.globalContext.prerenderPageContexts,
466
+ },
460
467
  };
461
468
  }
462
469
  assertUsage(isObjectWithKeys(result, ['prerenderContext']) &&
@@ -482,7 +489,7 @@ async function callOnPrerenderStartHook(prerenderContext, globalContext, concurr
482
489
  if (pageContext.urlOriginal !== pageContext._urlOriginalBeforeHook && !pageContext.is404) {
483
490
  pageContext._urlOriginalModifiedByHook = {
484
491
  hookFilePath,
485
- hookName
492
+ hookName,
486
493
  };
487
494
  const pageContextFromRoute = await route(pageContext,
488
495
  // Avoid calling onBeforeRoute() twice, otherwise onBeforeRoute() will wrongfully believe URL doesn't have locale after onBeforeRoute() already removed the local from the URL when called the first time.
@@ -507,7 +514,6 @@ async function prerenderPages(prerenderContext, concurrencyLimit, onComplete) {
507
514
  pageContext,
508
515
  htmlString: documentHtml,
509
516
  pageContextSerialized,
510
- doNotCreateExtraDirectory: prerenderContext._noExtraDir ?? pageContext.is404
511
517
  });
512
518
  })));
513
519
  }
@@ -536,23 +542,24 @@ async function warnMissingPages(prerenderedPageContexts, globalContext, doNotPre
536
542
  .filter((pageId) => !isErrorPage(pageId, globalContext._pageConfigs))
537
543
  .forEach((pageId) => {
538
544
  const pageAt = isV1 ? pageId : `\`${pageId}.page.*\``;
539
- assertWarning(partial, `Cannot pre-render page ${pageAt} because it has a non-static route, while no ${hookName}() hook returned any URL matching the page's route. You need to use a ${hookName}() hook (https://vike.dev/${hookName}) providing a list of URLs for ${pageAt} that should be pre-rendered. If you don't want to pre-render ${pageAt} then use the option prerender.partial (https://vike.dev/prerender#partial) to suppress this warning.`, { onlyOnce: true });
545
+ assertWarning(partial, `Cannot pre-render page ${pageAt} because it has a non-static route, while there isn't any ${hookName}() hook returning an URL matching the page's route. You must use a ${hookName}() hook (https://vike.dev/${hookName}) for providing the list of URLs to be pre-rendered for that page. If you want to skip pre-rendering that page, you can remove this warning by setting +prerender to false at ${pageAt} (https://vike.dev/prerender#toggle) or by setting +prerender.partial to true (https://vike.dev/prerender#partial).`, { onlyOnce: true });
540
546
  });
541
547
  }
542
- async function writeFiles({ pageContext, htmlString, pageContextSerialized, doNotCreateExtraDirectory }, root, outDirClient, onPagePrerender, output, logLevel) {
543
- const { urlOriginal } = pageContext;
544
- assert(urlOriginal.startsWith('/'));
545
- const writeJobs = [
546
- write(urlOriginal, pageContext, 'HTML', htmlString, root, outDirClient, doNotCreateExtraDirectory, onPagePrerender, output, logLevel)
547
- ];
548
+ async function writeFiles({ pageContext, htmlString, pageContextSerialized }, viteConfig, onPagePrerender, prerenderContext, logLevel) {
549
+ const writeJobs = [write(pageContext, 'HTML', htmlString, viteConfig, onPagePrerender, prerenderContext, logLevel)];
548
550
  if (pageContextSerialized !== null) {
549
- writeJobs.push(write(urlOriginal, pageContext, 'JSON', pageContextSerialized, root, outDirClient, doNotCreateExtraDirectory, onPagePrerender, output, logLevel));
551
+ writeJobs.push(write(pageContext, 'JSON', pageContextSerialized, viteConfig, onPagePrerender, prerenderContext, logLevel));
550
552
  }
551
553
  await Promise.all(writeJobs);
552
554
  }
553
- async function write(urlOriginal, pageContext, fileType, fileContent, root, outDirClient, doNotCreateExtraDirectory, onPagePrerender, output, logLevel) {
555
+ async function write(pageContext, fileType, fileContent, viteConfig, onPagePrerender, prerenderContext, logLevel) {
556
+ const { urlOriginal } = pageContext;
557
+ assert(urlOriginal.startsWith('/'));
558
+ const { outDirClient } = getOutDirs(viteConfig);
559
+ const { root } = viteConfig;
554
560
  let fileUrl;
555
561
  if (fileType === 'HTML') {
562
+ const doNotCreateExtraDirectory = prerenderContext._noExtraDir ?? pageContext.is404;
556
563
  fileUrl = urlToFile(urlOriginal, '.html', doNotCreateExtraDirectory);
557
564
  }
558
565
  else {
@@ -563,7 +570,7 @@ async function write(urlOriginal, pageContext, fileType, fileContent, root, outD
563
570
  assert(fileUrl.startsWith('/'));
564
571
  const filePathRelative = fileUrl.slice(1);
565
572
  assert(!filePathRelative.startsWith('/'),
566
- // Let's remove this debug info after we add a assertUsage() avoiding https://github.com/vikejs/vike/issues/1929
573
+ // https://github.com/vikejs/vike/issues/1929
567
574
  { urlOriginal, fileUrl });
568
575
  assertPosixPath(outDirClient);
569
576
  assertPosixPath(filePathRelative);
@@ -571,20 +578,20 @@ async function write(urlOriginal, pageContext, fileType, fileContent, root, outD
571
578
  objectAssign(pageContext, {
572
579
  _prerenderResult: {
573
580
  filePath,
574
- fileContent
575
- }
581
+ fileContent,
582
+ },
576
583
  });
577
- output.push({
584
+ prerenderContext.output.push({
578
585
  filePath,
579
586
  fileType,
580
587
  fileContent,
581
- pageContext
588
+ pageContext,
582
589
  });
583
590
  if (onPagePrerender) {
584
591
  await onPagePrerender(pageContext);
585
592
  }
586
593
  else {
587
- const { promises } = await import('fs');
594
+ const { promises } = await import('node:fs');
588
595
  const { writeFile, mkdir } = promises;
589
596
  await mkdir(path.posix.dirname(filePath), { recursive: true });
590
597
  await writeFile(filePath, fileContent);
@@ -641,7 +648,7 @@ function checkOutdatedOptions(options) {
641
648
  ['base', 'outDir'].forEach((prop) => {
642
649
  assertWarning(options[prop] === undefined, `[prerender()] Option ${pc.cyan(prop)} is outdated and has no effect (vike now automatically determines ${pc.cyan(prop)})`, {
643
650
  showStackTrace: true,
644
- onlyOnce: true
651
+ onlyOnce: true,
645
652
  });
646
653
  });
647
654
  }
@@ -682,10 +689,10 @@ function preparePrerenderContextForPublicUsage(prerenderContext) {
682
689
  get() {
683
690
  assertWarning(false, `prerenderPageContexts has been renamed pageContexts, see ${pc.underline(docLink)}`, {
684
691
  showStackTrace: true,
685
- onlyOnce: true
692
+ onlyOnce: true,
686
693
  });
687
694
  return prerenderContext.pageContexts;
688
- }
695
+ },
689
696
  });
690
697
  }
691
698
  // Required because of https://vike.dev/i18n#pre-rendering
@@ -696,3 +703,41 @@ function preparePrerenderContextForPublicUsage(prerenderContext) {
696
703
  const prerenderContextPublic = getProxyForPublicUsage(prerenderContext, 'prerenderContext');
697
704
  return prerenderContextPublic;
698
705
  }
706
+ async function prerenderRedirects(globalContext, onComplete, showWarningUponDynamicRedirects) {
707
+ const redirects = globalContext.config.redirects ?? [];
708
+ const redirectsStatic = getStaticRedirectsForPrerender(redirects, showWarningUponDynamicRedirects);
709
+ for (const [urlSource, urlTarget] of Object.entries(redirectsStatic)) {
710
+ const urlOriginal = urlSource;
711
+ const htmlString = getRedirectHtml(urlTarget);
712
+ await onComplete({
713
+ pageContext: { urlOriginal, pageId: null, is404: false, isRedirect: true },
714
+ htmlString,
715
+ pageContextSerialized: null,
716
+ });
717
+ }
718
+ }
719
+ function getRedirectHtml(urlTarget) {
720
+ const urlTargetSafe = escapeHtml(urlTarget);
721
+ // To test it: /test/playground => http://localhost:3000/download
722
+ const htmlString = `<!DOCTYPE html>
723
+ <html lang="en">
724
+ <head>
725
+ <meta charset="UTF-8">
726
+ <meta http-equiv="refresh" content="0;url=${urlTargetSafe}">
727
+ <title>Redirect ${urlTargetSafe}</title>
728
+ <style>body{opacity:0}</style>
729
+ <noscript>
730
+ <style>body{opacity:1}</style>
731
+ </noscript>
732
+ </head>
733
+ <body style="min-height: 100vh; margin: 0; font-family: sans-serif; display: flex; justify-content: center; align-items: center; transition: opacity 0.3s;">
734
+ <script>setTimeout(()=>{document.body.style.opacity=1},2000)</script>
735
+ <div>
736
+ <h1>Redirect <a href="${urlTargetSafe}"><code style="background-color: #eaeaea; padding: 3px 5px; border-radius: 4px;">${urlTargetSafe}</code></a></h1>
737
+ <p>If you aren't redirected, click the link above.</p>
738
+ <!-- This HTML was generated by Vike. -->
739
+ </div>
740
+ </body>
741
+ </html>`;
742
+ return htmlString;
743
+ }
@@ -48,6 +48,6 @@ function runPrerender_forceExit() {
48
48
  process.exit(0);
49
49
  /* I guess there is no need to tell the user about it? Let's see if a user complains.
50
50
  * I don't known whether there is a way to call process.exit(0) only if needed, thus I'm not sure if there is a way to conditionally show a assertInfo().
51
- assertInfo(false, "Pre-rendering was forced exit. (Didn't gracefully exit because the event queue isn't empty. This is usally fine, see ...", { onlyOnce: false })
51
+ assertInfo(false, "Pre-rendering was forced exit. (Didn't gracefully exit because the event queue isn't empty. This is usually fine, see ...", { onlyOnce: false })
52
52
  */
53
53
  }
@@ -16,3 +16,4 @@ export * from '../../utils/isObject.js';
16
16
  export * from '../../utils/isNullish.js';
17
17
  export * from '../../utils/preservePropertyGetters.js';
18
18
  export * from '../../utils/changeEnumerable.js';
19
+ export * from '../../utils/escapeHtml.js';
@@ -18,3 +18,4 @@ export * from '../../utils/isObject.js';
18
18
  export * from '../../utils/isNullish.js';
19
19
  export * from '../../utils/preservePropertyGetters.js';
20
20
  export * from '../../utils/changeEnumerable.js';
21
+ export * from '../../utils/escapeHtml.js';