vike 0.0.0-alpha.0 → 0.4.142-commit-8bf568b

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 (922) hide show
  1. package/RenderErrorPage.js +2 -0
  2. package/__internal/setup.js +2 -0
  3. package/__internal.js +2 -0
  4. package/abort.js +2 -0
  5. package/cli.js +2 -0
  6. package/client/router.js +2 -0
  7. package/client.js +2 -0
  8. package/dist/cjs/__internal/index.js +31 -0
  9. package/dist/cjs/node/cli/bin.js +44 -0
  10. package/dist/cjs/node/cli/index.js +11 -0
  11. package/dist/cjs/node/cli/onLoad.js +8 -0
  12. package/dist/cjs/node/cli/utils.js +21 -0
  13. package/dist/cjs/node/client/router.js +15 -0
  14. package/dist/cjs/node/createPageRenderer.js +133 -0
  15. package/dist/cjs/node/importBuild.js +3 -0
  16. package/dist/cjs/node/plugin/index.js +70 -0
  17. package/dist/cjs/node/plugin/onLoad.js +13 -0
  18. package/dist/cjs/node/plugin/plugins/autoFullBuild.js +104 -0
  19. package/dist/cjs/node/plugin/plugins/baseUrls.js +43 -0
  20. package/dist/cjs/node/plugin/plugins/buildConfig.js +252 -0
  21. package/dist/cjs/node/plugin/plugins/commonConfig/assertResolveAlias.js +73 -0
  22. package/dist/cjs/node/plugin/plugins/commonConfig.js +80 -0
  23. package/dist/cjs/node/plugin/plugins/config/assertVikeConfig.js +74 -0
  24. package/dist/cjs/node/plugin/plugins/config/findConfigVikeFromStemPackages.js +27 -0
  25. package/dist/cjs/node/plugin/plugins/config/index.js +77 -0
  26. package/dist/cjs/node/plugin/plugins/config/pickFirst.js +7 -0
  27. package/dist/cjs/node/plugin/plugins/config/resolveBase.js +48 -0
  28. package/dist/cjs/node/plugin/plugins/config/resolveExtensions.js +107 -0
  29. package/dist/cjs/node/plugin/plugins/config/stemUtils.js +85 -0
  30. package/dist/cjs/node/plugin/plugins/devConfig/determineFsAllowList.js +42 -0
  31. package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +125 -0
  32. package/dist/cjs/node/plugin/plugins/devConfig/index.js +87 -0
  33. package/dist/cjs/node/plugin/plugins/distFileNames.js +169 -0
  34. package/dist/cjs/node/plugin/plugins/envVars.js +82 -0
  35. package/dist/cjs/node/plugin/plugins/extensionsAssets.js +101 -0
  36. package/dist/cjs/node/plugin/plugins/extractAssetsPlugin.js +234 -0
  37. package/dist/cjs/node/plugin/plugins/extractExportNamesPlugin.js +95 -0
  38. package/dist/cjs/node/plugin/plugins/importBuild/index.js +54 -0
  39. package/dist/cjs/node/plugin/plugins/importUserCode/generateEagerImport.js +21 -0
  40. package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +242 -0
  41. package/dist/cjs/node/plugin/plugins/importUserCode/index.js +140 -0
  42. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/debug.js +5 -0
  43. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getFilePathToShowToUser.js +10 -0
  44. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +100 -0
  45. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/filesystemRouting.js +176 -0
  46. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +1120 -0
  47. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +79 -0
  48. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +160 -0
  49. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/helpers.js +34 -0
  50. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/isConfigEnvMatch.js +13 -0
  51. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/replaceImportStatements.js +154 -0
  52. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/transpileAndExecuteFile.js +283 -0
  53. package/dist/cjs/node/plugin/plugins/manifest.js +59 -0
  54. package/dist/cjs/node/plugin/plugins/packageJsonFile.js +45 -0
  55. package/dist/cjs/node/plugin/plugins/previewConfig.js +61 -0
  56. package/dist/cjs/node/plugin/plugins/removeRequireHookPlugin.js +18 -0
  57. package/dist/cjs/node/plugin/plugins/setGlobalContext.js +31 -0
  58. package/dist/cjs/node/plugin/plugins/suppressRollupWarning.js +51 -0
  59. package/dist/cjs/node/plugin/shared/addSsrMiddleware.js +41 -0
  60. package/dist/cjs/node/plugin/shared/findPageFiles.js +24 -0
  61. package/dist/cjs/node/plugin/shared/getConfigValueSource.js +25 -0
  62. package/dist/cjs/node/plugin/shared/getHttpRequestAsyncStore.js +122 -0
  63. package/dist/cjs/node/plugin/shared/isAsset.js +41 -0
  64. package/dist/cjs/node/plugin/shared/isErrorDebug.js +8 -0
  65. package/dist/cjs/node/plugin/shared/isViteCliCall.js +84 -0
  66. package/dist/cjs/node/plugin/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errBabelReact.js +15 -0
  67. package/dist/cjs/node/plugin/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errBabelSolid.js +15 -0
  68. package/dist/cjs/node/plugin/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errEsbuild.js +38 -0
  69. package/dist/cjs/node/plugin/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errMdx.js +26 -0
  70. package/dist/cjs/node/plugin/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errPostcss.js +30 -0
  71. package/dist/cjs/node/plugin/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errSwc.js +19 -0
  72. package/dist/cjs/node/plugin/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errSwcBig.js +19 -0
  73. package/dist/cjs/node/plugin/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errVueCss.js +29 -0
  74. package/dist/cjs/node/plugin/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errVueHtml.js +13 -0
  75. package/dist/cjs/node/plugin/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errVueJavascript.js +15 -0
  76. package/dist/cjs/node/plugin/shared/loggerNotProd/errorWithCodeSnippet.js +168 -0
  77. package/dist/cjs/node/plugin/shared/loggerNotProd/log.js +114 -0
  78. package/dist/cjs/node/plugin/shared/loggerNotProd.js +224 -0
  79. package/dist/cjs/node/plugin/shared/loggerVite/removeSuperfluousViteLog.js +25 -0
  80. package/dist/cjs/node/plugin/shared/loggerVite.js +61 -0
  81. package/dist/cjs/node/plugin/shared/parseEsModule.js +34 -0
  82. package/dist/cjs/node/plugin/shared/removeSourceMap.js +12 -0
  83. package/dist/cjs/node/plugin/shared/rollupIsEsm.js +16 -0
  84. package/dist/cjs/node/plugin/utils.js +41 -0
  85. package/dist/cjs/node/prerender/index.js +5 -0
  86. package/dist/cjs/node/prerender/runPrerender.js +707 -0
  87. package/dist/cjs/node/prerender/utils.js +31 -0
  88. package/dist/cjs/node/runtime/globalContext/loadImportBuild.js +30 -0
  89. package/dist/cjs/node/runtime/globalContext.js +163 -0
  90. package/dist/cjs/node/runtime/html/injectAssets/getHtmlTags.js +161 -0
  91. package/dist/cjs/node/runtime/html/injectAssets/getViteDevScripts.js +28 -0
  92. package/dist/cjs/node/runtime/html/injectAssets/inferHtmlTags.js +52 -0
  93. package/dist/cjs/node/runtime/html/injectAssets/injectAssets__public.js +32 -0
  94. package/dist/cjs/node/runtime/html/injectAssets/injectHtmlTags.js +157 -0
  95. package/dist/cjs/node/runtime/html/injectAssets/mergeScriptTags.js +71 -0
  96. package/dist/cjs/node/runtime/html/injectAssets/sanitizeJson.js +9 -0
  97. package/dist/cjs/node/runtime/html/injectAssets.js +76 -0
  98. package/dist/cjs/node/runtime/html/renderHtml.js +237 -0
  99. package/dist/cjs/node/runtime/html/serializePageContextClientSide.js +117 -0
  100. package/dist/cjs/node/runtime/html/stream/react-streaming.js +36 -0
  101. package/dist/cjs/node/runtime/html/stream.js +751 -0
  102. package/dist/cjs/node/runtime/index-common.js +23 -0
  103. package/dist/cjs/node/runtime/index-deprecated.js +61 -0
  104. package/dist/cjs/node/runtime/index.js +19 -0
  105. package/dist/cjs/node/runtime/onLoad.js +12 -0
  106. package/dist/cjs/node/runtime/page-files/setup.js +23 -0
  107. package/dist/cjs/node/runtime/renderPage/analyzePage.js +69 -0
  108. package/dist/cjs/node/runtime/renderPage/assertArguments.js +43 -0
  109. package/dist/cjs/node/runtime/renderPage/createHttpResponseObject/assertNoInfiniteHttpRedirect.js +44 -0
  110. package/dist/cjs/node/runtime/renderPage/createHttpResponseObject.js +68 -0
  111. package/dist/cjs/node/runtime/renderPage/debugPageFiles.js +53 -0
  112. package/dist/cjs/node/runtime/renderPage/executeOnBeforeRenderHook.js +23 -0
  113. package/dist/cjs/node/runtime/renderPage/executeOnRenderHtmlHook.js +139 -0
  114. package/dist/cjs/node/runtime/renderPage/getEarlyHints.js +46 -0
  115. package/dist/cjs/node/runtime/renderPage/getHttpResponseBody.js +131 -0
  116. package/dist/cjs/node/runtime/renderPage/getPageAssets/assertClientEntryId.js +25 -0
  117. package/dist/cjs/node/runtime/renderPage/getPageAssets/getManifestEntry.js +128 -0
  118. package/dist/cjs/node/runtime/renderPage/getPageAssets/retrieveAssetsDev.js +75 -0
  119. package/dist/cjs/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +61 -0
  120. package/dist/cjs/node/runtime/renderPage/getPageAssets/sortPageAssetsForEarlyHintsHeader.js +33 -0
  121. package/dist/cjs/node/runtime/renderPage/getPageAssets.js +133 -0
  122. package/dist/cjs/node/runtime/renderPage/handleErrorWithoutErrorPage.js +43 -0
  123. package/dist/cjs/node/runtime/renderPage/handlePageContextRequestUrl.js +33 -0
  124. package/dist/cjs/node/runtime/renderPage/inferMediaType.js +41 -0
  125. package/dist/cjs/node/runtime/renderPage/isConfigInvalid.js +8 -0
  126. package/dist/cjs/node/runtime/renderPage/isNewError.js +23 -0
  127. package/dist/cjs/node/runtime/renderPage/loadPageFilesServerSide.js +100 -0
  128. package/dist/cjs/node/runtime/renderPage/log404/index.js +144 -0
  129. package/dist/cjs/node/runtime/renderPage/loggerProd.js +23 -0
  130. package/dist/cjs/node/runtime/renderPage/loggerRuntime.js +17 -0
  131. package/dist/cjs/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +19 -0
  132. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +186 -0
  133. package/dist/cjs/node/runtime/renderPage.js +405 -0
  134. package/dist/cjs/node/runtime/utils.js +71 -0
  135. package/dist/cjs/node/shared/ViteManifest.js +2 -0
  136. package/dist/cjs/node/shared/assertPluginManifest.js +24 -0
  137. package/dist/cjs/node/shared/assertRuntimeManifest.js +19 -0
  138. package/dist/cjs/node/shared/extractAssetsQuery.js +29 -0
  139. package/dist/cjs/node/shared/getClientEntryFilePath.js +18 -0
  140. package/dist/cjs/node/shared/getConfigVike.js +8 -0
  141. package/dist/cjs/node/shared/utils.js +33 -0
  142. package/dist/cjs/node/shared/virtual-files/virtualFileImportUserCode.js +27 -0
  143. package/dist/cjs/node/shared/virtual-files/virtualFilePageConfigValuesAll.js +39 -0
  144. package/dist/cjs/package.json +1 -0
  145. package/dist/cjs/shared/ConfigVike.js +2 -0
  146. package/dist/cjs/shared/RenderErrorPage.js +6 -0
  147. package/dist/cjs/shared/VikeNamespace.js +2 -0
  148. package/dist/cjs/shared/abort.js +16 -0
  149. package/dist/cjs/shared/addIs404ToPageProps.js +26 -0
  150. package/dist/cjs/shared/addUrlComputedProps.js +111 -0
  151. package/dist/cjs/shared/assertHookReturnedObject.js +22 -0
  152. package/dist/cjs/shared/assertOnBeforeRenderHookReturn.js +22 -0
  153. package/dist/cjs/shared/assertPageContextProvidedByUser.js +21 -0
  154. package/dist/cjs/shared/assertPageFilePath.js +12 -0
  155. package/dist/cjs/shared/determinePageIdOld.js +12 -0
  156. package/dist/cjs/shared/error-page.js +41 -0
  157. package/dist/cjs/shared/getPageContextRequestUrl.js +16 -0
  158. package/dist/cjs/shared/getPageFiles/analyzeClientSide.js +22 -0
  159. package/dist/cjs/shared/getPageFiles/analyzePageClientSide/ClientDependency.js +2 -0
  160. package/dist/cjs/shared/getPageFiles/analyzePageClientSide/analyzeExports.js +51 -0
  161. package/dist/cjs/shared/getPageFiles/analyzePageClientSide/determineClientEntry.js +30 -0
  162. package/dist/cjs/shared/getPageFiles/analyzePageClientSide/getExportNames.js +16 -0
  163. package/dist/cjs/shared/getPageFiles/analyzePageClientSide.js +61 -0
  164. package/dist/cjs/shared/getPageFiles/analyzePageServerSide.js +23 -0
  165. package/dist/cjs/shared/getPageFiles/assertExports.js +24 -0
  166. package/dist/cjs/shared/getPageFiles/assertPageConfigs.js +19 -0
  167. package/dist/cjs/shared/getPageFiles/fileTypes.js +53 -0
  168. package/dist/cjs/shared/getPageFiles/getAllPageIdFiles.js +106 -0
  169. package/dist/cjs/shared/getPageFiles/getExports.js +146 -0
  170. package/dist/cjs/shared/getPageFiles/getPageFileObject.js +62 -0
  171. package/dist/cjs/shared/getPageFiles/parseGlobResults.js +127 -0
  172. package/dist/cjs/shared/getPageFiles/setPageFiles.js +47 -0
  173. package/dist/cjs/shared/getPageFiles.js +18 -0
  174. package/dist/cjs/shared/hooks/executeHook.js +74 -0
  175. package/dist/cjs/shared/hooks/getHook.js +29 -0
  176. package/dist/cjs/shared/notSerializable.js +5 -0
  177. package/dist/cjs/shared/page-configs/Config/PageContextConfig.js +2 -0
  178. package/dist/cjs/shared/page-configs/Config/helpers.js +2 -0
  179. package/dist/cjs/shared/page-configs/Config.js +2 -0
  180. package/dist/cjs/shared/page-configs/PageConfig.js +2 -0
  181. package/dist/cjs/shared/page-configs/findPageConfig.js +11 -0
  182. package/dist/cjs/shared/page-configs/getExportPath.js +31 -0
  183. package/dist/cjs/shared/page-configs/loadPageCode.js +63 -0
  184. package/dist/cjs/shared/page-configs/utils.js +80 -0
  185. package/dist/cjs/shared/route/abort.js +161 -0
  186. package/dist/cjs/shared/route/debug.js +14 -0
  187. package/dist/cjs/shared/route/deduceRouteStringFromFilesystemPath.js +53 -0
  188. package/dist/cjs/shared/route/executeGuardHook.js +40 -0
  189. package/dist/cjs/shared/route/executeOnBeforeRouteHook.js +56 -0
  190. package/dist/cjs/shared/route/index.js +119 -0
  191. package/dist/cjs/shared/route/loadPageRoutes.js +197 -0
  192. package/dist/cjs/shared/route/resolvePrecedence.js +72 -0
  193. package/dist/cjs/shared/route/resolveRedirects.js +55 -0
  194. package/dist/cjs/shared/route/resolveRoute.js +21 -0
  195. package/dist/cjs/shared/route/resolveRouteFunction.js +70 -0
  196. package/dist/cjs/shared/route/resolveRouteString.js +101 -0
  197. package/dist/cjs/shared/route/routing.js +9 -0
  198. package/dist/cjs/shared/route/utils.js +43 -0
  199. package/dist/cjs/shared/sortPageContext.js +17 -0
  200. package/dist/cjs/shared/types.js +2 -0
  201. package/dist/cjs/shared/utils.js +43 -0
  202. package/dist/cjs/types/index-dreprecated.js +3 -0
  203. package/dist/cjs/types/index.js +2 -0
  204. package/dist/cjs/utils/PromiseType.js +2 -0
  205. package/dist/cjs/utils/arrayIncludes.js +7 -0
  206. package/dist/cjs/utils/assert.js +194 -0
  207. package/dist/cjs/utils/assertDefaultExport.js +53 -0
  208. package/dist/cjs/utils/assertIsBrowser.js +9 -0
  209. package/dist/cjs/utils/assertIsNotBrowser.js +10 -0
  210. package/dist/cjs/utils/assertIsNotProductionRuntime.js +44 -0
  211. package/dist/cjs/utils/assertNodeVersion.js +14 -0
  212. package/dist/cjs/utils/assertPathIsFilesystemAbsolute.js +20 -0
  213. package/dist/cjs/utils/assertRoutingType.js +30 -0
  214. package/dist/cjs/utils/assertSingleInstance.js +97 -0
  215. package/dist/cjs/utils/autoRetry.js +23 -0
  216. package/dist/cjs/utils/capitalizeFirstLetter.js +10 -0
  217. package/dist/cjs/utils/cast.js +7 -0
  218. package/dist/cjs/utils/checkType.js +7 -0
  219. package/dist/cjs/utils/compareString.js +11 -0
  220. package/dist/cjs/utils/createErrorWithCleanStackTrace.js +46 -0
  221. package/dist/cjs/utils/debug.js +109 -0
  222. package/dist/cjs/utils/debugGlob.js +6 -0
  223. package/dist/cjs/utils/deepEqual.js +11 -0
  224. package/dist/cjs/utils/dynamicImport.js +8 -0
  225. package/dist/cjs/utils/escapeRegex.js +8 -0
  226. package/dist/cjs/utils/filesystemPathHandling.js +19 -0
  227. package/dist/cjs/utils/findUserPackageJsonPath.js +24 -0
  228. package/dist/cjs/utils/freezePartial.js +36 -0
  229. package/dist/cjs/utils/getCurrentUrl.js +19 -0
  230. package/dist/cjs/utils/getDependencyPackageJson.js +91 -0
  231. package/dist/cjs/utils/getFileExtension.js +17 -0
  232. package/dist/cjs/utils/getFilePathAbsolute.js +70 -0
  233. package/dist/cjs/utils/getGlobalObject.js +11 -0
  234. package/dist/cjs/utils/getMostSimilar.js +69 -0
  235. package/dist/cjs/utils/getOutDirs.js +121 -0
  236. package/dist/cjs/utils/getPropAccessNotation.js +10 -0
  237. package/dist/cjs/utils/getRandomId.js +15 -0
  238. package/dist/cjs/utils/getTerminWidth.js +8 -0
  239. package/dist/cjs/utils/getValuePrintable.js +11 -0
  240. package/dist/cjs/utils/hasProp.js +48 -0
  241. package/dist/cjs/utils/hasPropertyGetter.js +8 -0
  242. package/dist/cjs/utils/humanizeTime.js +25 -0
  243. package/dist/cjs/utils/isBrowser.js +9 -0
  244. package/dist/cjs/utils/isCallable.js +7 -0
  245. package/dist/cjs/utils/isDev.js +32 -0
  246. package/dist/cjs/utils/isEquivalentError.js +18 -0
  247. package/dist/cjs/utils/isHtml.js +10 -0
  248. package/dist/cjs/utils/isNodeJS.js +17 -0
  249. package/dist/cjs/utils/isNotNullish.js +5 -0
  250. package/dist/cjs/utils/isNpmPackage.js +96 -0
  251. package/dist/cjs/utils/isObject.js +7 -0
  252. package/dist/cjs/utils/isObjectWithKeys.js +16 -0
  253. package/dist/cjs/utils/isPlainObject.js +18 -0
  254. package/dist/cjs/utils/isPromise.js +8 -0
  255. package/dist/cjs/utils/isReact.js +24 -0
  256. package/dist/cjs/utils/isScriptFile.js +53 -0
  257. package/dist/cjs/utils/isStemPackageName.js +14 -0
  258. package/dist/cjs/utils/isStringRecord.js +7 -0
  259. package/dist/cjs/utils/isVitest.js +7 -0
  260. package/dist/cjs/utils/joinEnglish.js +14 -0
  261. package/dist/cjs/utils/mergeCumulativeValues.js +21 -0
  262. package/dist/cjs/utils/nodeEnv.js +16 -0
  263. package/dist/cjs/utils/objectAssign.js +10 -0
  264. package/dist/cjs/utils/objectEntries.js +8 -0
  265. package/dist/cjs/utils/objectKeys.js +10 -0
  266. package/dist/cjs/utils/pLimit.js +135 -0
  267. package/dist/cjs/utils/parseUrl-extras.js +96 -0
  268. package/dist/cjs/utils/parseUrl.js +221 -0
  269. package/dist/cjs/utils/path-shim.js +15 -0
  270. package/dist/cjs/utils/projectInfo.js +14 -0
  271. package/dist/cjs/utils/removeEmptyLines.js +10 -0
  272. package/dist/cjs/utils/removeFileExtention.js +7 -0
  273. package/dist/cjs/utils/resolve.js +60 -0
  274. package/dist/cjs/utils/serverSideRouteTo.js +7 -0
  275. package/dist/cjs/utils/sleep.js +7 -0
  276. package/dist/cjs/utils/slice.js +36 -0
  277. package/dist/cjs/utils/sorter.js +60 -0
  278. package/dist/cjs/utils/stringifyStringArray.js +7 -0
  279. package/dist/cjs/utils/stripAnsi.js +22 -0
  280. package/dist/cjs/utils/styleFileRE.js +5 -0
  281. package/dist/cjs/utils/throttle.js +16 -0
  282. package/dist/cjs/utils/trackLogs.js +31 -0
  283. package/dist/cjs/utils/trimWithAnsi.js +41 -0
  284. package/dist/cjs/utils/truncateString.js +19 -0
  285. package/dist/cjs/utils/unique.js +7 -0
  286. package/dist/cjs/utils/urlToFile.js +36 -0
  287. package/dist/cjs/utils/virtual-files.js +33 -0
  288. package/dist/cjs/utils/viteIsSSR.js +23 -0
  289. package/dist/cjs/utils/warnIfErrorIsNotObject.js +24 -0
  290. package/dist/esm/__internal/index.d.ts +17 -0
  291. package/dist/esm/__internal/index.js +27 -0
  292. package/dist/esm/client/client-routing-runtime/createPageContext.d.ts +18 -0
  293. package/dist/esm/client/client-routing-runtime/createPageContext.js +35 -0
  294. package/dist/esm/client/client-routing-runtime/entry.d.ts +1 -0
  295. package/dist/esm/client/client-routing-runtime/entry.js +9 -0
  296. package/dist/esm/client/client-routing-runtime/getBaseServer.d.ts +1 -0
  297. package/dist/esm/client/client-routing-runtime/getBaseServer.js +11 -0
  298. package/dist/esm/client/client-routing-runtime/getPageContext/removeBuiltInOverrides.d.ts +7 -0
  299. package/dist/esm/client/client-routing-runtime/getPageContext/removeBuiltInOverrides.js +22 -0
  300. package/dist/esm/client/client-routing-runtime/getPageContext.d.ts +29 -0
  301. package/dist/esm/client/client-routing-runtime/getPageContext.js +240 -0
  302. package/dist/esm/client/client-routing-runtime/getPageId.d.ts +10 -0
  303. package/dist/esm/client/client-routing-runtime/getPageId.js +17 -0
  304. package/dist/esm/client/client-routing-runtime/history.d.ts +13 -0
  305. package/dist/esm/client/client-routing-runtime/history.js +71 -0
  306. package/dist/esm/client/client-routing-runtime/index.d.ts +18 -0
  307. package/dist/esm/client/client-routing-runtime/index.js +7 -0
  308. package/dist/esm/client/client-routing-runtime/isExternalLink.d.ts +2 -0
  309. package/dist/esm/client/client-routing-runtime/isExternalLink.js +4 -0
  310. package/dist/esm/client/client-routing-runtime/navigate.d.ts +17 -0
  311. package/dist/esm/client/client-routing-runtime/navigate.js +34 -0
  312. package/dist/esm/client/client-routing-runtime/navigationState.d.ts +5 -0
  313. package/dist/esm/client/client-routing-runtime/navigationState.js +14 -0
  314. package/dist/esm/client/client-routing-runtime/onLoad.d.ts +2 -0
  315. package/dist/esm/client/client-routing-runtime/onLoad.js +8 -0
  316. package/dist/esm/client/client-routing-runtime/pageFiles.d.ts +1 -0
  317. package/dist/esm/client/client-routing-runtime/pageFiles.js +4 -0
  318. package/dist/esm/client/client-routing-runtime/prefetch/alreadyPrefetched.d.ts +4 -0
  319. package/dist/esm/client/client-routing-runtime/prefetch/alreadyPrefetched.js +16 -0
  320. package/dist/esm/client/client-routing-runtime/prefetch/getPrefetchSettings.d.ts +11 -0
  321. package/dist/esm/client/client-routing-runtime/prefetch/getPrefetchSettings.js +82 -0
  322. package/dist/esm/client/client-routing-runtime/prefetch.d.ts +15 -0
  323. package/dist/esm/client/client-routing-runtime/prefetch.js +89 -0
  324. package/dist/esm/client/client-routing-runtime/skipLink/isClientSideRoutable.d.ts +2 -0
  325. package/dist/esm/client/client-routing-runtime/skipLink/isClientSideRoutable.js +15 -0
  326. package/dist/esm/client/client-routing-runtime/skipLink.d.ts +3 -0
  327. package/dist/esm/client/client-routing-runtime/skipLink.js +61 -0
  328. package/dist/esm/client/client-routing-runtime/useClientRouter.d.ts +6 -0
  329. package/dist/esm/client/client-routing-runtime/useClientRouter.js +493 -0
  330. package/dist/esm/client/client-routing-runtime/utils.d.ts +22 -0
  331. package/dist/esm/client/client-routing-runtime/utils.js +28 -0
  332. package/dist/esm/client/node.d.ts +1 -0
  333. package/dist/esm/client/node.js +9 -0
  334. package/dist/esm/client/server-routing-runtime/entry.d.ts +1 -0
  335. package/dist/esm/client/server-routing-runtime/entry.js +17 -0
  336. package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +14 -0
  337. package/dist/esm/client/server-routing-runtime/getPageContext.js +36 -0
  338. package/dist/esm/client/server-routing-runtime/index.d.ts +16 -0
  339. package/dist/esm/client/server-routing-runtime/index.js +2 -0
  340. package/dist/esm/client/server-routing-runtime/onLoad.d.ts +2 -0
  341. package/dist/esm/client/server-routing-runtime/onLoad.js +5 -0
  342. package/dist/esm/client/server-routing-runtime/pageFiles.d.ts +1 -0
  343. package/dist/esm/client/server-routing-runtime/pageFiles.js +4 -0
  344. package/dist/esm/client/server-routing-runtime/utils.d.ts +14 -0
  345. package/dist/esm/client/server-routing-runtime/utils.js +18 -0
  346. package/dist/esm/client/shared/executeOnRenderClientHook.d.ts +11 -0
  347. package/dist/esm/client/shared/executeOnRenderClientHook.js +63 -0
  348. package/dist/esm/client/shared/getPageContextProxyForUser.d.ts +11 -0
  349. package/dist/esm/client/shared/getPageContextProxyForUser.js +66 -0
  350. package/dist/esm/client/shared/getPageContextSerializedInHtml.d.ts +5 -0
  351. package/dist/esm/client/shared/getPageContextSerializedInHtml.js +16 -0
  352. package/dist/esm/client/shared/loadPageFilesClientSide.d.ts +8 -0
  353. package/dist/esm/client/shared/loadPageFilesClientSide.js +64 -0
  354. package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.d.ts +12 -0
  355. package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.js +53 -0
  356. package/dist/esm/node/cli/bin.d.ts +1 -0
  357. package/dist/esm/node/cli/bin.js +42 -0
  358. package/dist/esm/node/cli/index.d.ts +2 -0
  359. package/dist/esm/node/cli/index.js +7 -0
  360. package/dist/esm/node/cli/onLoad.d.ts +2 -0
  361. package/dist/esm/node/cli/onLoad.js +5 -0
  362. package/dist/esm/node/cli/utils.d.ts +2 -0
  363. package/dist/esm/node/cli/utils.js +5 -0
  364. package/dist/esm/node/client/router.d.ts +4 -0
  365. package/dist/esm/node/client/router.js +12 -0
  366. package/dist/esm/node/createPageRenderer.d.ts +13 -0
  367. package/dist/esm/node/createPageRenderer.js +131 -0
  368. package/dist/esm/node/importBuild.d.ts +1 -0
  369. package/dist/esm/node/importBuild.js +3 -0
  370. package/dist/esm/node/plugin/index.d.ts +6 -0
  371. package/dist/esm/node/plugin/index.js +64 -0
  372. package/dist/esm/node/plugin/onLoad.d.ts +2 -0
  373. package/dist/esm/node/plugin/onLoad.js +10 -0
  374. package/dist/esm/node/plugin/plugins/autoFullBuild.d.ts +3 -0
  375. package/dist/esm/node/plugin/plugins/autoFullBuild.js +98 -0
  376. package/dist/esm/node/plugin/plugins/baseUrls.d.ts +4 -0
  377. package/dist/esm/node/plugin/plugins/baseUrls.js +40 -0
  378. package/dist/esm/node/plugin/plugins/buildConfig.d.ts +12 -0
  379. package/dist/esm/node/plugin/plugins/buildConfig.js +246 -0
  380. package/dist/esm/node/plugin/plugins/commonConfig/assertResolveAlias.d.ts +3 -0
  381. package/dist/esm/node/plugin/plugins/commonConfig/assertResolveAlias.js +67 -0
  382. package/dist/esm/node/plugin/plugins/commonConfig.d.ts +3 -0
  383. package/dist/esm/node/plugin/plugins/commonConfig.js +74 -0
  384. package/dist/esm/node/plugin/plugins/config/assertVikeConfig.d.ts +7 -0
  385. package/dist/esm/node/plugin/plugins/config/assertVikeConfig.js +71 -0
  386. package/dist/esm/node/plugin/plugins/config/findConfigVikeFromStemPackages.d.ts +3 -0
  387. package/dist/esm/node/plugin/plugins/config/findConfigVikeFromStemPackages.js +24 -0
  388. package/dist/esm/node/plugin/plugins/config/index.d.ts +3 -0
  389. package/dist/esm/node/plugin/plugins/config/index.js +71 -0
  390. package/dist/esm/node/plugin/plugins/config/pickFirst.d.ts +1 -0
  391. package/dist/esm/node/plugin/plugins/config/pickFirst.js +3 -0
  392. package/dist/esm/node/plugin/plugins/config/resolveBase.d.ts +10 -0
  393. package/dist/esm/node/plugin/plugins/config/resolveBase.js +42 -0
  394. package/dist/esm/node/plugin/plugins/config/resolveExtensions.d.ts +4 -0
  395. package/dist/esm/node/plugin/plugins/config/resolveExtensions.js +101 -0
  396. package/dist/esm/node/plugin/plugins/config/stemUtils.d.ts +8 -0
  397. package/dist/esm/node/plugin/plugins/config/stemUtils.js +79 -0
  398. package/dist/esm/node/plugin/plugins/devConfig/determineFsAllowList.d.ts +4 -0
  399. package/dist/esm/node/plugin/plugins/devConfig/determineFsAllowList.js +36 -0
  400. package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.d.ts +4 -0
  401. package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +122 -0
  402. package/dist/esm/node/plugin/plugins/devConfig/index.d.ts +3 -0
  403. package/dist/esm/node/plugin/plugins/devConfig/index.js +84 -0
  404. package/dist/esm/node/plugin/plugins/distFileNames.d.ts +3 -0
  405. package/dist/esm/node/plugin/plugins/distFileNames.js +163 -0
  406. package/dist/esm/node/plugin/plugins/envVars.d.ts +3 -0
  407. package/dist/esm/node/plugin/plugins/envVars.js +79 -0
  408. package/dist/esm/node/plugin/plugins/extensionsAssets.d.ts +3 -0
  409. package/dist/esm/node/plugin/plugins/extensionsAssets.js +95 -0
  410. package/dist/esm/node/plugin/plugins/extractAssetsPlugin.d.ts +5 -0
  411. package/dist/esm/node/plugin/plugins/extractAssetsPlugin.js +232 -0
  412. package/dist/esm/node/plugin/plugins/extractExportNamesPlugin.d.ts +7 -0
  413. package/dist/esm/node/plugin/plugins/extractExportNamesPlugin.js +92 -0
  414. package/dist/esm/node/plugin/plugins/importBuild/index.d.ts +3 -0
  415. package/dist/esm/node/plugin/plugins/importBuild/index.js +48 -0
  416. package/dist/esm/node/plugin/plugins/importUserCode/generateEagerImport.d.ts +5 -0
  417. package/dist/esm/node/plugin/plugins/importUserCode/generateEagerImport.js +18 -0
  418. package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.d.ts +6 -0
  419. package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +236 -0
  420. package/dist/esm/node/plugin/plugins/importUserCode/index.d.ts +3 -0
  421. package/dist/esm/node/plugin/plugins/importUserCode/index.js +134 -0
  422. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/debug.d.ts +8 -0
  423. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/debug.js +2 -0
  424. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getFilePathToShowToUser.d.ts +7 -0
  425. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getFilePathToShowToUser.js +7 -0
  426. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.d.ts +53 -0
  427. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +97 -0
  428. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/filesystemRouting.d.ts +31 -0
  429. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/filesystemRouting.js +174 -0
  430. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +15 -0
  431. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +1114 -0
  432. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.d.ts +3 -0
  433. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +73 -0
  434. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.d.ts +3 -0
  435. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +154 -0
  436. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/helpers.d.ts +5 -0
  437. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/helpers.js +31 -0
  438. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/isConfigEnvMatch.d.ts +3 -0
  439. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/isConfigEnvMatch.js +10 -0
  440. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/replaceImportStatements.d.ts +31 -0
  441. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/replaceImportStatements.js +148 -0
  442. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/transpileAndExecuteFile.d.ts +12 -0
  443. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/transpileAndExecuteFile.js +277 -0
  444. package/dist/esm/node/plugin/plugins/manifest.d.ts +3 -0
  445. package/dist/esm/node/plugin/plugins/manifest.js +53 -0
  446. package/dist/esm/node/plugin/plugins/packageJsonFile.d.ts +3 -0
  447. package/dist/esm/node/plugin/plugins/packageJsonFile.js +42 -0
  448. package/dist/esm/node/plugin/plugins/previewConfig.d.ts +3 -0
  449. package/dist/esm/node/plugin/plugins/previewConfig.js +55 -0
  450. package/dist/esm/node/plugin/plugins/removeRequireHookPlugin.d.ts +3 -0
  451. package/dist/esm/node/plugin/plugins/removeRequireHookPlugin.js +15 -0
  452. package/dist/esm/node/plugin/plugins/setGlobalContext.d.ts +3 -0
  453. package/dist/esm/node/plugin/plugins/setGlobalContext.js +28 -0
  454. package/dist/esm/node/plugin/plugins/suppressRollupWarning.d.ts +3 -0
  455. package/dist/esm/node/plugin/plugins/suppressRollupWarning.js +48 -0
  456. package/dist/esm/node/plugin/shared/addSsrMiddleware.d.ts +4 -0
  457. package/dist/esm/node/plugin/shared/addSsrMiddleware.js +38 -0
  458. package/dist/esm/node/plugin/shared/findPageFiles.d.ts +4 -0
  459. package/dist/esm/node/plugin/shared/findPageFiles.js +18 -0
  460. package/dist/esm/node/plugin/shared/getConfigValueSource.d.ts +7 -0
  461. package/dist/esm/node/plugin/shared/getConfigValueSource.js +22 -0
  462. package/dist/esm/node/plugin/shared/getHttpRequestAsyncStore.d.ts +11 -0
  463. package/dist/esm/node/plugin/shared/getHttpRequestAsyncStore.js +103 -0
  464. package/dist/esm/node/plugin/shared/isAsset.d.ts +2 -0
  465. package/dist/esm/node/plugin/shared/isAsset.js +38 -0
  466. package/dist/esm/node/plugin/shared/isErrorDebug.d.ts +2 -0
  467. package/dist/esm/node/plugin/shared/isErrorDebug.js +5 -0
  468. package/dist/esm/node/plugin/shared/isViteCliCall.d.ts +10 -0
  469. package/dist/esm/node/plugin/shared/isViteCliCall.js +81 -0
  470. package/dist/esm/node/plugin/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errBabelReact.d.ts +16 -0
  471. package/dist/esm/node/plugin/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errBabelReact.js +12 -0
  472. package/dist/esm/node/plugin/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errBabelSolid.d.ts +16 -0
  473. package/dist/esm/node/plugin/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errBabelSolid.js +12 -0
  474. package/dist/esm/node/plugin/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errEsbuild.d.ts +33 -0
  475. package/dist/esm/node/plugin/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errEsbuild.js +35 -0
  476. package/dist/esm/node/plugin/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errMdx.d.ts +47 -0
  477. package/dist/esm/node/plugin/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errMdx.js +23 -0
  478. package/dist/esm/node/plugin/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errPostcss.d.ts +30 -0
  479. package/dist/esm/node/plugin/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errPostcss.js +27 -0
  480. package/dist/esm/node/plugin/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errSwc.d.ts +16 -0
  481. package/dist/esm/node/plugin/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errSwc.js +16 -0
  482. package/dist/esm/node/plugin/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errSwcBig.d.ts +16 -0
  483. package/dist/esm/node/plugin/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errSwcBig.js +16 -0
  484. package/dist/esm/node/plugin/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errVueCss.d.ts +30 -0
  485. package/dist/esm/node/plugin/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errVueCss.js +26 -0
  486. package/dist/esm/node/plugin/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errVueHtml.d.ts +14 -0
  487. package/dist/esm/node/plugin/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errVueHtml.js +10 -0
  488. package/dist/esm/node/plugin/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errVueJavascript.d.ts +16 -0
  489. package/dist/esm/node/plugin/shared/loggerNotProd/errorWithCodeSnippet/fixture-errors/errVueJavascript.js +12 -0
  490. package/dist/esm/node/plugin/shared/loggerNotProd/errorWithCodeSnippet.d.ts +15 -0
  491. package/dist/esm/node/plugin/shared/loggerNotProd/errorWithCodeSnippet.js +163 -0
  492. package/dist/esm/node/plugin/shared/loggerNotProd/log.d.ts +14 -0
  493. package/dist/esm/node/plugin/shared/loggerNotProd/log.js +108 -0
  494. package/dist/esm/node/plugin/shared/loggerNotProd.d.ts +39 -0
  495. package/dist/esm/node/plugin/shared/loggerNotProd.js +218 -0
  496. package/dist/esm/node/plugin/shared/loggerVite/removeSuperfluousViteLog.d.ts +6 -0
  497. package/dist/esm/node/plugin/shared/loggerVite/removeSuperfluousViteLog.js +22 -0
  498. package/dist/esm/node/plugin/shared/loggerVite.d.ts +3 -0
  499. package/dist/esm/node/plugin/shared/loggerVite.js +58 -0
  500. package/dist/esm/node/plugin/shared/parseEsModule.d.ts +11 -0
  501. package/dist/esm/node/plugin/shared/parseEsModule.js +31 -0
  502. package/dist/esm/node/plugin/shared/removeSourceMap.d.ts +7 -0
  503. package/dist/esm/node/plugin/shared/removeSourceMap.js +9 -0
  504. package/dist/esm/node/plugin/shared/rollupIsEsm.d.ts +3 -0
  505. package/dist/esm/node/plugin/shared/rollupIsEsm.js +12 -0
  506. package/dist/esm/node/plugin/utils.d.ts +19 -0
  507. package/dist/esm/node/plugin/utils.js +25 -0
  508. package/dist/esm/node/prerender/index.d.ts +1 -0
  509. package/dist/esm/node/prerender/index.js +1 -0
  510. package/dist/esm/node/prerender/runPrerender.d.ts +53 -0
  511. package/dist/esm/node/prerender/runPrerender.js +678 -0
  512. package/dist/esm/node/prerender/utils.d.ts +13 -0
  513. package/dist/esm/node/prerender/utils.js +15 -0
  514. package/dist/esm/node/runtime/globalContext/loadImportBuild.d.ts +18 -0
  515. package/dist/esm/node/runtime/globalContext/loadImportBuild.js +27 -0
  516. package/dist/esm/node/runtime/globalContext.d.ts +52 -0
  517. package/dist/esm/node/runtime/globalContext.js +157 -0
  518. package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.d.ts +27 -0
  519. package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +155 -0
  520. package/dist/esm/node/runtime/html/injectAssets/getViteDevScripts.d.ts +2 -0
  521. package/dist/esm/node/runtime/html/injectAssets/getViteDevScripts.js +22 -0
  522. package/dist/esm/node/runtime/html/injectAssets/inferHtmlTags.d.ts +7 -0
  523. package/dist/esm/node/runtime/html/injectAssets/inferHtmlTags.js +49 -0
  524. package/dist/esm/node/runtime/html/injectAssets/injectAssets__public.d.ts +2 -0
  525. package/dist/esm/node/runtime/html/injectAssets/injectAssets__public.js +29 -0
  526. package/dist/esm/node/runtime/html/injectAssets/injectHtmlTags.d.ts +10 -0
  527. package/dist/esm/node/runtime/html/injectAssets/injectHtmlTags.js +155 -0
  528. package/dist/esm/node/runtime/html/injectAssets/mergeScriptTags.d.ts +2 -0
  529. package/dist/esm/node/runtime/html/injectAssets/mergeScriptTags.js +68 -0
  530. package/dist/esm/node/runtime/html/injectAssets/sanitizeJson.d.ts +2 -0
  531. package/dist/esm/node/runtime/html/injectAssets/sanitizeJson.js +6 -0
  532. package/dist/esm/node/runtime/html/injectAssets.d.ts +34 -0
  533. package/dist/esm/node/runtime/html/injectAssets.js +73 -0
  534. package/dist/esm/node/runtime/html/renderHtml.d.ts +33 -0
  535. package/dist/esm/node/runtime/html/renderHtml.js +231 -0
  536. package/dist/esm/node/runtime/html/serializePageContextClientSide.d.ts +22 -0
  537. package/dist/esm/node/runtime/html/serializePageContextClientSide.js +111 -0
  538. package/dist/esm/node/runtime/html/stream/react-streaming.d.ts +25 -0
  539. package/dist/esm/node/runtime/html/stream/react-streaming.js +33 -0
  540. package/dist/esm/node/runtime/html/stream.d.ts +84 -0
  541. package/dist/esm/node/runtime/html/stream.js +745 -0
  542. package/dist/esm/node/runtime/index-common.d.ts +10 -0
  543. package/dist/esm/node/runtime/index-common.js +11 -0
  544. package/dist/esm/node/runtime/index-deprecated.d.ts +17 -0
  545. package/dist/esm/node/runtime/index-deprecated.js +40 -0
  546. package/dist/esm/node/runtime/index.d.ts +1 -0
  547. package/dist/esm/node/runtime/index.js +3 -0
  548. package/dist/esm/node/runtime/onLoad.d.ts +2 -0
  549. package/dist/esm/node/runtime/onLoad.js +9 -0
  550. package/dist/esm/node/runtime/page-files/setup.d.ts +1 -0
  551. package/dist/esm/node/runtime/page-files/setup.js +21 -0
  552. package/dist/esm/node/runtime/renderPage/analyzePage.d.ts +5 -0
  553. package/dist/esm/node/runtime/renderPage/analyzePage.js +66 -0
  554. package/dist/esm/node/runtime/renderPage/assertArguments.d.ts +2 -0
  555. package/dist/esm/node/runtime/renderPage/assertArguments.js +37 -0
  556. package/dist/esm/node/runtime/renderPage/createHttpResponseObject/assertNoInfiniteHttpRedirect.d.ts +2 -0
  557. package/dist/esm/node/runtime/renderPage/createHttpResponseObject/assertNoInfiniteHttpRedirect.js +38 -0
  558. package/dist/esm/node/runtime/renderPage/createHttpResponseObject.d.ts +28 -0
  559. package/dist/esm/node/runtime/renderPage/createHttpResponseObject.js +65 -0
  560. package/dist/esm/node/runtime/renderPage/debugPageFiles.d.ts +24 -0
  561. package/dist/esm/node/runtime/renderPage/debugPageFiles.js +47 -0
  562. package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderHook.d.ts +7 -0
  563. package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderHook.js +20 -0
  564. package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.d.ts +25 -0
  565. package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.js +133 -0
  566. package/dist/esm/node/runtime/renderPage/getEarlyHints.d.ts +7 -0
  567. package/dist/esm/node/runtime/renderPage/getEarlyHints.js +43 -0
  568. package/dist/esm/node/runtime/renderPage/getHttpResponseBody.d.ts +31 -0
  569. package/dist/esm/node/runtime/renderPage/getHttpResponseBody.js +125 -0
  570. package/dist/esm/node/runtime/renderPage/getPageAssets/assertClientEntryId.d.ts +2 -0
  571. package/dist/esm/node/runtime/renderPage/getPageAssets/assertClientEntryId.js +22 -0
  572. package/dist/esm/node/runtime/renderPage/getPageAssets/getManifestEntry.d.ts +6 -0
  573. package/dist/esm/node/runtime/renderPage/getPageAssets/getManifestEntry.js +125 -0
  574. package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsDev.d.ts +4 -0
  575. package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsDev.js +72 -0
  576. package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.d.ts +4 -0
  577. package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +58 -0
  578. package/dist/esm/node/runtime/renderPage/getPageAssets/sortPageAssetsForEarlyHintsHeader.d.ts +3 -0
  579. package/dist/esm/node/runtime/renderPage/getPageAssets/sortPageAssetsForEarlyHintsHeader.js +30 -0
  580. package/dist/esm/node/runtime/renderPage/getPageAssets.d.ts +19 -0
  581. package/dist/esm/node/runtime/renderPage/getPageAssets.js +130 -0
  582. package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.d.ts +11 -0
  583. package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.js +37 -0
  584. package/dist/esm/node/runtime/renderPage/handlePageContextRequestUrl.d.ts +5 -0
  585. package/dist/esm/node/runtime/renderPage/handlePageContextRequestUrl.js +30 -0
  586. package/dist/esm/node/runtime/renderPage/inferMediaType.d.ts +7 -0
  587. package/dist/esm/node/runtime/renderPage/inferMediaType.js +38 -0
  588. package/dist/esm/node/runtime/renderPage/isConfigInvalid.d.ts +2 -0
  589. package/dist/esm/node/runtime/renderPage/isConfigInvalid.js +4 -0
  590. package/dist/esm/node/runtime/renderPage/isNewError.d.ts +4 -0
  591. package/dist/esm/node/runtime/renderPage/isNewError.js +20 -0
  592. package/dist/esm/node/runtime/renderPage/loadPageFilesServerSide.d.ts +29 -0
  593. package/dist/esm/node/runtime/renderPage/loadPageFilesServerSide.js +97 -0
  594. package/dist/esm/node/runtime/renderPage/log404/index.d.ts +10 -0
  595. package/dist/esm/node/runtime/renderPage/log404/index.js +138 -0
  596. package/dist/esm/node/runtime/renderPage/loggerProd.d.ts +2 -0
  597. package/dist/esm/node/runtime/renderPage/loggerProd.js +17 -0
  598. package/dist/esm/node/runtime/renderPage/loggerRuntime.d.ts +5 -0
  599. package/dist/esm/node/runtime/renderPage/loggerRuntime.js +15 -0
  600. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +26 -0
  601. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +16 -0
  602. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +265 -0
  603. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +180 -0
  604. package/dist/esm/node/runtime/renderPage.d.ts +17 -0
  605. package/dist/esm/node/runtime/renderPage.js +399 -0
  606. package/dist/esm/node/runtime/utils.d.ts +52 -0
  607. package/dist/esm/node/runtime/utils.js +55 -0
  608. package/dist/esm/node/shared/ViteManifest.d.ts +13 -0
  609. package/dist/esm/node/shared/ViteManifest.js +1 -0
  610. package/dist/esm/node/shared/assertPluginManifest.d.ts +14 -0
  611. package/dist/esm/node/shared/assertPluginManifest.js +21 -0
  612. package/dist/esm/node/shared/assertRuntimeManifest.d.ts +11 -0
  613. package/dist/esm/node/shared/assertRuntimeManifest.js +16 -0
  614. package/dist/esm/node/shared/extractAssetsQuery.d.ts +4 -0
  615. package/dist/esm/node/shared/extractAssetsQuery.js +26 -0
  616. package/dist/esm/node/shared/getClientEntryFilePath.d.ts +3 -0
  617. package/dist/esm/node/shared/getClientEntryFilePath.js +15 -0
  618. package/dist/esm/node/shared/getConfigVike.d.ts +3 -0
  619. package/dist/esm/node/shared/getConfigVike.js +5 -0
  620. package/dist/esm/node/shared/utils.d.ts +15 -0
  621. package/dist/esm/node/shared/utils.js +17 -0
  622. package/dist/esm/node/shared/virtual-files/virtualFileImportUserCode.d.ts +11 -0
  623. package/dist/esm/node/shared/virtual-files/virtualFileImportUserCode.js +24 -0
  624. package/dist/esm/node/shared/virtual-files/virtualFilePageConfigValuesAll.d.ts +9 -0
  625. package/dist/esm/node/shared/virtual-files/virtualFilePageConfigValuesAll.js +36 -0
  626. package/dist/esm/shared/ConfigVike.d.ts +128 -0
  627. package/dist/esm/shared/ConfigVike.js +1 -0
  628. package/dist/esm/shared/RenderErrorPage.d.ts +1 -0
  629. package/dist/esm/shared/RenderErrorPage.js +2 -0
  630. package/dist/esm/shared/VikeNamespace.d.ts +43 -0
  631. package/dist/esm/shared/VikeNamespace.js +1 -0
  632. package/dist/esm/shared/abort.d.ts +1 -0
  633. package/dist/esm/shared/abort.js +11 -0
  634. package/dist/esm/shared/addIs404ToPageProps.d.ts +7 -0
  635. package/dist/esm/shared/addIs404ToPageProps.js +23 -0
  636. package/dist/esm/shared/addUrlComputedProps.d.ts +62 -0
  637. package/dist/esm/shared/addUrlComputedProps.js +108 -0
  638. package/dist/esm/shared/assertHookReturnedObject.d.ts +4 -0
  639. package/dist/esm/shared/assertHookReturnedObject.js +19 -0
  640. package/dist/esm/shared/assertOnBeforeRenderHookReturn.d.ts +4 -0
  641. package/dist/esm/shared/assertOnBeforeRenderHookReturn.js +16 -0
  642. package/dist/esm/shared/assertPageContextProvidedByUser.d.ts +5 -0
  643. package/dist/esm/shared/assertPageContextProvidedByUser.js +15 -0
  644. package/dist/esm/shared/assertPageFilePath.d.ts +2 -0
  645. package/dist/esm/shared/assertPageFilePath.js +9 -0
  646. package/dist/esm/shared/determinePageIdOld.d.ts +2 -0
  647. package/dist/esm/shared/determinePageIdOld.js +9 -0
  648. package/dist/esm/shared/error-page.d.ts +8 -0
  649. package/dist/esm/shared/error-page.js +38 -0
  650. package/dist/esm/shared/getPageContextRequestUrl.d.ts +6 -0
  651. package/dist/esm/shared/getPageContextRequestUrl.js +13 -0
  652. package/dist/esm/shared/getPageFiles/analyzeClientSide.d.ts +7 -0
  653. package/dist/esm/shared/getPageFiles/analyzeClientSide.js +19 -0
  654. package/dist/esm/shared/getPageFiles/analyzePageClientSide/ClientDependency.d.ts +6 -0
  655. package/dist/esm/shared/getPageFiles/analyzePageClientSide/ClientDependency.js +1 -0
  656. package/dist/esm/shared/getPageFiles/analyzePageClientSide/analyzeExports.d.ts +10 -0
  657. package/dist/esm/shared/getPageFiles/analyzePageClientSide/analyzeExports.js +48 -0
  658. package/dist/esm/shared/getPageFiles/analyzePageClientSide/determineClientEntry.d.ts +14 -0
  659. package/dist/esm/shared/getPageFiles/analyzePageClientSide/determineClientEntry.js +27 -0
  660. package/dist/esm/shared/getPageFiles/analyzePageClientSide/getExportNames.d.ts +3 -0
  661. package/dist/esm/shared/getPageFiles/analyzePageClientSide/getExportNames.js +13 -0
  662. package/dist/esm/shared/getPageFiles/analyzePageClientSide.d.ts +17 -0
  663. package/dist/esm/shared/getPageFiles/analyzePageClientSide.js +58 -0
  664. package/dist/esm/shared/getPageFiles/analyzePageServerSide.d.ts +5 -0
  665. package/dist/esm/shared/getPageFiles/analyzePageServerSide.js +20 -0
  666. package/dist/esm/shared/getPageFiles/assertExports.d.ts +7 -0
  667. package/dist/esm/shared/getPageFiles/assertExports.js +21 -0
  668. package/dist/esm/shared/getPageFiles/assertPageConfigs.d.ts +5 -0
  669. package/dist/esm/shared/getPageFiles/assertPageConfigs.js +16 -0
  670. package/dist/esm/shared/getPageFiles/fileTypes.d.ts +8 -0
  671. package/dist/esm/shared/getPageFiles/fileTypes.js +50 -0
  672. package/dist/esm/shared/getPageFiles/getAllPageIdFiles.d.ts +5 -0
  673. package/dist/esm/shared/getPageFiles/getAllPageIdFiles.js +103 -0
  674. package/dist/esm/shared/getPageFiles/getExports.d.ts +39 -0
  675. package/dist/esm/shared/getPageFiles/getExports.js +140 -0
  676. package/dist/esm/shared/getPageFiles/getPageFileObject.d.ts +18 -0
  677. package/dist/esm/shared/getPageFiles/getPageFileObject.js +59 -0
  678. package/dist/esm/shared/getPageFiles/parseGlobResults.d.ts +8 -0
  679. package/dist/esm/shared/getPageFiles/parseGlobResults.js +124 -0
  680. package/dist/esm/shared/getPageFiles/setPageFiles.d.ts +13 -0
  681. package/dist/esm/shared/getPageFiles/setPageFiles.js +44 -0
  682. package/dist/esm/shared/getPageFiles.d.ts +9 -0
  683. package/dist/esm/shared/getPageFiles.js +8 -0
  684. package/dist/esm/shared/hooks/executeHook.d.ts +5 -0
  685. package/dist/esm/shared/hooks/executeHook.js +71 -0
  686. package/dist/esm/shared/hooks/getHook.d.ts +24 -0
  687. package/dist/esm/shared/hooks/getHook.js +26 -0
  688. package/dist/esm/shared/notSerializable.d.ts +1 -0
  689. package/dist/esm/shared/notSerializable.js +2 -0
  690. package/dist/esm/shared/page-configs/Config/PageContextConfig.d.ts +8 -0
  691. package/dist/esm/shared/page-configs/Config/PageContextConfig.js +1 -0
  692. package/dist/esm/shared/page-configs/Config/helpers.d.ts +10 -0
  693. package/dist/esm/shared/page-configs/Config/helpers.js +1 -0
  694. package/dist/esm/shared/page-configs/Config.d.ts +131 -0
  695. package/dist/esm/shared/page-configs/Config.js +1 -0
  696. package/dist/esm/shared/page-configs/PageConfig.d.ts +97 -0
  697. package/dist/esm/shared/page-configs/PageConfig.js +1 -0
  698. package/dist/esm/shared/page-configs/findPageConfig.d.ts +3 -0
  699. package/dist/esm/shared/page-configs/findPageConfig.js +8 -0
  700. package/dist/esm/shared/page-configs/getExportPath.d.ts +2 -0
  701. package/dist/esm/shared/page-configs/getExportPath.js +28 -0
  702. package/dist/esm/shared/page-configs/loadPageCode.d.ts +3 -0
  703. package/dist/esm/shared/page-configs/loadPageCode.js +57 -0
  704. package/dist/esm/shared/page-configs/utils.d.ts +28 -0
  705. package/dist/esm/shared/page-configs/utils.js +74 -0
  706. package/dist/esm/shared/route/abort.d.ts +103 -0
  707. package/dist/esm/shared/route/abort.js +155 -0
  708. package/dist/esm/shared/route/debug.d.ts +3 -0
  709. package/dist/esm/shared/route/debug.js +11 -0
  710. package/dist/esm/shared/route/deduceRouteStringFromFilesystemPath.d.ts +7 -0
  711. package/dist/esm/shared/route/deduceRouteStringFromFilesystemPath.js +50 -0
  712. package/dist/esm/shared/route/executeGuardHook.d.ts +8 -0
  713. package/dist/esm/shared/route/executeGuardHook.js +37 -0
  714. package/dist/esm/shared/route/executeOnBeforeRouteHook.d.ts +17 -0
  715. package/dist/esm/shared/route/executeOnBeforeRouteHook.js +50 -0
  716. package/dist/esm/shared/route/index.d.ts +31 -0
  717. package/dist/esm/shared/route/index.js +113 -0
  718. package/dist/esm/shared/route/loadPageRoutes.d.ts +29 -0
  719. package/dist/esm/shared/route/loadPageRoutes.js +194 -0
  720. package/dist/esm/shared/route/resolvePrecedence.d.ts +8 -0
  721. package/dist/esm/shared/route/resolvePrecedence.js +69 -0
  722. package/dist/esm/shared/route/resolveRedirects.d.ts +4 -0
  723. package/dist/esm/shared/route/resolveRedirects.js +50 -0
  724. package/dist/esm/shared/route/resolveRoute.d.ts +5 -0
  725. package/dist/esm/shared/route/resolveRoute.js +15 -0
  726. package/dist/esm/shared/route/resolveRouteFunction.d.ts +14 -0
  727. package/dist/esm/shared/route/resolveRouteFunction.js +64 -0
  728. package/dist/esm/shared/route/resolveRouteString.d.ts +17 -0
  729. package/dist/esm/shared/route/resolveRouteString.js +95 -0
  730. package/dist/esm/shared/route/routing.d.ts +1 -0
  731. package/dist/esm/shared/route/routing.js +5 -0
  732. package/dist/esm/shared/route/utils.d.ts +18 -0
  733. package/dist/esm/shared/route/utils.js +27 -0
  734. package/dist/esm/shared/sortPageContext.d.ts +2 -0
  735. package/dist/esm/shared/sortPageContext.js +14 -0
  736. package/dist/esm/shared/types.d.ts +127 -0
  737. package/dist/esm/shared/types.js +1 -0
  738. package/dist/esm/shared/utils.d.ts +23 -0
  739. package/dist/esm/shared/utils.js +27 -0
  740. package/dist/esm/types/index-dreprecated.d.ts +51 -0
  741. package/dist/esm/types/index-dreprecated.js +2 -0
  742. package/dist/esm/types/index.d.ts +47 -0
  743. package/dist/esm/types/index.js +1 -0
  744. package/dist/esm/utils/PromiseType.d.ts +1 -0
  745. package/dist/esm/utils/PromiseType.js +1 -0
  746. package/dist/esm/utils/arrayIncludes.d.ts +1 -0
  747. package/dist/esm/utils/arrayIncludes.js +3 -0
  748. package/dist/esm/utils/assert.d.ts +29 -0
  749. package/dist/esm/utils/assert.js +188 -0
  750. package/dist/esm/utils/assertDefaultExport.d.ts +8 -0
  751. package/dist/esm/utils/assertDefaultExport.js +47 -0
  752. package/dist/esm/utils/assertIsBrowser.d.ts +2 -0
  753. package/dist/esm/utils/assertIsBrowser.js +6 -0
  754. package/dist/esm/utils/assertIsNotBrowser.d.ts +3 -0
  755. package/dist/esm/utils/assertIsNotBrowser.js +7 -0
  756. package/dist/esm/utils/assertIsNotProductionRuntime.d.ts +10 -0
  757. package/dist/esm/utils/assertIsNotProductionRuntime.js +41 -0
  758. package/dist/esm/utils/assertNodeVersion.d.ts +2 -0
  759. package/dist/esm/utils/assertNodeVersion.js +11 -0
  760. package/dist/esm/utils/assertPathIsFilesystemAbsolute.d.ts +3 -0
  761. package/dist/esm/utils/assertPathIsFilesystemAbsolute.js +14 -0
  762. package/dist/esm/utils/assertRoutingType.d.ts +6 -0
  763. package/dist/esm/utils/assertRoutingType.js +24 -0
  764. package/dist/esm/utils/assertSingleInstance.d.ts +6 -0
  765. package/dist/esm/utils/assertSingleInstance.js +94 -0
  766. package/dist/esm/utils/autoRetry.d.ts +2 -0
  767. package/dist/esm/utils/autoRetry.js +20 -0
  768. package/dist/esm/utils/capitalizeFirstLetter.d.ts +2 -0
  769. package/dist/esm/utils/capitalizeFirstLetter.js +7 -0
  770. package/dist/esm/utils/cast.d.ts +4 -0
  771. package/dist/esm/utils/cast.js +4 -0
  772. package/dist/esm/utils/checkType.d.ts +2 -0
  773. package/dist/esm/utils/checkType.js +2 -0
  774. package/dist/esm/utils/compareString.d.ts +2 -0
  775. package/dist/esm/utils/compareString.js +8 -0
  776. package/dist/esm/utils/createErrorWithCleanStackTrace.d.ts +2 -0
  777. package/dist/esm/utils/createErrorWithCleanStackTrace.js +43 -0
  778. package/dist/esm/utils/debug.d.ts +15 -0
  779. package/dist/esm/utils/debug.js +106 -0
  780. package/dist/esm/utils/debugGlob.d.ts +8 -0
  781. package/dist/esm/utils/debugGlob.js +3 -0
  782. package/dist/esm/utils/deepEqual.d.ts +1 -0
  783. package/dist/esm/utils/deepEqual.js +7 -0
  784. package/dist/esm/utils/dynamicImport.d.ts +2 -0
  785. package/dist/esm/utils/dynamicImport.js +4 -0
  786. package/dist/esm/utils/escapeRegex.d.ts +1 -0
  787. package/dist/esm/utils/escapeRegex.js +4 -0
  788. package/dist/esm/utils/filesystemPathHandling.d.ts +4 -0
  789. package/dist/esm/utils/filesystemPathHandling.js +16 -0
  790. package/dist/esm/utils/findUserPackageJsonPath.d.ts +2 -0
  791. package/dist/esm/utils/findUserPackageJsonPath.js +18 -0
  792. package/dist/esm/utils/freezePartial.d.ts +2 -0
  793. package/dist/esm/utils/freezePartial.js +30 -0
  794. package/dist/esm/utils/getCurrentUrl.d.ts +4 -0
  795. package/dist/esm/utils/getCurrentUrl.js +16 -0
  796. package/dist/esm/utils/getDependencyPackageJson.d.ts +6 -0
  797. package/dist/esm/utils/getDependencyPackageJson.js +85 -0
  798. package/dist/esm/utils/getFileExtension.d.ts +2 -0
  799. package/dist/esm/utils/getFileExtension.js +14 -0
  800. package/dist/esm/utils/getFilePathAbsolute.d.ts +5 -0
  801. package/dist/esm/utils/getFilePathAbsolute.js +64 -0
  802. package/dist/esm/utils/getGlobalObject.d.ts +4 -0
  803. package/dist/esm/utils/getGlobalObject.js +7 -0
  804. package/dist/esm/utils/getMostSimilar.d.ts +2 -0
  805. package/dist/esm/utils/getMostSimilar.js +66 -0
  806. package/dist/esm/utils/getOutDirs.d.ts +16 -0
  807. package/dist/esm/utils/getOutDirs.js +115 -0
  808. package/dist/esm/utils/getPropAccessNotation.d.ts +2 -0
  809. package/dist/esm/utils/getPropAccessNotation.js +7 -0
  810. package/dist/esm/utils/getRandomId.d.ts +2 -0
  811. package/dist/esm/utils/getRandomId.js +12 -0
  812. package/dist/esm/utils/getTerminWidth.d.ts +1 -0
  813. package/dist/esm/utils/getTerminWidth.js +4 -0
  814. package/dist/esm/utils/getValuePrintable.d.ts +1 -0
  815. package/dist/esm/utils/getValuePrintable.js +7 -0
  816. package/dist/esm/utils/hasProp.d.ts +14 -0
  817. package/dist/esm/utils/hasProp.js +45 -0
  818. package/dist/esm/utils/hasPropertyGetter.d.ts +1 -0
  819. package/dist/esm/utils/hasPropertyGetter.js +4 -0
  820. package/dist/esm/utils/humanizeTime.d.ts +2 -0
  821. package/dist/esm/utils/humanizeTime.js +22 -0
  822. package/dist/esm/utils/isBrowser.d.ts +1 -0
  823. package/dist/esm/utils/isBrowser.js +5 -0
  824. package/dist/esm/utils/isCallable.d.ts +1 -0
  825. package/dist/esm/utils/isCallable.js +3 -0
  826. package/dist/esm/utils/isDev.d.ts +7 -0
  827. package/dist/esm/utils/isDev.js +29 -0
  828. package/dist/esm/utils/isEquivalentError.d.ts +2 -0
  829. package/dist/esm/utils/isEquivalentError.js +15 -0
  830. package/dist/esm/utils/isHtml.d.ts +2 -0
  831. package/dist/esm/utils/isHtml.js +7 -0
  832. package/dist/esm/utils/isNodeJS.d.ts +1 -0
  833. package/dist/esm/utils/isNodeJS.js +13 -0
  834. package/dist/esm/utils/isNotNullish.d.ts +1 -0
  835. package/dist/esm/utils/isNotNullish.js +1 -0
  836. package/dist/esm/utils/isNpmPackage.d.ts +17 -0
  837. package/dist/esm/utils/isNpmPackage.js +94 -0
  838. package/dist/esm/utils/isObject.d.ts +1 -0
  839. package/dist/esm/utils/isObject.js +3 -0
  840. package/dist/esm/utils/isObjectWithKeys.d.ts +4 -0
  841. package/dist/esm/utils/isObjectWithKeys.js +13 -0
  842. package/dist/esm/utils/isPlainObject.d.ts +3 -0
  843. package/dist/esm/utils/isPlainObject.js +15 -0
  844. package/dist/esm/utils/isPromise.d.ts +1 -0
  845. package/dist/esm/utils/isPromise.js +4 -0
  846. package/dist/esm/utils/isReact.d.ts +1 -0
  847. package/dist/esm/utils/isReact.js +20 -0
  848. package/dist/esm/utils/isScriptFile.d.ts +8 -0
  849. package/dist/esm/utils/isScriptFile.js +50 -0
  850. package/dist/esm/utils/isStemPackageName.d.ts +1 -0
  851. package/dist/esm/utils/isStemPackageName.js +10 -0
  852. package/dist/esm/utils/isStringRecord.d.ts +1 -0
  853. package/dist/esm/utils/isStringRecord.js +3 -0
  854. package/dist/esm/utils/isVitest.d.ts +1 -0
  855. package/dist/esm/utils/isVitest.js +3 -0
  856. package/dist/esm/utils/joinEnglish.d.ts +2 -0
  857. package/dist/esm/utils/joinEnglish.js +11 -0
  858. package/dist/esm/utils/mergeCumulativeValues.d.ts +2 -0
  859. package/dist/esm/utils/mergeCumulativeValues.js +18 -0
  860. package/dist/esm/utils/nodeEnv.d.ts +4 -0
  861. package/dist/esm/utils/nodeEnv.js +13 -0
  862. package/dist/esm/utils/objectAssign.d.ts +2 -0
  863. package/dist/esm/utils/objectAssign.js +7 -0
  864. package/dist/esm/utils/objectEntries.d.ts +4 -0
  865. package/dist/esm/utils/objectEntries.js +5 -0
  866. package/dist/esm/utils/objectKeys.d.ts +2 -0
  867. package/dist/esm/utils/objectKeys.js +6 -0
  868. package/dist/esm/utils/pLimit.d.ts +14 -0
  869. package/dist/esm/utils/pLimit.js +131 -0
  870. package/dist/esm/utils/parseUrl-extras.d.ts +17 -0
  871. package/dist/esm/utils/parseUrl-extras.js +93 -0
  872. package/dist/esm/utils/parseUrl.d.ts +22 -0
  873. package/dist/esm/utils/parseUrl.js +216 -0
  874. package/dist/esm/utils/path-shim.d.ts +2 -0
  875. package/dist/esm/utils/path-shim.js +12 -0
  876. package/dist/esm/utils/projectInfo.d.ts +11 -0
  877. package/dist/esm/utils/projectInfo.js +11 -0
  878. package/dist/esm/utils/removeEmptyLines.d.ts +1 -0
  879. package/dist/esm/utils/removeEmptyLines.js +6 -0
  880. package/dist/esm/utils/removeFileExtention.d.ts +1 -0
  881. package/dist/esm/utils/removeFileExtention.js +3 -0
  882. package/dist/esm/utils/resolve.d.ts +2 -0
  883. package/dist/esm/utils/resolve.js +57 -0
  884. package/dist/esm/utils/serverSideRouteTo.d.ts +2 -0
  885. package/dist/esm/utils/serverSideRouteTo.js +4 -0
  886. package/dist/esm/utils/sleep.d.ts +1 -0
  887. package/dist/esm/utils/sleep.js +3 -0
  888. package/dist/esm/utils/slice.d.ts +3 -0
  889. package/dist/esm/utils/slice.js +33 -0
  890. package/dist/esm/utils/sorter.d.ts +8 -0
  891. package/dist/esm/utils/sorter.js +57 -0
  892. package/dist/esm/utils/stringifyStringArray.d.ts +2 -0
  893. package/dist/esm/utils/stringifyStringArray.js +4 -0
  894. package/dist/esm/utils/stripAnsi.d.ts +2 -0
  895. package/dist/esm/utils/stripAnsi.js +19 -0
  896. package/dist/esm/utils/styleFileRE.d.ts +1 -0
  897. package/dist/esm/utils/styleFileRE.js +2 -0
  898. package/dist/esm/utils/throttle.d.ts +2 -0
  899. package/dist/esm/utils/throttle.js +13 -0
  900. package/dist/esm/utils/trackLogs.d.ts +1 -0
  901. package/dist/esm/utils/trackLogs.js +26 -0
  902. package/dist/esm/utils/trimWithAnsi.d.ts +4 -0
  903. package/dist/esm/utils/trimWithAnsi.js +38 -0
  904. package/dist/esm/utils/truncateString.d.ts +1 -0
  905. package/dist/esm/utils/truncateString.js +15 -0
  906. package/dist/esm/utils/unique.d.ts +2 -0
  907. package/dist/esm/utils/unique.js +4 -0
  908. package/dist/esm/utils/urlToFile.d.ts +4 -0
  909. package/dist/esm/utils/urlToFile.js +33 -0
  910. package/dist/esm/utils/virtual-files.d.ts +6 -0
  911. package/dist/esm/utils/virtual-files.js +30 -0
  912. package/dist/esm/utils/viteIsSSR.d.ts +11 -0
  913. package/dist/esm/utils/viteIsSSR.js +20 -0
  914. package/dist/esm/utils/warnIfErrorIsNotObject.d.ts +2 -0
  915. package/dist/esm/utils/warnIfErrorIsNotObject.js +18 -0
  916. package/node/cli/bin-entry.js +3 -0
  917. package/package.json +198 -1
  918. package/plugin.js +2 -0
  919. package/prerender.js +2 -0
  920. package/readme.md +3 -1
  921. package/routing.js +2 -0
  922. package/server.js +2 -0
