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
package/README.md CHANGED
@@ -1,3 +1,5 @@
1
- # [vike.dev](https://vike.dev)
1
+ # `vike`
2
2
 
3
- Docs at [vike.dev](https://vike.dev).
3
+ 📚 [Docs](https://vike.dev)
4
+ ⚙️ [Source code](https://github.com/vikejs/vike/tree/main/packages/vike)
5
+ 📦 [npm package](https://npmjs.com/package/vike)
@@ -20,12 +20,12 @@ async function getPagesAndRoutes() {
20
20
  const { globalContext } = await (0, globalContext_js_2.getGlobalContextServerInternal)();
21
21
  const {
22
22
  //
23
- _pageRoutes: pageRoutes, _pageFilesAll: pageFilesAll, _pageConfigs: pageConfigs, _allPageIds: allPageIds } = globalContext;
23
+ _pageRoutes: pageRoutes, _pageFilesAll: pageFilesAll, _pageConfigs: pageConfigs, _allPageIds: allPageIds, } = globalContext;
24
24
  return {
25
25
  pageRoutes,
26
26
  pageFilesAll,
27
27
  pageConfigs,
28
- allPageIds
28
+ allPageIds,
29
29
  };
30
30
  }
31
31
  async function route(pageContext) {
@@ -44,6 +44,6 @@ async function addGlobalContext(globalContext) {
44
44
  const { pageRoutes, onBeforeRouteHook } = await (0, loadPageRoutes_js_1.loadPageRoutes)(globalContext._pageFilesAll, globalContext._pageConfigs, globalContext._pageConfigGlobal, globalContext._allPageIds);
45
45
  return {
46
46
  _pageRoutes: pageRoutes,
47
- _onBeforeRouteHook: onBeforeRouteHook
47
+ _onBeforeRouteHook: onBeforeRouteHook,
48
48
  };
49
49
  }
@@ -10,7 +10,7 @@ const globalObject = (0, utils_js_1.getGlobalObject)('createGetGlobalContextClie
10
10
  const { promise: globalContextPromise, resolve: globalContextPromiseResolve } = (0, utils_js_1.genPromise)();
11
11
  return {
12
12
  globalContextPromise,
13
- globalContextPromiseResolve
13
+ globalContextPromiseResolve,
14
14
  };
15
15
  })());
16
16
  function createGetGlobalContextClient(virtualFileExports, isClientRouting, addGlobalContext) {
@@ -34,7 +34,7 @@ function createGetGlobalContextClient(virtualFileExports, isClientRouting, addGl
34
34
  *
35
35
  * We recommend using `import.meta.env.SSR` instead, see https://vike.dev/globalContext
36
36
  */
37
- isClientSide: true
37
+ isClientSide: true,
38
38
  };
39
39
  (0, utils_js_1.objectAssign)(globalContextAddendum, (0, getJsonSerializedInHtml_js_1.getGlobalContextSerializedInHtml)());
40
40
  (0, utils_js_1.objectAssign)(globalContextAddendum, await addGlobalContext?.(globalContext));
@@ -22,7 +22,7 @@ function preparePageContextForPublicUsageClientMinimal(pageContext) {
22
22
  const pageContextPublic = (0, preparePageContextForPublicUsage_js_1.preparePageContextForPublicUsage)(pageContext);
23
23
  return pageContextPublic;
24
24
  }
25
- // With Vue + Cient Routing, the `pageContext` is made reactive:
25
+ // With Vue + Client Routing, the `pageContext` is made reactive:
26
26
  // ```js
27
27
  // import { reactive } from 'vue'
28
28
  // // See /examples/vue-full/renderer/createVueApp.ts
@@ -31,7 +31,7 @@ function preparePageContextForPublicUsageClientMinimal(pageContext) {
31
31
  function supportVueReactiviy(pageContext) {
32
32
  resolveGetters(pageContext);
33
33
  }
34
- // Remove propery descriptor getters because they break Vue's reactivity.
34
+ // Remove property descriptor getters because they break Vue's reactivity.
35
35
  // E.g. resolve the `pageContext.urlPathname` getter.
36
36
  function resolveGetters(pageContext) {
37
37
  Object.entries(pageContext).forEach(([key, val]) => {
@@ -34,9 +34,13 @@ async function build(options = {}) {
34
34
  // > Rationale: https://github.com/vikejs/vike/issues/2123
35
35
  await (0, vite_1.build)(viteConfigFromUserEnhanced);
36
36
  // After pre-rendering, when using the Vike CLI, the process is forcefully exited at the end of the buildVite() call above.
37
- const prerenderTrigger = (0, context_js_2.wasPrerenderRun)();
38
- if ((0, context_js_1.isVikeCli)() && prerenderTrigger && prerenderTrigger !== 'prerender()')
37
+ if (
38
+ // When calling Vike's prerender() API pre-rendering is run without force exit
39
+ ![false, 'prerender()'].includes((0, context_js_2.wasPrerenderRun)()) &&
40
+ // When calling Vike's build() API pre-rendering is auto run without force exit
41
+ (0, context_js_1.isVikeCli)()) {
39
42
  (0, utils_js_1.assert)(false);
43
+ }
40
44
  }
41
45
  return {
42
46
  /* We don't return `viteConfig` because `viteConfigFromUserEnhanced` is `InlineConfig` not `ResolvedConfig`
@@ -15,6 +15,6 @@ async function dev(options = {}) {
15
15
  const server = await (0, vite_1.createServer)(viteConfigFromUserEnhanced);
16
16
  return {
17
17
  viteServer: server,
18
- viteConfig: server.config
18
+ viteConfig: server.config,
19
19
  };
20
20
  }
@@ -43,7 +43,7 @@ exports.normalizeViteRoot = normalizeViteRoot;
43
43
  const vite_1 = require("vite");
44
44
  const context_js_1 = require("./context.js");
45
45
  const resolveVikeConfigInternal_js_1 = require("../vite/shared/resolveVikeConfigInternal.js");
46
- const path_1 = __importDefault(require("path"));
46
+ const node_path_1 = __importDefault(require("node:path"));
47
47
  const utils_js_1 = require("./utils.js");
48
48
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
49
49
  const globalContext_js_1 = require("../runtime/globalContext.js");
@@ -65,7 +65,7 @@ async function resolveConfigs(viteConfigFromUserApiOptions, operation) {
65
65
  (0, resolveVikeConfigInternal_js_1.setVikeConfigContext)({
66
66
  userRootDir: viteInfo.root,
67
67
  isDev: operation === 'dev',
68
- vikeVitePluginOptions: viteInfo.vikeVitePluginOptions
68
+ vikeVitePluginOptions: viteInfo.vikeVitePluginOptions,
69
69
  });
70
70
  const vikeConfig = await (0, resolveVikeConfigInternal_js_1.getVikeConfigInternal)();
71
71
  const viteConfigFromUserEnhanced = applyVikeViteConfig(viteInfo.viteConfigFromUserEnhanced, vikeConfig);
@@ -73,7 +73,7 @@ async function resolveConfigs(viteConfigFromUserApiOptions, operation) {
73
73
  return {
74
74
  vikeConfig,
75
75
  viteConfigResolved, // ONLY USE if strictly necessary. (We plan to remove assertViteRoot2() as explained in the comments of that function.)
76
- viteConfigFromUserEnhanced
76
+ viteConfigFromUserEnhanced,
77
77
  };
78
78
  }
79
79
  // Apply +vite
@@ -98,10 +98,10 @@ async function getViteRoot(operation) {
98
98
  async function getViteInfo(viteConfigFromUserApiOptions, operation) {
99
99
  let viteConfigFromUserEnhanced = viteConfigFromUserApiOptions;
100
100
  // Precedence:
101
- // 1) viteConfigFromUserEnvVar (highest precendence)
101
+ // 1) viteConfigFromUserEnvVar (highest precedence)
102
102
  // 2) viteConfigFromUserVikeConfig
103
103
  // 2) viteConfigFromUserApiOptions
104
- // 3) viteConfigFromUserViteFile (lowest precendence)
104
+ // 3) viteConfigFromUserViteFile (lowest precedence)
105
105
  // Resolve Vike's +mode setting
106
106
  {
107
107
  const viteConfigFromUserVikeConfig = (0, utils_js_1.pick)((0, resolveVikeConfigInternal_js_1.getVikeConfigFromCliOrEnv)().vikeConfigFromCliOrEnv, ['mode']);
@@ -135,7 +135,7 @@ async function getViteInfo(viteConfigFromUserApiOptions, operation) {
135
135
  const { plugin: vikePlugin } = await Promise.resolve().then(() => __importStar(require('../vite/index.js')));
136
136
  viteConfigFromUserEnhanced = {
137
137
  ...viteConfigFromUserEnhanced,
138
- plugins: [...(viteConfigFromUserEnhanced?.plugins ?? []), vikePlugin()]
138
+ plugins: [...(viteConfigFromUserEnhanced?.plugins ?? []), vikePlugin()],
139
139
  };
140
140
  const res = findVikeVitePlugin(viteConfigFromUserEnhanced);
141
141
  (0, utils_js_1.assert)(res);
@@ -168,7 +168,7 @@ async function loadViteConfigFile(viteConfigFromUserApiOptions, operation) {
168
168
  mode,
169
169
  command,
170
170
  isSsrBuild: command === 'build' && !!config.build?.ssr,
171
- isPreview
171
+ isPreview,
172
172
  };
173
173
  let { configFile } = config;
174
174
  if (configFile !== false) {
@@ -190,7 +190,7 @@ function normalizeViteRoot(root) {
190
190
  // https://github.com/vitejs/vite/blob/4f5845a3182fc950eb9cd76d7161698383113b18/packages/vite/src/node/config.ts#L1063
191
191
  return (0, utils_js_1.toPosixPath)(
192
192
  // Equivalent to `path.resolve(process.cwd(), root)`
193
- path_1.default.resolve(root));
193
+ node_path_1.default.resolve(root));
194
194
  }
195
195
  const errMsg = `A Vite plugin is modifying Vite's setting ${picocolors_1.default.cyan('root')} which is forbidden`;
196
196
  async function assertViteRoot2(root, viteConfigFromUserEnhanced, operation) {
@@ -13,6 +13,6 @@ async function prerender(options = {}) {
13
13
  options.viteConfig = viteConfigFromUserEnhanced;
14
14
  const { viteConfig } = await (0, runPrerenderEntry_js_1.runPrerenderFromAPI)(options);
15
15
  return {
16
- viteConfig
16
+ viteConfig,
17
17
  };
18
18
  }
@@ -26,14 +26,14 @@ async function preview(options = {}) {
26
26
  const outServerIndexRelative = node_path_1.default.relative(viteConfigResolved.root, outServerIndex);
27
27
  (0, utils_js_1.assertWarning)(false, `Never run ${picocolors_1.default.cyan('$ vike preview')} in production, run ${picocolors_1.default.cyan(`$ node ${outServerIndexRelative}`)} instead (or Bun/Deno).`, { onlyOnce: true });
28
28
  return {
29
- viteConfig: viteConfigResolved
29
+ viteConfig: viteConfigResolved,
30
30
  };
31
31
  }
32
32
  else {
33
33
  const server = await (0, vite_1.preview)(viteConfigFromUserEnhanced);
34
34
  return {
35
35
  viteServer: server,
36
- viteConfig: server.config
36
+ viteConfig: server.config,
37
37
  };
38
38
  }
39
39
  }
@@ -68,7 +68,7 @@ async function cmdDev() {
68
68
  const startupDurationString = picocolors_1.default.dim(`ready in ${picocolors_1.default.reset(picocolors_1.default.bold(String(Math.ceil(performance.now() - startTime))))} ms`);
69
69
  const hasExistingLogs = process.stdout.bytesWritten > 0 || process.stderr.bytesWritten > 0;
70
70
  info(` ${picocolors_1.default.yellow(`${picocolors_1.default.bold('Vike')} v${utils_js_1.PROJECT_VERSION}`)} ${startupDurationString}\n`, {
71
- clear: !hasExistingLogs
71
+ clear: !hasExistingLogs,
72
72
  });
73
73
  viteServer.printUrls();
74
74
  }
@@ -11,7 +11,7 @@ const commands = [
11
11
  { name: 'dev', desc: 'Start development server' },
12
12
  { name: 'build', desc: 'Build for production' },
13
13
  { name: 'preview', desc: 'Start preview server using production build (only works for SSG apps)' },
14
- { name: 'prerender', desc: 'Pre-render pages (only needed when prerender.disableAutoRun is true)' }
14
+ { name: 'prerender', desc: 'Pre-render pages (only needed when prerender.disableAutoRun is true)' },
15
15
  ];
16
16
  function parseCli() {
17
17
  const command = getCommand();
@@ -72,7 +72,7 @@ function showHelp() {
72
72
  `More Vike settings can be passed over the ${picocolors_1.default.cyan('VIKE_CONFIG')} environment variable or as ${picocolors_1.default.cyan('CLI options')}.`,
73
73
  `More Vite settings can be passed over the ${picocolors_1.default.cyan('VITE_CONFIG')} environment variable.`,
74
74
  ``,
75
- `See ${picocolors_1.default.underline('https://vike.dev/cli')} for more information.`
75
+ `See ${picocolors_1.default.underline('https://vike.dev/cli')} for more information.`,
76
76
  ].join('\n'));
77
77
  process.exit(1);
78
78
  }
@@ -14,6 +14,6 @@ exports.onPopState = onPopState;
14
14
  function warnNoEffect(caller) {
15
15
  (0, assert_js_1.assertWarning)(false, `Calling ${caller}() on the server-side has no effect`, {
16
16
  showStackTrace: true,
17
- onlyOnce: false
17
+ onlyOnce: false,
18
18
  });
19
19
  }
@@ -18,7 +18,7 @@ function showWarnings(options) {
18
18
  viteDevServer !== undefined && 'viteDevServer',
19
19
  root !== undefined && 'root',
20
20
  outDir !== undefined && 'outDir',
21
- isProduction !== undefined && 'isProduction'
21
+ isProduction !== undefined && 'isProduction',
22
22
  ].filter(notFalse);
23
23
  (0, utils_js_1.assertWarning)(opts.length === 0, `The options ${str(opts)} you passed to \`createPageRenderer()\` have no effect anymore: they are now automatically determined.`, { onlyOnce: true });
24
24
  }
@@ -19,7 +19,7 @@ function temp_disablePrerenderAutoRun() {
19
19
  globalObject.isDisabled = true;
20
20
  }
21
21
  function wasPrerenderRun() {
22
- return globalObject.wasPrerenderRun;
22
+ return globalObject.wasPrerenderRun || false;
23
23
  }
24
24
  function setWasPrerenderRun(trigger) {
25
25
  globalObject.wasPrerenderRun = trigger;
@@ -11,10 +11,11 @@ function resolvePrerenderConfigGlobal(vikeConfig) {
11
11
  const prerenderSettings = prerenderConfigs.filter(isObject2);
12
12
  const prerenderConfigGlobal = {
13
13
  partial: pickFirst(prerenderSettings.map((c) => c.partial)) ?? false,
14
+ redirects: pickFirst(prerenderSettings.map((c) => c.redirects)) ?? null,
14
15
  noExtraDir: pickFirst(prerenderSettings.map((c) => c.noExtraDir)) ?? null,
15
16
  keepDistServer: pickFirst(prerenderSettings.map((c) => c.keepDistServer)) ?? false,
16
17
  parallel: pickFirst(prerenderSettings.map((c) => c.parallel)) ?? true,
17
- disableAutoRun: pickFirst(prerenderSettings.map((c) => c.disableAutoRun)) ?? false
18
+ disableAutoRun: pickFirst(prerenderSettings.map((c) => c.disableAutoRun)) ?? false,
18
19
  };
19
20
  let defaultLocalValue = false;
20
21
  {
@@ -36,7 +37,7 @@ function resolvePrerenderConfigGlobal(vikeConfig) {
36
37
  isPrerenderingEnabledForAllPages: vikeConfig._pageConfigs.length > 0 &&
37
38
  vikeConfig._pageConfigs.every((pageConfig) => resolvePrerenderConfigLocal(pageConfig)?.value ?? defaultLocalValue),
38
39
  isPrerenderingEnabled: vikeConfig._pageConfigs.length > 0 &&
39
- vikeConfig._pageConfigs.some((pageConfig) => resolvePrerenderConfigLocal(pageConfig)?.value ?? defaultLocalValue)
40
+ vikeConfig._pageConfigs.some((pageConfig) => resolvePrerenderConfigLocal(pageConfig)?.value ?? defaultLocalValue),
40
41
  });
41
42
  // TODO/next-major remove
42
43
  if (vikeConfig._pageConfigs.length === 0 && defaultLocalValue)
@@ -40,13 +40,13 @@ exports.runPrerender = runPrerender;
40
40
  // Failed attempt to run this file (i.e. pre-rendering) in a separate process: https://github.com/vikejs/vike/commit/48feda87012115b32a5c9701da354cb8c138dfd2
41
41
  // - The issue is that prerenderContext needs to be serialized for being able to pass it from the child process to the parent process.
42
42
  // - The prerenderContext is used by vike-vercel
43
- const path_1 = __importDefault(require("path"));
43
+ const node_path_1 = __importDefault(require("node:path"));
44
44
  const index_js_1 = require("../../shared/route/index.js");
45
45
  const utils_js_1 = require("./utils.js");
46
46
  const renderPageAlreadyRouted_js_1 = require("../runtime/renderPage/renderPageAlreadyRouted.js");
47
47
  const createPageContextServerSide_js_1 = require("../runtime/renderPage/createPageContextServerSide.js");
48
48
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
49
- const os_1 = require("os");
49
+ const node_os_1 = require("node:os");
50
50
  const globalContext_js_1 = require("../runtime/globalContext.js");
51
51
  const vite_1 = require("vite");
52
52
  const getPageFiles_js_1 = require("../../shared/getPageFiles.js");
@@ -66,6 +66,7 @@ const resolvePrerenderConfig_js_1 = require("./resolvePrerenderConfig.js");
66
66
  const getOutDirs_js_1 = require("../vite/shared/getOutDirs.js");
67
67
  const node_fs_1 = __importDefault(require("node:fs"));
68
68
  const getProxyForPublicUsage_js_1 = require("../../shared/getProxyForPublicUsage.js");
69
+ const resolveRedirects_js_1 = require("../runtime/renderPage/resolveRedirects.js");
69
70
  const docLink = 'https://vike.dev/i18n#pre-rendering';
70
71
  async function runPrerender(options = {}, trigger) {
71
72
  (0, context_js_1.setWasPrerenderRun)(trigger);
@@ -80,8 +81,7 @@ async function runPrerender(options = {}, trigger) {
80
81
  await disableReactStreaming();
81
82
  const viteConfig = await (0, vite_1.resolveConfig)(options.viteConfig || {}, 'build', 'production');
82
83
  const vikeConfig = await (0, resolveVikeConfigInternal_js_1.getVikeConfigInternal)();
83
- const { outDirClient, outDirServer } = (0, getOutDirs_js_1.getOutDirs)(viteConfig);
84
- const { root } = viteConfig;
84
+ const { outDirServer } = (0, getOutDirs_js_1.getOutDirs)(viteConfig);
85
85
  const prerenderConfigGlobal = (0, resolvePrerenderConfig_js_1.resolvePrerenderConfigGlobal)(vikeConfig);
86
86
  const { partial, noExtraDir, parallel, defaultLocalValue, isPrerenderingEnabled } = prerenderConfigGlobal;
87
87
  if (!isPrerenderingEnabled) {
@@ -96,7 +96,7 @@ async function runPrerender(options = {}, trigger) {
96
96
  */
97
97
  return { viteConfig };
98
98
  }
99
- const concurrencyLimit = (0, utils_js_1.pLimit)(parallel === false || parallel === 0 ? 1 : parallel === true || parallel === undefined ? (0, os_1.cpus)().length : parallel);
99
+ const concurrencyLimit = (0, utils_js_1.pLimit)(parallel === false || parallel === 0 ? 1 : parallel === true || parallel === undefined ? (0, node_os_1.cpus)().length : parallel);
100
100
  await (0, globalContext_js_1.initGlobalContext_runPrerender)();
101
101
  const { globalContext } = await (0, globalContext_js_1.getGlobalContextServerInternal)();
102
102
  globalContext._pageFilesAll.forEach(assertExportNames);
@@ -105,7 +105,7 @@ async function runPrerender(options = {}, trigger) {
105
105
  output: [],
106
106
  _noExtraDir: noExtraDir,
107
107
  _pageContextInit: options.pageContextInit ?? null,
108
- _prerenderedPageContexts: {}
108
+ _prerenderedPageContexts: {},
109
109
  };
110
110
  const doNotPrerenderList = [];
111
111
  await collectDoNoPrerenderList(vikeConfig._pageConfigs, doNotPrerenderList, defaultLocalValue, concurrencyLimit, globalContext);
@@ -126,12 +126,19 @@ async function runPrerender(options = {}, trigger) {
126
126
  const onComplete = async (htmlFile) => {
127
127
  prerenderedCount++;
128
128
  const { pageId } = htmlFile.pageContext;
129
- (0, utils_js_1.assert)(pageId);
130
- prerenderContext._prerenderedPageContexts[pageId] = htmlFile.pageContext;
131
- await writeFiles(htmlFile, root, outDirClient, options.onPagePrerender, prerenderContext.output, logLevel);
129
+ (0, utils_js_1.assert)((typeof pageId === 'string' && pageId) || pageId === null);
130
+ if (pageId) {
131
+ prerenderContext._prerenderedPageContexts[pageId] = htmlFile.pageContext;
132
+ }
133
+ await writeFiles(htmlFile, viteConfig, options.onPagePrerender, prerenderContext, logLevel);
132
134
  };
133
135
  await prerenderPages(prerenderContext, concurrencyLimit, onComplete);
134
136
  warnContradictoryNoPrerenderList(prerenderContext._prerenderedPageContexts, doNotPrerenderList);
137
+ const { redirects, isPrerenderingEnabledForAllPages } = prerenderConfigGlobal;
138
+ if (redirects !== null ? redirects : isPrerenderingEnabledForAllPages) {
139
+ const showWarningUponDynamicRedirects = !prerenderConfigGlobal.partial;
140
+ await prerenderRedirects(globalContext, onComplete, showWarningUponDynamicRedirects);
141
+ }
135
142
  if (logLevel === 'info') {
136
143
  console.log(`${picocolors_1.default.green(`✓`)} ${prerenderedCount} HTML documents pre-rendered.`);
137
144
  }
@@ -214,7 +221,7 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext,
214
221
  hookName: 'onBeforePrerenderStart',
215
222
  hookFilePath,
216
223
  pageId: pageConfig.pageId,
217
- hookTimeout
224
+ hookTimeout,
218
225
  });
219
226
  })));
220
227
  // 0.4 design
@@ -239,7 +246,7 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext,
239
246
  hookName: 'prerender',
240
247
  hookFilePath,
241
248
  pageId: p.pageId,
242
- hookTimeout: (0, getHook_js_1.getHookTimeoutDefault)('onBeforePrerenderStart')
249
+ hookTimeout: (0, getHook_js_1.getHookTimeoutDefault)('onBeforePrerenderStart'),
243
250
  });
