vike 0.4.220 → 0.4.221-commit-ab9e52a
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.
- package/dist/cjs/__internal/index.js +5 -23
- package/dist/cjs/node/api/build.js +33 -24
- package/dist/cjs/node/api/context.js +6 -8
- package/dist/cjs/node/api/prepareViteApiCall.js +23 -21
- package/dist/cjs/node/api/prerender.js +1 -0
- package/dist/cjs/node/api/utils.js +2 -1
- package/dist/cjs/node/cli/context.js +16 -0
- package/dist/cjs/node/cli/entry.js +2 -0
- package/dist/cjs/node/cli/utils.js +1 -0
- package/dist/cjs/node/plugin/index.js +4 -8
- package/dist/cjs/node/plugin/onLoad.js +6 -1
- package/dist/cjs/node/plugin/plugins/autoFullBuild.js +34 -33
- package/dist/cjs/node/plugin/plugins/baseUrls.js +2 -2
- package/dist/cjs/node/plugin/plugins/buildApp.js +72 -0
- package/dist/cjs/node/plugin/plugins/buildConfig/fixServerAssets.js +12 -12
- package/dist/cjs/node/plugin/plugins/buildConfig.js +17 -12
- package/dist/cjs/node/plugin/plugins/buildEntry/index.js +28 -24
- package/dist/cjs/node/plugin/plugins/commonConfig.js +9 -7
- package/dist/cjs/node/plugin/plugins/extractAssetsPlugin.js +7 -4
- package/dist/cjs/node/plugin/plugins/extractExportNamesPlugin.js +2 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +15 -10
- package/dist/cjs/node/plugin/plugins/importUserCode/index.js +11 -6
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/{assertExtensions.js → getVikeConfig/assertExtensions.js} +41 -36
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +59 -22
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/{getConfigFileExport.js → getVikeConfig/getConfigFileExport.js} +2 -2
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.js +159 -0
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +40 -23
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.js +9 -64
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +11 -5
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +403 -590
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/{debug.js → virtual-files/debug.js} +1 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/{getVirtualFilePageConfigValuesAll.js → virtual-files/getVirtualFilePageConfigValuesAll.js} +12 -9
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/{getVirtualFilePageConfigs.js → virtual-files/getVirtualFilePageConfigs.js} +13 -11
- package/dist/cjs/node/plugin/plugins/packageJsonFile.js +2 -2
- package/dist/cjs/node/plugin/plugins/previewConfig.js +7 -7
- package/dist/cjs/node/plugin/plugins/setGlobalContext.js +3 -5
- package/dist/cjs/node/plugin/shared/findPageFiles.js +2 -1
- package/dist/cjs/node/plugin/shared/getFullBuildInlineConfig.js +20 -0
- package/dist/cjs/{utils → node/plugin/shared}/getOutDirs.js +70 -61
- package/dist/cjs/node/plugin/{resolveClientEntriesDev.js → shared/resolveClientEntriesDev.js} +5 -8
- package/dist/cjs/{utils → node/plugin/shared}/viteIsSSR.js +2 -2
- package/dist/cjs/node/plugin/utils.js +1 -2
- package/dist/cjs/node/prerender/context.js +31 -0
- package/dist/cjs/node/prerender/resolvePrerenderConfig.js +46 -0
- package/dist/cjs/node/prerender/runPrerender.js +89 -68
- package/dist/cjs/node/prerender/utils.js +2 -2
- package/dist/cjs/node/runtime/globalContext.js +222 -150
- package/dist/cjs/node/runtime/html/injectAssets/getHtmlTags.js +11 -7
- package/dist/cjs/node/runtime/html/injectAssets/getViteDevScript.js +2 -3
- package/dist/cjs/node/runtime/html/injectAssets.js +4 -4
- package/dist/cjs/node/runtime/html/renderHtml.js +4 -5
- package/dist/cjs/node/runtime/page-files/setup.js +1 -1
- package/dist/cjs/node/runtime/renderPage/analyzePage.js +2 -3
- package/dist/cjs/node/runtime/renderPage/getEarlyHints.js +2 -27
- package/dist/cjs/node/runtime/renderPage/getPageAssets/sortPageAssetsForEarlyHintsHeader.js +2 -4
- package/dist/cjs/node/runtime/renderPage/getPageAssets.js +4 -4
- package/dist/cjs/node/runtime/renderPage/handleErrorWithoutErrorPage.js +3 -5
- package/dist/cjs/node/runtime/renderPage/isFontFallback.js +29 -0
- package/dist/cjs/node/runtime/renderPage/loadUserFilesServerSide.js +5 -4
- package/dist/cjs/node/runtime/renderPage/log404/index.js +1 -2
- package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +14 -10
- package/dist/cjs/node/runtime/renderPage/resolveRedirects.js +6 -5
- package/dist/cjs/node/runtime/renderPage.js +31 -29
- package/dist/cjs/node/runtime/utils.js +3 -3
- package/dist/cjs/node/runtime-dev/createDevMiddleware.js +5 -3
- package/dist/cjs/node/shared/resolveBase.js +7 -0
- package/dist/cjs/shared/getPageConfigsRuntime.js +20 -0
- package/dist/cjs/shared/getPageContextUrlComputed.js +6 -1
- package/dist/cjs/shared/getPageFiles/fileTypes.js +0 -1
- package/dist/cjs/shared/getPageFiles/getAllPageIdFiles.js +0 -3
- package/dist/cjs/shared/getPageFiles/getPageFileObject.js +0 -5
- package/dist/cjs/shared/getPageFiles/parseGlobResults.js +4 -3
- package/dist/cjs/shared/getPageFiles.js +1 -3
- package/dist/cjs/shared/page-configs/getPageConfigUserFriendly.js +15 -6
- package/dist/cjs/shared/page-configs/loadConfigValues.js +5 -1
- package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +69 -18
- package/dist/cjs/shared/route/loadPageRoutes.js +1 -0
- package/dist/cjs/shared/utils.js +0 -1
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/assertSetup.js +1 -1
- package/dist/cjs/utils/catchInfiniteLoop.js +34 -0
- package/dist/cjs/utils/debug.js +8 -6
- package/dist/cjs/utils/findFile.js +4 -3
- package/dist/cjs/utils/isDev.js +2 -2
- package/dist/cjs/utils/isFilePathAbsoluteFilesystem.js +2 -2
- package/dist/cjs/utils/makePublicCopy.js +32 -0
- package/dist/cjs/utils/objectAssignSafe.js +7 -0
- package/dist/cjs/utils/path.js +48 -0
- package/dist/cjs/utils/requireResolve.js +3 -3
- package/dist/esm/__internal/index.d.ts +2 -2
- package/dist/esm/__internal/index.js +7 -26
- package/dist/esm/client/client-routing-runtime/createPageContext.js +5 -9
- package/dist/esm/client/client-routing-runtime/history.d.ts +3 -1
- package/dist/esm/client/client-routing-runtime/history.js +23 -18
- package/dist/esm/client/client-routing-runtime/index.d.ts +0 -1
- package/dist/esm/client/client-routing-runtime/index.js +0 -1
- package/dist/esm/client/client-routing-runtime/initClientRouter.js +2 -2
- package/dist/esm/client/client-routing-runtime/initOnLinkClick.d.ts +0 -4
- package/dist/esm/client/client-routing-runtime/initOnLinkClick.js +0 -11
- package/dist/esm/client/client-routing-runtime/initOnPopState.d.ts +0 -10
- package/dist/esm/client/client-routing-runtime/initOnPopState.js +50 -70
- package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +15 -15
- package/dist/esm/client/client-routing-runtime/scrollRestoration.d.ts +4 -6
- package/dist/esm/client/client-routing-runtime/scrollRestoration.js +17 -12
- package/dist/esm/client/client-routing-runtime/setScrollPosition.d.ts +1 -1
- package/dist/esm/client/client-routing-runtime/setScrollPosition.js +29 -5
- package/dist/esm/client/client-routing-runtime/skipLink.d.ts +0 -2
- package/dist/esm/client/client-routing-runtime/skipLink.js +0 -1
- package/dist/esm/client/client-routing-runtime/utils.d.ts +1 -0
- package/dist/esm/client/client-routing-runtime/utils.js +1 -0
- package/dist/esm/client/server-routing-runtime/getPageContext.js +3 -4
- package/dist/esm/client/shared/loadUserFilesClientSide.js +3 -2
- package/dist/esm/node/api/build.d.ts +1 -6
- package/dist/esm/node/api/build.js +31 -25
- package/dist/esm/node/api/context.d.ts +4 -4
- package/dist/esm/node/api/context.js +6 -9
- package/dist/esm/node/api/prepareViteApiCall.d.ts +4 -3
- package/dist/esm/node/api/prepareViteApiCall.js +24 -22
- package/dist/esm/node/api/prerender.js +1 -0
- package/dist/esm/node/api/utils.d.ts +2 -1
- package/dist/esm/node/api/utils.js +2 -1
- package/dist/esm/node/cli/context.d.ts +5 -0
- package/dist/esm/node/cli/context.js +14 -0
- package/dist/esm/node/cli/entry.js +2 -0
- package/dist/esm/node/cli/parseCli.d.ts +3 -1
- package/dist/esm/node/cli/utils.d.ts +1 -0
- package/dist/esm/node/cli/utils.js +1 -0
- package/dist/esm/node/plugin/index.d.ts +29 -1
- package/dist/esm/node/plugin/index.js +5 -9
- package/dist/esm/node/plugin/onLoad.js +7 -2
- package/dist/esm/node/plugin/plugins/autoFullBuild.js +35 -34
- package/dist/esm/node/plugin/plugins/baseUrls.js +2 -2
- package/dist/esm/node/plugin/plugins/buildApp.d.ts +3 -0
- package/dist/esm/node/plugin/plugins/buildApp.js +70 -0
- package/dist/esm/node/plugin/plugins/buildConfig/fixServerAssets.d.ts +0 -2
- package/dist/esm/node/plugin/plugins/buildConfig/fixServerAssets.js +11 -11
- package/dist/esm/node/plugin/plugins/buildConfig.js +16 -11
- package/dist/esm/node/plugin/plugins/buildEntry/index.d.ts +3 -3
- package/dist/esm/node/plugin/plugins/buildEntry/index.js +28 -24
- package/dist/esm/node/plugin/plugins/commonConfig.d.ts +8 -2
- package/dist/esm/node/plugin/plugins/commonConfig.js +7 -5
- package/dist/esm/node/plugin/plugins/extractAssetsPlugin.js +6 -3
- package/dist/esm/node/plugin/plugins/extractExportNamesPlugin.js +2 -1
- package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.d.ts +2 -2
- package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +14 -9
- package/dist/esm/node/plugin/plugins/importUserCode/index.js +11 -6
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/assertExtensions.d.ts +6 -0
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{assertExtensions.js → getVikeConfig/assertExtensions.js} +41 -36
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.d.ts +2 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +58 -21
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{getConfigFileExport.js → getVikeConfig/getConfigFileExport.js} +2 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.d.ts +39 -0
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.js +154 -0
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.d.ts +15 -9
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +41 -24
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.d.ts +8 -18
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.js +10 -65
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.d.ts +6 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +12 -6
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +10 -122
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +407 -594
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{debug.js → virtual-files/debug.js} +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{getVirtualFilePageConfigValuesAll.js → virtual-files/getVirtualFilePageConfigValuesAll.js} +12 -9
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{getVirtualFilePageConfigs.js → virtual-files/getVirtualFilePageConfigs.js} +13 -11
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{isRuntimeEnvMatch.d.ts → virtual-files/isRuntimeEnvMatch.d.ts} +1 -1
- package/dist/esm/node/plugin/plugins/packageJsonFile.js +1 -1
- package/dist/esm/node/plugin/plugins/previewConfig.js +5 -5
- package/dist/esm/node/plugin/plugins/setGlobalContext.js +4 -6
- package/dist/esm/node/plugin/shared/findPageFiles.js +2 -1
- package/dist/esm/node/plugin/shared/getFullBuildInlineConfig.d.ts +2 -0
- package/dist/esm/node/plugin/shared/getFullBuildInlineConfig.js +17 -0
- package/dist/esm/{utils → node/plugin/shared}/getOutDirs.d.ts +1 -1
- package/dist/esm/{utils → node/plugin/shared}/getOutDirs.js +52 -43
- package/dist/esm/node/plugin/{resolveClientEntriesDev.js → shared/resolveClientEntriesDev.js} +5 -8
- package/dist/esm/{utils → node/plugin/shared}/viteIsSSR.d.ts +2 -5
- package/dist/esm/{utils → node/plugin/shared}/viteIsSSR.js +2 -2
- package/dist/esm/node/plugin/utils.d.ts +0 -1
- package/dist/esm/node/plugin/utils.js +1 -2
- package/dist/esm/node/prerender/context.d.ts +11 -0
- package/dist/esm/node/prerender/context.js +29 -0
- package/dist/esm/node/prerender/resolvePrerenderConfig.d.ts +12 -0
- package/dist/esm/node/prerender/resolvePrerenderConfig.js +44 -0
- package/dist/esm/node/prerender/runPrerender.d.ts +42 -1
- package/dist/esm/node/prerender/runPrerender.js +90 -69
- package/dist/esm/node/prerender/utils.d.ts +2 -2
- package/dist/esm/node/prerender/utils.js +2 -2
- package/dist/esm/node/runtime/globalContext.d.ts +44 -36
- package/dist/esm/node/runtime/globalContext.js +223 -151
- package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.d.ts +1 -1
- package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +11 -7
- package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.d.ts +4 -1
- package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.js +2 -3
- package/dist/esm/node/runtime/html/injectAssets.d.ts +2 -0
- package/dist/esm/node/runtime/html/injectAssets.js +4 -4
- package/dist/esm/node/runtime/html/renderHtml.js +4 -5
- package/dist/esm/node/runtime/page-files/setup.js +1 -1
- package/dist/esm/node/runtime/renderPage/analyzePage.d.ts +2 -1
- package/dist/esm/node/runtime/renderPage/analyzePage.js +2 -3
- package/dist/esm/node/runtime/renderPage/getEarlyHints.js +1 -26
- package/dist/esm/node/runtime/renderPage/getPageAssets/sortPageAssetsForEarlyHintsHeader.d.ts +1 -1
- package/dist/esm/node/runtime/renderPage/getPageAssets/sortPageAssetsForEarlyHintsHeader.js +2 -4
- package/dist/esm/node/runtime/renderPage/getPageAssets.d.ts +3 -1
- package/dist/esm/node/runtime/renderPage/getPageAssets.js +4 -4
- package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.d.ts +2 -0
- package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.js +3 -5
- package/dist/esm/node/runtime/renderPage/isFontFallback.d.ts +3 -0
- package/dist/esm/node/runtime/renderPage/isFontFallback.js +27 -0
- package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.d.ts +2 -0
- package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +6 -5
- package/dist/esm/node/runtime/renderPage/log404/index.d.ts +2 -0
- package/dist/esm/node/runtime/renderPage/log404/index.js +1 -2
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +3 -0
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +26 -10
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +14 -10
- package/dist/esm/node/runtime/renderPage/resolveRedirects.d.ts +2 -0
- package/dist/esm/node/runtime/renderPage/resolveRedirects.js +5 -5
- package/dist/esm/node/runtime/renderPage.js +32 -30
- package/dist/esm/node/runtime/utils.d.ts +3 -3
- package/dist/esm/node/runtime/utils.js +3 -3
- package/dist/esm/node/runtime-dev/createDevMiddleware.js +5 -3
- package/dist/esm/node/shared/resolveBase.d.ts +5 -1
- package/dist/esm/node/shared/resolveBase.js +7 -0
- package/dist/esm/shared/getPageConfigsRuntime.d.ts +13 -0
- package/dist/esm/shared/getPageConfigsRuntime.js +18 -0
- package/dist/esm/shared/getPageContextUrlComputed.js +6 -1
- package/dist/esm/shared/getPageFiles/fileTypes.js +1 -2
- package/dist/esm/shared/getPageFiles/getAllPageIdFiles.js +0 -3
- package/dist/esm/shared/getPageFiles/getPageFileObject.js +0 -5
- package/dist/esm/shared/getPageFiles/parseGlobResults.d.ts +1 -1
- package/dist/esm/shared/getPageFiles/parseGlobResults.js +4 -3
- package/dist/esm/shared/getPageFiles.d.ts +0 -1
- package/dist/esm/shared/getPageFiles.js +0 -1
- package/dist/esm/shared/page-configs/Config.d.ts +83 -3
- package/dist/esm/shared/page-configs/PageConfig.d.ts +30 -18
- package/dist/esm/shared/page-configs/getPageConfigUserFriendly.d.ts +6 -8
- package/dist/esm/shared/page-configs/getPageConfigUserFriendly.js +15 -6
- package/dist/esm/shared/page-configs/loadConfigValues.js +6 -2
- package/dist/esm/shared/page-configs/serialize/serializeConfigValues.d.ts +7 -1
- package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +70 -19
- package/dist/esm/shared/route/loadPageRoutes.js +1 -0
- package/dist/esm/shared/utils.d.ts +0 -1
- package/dist/esm/shared/utils.js +0 -1
- package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/utils/assertSetup.js +1 -1
- package/dist/esm/utils/catchInfiniteLoop.d.ts +2 -0
- package/dist/esm/utils/catchInfiniteLoop.js +32 -0
- package/dist/esm/utils/debug.d.ts +1 -1
- package/dist/esm/utils/debug.js +8 -6
- package/dist/esm/utils/findFile.js +2 -1
- package/dist/esm/utils/isDev.js +3 -3
- package/dist/esm/utils/isFilePathAbsoluteFilesystem.js +1 -1
- package/dist/esm/utils/makePublicCopy.d.ts +3 -0
- package/dist/esm/utils/makePublicCopy.js +30 -0
- package/dist/esm/utils/objectAssignSafe.d.ts +1 -0
- package/dist/esm/utils/objectAssignSafe.js +4 -0
- package/dist/esm/utils/path.d.ts +14 -0
- package/dist/esm/utils/path.js +46 -0
- package/dist/esm/utils/projectInfo.d.ts +1 -1
- package/dist/esm/utils/requireResolve.js +1 -1
- package/package.json +2 -2
- package/dist/cjs/node/plugin/plugins/buildEntry/getVikeManifest.js +0 -17
- package/dist/cjs/node/plugin/plugins/importUserCode/addImportStatement.js +0 -29
- package/dist/cjs/node/prerender/isPrerenderAutoRunEnabled.js +0 -16
- package/dist/cjs/node/shared/assertPluginManifest.js +0 -20
- package/dist/cjs/node/shared/assertRuntimeManifest.js +0 -16
- package/dist/cjs/shared/assertPageFilePath.js +0 -11
- package/dist/cjs/shared/getPageFiles/getPageFiles.js +0 -48
- package/dist/cjs/utils/filesystemPathHandling.js +0 -18
- package/dist/cjs/utils/path-shim.js +0 -19
- package/dist/esm/node/plugin/plugins/buildEntry/getVikeManifest.d.ts +0 -5
- package/dist/esm/node/plugin/plugins/buildEntry/getVikeManifest.js +0 -15
- package/dist/esm/node/plugin/plugins/importUserCode/addImportStatement.d.ts +0 -14
- package/dist/esm/node/plugin/plugins/importUserCode/addImportStatement.js +0 -27
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/assertExtensions.d.ts +0 -5
- package/dist/esm/node/prerender/isPrerenderAutoRunEnabled.d.ts +0 -5
- package/dist/esm/node/prerender/isPrerenderAutoRunEnabled.js +0 -14
- package/dist/esm/node/shared/assertPluginManifest.d.ts +0 -12
- package/dist/esm/node/shared/assertPluginManifest.js +0 -18
- package/dist/esm/node/shared/assertRuntimeManifest.d.ts +0 -10
- package/dist/esm/node/shared/assertRuntimeManifest.js +0 -14
- package/dist/esm/shared/assertPageFilePath.d.ts +0 -2
- package/dist/esm/shared/assertPageFilePath.js +0 -9
- package/dist/esm/shared/getPageFiles/getPageFiles.d.ts +0 -15
- package/dist/esm/shared/getPageFiles/getPageFiles.js +0 -46
- package/dist/esm/utils/filesystemPathHandling.d.ts +0 -4
- package/dist/esm/utils/filesystemPathHandling.js +0 -16
- package/dist/esm/utils/path-shim.d.ts +0 -2
- package/dist/esm/utils/path-shim.js +0 -17
- /package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/{isRuntimeEnvMatch.js → virtual-files/isRuntimeEnvMatch.js} +0 -0
- /package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{getConfigFileExport.d.ts → getVikeConfig/getConfigFileExport.d.ts} +0 -0
- /package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{debug.d.ts → virtual-files/debug.d.ts} +0 -0
- /package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{getVirtualFilePageConfigValuesAll.d.ts → virtual-files/getVirtualFilePageConfigValuesAll.d.ts} +0 -0
- /package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{getVirtualFilePageConfigs.d.ts → virtual-files/getVirtualFilePageConfigs.d.ts} +0 -0
- /package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{isRuntimeEnvMatch.js → virtual-files/isRuntimeEnvMatch.js} +0 -0
- /package/dist/esm/node/plugin/{resolveClientEntriesDev.d.ts → shared/resolveClientEntriesDev.d.ts} +0 -0
|
@@ -7,31 +7,26 @@ exports.vikeConfigDependencies = void 0;
|
|
|
7
7
|
exports.getVikeConfig = getVikeConfig;
|
|
8
8
|
exports.getVikeConfig2 = getVikeConfig2;
|
|
9
9
|
exports.reloadVikeConfig = reloadVikeConfig;
|
|
10
|
-
exports.isVikeConfigFile = isVikeConfigFile;
|
|
11
10
|
exports.isV1Design = isV1Design;
|
|
12
|
-
exports.
|
|
11
|
+
exports.getConfVal = getConfVal;
|
|
12
|
+
exports.getConfigDefinitionOptional = getConfigDefinitionOptional;
|
|
13
13
|
const utils_js_1 = require("../../../utils.js");
|
|
14
|
-
const path_1 = __importDefault(require("path"));
|
|
15
14
|
const configDefinitionsBuiltIn_js_1 = require("./getVikeConfig/configDefinitionsBuiltIn.js");
|
|
16
15
|
const filesystemRouting_js_1 = require("./getVikeConfig/filesystemRouting.js");
|
|
17
|
-
const transpileAndExecuteFile_js_1 = require("./getVikeConfig/transpileAndExecuteFile.js");
|
|
18
16
|
const isConfigInvalid_js_1 = require("../../../../runtime/renderPage/isConfigInvalid.js");
|
|
19
17
|
const globalContext_js_1 = require("../../../../runtime/globalContext.js");
|
|
20
18
|
const loggerNotProd_js_1 = require("../../../shared/loggerNotProd.js");
|
|
21
19
|
const removeSuperfluousViteLog_js_1 = require("../../../shared/loggerVite/removeSuperfluousViteLog.js");
|
|
22
20
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
23
21
|
const getConfigDefinedAt_js_1 = require("../../../../../shared/page-configs/getConfigDefinedAt.js");
|
|
24
|
-
const crawlPlusFiles_js_1 = require("./getVikeConfig/crawlPlusFiles.js");
|
|
25
|
-
const getConfigFileExport_js_1 = require("./getConfigFileExport.js");
|
|
26
22
|
const loadFileAtConfigTime_js_1 = require("./getVikeConfig/loadFileAtConfigTime.js");
|
|
27
23
|
const resolvePointerImport_js_1 = require("./getVikeConfig/resolvePointerImport.js");
|
|
28
24
|
const getFilePath_js_1 = require("../../../shared/getFilePath.js");
|
|
29
25
|
const getConfigValueBuildTime_js_1 = require("../../../../../shared/page-configs/getConfigValueBuildTime.js");
|
|
30
|
-
const assertExtensions_js_1 = require("./assertExtensions.js");
|
|
26
|
+
const assertExtensions_js_1 = require("./getVikeConfig/assertExtensions.js");
|
|
31
27
|
const getPageConfigUserFriendly_js_1 = require("../../../../../shared/page-configs/getPageConfigUserFriendly.js");
|
|
32
28
|
const serializeConfigValues_js_1 = require("../../../../../shared/page-configs/serialize/serializeConfigValues.js");
|
|
33
|
-
const
|
|
34
|
-
const configDefinitionsBuiltInGlobal = getConfigDefinitionsBuiltInGlobal();
|
|
29
|
+
const getPlusFilesAll_js_1 = require("./getVikeConfig/getPlusFilesAll.js");
|
|
35
30
|
(0, utils_js_1.assertIsNotProductionRuntime)();
|
|
36
31
|
let restartVite = false;
|
|
37
32
|
let wasConfigInvalid = null;
|
|
@@ -43,7 +38,6 @@ function reloadVikeConfig(config) {
|
|
|
43
38
|
const vikeVitePluginOptions = config._vikeVitePluginOptions;
|
|
44
39
|
(0, utils_js_1.assert)(vikeVitePluginOptions);
|
|
45
40
|
vikeConfigDependencies.clear();
|
|
46
|
-
(0, resolvePointerImport_js_1.clearFilesEnvMap)();
|
|
47
41
|
vikeConfigPromise = loadVikeConfig_withErrorHandling(userRootDir, true, vikeVitePluginOptions);
|
|
48
42
|
handleReloadSideEffects();
|
|
49
43
|
}
|
|
@@ -102,116 +96,6 @@ async function isV1Design(config) {
|
|
|
102
96
|
const isV1Design = pageConfigs.length > 0;
|
|
103
97
|
return isV1Design;
|
|
104
98
|
}
|
|
105
|
-
async function loadInterfaceFiles(userRootDir) {
|
|
106
|
-
const plusFiles = await findPlusFiles(userRootDir, null);
|
|
107
|
-
const configFiles = [];
|
|
108
|
-
const valueFiles = [];
|
|
109
|
-
plusFiles.forEach((f) => {
|
|
110
|
-
if (getConfigName(f.filePathAbsoluteFilesystem) === 'config') {
|
|
111
|
-
configFiles.push(f);
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
valueFiles.push(f);
|
|
115
|
-
}
|
|
116
|
-
});
|
|
117
|
-
let interfaceFilesByLocationId = {};
|
|
118
|
-
await Promise.all([
|
|
119
|
-
// Config files
|
|
120
|
-
...configFiles.map(async (filePath) => {
|
|
121
|
-
const { filePathAbsoluteUserRootDir } = filePath;
|
|
122
|
-
(0, utils_js_1.assert)(filePathAbsoluteUserRootDir);
|
|
123
|
-
const { configFile, extendsConfigs } = await (0, loadFileAtConfigTime_js_1.loadConfigFile)(filePath, userRootDir, [], false);
|
|
124
|
-
(0, utils_js_1.assert)(filePath.filePathAbsoluteUserRootDir);
|
|
125
|
-
const locationId = (0, filesystemRouting_js_1.getLocationId)(filePathAbsoluteUserRootDir);
|
|
126
|
-
const interfaceFile = getInterfaceFileFromConfigFile(configFile, false, locationId);
|
|
127
|
-
interfaceFilesByLocationId[locationId] = interfaceFilesByLocationId[locationId] ?? [];
|
|
128
|
-
interfaceFilesByLocationId[locationId].push(interfaceFile);
|
|
129
|
-
extendsConfigs.forEach((extendsConfig) => {
|
|
130
|
-
/* We purposely use the same locationId because the Vike extension's config should only apply to where it's being extended from, for example:
|
|
131
|
-
```js
|
|
132
|
-
// /pages/admin/+config.js
|
|
133
|
-
|
|
134
|
-
import vikeVue from 'vike-vue/config'
|
|
135
|
-
// Should only apply to /pages/admin/**
|
|
136
|
-
export default { extends: [vikeVue] }
|
|
137
|
-
```
|
|
138
|
-
```js
|
|
139
|
-
// /pages/marketing/+config.js
|
|
140
|
-
|
|
141
|
-
import vikeReact from 'vike-react/config'
|
|
142
|
-
// Should only apply to /pages/marketing/**
|
|
143
|
-
export default { extends: [vikeReact] }
|
|
144
|
-
```
|
|
145
|
-
*/
|
|
146
|
-
const interfaceFile = getInterfaceFileFromConfigFile(extendsConfig, true, locationId);
|
|
147
|
-
(0, assertExtensions_js_1.assertExtensionsConventions)(interfaceFile);
|
|
148
|
-
interfaceFilesByLocationId[locationId].push(interfaceFile);
|
|
149
|
-
});
|
|
150
|
-
}),
|
|
151
|
-
// Value files
|
|
152
|
-
...valueFiles.map(async (filePath) => {
|
|
153
|
-
const { filePathAbsoluteUserRootDir } = filePath;
|
|
154
|
-
(0, utils_js_1.assert)(filePathAbsoluteUserRootDir);
|
|
155
|
-
const configName = getConfigName(filePathAbsoluteUserRootDir);
|
|
156
|
-
(0, utils_js_1.assert)(configName);
|
|
157
|
-
const locationId = (0, filesystemRouting_js_1.getLocationId)(filePathAbsoluteUserRootDir);
|
|
158
|
-
const interfaceFile = {
|
|
159
|
-
locationId,
|
|
160
|
-
filePath,
|
|
161
|
-
fileExportsByConfigName: {
|
|
162
|
-
[configName]: {}
|
|
163
|
-
},
|
|
164
|
-
isConfigFile: false,
|
|
165
|
-
isValueFile: true,
|
|
166
|
-
configName
|
|
167
|
-
};
|
|
168
|
-
{
|
|
169
|
-
// We don't have access to the custom config definitions defined by the user yet.
|
|
170
|
-
// - If `configDef` is `undefined` => we load the file +{configName}.js later.
|
|
171
|
-
// - We already need to load +meta.js here (to get the custom config definitions defined by the user)
|
|
172
|
-
const configDef = getConfigDefinitionOptional(configDefinitionsBuiltIn, configName);
|
|
173
|
-
if (configDef && isLoadableAtBuildTime(configDef)) {
|
|
174
|
-
await (0, loadFileAtConfigTime_js_1.loadValueFile)(interfaceFile, configName, userRootDir);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
{
|
|
178
|
-
interfaceFilesByLocationId[locationId] = interfaceFilesByLocationId[locationId] ?? [];
|
|
179
|
-
interfaceFilesByLocationId[locationId].push(interfaceFile);
|
|
180
|
-
}
|
|
181
|
-
})
|
|
182
|
-
]);
|
|
183
|
-
assertAllConfigsAreKnown(interfaceFilesByLocationId);
|
|
184
|
-
return interfaceFilesByLocationId;
|
|
185
|
-
}
|
|
186
|
-
function getInterfaceFileFromConfigFile(configFile, isConfigExtend, locationId) {
|
|
187
|
-
const { fileExports, filePath, extendsFilePaths } = configFile;
|
|
188
|
-
const interfaceFile = {
|
|
189
|
-
locationId,
|
|
190
|
-
filePath,
|
|
191
|
-
fileExportsByConfigName: {},
|
|
192
|
-
isConfigFile: true,
|
|
193
|
-
isValueFile: false,
|
|
194
|
-
isConfigExtend,
|
|
195
|
-
extendsFilePaths
|
|
196
|
-
};
|
|
197
|
-
const fileExport = (0, getConfigFileExport_js_1.getConfigFileExport)(fileExports, filePath.filePathToShowToUser);
|
|
198
|
-
Object.entries(fileExport).forEach(([configName, configValue]) => {
|
|
199
|
-
interfaceFile.fileExportsByConfigName[configName] = { configValue };
|
|
200
|
-
});
|
|
201
|
-
return interfaceFile;
|
|
202
|
-
}
|
|
203
|
-
/** Show error message upon unknown config */
|
|
204
|
-
function assertAllConfigsAreKnown(interfaceFilesByLocationId) {
|
|
205
|
-
(0, utils_js_1.objectEntries)(interfaceFilesByLocationId).forEach(([locationId, interfaceFiles]) => {
|
|
206
|
-
const interfaceFilesRelevant = getInterfaceFilesRelevant(interfaceFilesByLocationId, locationId);
|
|
207
|
-
const configDefinitions = getConfigDefinitions(interfaceFilesRelevant);
|
|
208
|
-
interfaceFiles.forEach((interfaceFile) => {
|
|
209
|
-
Object.keys(interfaceFile.fileExportsByConfigName).forEach((configName) => {
|
|
210
|
-
assertConfigExists(configName, Object.keys(configDefinitions), interfaceFile.filePath.filePathToShowToUser);
|
|
211
|
-
});
|
|
212
|
-
});
|
|
213
|
-
});
|
|
214
|
-
}
|
|
215
99
|
async function loadVikeConfig_withErrorHandling(userRootDir, isDev, vikeVitePluginOptions, doNotRestartViteOnError) {
|
|
216
100
|
let hasError = false;
|
|
217
101
|
let ret;
|
|
@@ -248,7 +132,6 @@ async function loadVikeConfig_withErrorHandling(userRootDir, isDev, vikeVitePlug
|
|
|
248
132
|
configDefinitions: {},
|
|
249
133
|
configValueSources: {}
|
|
250
134
|
},
|
|
251
|
-
vikeConfigGlobal: resolveVikeConfigGlobal({}, {}),
|
|
252
135
|
global: (0, getPageConfigUserFriendly_js_1.getPageConfigUserFriendlyNew)({ configValues: {} })
|
|
253
136
|
};
|
|
254
137
|
return dummyData;
|
|
@@ -256,149 +139,156 @@ async function loadVikeConfig_withErrorHandling(userRootDir, isDev, vikeVitePlug
|
|
|
256
139
|
}
|
|
257
140
|
}
|
|
258
141
|
async function loadVikeConfig(userRootDir, vikeVitePluginOptions) {
|
|
259
|
-
const
|
|
260
|
-
const
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
const
|
|
269
|
-
|
|
270
|
-
|
|
142
|
+
const esbuildCache = {};
|
|
143
|
+
const plusFilesAll = await (0, getPlusFilesAll_js_1.getPlusFilesAll)(userRootDir, esbuildCache);
|
|
144
|
+
assertKnownConfigs(plusFilesAll);
|
|
145
|
+
const configDefinitionsResolved = await resolveConfigDefinitions(plusFilesAll, userRootDir, esbuildCache);
|
|
146
|
+
const { pageConfigGlobal, pageConfigs } = getPageConfigsBuildTime(configDefinitionsResolved, plusFilesAll, userRootDir);
|
|
147
|
+
// interop vike(options) in vite.config.js
|
|
148
|
+
temp_interopVikeVitePlugin(pageConfigGlobal, vikeVitePluginOptions, userRootDir);
|
|
149
|
+
// global
|
|
150
|
+
const configValues = getConfigValues(pageConfigGlobal);
|
|
151
|
+
const global = (0, getPageConfigUserFriendly_js_1.getPageConfigUserFriendlyNew)({ configValues });
|
|
152
|
+
return { pageConfigs, pageConfigGlobal, global };
|
|
153
|
+
}
|
|
154
|
+
async function resolveConfigDefinitions(plusFilesAll, userRootDir, esbuildCache) {
|
|
155
|
+
const configDefinitionsGlobal = getConfigDefinitions(
|
|
156
|
+
// We use `plusFilesAll` in order to allow local Vike extensions to create global configs.
|
|
157
|
+
sortForGlobal(plusFilesAll), (configDef) => !!configDef.global);
|
|
158
|
+
await loadCustomConfigBuildTimeFiles(plusFilesAll, configDefinitionsGlobal, userRootDir, esbuildCache);
|
|
159
|
+
const configDefinitionsLocal = {};
|
|
160
|
+
await Promise.all((0, utils_js_1.objectEntries)(plusFilesAll).map(async ([locationId, plusFiles]) => {
|
|
161
|
+
const plusFilesRelevant = getPlusFilesRelevant(plusFilesAll, locationId);
|
|
162
|
+
const configDefinitions = getConfigDefinitions(plusFilesRelevant, (configDef) => configDef.global !== true);
|
|
163
|
+
await loadCustomConfigBuildTimeFiles(plusFiles, configDefinitions, userRootDir, esbuildCache);
|
|
164
|
+
configDefinitionsLocal[locationId] = { configDefinitions, plusFiles, plusFilesRelevant };
|
|
271
165
|
}));
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
(0, utils_js_1.objectEntries)(interfaceFilesGlobal).forEach(([locationId, interfaceFiles]) => {
|
|
276
|
-
(0, utils_js_1.assert)((0, filesystemRouting_js_1.isGlobalLocation)(locationId, locationIds));
|
|
277
|
-
interfaceFiles.forEach(({ filePath: { filePathAbsoluteUserRootDir } }) => {
|
|
278
|
-
if (filePathAbsoluteUserRootDir) {
|
|
279
|
-
interfaceFilesGlobalPaths.push(filePathAbsoluteUserRootDir);
|
|
280
|
-
}
|
|
281
|
-
});
|
|
282
|
-
});
|
|
283
|
-
const globalPaths = Array.from(new Set(interfaceFilesGlobalPaths.map((p) => path_1.default.posix.dirname(p))));
|
|
284
|
-
(0, utils_js_1.objectEntries)(interfaceFilesByLocationId).forEach(([locationId, interfaceFiles]) => {
|
|
285
|
-
interfaceFiles.forEach((interfaceFile) => {
|
|
286
|
-
Object.keys(interfaceFile.fileExportsByConfigName).forEach((configName) => {
|
|
287
|
-
if (!(0, filesystemRouting_js_1.isGlobalLocation)(locationId, locationIds) && isGlobalConfig(configName)) {
|
|
288
|
-
(0, utils_js_1.assertUsage)(false, [
|
|
289
|
-
`${interfaceFile.filePath.filePathToShowToUser} defines the config ${picocolors_1.default.cyan(configName)} which is global:`,
|
|
290
|
-
globalPaths.length
|
|
291
|
-
? `define ${picocolors_1.default.cyan(configName)} in ${(0, utils_js_1.joinEnglish)(globalPaths, 'or')} instead`
|
|
292
|
-
: `create a global config (e.g. /pages/+config.js) and define ${picocolors_1.default.cyan(configName)} there instead`
|
|
293
|
-
].join(' '));
|
|
294
|
-
}
|
|
295
|
-
});
|
|
296
|
-
});
|
|
297
|
-
});
|
|
298
|
-
}
|
|
299
|
-
const pageConfigGlobalValues = {};
|
|
300
|
-
const pageConfigGlobal = {
|
|
301
|
-
configDefinitions: configDefinitionsBuiltInGlobal,
|
|
302
|
-
configValueSources: {}
|
|
166
|
+
const configDefinitionsResolved = {
|
|
167
|
+
configDefinitionsGlobal,
|
|
168
|
+
configDefinitionsLocal
|
|
303
169
|
};
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
if (
|
|
312
|
-
(0,
|
|
170
|
+
return configDefinitionsResolved;
|
|
171
|
+
}
|
|
172
|
+
// Load value files (with `env.config===true`) of *custom* configs.
|
|
173
|
+
// - The value files of *built-in* configs are already loaded at `getPlusFilesAll()`.
|
|
174
|
+
async function loadCustomConfigBuildTimeFiles(plusFiles, configDefinitions, userRootDir, esbuildCache) {
|
|
175
|
+
const plusFileList = Object.values(plusFiles).flat(1);
|
|
176
|
+
await Promise.all(plusFileList.map(async (plusFile) => {
|
|
177
|
+
if (!plusFile.isConfigFile) {
|
|
178
|
+
await (0, loadFileAtConfigTime_js_1.loadValueFile)(plusFile, configDefinitions, userRootDir, esbuildCache);
|
|
313
179
|
}
|
|
314
180
|
else {
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
return;
|
|
319
|
-
pageConfigGlobalValues[configName] = configValueSource.value;
|
|
181
|
+
await Promise.all(Object.entries(plusFile.pointerImportsByConfigName).map(async ([configName, pointerImport]) => {
|
|
182
|
+
await (0, loadFileAtConfigTime_js_1.loadPointerImport)(pointerImport, userRootDir, configName, configDefinitions, esbuildCache);
|
|
183
|
+
}));
|
|
320
184
|
}
|
|
321
185
|
}));
|
|
322
|
-
const vikeConfigGlobal = resolveVikeConfigGlobal(vikeVitePluginOptions, pageConfigGlobalValues);
|
|
323
|
-
{
|
|
324
|
-
(0, utils_js_1.assert)((0, utils_js_1.isObject)(vikeVitePluginOptions));
|
|
325
|
-
Object.entries(vikeVitePluginOptions).forEach(([configName, value]) => {
|
|
326
|
-
var _a;
|
|
327
|
-
(0, utils_js_1.assert)((0, utils_js_1.includes)((0, utils_js_1.objectKeys)(configDefinitionsBuiltInGlobal), configName));
|
|
328
|
-
const configDef = configDefinitionsBuiltInGlobal[configName];
|
|
329
|
-
const sources = ((_a = pageConfigGlobal.configValueSources)[configName] ?? (_a[configName] = []));
|
|
330
|
-
sources.push({
|
|
331
|
-
value,
|
|
332
|
-
configEnv: configDef.env,
|
|
333
|
-
definedAtFilePath: {
|
|
334
|
-
...(0, getFilePath_js_1.getFilePathResolved)({
|
|
335
|
-
userRootDir,
|
|
336
|
-
filePathAbsoluteUserRootDir: '/vite.config.js'
|
|
337
|
-
}),
|
|
338
|
-
fileExportPathToShowToUser: null
|
|
339
|
-
},
|
|
340
|
-
locationId: '/',
|
|
341
|
-
isOverriden: configDef.cumulative ? false : sources.length > 0,
|
|
342
|
-
valueIsImportedAtRuntime: false,
|
|
343
|
-
valueIsDefinedByPlusFile: false
|
|
344
|
-
});
|
|
345
|
-
});
|
|
346
|
-
}
|
|
347
|
-
const configValues = getConfigValues(pageConfigGlobal);
|
|
348
|
-
const global = (0, getPageConfigUserFriendly_js_1.getPageConfigUserFriendlyNew)({ configValues });
|
|
349
|
-
return { pageConfigGlobal, vikeConfigGlobal, global };
|
|
350
186
|
}
|
|
351
|
-
|
|
352
|
-
const
|
|
353
|
-
.
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
(
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
}));
|
|
376
|
-
let configValueSources = {};
|
|
377
|
-
await Promise.all((0, utils_js_1.objectEntries)(configDefinitions)
|
|
378
|
-
.filter(([configName]) => !isGlobalConfig(configName))
|
|
379
|
-
.map(async ([configName, configDef]) => {
|
|
380
|
-
const sources = await resolveConfigValueSources(configName, configDef, interfaceFilesRelevant, userRootDir, importedFilesLoaded);
|
|
187
|
+
function getPageConfigsBuildTime(configDefinitionsResolved, plusFilesAll, userRootDir) {
|
|
188
|
+
const pageConfigGlobal = {
|
|
189
|
+
configDefinitions: configDefinitionsResolved.configDefinitionsGlobal,
|
|
190
|
+
configValueSources: {}
|
|
191
|
+
};
|
|
192
|
+
(0, utils_js_1.objectEntries)(configDefinitionsResolved.configDefinitionsGlobal).forEach(([configName, configDef]) => {
|
|
193
|
+
const sources = resolveConfigValueSources(configName, configDef,
|
|
194
|
+
// We use `plusFilesAll` in order to allow local Vike extensions to set the value of global configs (e.g. `vite`).
|
|
195
|
+
sortForGlobal(plusFilesAll), userRootDir, true);
|
|
196
|
+
if (sources.length === 0)
|
|
197
|
+
return;
|
|
198
|
+
pageConfigGlobal.configValueSources[configName] = sources;
|
|
199
|
+
});
|
|
200
|
+
assertPageConfigGlobal(pageConfigGlobal, plusFilesAll);
|
|
201
|
+
const pageConfigs = (0, utils_js_1.objectEntries)(configDefinitionsResolved.configDefinitionsLocal)
|
|
202
|
+
.filter(([_locationId, { plusFiles }]) => isDefiningPage(plusFiles))
|
|
203
|
+
.map(([locationId, { configDefinitions, plusFilesRelevant }]) => {
|
|
204
|
+
const configDefinitionsLocal = configDefinitions;
|
|
205
|
+
const configValueSources = {};
|
|
206
|
+
(0, utils_js_1.objectEntries)(configDefinitionsLocal)
|
|
207
|
+
.filter(([_configName, configDef]) => configDef.global !== true)
|
|
208
|
+
.forEach(([configName, configDef]) => {
|
|
209
|
+
const sources = resolveConfigValueSources(configName, configDef, plusFilesRelevant, userRootDir, false);
|
|
210
|
+
// sortConfigValueSources(sources, locationId)
|
|
381
211
|
if (sources.length === 0)
|
|
382
212
|
return;
|
|
383
213
|
configValueSources[configName] = sources;
|
|
384
|
-
})
|
|
385
|
-
configValueSources = sortConfigValueSources(configValueSources, locationId);
|
|
214
|
+
});
|
|
386
215
|
const { routeFilesystem, isErrorPage } = determineRouteFilesystem(locationId, configValueSources);
|
|
387
|
-
applyEffectsAll(configValueSources,
|
|
388
|
-
const configValuesComputed = getComputed(configValueSources,
|
|
389
|
-
assertUsageGlobalConfigs(interfaceFilesRelevantList, configDefinitions, interfaceFilesByLocationId);
|
|
216
|
+
applyEffectsAll(configValueSources, configDefinitionsLocal);
|
|
217
|
+
const configValuesComputed = getComputed(configValueSources, configDefinitionsLocal);
|
|
390
218
|
const pageConfig = {
|
|
391
219
|
pageId: locationId,
|
|
392
220
|
isErrorPage,
|
|
393
221
|
routeFilesystem,
|
|
394
|
-
configDefinitions,
|
|
222
|
+
configDefinitions: configDefinitionsLocal,
|
|
223
|
+
plusFiles: plusFilesRelevant,
|
|
395
224
|
configValueSources,
|
|
396
225
|
configValuesComputed
|
|
397
226
|
};
|
|
398
227
|
return pageConfig;
|
|
399
|
-
})
|
|
228
|
+
});
|
|
400
229
|
assertPageConfigs(pageConfigs);
|
|
401
|
-
return pageConfigs;
|
|
230
|
+
return { pageConfigs, pageConfigGlobal };
|
|
231
|
+
}
|
|
232
|
+
function assertPageConfigGlobal(pageConfigGlobal, plusFilesAll) {
|
|
233
|
+
Object.entries(pageConfigGlobal.configValueSources).forEach(([configName, sources]) => {
|
|
234
|
+
assertGlobalConfigLocation(configName, sources, plusFilesAll, pageConfigGlobal.configDefinitions);
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
function assertGlobalConfigLocation(configName, sources, plusFilesAll, configDefinitionsGlobal) {
|
|
238
|
+
const locationIdsAll = (0, utils_js_1.objectKeys)(plusFilesAll);
|
|
239
|
+
// Determine existing global +config.js files
|
|
240
|
+
const configFilePathsGlobal = [];
|
|
241
|
+
const plusFilesGlobal = Object.values((0, utils_js_1.objectFromEntries)((0, utils_js_1.objectEntries)(plusFilesAll).filter(([locationId]) => (0, filesystemRouting_js_1.isGlobalLocation)(locationId, locationIdsAll)))).flat();
|
|
242
|
+
plusFilesGlobal
|
|
243
|
+
.filter((i) => i.isConfigFile)
|
|
244
|
+
.forEach((plusFile) => {
|
|
245
|
+
const { filePathAbsoluteUserRootDir } = plusFile.filePath;
|
|
246
|
+
if (filePathAbsoluteUserRootDir) {
|
|
247
|
+
configFilePathsGlobal.push(filePathAbsoluteUserRootDir);
|
|
248
|
+
}
|
|
249
|
+
});
|
|
250
|
+
// Call assertWarning()
|
|
251
|
+
sources.forEach((source) => {
|
|
252
|
+
const { plusFile } = source;
|
|
253
|
+
// It's `null` when the config is defined by `vike(options)` in vite.config.js
|
|
254
|
+
(0, utils_js_1.assert)(plusFile);
|
|
255
|
+
const { filePathAbsoluteUserRootDir } = plusFile.filePath;
|
|
256
|
+
// Allow local Vike extensions to set gloabl configs (`filePathAbsoluteUserRootDir===null` for Vike extension)
|
|
257
|
+
if (!filePathAbsoluteUserRootDir)
|
|
258
|
+
return;
|
|
259
|
+
(0, utils_js_1.assert)(!plusFile.isExtensionConfig);
|
|
260
|
+
if (!(0, filesystemRouting_js_1.isGlobalLocation)(source.locationId, locationIdsAll)) {
|
|
261
|
+
const configDef = configDefinitionsGlobal[configName];
|
|
262
|
+
(0, utils_js_1.assert)(configDef);
|
|
263
|
+
const isConditionallyGlobal = (0, utils_js_1.isCallable)(configDef.global);
|
|
264
|
+
const errBeg = `${filePathAbsoluteUserRootDir} (which is a local config file) sets the config ${picocolors_1.default.cyan(configName)}`;
|
|
265
|
+
const errMid = !isConditionallyGlobal
|
|
266
|
+
? "but it's a global config"
|
|
267
|
+
: 'to a value that is global';
|
|
268
|
+
const what = isConditionallyGlobal ? 'global values' : picocolors_1.default.cyan(configName);
|
|
269
|
+
const errEnd = configFilePathsGlobal.length > 0
|
|
270
|
+
? `define ${what} at a global config file such as ${(0, utils_js_1.joinEnglish)(configFilePathsGlobal, 'or')} instead`
|
|
271
|
+
: `create a global config file (e.g. /pages/+config.js) and define ${what} there instead`;
|
|
272
|
+
// When updating this error message => also update error message at https://vike.dev/warning/global-config
|
|
273
|
+
const errMsg = `${errBeg} ${errMid}: ${errEnd} (https://vike.dev/warning/global-config).`;
|
|
274
|
+
(0, utils_js_1.assertWarning)(false, errMsg, { onlyOnce: true });
|
|
275
|
+
}
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
function assertPageConfigs(pageConfigs) {
|
|
279
|
+
pageConfigs.forEach((pageConfig) => {
|
|
280
|
+
(0, assertExtensions_js_1.assertExtensionsRequire)(pageConfig);
|
|
281
|
+
assertOnBeforeRenderEnv(pageConfig);
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
function assertOnBeforeRenderEnv(pageConfig) {
|
|
285
|
+
const onBeforeRenderConfig = pageConfig.configValueSources.onBeforeRender?.[0];
|
|
286
|
+
if (!onBeforeRenderConfig)
|
|
287
|
+
return;
|
|
288
|
+
const onBeforeRenderEnv = onBeforeRenderConfig.configEnv;
|
|
289
|
+
const isClientRouting = (0, getConfigValueBuildTime_js_1.getConfigValueBuildTime)(pageConfig, 'clientRouting', 'boolean');
|
|
290
|
+
// When using Server Routing, loading a onBeforeRender() hook on the client-side hasn't any effect (the Server Routing's client runtime never calls it); it unnecessarily bloats client bundle sizes
|
|
291
|
+
(0, utils_js_1.assertUsage)(!(onBeforeRenderEnv.client && !isClientRouting), `Page ${pageConfig.pageId} has an onBeforeRender() hook with env ${picocolors_1.default.cyan(JSON.stringify(onBeforeRenderEnv))} which doesn't make sense because the page is using Server Routing: onBeforeRender() can be run in the client only when using Client Routing.`);
|
|
402
292
|
}
|
|
403
293
|
function getConfigValues(pageConfig) {
|
|
404
294
|
const configValues = {};
|
|
@@ -428,178 +318,150 @@ function getConfigValues(pageConfig) {
|
|
|
428
318
|
});
|
|
429
319
|
return configValues;
|
|
430
320
|
}
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
const
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
(0, utils_js_1.objectEntries)(interfaceFilesGlobal).forEach(([locationId, interfaceFiles]) => {
|
|
456
|
-
(0, utils_js_1.assert)((0, filesystemRouting_js_1.isGlobalLocation)(locationId, locationIds));
|
|
457
|
-
interfaceFiles.forEach((interfaceFile) => {
|
|
458
|
-
if (!interfaceFile.isConfigFile)
|
|
459
|
-
return;
|
|
460
|
-
const { filePath: { filePathAbsoluteUserRootDir } } = interfaceFile;
|
|
461
|
-
if (filePathAbsoluteUserRootDir) {
|
|
462
|
-
configFilesGlobal.push(filePathAbsoluteUserRootDir);
|
|
463
|
-
}
|
|
464
|
-
});
|
|
465
|
-
});
|
|
466
|
-
(0, utils_js_1.assertUsage)(false, [
|
|
467
|
-
`${interfaceFile.filePath.filePathToShowToUser} sets the config ${picocolors_1.default.cyan(configName)} but it's a global config:`,
|
|
468
|
-
configFilesGlobal.length > 0
|
|
469
|
-
? `define ${picocolors_1.default.cyan(configName)} at ${(0, utils_js_1.joinEnglish)(configFilesGlobal, 'or')} instead.`
|
|
470
|
-
: `create a global config (e.g. /pages/+config.js) and define ${picocolors_1.default.cyan(configName)} there instead.`
|
|
471
|
-
].join(' '));
|
|
472
|
-
}
|
|
473
|
-
}
|
|
321
|
+
function temp_interopVikeVitePlugin(pageConfigGlobal, vikeVitePluginOptions, userRootDir) {
|
|
322
|
+
(0, utils_js_1.assert)((0, utils_js_1.isObject)(vikeVitePluginOptions));
|
|
323
|
+
(0, utils_js_1.assertWarning)(Object.keys(vikeVitePluginOptions).length === 0, `Define Vike settings in +config.js instead of vite.config.js ${picocolors_1.default.underline('https://vike.dev/migration/settings')}`, { onlyOnce: true });
|
|
324
|
+
Object.entries(vikeVitePluginOptions).forEach(([configName, value]) => {
|
|
325
|
+
var _a;
|
|
326
|
+
(0, utils_js_1.assert)((0, utils_js_1.includes)((0, utils_js_1.objectKeys)(configDefinitionsBuiltIn_js_1.configDefinitionsBuiltIn), configName));
|
|
327
|
+
const configDef = configDefinitionsBuiltIn_js_1.configDefinitionsBuiltIn[configName];
|
|
328
|
+
const sources = ((_a = pageConfigGlobal.configValueSources)[configName] ?? (_a[configName] = []));
|
|
329
|
+
sources.push({
|
|
330
|
+
valueIsLoaded: true,
|
|
331
|
+
value,
|
|
332
|
+
configEnv: configDef.env,
|
|
333
|
+
definedAtFilePath: {
|
|
334
|
+
...(0, getFilePath_js_1.getFilePathResolved)({
|
|
335
|
+
userRootDir,
|
|
336
|
+
filePathAbsoluteUserRootDir: '/vite.config.js'
|
|
337
|
+
}),
|
|
338
|
+
fileExportPathToShowToUser: null
|
|
339
|
+
},
|
|
340
|
+
locationId: '/',
|
|
341
|
+
plusFile: null,
|
|
342
|
+
isOverriden: configDef.cumulative ? false : sources.length > 0,
|
|
343
|
+
valueIsImportedAtRuntime: false,
|
|
344
|
+
valueIsDefinedByPlusFile: false
|
|
474
345
|
});
|
|
475
346
|
});
|
|
476
347
|
}
|
|
477
|
-
function
|
|
478
|
-
|
|
479
|
-
assertOnBeforeRenderEnv(pageConfig);
|
|
480
|
-
});
|
|
481
|
-
}
|
|
482
|
-
function assertOnBeforeRenderEnv(pageConfig) {
|
|
483
|
-
const onBeforeRenderConfig = pageConfig.configValueSources.onBeforeRender?.[0];
|
|
484
|
-
if (!onBeforeRenderConfig)
|
|
485
|
-
return;
|
|
486
|
-
const onBeforeRenderEnv = onBeforeRenderConfig.configEnv;
|
|
487
|
-
const isClientRouting = (0, getConfigValueBuildTime_js_1.getConfigValueBuildTime)(pageConfig, 'clientRouting', 'boolean');
|
|
488
|
-
// When using Server Routing, loading a onBeforeRender() hook on the client-side hasn't any effect (the Server Routing's client runtime never calls it); it unnecessarily bloats client bundle sizes
|
|
489
|
-
(0, utils_js_1.assertUsage)(!(onBeforeRenderEnv.client && !isClientRouting), `Page ${pageConfig.pageId} has an onBeforeRender() hook with env ${picocolors_1.default.cyan(JSON.stringify(onBeforeRenderEnv))} which doesn't make sense because the page is using Server Routing: onBeforeRender() can be run in the client only when using Client Routing.`);
|
|
490
|
-
}
|
|
491
|
-
function interfacefileIsAlreaydLoaded(interfaceFile) {
|
|
492
|
-
const configMapValues = Object.values(interfaceFile.fileExportsByConfigName);
|
|
493
|
-
const isAlreadyLoaded = configMapValues.some((conf) => 'configValue' in conf);
|
|
494
|
-
if (isAlreadyLoaded) {
|
|
495
|
-
(0, utils_js_1.assert)(configMapValues.every((conf) => 'configValue' in conf));
|
|
496
|
-
}
|
|
497
|
-
return isAlreadyLoaded;
|
|
498
|
-
}
|
|
499
|
-
function getInterfaceFilesRelevant(interfaceFilesByLocationId, locationIdPage) {
|
|
500
|
-
const interfaceFilesRelevant = Object.fromEntries((0, utils_js_1.objectEntries)(interfaceFilesByLocationId)
|
|
348
|
+
function getPlusFilesRelevant(plusFilesAll, locationIdPage) {
|
|
349
|
+
const plusFilesRelevant = Object.fromEntries((0, utils_js_1.objectEntries)(plusFilesAll)
|
|
501
350
|
.filter(([locationId]) => {
|
|
502
351
|
return (0, filesystemRouting_js_1.isInherited)(locationId, locationIdPage);
|
|
503
352
|
})
|
|
353
|
+
// Sort after config inheritance.
|
|
354
|
+
// - Together with getPlusFilesOrdered() this implements the whole order of config inheritance.
|
|
355
|
+
// - See sortForGlobal() for global configs order.
|
|
504
356
|
.sort(([locationId1], [locationId2]) => (0, filesystemRouting_js_1.sortAfterInheritanceOrder)(locationId1, locationId2, locationIdPage)));
|
|
505
|
-
return
|
|
357
|
+
return plusFilesRelevant;
|
|
358
|
+
}
|
|
359
|
+
function sortForGlobal(plusFilesAll) {
|
|
360
|
+
const locationIdsAll = (0, utils_js_1.objectKeys)(plusFilesAll);
|
|
361
|
+
const plusFilesAllSorted = Object.fromEntries((0, utils_js_1.objectEntries)(plusFilesAll)
|
|
362
|
+
.sort((0, utils_js_1.lowerFirst)(([locationId]) => locationId.split('/').length))
|
|
363
|
+
.sort((0, utils_js_1.makeFirst)(([locationId]) => (0, filesystemRouting_js_1.isGlobalLocation)(locationId, locationIdsAll))));
|
|
364
|
+
return plusFilesAllSorted;
|
|
365
|
+
}
|
|
366
|
+
function resolveConfigValueSources(configName, configDef, plusFilesRelevant, userRootDir, isGlobal) {
|
|
367
|
+
const plusFilesOrdered = getPlusFilesOrdered(configName, plusFilesRelevant);
|
|
368
|
+
let sources = plusFilesOrdered.map((plusFile, i) => {
|
|
369
|
+
const isHighestInheritancePrecedence = i === 0;
|
|
370
|
+
const configValueSource = getConfigValueSource(configName, plusFile, configDef, userRootDir, isHighestInheritancePrecedence);
|
|
371
|
+
return configValueSource;
|
|
372
|
+
});
|
|
373
|
+
if ((0, utils_js_1.isCallable)(configDef.global)) {
|
|
374
|
+
const isGlobalValue = configDef.global;
|
|
375
|
+
(0, utils_js_1.assert)(configDef.env.config);
|
|
376
|
+
sources = sources.filter((source) => {
|
|
377
|
+
(0, utils_js_1.assert)(source.configEnv.config);
|
|
378
|
+
(0, utils_js_1.assert)(source.valueIsLoaded);
|
|
379
|
+
const valueIsGlobal = isGlobalValue(source.value);
|
|
380
|
+
return isGlobal ? valueIsGlobal : !valueIsGlobal;
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
return sources;
|
|
506
384
|
}
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
const
|
|
516
|
-
(0, utils_js_1.assert)(!visited.has(
|
|
517
|
-
visited.add(
|
|
518
|
-
|
|
519
|
-
sourcesInfo.push([
|
|
520
|
-
configName,
|
|
521
|
-
interfaceFile,
|
|
522
|
-
configDef,
|
|
523
|
-
userRootDir,
|
|
524
|
-
importedFilesLoaded,
|
|
525
|
-
isHighestInheritancePrecedence
|
|
526
|
-
]);
|
|
385
|
+
// Together with sortAfterInheritanceOrder() this implements the whole order of config inheritance.
|
|
386
|
+
function getPlusFilesOrdered(configName, plusFilesRelevant) {
|
|
387
|
+
const plusFilesOrdered = [];
|
|
388
|
+
// `plusFilesRelevant` is already sorted by sortAfterInheritanceOrder() at getPlusFilesRelevant()
|
|
389
|
+
// `plusFilesAtLocationId` is already sorted by sortMakeDeterministic() at getPlusFilesAll()
|
|
390
|
+
for (const plusFilesAtLocationId of Object.values(plusFilesRelevant)) {
|
|
391
|
+
const plusFilesForConfigName = plusFilesAtLocationId.filter((plusFile) => getDefiningConfigNames(plusFile).includes(configName));
|
|
392
|
+
// We populate `plusFilesOrdered` with inheritance order.
|
|
393
|
+
const populate = (plusFile) => {
|
|
394
|
+
(0, utils_js_1.assert)(!visited.has(plusFile));
|
|
395
|
+
visited.add(plusFile);
|
|
396
|
+
plusFilesOrdered.push(plusFile);
|
|
527
397
|
};
|
|
528
|
-
|
|
398
|
+
const visited = new WeakSet();
|
|
399
|
+
// ========================
|
|
400
|
+
// User-land config (first)
|
|
401
|
+
// ========================
|
|
529
402
|
{
|
|
530
|
-
const
|
|
531
|
-
.filter((interfaceFile) => interfaceFile.isValueFile &&
|
|
403
|
+
const plusFilesValue = plusFilesForConfigName.filter((plusFile) => !plusFile.isConfigFile &&
|
|
532
404
|
// We consider side-effect configs (e.g. `export { frontmatter }` of .mdx files) later (i.e. with less priority)
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
.
|
|
537
|
-
// We consider value from extended configs (e.g. vike-react) later (i.e. with less priority)
|
|
538
|
-
!interfaceFile.isConfigExtend)
|
|
539
|
-
.sort(makeOrderDeterministic);
|
|
540
|
-
const interfaceValueFile = interfaceValueFiles[0];
|
|
541
|
-
const interfaceConfigFile = interfaceConfigFiles[0];
|
|
405
|
+
plusFile.configName === configName);
|
|
406
|
+
const plusFilesConfig = plusFilesForConfigName.filter((plusFile) => plusFile.isConfigFile &&
|
|
407
|
+
// We consider extensions (e.g. vike-react) later (i.e. with less priority)
|
|
408
|
+
!plusFile.isExtensionConfig);
|
|
542
409
|
// Make this value:
|
|
543
410
|
// /pages/some-page/+{configName}.js > `export default`
|
|
544
411
|
// override that value:
|
|
545
412
|
// /pages/some-page/+config.js > `export default { someConfig }`
|
|
546
|
-
const
|
|
547
|
-
if (
|
|
548
|
-
const
|
|
549
|
-
// A user-land conflict of
|
|
550
|
-
|
|
551
|
-
[
|
|
552
|
-
|
|
413
|
+
const plusFileWinner = plusFilesValue[0] ?? plusFilesConfig[0];
|
|
414
|
+
if (plusFileWinner) {
|
|
415
|
+
const plusFilesOverriden = [...plusFilesValue, ...plusFilesConfig].filter((f) => f !== plusFileWinner);
|
|
416
|
+
// A user-land conflict of plusFiles with the same `locationId` (we are iterating over `plusFilesRelevant: PlusFilesByLocationId`) means that the user has superfluously defined the config twice; the user should remove such redundancy as it makes things unnecessarily ambiguous.
|
|
417
|
+
assertOverwrittenConfigFile(plusFileWinner, plusFilesOverriden, configName);
|
|
418
|
+
[plusFileWinner, ...plusFilesOverriden].forEach((plusFile) => {
|
|
419
|
+
(0, utils_js_1.assert)(plusFile.filePath.filePathAbsoluteUserRootDir); // ensure it's a user-land plus file
|
|
420
|
+
populate(plusFile);
|
|
553
421
|
});
|
|
554
422
|
}
|
|
555
423
|
}
|
|
556
|
-
//
|
|
557
|
-
|
|
558
|
-
|
|
424
|
+
// ==========================
|
|
425
|
+
// Side-effect configs (next)
|
|
426
|
+
// ==========================
|
|
427
|
+
// - For example `export { frontmatter }` of `.mdx` files.
|
|
428
|
+
// - This only considers side-effect configs that are already loaded at build-time. (E.g. it actually doesn't consider `export { frontmatter }` of .mdx files since .mdx files are loaded only at runtime.)
|
|
429
|
+
plusFilesForConfigName
|
|
430
|
+
.filter((plusFile) => !plusFile.isConfigFile &&
|
|
559
431
|
// Is side-effect config
|
|
560
|
-
|
|
561
|
-
.forEach((
|
|
562
|
-
|
|
432
|
+
plusFile.configName !== configName)
|
|
433
|
+
.forEach((plusFile) => {
|
|
434
|
+
(0, utils_js_1.assert)(plusFile.filePath.filePathAbsoluteUserRootDir); // ensure it's a user-land plus file
|
|
435
|
+
populate(plusFile);
|
|
563
436
|
});
|
|
564
|
-
//
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
.
|
|
569
|
-
|
|
437
|
+
// ========================
|
|
438
|
+
// Extensions config (last)
|
|
439
|
+
// ========================
|
|
440
|
+
plusFilesForConfigName
|
|
441
|
+
.filter((plusFile) => plusFile.isConfigFile && plusFile.isExtensionConfig)
|
|
442
|
+
// Extension config files are already sorted by inheritance order
|
|
443
|
+
.forEach((plusFile) => {
|
|
444
|
+
(0, utils_js_1.assert)(!plusFile.filePath.filePathAbsoluteUserRootDir); // ensure it isn't a user-land plus file
|
|
445
|
+
populate(plusFile);
|
|
570
446
|
});
|
|
571
|
-
|
|
572
|
-
|
|
447
|
+
// ======
|
|
448
|
+
// Assert we didn't miss any config.
|
|
449
|
+
// ======
|
|
450
|
+
plusFilesForConfigName.forEach((plusFile) => {
|
|
451
|
+
(0, utils_js_1.assert)(visited.has(plusFile));
|
|
573
452
|
});
|
|
574
453
|
}
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
})(interfaceFile1, interfaceFile2);
|
|
585
|
-
}
|
|
586
|
-
function warnOverridenConfigValues(interfaceFileWinner, interfaceFilesOverriden, configName) {
|
|
587
|
-
interfaceFilesOverriden.forEach((interfaceFileLoser) => {
|
|
588
|
-
const loserFilePath = interfaceFileLoser.filePath.filePathToShowToUser;
|
|
589
|
-
const winnerFilePath = interfaceFileWinner.filePath.filePathToShowToUser;
|
|
590
|
-
const confName = picocolors_1.default.cyan(configName);
|
|
591
|
-
(0, utils_js_1.assertWarning)(false, `The value of the config ${confName} defined at ${loserFilePath} is always overwritten by the value defined at ${winnerFilePath}, remove the superfluous value defined at ${loserFilePath}`, { onlyOnce: true });
|
|
592
|
-
});
|
|
593
|
-
}
|
|
594
|
-
function isInterfaceFileUserLand(interfaceFile) {
|
|
595
|
-
return (interfaceFile.isConfigFile && !interfaceFile.isConfigExtend) || interfaceFile.isValueFile;
|
|
596
|
-
}
|
|
597
|
-
async function getConfigValueSource(configName, interfaceFile, configDef, userRootDir, importedFilesLoaded, isHighestInheritancePrecedence) {
|
|
598
|
-
const conf = interfaceFile.fileExportsByConfigName[configName];
|
|
599
|
-
(0, utils_js_1.assert)(conf);
|
|
600
|
-
const { locationId } = interfaceFile;
|
|
454
|
+
return plusFilesOrdered;
|
|
455
|
+
}
|
|
456
|
+
function getConfigValueSource(configName, plusFile, configDef, userRootDir, isHighestInheritancePrecedence) {
|
|
457
|
+
const confVal = getConfVal(plusFile, configName);
|
|
458
|
+
(0, utils_js_1.assert)(confVal);
|
|
459
|
+
const configValueSourceCommon = {
|
|
460
|
+
locationId: plusFile.locationId,
|
|
461
|
+
plusFile
|
|
462
|
+
};
|
|
601
463
|
const definedAtFilePath_ = {
|
|
602
|
-
...
|
|
464
|
+
...plusFile.filePath,
|
|
603
465
|
fileExportPathToShowToUser: ['default', configName]
|
|
604
466
|
};
|
|
605
467
|
const isOverriden = configDef.cumulative ? false : !isHighestInheritancePrecedence;
|
|
@@ -607,25 +469,27 @@ async function getConfigValueSource(configName, interfaceFile, configDef, userRo
|
|
|
607
469
|
if (configDef._valueIsFilePath) {
|
|
608
470
|
let definedAtFilePath;
|
|
609
471
|
let valueFilePath;
|
|
610
|
-
if (
|
|
472
|
+
if (plusFile.isConfigFile) {
|
|
611
473
|
// Defined over pointer import
|
|
612
|
-
|
|
474
|
+
(0, utils_js_1.assert)(confVal.configValueLoaded);
|
|
475
|
+
const pointerImport = (0, resolvePointerImport_js_1.resolvePointerImport)(confVal.configValue, plusFile.filePath, userRootDir, configName);
|
|
613
476
|
const configDefinedAt = (0, getConfigDefinedAt_js_1.getConfigDefinedAt)('Config', configName, definedAtFilePath_);
|
|
614
|
-
(0, utils_js_1.assertUsage)(
|
|
615
|
-
valueFilePath =
|
|
616
|
-
definedAtFilePath =
|
|
477
|
+
(0, utils_js_1.assertUsage)(pointerImport, `${configDefinedAt} should be an import`);
|
|
478
|
+
valueFilePath = pointerImport.fileExportPath.filePathAbsoluteVite;
|
|
479
|
+
definedAtFilePath = pointerImport.fileExportPath;
|
|
617
480
|
}
|
|
618
481
|
else {
|
|
619
482
|
// Defined by value file, i.e. +{configName}.js
|
|
620
|
-
(0, utils_js_1.assert)(
|
|
621
|
-
valueFilePath =
|
|
483
|
+
(0, utils_js_1.assert)(!plusFile.isConfigFile);
|
|
484
|
+
valueFilePath = plusFile.filePath.filePathAbsoluteVite;
|
|
622
485
|
definedAtFilePath = {
|
|
623
|
-
...
|
|
486
|
+
...plusFile.filePath,
|
|
624
487
|
fileExportPathToShowToUser: []
|
|
625
488
|
};
|
|
626
489
|
}
|
|
627
490
|
const configValueSource = {
|
|
628
|
-
|
|
491
|
+
...configValueSourceCommon,
|
|
492
|
+
valueIsLoaded: true,
|
|
629
493
|
value: valueFilePath,
|
|
630
494
|
valueIsFilePath: true,
|
|
631
495
|
configEnv: configDef.env,
|
|
@@ -637,38 +501,35 @@ async function getConfigValueSource(configName, interfaceFile, configDef, userRo
|
|
|
637
501
|
return configValueSource;
|
|
638
502
|
}
|
|
639
503
|
// +config.js
|
|
640
|
-
if (
|
|
641
|
-
(0, utils_js_1.assert)(
|
|
642
|
-
const { configValue } =
|
|
504
|
+
if (plusFile.isConfigFile) {
|
|
505
|
+
(0, utils_js_1.assert)(confVal.configValueLoaded);
|
|
506
|
+
const { configValue } = confVal;
|
|
643
507
|
// Defined over pointer import
|
|
644
|
-
const
|
|
645
|
-
if (
|
|
508
|
+
const pointerImport = plusFile.pointerImportsByConfigName[configName];
|
|
509
|
+
if (pointerImport) {
|
|
510
|
+
const value = pointerImport.fileExportValueLoaded
|
|
511
|
+
? {
|
|
512
|
+
valueIsLoaded: true,
|
|
513
|
+
value: pointerImport.fileExportValue
|
|
514
|
+
}
|
|
515
|
+
: {
|
|
516
|
+
valueIsLoaded: false
|
|
517
|
+
};
|
|
646
518
|
const configValueSource = {
|
|
647
|
-
|
|
648
|
-
|
|
519
|
+
...configValueSourceCommon,
|
|
520
|
+
...value,
|
|
521
|
+
configEnv: resolveConfigEnv(configDef.env, pointerImport.fileExportPath),
|
|
649
522
|
valueIsImportedAtRuntime: true,
|
|
650
523
|
valueIsDefinedByPlusFile: false,
|
|
651
524
|
isOverriden,
|
|
652
|
-
definedAtFilePath:
|
|
525
|
+
definedAtFilePath: pointerImport.fileExportPath
|
|
653
526
|
};
|
|
654
|
-
// Load pointer import
|
|
655
|
-
if (isLoadableAtBuildTime(configDef) &&
|
|
656
|
-
// The value of `extends` was already loaded and already used: we don't need the value of `extends` anymore
|
|
657
|
-
configName !== 'extends') {
|
|
658
|
-
if (resolved.pointerImport.filePathAbsoluteFilesystem) {
|
|
659
|
-
const fileExport = await (0, loadFileAtConfigTime_js_1.loadImportedFile)(resolved.pointerImport, userRootDir, importedFilesLoaded);
|
|
660
|
-
configValueSource.value = fileExport;
|
|
661
|
-
}
|
|
662
|
-
else {
|
|
663
|
-
const configDefinedAt = (0, getConfigDefinedAt_js_1.getConfigDefinedAt)('Config', configName, configValueSource.definedAtFilePath);
|
|
664
|
-
(0, utils_js_1.assertUsage)(!configDef.cumulative, `${configDefinedAt} cannot be defined over an aliased import`);
|
|
665
|
-
}
|
|
666
|
-
}
|
|
667
527
|
return configValueSource;
|
|
668
528
|
}
|
|
669
529
|
// Defined inside +config.js
|
|
670
530
|
const configValueSource = {
|
|
671
|
-
|
|
531
|
+
...configValueSourceCommon,
|
|
532
|
+
valueIsLoaded: true,
|
|
672
533
|
value: configValue,
|
|
673
534
|
configEnv: configDef.env,
|
|
674
535
|
valueIsImportedAtRuntime: false,
|
|
@@ -679,34 +540,48 @@ async function getConfigValueSource(configName, interfaceFile, configDef, userRo
|
|
|
679
540
|
return configValueSource;
|
|
680
541
|
}
|
|
681
542
|
// Defined by value file, i.e. +{configName}.js
|
|
682
|
-
if (
|
|
683
|
-
const configEnvResolved = (
|
|
684
|
-
const valueAlreadyLoaded =
|
|
543
|
+
if (!plusFile.isConfigFile) {
|
|
544
|
+
const configEnvResolved = resolveConfigEnv(configDef.env, plusFile.filePath);
|
|
545
|
+
const valueAlreadyLoaded = confVal.configValueLoaded;
|
|
685
546
|
(0, utils_js_1.assert)(valueAlreadyLoaded === !!configEnvResolved.config);
|
|
547
|
+
const value = valueAlreadyLoaded
|
|
548
|
+
? {
|
|
549
|
+
valueIsLoaded: true,
|
|
550
|
+
value: confVal.configValue
|
|
551
|
+
}
|
|
552
|
+
: {
|
|
553
|
+
valueIsLoaded: false
|
|
554
|
+
};
|
|
686
555
|
const configValueSource = {
|
|
687
|
-
|
|
556
|
+
...configValueSourceCommon,
|
|
557
|
+
...value,
|
|
688
558
|
configEnv: configEnvResolved,
|
|
689
559
|
valueIsImportedAtRuntime: !valueAlreadyLoaded,
|
|
690
560
|
valueIsDefinedByPlusFile: true,
|
|
691
561
|
isOverriden,
|
|
692
562
|
definedAtFilePath: {
|
|
693
|
-
...
|
|
694
|
-
fileExportPathToShowToUser: configName ===
|
|
563
|
+
...plusFile.filePath,
|
|
564
|
+
fileExportPathToShowToUser: configName === plusFile.configName
|
|
695
565
|
? []
|
|
696
566
|
: // Side-effect config (e.g. `export { frontmatter }` of .md files)
|
|
697
567
|
[configName]
|
|
698
568
|
}
|
|
699
569
|
};
|
|
700
|
-
if (valueAlreadyLoaded) {
|
|
701
|
-
configValueSource.value = conf.configValue;
|
|
702
|
-
}
|
|
703
570
|
return configValueSource;
|
|
704
571
|
}
|
|
705
572
|
(0, utils_js_1.assert)(false);
|
|
706
573
|
}
|
|
707
|
-
function
|
|
708
|
-
|
|
709
|
-
const
|
|
574
|
+
function assertOverwrittenConfigFile(plusFileWinner, plusFilesOverriden, configName) {
|
|
575
|
+
plusFilesOverriden.forEach((plusFileLoser) => {
|
|
576
|
+
const loserFilePath = plusFileLoser.filePath.filePathToShowToUser;
|
|
577
|
+
const winnerFilePath = plusFileWinner.filePath.filePathToShowToUser;
|
|
578
|
+
const confName = picocolors_1.default.cyan(configName);
|
|
579
|
+
(0, utils_js_1.assertWarning)(false, `The value of the config ${confName} defined at ${loserFilePath} is always overwritten by the value defined at ${winnerFilePath}, remove the superfluous value defined at ${loserFilePath}`, { onlyOnce: true });
|
|
580
|
+
});
|
|
581
|
+
}
|
|
582
|
+
function isDefiningPage(plusFiles) {
|
|
583
|
+
for (const plusFile of plusFiles) {
|
|
584
|
+
const configNames = getDefiningConfigNames(plusFile);
|
|
710
585
|
if (configNames.some((configName) => isDefiningPageConfig(configName))) {
|
|
711
586
|
return true;
|
|
712
587
|
}
|
|
@@ -716,37 +591,52 @@ function isDefiningPage(interfaceFiles) {
|
|
|
716
591
|
function isDefiningPageConfig(configName) {
|
|
717
592
|
return ['Page', 'route'].includes(configName);
|
|
718
593
|
}
|
|
719
|
-
function
|
|
720
|
-
|
|
721
|
-
|
|
594
|
+
function getDefiningConfigNames(plusFile) {
|
|
595
|
+
let configNames = [];
|
|
596
|
+
if (!plusFile.isConfigFile) {
|
|
597
|
+
configNames.push(plusFile.configName);
|
|
598
|
+
}
|
|
599
|
+
if (!plusFile.isNotLoaded) {
|
|
600
|
+
configNames.push(...Object.keys(plusFile.fileExportsByConfigName));
|
|
601
|
+
}
|
|
602
|
+
configNames = (0, utils_js_1.unique)(configNames);
|
|
603
|
+
return configNames;
|
|
604
|
+
}
|
|
605
|
+
function getConfigDefinitions(plusFilesRelevant, filter) {
|
|
606
|
+
let configDefinitions = { ...configDefinitionsBuiltIn_js_1.configDefinitionsBuiltIn };
|
|
607
|
+
// Add user-land meta configs
|
|
608
|
+
Object.entries(plusFilesRelevant)
|
|
722
609
|
.reverse()
|
|
723
|
-
.forEach(([_locationId,
|
|
724
|
-
|
|
725
|
-
const
|
|
726
|
-
if (!
|
|
610
|
+
.forEach(([_locationId, plusFiles]) => {
|
|
611
|
+
plusFiles.forEach((plusFile) => {
|
|
612
|
+
const confVal = getConfVal(plusFile, 'meta');
|
|
613
|
+
if (!confVal)
|
|
727
614
|
return;
|
|
728
|
-
|
|
729
|
-
|
|
615
|
+
(0, utils_js_1.assert)(confVal.configValueLoaded);
|
|
616
|
+
const meta = confVal.configValue;
|
|
617
|
+
assertMetaUsage(meta, `Config ${picocolors_1.default.cyan('meta')} defined at ${plusFile.filePath.filePathToShowToUser}`);
|
|
730
618
|
// Set configDef._userEffectDefinedAtFilePath
|
|
731
619
|
Object.entries(meta).forEach(([configName, configDef]) => {
|
|
732
620
|
if (!configDef.effect)
|
|
733
621
|
return;
|
|
734
|
-
(0, utils_js_1.assert)(
|
|
622
|
+
(0, utils_js_1.assert)(plusFile.isConfigFile);
|
|
735
623
|
configDef._userEffectDefinedAtFilePath = {
|
|
736
|
-
...
|
|
624
|
+
...plusFile.filePath,
|
|
737
625
|
fileExportPathToShowToUser: ['default', 'meta', configName, 'effect']
|
|
738
626
|
};
|
|
739
627
|
});
|
|
740
|
-
(0, utils_js_1.objectEntries)(meta).forEach(([configName,
|
|
628
|
+
(0, utils_js_1.objectEntries)(meta).forEach(([configName, configDefinitionUserLand]) => {
|
|
741
629
|
// User can override an existing config definition
|
|
742
|
-
|
|
743
|
-
...
|
|
744
|
-
...
|
|
630
|
+
configDefinitions[configName] = {
|
|
631
|
+
...configDefinitions[configName],
|
|
632
|
+
...configDefinitionUserLand
|
|
745
633
|
};
|
|
746
634
|
});
|
|
747
635
|
});
|
|
748
636
|
});
|
|
749
|
-
|
|
637
|
+
if (filter) {
|
|
638
|
+
configDefinitions = Object.fromEntries(Object.entries(configDefinitions).filter(([_configName, configDef]) => filter(configDef)));
|
|
639
|
+
}
|
|
750
640
|
return configDefinitions;
|
|
751
641
|
}
|
|
752
642
|
function assertMetaUsage(metaVal, metaConfigDefinedAt) {
|
|
@@ -863,47 +753,35 @@ function getComputed(configValueSources, configDefinitions) {
|
|
|
863
753
|
});
|
|
864
754
|
return configValuesComputed;
|
|
865
755
|
}
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
const
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
(0, utils_js_1.assertUsage)(configName !== '', `${filePath} Invalid filename ${fileName}`);
|
|
884
|
-
return configName;
|
|
885
|
-
}
|
|
886
|
-
}
|
|
887
|
-
/* https://github.com/vikejs/vike/issues/1407
|
|
888
|
-
function assertNoUnexpectedPlusSign(filePath: string, fileName: string) {
|
|
889
|
-
const dirs = path.posix.dirname(filePath).split('/')
|
|
890
|
-
dirs.forEach((dir, i) => {
|
|
891
|
-
const dirPath = dirs.slice(0, i + 1).join('/')
|
|
892
|
-
assertUsage(
|
|
893
|
-
!dir.includes('+'),
|
|
894
|
-
`Character '+' is a reserved character: remove '+' from the directory name ${dirPath}/`
|
|
895
|
-
)
|
|
896
|
-
})
|
|
897
|
-
assertUsage(
|
|
898
|
-
!fileName.slice(1).includes('+'),
|
|
899
|
-
`Character '+' is only allowed at the beginning of filenames: make sure ${filePath} doesn't contain any '+' in its filename other than its first letter`
|
|
900
|
-
)
|
|
756
|
+
// Show error message upon unknown config
|
|
757
|
+
function assertKnownConfigs(plusFilesAll) {
|
|
758
|
+
const configDefinitionsAll = getConfigDefinitions(plusFilesAll);
|
|
759
|
+
const configNamesKnownAll = Object.keys(configDefinitionsAll);
|
|
760
|
+
(0, utils_js_1.objectEntries)(plusFilesAll).forEach(([locationId, plusFiles]) => {
|
|
761
|
+
const plusFilesRelevant = getPlusFilesRelevant(plusFilesAll, locationId);
|
|
762
|
+
const configDefinitionsLocal = getConfigDefinitions(plusFilesRelevant);
|
|
763
|
+
const configNamesKnownLocal = Object.keys(configDefinitionsLocal);
|
|
764
|
+
plusFiles.forEach((plusFile) => {
|
|
765
|
+
const configNames = getDefiningConfigNames(plusFile);
|
|
766
|
+
configNames.forEach((configName) => {
|
|
767
|
+
assertKnownConfig(configName, configNamesKnownAll, configNamesKnownLocal, plusFile);
|
|
768
|
+
(0, utils_js_1.assert)(configNamesKnownLocal.includes(configName));
|
|
769
|
+
(0, utils_js_1.assert)(configNamesKnownAll.includes(configName));
|
|
770
|
+
});
|
|
771
|
+
});
|
|
772
|
+
});
|
|
901
773
|
}
|
|
902
|
-
|
|
903
|
-
|
|
774
|
+
function assertKnownConfig(configName, configNamesKnownAll, configNamesKnownLocal, plusFile) {
|
|
775
|
+
if (configNamesKnownLocal.includes(configName))
|
|
776
|
+
return;
|
|
904
777
|
const configNameColored = picocolors_1.default.cyan(configName);
|
|
905
|
-
|
|
906
|
-
|
|
778
|
+
const { locationId, filePath: { filePathToShowToUser } } = plusFile;
|
|
779
|
+
const errMsg = `${filePathToShowToUser} sets an unknown config ${configNameColored}`;
|
|
780
|
+
// Inheritance issue: config is known but isn't defined at `locationId`
|
|
781
|
+
if (configNamesKnownAll.includes(configName)) {
|
|
782
|
+
(0, utils_js_1.assertUsage)(false, `${filePathToShowToUser} sets the value of the config ${configNameColored} which is a custom config that is defined with ${picocolors_1.default.underline('https://vike.dev/meta')} at a path that doesn't apply to ${locationId} — see ${picocolors_1.default.underline('https://vike.dev/config#inheritance')}`);
|
|
783
|
+
}
|
|
784
|
+
// Missing vike-{react,vue,solid} installation
|
|
907
785
|
{
|
|
908
786
|
const ui = ['vike-react', 'vike-vue', 'vike-solid'];
|
|
909
787
|
const knownVikeExntensionConfigs = {
|
|
@@ -918,15 +796,11 @@ function handleUnknownConfig(configName, configNames, filePathToShowToUser) {
|
|
|
918
796
|
Wrapper: ui
|
|
919
797
|
};
|
|
920
798
|
if (configName in knownVikeExntensionConfigs) {
|
|
921
|
-
const requiredVikeExtension = knownVikeExntensionConfigs[configName]
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
.join('/')}.`,
|
|
927
|
-
`Also make sure it applies to ${filePathToShowToUser} (see https://vike.dev/extends#inheritance).`,
|
|
928
|
-
`Alternatively, if you don't want to use the aforementioned Vike extension, define it yourself by using ${picocolors_1.default.cyan('meta')} (https://vike.dev/meta).`
|
|
929
|
-
].join(' '));
|
|
799
|
+
const requiredVikeExtension = knownVikeExntensionConfigs[configName]
|
|
800
|
+
.map((e) => picocolors_1.default.bold(e))
|
|
801
|
+
.join('/');
|
|
802
|
+
const errMsgEnhanced = `${errMsg}. If you want to use the configuration ${configNameColored} documented at ${picocolors_1.default.underline(`https://vike.dev/${configName}`)} then make sure to install ${requiredVikeExtension}. (Alternatively, you can define ${configNameColored} yourself by using ${picocolors_1.default.cyan('meta')}, see ${picocolors_1.default.underline('https://vike.dev/meta')} for more information.)`;
|
|
803
|
+
(0, utils_js_1.assertUsage)(false, errMsgEnhanced);
|
|
930
804
|
}
|
|
931
805
|
}
|
|
932
806
|
// Similarity hint
|
|
@@ -935,18 +809,15 @@ function handleUnknownConfig(configName, configNames, filePathToShowToUser) {
|
|
|
935
809
|
configNameSimilar = 'Page';
|
|
936
810
|
}
|
|
937
811
|
else {
|
|
938
|
-
configNameSimilar = (0, utils_js_1.getMostSimilar)(configName,
|
|
812
|
+
configNameSimilar = (0, utils_js_1.getMostSimilar)(configName, configNamesKnownAll);
|
|
939
813
|
}
|
|
940
814
|
if (configNameSimilar) {
|
|
941
815
|
(0, utils_js_1.assert)(configNameSimilar !== configName);
|
|
942
|
-
|
|
816
|
+
let errMsgEnhanced = `${errMsg}. Did you mean ${picocolors_1.default.cyan(configNameSimilar)} instead?`;
|
|
943
817
|
if (configName === 'page') {
|
|
944
|
-
|
|
818
|
+
errMsgEnhanced += ` (The name of the config ${picocolors_1.default.cyan('Page')} starts with a capital letter ${picocolors_1.default.cyan('P')} because it defines a UI component: a ubiquitous JavaScript convention is that the name of UI components start with a capital letter.)`;
|
|
945
819
|
}
|
|
946
|
-
|
|
947
|
-
// `meta` hint
|
|
948
|
-
if (!configNameSimilar) {
|
|
949
|
-
errMsg += ` Make sure to define ${configNameColored} by using ${picocolors_1.default.cyan('meta')} (https://vike.dev/meta), and also make sure the meta configuration applies to ${filePathToShowToUser} (see https://vike.dev/config#inheritance).`;
|
|
820
|
+
(0, utils_js_1.assertUsage)(false, errMsgEnhanced);
|
|
950
821
|
}
|
|
951
822
|
(0, utils_js_1.assertUsage)(false, errMsg);
|
|
952
823
|
}
|
|
@@ -994,9 +865,6 @@ function determineIsErrorPage(routeFilesystem) {
|
|
|
994
865
|
(0, utils_js_1.assertPosixPath)(routeFilesystem);
|
|
995
866
|
return routeFilesystem.split('/').includes('_error');
|
|
996
867
|
}
|
|
997
|
-
function isVikeConfigFile(filePath) {
|
|
998
|
-
return !!getConfigName(filePath);
|
|
999
|
-
}
|
|
1000
868
|
function getConfigEnvValue(val, errMsgIntro) {
|
|
1001
869
|
const errInvalidValue = `${errMsgIntro} an invalid value ${picocolors_1.default.cyan(JSON.stringify(val))}`;
|
|
1002
870
|
// Legacy outdated values
|
|
@@ -1033,89 +901,34 @@ function getConfigEnvValue(val, errMsgIntro) {
|
|
|
1033
901
|
*/
|
|
1034
902
|
return val;
|
|
1035
903
|
}
|
|
1036
|
-
function getConfigDefinition(configDefinitions, configName, filePathToShowToUser) {
|
|
1037
|
-
const configDef = configDefinitions[configName];
|
|
1038
|
-
assertConfigExists(configName, Object.keys(configDefinitions), filePathToShowToUser);
|
|
1039
|
-
(0, utils_js_1.assert)(configDef);
|
|
1040
|
-
return configDef;
|
|
1041
|
-
}
|
|
1042
904
|
function getConfigDefinitionOptional(configDefinitions, configName) {
|
|
1043
905
|
return configDefinitions[configName] ?? null;
|
|
1044
906
|
}
|
|
1045
|
-
function
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
}
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
}
|
|
1071
|
-
function sortConfigValueSources(configValueSources, locationIdPage) {
|
|
1072
|
-
return Object.fromEntries(Object.entries(configValueSources)
|
|
1073
|
-
// Make order deterministic (no other purpose)
|
|
1074
|
-
.sort(([, [source1]], [, [source2]]) => source1.definedAtFilePath.filePathAbsoluteVite < source2.definedAtFilePath.filePathAbsoluteVite ? -1 : 1)
|
|
1075
|
-
// Sort after whether the config value was defined by an npm package
|
|
1076
|
-
.sort((0, utils_js_1.makeFirst)(([, [source]]) => {
|
|
1077
|
-
const { importPathAbsolute } = source.definedAtFilePath;
|
|
1078
|
-
return (!!importPathAbsolute &&
|
|
1079
|
-
(0, utils_js_1.isNpmPackageImport)(importPathAbsolute, {
|
|
1080
|
-
// Vike config files don't support path aliases. (If they do one day, then Vike will/should be able to resolve path aliases.)
|
|
1081
|
-
cannotBePathAlias: true
|
|
1082
|
-
}));
|
|
1083
|
-
}))
|
|
1084
|
-
// Sort after the filesystem inheritance of the config value
|
|
1085
|
-
.sort(([, [source1]], [, [source2]]) => (0, utils_js_1.reverse)((0, filesystemRouting_js_1.sortAfterInheritanceOrder)(source1.locationId, source2.locationId, locationIdPage))));
|
|
1086
|
-
}
|
|
1087
|
-
function getConfigValueInterfaceFile(interfaceFile, configName) {
|
|
1088
|
-
return interfaceFile.fileExportsByConfigName[configName]?.configValue;
|
|
1089
|
-
}
|
|
1090
|
-
// TODO/now: refactor code below
|
|
1091
|
-
function resolveVikeConfigGlobal(vikeVitePluginOptions, pageConfigGlobalValues) {
|
|
1092
|
-
const configs = [vikeVitePluginOptions, pageConfigGlobalValues];
|
|
1093
|
-
const vikeConfigGlobal = {
|
|
1094
|
-
disableAutoFullBuild: pickFirst(configs.map((c) => c.disableAutoFullBuild)) ?? null,
|
|
1095
|
-
prerender: resolvePrerenderOptions(configs),
|
|
1096
|
-
includeAssetsImportedByServer: pickFirst(configs.map((c) => c.includeAssetsImportedByServer)) ?? true,
|
|
1097
|
-
baseServer: pickFirst(configs.map((c) => c.baseServer)) ?? null,
|
|
1098
|
-
baseAssets: pickFirst(configs.map((c) => c.baseAssets)) ?? null,
|
|
1099
|
-
disableUrlNormalization: pickFirst(configs.map((c) => c.disableUrlNormalization)) ?? false,
|
|
1100
|
-
trailingSlash: pickFirst(configs.map((c) => c.trailingSlash)) ?? false
|
|
1101
|
-
};
|
|
1102
|
-
return vikeConfigGlobal;
|
|
1103
|
-
}
|
|
1104
|
-
function resolvePrerenderOptions(configs) {
|
|
1105
|
-
if (!configs.some((c) => c.prerender)) {
|
|
1106
|
-
return false;
|
|
907
|
+
function getConfVal(plusFile, configName) {
|
|
908
|
+
const configNames = getDefiningConfigNames(plusFile);
|
|
909
|
+
if (!configNames.includes(configName))
|
|
910
|
+
return null;
|
|
911
|
+
if (plusFile.isNotLoaded)
|
|
912
|
+
return { configValueLoaded: false };
|
|
913
|
+
const confVal = { configValue: plusFile.fileExportsByConfigName[configName], configValueLoaded: true };
|
|
914
|
+
return confVal;
|
|
915
|
+
}
|
|
916
|
+
function resolveConfigEnv(configEnv, filePath) {
|
|
917
|
+
const configEnvResolved = { ...configEnv };
|
|
918
|
+
if (filePath.filePathAbsoluteFilesystem) {
|
|
919
|
+
const { fileName } = filePath;
|
|
920
|
+
if (fileName.includes('.server.')) {
|
|
921
|
+
configEnvResolved.server = true;
|
|
922
|
+
configEnvResolved.client = false;
|
|
923
|
+
}
|
|
924
|
+
else if (fileName.includes('.client.')) {
|
|
925
|
+
configEnvResolved.client = true;
|
|
926
|
+
configEnvResolved.server = false;
|
|
927
|
+
}
|
|
928
|
+
else if (fileName.includes('.shared.')) {
|
|
929
|
+
configEnvResolved.server = true;
|
|
930
|
+
configEnvResolved.client = true;
|
|
931
|
+
}
|
|
1107
932
|
}
|
|
1108
|
-
|
|
1109
|
-
return {
|
|
1110
|
-
partial: pickFirst(configsPrerender.map((c) => c.partial)) ?? false,
|
|
1111
|
-
noExtraDir: pickFirst(configsPrerender.map((c) => c.noExtraDir)) ?? false,
|
|
1112
|
-
parallel: pickFirst(configsPrerender.map((c) => c.parallel)) ?? true,
|
|
1113
|
-
disableAutoRun: pickFirst(configsPrerender.map((c) => c.disableAutoRun)) ?? false
|
|
1114
|
-
};
|
|
1115
|
-
}
|
|
1116
|
-
function isObject2(p) {
|
|
1117
|
-
return typeof p === 'object';
|
|
1118
|
-
}
|
|
1119
|
-
function pickFirst(arr) {
|
|
1120
|
-
return arr.filter((v) => v !== undefined)[0];
|
|
933
|
+
return configEnvResolved;
|
|
1121
934
|
}
|