vike 0.4.239-commit-59f1017 → 0.4.239-commit-4d0d950

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 (415) hide show
  1. package/dist/esm/client/runtime-client-routing/entry.js +5 -0
  2. package/dist/esm/client/runtime-client-routing/globalContext.d.ts +1 -1
  3. package/dist/esm/client/runtime-client-routing/globalContext.js +9 -3
  4. package/dist/esm/client/runtime-client-routing/renderPageClientSide.js +1 -0
  5. package/dist/esm/client/runtime-server-routing/createPageContextClientSide.d.ts +1 -1
  6. package/dist/esm/client/runtime-server-routing/entry.js +5 -0
  7. package/dist/esm/client/runtime-server-routing/globalContext.d.ts +2 -2
  8. package/dist/esm/client/runtime-server-routing/globalContext.js +7 -3
  9. package/dist/esm/client/shared/createGetGlobalContextClient.d.ts +4 -3
  10. package/dist/esm/client/shared/createGetGlobalContextClient.js +38 -34
  11. package/dist/esm/node/vite/index.js +34 -15
  12. package/dist/esm/node/vite/plugins/pluginBaseUrls.d.ts +1 -1
  13. package/dist/esm/node/vite/plugins/pluginBaseUrls.js +37 -35
  14. package/dist/esm/node/vite/plugins/pluginBuild/pluginDistFileNames.d.ts +1 -1
  15. package/dist/esm/node/vite/plugins/pluginBuild/pluginDistFileNames.js +82 -80
  16. package/dist/esm/node/vite/plugins/pluginBuild/pluginDistPackageJsonFile.d.ts +1 -1
  17. package/dist/esm/node/vite/plugins/pluginBuild/pluginDistPackageJsonFile.js +23 -21
  18. package/dist/esm/node/vite/plugins/pluginBuild/pluginModuleBanner.d.ts +1 -1
  19. package/dist/esm/node/vite/plugins/pluginBuild/pluginModuleBanner.js +38 -36
  20. package/dist/esm/node/vite/plugins/pluginBuild/pluginSuppressRollupWarning.d.ts +1 -1
  21. package/dist/esm/node/vite/plugins/pluginBuild/pluginSuppressRollupWarning.js +26 -24
  22. package/dist/esm/node/vite/plugins/pluginDev/determineFsAllowList.js +0 -1
  23. package/dist/esm/node/vite/plugins/pluginEnvVars.d.ts +1 -1
  24. package/dist/esm/node/vite/plugins/pluginEnvVars.js +87 -65
  25. package/dist/esm/node/vite/plugins/pluginExtractExportNames.d.ts +1 -1
  26. package/dist/esm/node/vite/plugins/pluginExtractExportNames.js +29 -27
  27. package/dist/esm/node/vite/plugins/pluginFileEnv.d.ts +1 -1
  28. package/dist/esm/node/vite/plugins/pluginFileEnv.js +75 -73
  29. package/dist/esm/node/vite/plugins/pluginNonRunnableDev.d.ts +1 -1
  30. package/dist/esm/node/vite/plugins/pluginNonRunnableDev.js +30 -28
  31. package/dist/esm/node/vite/plugins/pluginPreview.d.ts +1 -1
  32. package/dist/esm/node/vite/plugins/pluginPreview.js +35 -33
  33. package/dist/esm/node/vite/plugins/pluginReplaceGlobalThisConstants.d.ts +9 -0
  34. package/dist/esm/node/vite/plugins/pluginReplaceGlobalThisConstants.js +45 -0
  35. package/dist/esm/node/vite/plugins/pluginReplaceIsClientSide.d.ts +3 -0
  36. package/dist/esm/node/vite/plugins/pluginReplaceIsClientSide.js +89 -0
  37. package/dist/esm/node/vite/plugins/pluginVirtualFiles.d.ts +1 -1
  38. package/dist/esm/node/vite/plugins/pluginVirtualFiles.js +50 -48
  39. package/dist/esm/node/vite/plugins/pluginWorkaroundCssModuleHmr.d.ts +1 -1
  40. package/dist/esm/node/vite/plugins/pluginWorkaroundCssModuleHmr.js +12 -10
  41. package/dist/esm/node/vite/plugins/pluginWorkaroundVite6HmrRegression.d.ts +1 -1
  42. package/dist/esm/node/vite/plugins/pluginWorkaroundVite6HmrRegression.js +26 -24
  43. package/dist/esm/shared/createGlobalContextShared.js +1 -0
  44. package/dist/esm/shared/route/abort.d.ts +22 -11
  45. package/dist/esm/shared/route/abort.js +37 -5
  46. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  47. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  48. package/dist/esm/utils/findPackageJson.js +0 -1
  49. package/dist/esm/utils/getViteRPC.js +0 -2
  50. package/dist/esm/utils/requireResolve.js +0 -1
  51. package/package.json +2 -21
  52. package/dist/cjs/__internal/index.js +0 -35
  53. package/dist/cjs/client/runtime-client-routing/globalContext.js +0 -49
  54. package/dist/cjs/client/runtime-client-routing/prefetch/PrefetchSetting.js +0 -2
  55. package/dist/cjs/client/runtime-server-routing/globalContext.js +0 -41
  56. package/dist/cjs/client/runtime-server-routing/onLoad.js +0 -7
  57. package/dist/cjs/client/runtime-server-routing/utils.js +0 -34
  58. package/dist/cjs/client/shared/createGetGlobalContextClient.js +0 -65
  59. package/dist/cjs/client/shared/getJsonSerializedInHtml.js +0 -40
  60. package/dist/cjs/client/shared/preparePageContextForPublicUsageClientShared.js +0 -41
  61. package/dist/cjs/client/shared/utils.js +0 -23
  62. package/dist/cjs/node/api/build.js +0 -24
  63. package/dist/cjs/node/api/context.js +0 -23
  64. package/dist/cjs/node/api/dev.js +0 -18
  65. package/dist/cjs/node/api/index.js +0 -44
  66. package/dist/cjs/node/api/onLoad.js +0 -9
  67. package/dist/cjs/node/api/prepareViteApiCall.js +0 -206
  68. package/dist/cjs/node/api/prerender.js +0 -18
  69. package/dist/cjs/node/api/preview.js +0 -38
  70. package/dist/cjs/node/api/types.js +0 -2
  71. package/dist/cjs/node/api/utils.js +0 -27
  72. package/dist/cjs/node/cli/context.js +0 -17
  73. package/dist/cjs/node/cli/entry.js +0 -121
  74. package/dist/cjs/node/cli/index.js +0 -12
  75. package/dist/cjs/node/cli/onLoad.js +0 -9
  76. package/dist/cjs/node/cli/parseCli.js +0 -95
  77. package/dist/cjs/node/cli/utils.js +0 -24
  78. package/dist/cjs/node/client/router.js +0 -19
  79. package/dist/cjs/node/createPageRenderer.js +0 -132
  80. package/dist/cjs/node/importBuild.js +0 -3
  81. package/dist/cjs/node/prerender/context.js +0 -26
  82. package/dist/cjs/node/prerender/index.js +0 -12
  83. package/dist/cjs/node/prerender/resolvePrerenderConfig.js +0 -66
  84. package/dist/cjs/node/prerender/runPrerender.js +0 -778
  85. package/dist/cjs/node/prerender/runPrerenderEntry.js +0 -55
  86. package/dist/cjs/node/prerender/utils.js +0 -37
  87. package/dist/cjs/node/runtime/globalContext.js +0 -582
  88. package/dist/cjs/node/runtime/index-deprecated.js +0 -33
  89. package/dist/cjs/node/runtime/index.js +0 -74
  90. package/dist/cjs/node/runtime/loggerRuntime.js +0 -17
  91. package/dist/cjs/node/runtime/onLoad.js +0 -29
  92. package/dist/cjs/node/runtime/page-files/setup.js +0 -5
  93. package/dist/cjs/node/runtime/renderPage/analyzePage.js +0 -71
  94. package/dist/cjs/node/runtime/renderPage/assertArguments.js +0 -42
  95. package/dist/cjs/node/runtime/renderPage/createHttpResponse/assertNoInfiniteHttpRedirect.js +0 -51
  96. package/dist/cjs/node/runtime/renderPage/createHttpResponse.js +0 -114
  97. package/dist/cjs/node/runtime/renderPage/createPageContextServerSide.js +0 -59
  98. package/dist/cjs/node/runtime/renderPage/csp.js +0 -47
  99. package/dist/cjs/node/runtime/renderPage/execHookDataAndOnBeforeRender.js +0 -31
  100. package/dist/cjs/node/runtime/renderPage/execHookOnRenderHtml.js +0 -120
  101. package/dist/cjs/node/runtime/renderPage/execHookServer.js +0 -8
  102. package/dist/cjs/node/runtime/renderPage/getCacheControl.js +0 -24
  103. package/dist/cjs/node/runtime/renderPage/getEarlyHints.js +0 -20
  104. package/dist/cjs/node/runtime/renderPage/getHttpResponseBody.js +0 -137
  105. package/dist/cjs/node/runtime/renderPage/getPageAssets/getManifestEntry.js +0 -125
  106. package/dist/cjs/node/runtime/renderPage/getPageAssets/retrievePageAssetsDev.js +0 -86
  107. package/dist/cjs/node/runtime/renderPage/getPageAssets/retrievePageAssetsProd.js +0 -77
  108. package/dist/cjs/node/runtime/renderPage/getPageAssets/sortPageAssetsForEarlyHintsHeader.js +0 -36
  109. package/dist/cjs/node/runtime/renderPage/getPageAssets.js +0 -50
  110. package/dist/cjs/node/runtime/renderPage/handleErrorWithoutErrorPage.js +0 -41
  111. package/dist/cjs/node/runtime/renderPage/handlePageContextRequestUrl.js +0 -68
  112. package/dist/cjs/node/runtime/renderPage/headersResponse.js +0 -48
  113. package/dist/cjs/node/runtime/renderPage/html/injectAssets/getHtmlTags.js +0 -269
  114. package/dist/cjs/node/runtime/renderPage/html/injectAssets/getViteDevScript.js +0 -32
  115. package/dist/cjs/node/runtime/renderPage/html/injectAssets/inferHtmlTags.js +0 -55
  116. package/dist/cjs/node/runtime/renderPage/html/injectAssets/injectAssets__public.js +0 -31
  117. package/dist/cjs/node/runtime/renderPage/html/injectAssets/injectHtmlTags.js +0 -161
  118. package/dist/cjs/node/runtime/renderPage/html/injectAssets/mergeScriptTags.js +0 -73
  119. package/dist/cjs/node/runtime/renderPage/html/injectAssets/sanitizeJson.js +0 -8
  120. package/dist/cjs/node/runtime/renderPage/html/injectAssets.js +0 -93
  121. package/dist/cjs/node/runtime/renderPage/html/propKeys.js +0 -47
  122. package/dist/cjs/node/runtime/renderPage/html/renderHtml.js +0 -245
  123. package/dist/cjs/node/runtime/renderPage/html/serializeContext.js +0 -189
  124. package/dist/cjs/node/runtime/renderPage/html/stream/react-streaming.js +0 -36
  125. package/dist/cjs/node/runtime/renderPage/html/stream.js +0 -829
  126. package/dist/cjs/node/runtime/renderPage/inferMediaType.js +0 -81
  127. package/dist/cjs/node/runtime/renderPage/isFontFallback.js +0 -29
  128. package/dist/cjs/node/runtime/renderPage/isNewError.js +0 -25
  129. package/dist/cjs/node/runtime/renderPage/loadPageConfigsLazyServerSide.js +0 -124
  130. package/dist/cjs/node/runtime/renderPage/log404/index.js +0 -154
  131. package/dist/cjs/node/runtime/renderPage/logErrorHint/errors.js +0 -20
  132. package/dist/cjs/node/runtime/renderPage/logErrorHint.js +0 -200
  133. package/dist/cjs/node/runtime/renderPage/loggerProd.js +0 -34
  134. package/dist/cjs/node/runtime/renderPage/preparePageContextForPublicUsageServer.js +0 -10
  135. package/dist/cjs/node/runtime/renderPage/renderPageAfterRoute.js +0 -83
  136. package/dist/cjs/node/runtime/renderPage/resolveRedirects.js +0 -71
  137. package/dist/cjs/node/runtime/renderPage.js +0 -502
  138. package/dist/cjs/node/runtime/universal-middleware.js +0 -20
  139. package/dist/cjs/node/runtime/utils.js +0 -83
  140. package/dist/cjs/node/runtime-dev/createDevMiddleware.js +0 -27
  141. package/dist/cjs/node/runtime-dev/index.js +0 -42
  142. package/dist/cjs/node/shared/assertV1Design.js +0 -30
  143. package/dist/cjs/node/shared/extractAssetsQuery.js +0 -29
  144. package/dist/cjs/node/shared/getVikeConfigError.js +0 -22
  145. package/dist/cjs/node/shared/isErrorDebug.js +0 -7
  146. package/dist/cjs/node/shared/prependEntriesDir.js +0 -13
  147. package/dist/cjs/node/shared/resolveBase.js +0 -35
  148. package/dist/cjs/node/shared/utils.js +0 -35
  149. package/dist/cjs/node/shared/virtualFileId.js +0 -110
  150. package/dist/cjs/node/vite/index.js +0 -69
  151. package/dist/cjs/node/vite/onLoad.js +0 -21
  152. package/dist/cjs/node/vite/plugins/pluginBaseUrls.js +0 -52
  153. package/dist/cjs/node/vite/plugins/pluginBuild/handleAssetsManifest.js +0 -357
  154. package/dist/cjs/node/vite/plugins/pluginBuild/pluginBuildApp.js +0 -183
  155. package/dist/cjs/node/vite/plugins/pluginBuild/pluginBuildConfig.js +0 -234
  156. package/dist/cjs/node/vite/plugins/pluginBuild/pluginDistFileNames.js +0 -256
  157. package/dist/cjs/node/vite/plugins/pluginBuild/pluginDistPackageJsonFile.js +0 -40
  158. package/dist/cjs/node/vite/plugins/pluginBuild/pluginModuleBanner.js +0 -49
  159. package/dist/cjs/node/vite/plugins/pluginBuild/pluginProdBuildEntry.js +0 -111
  160. package/dist/cjs/node/vite/plugins/pluginBuild/pluginSuppressRollupWarning.js +0 -65
  161. package/dist/cjs/node/vite/plugins/pluginBuild.js +0 -22
  162. package/dist/cjs/node/vite/plugins/pluginCommon/assertResolveAlias.js +0 -88
  163. package/dist/cjs/node/vite/plugins/pluginCommon.js +0 -183
  164. package/dist/cjs/node/vite/plugins/pluginDev/determineFsAllowList.js +0 -28
  165. package/dist/cjs/node/vite/plugins/pluginDev/determineOptimizeDeps.js +0 -163
  166. package/dist/cjs/node/vite/plugins/pluginDev.js +0 -111
  167. package/dist/cjs/node/vite/plugins/pluginEnvVars.js +0 -92
  168. package/dist/cjs/node/vite/plugins/pluginExtractAssets.js +0 -241
  169. package/dist/cjs/node/vite/plugins/pluginExtractExportNames.js +0 -113
  170. package/dist/cjs/node/vite/plugins/pluginFileEnv.js +0 -172
  171. package/dist/cjs/node/vite/plugins/pluginNonRunnableDev.js +0 -70
  172. package/dist/cjs/node/vite/plugins/pluginPreview.js +0 -82
  173. package/dist/cjs/node/vite/plugins/pluginReplaceConstants.js +0 -95
  174. package/dist/cjs/node/vite/plugins/pluginSetGlobalContext.js +0 -51
  175. package/dist/cjs/node/vite/plugins/pluginVirtualFiles/debug.js +0 -5
  176. package/dist/cjs/node/vite/plugins/pluginVirtualFiles/generateVirtualFileGlobalEntry.js +0 -56
  177. package/dist/cjs/node/vite/plugins/pluginVirtualFiles/generateVirtualFileGlobalEntryWithOldDesign.js +0 -190
  178. package/dist/cjs/node/vite/plugins/pluginVirtualFiles/generateVirtualFilePageEntry.js +0 -54
  179. package/dist/cjs/node/vite/plugins/pluginVirtualFiles/getConfigValueSourcesRelevant.js +0 -97
  180. package/dist/cjs/node/vite/plugins/pluginVirtualFiles.js +0 -233
  181. package/dist/cjs/node/vite/plugins/pluginWorkaroundCssModuleHmr.js +0 -17
  182. package/dist/cjs/node/vite/plugins/pluginWorkaroundVite6HmrRegression.js +0 -35
  183. package/dist/cjs/node/vite/shared/addSsrMiddleware.js +0 -60
  184. package/dist/cjs/node/vite/shared/findPageFiles.js +0 -25
  185. package/dist/cjs/node/vite/shared/getAssetsDir.js +0 -10
  186. package/dist/cjs/node/vite/shared/getClientEntrySrcDev.js +0 -42
  187. package/dist/cjs/node/vite/shared/getEnvVarObject.js +0 -37
  188. package/dist/cjs/node/vite/shared/getFilePath.js +0 -172
  189. package/dist/cjs/node/vite/shared/getHttpRequestAsyncStore.js +0 -125
  190. package/dist/cjs/node/vite/shared/getMagicString.js +0 -18
  191. package/dist/cjs/node/vite/shared/getManifestFilePathRelative.js +0 -10
  192. package/dist/cjs/node/vite/shared/getOutDirs.js +0 -146
  193. package/dist/cjs/node/vite/shared/getViteConfigRuntime.js +0 -21
  194. package/dist/cjs/node/vite/shared/isAsset.js +0 -40
  195. package/dist/cjs/node/vite/shared/isViteCliCall.js +0 -83
  196. package/dist/cjs/node/vite/shared/isViteServerSide.js +0 -68
  197. package/dist/cjs/node/vite/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errBabelReact.js +0 -15
  198. package/dist/cjs/node/vite/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errBabelSolid.js +0 -15
  199. package/dist/cjs/node/vite/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errEsbuild.js +0 -38
  200. package/dist/cjs/node/vite/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errMdx1.js +0 -26
  201. package/dist/cjs/node/vite/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errMdx2.js +0 -85
  202. package/dist/cjs/node/vite/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errPostcss.js +0 -30
  203. package/dist/cjs/node/vite/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errSwc.js +0 -19
  204. package/dist/cjs/node/vite/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errSwcBig.js +0 -19
  205. package/dist/cjs/node/vite/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errVueCss.js +0 -29
  206. package/dist/cjs/node/vite/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errVueHtml.js +0 -13
  207. package/dist/cjs/node/vite/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errVueJavascript.js +0 -15
  208. package/dist/cjs/node/vite/shared/loggerNotProd/errorWithCodeSnippet.js +0 -162
  209. package/dist/cjs/node/vite/shared/loggerNotProd/log.js +0 -102
  210. package/dist/cjs/node/vite/shared/loggerNotProd.js +0 -208
  211. package/dist/cjs/node/vite/shared/loggerVite/removeSuperfluousViteLog.js +0 -26
  212. package/dist/cjs/node/vite/shared/loggerVite.js +0 -54
  213. package/dist/cjs/node/vite/shared/normalizeId.js +0 -9
  214. package/dist/cjs/node/vite/shared/parseEsModule.js +0 -33
  215. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/assertExtensions.js +0 -136
  216. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/configDefinitionsBuiltIn.js +0 -262
  217. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/crawlPlusFiles/ignorePatternsBuiltIn.js +0 -18
  218. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/crawlPlusFiles.js +0 -252
  219. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/filesystemRouting.js +0 -190
  220. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/getConfigFileExport.js +0 -17
  221. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/getPlusFilesAll.js +0 -127
  222. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/loadFileAtConfigTime.js +0 -129
  223. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/pointerImports.js +0 -195
  224. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/resolvePointerImport.js +0 -102
  225. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/transpileAndExecuteFile.js +0 -425
  226. package/dist/cjs/node/vite/shared/resolveVikeConfigInternal.js +0 -1151
  227. package/dist/cjs/node/vite/shared/rollupIsEsm.js +0 -15
  228. package/dist/cjs/node/vite/utils.js +0 -45
  229. package/dist/cjs/package.json +0 -1
  230. package/dist/cjs/shared/NOT_SERIALIZABLE.js +0 -4
  231. package/dist/cjs/shared/RenderErrorPage.js +0 -6
  232. package/dist/cjs/shared/abort.js +0 -16
  233. package/dist/cjs/shared/addIs404ToPageProps.js +0 -18
  234. package/dist/cjs/shared/assertHookReturnedObject.js +0 -21
  235. package/dist/cjs/shared/assertOnBeforeRenderHookReturn.js +0 -21
  236. package/dist/cjs/shared/assertPageContextProvidedByUser.js +0 -20
  237. package/dist/cjs/shared/createGlobalContextShared.js +0 -109
  238. package/dist/cjs/shared/createPageContextShared.js +0 -17
  239. package/dist/cjs/shared/determinePageIdOld.js +0 -11
  240. package/dist/cjs/shared/error-page.js +0 -40
  241. package/dist/cjs/shared/getPageContext.js +0 -6
  242. package/dist/cjs/shared/getPageContextRequestUrl.js +0 -16
  243. package/dist/cjs/shared/getPageContextUrlComputed.js +0 -132
  244. package/dist/cjs/shared/getPageFiles/analyzeClientSide.js +0 -19
  245. package/dist/cjs/shared/getPageFiles/analyzePageClientSide/ClientDependency.js +0 -2
  246. package/dist/cjs/shared/getPageFiles/analyzePageClientSide/analyzeExports.js +0 -50
  247. package/dist/cjs/shared/getPageFiles/analyzePageClientSide/determineClientEntry.js +0 -30
  248. package/dist/cjs/shared/getPageFiles/analyzePageClientSide/getExportNames.js +0 -15
  249. package/dist/cjs/shared/getPageFiles/analyzePageClientSide.js +0 -59
  250. package/dist/cjs/shared/getPageFiles/analyzePageServerSide.js +0 -22
  251. package/dist/cjs/shared/getPageFiles/assert_exports_old_design.js +0 -24
  252. package/dist/cjs/shared/getPageFiles/fileTypes.js +0 -52
  253. package/dist/cjs/shared/getPageFiles/getAllPageIdFiles.js +0 -102
  254. package/dist/cjs/shared/getPageFiles/getPageFileObject.js +0 -56
  255. package/dist/cjs/shared/getPageFiles/parseVirtualFileExportsGlobalEntry.js +0 -100
  256. package/dist/cjs/shared/getPageFiles.js +0 -7
  257. package/dist/cjs/shared/getProxyForPublicUsage.js +0 -56
  258. package/dist/cjs/shared/hooks/execHook.js +0 -147
  259. package/dist/cjs/shared/hooks/getHook.js +0 -173
  260. package/dist/cjs/shared/htmlElementIds.js +0 -5
  261. package/dist/cjs/shared/misc/isServerSideError.js +0 -4
  262. package/dist/cjs/shared/misc/pageContextInitIsPassedToClient.js +0 -4
  263. package/dist/cjs/shared/modifyUrl.js +0 -28
  264. package/dist/cjs/shared/modifyUrlSameOrigin.js +0 -47
  265. package/dist/cjs/shared/page-configs/assertPlusFileExport.js +0 -42
  266. package/dist/cjs/shared/page-configs/findPageConfig.js +0 -10
  267. package/dist/cjs/shared/page-configs/getConfigDefinedAt.js +0 -65
  268. package/dist/cjs/shared/page-configs/getConfigValueBuildTime.js +0 -68
  269. package/dist/cjs/shared/page-configs/getConfigValueRuntime.js +0 -10
  270. package/dist/cjs/shared/page-configs/getConfigValueTyped.js +0 -32
  271. package/dist/cjs/shared/page-configs/getExportPath.js +0 -29
  272. package/dist/cjs/shared/page-configs/helpers.js +0 -27
  273. package/dist/cjs/shared/page-configs/loadAndParseVirtualFilePageEntry.js +0 -25
  274. package/dist/cjs/shared/page-configs/resolveVikeConfigPublic.js +0 -287
  275. package/dist/cjs/shared/page-configs/serialize/PageConfigSerialized.js +0 -2
  276. package/dist/cjs/shared/page-configs/serialize/assertPageConfigsSerialized.js +0 -1
  277. package/dist/cjs/shared/page-configs/serialize/parsePageConfigsSerialized.js +0 -145
  278. package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +0 -290
  279. package/dist/cjs/shared/prepareGlobalContextForPublicUsage.js +0 -10
  280. package/dist/cjs/shared/preparePageContextForPublicUsage.js +0 -80
  281. package/dist/cjs/shared/route/abort.js +0 -178
  282. package/dist/cjs/shared/route/debug.js +0 -23
  283. package/dist/cjs/shared/route/deduceRouteStringFromFilesystemPath.js +0 -52
  284. package/dist/cjs/shared/route/execHookGuard.js +0 -37
  285. package/dist/cjs/shared/route/execHookOnBeforeRoute.js +0 -84
  286. package/dist/cjs/shared/route/index.js +0 -107
  287. package/dist/cjs/shared/route/loadPageRoutes.js +0 -197
  288. package/dist/cjs/shared/route/noRouteMatch.js +0 -4
  289. package/dist/cjs/shared/route/resolvePrecedence.js +0 -93
  290. package/dist/cjs/shared/route/resolveRoute.js +0 -20
  291. package/dist/cjs/shared/route/resolveRouteFunction.js +0 -73
  292. package/dist/cjs/shared/route/resolveRouteString.js +0 -153
  293. package/dist/cjs/shared/route/resolveUrlPathname.js +0 -47
  294. package/dist/cjs/shared/route/routing.js +0 -9
  295. package/dist/cjs/shared/route/utils.js +0 -40
  296. package/dist/cjs/shared/utils.js +0 -49
  297. package/dist/cjs/types/Config/ConfigResolved.js +0 -2
  298. package/dist/cjs/types/Config.js +0 -2
  299. package/dist/cjs/types/FilePath.js +0 -2
  300. package/dist/cjs/types/PageConfig.js +0 -2
  301. package/dist/cjs/types/PageContext.js +0 -2
  302. package/dist/cjs/types/VikeGlobalInternal.js +0 -2
  303. package/dist/cjs/types/VikeNamespace.js +0 -2
  304. package/dist/cjs/types/ViteManifest.js +0 -2
  305. package/dist/cjs/types/defineConfig.js +0 -6
  306. package/dist/cjs/types/index-dreprecated.js +0 -3
  307. package/dist/cjs/types/index.js +0 -5
  308. package/dist/cjs/utils/PROJECT_VERSION.js +0 -5
  309. package/dist/cjs/utils/PromiseType.js +0 -2
  310. package/dist/cjs/utils/assert.js +0 -211
  311. package/dist/cjs/utils/assertIsBrowser.js +0 -8
  312. package/dist/cjs/utils/assertIsNotBrowser.js +0 -9
  313. package/dist/cjs/utils/assertKeys.js +0 -27
  314. package/dist/cjs/utils/assertNodeVersion.js +0 -14
  315. package/dist/cjs/utils/assertRoutingType.js +0 -29
  316. package/dist/cjs/utils/assertSetup.js +0 -171
  317. package/dist/cjs/utils/assertSingleInstance.js +0 -110
  318. package/dist/cjs/utils/assertVersion.js +0 -60
  319. package/dist/cjs/utils/capitalizeFirstLetter.js +0 -9
  320. package/dist/cjs/utils/cast.js +0 -6
  321. package/dist/cjs/utils/catchInfiniteLoop.js +0 -34
  322. package/dist/cjs/utils/changeEnumerable.js +0 -8
  323. package/dist/cjs/utils/checkType.js +0 -6
  324. package/dist/cjs/utils/compareString.js +0 -10
  325. package/dist/cjs/utils/createErrorWithCleanStackTrace.js +0 -39
  326. package/dist/cjs/utils/debug.js +0 -178
  327. package/dist/cjs/utils/debugGlob.js +0 -6
  328. package/dist/cjs/utils/deepEqual.js +0 -10
  329. package/dist/cjs/utils/escapeHtml.js +0 -13
  330. package/dist/cjs/utils/escapeRegex.js +0 -7
  331. package/dist/cjs/utils/findFile.js +0 -30
  332. package/dist/cjs/utils/findPackageJson.js +0 -18
  333. package/dist/cjs/utils/formatHintLog.js +0 -17
  334. package/dist/cjs/utils/freezePartial.js +0 -35
  335. package/dist/cjs/utils/genPromise.js +0 -51
  336. package/dist/cjs/utils/getFileExtension.js +0 -16
  337. package/dist/cjs/utils/getGlobalObject.js +0 -15
  338. package/dist/cjs/utils/getMostSimilar.js +0 -68
  339. package/dist/cjs/utils/getPropAccessNotation.js +0 -9
  340. package/dist/cjs/utils/getRandomId.js +0 -14
  341. package/dist/cjs/utils/getTerminalWidth.js +0 -7
  342. package/dist/cjs/utils/getValuePrintable.js +0 -10
  343. package/dist/cjs/utils/getViteRPC.js +0 -79
  344. package/dist/cjs/utils/hasProp.js +0 -50
  345. package/dist/cjs/utils/humanizeTime.js +0 -24
  346. package/dist/cjs/utils/includes.js +0 -13
  347. package/dist/cjs/utils/injectRollupInputs.js +0 -29
  348. package/dist/cjs/utils/isArray.js +0 -7
  349. package/dist/cjs/utils/isArrayOfStrings.js +0 -7
  350. package/dist/cjs/utils/isBrowser.js +0 -8
  351. package/dist/cjs/utils/isCallable.js +0 -6
  352. package/dist/cjs/utils/isDev.js +0 -20
  353. package/dist/cjs/utils/isDocker.js +0 -45
  354. package/dist/cjs/utils/isEqualStringList.js +0 -13
  355. package/dist/cjs/utils/isFilePathAbsoluteFilesystem.js +0 -66
  356. package/dist/cjs/utils/isHtml.js +0 -9
  357. package/dist/cjs/utils/isImportPath.js +0 -21
  358. package/dist/cjs/utils/isNodeJS.js +0 -16
  359. package/dist/cjs/utils/isNonRunnableDev.js +0 -12
  360. package/dist/cjs/utils/isNullish.js +0 -16
  361. package/dist/cjs/utils/isObject.js +0 -6
  362. package/dist/cjs/utils/isObjectOfStrings.js +0 -7
  363. package/dist/cjs/utils/isObjectWithKeys.js +0 -15
  364. package/dist/cjs/utils/isPlainObject.js +0 -19
  365. package/dist/cjs/utils/isPromise.js +0 -7
  366. package/dist/cjs/utils/isPropertyGetter.js +0 -7
  367. package/dist/cjs/utils/isReact.js +0 -23
  368. package/dist/cjs/utils/isRunnableDevEnvironment.js +0 -9
  369. package/dist/cjs/utils/isSameErrorMessage.js +0 -9
  370. package/dist/cjs/utils/isScriptFile.js +0 -67
  371. package/dist/cjs/utils/isVikeReactApp.js +0 -8
  372. package/dist/cjs/utils/isVitest.js +0 -6
  373. package/dist/cjs/utils/joinEnglish.js +0 -14
  374. package/dist/cjs/utils/normalizeHeaders.js +0 -17
  375. package/dist/cjs/utils/objectAssign.js +0 -14
  376. package/dist/cjs/utils/objectAssignSafe.js +0 -7
  377. package/dist/cjs/utils/objectDefineProperty.js +0 -7
  378. package/dist/cjs/utils/objectEntries.js +0 -8
  379. package/dist/cjs/utils/objectEntriesForEach.js +0 -7
  380. package/dist/cjs/utils/objectFilter.js +0 -10
  381. package/dist/cjs/utils/objectFromEntries.js +0 -7
  382. package/dist/cjs/utils/objectKeys.js +0 -9
  383. package/dist/cjs/utils/objectReplace.js +0 -9
  384. package/dist/cjs/utils/onPageVisibilityChange.js +0 -18
  385. package/dist/cjs/utils/pLimit.js +0 -134
  386. package/dist/cjs/utils/parseNpmPackage.js +0 -106
  387. package/dist/cjs/utils/parseUrl-extras.js +0 -110
  388. package/dist/cjs/utils/parseUrl.js +0 -338
  389. package/dist/cjs/utils/path.js +0 -59
  390. package/dist/cjs/utils/pick.js +0 -12
  391. package/dist/cjs/utils/preservePropertyGetters.js +0 -30
  392. package/dist/cjs/utils/redirectHard.js +0 -6
  393. package/dist/cjs/utils/removeEmptyLines.js +0 -9
  394. package/dist/cjs/utils/removeFileExtension.js +0 -6
  395. package/dist/cjs/utils/requireResolve.js +0 -214
  396. package/dist/cjs/utils/rollupSourceMap.js +0 -19
  397. package/dist/cjs/utils/sleep.js +0 -6
  398. package/dist/cjs/utils/slice.js +0 -35
  399. package/dist/cjs/utils/sorter.js +0 -117
  400. package/dist/cjs/utils/stringifyStringArray.js +0 -6
  401. package/dist/cjs/utils/stripAnsi.js +0 -21
  402. package/dist/cjs/utils/styleFileRE.js +0 -6
  403. package/dist/cjs/utils/throttle.js +0 -15
  404. package/dist/cjs/utils/trackLogs.js +0 -31
  405. package/dist/cjs/utils/trimWithAnsi.js +0 -40
  406. package/dist/cjs/utils/truncateString.js +0 -23
  407. package/dist/cjs/utils/unique.js +0 -6
  408. package/dist/cjs/utils/updateType.js +0 -9
  409. package/dist/cjs/utils/urlToFile.js +0 -36
  410. package/dist/cjs/utils/virtualFileId.js +0 -43
  411. package/dist/cjs/utils/warnIfErrorIsNotObject.js +0 -23
  412. package/dist/esm/node/vite/plugins/pluginBuild.d.ts +0 -3
  413. package/dist/esm/node/vite/plugins/pluginBuild.js +0 -20
  414. package/dist/esm/node/vite/plugins/pluginReplaceConstants.d.ts +0 -14
  415. package/dist/esm/node/vite/plugins/pluginReplaceConstants.js +0 -92