244
251
  })));
245
252
  await Promise.all(onBeforePrerenderStartHooks.map(({ pageId, ...hook }) => concurrencyLimit(async () => {
@@ -304,7 +311,7 @@ function getUrlList404(globalContext) {
304
311
  urlList.push({
305
312
  // A URL is required for `viteDevServer.transformIndexHtml(url,html)`
306
313
  urlOriginal: '/404',
307
- pageId: errorPageId
314
+ pageId: errorPageId,
308
315
  });
309
316
  }
310
317
  return urlList;
@@ -322,10 +329,10 @@ async function createPageContexts(urlList, prerenderContext, globalContext, conc
322
329
  async function createPageContextPrerendering(urlOriginal, prerenderContext, globalContext, is404, pageId, providedByHook) {
323
330
  const pageContextInit = {
324
331
  urlOriginal,
325
- ...prerenderContext._pageContextInit
332
+ ...prerenderContext._pageContextInit,
326
333
  };
327
334
  const pageContext = await (0, createPageContextServerSide_js_1.createPageContextServerSide)(pageContextInit, globalContext, {
328
- isPrerendering: true
335
+ isPrerendering: true,
329
336
  });
330
337
  (0, utils_js_1.assert)(pageContext.isPrerendering === true);
331
338
  (0, utils_js_1.objectAssign)(pageContext, {
@@ -336,7 +343,7 @@ async function createPageContextPrerendering(urlOriginal, prerenderContext, glob
336
343
  _prerenderContext: prerenderContext,
337
344
  _providedByHook: providedByHook,
338
345
  _urlOriginalModifiedByHook: null,
339
- is404
346
+ is404,
340
347
  });
341
348
  if (!is404) {
342
349
  const pageContextFromRoute = await (0, index_js_1.route)(pageContext);
@@ -350,7 +357,7 @@ async function createPageContextPrerendering(urlOriginal, prerenderContext, glob
350
357
  (0, utils_js_1.objectAssign)(pageContext, {
351
358
  pageId,
352
359
  _debugRouteMatches: [],
353
- routeParams: {}
360
+ routeParams: {},
354
361
  });
355
362
  }
356
363
  (0, utils_js_1.objectAssign)(pageContext, await (0, loadPageConfigsLazyServerSide_js_1.loadPageConfigsLazyServerSide)(pageContext));
@@ -393,7 +400,7 @@ function assertRouteMatch(pageContextFromRoute, pageContext) {
393
400
  (0, utils_js_1.assertUsage)(false, `The ${hookName}() hook defined by ${hookFilePath} returns a URL ${picocolors_1.default.cyan(urlOriginal)} that ${noRouteMatch_js_1.noRouteMatch}. Make sure that the URLs returned by ${hookName}() always match the route of a page.`);
394
401
  }
395
402
  else {
396
- // `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.
403
+ // `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.
397
404
  (0, utils_js_1.assert)(pageContextFromRoute._routingProvidedByOnBeforeRouteHook);
398
405
  // Abort since the URL doesn't correspond to any page
399
406
  return;
@@ -410,7 +417,7 @@ async function callOnPrerenderStartHook(prerenderContext, globalContext, concurr
410
417
  onPrerenderStartHook = {
411
418
  ...hook,
412
419
  // Make TypeScript happy
413
- hookName
420
+ hookName,
414
421
  };
415
422
  }
416
423
  }
@@ -423,7 +430,7 @@ async function callOnPrerenderStartHook(prerenderContext, globalContext, concurr
423
430
  if (!p.exportNames?.includes('onBeforePrerender'))
424
431
  return false;
425
432
  (0, utils_js_1.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`);
426
- (0, utils_js_1.assertUsage)(p.isDefaultPageFile, `${p.filePath} has \`export { onBeforePrerender }\` but it is only allowed in \`_defaut.page.\` files`);
433
+ (0, utils_js_1.assertUsage)(p.isDefaultPageFile, `${p.filePath} has \`export { onBeforePrerender }\` but it is only allowed in \`_default.page.\` files`);
427
434
  return true;
428
435
  });
429
436
  if (pageFilesWithOnBeforePrerenderHook.length === 0) {
@@ -444,7 +451,7 @@ async function callOnPrerenderStartHook(prerenderContext, globalContext, concurr
444
451
  hookFn: hook.onBeforePrerender,
445
452
  hookFilePath: hook.hookFilePath,
446
453
  hookName: 'onBeforePrerender',
447
- hookTimeout
454
+ hookTimeout,
448
455
  };
449
456
  }
450
457
  if (!onPrerenderStartHook) {
@@ -462,7 +469,7 @@ async function callOnPrerenderStartHook(prerenderContext, globalContext, concurr
462
469
  return pageContext.urlOriginal;
463
470
  },
464
471
  enumerable: false,
465
- configurable: true
472
+ configurable: true,
466
473
  });
467
474
  (0, utils_js_1.assert)((0, utils_js_1.isPropertyGetter)(pageContext, 'url'));
468
475
  (0, utils_js_1.assert)(pageContext.urlOriginal);
@@ -493,8 +500,8 @@ async function callOnPrerenderStartHook(prerenderContext, globalContext, concurr
493
500
  (0, utils_js_1.assertWarning)(false, `${errPrefix} returns ${picocolors_1.default.cyan('{ globalContext: { prerenderPageContexts } }')} but the return value has been renamed to ${picocolors_1.default.cyan('{ prerenderContext: { pageContexts } }')}, see ${docLink}`, { onlyOnce: true });
494
501
  result = {
495
502
  prerenderContext: {
496
- pageContexts: result.globalContext.prerenderPageContexts
497
- }
503
+ pageContexts: result.globalContext.prerenderPageContexts,
504
+ },
498
505
  };
499
506
  }
500
507
  (0, utils_js_1.assertUsage)((0, utils_js_1.isObjectWithKeys)(result, ['prerenderContext']) &&
@@ -520,7 +527,7 @@ async function callOnPrerenderStartHook(prerenderContext, globalContext, concurr
520
527
  if (pageContext.urlOriginal !== pageContext._urlOriginalBeforeHook && !pageContext.is404) {
521
528
  pageContext._urlOriginalModifiedByHook = {
522
529
  hookFilePath,
523
- hookName
530
+ hookName,
524
531
  };
525
532
  const pageContextFromRoute = await (0, index_js_1.route)(pageContext,
526
533
  // 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.
@@ -545,7 +552,6 @@ async function prerenderPages(prerenderContext, concurrencyLimit, onComplete) {
545
552
  pageContext,
546
553
  htmlString: documentHtml,
547
554
  pageContextSerialized,
548
- doNotCreateExtraDirectory: prerenderContext._noExtraDir ?? pageContext.is404
549
555
  });
550
556
  })));
551
557
  }
@@ -574,23 +580,24 @@ async function warnMissingPages(prerenderedPageContexts, globalContext, doNotPre
574
580
  .filter((pageId) => !(0, error_page_js_1.isErrorPage)(pageId, globalContext._pageConfigs))
575
581
  .forEach((pageId) => {
576
582
  const pageAt = isV1 ? pageId : `\`${pageId}.page.*\``;
577
- (0, utils_js_1.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 });
583
+ (0, utils_js_1.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 });
578
584
  });
579
585
  }
580
- async function writeFiles({ pageContext, htmlString, pageContextSerialized, doNotCreateExtraDirectory }, root, outDirClient, onPagePrerender, output, logLevel) {
581
- const { urlOriginal } = pageContext;
582
- (0, utils_js_1.assert)(urlOriginal.startsWith('/'));
583
- const writeJobs = [
584
- write(urlOriginal, pageContext, 'HTML', htmlString, root, outDirClient, doNotCreateExtraDirectory, onPagePrerender, output, logLevel)
585
- ];
586
+ async function writeFiles({ pageContext, htmlString, pageContextSerialized }, viteConfig, onPagePrerender, prerenderContext, logLevel) {
587
+ const writeJobs = [write(pageContext, 'HTML', htmlString, viteConfig, onPagePrerender, prerenderContext, logLevel)];
586
588
  if (pageContextSerialized !== null) {
587
- writeJobs.push(write(urlOriginal, pageContext, 'JSON', pageContextSerialized, root, outDirClient, doNotCreateExtraDirectory, onPagePrerender, output, logLevel));
589
+ writeJobs.push(write(pageContext, 'JSON', pageContextSerialized, viteConfig, onPagePrerender, prerenderContext, logLevel));
588
590
  }
589
591
  await Promise.all(writeJobs);
590
592
  }
591
- async function write(urlOriginal, pageContext, fileType, fileContent, root, outDirClient, doNotCreateExtraDirectory, onPagePrerender, output, logLevel) {
593
+ async function write(pageContext, fileType, fileContent, viteConfig, onPagePrerender, prerenderContext, logLevel) {
594
+ const { urlOriginal } = pageContext;
595
+ (0, utils_js_1.assert)(urlOriginal.startsWith('/'));
596
+ const { outDirClient } = (0, getOutDirs_js_1.getOutDirs)(viteConfig);
597
+ const { root } = viteConfig;
592
598
  let fileUrl;
593
599
  if (fileType === 'HTML') {
600
+ const doNotCreateExtraDirectory = prerenderContext._noExtraDir ?? pageContext.is404;
594
601
  fileUrl = (0, utils_js_1.urlToFile)(urlOriginal, '.html', doNotCreateExtraDirectory);
595
602
  }
596
603
  else {
@@ -601,35 +608,35 @@ async function write(urlOriginal, pageContext, fileType, fileContent, root, outD
601
608
  (0, utils_js_1.assert)(fileUrl.startsWith('/'));
602
609
  const filePathRelative = fileUrl.slice(1);
603
610
  (0, utils_js_1.assert)(!filePathRelative.startsWith('/'),
604
- // Let's remove this debug info after we add a assertUsage() avoiding https://github.com/vikejs/vike/issues/1929
611
+ // https://github.com/vikejs/vike/issues/1929
605
612
  { urlOriginal, fileUrl });
606
613
  (0, utils_js_1.assertPosixPath)(outDirClient);
607
614
  (0, utils_js_1.assertPosixPath)(filePathRelative);
608
- const filePath = path_1.default.posix.join(outDirClient, filePathRelative);
615
+ const filePath = node_path_1.default.posix.join(outDirClient, filePathRelative);
609
616
  (0, utils_js_1.objectAssign)(pageContext, {
610
617
  _prerenderResult: {
611
618
  filePath,
612
- fileContent
613
- }
619
+ fileContent,
620
+ },
614
621
  });
615
- output.push({
622
+ prerenderContext.output.push({
616
623
  filePath,
617
624
  fileType,
618
625
  fileContent,
619
- pageContext
626
+ pageContext,
620
627
  });
621
628
  if (onPagePrerender) {
622
629
  await onPagePrerender(pageContext);
623
630
  }
624
631
  else {
625
- const { promises } = await Promise.resolve().then(() => __importStar(require('fs')));
632
+ const { promises } = await Promise.resolve().then(() => __importStar(require('node:fs')));
626
633
  const { writeFile, mkdir } = promises;
627
- await mkdir(path_1.default.posix.dirname(filePath), { recursive: true });
634
+ await mkdir(node_path_1.default.posix.dirname(filePath), { recursive: true });
628
635
  await writeFile(filePath, fileContent);
629
636
  if (logLevel === 'info') {
630
637
  (0, utils_js_1.assertPosixPath)(root);
631
638
  (0, utils_js_1.assertPosixPath)(outDirClient);
632
- let outDirClientRelative = path_1.default.posix.relative(root, outDirClient);
639
+ let outDirClientRelative = node_path_1.default.posix.relative(root, outDirClient);
633
640
  if (!outDirClientRelative.endsWith('/')) {
634
641
  outDirClientRelative = outDirClientRelative + '/';
635
642
  }
@@ -679,7 +686,7 @@ function checkOutdatedOptions(options) {
679
686
  ['base', 'outDir'].forEach((prop) => {
680
687
  (0, utils_js_1.assertWarning)(options[prop] === undefined, `[prerender()] Option ${picocolors_1.default.cyan(prop)} is outdated and has no effect (vike now automatically determines ${picocolors_1.default.cyan(prop)})`, {
681
688
  showStackTrace: true,
682
- onlyOnce: true
689
+ onlyOnce: true,
683
690
  });
684
691
  });
685
692
  }
@@ -720,10 +727,10 @@ function preparePrerenderContextForPublicUsage(prerenderContext) {
720
727
  get() {
721
728
  (0, utils_js_1.assertWarning)(false, `prerenderPageContexts has been renamed pageContexts, see ${picocolors_1.default.underline(docLink)}`, {
722
729
  showStackTrace: true,
723
- onlyOnce: true
730
+ onlyOnce: true,
724
731
  });
725
732
  return prerenderContext.pageContexts;
726
- }
733
+ },
727
734
  });
728
735
  }
729
736
  // Required because of https://vike.dev/i18n#pre-rendering
@@ -734,3 +741,41 @@ function preparePrerenderContextForPublicUsage(prerenderContext) {
734
741
  const prerenderContextPublic = (0, getProxyForPublicUsage_js_1.getProxyForPublicUsage)(prerenderContext, 'prerenderContext');
735
742
  return prerenderContextPublic;
736
743
  }
744
+ async function prerenderRedirects(globalContext, onComplete, showWarningUponDynamicRedirects) {
745
+ const redirects = globalContext.config.redirects ?? [];
746
+ const redirectsStatic = (0, resolveRedirects_js_1.getStaticRedirectsForPrerender)(redirects, showWarningUponDynamicRedirects);
747
+ for (const [urlSource, urlTarget] of Object.entries(redirectsStatic)) {
748
+ const urlOriginal = urlSource;
749
+ const htmlString = getRedirectHtml(urlTarget);
750
+ await onComplete({
751
+ pageContext: { urlOriginal, pageId: null, is404: false, isRedirect: true },
752
+ htmlString,
753
+ pageContextSerialized: null,
754
+ });
755
+ }
756
+ }
757
+ function getRedirectHtml(urlTarget) {
758
+ const urlTargetSafe = (0, utils_js_1.escapeHtml)(urlTarget);
759
+ // To test it: /test/playground => http://localhost:3000/download
760
+ const htmlString = `<!DOCTYPE html>
761
+ <html lang="en">
762
+ <head>
763
+ <meta charset="UTF-8">
764
+ <meta http-equiv="refresh" content="0;url=${urlTargetSafe}">
765
+ <title>Redirect ${urlTargetSafe}</title>
766
+ <style>body{opacity:0}</style>
767
+ <noscript>
768
+ <style>body{opacity:1}</style>
769
+ </noscript>
770
+ </head>
771
+ <body style="min-height: 100vh; margin: 0; font-family: sans-serif; display: flex; justify-content: center; align-items: center; transition: opacity 0.3s;">
772
+ <script>setTimeout(()=>{document.body.style.opacity=1},2000)</script>
773
+ <div>
774
+ <h1>Redirect <a href="${urlTargetSafe}"><code style="background-color: #eaeaea; padding: 3px 5px; border-radius: 4px;">${urlTargetSafe}</code></a></h1>
775
+ <p>If you aren't redirected, click the link above.</p>
776
+ <!-- This HTML was generated by Vike. -->
777
+ </div>
778
+ </body>
779
+ </html>`;
780
+ return htmlString;
781
+ }
@@ -50,6 +50,6 @@ function runPrerender_forceExit() {
50
50
  process.exit(0);
51
51
  /* I guess there is no need to tell the user about it? Let's see if a user complains.
52
52
  * 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().
53
- 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 })
53
+ 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 })
54
54
  */
55
55
  }
@@ -34,3 +34,4 @@ __exportStar(require("../../utils/isObject.js"), exports);
34
34
  __exportStar(require("../../utils/isNullish.js"), exports);
35
35
  __exportStar(require("../../utils/preservePropertyGetters.js"), exports);
36
36
  __exportStar(require("../../utils/changeEnumerable.js"), exports);
37
+ __exportStar(require("../../utils/escapeHtml.js"), exports);