@@ -0,0 +1,1114 @@
1
+ export { getVikeConfig };
2
+ export { reloadVikeConfig };
3
+ export { vikeConfigDependencies };
4
+ export { isVikeConfigFile };
5
+ import { assertPosixPath, assert, isObject, assertUsage, toPosixPath, assertWarning, assertDefaultExportUnknown, assertDefaultExportObject, objectEntries, hasProp, arrayIncludes, objectKeys, assertIsNotProductionRuntime, getMostSimilar, isNpmPackageImport, joinEnglish, lowerFirst, scriptFileExtensions, mergeCumulativeValues, resolve } from '../../../utils.js';
6
+ import path from 'path';
7
+ import { configDefinitionsBuiltIn, configDefinitionsBuiltInGlobal } from './getVikeConfig/configDefinitionsBuiltIn.js';
8
+ import glob from 'fast-glob';
9
+ import { getLocationId, getFilesystemRouteString, getFilesystemRouteDefinedBy, isInherited, sortAfterInheritanceOrder, isGlobalLocation, applyFilesystemRoutingRootEffect } from './getVikeConfig/filesystemRouting.js';
10
+ import { isTmpFile, transpileAndExecuteFile } from './transpileAndExecuteFile.js';
11
+ import { parseImportData } from './replaceImportStatements.js';
12
+ import { isConfigInvalid, isConfigInvalid_set } from '../../../../runtime/renderPage/isConfigInvalid.js';
13
+ import { getViteDevServer } from '../../../../runtime/globalContext.js';
14
+ import { logConfigError, logConfigErrorRecover } from '../../../shared/loggerNotProd.js';
15
+ import { removeSuperfluousViteLog_enable, removeSuperfluousViteLog_disable } from '../../../shared/loggerVite/removeSuperfluousViteLog.js';
16
+ import { getFilePathToShowToUser } from './getFilePathToShowToUser.js';
17
+ import pc from '@brillout/picocolors';
18
+ import { getConfigDefinedAtString } from '../../../../../shared/page-configs/utils.js';
19
+ assertIsNotProductionRuntime();
20
+ let devServerIsCorrupt = false;
21
+ let wasConfigInvalid = null;
22
+ let vikeConfigPromise = null;
23
+ const vikeConfigDependencies = new Set();
24
+ const codeFilesEnv = new Map();
25
+ function reloadVikeConfig(userRootDir, extensions) {
26
+ vikeConfigDependencies.clear();
27
+ codeFilesEnv.clear();
28
+ vikeConfigPromise = loadVikeConfig_withErrorHandling(userRootDir, true, extensions, true);
29
+ handleReloadSideEffects();
30
+ }
31
+ async function handleReloadSideEffects() {
32
+ wasConfigInvalid = isConfigInvalid;
33
+ const vikeConfigPromisePrevious = vikeConfigPromise;
34
+ try {
35
+ await vikeConfigPromise;
36
+ }
37
+ catch (err) {
38
+ // handleReloadSideEffects() is only called in dev.
39
+ // In dev, if loadVikeConfig_withErrorHandling() throws an error, then it's a vike bug.
40
+ console.error(err);
41
+ assert(false);
42
+ }
43
+ if (vikeConfigPromise !== vikeConfigPromisePrevious) {
44
+ // Let the next handleReloadSideEffects() call handle side effects
45
+ return;
46
+ }
47
+ if (!isConfigInvalid) {
48
+ if (wasConfigInvalid) {
49
+ wasConfigInvalid = false;
50
+ logConfigErrorRecover();
51
+ }
52
+ if (devServerIsCorrupt) {
53
+ devServerIsCorrupt = false;
54
+ const viteDevServer = getViteDevServer();
55
+ assert(viteDevServer);
56
+ removeSuperfluousViteLog_enable();
57
+ await viteDevServer.restart(true);
58
+ removeSuperfluousViteLog_disable();
59
+ }
60
+ }
61
+ }
62
+ async function getVikeConfig(userRootDir, isDev, extensions, tolerateInvalidConfig = false) {
63
+ if (!vikeConfigPromise) {
64
+ vikeConfigPromise = loadVikeConfig_withErrorHandling(userRootDir, isDev, extensions, tolerateInvalidConfig);
65
+ }
66
+ return await vikeConfigPromise;
67
+ }
68
+ async function loadInterfaceFiles(userRootDir, isDev, extensions) {
69
+ const plusFiles = await findPlusFiles(userRootDir, isDev, extensions);
70
+ const configFiles = [];
71
+ const valueFiles = [];
72
+ plusFiles.forEach((f) => {
73
+ if (getConfigName(f.filePathRelativeToUserRootDir) === 'config') {
74
+ configFiles.push(f);
75
+ }
76
+ else {
77
+ valueFiles.push(f);
78
+ }
79
+ });
80
+ let interfaceFilesByLocationId = {};
81
+ // Config files
82
+ await Promise.all(configFiles.map(async ({ filePathAbsolute, filePathRelativeToUserRootDir }) => {
83
+ const configFilePath = {
84
+ filePathAbsolute: filePathAbsolute,
85
+ filePathRelativeToUserRootDir: filePathRelativeToUserRootDir
86
+ };
87
+ const { configFile, extendsConfigs } = await loadConfigFile(configFilePath, userRootDir, []);
88
+ const interfaceFile = getInterfaceFileFromConfigFile(configFile, false);
89
+ const locationId = getLocationId(filePathRelativeToUserRootDir);
90
+ interfaceFilesByLocationId[locationId] = interfaceFilesByLocationId[locationId] ?? [];
91
+ interfaceFilesByLocationId[locationId].push(interfaceFile);
92
+ extendsConfigs.forEach((extendsConfig) => {
93
+ const interfaceFile = getInterfaceFileFromConfigFile(extendsConfig, true);
94
+ interfaceFilesByLocationId[locationId].push(interfaceFile);
95
+ });
96
+ }));
97
+ // Value files
98
+ await Promise.all(valueFiles.map(async ({ filePathAbsolute, filePathRelativeToUserRootDir }) => {
99
+ const configNameDefault = getConfigName(filePathRelativeToUserRootDir);
100
+ assert(configNameDefault);
101
+ const interfaceFile = {
102
+ filePath: {
103
+ filePathRelativeToUserRootDir,
104
+ filePathAbsolute
105
+ },
106
+ configMap: {
107
+ [configNameDefault]: {}
108
+ },
109
+ isConfigFile: false,
110
+ isValueFile: true,
111
+ configNameDefault
112
+ };
113
+ {
114
+ // We don't have access to custom config definitions yet
115
+ // - We load +someCustomConifg.js later
116
+ // - But we do need to eagerly load +meta.js (to get all the custom config definitions)
117
+ const configDef = getConfigDefinitionOptional(configDefinitionsBuiltIn, configNameDefault);
118
+ if (configDef?.env === 'config-only') {
119
+ await loadValueFile(interfaceFile, configNameDefault, userRootDir);
120
+ }
121
+ }
122
+ {
123
+ const locationId = getLocationId(filePathRelativeToUserRootDir);
124
+ interfaceFilesByLocationId[locationId] = interfaceFilesByLocationId[locationId] ?? [];
125
+ interfaceFilesByLocationId[locationId].push(interfaceFile);
126
+ }
127
+ }));
128
+ return interfaceFilesByLocationId;
129
+ }
130
+ function getConfigDefinition(configDefinitionsRelevant, configName, definedByFile) {
131
+ const configDef = configDefinitionsRelevant[configName];
132
+ assertConfigExists(configName, Object.keys(configDefinitionsRelevant), definedByFile);
133
+ assert(configDef);
134
+ return configDef;
135
+ }
136
+ function getConfigDefinitionOptional(configDefinitions, configName) {
137
+ return configDefinitions[configName] ?? null;
138
+ }
139
+ async function loadValueFile(interfaceValueFile, configNameDefault, userRootDir) {
140
+ const { fileExports } = await transpileAndExecuteFile(interfaceValueFile.filePath, true, userRootDir);
141
+ assertDefaultExportUnknown(fileExports, getFilePathToShowToUser(interfaceValueFile.filePath));
142
+ Object.entries(fileExports).forEach(([configName, configValue]) => {
143
+ if (configName === 'default') {
144
+ configName = configNameDefault;
145
+ }
146
+ interfaceValueFile.configMap[configName] = { configValue };
147
+ });
148
+ }
149
+ function getInterfaceFileFromConfigFile(configFile, isConfigExtend) {
150
+ const { fileExports, filePath, extendsFilePaths } = configFile;
151
+ const interfaceFile = {
152
+ filePath,
153
+ configMap: {},
154
+ isConfigFile: true,
155
+ isValueFile: false,
156
+ isConfigExtend,
157
+ extendsFilePaths
158
+ };
159
+ const interfaceFilePathToShowToUser = getFilePathToShowToUser(filePath);
160
+ assertDefaultExportObject(fileExports, interfaceFilePathToShowToUser);
161
+ Object.entries(fileExports.default).forEach(([configName, configValue]) => {
162
+ interfaceFile.configMap[configName] = { configValue };
163
+ });
164
+ return interfaceFile;
165
+ }
166
+ async function loadVikeConfig_withErrorHandling(userRootDir, isDev, extensions, tolerateInvalidConfig) {
167
+ let hasError = false;
168
+ let ret;
169
+ let err;
170
+ try {
171
+ ret = await loadVikeConfig(userRootDir, isDev, extensions);
172
+ }
173
+ catch (err_) {
174
+ hasError = true;
175
+ err = err_;
176
+ }
177
+ if (!hasError) {
178
+ assert(ret);
179
+ assert(err === undefined);
180
+ isConfigInvalid_set(false);
181
+ return ret;
182
+ }
183
+ else {
184
+ assert(ret === undefined);
185
+ assert(err);
186
+ isConfigInvalid_set(true);
187
+ if (!isDev) {
188
+ assert(getViteDevServer() === null);
189
+ throw err;
190
+ }
191
+ else {
192
+ logConfigError(err);
193
+ if (!tolerateInvalidConfig) {
194
+ devServerIsCorrupt = true;
195
+ }
196
+ const dummyData = {
197
+ pageConfigs: [],
198
+ pageConfigGlobal: {
199
+ onPrerenderStart: null,
200
+ onBeforeRoute: null
201
+ },
202
+ globalVikeConfig: {}
203
+ };
204
+ return dummyData;
205
+ }
206
+ }
207
+ }
208
+ async function loadVikeConfig(userRootDir, isDev, extensions) {
209
+ const interfaceFilesByLocationId = await loadInterfaceFiles(userRootDir, isDev, extensions);
210
+ const { globalVikeConfig, pageConfigGlobal } = getGlobalConfigs(interfaceFilesByLocationId, userRootDir);
211
+ const pageConfigs = await Promise.all(Object.entries(interfaceFilesByLocationId)
212
+ .filter(([_pageId, interfaceFiles]) => isDefiningPage(interfaceFiles))
213
+ .map(async ([locationId]) => {
214
+ const interfaceFilesRelevant = getInterfaceFilesRelevant(interfaceFilesByLocationId, locationId);
215
+ const configDefinitionsRelevant = getConfigDefinitions(interfaceFilesRelevant);
216
+ // Load value files of custom config-only configs
217
+ await Promise.all(getInterfaceFileList(interfaceFilesRelevant).map(async (interfaceFile) => {
218
+ if (!interfaceFile.isValueFile)
219
+ return;
220
+ const { configNameDefault } = interfaceFile;
221
+ if (isGlobalConfig(configNameDefault))
222
+ return;
223
+ const configDef = getConfigDefinition(configDefinitionsRelevant, configNameDefault, getFilePathToShowToUser(interfaceFile.filePath));
224
+ if (configDef.env !== 'config-only')
225
+ return;
226
+ const isAlreadyLoaded = interfacefileIsAlreaydLoaded(interfaceFile);
227
+ if (isAlreadyLoaded)
228
+ return;
229
+ // Value files for built-in confg-only configs should have already been loaded at loadInterfaceFiles()
230
+ assert(!(configNameDefault in configDefinitionsBuiltIn));
231
+ await loadValueFile(interfaceFile, configNameDefault, userRootDir);
232
+ }));
233
+ const configValueSources = {};
234
+ objectEntries(configDefinitionsRelevant)
235
+ .filter(([configName]) => !isGlobalConfig(configName))
236
+ .forEach(([configName, configDef]) => {
237
+ const sources = resolveConfigValueSources(configName, configDef, interfaceFilesRelevant, userRootDir);
238
+ if (!sources)
239
+ return;
240
+ configValueSources[configName] = sources;
241
+ });
242
+ const { routeFilesystem, isErrorPage } = determineRouteFilesystem(locationId, configValueSources);
243
+ const pageConfig = {
244
+ pageId: locationId,
245
+ isErrorPage,
246
+ routeFilesystem,
247
+ configValueSources,
248
+ configValues: getConfigValues(configValueSources, configDefinitionsRelevant)
249
+ };
250
+ applyEffects(pageConfig, configDefinitionsRelevant);
251
+ pageConfig.configValues = getConfigValues(configValueSources, configDefinitionsRelevant);
252
+ applyComputed(pageConfig, configDefinitionsRelevant);
253
+ pageConfig.configValues = getConfigValues(configValueSources, configDefinitionsRelevant);
254
+ return pageConfig;
255
+ }));
256
+ // Show error message upon unknown config
257
+ Object.entries(interfaceFilesByLocationId).forEach(([locationId, interfaceFiles]) => {
258
+ const interfaceFilesRelevant = getInterfaceFilesRelevant(interfaceFilesByLocationId, locationId);
259
+ const configDefinitionsRelevant = getConfigDefinitions(interfaceFilesRelevant);
260
+ interfaceFiles.forEach((interfaceFile) => {
261
+ Object.keys(interfaceFile.configMap).forEach((configName) => {
262
+ assertConfigExists(configName, Object.keys(configDefinitionsRelevant), getFilePathToShowToUser(interfaceFile.filePath));
263
+ });
264
+ });
265
+ });
266
+ return { pageConfigs, pageConfigGlobal, globalVikeConfig };
267
+ }
268
+ function interfacefileIsAlreaydLoaded(interfaceFile) {
269
+ const configMapValues = Object.values(interfaceFile.configMap);
270
+ const isAlreadyLoaded = configMapValues.some((conf) => 'configValue' in conf);
271
+ if (isAlreadyLoaded) {
272
+ assert(configMapValues.every((conf) => 'configValue' in conf));
273
+ }
274
+ return isAlreadyLoaded;
275
+ }
276
+ function getInterfaceFilesRelevant(interfaceFilesByLocationId, locationIdPage) {
277
+ const interfaceFilesRelevant = Object.fromEntries(Object.entries(interfaceFilesByLocationId)
278
+ .filter(([locationId]) => {
279
+ return isInherited(locationId, locationIdPage);
280
+ })
281
+ .sort(([locationId1], [locationId2]) => sortAfterInheritanceOrder(locationId1, locationId2, locationIdPage)));
282
+ return interfaceFilesRelevant;
283
+ }
284
+ function getInterfaceFileList(interfaceFilesByLocationId) {
285
+ const interfaceFiles = [];
286
+ Object.values(interfaceFilesByLocationId).forEach((interfaceFiles_) => {
287
+ interfaceFiles.push(...interfaceFiles_);
288
+ });
289
+ return interfaceFiles;
290
+ }
291
+ function getGlobalConfigs(interfaceFilesByLocationId, userRootDir) {
292
+ const locationIds = Object.keys(interfaceFilesByLocationId);
293
+ const interfaceFilesGlobal = Object.fromEntries(Object.entries(interfaceFilesByLocationId).filter(([locationId]) => {
294
+ return isGlobalLocation(locationId, locationIds);
295
+ }));
296
+ // Validate that global configs live in global interface files
297
+ {
298
+ const interfaceFilesGlobalPaths = [];
299
+ Object.entries(interfaceFilesGlobal).forEach(([locationId, interfaceFiles]) => {
300
+ assert(isGlobalLocation(locationId, locationIds));
301
+ interfaceFiles.forEach(({ filePath: { filePathRelativeToUserRootDir } }) => {
302
+ if (filePathRelativeToUserRootDir) {
303
+ interfaceFilesGlobalPaths.push(filePathRelativeToUserRootDir);
304
+ }
305
+ });
306
+ });
307
+ const globalPaths = Array.from(new Set(interfaceFilesGlobalPaths.map((p) => path.posix.dirname(p))));
308
+ Object.entries(interfaceFilesByLocationId).forEach(([locationId, interfaceFiles]) => {
309
+ interfaceFiles.forEach((interfaceFile) => {
310
+ Object.keys(interfaceFile.configMap).forEach((configName) => {
311
+ if (!isGlobalLocation(locationId, locationIds) && isGlobalConfig(configName)) {
312
+ assertUsage(false, [
313
+ `${getFilePathToShowToUser(interfaceFile.filePath)} defines the config ${pc.cyan(configName)} which is global:`,
314
+ globalPaths.length
315
+ ? `define ${pc.cyan(configName)} in ${joinEnglish(globalPaths, 'or')} instead`
316
+ : `create a global config (e.g. /pages/+config.js) and define ${pc.cyan(configName)} there instead`
317
+ ].join(' '));
318
+ }
319
+ });
320
+ });
321
+ });
322
+ }
323
+ const globalVikeConfig = {};
324
+ const pageConfigGlobal = {
325
+ onBeforeRoute: null,
326
+ onPrerenderStart: null
327
+ };
328
+ objectEntries(configDefinitionsBuiltInGlobal).forEach(([configName, configDef]) => {
329
+ const sources = resolveConfigValueSources(configName, configDef, interfaceFilesGlobal, userRootDir);
330
+ const configValueSource = sources?.[0];
331
+ if (!configValueSource)
332
+ return;
333
+ if (arrayIncludes(objectKeys(pageConfigGlobal), configName)) {
334
+ assert(!('value' in configValueSource));
335
+ pageConfigGlobal[configName] = configValueSource;
336
+ }
337
+ else {
338
+ assert('value' in configValueSource);
339
+ if (configName === 'prerender' && typeof configValueSource.value === 'boolean')
340
+ return;
341
+ assert(!configValueSource.isComputed);
342
+ assertWarning(false, `Being able to define config ${pc.cyan(configName)} in ${configValueSource.definedAtInfo.filePath} is experimental and will likely be removed. Define the config ${pc.cyan(configName)} in vike's Vite plugin options instead.`, { onlyOnce: true });
343
+ globalVikeConfig[configName] = configValueSource.value;
344
+ }
345
+ });
346
+ return { pageConfigGlobal, globalVikeConfig };
347
+ }
348
+ function resolveConfigValueSources(configName, configDef, interfaceFilesRelevant, userRootDir) {
349
+ let sources = null;
350
+ // interfaceFilesRelevant is sorted by sortAfterInheritanceOrder()
351
+ for (const interfaceFiles of Object.values(interfaceFilesRelevant)) {
352
+ const interfaceFilesDefiningConfig = interfaceFiles.filter((interfaceFile) => interfaceFile.configMap[configName]);
353
+ if (interfaceFilesDefiningConfig.length === 0)
354
+ continue;
355
+ sources = sources ?? [];
356
+ const visited = new WeakSet();
357
+ const add = (interfaceFile) => {
358
+ assert(!visited.has(interfaceFile));
359
+ visited.add(interfaceFile);
360
+ const configValueSource = getConfigValueSource(configName, interfaceFile, configDef, userRootDir);
361
+ sources.push(configValueSource);
362
+ };
363
+ // Main resolution logic
364
+ {
365
+ const interfaceValueFiles = interfaceFilesDefiningConfig
366
+ .filter((interfaceFile) => interfaceFile.isValueFile &&
367
+ // We consider side-effect exports (e.g. `export { frontmatter }` of .mdx files) later (i.e. with less priority)
368
+ interfaceFile.configNameDefault === configName)
369
+ .sort(makeOrderDeterministic);
370
+ const interfaceConfigFiles = interfaceFilesDefiningConfig
371
+ .filter((interfaceFile) => interfaceFile.isConfigFile &&
372
+ // We consider value from extended configs (e.g. vike-react) later (i.e. with less priority)
373
+ !interfaceFile.isConfigExtend)
374
+ .sort(makeOrderDeterministic);
375
+ const interfaceValueFile = interfaceValueFiles[0];
376
+ const interfaceConfigFile = interfaceConfigFiles[0];
377
+ // Make this value:
378
+ // /pages/some-page/+someConfig.js > `export default`
379
+ // override that value:
380
+ // /pages/some-page/+config > `export default { someConfig }`
381
+ const interfaceFileWinner = interfaceValueFile ?? interfaceConfigFile;
382
+ if (interfaceFileWinner) {
383
+ const interfaceFilesOverriden = [...interfaceValueFiles, ...interfaceConfigFiles].filter((f) => f !== interfaceFileWinner);
384
+ // A user-land conflict of interfaceFiles with the same locationId means that the user has superfluously defined the config twice; the user should remove such redundancy making things unnecessarily ambiguous
385
+ warnOverridenConfigValues(interfaceFileWinner, interfaceFilesOverriden, configName, configDef, userRootDir);
386
+ [interfaceFileWinner, ...interfaceFilesOverriden].forEach((interfaceFile) => {
387
+ add(interfaceFile);
388
+ });
389
+ }
390
+ }
391
+ // Side-effect configs such as `export { frontmatter }` in .mdx files
392
+ interfaceFilesDefiningConfig
393
+ .filter((interfaceFile) => interfaceFile.isValueFile &&
394
+ // Is side-effect export
395
+ interfaceFile.configNameDefault !== configName)
396
+ .forEach((interfaceValueFileSideEffect) => {
397
+ add(interfaceValueFileSideEffect);
398
+ });
399
+ // extends
400
+ interfaceFilesDefiningConfig
401
+ .filter((interfaceFile) => interfaceFile.isConfigFile && interfaceFile.isConfigExtend)
402
+ // extended config files are already sorted by inheritance order
403
+ .forEach((interfaceFile) => {
404
+ add(interfaceFile);
405
+ });
406
+ interfaceFilesDefiningConfig.forEach((interfaceFile) => {
407
+ assert(visited.has(interfaceFile));
408
+ });
409
+ }
410
+ assert(sources === null || sources.length > 0);
411
+ return sources;
412
+ }
413
+ function makeOrderDeterministic(interfaceFile1, interfaceFile2) {
414
+ return lowerFirst((interfaceFile) => {
415
+ const { filePathRelativeToUserRootDir } = interfaceFile.filePath;
416
+ assert(isInterfaceFileUserLand(interfaceFile));
417
+ assert(filePathRelativeToUserRootDir);
418
+ return filePathRelativeToUserRootDir.length;
419
+ })(interfaceFile1, interfaceFile2);
420
+ }
421
+ function warnOverridenConfigValues(interfaceFileWinner, interfaceFilesOverriden, configName, configDef, userRootDir) {
422
+ interfaceFilesOverriden.forEach((interfaceFileLoser) => {
423
+ const configValueSourceWinner = getConfigValueSource(configName, interfaceFileWinner, configDef, userRootDir);
424
+ const configValueSourceLoser = getConfigValueSource(configName, interfaceFileLoser, configDef, userRootDir);
425
+ assertWarning(false, `${getConfigDefinedAtString(configName, configValueSourceLoser, true)} overriden by another ${getConfigDefinedAtString(configName, configValueSourceWinner, false)}, remove one of the two`, { onlyOnce: false });
426
+ });
427
+ }
428
+ function isInterfaceFileUserLand(interfaceFile) {
429
+ return (interfaceFile.isConfigFile && !interfaceFile.isConfigExtend) || interfaceFile.isValueFile;
430
+ }
431
+ function getConfigValueSource(configName, interfaceFile, configDef, userRootDir) {
432
+ // TODO: rethink file paths of ConfigElement
433
+ const configFilePath = interfaceFile.filePath.filePathRelativeToUserRootDir ?? interfaceFile.filePath.filePathAbsolute;
434
+ const conf = interfaceFile.configMap[configName];
435
+ assert(conf);
436
+ const configEnv = configDef.env;
437
+ const definedAtInfoConfigFile = {
438
+ filePath: configFilePath,
439
+ fileExportPath: ['default', configName]
440
+ };
441
+ if (configDef._valueIsFilePath) {
442
+ let filePath;
443
+ if (interfaceFile.isConfigFile) {
444
+ const { configValue } = conf;
445
+ const import_ = getImport(configValue, interfaceFile.filePath, userRootDir);
446
+ const configDefinedAt = getConfigDefinedAtString(configName, { definedAtInfo: definedAtInfoConfigFile }, true);
447
+ assertUsage(import_, `${configDefinedAt} should be an import`);
448
+ filePath = import_.importFilePath;
449
+ }
450
+ else {
451
+ assert(interfaceFile.isValueFile);
452
+ filePath =
453
+ interfaceFile.filePath.filePathRelativeToUserRootDir ??
454
+ // Experimental: is this needed? Would it work?
455
+ interfaceFile.filePath.filePathAbsolute;
456
+ }
457
+ const configValueSource = {
458
+ value: filePath,
459
+ valueIsFilePath: true,
460
+ configEnv,
461
+ valueIsImportedAtRuntime: true,
462
+ isComputed: false,
463
+ definedAtInfo: {
464
+ filePath,
465
+ fileExportPath: []
466
+ }
467
+ };
468
+ return configValueSource;
469
+ }
470
+ if (interfaceFile.isConfigFile) {
471
+ assert('configValue' in conf);
472
+ const { configValue } = conf;
473
+ const import_ = getImport(configValue, interfaceFile.filePath, userRootDir);
474
+ if (import_) {
475
+ const { importFilePath, importFileExportName } = import_;
476
+ assertCodeFileEnv(importFilePath, configEnv, configName);
477
+ const configValueSource = {
478
+ configEnv,
479
+ valueIsImportedAtRuntime: true,
480
+ isComputed: false,
481
+ definedAtInfo: {
482
+ filePath: importFilePath,
483
+ fileExportPath: [importFileExportName]
484
+ }
485
+ };
486
+ return configValueSource;
487
+ }
488
+ else {
489
+ const configValueSource = {
490
+ value: configValue,
491
+ configEnv,
492
+ valueIsImportedAtRuntime: false,
493
+ isComputed: false,
494
+ definedAtInfo: definedAtInfoConfigFile
495
+ };
496
+ return configValueSource;
497
+ }
498
+ }
499
+ else if (interfaceFile.isValueFile) {
500
+ // TODO: rethink file paths of ConfigElement
501
+ const importFilePath = interfaceFile.filePath.filePathRelativeToUserRootDir ?? interfaceFile.filePath.filePathAbsolute;
502
+ const importFileExportName = configName === interfaceFile.configNameDefault ? 'default' : configName;
503
+ const valueAlreadyLoaded = 'configValue' in conf;
504
+ const configValueSource = {
505
+ configEnv,
506
+ valueIsImportedAtRuntime: !valueAlreadyLoaded,
507
+ isComputed: false,
508
+ definedAtInfo: {
509
+ filePath: importFilePath,
510
+ fileExportPath: [importFileExportName]
511
+ }
512
+ };
513
+ if (valueAlreadyLoaded) {
514
+ configValueSource.value = conf.configValue;
515
+ }
516
+ else {
517
+ assert(configEnv !== 'config-only');
518
+ }
519
+ return configValueSource;
520
+ }
521
+ assert(false);
522
+ }
523
+ function assertCodeFileEnv(importFilePath, configEnv, configName) {
524
+ if (!codeFilesEnv.has(importFilePath)) {
525
+ codeFilesEnv.set(importFilePath, []);
526
+ }
527
+ const codeFileEnv = codeFilesEnv.get(importFilePath);
528
+ codeFileEnv.push({ configEnv, configName });
529
+ const configDifferentEnv = codeFileEnv.filter((c) => c.configEnv !== configEnv)[0];
530
+ if (configDifferentEnv) {
531
+ assertUsage(false, [
532
+ `${importFilePath} defines the value of configs living in different environments:`,
533
+ ...[configDifferentEnv, { configName, configEnv }].map((c) => ` - config ${pc.cyan(c.configName)} which value lives in environment ${pc.cyan(c.configEnv)}`),
534
+ 'Defining config values in the same file is allowed only if they live in the same environment, see https://vike.dev/header-file/import-from-same-file'
535
+ ].join('\n'));
536
+ }
537
+ }
538
+ function isDefiningPage(interfaceFiles) {
539
+ for (const interfaceFile of interfaceFiles) {
540
+ const configNames = Object.keys(interfaceFile.configMap);
541
+ if (configNames.some((configName) => isDefiningPageConfig(configName))) {
542
+ return true;
543
+ }
544
+ }
545
+ return false;
546
+ }
547
+ function isDefiningPageConfig(configName) {
548
+ return ['Page', 'route'].includes(configName);
549
+ }
550
+ function getImport(configValue, configFilePath, userRootDir) {
551
+ if (typeof configValue !== 'string')
552
+ return null;
553
+ const importData = parseImportData(configValue);
554
+ if (!importData)
555
+ return null;
556
+ let { importFilePath, importFileExportName } = importData;
557
+ if (importFilePath.startsWith('.')) {
558
+ // We need to resolve relative paths into absolute paths. Because the import paths are included in virtual files:
559
+ // ```
560
+ // [vite] Internal server error: Failed to resolve import "./onPageTransitionHooks" from "virtual:vike:pageConfigValuesAll:client:/pages/index". Does the file exist?
561
+ // ```
562
+ importFilePath = resolveRelativeCodeFilePath(importData, configFilePath, userRootDir);
563
+ }
564
+ else {
565
+ // importFilePath can be:
566
+ // - an npm package import
567
+ // - a path alias
568
+ }
569
+ return {
570
+ importFilePath,
571
+ importFileExportName
572
+ };
573
+ }
574
+ function resolveRelativeCodeFilePath(importData, configFilePath, userRootDir) {
575
+ let importFilePath = resolveImport(importData, configFilePath);
576
+ // Make it a Vite path
577
+ assertPosixPath(userRootDir);
578
+ assertPosixPath(importFilePath);
579
+ if (importFilePath.startsWith(userRootDir)) {
580
+ importFilePath = getVitePathFromAbsolutePath(importFilePath, userRootDir);
581
+ }
582
+ else {
583
+ assertUsage(false, `${getFilePathToShowToUser(configFilePath)} imports from a relative path ${pc.cyan(importData.importFilePath)} outside of ${userRootDir} which is forbidden: import from a relative path inside ${userRootDir}, or import from a dependency's package.json#exports entry instead`);
584
+ // None of the following works. Seems to be a Vite bug?
585
+ // /*
586
+ // assert(importFilePath.startsWith('/'))
587
+ // importFilePath = `/@fs${importFilePath}`
588
+ // /*/
589
+ // importFilePath = path.posix.relative(userRootDir, importFilePath)
590
+ // assert(importFilePath.startsWith('../'))
591
+ // importFilePath = '/' + importFilePath
592
+ // //*/
593
+ }
594
+ assertPosixPath(importFilePath);
595
+ assert(importFilePath.startsWith('/'));
596
+ return importFilePath;
597
+ }
598
+ function getVitePathFromAbsolutePath(filePathAbsolute, root) {
599
+ assertPosixPath(filePathAbsolute);
600
+ assertPosixPath(root);
601
+ assert(filePathAbsolute.startsWith(root));
602
+ let vitePath = path.posix.relative(root, filePathAbsolute);
603
+ assert(!vitePath.startsWith('/') && !vitePath.startsWith('.'));
604
+ vitePath = '/' + vitePath;
605
+ return vitePath;
606
+ }
607
+ function getConfigDefinitions(interfaceFilesRelevant) {
608
+ const configDefinitions = { ...configDefinitionsBuiltIn };
609
+ Object.entries(interfaceFilesRelevant).forEach(([_locationId, interfaceFiles]) => {
610
+ interfaceFiles.forEach((interfaceFile) => {
611
+ const configMeta = interfaceFile.configMap['meta'];
612
+ if (!configMeta)
613
+ return;
614
+ const meta = configMeta.configValue;
615
+ assertMetaValue(meta,
616
+ // Maybe we should use the getConfigDefinedAtString() helper?
617
+ `Config ${pc.cyan('meta')} defined at ${getFilePathToShowToUser(interfaceFile.filePath)}`);
618
+ objectEntries(meta).forEach(([configName, configDefinition]) => {
619
+ // User can override an existing config definition
620
+ configDefinitions[configName] = {
621
+ ...configDefinitions[configName],
622
+ ...configDefinition
623
+ };
624
+ });
625
+ });
626
+ });
627
+ return configDefinitions;
628
+ }
629
+ function assertMetaValue(metaVal, configMetaDefinedAt) {
630
+ assertUsage(isObject(metaVal), `${configMetaDefinedAt} has an invalid type ${pc.cyan(typeof metaVal)}: it should be an object instead.`);
631
+ objectEntries(metaVal).forEach(([configName, def]) => {
632
+ assertUsage(isObject(def), `${configMetaDefinedAt} sets meta.${configName} to a value with an invalid type ${pc.cyan(typeof def)}: it should be an object instead.`);
633
+ // env
634
+ {
635
+ const envValues = [
636
+ 'client-only',
637
+ 'server-only',
638
+ 'server-and-client',
639
+ 'config-only'
640
+ ];
641
+ const hint = [
642
+ `Set the value of ${pc.cyan('env')} to `,
643
+ joinEnglish(envValues.map((s) => pc.cyan(`'${s}'`)), 'or'),
644
+ '.'
645
+ ].join('');
646
+ assertUsage('env' in def, `${configMetaDefinedAt} doesn't set meta.${configName}.env but it's required. ${hint}`);
647
+ assertUsage(hasProp(def, 'env', 'string'), `${configMetaDefinedAt} sets meta.${configName}.env to an invalid type ${pc.cyan(typeof def.env)}. ${hint}`);
648
+ assertUsage(envValues.includes(def.env), `${configMetaDefinedAt} sets meta.${configName}.env to an invalid value ${pc.cyan(`'${def.env}'`)}. ${hint}`);
649
+ }
650
+ // effect
651
+ if ('effect' in def) {
652
+ assertUsage(hasProp(def, 'effect', 'function'), `${configMetaDefinedAt} sets meta.${configName}.effect to an invalid type ${pc.cyan(typeof def.effect)}: it should be a function instead`);
653
+ assertUsage(def.env === 'config-only', `${configMetaDefinedAt} sets meta.${configName}.effect but it's only supported if meta.${configName}.env is ${pc.cyan('config-only')} (but it's ${pc.cyan(def.env)} instead)`);
654
+ }
655
+ });
656
+ }
657
+ function applyEffects(pageConfig, configDefinitionsRelevant) {
658
+ objectEntries(configDefinitionsRelevant).forEach(([configName, configDef]) => {
659
+ if (!configDef.effect)
660
+ return;
661
+ // The value needs to be loaded at config time, that's why we only support effect for configs that are config-only for now.
662
+ // (We could support effect for non config-only by always loading its value at config time, regardless of the config's `env` value.)
663
+ assertWarning(configDef.env === 'config-only', [
664
+ `Adding an effect to ${pc.cyan(configName)} may not work as expected because ${pc.cyan(configName)} has an ${pc.cyan('env')} that is different than ${pc.cyan('config-only')} (its env is ${pc.cyan(configDef.env)}).`,
665
+ 'Reach out to a maintainer if you want to use this in production.'
666
+ ].join(' '), { onlyOnce: true });
667
+ const configValue = pageConfig.configValueSources[configName]?.[0];
668
+ if (!configValue)
669
+ return;
670
+ const configModFromEffect = configDef.effect({
671
+ configValue: configValue.value,
672
+ configDefinedAt: getConfigDefinedAtString(configName, configValue, true)
673
+ });
674
+ if (!configModFromEffect)
675
+ return;
676
+ assert(hasProp(configValue, 'value')); // We need to assume that the config value is loaded at build-time
677
+ applyEffect(configModFromEffect, configValue, pageConfig.configValueSources);
678
+ });
679
+ }
680
+ function applyEffect(configModFromEffect, configValueEffectSource, configValueSources) {
681
+ const notSupported = `config.meta[configName].effect currently only supports modifying the the ${pc.cyan('env')} of a config. Reach out to a maintainer if you need more capabilities.`;
682
+ objectEntries(configModFromEffect).forEach(([configName, configValue]) => {
683
+ if (configName === 'meta') {
684
+ assertMetaValue(configValue, getConfigDefinedAtString(configName, configValueEffectSource, true, 'effect'));
685
+ objectEntries(configValue).forEach(([configTargetName, configTargetDef]) => {
686
+ {
687
+ const keys = Object.keys(configTargetDef);
688
+ assertUsage(keys.includes('env'), notSupported);
689
+ assertUsage(keys.length === 1, notSupported);
690
+ }
691
+ const envOverriden = configTargetDef.env;
692
+ const sources = configValueSources[configTargetName];
693
+ sources?.forEach((configValueSource) => {
694
+ configValueSource.configEnv = envOverriden;
695
+ });
696
+ });
697
+ }
698
+ else {
699
+ assertUsage(false, notSupported);
700
+ // If we do end implementing being able to set the value of a config:
701
+ // - For setting definedAtInfo: we could take the definedAtInfo of the effect config while appending '(effect)' to definedAtInfo.fileExportPath
702
+ }
703
+ });
704
+ }
705
+ function applyComputed(pageConfig, configDefinitionsRelevant) {
706
+ objectEntries(configDefinitionsRelevant).forEach(([configName, configDef]) => {
707
+ var _a;
708
+ const computed = configDef._computed;
709
+ if (!computed)
710
+ return;
711
+ const value = computed(pageConfig);
712
+ if (value === undefined)
713
+ return;
714
+ const configValueSource = {
715
+ value,
716
+ configEnv: configDef.env,
717
+ definedAtInfo: null,
718
+ isComputed: true,
719
+ valueIsImportedAtRuntime: false
720
+ };
721
+ (_a = pageConfig.configValueSources)[configName] ?? (_a[configName] = []);
722
+ // Computed values are inserted last: they have the least priority (i.e. computed can be overriden)
723
+ pageConfig.configValueSources[configName].push(configValueSource);
724
+ });
725
+ }
726
+ async function findPlusFiles(userRootDir, isDev, extensions) {
727
+ const timeBase = new Date().getTime();
728
+ assertPosixPath(userRootDir);
729
+ const result = await glob(`**/+*.${scriptFileExtensions}`, {
730
+ ignore: [
731
+ '**/node_modules/**',
732
+ // Allow:
733
+ // ```
734
+ // +Page.js
735
+ // +Page.telefunc.js
736
+ // ```
737
+ '**/*.telefunc.*'
738
+ ],
739
+ cwd: userRootDir,
740
+ dot: false
741
+ });
742
+ const time = new Date().getTime() - timeBase;
743
+ if (isDev) {
744
+ // We only warn in dev, because while building it's expected to take a long time as fast-glob is competing for resources with other tasks
745
+ assertWarning(time < 2 * 1000, `Crawling your user files took an unexpected long time (${time}ms). Create a new issue on vike's GitHub.`, {
746
+ onlyOnce: 'slow-page-files-search'
747
+ });
748
+ }
749
+ const plusFiles = result.map((p) => {
750
+ p = toPosixPath(p);
751
+ const filePathRelativeToUserRootDir = path.posix.join('/', p);
752
+ const filePathAbsolute = path.posix.join(userRootDir, p);
753
+ return { filePathRelativeToUserRootDir, filePathAbsolute };
754
+ });
755
+ extensions.forEach((extension) => {
756
+ extension.pageConfigsDistFiles?.forEach((pageConfigDistFile) => {
757
+ // TODO/v1-release: remove
758
+ if (!pageConfigDistFile.importPath.includes('+'))
759
+ return;
760
+ assert(pageConfigDistFile.importPath.includes('+'));
761
+ assert(path.posix.basename(pageConfigDistFile.importPath).startsWith('+'));
762
+ const { importPath, filePath } = pageConfigDistFile;
763
+ plusFiles.push({
764
+ filePathRelativeToUserRootDir: importPath,
765
+ filePathAbsolute: filePath
766
+ });
767
+ });
768
+ });
769
+ return plusFiles;
770
+ }
771
+ function getConfigName(filePath) {
772
+ assertPosixPath(filePath);
773
+ if (isTmpFile(filePath))
774
+ return null;
775
+ const fileName = path.posix.basename(filePath);
776
+ assertNoUnexpectedPlusSign(filePath, fileName);
777
+ const basename = fileName.split('.')[0];
778
+ if (!basename.startsWith('+')) {
779
+ return null;
780
+ }
781
+ else {
782
+ const configName = basename.slice(1);
783
+ return configName;
784
+ }
785
+ }
786
+ function assertNoUnexpectedPlusSign(filePath, fileName) {
787
+ const dirs = path.posix.dirname(filePath).split('/');
788
+ dirs.forEach((dir, i) => {
789
+ const dirPath = dirs.slice(0, i + 1).join('/');
790
+ assertUsage(!dir.includes('+'), `Character '+' is a reserved character: remove '+' from the directory name ${dirPath}/`);
791
+ });
792
+ assertUsage(!fileName.slice(1).includes('+'), `Character '+' is only allowed at the beginning of filenames: make sure ${filePath} doesn't contain any '+' in its filename other than its first letter`);
793
+ }
794
+ async function loadConfigFile(configFilePath, userRootDir, visited) {
795
+ const { filePathAbsolute, filePathRelativeToUserRootDir } = configFilePath;
796
+ assertNoInfiniteLoop(visited, filePathAbsolute);
797
+ const { fileExports } = await transpileAndExecuteFile(configFilePath, false, userRootDir);
798
+ const { extendsConfigs, extendsFilePaths } = await loadExtendsConfigs(fileExports, configFilePath, userRootDir, [
799
+ ...visited,
800
+ filePathAbsolute
801
+ ]);
802
+ const configFile = {
803
+ fileExports,
804
+ filePath: {
805
+ filePathRelativeToUserRootDir,
806
+ filePathAbsolute
807
+ },
808
+ extendsFilePaths
809
+ };
810
+ return { configFile, extendsConfigs };
811
+ }
812
+ function assertNoInfiniteLoop(visited, filePathAbsolute) {
813
+ const idx = visited.indexOf(filePathAbsolute);
814
+ if (idx === -1)
815
+ return;
816
+ const loop = visited.slice(idx);
817
+ assert(loop[0] === filePathAbsolute);
818
+ assertUsage(idx === -1, `Infinite extends loop ${[...loop, filePathAbsolute].join('>')}`);
819
+ }
820
+ async function loadExtendsConfigs(configFileExports, configFilePath, userRootDir, visited) {
821
+ const extendsImportData = getExtendsImportData(configFileExports, configFilePath);
822
+ const extendsConfigFiles = [];
823
+ extendsImportData.map((importData) => {
824
+ const { importFilePath: importPath } = importData;
825
+ // TODO
826
+ // - validate extends configs
827
+ const filePathAbsolute = resolveImport(importData, configFilePath);
828
+ assertExtendsImportPath(importPath, filePathAbsolute, configFilePath);
829
+ extendsConfigFiles.push({
830
+ filePathAbsolute,
831
+ // - filePathRelativeToUserRootDir has no functionality beyond nicer error messages for user
832
+ // - Using importPath would be visually nicer but it's ambigous => we rather pick filePathAbsolute for added clarity
833
+ filePathRelativeToUserRootDir: determineFilePathRelativeToUserDir(filePathAbsolute, userRootDir)
834
+ });
835
+ });
836
+ const extendsConfigs = [];
837
+ await Promise.all(extendsConfigFiles.map(async (configFilePath) => {
838
+ const result = await loadConfigFile(configFilePath, userRootDir, visited);
839
+ extendsConfigs.push(result.configFile);
840
+ extendsConfigs.push(...result.extendsConfigs);
841
+ }));
842
+ const extendsFilePaths = extendsConfigFiles.map((f) => f.filePathAbsolute);
843
+ return { extendsConfigs, extendsFilePaths };
844
+ }
845
+ function determineFilePathRelativeToUserDir(filePathAbsolute, userRootDir) {
846
+ assertPosixPath(filePathAbsolute);
847
+ assertPosixPath(userRootDir);
848
+ if (!filePathAbsolute.startsWith(userRootDir)) {
849
+ return null;
850
+ }
851
+ let filePathRelativeToUserRootDir = filePathAbsolute.slice(userRootDir.length);
852
+ if (!filePathRelativeToUserRootDir.startsWith('/'))
853
+ filePathRelativeToUserRootDir = '/' + filePathRelativeToUserRootDir;
854
+ return filePathRelativeToUserRootDir;
855
+ }
856
+ function assertExtendsImportPath(importPath, filePath, configFilePath) {
857
+ if (isNpmPackageImport(importPath)) {
858
+ const fileDir = path.posix.dirname(filePath) + '/';
859
+ const fileName = path.posix.basename(filePath);
860
+ const fileNameBaseCorrect = '+config';
861
+ const [fileNameBase, ...fileNameRest] = fileName.split('.');
862
+ const fileNameCorrect = [fileNameBaseCorrect, ...fileNameRest].join('.');
863
+ assertWarning(fileNameBase === fileNameBaseCorrect, `Rename ${fileName} to ${fileNameCorrect} in ${fileDir}`, {
864
+ onlyOnce: true
865
+ });
866
+ }
867
+ else {
868
+ assertWarning(false, `${getFilePathToShowToUser(configFilePath)} uses ${pc.cyan('extends')} to inherit from ${pc.cyan(importPath)} which is a user-land file: this is experimental and may be remove at any time. Reach out to a maintainer if you need this feature.`, { onlyOnce: true });
869
+ }
870
+ }
871
+ function getExtendsImportData(configFileExports, configFilePath) {
872
+ const filePathToShowToUser = getFilePathToShowToUser(configFilePath);
873
+ assertDefaultExportObject(configFileExports, filePathToShowToUser);
874
+ const defaultExports = configFileExports.default;
875
+ const wrongUsage = `${filePathToShowToUser} sets the config 'extends' to an invalid value, see https://vike.dev/extends`;
876
+ let extendList;
877
+ if (!('extends' in defaultExports)) {
878
+ return [];
879
+ }
880
+ else if (hasProp(defaultExports, 'extends', 'string')) {
881
+ extendList = [defaultExports.extends];
882
+ }
883
+ else if (hasProp(defaultExports, 'extends', 'string[]')) {
884
+ extendList = defaultExports.extends;
885
+ }
886
+ else {
887
+ assertUsage(false, wrongUsage);
888
+ }
889
+ const extendsImportData = extendList.map((importDataSerialized) => {
890
+ const importData = parseImportData(importDataSerialized);
891
+ assertUsage(importData, wrongUsage);
892
+ return importData;
893
+ });
894
+ return extendsImportData;
895
+ }
896
+ // TODO: re-use this
897
+ function handleUserFileError(err, isDev) {
898
+ // Properly handle error during transpilation so that we can use assertUsage() during transpilation
899
+ if (isDev) {
900
+ throw err;
901
+ }
902
+ else {
903
+ // Avoid ugly error format:
904
+ // ```
905
+ // [vike:importUserCode] Could not load virtual:vike:importUserCode:server: [vike@0.4.70][Wrong Usage] /pages/+config.ts sets the config 'onRenderHtml' to the value './+config/onRenderHtml-i-dont-exist.js' but no file was found at /home/rom/code/vike/examples/v1/pages/+config/onRenderHtml-i-dont-exist.js
906
+ // Error: [vike@0.4.70][Wrong Usage] /pages/+config.ts sets the config 'onRenderHtml' to the value './+config/onRenderHtml-i-dont-exist.js' but no file was found at /home/rom/code/vike/examples/v1/pages/+config/onRenderHtml-i-dont-exist.js
907
+ // at ...
908
+ // at ...
909
+ // at ...
910
+ // at ...
911
+ // at ...
912
+ // at ...
913
+ // code: 'PLUGIN_ERROR',
914
+ // plugin: 'vike:importUserCode',
915
+ // hook: 'load',
916
+ // watchFiles: [
917
+ // '/home/rom/code/vike/vike/dist/esm/node/importBuild.js',
918
+ // '\x00virtual:vike:importUserCode:server'
919
+ // ]
920
+ // }
921
+ //  ELIFECYCLE  Command failed with exit code 1.
922
+ // ```
923
+ console.log('');
924
+ console.error(err);
925
+ process.exit(1);
926
+ }
927
+ }
928
+ function isGlobalConfig(configName) {
929
+ if (configName === 'prerender')
930
+ return false;
931
+ const configNamesGlobal = getConfigNamesGlobal();
932
+ return arrayIncludes(configNamesGlobal, configName);
933
+ }
934
+ function getConfigNamesGlobal() {
935
+ return Object.keys(configDefinitionsBuiltInGlobal);
936
+ }
937
+ function assertConfigExists(configName, configNamesRelevant, definedByFile) {
938
+ const configNames = [...configNamesRelevant, ...getConfigNamesGlobal()];
939
+ if (configNames.includes(configName))
940
+ return;
941
+ handleUnknownConfig(configName, configNames, definedByFile);
942
+ assert(false);
943
+ }
944
+ function handleUnknownConfig(configName, configNames, definedByFile) {
945
+ let errMsg = `${definedByFile} defines an unknown config ${pc.cyan(configName)}`;
946
+ let configNameSimilar = null;
947
+ if (configName === 'page') {
948
+ configNameSimilar = 'Page';
949
+ }
950
+ else {
951
+ configNameSimilar = getMostSimilar(configName, configNames);
952
+ }
953
+ if (configNameSimilar || configName === 'page') {
954
+ assert(configNameSimilar);
955
+ assert(configNameSimilar !== configName);
956
+ errMsg += `, did you mean to define ${pc.cyan(configNameSimilar)} instead?`;
957
+ if (configName === 'page') {
958
+ errMsg += ` (The name of the config ${pc.cyan('Page')} starts with a capital letter ${pc.cyan('P')} because it usually defines a UI component: a ubiquitous JavaScript convention is to start the name of UI components with a capital letter.)`;
959
+ }
960
+ }
961
+ else {
962
+ errMsg += `, you need to define the config ${pc.cyan(configName)} by using ${pc.cyan('config.meta')} https://vike.dev/meta`;
963
+ }
964
+ assertUsage(false, errMsg);
965
+ }
966
+ function determineRouteFilesystem(locationId, configValueSources) {
967
+ const configName = 'filesystemRoutingRoot';
968
+ const configFilesystemRoutingRoot = configValueSources[configName]?.[0];
969
+ let filesystemRouteString = getFilesystemRouteString(locationId);
970
+ if (determineIsErrorPage(filesystemRouteString)) {
971
+ return { isErrorPage: true, routeFilesystem: null };
972
+ }
973
+ let filesystemRouteDefinedBy = getFilesystemRouteDefinedBy(locationId); // for log404()
974
+ if (configFilesystemRoutingRoot) {
975
+ const routingRoot = getFilesystemRoutingRootEffect(configFilesystemRoutingRoot, configName);
976
+ if (routingRoot) {
977
+ const { filesystemRoutingRootEffect, filesystemRoutingRootDefinedAt } = routingRoot;
978
+ const debugInfo = { locationId, routeFilesystem: filesystemRouteString, configFilesystemRoutingRoot };
979
+ assert(filesystemRouteString.startsWith(filesystemRoutingRootEffect.before), debugInfo);
980
+ filesystemRouteString = applyFilesystemRoutingRootEffect(filesystemRouteString, filesystemRoutingRootEffect);
981
+ filesystemRouteDefinedBy = `${filesystemRouteDefinedBy} (with ${filesystemRoutingRootDefinedAt})`;
982
+ }
983
+ }
984
+ assert(filesystemRouteString.startsWith('/'));
985
+ const routeFilesystem = {
986
+ routeString: filesystemRouteString,
987
+ definedBy: filesystemRouteDefinedBy
988
+ };
989
+ return { routeFilesystem, isErrorPage: false };
990
+ }
991
+ function getFilesystemRoutingRootEffect(configFilesystemRoutingRoot, configName) {
992
+ assert(configFilesystemRoutingRoot.configEnv === 'config-only');
993
+ // Eagerly loaded since it's config-only
994
+ assert('value' in configFilesystemRoutingRoot);
995
+ const { value } = configFilesystemRoutingRoot;
996
+ const configDefinedAt = getConfigDefinedAtString(configName, configFilesystemRoutingRoot, false);
997
+ assertUsage(typeof value === 'string', `${configDefinedAt} should be a string`);
998
+ assertUsage(value.startsWith('/'), `${configDefinedAt} is ${pc.cyan(value)} but it should start with a leading slash ${pc.cyan('/')}`);
999
+ assert(!configFilesystemRoutingRoot.isComputed);
1000
+ const before = getFilesystemRouteString(getLocationId(configFilesystemRoutingRoot.definedAtInfo.filePath));
1001
+ const after = value;
1002
+ const filesystemRoutingRootEffect = { before, after };
1003
+ return { filesystemRoutingRootEffect, filesystemRoutingRootDefinedAt: configDefinedAt };
1004
+ }
1005
+ function determineIsErrorPage(routeFilesystem) {
1006
+ assertPosixPath(routeFilesystem);
1007
+ return routeFilesystem.split('/').includes('_error');
1008
+ }
1009
+ function resolveImport(importData, importerFilePath) {
1010
+ const { filePathAbsolute } = importerFilePath;
1011
+ assertPosixPath(filePathAbsolute);
1012
+ const plusConfigFilDirPathAbsolute = path.posix.dirname(filePathAbsolute);
1013
+ const importedFile = resolve(importData.importFilePath, plusConfigFilDirPathAbsolute);
1014
+ assertImport(importedFile, importData, importerFilePath);
1015
+ return importedFile;
1016
+ }
1017
+ function assertImport(importedFile, importData, importerFilePath) {
1018
+ const { importFilePath: importPath, importWasGenerated, importDataString } = importData;
1019
+ const filePathToShowToUser = getFilePathToShowToUser(importerFilePath);
1020
+ if (!importedFile) {
1021
+ const importPathString = pc.cyan(`'${importPath}'`);
1022
+ const errIntro = importWasGenerated
1023
+ ? `The import path ${importPathString} in ${filePathToShowToUser}`
1024
+ : `The import ${pc.cyan(importDataString)} defined in ${filePathToShowToUser}`;
1025
+ const errIntro2 = `${errIntro} couldn't be resolved: does ${importPathString}`;
1026
+ if (importPath.startsWith('.')) {
1027
+ assertUsage(false, `${errIntro2} point to an existing file?`);
1028
+ }
1029
+ else {
1030
+ assertUsage(false, `${errIntro2} exist?`);
1031
+ }
1032
+ }
1033
+ }
1034
+ function isVikeConfigFile(filePath) {
1035
+ return !!getConfigName(filePath);
1036
+ }
1037
+ function getConfigValues(configValueSources, configDefinitionsRelevant) {
1038
+ const configValues = {};
1039
+ Object.entries(configValueSources).forEach(([configName, sources]) => {
1040
+ const configDef = configDefinitionsRelevant[configName];
1041
+ assert(configDef);
1042
+ if (!configDef.cumulative) {
1043
+ const configValueSource = sources[0];
1044
+ if ('value' in configValueSource) {
1045
+ const { value, definedAtInfo } = configValueSource;
1046
+ configValues[configName] = {
1047
+ value,
1048
+ definedAtInfo
1049
+ };
1050
+ }
1051
+ }
1052
+ else {
1053
+ const value = mergeCumulative(configName, sources);
1054
+ configValues[configName] = {
1055
+ value,
1056
+ definedAtInfo: null
1057
+ };
1058
+ }
1059
+ });
1060
+ return configValues;
1061
+ }
1062
+ function mergeCumulative(configName, configValueSources) {
1063
+ const valuesArr = [];
1064
+ const valuesSet = [];
1065
+ let configValueSourcePrevious = null;
1066
+ configValueSources.forEach((configValueSource) => {
1067
+ assert(!configValueSource.isComputed);
1068
+ const configDefinedAt = getConfigDefinedAtString(configName, configValueSource, true);
1069
+ const configNameColored = pc.cyan(configName);
1070
+ // We could, in principle, also support cumulative values to be defined in +${configName}.js but it ins't completely trivial to implement
1071
+ assertUsage('value' in configValueSource, `${configDefinedAt} is only allowed to be defined in a +config.h.js file. (Because the values of ${configNameColored} are cumulative.)`);
1072
+ /* This is more confusing than adding value. For example, this explanation shouldn't be shown for the passToClient config.
1073
+ const explanation = `(Because the values of ${configNameColored} are cumulative and therefore merged together.)` as const
1074
+ */
1075
+ const assertNoMixing = (isSet) => {
1076
+ const vals1 = isSet ? valuesSet : valuesArr;
1077
+ const t1 = isSet ? 'a Set' : 'an array';
1078
+ const vals2 = !isSet ? valuesSet : valuesArr;
1079
+ const t2 = !isSet ? 'a Set' : 'an array';
1080
+ assert(vals1.length > 0);
1081
+ if (vals2.length === 0)
1082
+ return;
1083
+ assert(configValueSourcePrevious);
1084
+ const configPreviousDefinedAt = getConfigDefinedAtString(configName, configValueSourcePrevious, false);
1085
+ assertUsage(false, `${configDefinedAt} sets ${t1} but another ${configPreviousDefinedAt} sets ${t2} which is forbidden: the values must be all arrays or all sets (you cannot mix).`);
1086
+ };
1087
+ const { value } = configValueSource;
1088
+ if (Array.isArray(value)) {
1089
+ valuesArr.push(value);
1090
+ assertNoMixing(false);
1091
+ }
1092
+ else if (value instanceof Set) {
1093
+ valuesSet.push(value);
1094
+ assertNoMixing(true);
1095
+ }
1096
+ else {
1097
+ assertUsage(false, `${configDefinedAt} must be an array or a Set`);
1098
+ }
1099
+ configValueSourcePrevious = configValueSource;
1100
+ });
1101
+ if (valuesArr.length > 0) {
1102
+ assert(valuesSet.length === 0);
1103
+ const result = mergeCumulativeValues(valuesArr);
1104
+ assert(result !== null);
1105
+ return result;
1106
+ }
1107
+ if (valuesSet.length > 0) {
1108
+ assert(valuesArr.length === 0);
1109
+ const result = mergeCumulativeValues(valuesSet);
1110
+ assert(result !== null);
1111
+ return result;
1112
+ }
1113
+ assert(false);
1114
+ }