@@ -1,778 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.runPrerender = runPrerender;
40
- // Failed attempt to run this file (i.e. pre-rendering) in a separate process: https://github.com/vikejs/vike/commit/48feda87012115b32a5c9701da354cb8c138dfd2
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
- // - The prerenderContext is used by vike-vercel
43
- const node_path_1 = __importDefault(require("node:path"));
44
- const index_js_1 = require("../../shared/route/index.js");
45
- const utils_js_1 = require("./utils.js");
46
- const renderPageAfterRoute_js_1 = require("../runtime/renderPage/renderPageAfterRoute.js");
47
- const createPageContextServerSide_js_1 = require("../runtime/renderPage/createPageContextServerSide.js");
48
- const picocolors_1 = __importDefault(require("@brillout/picocolors"));
49
- const node_os_1 = require("node:os");
50
- const globalContext_js_1 = require("../runtime/globalContext.js");
51
- const vite_1 = require("vite");
52
- const getPageFiles_js_1 = require("../../shared/getPageFiles.js");
53
- const getPageContextRequestUrl_js_1 = require("../../shared/getPageContextRequestUrl.js");
54
- const resolveRouteString_js_1 = require("../../shared/route/resolveRouteString.js");
55
- const getConfigValueRuntime_js_1 = require("../../shared/page-configs/getConfigValueRuntime.js");
56
- const loadAndParseVirtualFilePageEntry_js_1 = require("../../shared/page-configs/loadAndParseVirtualFilePageEntry.js");
57
- const error_page_js_1 = require("../../shared/error-page.js");
58
- const abort_js_1 = require("../../shared/route/abort.js");
59
- const loadPageConfigsLazyServerSide_js_1 = require("../runtime/renderPage/loadPageConfigsLazyServerSide.js");
60
- const getHook_js_1 = require("../../shared/hooks/getHook.js");
61
- const noRouteMatch_js_1 = require("../../shared/route/noRouteMatch.js");
62
- const resolveVikeConfigInternal_js_1 = require("../vite/shared/resolveVikeConfigInternal.js");
63
- const execHook_js_1 = require("../../shared/hooks/execHook.js");
64
- const context_js_1 = require("./context.js");
65
- const resolvePrerenderConfig_js_1 = require("./resolvePrerenderConfig.js");
66
- const getOutDirs_js_1 = require("../vite/shared/getOutDirs.js");
67
- const node_fs_1 = __importDefault(require("node:fs"));
68
- const getProxyForPublicUsage_js_1 = require("../../shared/getProxyForPublicUsage.js");
69
- const resolveRedirects_js_1 = require("../runtime/renderPage/resolveRedirects.js");
70
- const utils_js_2 = require("../runtime/utils.js");
71
- const docLink = 'https://vike.dev/i18n#pre-rendering';
72
- async function runPrerender(options = {}, trigger) {
73
- (0, context_js_1.setWasPrerenderRun)(trigger);
74
- checkOutdatedOptions(options);
75
- (0, utils_js_1.onSetupPrerender)();
76
- (0, globalContext_js_1.setGlobalContext_isPrerendering)();
77
- (0, getHook_js_1.getHook_setIsPrerenderering)();
78
- const logLevel = !!options.onPagePrerender ? 'warn' : 'info';
79
- if (logLevel === 'info') {
80
- console.log(`${picocolors_1.default.cyan(`vike v${utils_js_1.PROJECT_VERSION}`)} ${picocolors_1.default.green('pre-rendering HTML...')}`);
81
- }
82
- await disableReactStreaming();
83
- const viteConfig = await (0, vite_1.resolveConfig)(options.viteConfig || {}, 'build', 'production');
84
- const vikeConfig = await (0, resolveVikeConfigInternal_js_1.getVikeConfigInternal)();
85
- const { outDirServer } = (0, getOutDirs_js_1.getOutDirs)(viteConfig, undefined);
86
- const prerenderConfigGlobal = (0, resolvePrerenderConfig_js_1.resolvePrerenderConfigGlobal)(vikeConfig);
87
- const { partial, noExtraDir, parallel, defaultLocalValue, isPrerenderingEnabled } = prerenderConfigGlobal;
88
- if (!isPrerenderingEnabled) {
89
- (0, utils_js_1.assert)(trigger !== 'auto-run');
90
- /* TO-DO/next-major-release: use this assertUsage() again.
91
- * - Make sure https://github.com/magne4000/vite-plugin-vercel/pull/156 is merged before using this assertUsage() again. (Otherwise vite-plugin-vercel will trigger this assertUsage() call.)
92
- * - Done: PR is merged as of June 20205
93
- assertUsage(
94
- false,
95
- `You're executing ${pc.cyan(standaloneTrigger)} but you didn't enable pre-rendering. Use the ${pc.cyan('prerender')} setting (${pc.underline('https://vike.dev/prerender')}) to enable pre-rendering for at least one page.`
96
- )
97
- */
98
- return { viteConfig };
99
- }
100
- const concurrencyLimit = (0, utils_js_1.pLimit)(parallel === false || parallel === 0 ? 1 : parallel === true || parallel === undefined ? (0, node_os_1.cpus)().length : parallel);
101
- await (0, globalContext_js_1.initGlobalContext_runPrerender)();
102
- const { globalContext } = await (0, globalContext_js_1.getGlobalContextServerInternal)();
103
- globalContext._pageFilesAll.forEach(assertExportNames);
104
- const prerenderContext = {
105
- pageContexts: [],
106
- output: [],
107
- _noExtraDir: noExtraDir,
108
- _pageContextInit: options.pageContextInit ?? null,
109
- _prerenderedPageContexts: {},
110
- };
111
- const doNotPrerenderList = [];
112
- await collectDoNoPrerenderList(vikeConfig._pageConfigs, doNotPrerenderList, defaultLocalValue, concurrencyLimit, globalContext);
113
- // Allow user to create `pageContext` for parameterized routes and/or bulk data fetching
114
- // https://vike.dev/onBeforePrerenderStart
115
- await callOnBeforePrerenderStartHooks(prerenderContext, globalContext, concurrencyLimit, doNotPrerenderList);
116
- // Create `pageContext` for each page with a static route
117
- const urlList = getUrlListFromPagesWithStaticRoute(globalContext, doNotPrerenderList);
118
- await createPageContexts(urlList, prerenderContext, globalContext, concurrencyLimit, false);
119
- // Create `pageContext` for 404 page
120
- const urlList404 = getUrlList404(globalContext);
121
- await createPageContexts(urlList404, prerenderContext, globalContext, concurrencyLimit, true);
122
- // Allow user to duplicate the list of `pageContext` for i18n
123
- // https://vike.dev/onPrerenderStart
124
- await callOnPrerenderStartHook(prerenderContext, globalContext, concurrencyLimit);
125
- let prerenderedCount = 0;
126
- // Write files as soon as pages finish rendering (instead of writing all files at once only after all pages have rendered).
127
- const onComplete = async (htmlFile) => {
128
- prerenderedCount++;
129
- const { pageId } = htmlFile.pageContext;
130
- (0, utils_js_1.assert)((typeof pageId === 'string' && pageId) || pageId === null);
131
- if (pageId) {
132
- prerenderContext._prerenderedPageContexts[pageId] = htmlFile.pageContext;
133
- }
134
- await writeFiles(htmlFile, viteConfig, options.onPagePrerender, prerenderContext, logLevel);
135
- };
136
- await prerenderPages(prerenderContext, concurrencyLimit, onComplete);
137
- warnContradictoryNoPrerenderList(prerenderContext._prerenderedPageContexts, doNotPrerenderList);
138
- const { redirects, isPrerenderingEnabledForAllPages } = prerenderConfigGlobal;
139
- if (redirects !== null ? redirects : isPrerenderingEnabledForAllPages) {
140
- const showWarningUponDynamicRedirects = !prerenderConfigGlobal.partial;
141
- await prerenderRedirects(globalContext, onComplete, showWarningUponDynamicRedirects);
142
- }
143
- if (logLevel === 'info') {
144
- console.log(`${picocolors_1.default.green(`✓`)} ${prerenderedCount} HTML documents pre-rendered.`);
145
- }
146
- await warnMissingPages(prerenderContext._prerenderedPageContexts, globalContext, doNotPrerenderList, partial);
147
- const prerenderContextPublic = preparePrerenderContextForPublicUsage(prerenderContext);
148
- (0, utils_js_1.objectAssign)(vikeConfig.prerenderContext, prerenderContextPublic, true);
149
- (0, globalContext_js_1.setGlobalContext_prerenderContext)(prerenderContextPublic);
150
- if (prerenderConfigGlobal.isPrerenderingEnabledForAllPages && !prerenderConfigGlobal.keepDistServer) {
151
- node_fs_1.default.rmSync(outDirServer, { recursive: true });
152
- }
153
- return { viteConfig };
154
- }
155
- async function collectDoNoPrerenderList(pageConfigs, doNotPrerenderList, defaultLocalValue, concurrencyLimit, globalContext) {
156
- // V1 design
157
- pageConfigs.forEach((pageConfig) => {
158
- const prerenderConfigLocal = (0, resolvePrerenderConfig_js_1.resolvePrerenderConfigLocal)(pageConfig);
159
- const { pageId } = pageConfig;
160
- if (!prerenderConfigLocal) {
161
- if (!defaultLocalValue) {
162
- doNotPrerenderList.push({ pageId });
163
- }
164
- }
165
- else {
166
- const { value } = prerenderConfigLocal;
167
- if (value === false) {
168
- doNotPrerenderList.push({ pageId });
169
- }
170
- }
171
- });
172
- // Old design
173
- // TO-DO/next-major-release: remove
174
- await Promise.all(globalContext._pageFilesAll
175
- .filter((p) => {
176
- assertExportNames(p);
177
- if (!p.exportNames?.includes('doNotPrerender'))
178
- return false;
179
- (0, utils_js_1.assertUsage)(p.fileType !== '.page.client', `${p.filePath} (which is a \`.page.client.js\` file) has \`export { doNotPrerender }\` but it is only allowed in \`.page.server.js\` or \`.page.js\` files`);
180
- return true;
181
- })
182
- .map((p) => concurrencyLimit(async () => {
183
- (0, utils_js_1.assert)(p.loadFile);
184
- await p.loadFile();
185
- })));
186
- globalContext._allPageIds.forEach((pageId) => {
187
- const pageFilesServerSide = (0, getPageFiles_js_1.getPageFilesServerSide)(globalContext._pageFilesAll, pageId);
188
- for (const p of pageFilesServerSide) {
189
- if (!p.exportNames?.includes('doNotPrerender'))
190
- continue;
191
- const { fileExports } = p;
192
- (0, utils_js_1.assert)(fileExports);
193
- (0, utils_js_1.assert)((0, utils_js_1.hasProp)(fileExports, 'doNotPrerender'));
194
- const { doNotPrerender } = fileExports;
195
- (0, utils_js_1.assertUsage)(doNotPrerender === true || doNotPrerender === false, `The \`export { doNotPrerender }\` value of ${p.filePath} should be \`true\` or \`false\``);
196
- if (!doNotPrerender) {
197
- // Do pre-render `pageId`
198
- return;
199
- }
200
- else {
201
- // Don't pre-render `pageId`
202
- doNotPrerenderList.push({ pageId });
203
- }
204
- }
205
- });
206
- }
207
- function assertExportNames(pageFile) {
208
- const { exportNames, fileType } = pageFile;
209
- (0, utils_js_1.assert)(exportNames || fileType === '.page.route' || fileType === '.css', pageFile.filePath);
210
- }
211
- async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext, concurrencyLimit, doNotPrerenderList) {
212
- const onBeforePrerenderStartHooks = [];
213
- // V1 design
214
- await Promise.all(globalContext._pageConfigs.map((pageConfig) => concurrencyLimit(async () => {
215
- const hookName = 'onBeforePrerenderStart';
216
- const pageConfigLoaded = await (0, loadAndParseVirtualFilePageEntry_js_1.loadAndParseVirtualFilePageEntry)(pageConfig, false);
217
- const hook = (0, getHook_js_1.getHookFromPageConfig)(pageConfigLoaded, hookName);
218
- if (!hook)
219
- return;
220
- const { hookFn, hookFilePath, hookTimeout } = hook;
221
- onBeforePrerenderStartHooks.push({
222
- hookFn,
223
- hookName: 'onBeforePrerenderStart',
224
- hookFilePath,
225
- pageId: pageConfig.pageId,
226
- hookTimeout,
227
- });
228
- })));
229
- // 0.4 design
230
- await Promise.all(globalContext._pageFilesAll
231
- .filter((p) => {
232
- assertExportNames(p);
233
- if (!p.exportNames?.includes('prerender'))
234
- return false;
235
- (0, utils_js_1.assertUsage)(p.fileType === '.page.server', `${p.filePath} (which is a \`${p.fileType}.js\` file) has \`export { prerender }\` but it is only allowed in \`.page.server.js\` files`);
236
- return true;
237
- })
238
- .map((p) => concurrencyLimit(async () => {
239
- await p.loadFile?.();
240
- const hookFn = p.fileExports?.prerender;
241
- if (!hookFn)
242
- return;
243
- (0, utils_js_1.assertUsage)((0, utils_js_1.isCallable)(hookFn), `\`export { prerender }\` of ${p.filePath} should be a function.`);
244
- const hookFilePath = p.filePath;
245
- (0, utils_js_1.assert)(hookFilePath);
246
- onBeforePrerenderStartHooks.push({
247
- hookFn,
248
- hookName: 'prerender',
249
- hookFilePath,
250
- pageId: p.pageId,
251
- hookTimeout: (0, getHook_js_1.getHookTimeoutDefault)('onBeforePrerenderStart'),
252
- });
253
- })));
254
- await Promise.all(onBeforePrerenderStartHooks.map(({ pageId, ...hook }) => concurrencyLimit(async () => {
255
- if (doNotPrerenderList.find((p) => p.pageId === pageId))
256
- return;
257
- const { hookName, hookFilePath } = hook;
258
- const prerenderResult = await (0, execHook_js_1.execHookDirectWithoutPageContext)(() => hook.hookFn(), hook);
259
- const result = normalizeOnPrerenderHookResult(prerenderResult, hookFilePath, hookName);
260
- // Handle result
261
- await Promise.all(result.map(async ({ url, pageContext }) => {
262
- // Assert no duplication
263
- {
264
- const pageContextFound = prerenderContext.pageContexts.find((pageContext) => isSameUrl(pageContext.urlOriginal, url));
265
- if (pageContextFound) {
266
- (0, utils_js_1.assert)(pageContextFound._providedByHook);
267
- const providedTwice = hookFilePath === pageContextFound._providedByHook.hookFilePath
268
- ? `twice by the ${hookName}() hook (${hookFilePath})`
269
- : `twice: by the ${hookName}() hook (${hookFilePath}) as well as by the hook ${pageContextFound._providedByHook.hookFilePath}() (${pageContextFound._providedByHook.hookName})`;
270
- (0, utils_js_1.assertUsage)(false, `URL ${picocolors_1.default.cyan(url)} provided ${providedTwice}. Make sure to provide the URL only once instead.`);
271
- }
272
- }
273
- // Add result
274
- const providedByHook = { hookFilePath, hookName };
275
- const pageContextNew = await createPageContextPrerendering(url, prerenderContext, globalContext, false, undefined, providedByHook);
276
- prerenderContext.pageContexts.push(pageContextNew);
277
- if (pageContext) {
278
- (0, utils_js_1.objectAssign)(pageContextNew, { _pageContextAlreadyProvidedByOnPrerenderHook: true });
279
- (0, utils_js_1.objectAssign)(pageContextNew, pageContext);
280
- }
281
- }));
282
- })));
283
- }
284
- function getUrlListFromPagesWithStaticRoute(globalContext, doNotPrerenderList) {
285
- const urlList = [];
286
- globalContext._pageRoutes.map((pageRoute) => {
287
- const { pageId } = pageRoute;
288
- if (doNotPrerenderList.find((p) => p.pageId === pageId))
289
- return;
290
- let urlOriginal;
291
- if (!('routeString' in pageRoute)) {
292
- // Abort since the page's route is a Route Function
293
- (0, utils_js_1.assert)(pageRoute.routeType === 'FUNCTION');
294
- return;
295
- }
296
- else {
297
- const url = (0, resolveRouteString_js_1.getUrlFromRouteString)(pageRoute.routeString);
298
- if (!url) {
299
- // Abort since no URL can be deduced from a parameterized Route String
300
- return;
301
- }
302
- urlOriginal = url;
303
- }
304
- (0, utils_js_1.assert)(urlOriginal.startsWith('/'));
305
- urlList.push({ urlOriginal, pageId });
306
- });
307
- return urlList;
308
- }
309
- function getUrlList404(globalContext) {
310
- const urlList = [];
311
- const errorPageId = (0, error_page_js_1.getErrorPageId)(globalContext._pageFilesAll, globalContext._pageConfigs);
312
- if (errorPageId) {
313
- urlList.push({
314
- // A URL is required for `viteDevServer.transformIndexHtml(url,html)`
315
- urlOriginal: '/404',
316
- pageId: errorPageId,
317
- });
318
- }
319
- return urlList;
320
- }
321
- async function createPageContexts(urlList, prerenderContext, globalContext, concurrencyLimit, is404) {
322
- await Promise.all(urlList.map(({ urlOriginal, pageId }) => concurrencyLimit(async () => {
323
- // Already included in a onBeforePrerenderStart() hook
324
- if (prerenderContext.pageContexts.find((pageContext) => isSameUrl(pageContext.urlOriginal, urlOriginal))) {
325
- return;
326
- }
327
- const pageContext = await createPageContextPrerendering(urlOriginal, prerenderContext, globalContext, is404, pageId, null);
328
- prerenderContext.pageContexts.push(pageContext);
329
- })));
330
- }
331
- async function createPageContextPrerendering(urlOriginal, prerenderContext, globalContext, is404, pageId, providedByHook) {
332
- const pageContextInit = {
333
- urlOriginal,
334
- ...prerenderContext._pageContextInit,
335
- };
336
- const pageContext = (0, createPageContextServerSide_js_1.createPageContextServerSide)(pageContextInit, globalContext, {
337
- isPrerendering: true,
338
- });
339
- (0, utils_js_1.assert)(pageContext.isPrerendering === true);
340
- (0, utils_js_1.objectAssign)(pageContext, {
341
- _urlHandler: null,
342
- _httpRequestId: null,
343
- _urlRewrite: null,
344
- _noExtraDir: prerenderContext._noExtraDir,
345
- _prerenderContext: prerenderContext,
346
- _providedByHook: providedByHook,
347
- _urlOriginalModifiedByHook: null,
348
- is404,
349
- });
350
- if (!is404) {
351
- const pageContextFromRoute = await (0, index_js_1.route)(pageContext);
352
- (0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageContextFromRoute, 'pageId', 'null') || (0, utils_js_1.hasProp)(pageContextFromRoute, 'pageId', 'string')); // Help TS
353
- assertRouteMatch(pageContextFromRoute, pageContext);
354
- (0, utils_js_1.assert)(pageContextFromRoute.pageId);
355
- (0, utils_js_1.objectAssign)(pageContext, pageContextFromRoute);
356
- }
357
- else {
358
- (0, utils_js_1.assert)(pageId);
359
- (0, utils_js_1.objectAssign)(pageContext, {
360
- pageId,
361
- routeParams: {},
362
- });
363
- }
364
- (0, utils_js_2.updateType)(pageContext, await (0, loadPageConfigsLazyServerSide_js_1.loadPageConfigsLazyServerSide)(pageContext));
365
- let usesClientRouter;
366
- {
367
- const { pageId } = pageContext;
368
- (0, utils_js_1.assert)(pageId);
369
- (0, utils_js_1.assert)(globalContext._isPrerendering);
370
- if (globalContext._pageConfigs.length > 0) {
371
- const pageConfig = globalContext._pageConfigs.find((p) => p.pageId === pageId);
372
- (0, utils_js_1.assert)(pageConfig);
373
- usesClientRouter = (0, getConfigValueRuntime_js_1.getConfigValueRuntime)(pageConfig, 'clientRouting', 'boolean')?.value ?? false;
374
- }
375
- else {
376
- usesClientRouter = globalContext._usesClientRouter;
377
- }
378
- }
379
- (0, utils_js_1.objectAssign)(pageContext, { _usesClientRouter: usesClientRouter });
380
- return pageContext;
381
- }
382
- function assertRouteMatch(pageContextFromRoute, pageContext) {
383
- if (pageContextFromRoute.pageId !== null) {
384
- (0, utils_js_1.assert)(pageContextFromRoute.pageId);
385
- return;
386
- }
387
- let hookName;
388
- let hookFilePath;
389
- if (pageContext._urlOriginalModifiedByHook) {
390
- hookName = pageContext._urlOriginalModifiedByHook.hookName;
391
- hookFilePath = pageContext._urlOriginalModifiedByHook.hookFilePath;
392
- }
393
- else if (pageContext._providedByHook) {
394
- hookName = pageContext._providedByHook.hookName;
395
- hookFilePath = pageContext._providedByHook.hookFilePath;
396
- }
397
- if (hookName) {
398
- (0, utils_js_1.assert)(hookFilePath);
399
- const { urlOriginal } = pageContext;
400
- (0, utils_js_1.assert)(urlOriginal);
401
- (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.`);
402
- }
403
- else {
404
- // `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.
405
- (0, utils_js_1.assert)(pageContextFromRoute._routingProvidedByOnBeforeRouteHook);
406
- // Abort since the URL doesn't correspond to any page
407
- return;
408
- }
409
- }
410
- async function callOnPrerenderStartHook(prerenderContext, globalContext, concurrencyLimit) {
411
- let onPrerenderStartHook;
412
- // V1 design
413
- if (globalContext._pageConfigs.length > 0) {
414
- const hookName = 'onPrerenderStart';
415
- const hook = (0, getHook_js_1.getHookFromPageConfigGlobal)(globalContext._pageConfigGlobal, hookName);
416
- if (hook) {
417
- (0, utils_js_1.assert)(hook.hookName === 'onPrerenderStart');
418
- onPrerenderStartHook = {
419
- ...hook,
420
- // Make TypeScript happy
421
- hookName,
422
- };
423
- }
424
- }
425
- // Old design
426
- // TO-DO/next-major-release: remove
427
- if (globalContext._pageConfigs.length === 0) {
428
- const hookTimeout = (0, getHook_js_1.getHookTimeoutDefault)('onBeforePrerender');
429
- const pageFilesWithOnBeforePrerenderHook = globalContext._pageFilesAll.filter((p) => {
430
- assertExportNames(p);
431
- if (!p.exportNames?.includes('onBeforePrerender'))
432
- return false;
433
- (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`);
434
- (0, utils_js_1.assertUsage)(p.isDefaultPageFile, `${p.filePath} has \`export { onBeforePrerender }\` but it is only allowed in \`_default.page.\` files`);
435
- return true;
436
- });
437
- if (pageFilesWithOnBeforePrerenderHook.length === 0) {
438
- return;
439
- }
440
- (0, utils_js_1.assertUsage)(pageFilesWithOnBeforePrerenderHook.length === 1, 'There can be only one `onBeforePrerender()` hook. If you need to be able to define several, open a new GitHub issue.');
441
- await Promise.all(pageFilesWithOnBeforePrerenderHook.map((p) => p.loadFile?.()));
442
- const hooks = pageFilesWithOnBeforePrerenderHook.map((p) => {
443
- (0, utils_js_1.assert)(p.fileExports);
444
- const { onBeforePrerender } = p.fileExports;
445
- (0, utils_js_1.assert)(onBeforePrerender);
446
- const hookFilePath = p.filePath;
447
- return { hookFilePath, onBeforePrerender };
448
- });
449
- (0, utils_js_1.assert)(hooks.length === 1);
450
- const hook = hooks[0];
451
- onPrerenderStartHook = {
452
- hookFn: hook.onBeforePrerender,
453
- hookFilePath: hook.hookFilePath,
454
- hookName: 'onBeforePrerender',
455
- hookTimeout,
456
- };
457
- }
458
- if (!onPrerenderStartHook) {
459
- return;
460
- }
461
- const msgPrefix = `The ${onPrerenderStartHook.hookName}() hook defined by ${onPrerenderStartHook.hookFilePath}`;
462
- const { hookFn, hookFilePath, hookName } = onPrerenderStartHook;
463
- (0, utils_js_1.assertUsage)((0, utils_js_1.isCallable)(hookFn), `${msgPrefix} should be a function.`);
464
- prerenderContext.pageContexts.forEach((pageContext) => {
465
- Object.defineProperty(pageContext, 'url', {
466
- // TO-DO/next-major-release: remove warning
467
- get() {
468
- (0, utils_js_1.assertWarning)(false, msgPrefix +
469
- ' uses pageContext.url but it should use pageContext.urlOriginal instead, see https://vike.dev/migration/0.4.23', { showStackTrace: true, onlyOnce: true });
470
- return pageContext.urlOriginal;
471
- },
472
- enumerable: false,
473
- configurable: true,
474
- });
475
- (0, utils_js_1.assert)((0, utils_js_1.isPropertyGetter)(pageContext, 'url'));
476
- (0, utils_js_1.assert)(pageContext.urlOriginal);
477
- pageContext._urlOriginalBeforeHook = pageContext.urlOriginal;
478
- });
479
- prerenderContext.pageContexts.forEach((pageContext) => {
480
- // Preserve URL computed properties when the user is copying pageContext is his onPrerenderStart() hook, e.g. /examples/i18n/
481
- // https://vike.dev/i18n#pre-rendering
482
- (0, utils_js_1.preservePropertyGetters)(pageContext);
483
- });
484
- const prerenderContextPublic = preparePrerenderContextForPublicUsage(prerenderContext);
485
- let result = await (0, execHook_js_1.execHookDirectWithoutPageContext)(() => hookFn(prerenderContextPublic), onPrerenderStartHook);
486
- // Before applying result
487
- prerenderContext.pageContexts.forEach((pageContext) => {
488
- ;
489
- pageContext._restorePropertyGetters?.();
490
- });
491
- if (result === null || result === undefined) {
492
- return;
493
- }
494
- const errPrefix = `The ${hookName}() hook exported by ${hookFilePath}`;
495
- const rightUsage = `${errPrefix} should return ${picocolors_1.default.cyan('null')}, ${picocolors_1.default.cyan('undefined')}, or ${picocolors_1.default.cyan('{ prerenderContext: { pageContexts } }')}`;
496
- // TO-DO/next-major-release: remove
497
- if ((0, utils_js_1.hasProp)(result, 'globalContext')) {
498
- (0, utils_js_1.assertUsage)((0, utils_js_1.isObjectWithKeys)(result, ['globalContext']) &&
499
- (0, utils_js_1.hasProp)(result, 'globalContext', 'object') &&
500
- (0, utils_js_1.hasProp)(result.globalContext, 'prerenderPageContexts', 'array'), rightUsage);
501
- (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 });
502
- result = {
503
- prerenderContext: {
504
- pageContexts: result.globalContext.prerenderPageContexts,
505
- },
506
- };
507
- }
508
- (0, utils_js_1.assertUsage)((0, utils_js_1.isObjectWithKeys)(result, ['prerenderContext']) &&
509
- (0, utils_js_1.hasProp)(result, 'prerenderContext', 'object') &&
510
- (0, utils_js_1.hasProp)(result.prerenderContext, 'pageContexts', 'array'), rightUsage);
511
- prerenderContext.pageContexts = result.prerenderContext.pageContexts;
512
- prerenderContext.pageContexts.forEach((pageContext) => {
513
- // TO-DO/next-major-release: remove
514
- if (pageContext.url && !(0, utils_js_1.isPropertyGetter)(pageContext, 'url')) {
515
- (0, utils_js_1.assertWarning)(false, msgPrefix +
516
- ' provided pageContext.url but it should provide pageContext.urlOriginal instead, see https://vike.dev/migration/0.4.23', { onlyOnce: true });
517
- pageContext.urlOriginal = pageContext.url;
518
- }
519
- delete pageContext.url;
520
- });
521
- // After applying result
522
- prerenderContext.pageContexts.forEach((pageContext) => {
523
- ;
524
- pageContext._restorePropertyGetters?.();
525
- });
526
- // Assert URL modified by user
527
- await Promise.all(prerenderContext.pageContexts.map((pageContext) => concurrencyLimit(async () => {
528
- if (pageContext.urlOriginal !== pageContext._urlOriginalBeforeHook && !pageContext.is404) {
529
- pageContext._urlOriginalModifiedByHook = {
530
- hookFilePath,
531
- hookName,
532
- };
533
- const pageContextFromRoute = await (0, index_js_1.route)(pageContext,
534
- // 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.
535
- true);
536
- assertRouteMatch(pageContextFromRoute, pageContext);
537
- }
538
- })));
539
- }
540
- async function prerenderPages(prerenderContext, concurrencyLimit, onComplete) {
541
- await Promise.all(prerenderContext.pageContexts.map((pageContextBeforeRender) => concurrencyLimit(async () => {
542
- let res;
543
- try {
544
- res = await (0, renderPageAfterRoute_js_1.prerenderPage)(pageContextBeforeRender);
545
- }
546
- catch (err) {
547
- assertIsNotAbort(err, picocolors_1.default.cyan(pageContextBeforeRender.urlOriginal));
548
- throw err;
549
- }
550
- const { documentHtml, pageContext } = res;
551
- const pageContextSerialized = pageContext.is404 ? null : res.pageContextSerialized;
552
- await onComplete({
553
- pageContext,
554
- htmlString: documentHtml,
555
- pageContextSerialized,
556
- });
557
- })));
558
- }
559
- function warnContradictoryNoPrerenderList(prerenderedPageContexts, doNotPrerenderList) {
560
- Object.entries(prerenderedPageContexts).forEach(([pageId, pageContext]) => {
561
- const doNotPrerenderListEntry = doNotPrerenderList.find((p) => p.pageId === pageId);
562
- const { urlOriginal, _providedByHook: providedByHook } = pageContext;
563
- {
564
- const isContradictory = !!doNotPrerenderListEntry && providedByHook;
565
- if (!isContradictory)
566
- return;
567
- }
568
- (0, utils_js_1.assertWarning)(false, `The ${providedByHook.hookName}() hook defined by ${providedByHook.hookFilePath} returns the URL ${picocolors_1.default.cyan(urlOriginal)} matching the route of the page ${picocolors_1.default.cyan(pageId)} which isn't configured to be pre-rendered. This is contradictory: either enable pre-rendering for ${picocolors_1.default.cyan(pageId)} or remove the URL ${picocolors_1.default.cyan(urlOriginal)} from the list of URLs to be pre-rendered.`, { onlyOnce: true });
569
- });
570
- }
571
- async function warnMissingPages(prerenderedPageContexts, globalContext, doNotPrerenderList, partial) {
572
- const isV1 = globalContext._pageConfigs.length > 0;
573
- const hookName = isV1 ? 'onBeforePrerenderStart' : 'prerender';
574
- globalContext._allPageIds
575
- .filter((pageId) => !prerenderedPageContexts[pageId])
576
- .filter((pageId) => !doNotPrerenderList.find((p) => p.pageId === pageId))
577
- .filter((pageId) => !(0, error_page_js_1.isErrorPage)(pageId, globalContext._pageConfigs))
578
- .forEach((pageId) => {
579
- const pageAt = isV1 ? pageId : `\`${pageId}.page.*\``;
580
- (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 });
581
- });
582
- }
583
- async function writeFiles({ pageContext, htmlString, pageContextSerialized }, viteConfig, onPagePrerender, prerenderContext, logLevel) {
584
- const writeJobs = [write(pageContext, 'HTML', htmlString, viteConfig, onPagePrerender, prerenderContext, logLevel)];
585
- if (pageContextSerialized !== null) {
586
- writeJobs.push(write(pageContext, 'JSON', pageContextSerialized, viteConfig, onPagePrerender, prerenderContext, logLevel));
587
- }
588
- await Promise.all(writeJobs);
589
- }
590
- async function write(pageContext, fileType, fileContent, viteConfig, onPagePrerender, prerenderContext, logLevel) {
591
- const { urlOriginal } = pageContext;
592
- (0, utils_js_1.assert)(urlOriginal.startsWith('/'));
593
- const { outDirClient } = (0, getOutDirs_js_1.getOutDirs)(viteConfig, undefined);
594
- const { root } = viteConfig;
595
- let fileUrl;
596
- if (fileType === 'HTML') {
597
- const doNotCreateExtraDirectory = prerenderContext._noExtraDir ?? pageContext.is404;
598
- fileUrl = (0, utils_js_1.urlToFile)(urlOriginal, '.html', doNotCreateExtraDirectory);
599
- }
600
- else {
601
- (0, utils_js_1.assert)(fileType === 'JSON');
602
- fileUrl = (0, getPageContextRequestUrl_js_1.getPageContextRequestUrl)(urlOriginal);
603
- }
604
- (0, utils_js_1.assertPosixPath)(fileUrl);
605
- (0, utils_js_1.assert)(fileUrl.startsWith('/'));
606
- const filePathRelative = fileUrl.slice(1);
607
- (0, utils_js_1.assert)(!filePathRelative.startsWith('/'),
608
- // https://github.com/vikejs/vike/issues/1929
609
- { urlOriginal, fileUrl });
610
- (0, utils_js_1.assertPosixPath)(outDirClient);
611
- (0, utils_js_1.assertPosixPath)(filePathRelative);
612
- const filePath = node_path_1.default.posix.join(outDirClient, filePathRelative);
613
- (0, utils_js_1.objectAssign)(pageContext, {
614
- _prerenderResult: {
615
- filePath,
616
- fileContent,
617
- },
618
- });
619
- prerenderContext.output.push({
620
- filePath,
621
- fileType,
622
- fileContent,
623
- pageContext,
624
- });
625
- if (onPagePrerender) {
626
- await onPagePrerender(pageContext);
627
- }
628
- else {
629
- const { promises } = await Promise.resolve().then(() => __importStar(require('node:fs')));
630
- const { writeFile, mkdir } = promises;
631
- await mkdir(node_path_1.default.posix.dirname(filePath), { recursive: true });
632
- await writeFile(filePath, fileContent);
633
- if (logLevel === 'info') {
634
- (0, utils_js_1.assertPosixPath)(root);
635
- (0, utils_js_1.assertPosixPath)(outDirClient);
636
- let outDirClientRelative = node_path_1.default.posix.relative(root, outDirClient);
637
- if (!outDirClientRelative.endsWith('/')) {
638
- outDirClientRelative = outDirClientRelative + '/';
639
- }
640
- console.log(`${picocolors_1.default.dim(outDirClientRelative)}${picocolors_1.default.blue(filePathRelative)}`);
641
- }
642
- }
643
- }
644
- function normalizeOnPrerenderHookResult(prerenderResult, prerenderHookFile, hookName) {
645
- if ((0, utils_js_1.isArray)(prerenderResult)) {
646
- return prerenderResult.map(normalize);
647
- }
648
- else {
649
- return [normalize(prerenderResult)];
650
- }
651
- function normalize(prerenderElement) {
652
- if (typeof prerenderElement === 'string') {
653
- prerenderElement = { url: prerenderElement, pageContext: null };
654
- }
655
- const errMsg1 = `The ${hookName}() hook defined by ${prerenderHookFile} returned`;
656
- const errMsg2 = `${errMsg1} an invalid value`;
657
- const errHint = `Make sure your ${hookName}() hook returns an object ${picocolors_1.default.cyan('{ url, pageContext }')} or an array of such objects.`;
658
- (0, utils_js_1.assertUsage)((0, utils_js_1.isPlainObject)(prerenderElement), `${errMsg2}. ${errHint}`);
659
- (0, utils_js_1.assertUsage)((0, utils_js_1.hasProp)(prerenderElement, 'url'), `${errMsg2}: ${picocolors_1.default.cyan('url')} is missing. ${errHint}`);
660
- (0, utils_js_1.assertUsage)((0, utils_js_1.hasProp)(prerenderElement, 'url', 'string'), `${errMsg2}: ${picocolors_1.default.cyan('url')} should be a string (but ${picocolors_1.default.cyan(`typeof url === "${typeof prerenderElement.url}"`)}).`);
661
- (0, utils_js_1.assertUsage)(prerenderElement.url.startsWith('/'), `${errMsg1} a URL with an invalid value ${picocolors_1.default.cyan(prerenderElement.url)} which doesn't start with ${picocolors_1.default.cyan('/')}. Make sure each URL starts with ${picocolors_1.default.cyan('/')}.`);
662
- Object.keys(prerenderElement).forEach((key) => {
663
- (0, utils_js_1.assertUsage)(key === 'url' || key === 'pageContext', `${errMsg2}: unexpected object key ${picocolors_1.default.cyan(key)}. ${errHint}`);
664
- });
665
- if (!(0, utils_js_1.hasProp)(prerenderElement, 'pageContext')) {
666
- prerenderElement.pageContext = null;
667
- }
668
- else if (!(0, utils_js_1.hasProp)(prerenderElement, 'pageContext', 'null')) {
669
- (0, utils_js_1.assertUsage)((0, utils_js_1.hasProp)(prerenderElement, 'pageContext', 'object'), `${errMsg1} an invalid ${picocolors_1.default.cyan('pageContext')} value: make sure ${picocolors_1.default.cyan('pageContext')} is an object.`);
670
- (0, utils_js_1.assertUsage)((0, utils_js_1.isPlainObject)(prerenderElement.pageContext), `${errMsg1} an invalid ${picocolors_1.default.cyan('pageContext')} object: make sure ${picocolors_1.default.cyan('pageContext')} is a plain JavaScript object.`);
671
- }
672
- (0, utils_js_1.assert)((0, utils_js_1.hasProp)(prerenderElement, 'pageContext', 'object') || (0, utils_js_1.hasProp)(prerenderElement, 'pageContext', 'null'));
673
- return prerenderElement;
674
- }
675
- }
676
- // TO-DO/next-major-release: remove
677
- function checkOutdatedOptions(options) {
678
- (0, utils_js_1.assertUsage)(options.root === undefined, 'Option `prerender({ root })` deprecated: set `prerender({ viteConfig: { root }})` instead.', { showStackTrace: true });
679
- (0, utils_js_1.assertUsage)(options.configFile === undefined, 'Option `prerender({ configFile })` deprecated: set `prerender({ viteConfig: { configFile }})` instead.', { showStackTrace: true });
680
- ['noExtraDir', 'partial', 'parallel'].forEach((prop) => {
681
- (0, utils_js_1.assertUsage)(options[prop] === undefined, `[prerender()] Option ${picocolors_1.default.cyan(prop)} is deprecated. Define ${picocolors_1.default.cyan(prop)} in vite.config.js instead. See https://vike.dev/prerender`, { showStackTrace: true });
682
- });
683
- ['base', 'outDir'].forEach((prop) => {
684
- (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)})`, {
685
- showStackTrace: true,
686
- onlyOnce: true,
687
- });
688
- });
689
- }
690
- async function disableReactStreaming() {
691
- let mod;
692
- try {
693
- mod = await Promise.resolve().then(() => __importStar(require('react-streaming/server')));
694
- }
695
- catch {
696
- return;
697
- }
698
- const { disable } = mod;
699
- disable();
700
- }
701
- function isSameUrl(url1, url2) {
702
- return normalizeUrl(url1) === normalizeUrl(url2);
703
- }
704
- function normalizeUrl(url) {
705
- return '/' + url.split('/').filter(Boolean).join('/');
706
- }
707
- function assertIsNotAbort(err, urlOriginal) {
708
- if (!(0, abort_js_1.isAbortError)(err))
709
- return;
710
- const pageContextAbort = err._pageContextAbort;
711
- const hookLoc = (0, execHook_js_1.isUserHookError)(err);
712
- (0, utils_js_1.assert)(hookLoc);
713
- const thrownBy = ` by ${picocolors_1.default.cyan(`${hookLoc.hookName}()`)} hook defined at ${hookLoc.hookFilePath}`;
714
- const abortCaller = pageContextAbort._abortCaller;
715
- (0, utils_js_1.assert)(abortCaller);
716
- const abortCall = pageContextAbort._abortCall;
717
- (0, utils_js_1.assert)(abortCall);
718
- (0, utils_js_1.assertUsage)(false, `${picocolors_1.default.cyan(abortCall)} thrown${thrownBy} while pre-rendering ${urlOriginal} but ${picocolors_1.default.cyan(abortCaller)} isn't supported for pre-rendered pages`);
719
- }
720
- function preparePrerenderContextForPublicUsage(prerenderContext) {
721
- // TO-DO/next-major-release: remove
722
- if (!('prerenderPageContexts' in prerenderContext)) {
723
- Object.defineProperty(prerenderContext, 'prerenderPageContexts', {
724
- get() {
725
- (0, utils_js_1.assertWarning)(false, `prerenderPageContexts has been renamed pageContexts, see ${picocolors_1.default.underline(docLink)}`, {
726
- showStackTrace: true,
727
- onlyOnce: true,
728
- });
729
- return prerenderContext.pageContexts;
730
- },
731
- });
732
- }
733
- // Required because of https://vike.dev/i18n#pre-rendering
734
- // - Thus, we have to let users access the original pageContext object => we cannot use ES proxies and we cannot use preparePageContextForPublicUsage()
735
- prerenderContext.pageContexts.forEach((pageContext) => {
736
- (0, utils_js_1.changeEnumerable)(pageContext, '_isOriginalObject', true);
737
- });
738
- const prerenderContextPublic = (0, getProxyForPublicUsage_js_1.getProxyForPublicUsage)(prerenderContext, 'prerenderContext');
739
- return prerenderContextPublic;
740
- }
741
- async function prerenderRedirects(globalContext, onComplete, showWarningUponDynamicRedirects) {
742
- const redirects = globalContext.config.redirects ?? [];
743
- const redirectsStatic = (0, resolveRedirects_js_1.getStaticRedirectsForPrerender)(redirects, showWarningUponDynamicRedirects);
744
- for (const [urlSource, urlTarget] of Object.entries(redirectsStatic)) {
745
- const urlOriginal = urlSource;
746
- const htmlString = getRedirectHtml(urlTarget);
747
- await onComplete({
748
- pageContext: { urlOriginal, pageId: null, is404: false, isRedirect: true },
749
- htmlString,
750
- pageContextSerialized: null,
751
- });
752
- }
753
- }
754
- function getRedirectHtml(urlTarget) {
755
- const urlTargetSafe = (0, utils_js_1.escapeHtml)(urlTarget);
756
- // To test it: /test/playground => http://localhost:3000/download
757
- const htmlString = `<!DOCTYPE html>
758
- <html lang="en">
759
- <head>
760
- <meta charset="UTF-8">
761
- <meta http-equiv="refresh" content="0;url=${urlTargetSafe}">
762
- <title>Redirect ${urlTargetSafe}</title>
763
- <style>body{opacity:0}</style>
764
- <noscript>
765
- <style>body{opacity:1}</style>
766
- </noscript>
767
- </head>
768
- <body style="min-height: 100vh; margin: 0; font-family: sans-serif; display: flex; justify-content: center; align-items: center; transition: opacity 0.3s;">
769
- <script>setTimeout(()=>{document.body.style.opacity=1},2000)</script>
770
- <div>
771
- <h1>Redirect <a href="${urlTargetSafe}"><code style="background-color: #eaeaea; padding: 3px 5px; border-radius: 4px;">${urlTargetSafe}</code></a></h1>
772
- <p>If you aren't redirected, click the link above.</p>
773
- <!-- This HTML was generated by Vike. -->
774
- </div>
775
- </body>
776
- </html>`;
777
- return htmlString;
778
- }