vike 0.4.220 → 0.4.221-commit-8577456
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
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
export { getVirtualFileImportUserCode };
|
|
2
|
-
import { assert, assertPosixPath,
|
|
2
|
+
import { assert, assertPosixPath, scriptFileExtensions, debugGlob, isVersionOrAbove, assertWarning } from '../../utils.js';
|
|
3
3
|
import { isVirtualFileIdImportUserCode } from '../../../shared/virtual-files/virtualFileImportUserCode.js';
|
|
4
4
|
import { version as viteVersion } from 'vite';
|
|
5
5
|
import { fileTypes } from '../../../../shared/getPageFiles/fileTypes.js';
|
|
6
6
|
import path from 'path';
|
|
7
|
-
import { getVirtualFilePageConfigs } from './v1-design/getVirtualFilePageConfigs.js';
|
|
7
|
+
import { getVirtualFilePageConfigs } from './v1-design/virtual-files/getVirtualFilePageConfigs.js';
|
|
8
8
|
import { isV1Design as isV1Design_ } from './v1-design/getVikeConfig.js';
|
|
9
|
-
|
|
9
|
+
import { getOutDirs } from '../../shared/getOutDirs.js';
|
|
10
|
+
import { viteIsSSR_options } from '../../shared/viteIsSSR.js';
|
|
11
|
+
async function getVirtualFileImportUserCode(id, options, vikeConfig, config, isDev) {
|
|
10
12
|
const idParsed = isVirtualFileIdImportUserCode(id);
|
|
11
13
|
assert(idParsed);
|
|
12
14
|
const { isForClientSide, isClientRouting } = idParsed;
|
|
13
15
|
assert(isForClientSide === !viteIsSSR_options(options));
|
|
14
|
-
const
|
|
15
|
-
const code = await getCode(config, vikeConfigGlobal, isForClientSide, isClientRouting, isPrerendering, isDev, id);
|
|
16
|
+
const code = await getCode(config, vikeConfig, isForClientSide, isClientRouting, isDev, id);
|
|
16
17
|
return code;
|
|
17
18
|
}
|
|
18
|
-
async function getCode(config,
|
|
19
|
+
async function getCode(config, vikeConfig, isForClientSide, isClientRouting, isDev, id) {
|
|
19
20
|
const { command } = config;
|
|
20
21
|
assert(command === 'serve' || command === 'build');
|
|
21
22
|
const isBuild = command === 'build';
|
|
@@ -24,7 +25,7 @@ async function getCode(config, vikeConfigGlobal, isForClientSide, isClientRoutin
|
|
|
24
25
|
{
|
|
25
26
|
const globRoots = getGlobRoots(config);
|
|
26
27
|
debugGlob('Glob roots: ', globRoots);
|
|
27
|
-
content += await generateGlobImports(globRoots, isBuild, isForClientSide, isClientRouting,
|
|
28
|
+
content += await generateGlobImports(globRoots, isBuild, isForClientSide, isClientRouting, vikeConfig, config, isDev, id);
|
|
28
29
|
}
|
|
29
30
|
debugGlob(`Glob imports for ${isForClientSide ? 'client' : 'server'}:\n`, content);
|
|
30
31
|
return content;
|
|
@@ -54,7 +55,7 @@ function determineInjection({ fileType, isForClientSide, isClientRouting, isPrer
|
|
|
54
55
|
}
|
|
55
56
|
}
|
|
56
57
|
}
|
|
57
|
-
async function generateGlobImports(globRoots, isBuild, isForClientSide, isClientRouting,
|
|
58
|
+
async function generateGlobImports(globRoots, isBuild, isForClientSide, isClientRouting, vikeConfig, config, isDev, id) {
|
|
58
59
|
let fileContent = `// Generated by https://github.com/vikejs/vike/blob/main/vike/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.ts
|
|
59
60
|
|
|
60
61
|
export const pageFilesLazy = {};
|
|
@@ -69,6 +70,8 @@ ${await getVirtualFilePageConfigs(isForClientSide, isDev, id, isClientRouting, c
|
|
|
69
70
|
`;
|
|
70
71
|
// We still use import.meta.glob() when using th V1 design in order to not break the V1 design deprecation warning
|
|
71
72
|
const isV1Design = await isV1Design_(config);
|
|
73
|
+
// Old design => no + files => only to enable pre-rendering is setting `vike({prerender})` in vite.config.js
|
|
74
|
+
const isPrerendering = !!vikeConfig.global.config.prerender;
|
|
72
75
|
fileTypes
|
|
73
76
|
.filter((fileType) => fileType !== '.css')
|
|
74
77
|
.forEach((fileType) => {
|
|
@@ -86,7 +89,9 @@ ${await getVirtualFilePageConfigs(isForClientSide, isDev, id, isClientRouting, c
|
|
|
86
89
|
fileContent += getGlobs(globRoots, isBuild, fileType, 'extractExportNames', isV1Design);
|
|
87
90
|
}
|
|
88
91
|
});
|
|
89
|
-
|
|
92
|
+
// TODO/now: add meta.default
|
|
93
|
+
const includeAssetsImportedByServer = vikeConfig.global.config.includeAssetsImportedByServer ?? true;
|
|
94
|
+
if (includeAssetsImportedByServer && isForClientSide) {
|
|
90
95
|
fileContent += getGlobs(globRoots, isBuild, '.page.server', 'extractAssets', isV1Design);
|
|
91
96
|
}
|
|
92
97
|
return fileContent;
|
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
export { importUserCode };
|
|
2
2
|
import { normalizePath } from 'vite';
|
|
3
|
-
import { getVirtualFilePageConfigValuesAll } from './v1-design/getVirtualFilePageConfigValuesAll.js';
|
|
3
|
+
import { getVirtualFilePageConfigValuesAll } from './v1-design/virtual-files/getVirtualFilePageConfigValuesAll.js';
|
|
4
4
|
import { getVirtualFileImportUserCode } from './getVirtualFileImportUserCode.js';
|
|
5
5
|
import { assert, assertPosixPath } from '../../utils.js';
|
|
6
6
|
import { resolveVirtualFileId, isVirtualFileId, getVirtualFileId } from '../../../shared/virtual-files.js';
|
|
7
7
|
import { isVirtualFileIdPageConfigValuesAll } from '../../../shared/virtual-files/virtualFilePageConfigValuesAll.js';
|
|
8
8
|
import { isVirtualFileIdImportUserCode } from '../../../shared/virtual-files/virtualFileImportUserCode.js';
|
|
9
|
-
import { vikeConfigDependencies, reloadVikeConfig,
|
|
9
|
+
import { vikeConfigDependencies, reloadVikeConfig, isV1Design, getVikeConfig } from './v1-design/getVikeConfig.js';
|
|
10
10
|
import pc from '@brillout/picocolors';
|
|
11
11
|
import { logConfigInfo } from '../../shared/loggerNotProd.js';
|
|
12
12
|
import { getModuleFilePathAbsolute } from '../../shared/getFilePath.js';
|
|
13
|
+
import { getPlusFileValueConfigName } from './v1-design/getVikeConfig/getPlusFilesAll.js';
|
|
14
|
+
import { updateUserFiles } from '../../../runtime/globalContext.js';
|
|
13
15
|
function importUserCode() {
|
|
14
16
|
let config;
|
|
15
|
-
let
|
|
17
|
+
let vikeConfig;
|
|
16
18
|
return {
|
|
17
19
|
name: 'vike:importUserCode',
|
|
18
20
|
async configResolved(config_) {
|
|
19
|
-
|
|
20
|
-
vikeConfigGlobal = vikeConfig.vikeConfigGlobal;
|
|
21
|
+
vikeConfig = await getVikeConfig(config_);
|
|
21
22
|
config = config_;
|
|
22
23
|
// TODO/v1-release: remove
|
|
23
24
|
{
|
|
@@ -52,7 +53,7 @@ function importUserCode() {
|
|
|
52
53
|
return code;
|
|
53
54
|
}
|
|
54
55
|
if (isVirtualFileIdImportUserCode(id)) {
|
|
55
|
-
const code = await getVirtualFileImportUserCode(id, options,
|
|
56
|
+
const code = await getVirtualFileImportUserCode(id, options, vikeConfig, config, isDev);
|
|
56
57
|
return code;
|
|
57
58
|
}
|
|
58
59
|
},
|
|
@@ -119,6 +120,7 @@ function reloadConfig(filePath, config, op) {
|
|
|
119
120
|
logConfigInfo(msg, 'info');
|
|
120
121
|
}
|
|
121
122
|
reloadVikeConfig(config);
|
|
123
|
+
updateUserFiles();
|
|
122
124
|
}
|
|
123
125
|
function getVirtualModules(server) {
|
|
124
126
|
const virtualModules = Array.from(server.moduleGraph.urlToModuleMap.keys())
|
|
@@ -130,3 +132,6 @@ function getVirtualModules(server) {
|
|
|
130
132
|
});
|
|
131
133
|
return virtualModules;
|
|
132
134
|
}
|
|
135
|
+
function isVikeConfigFile(filePath) {
|
|
136
|
+
return !!getPlusFileValueConfigName(filePath);
|
|
137
|
+
}
|
package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/assertExtensions.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { assertExtensionsConventions };
|
|
2
|
+
export { assertExtensionsRequire };
|
|
3
|
+
import type { PlusFile } from './getPlusFilesAll.js';
|
|
4
|
+
import { PageConfigBuildTime } from '../../../../../../shared/page-configs/PageConfig.js';
|
|
5
|
+
declare function assertExtensionsConventions(plusFile: PlusFile): void;
|
|
6
|
+
declare function assertExtensionsRequire(pageConfig: PageConfigBuildTime): void;
|
|
@@ -1,50 +1,51 @@
|
|
|
1
1
|
export { assertExtensionsConventions };
|
|
2
|
-
export {
|
|
2
|
+
export { assertExtensionsRequire };
|
|
3
3
|
import pc from '@brillout/picocolors';
|
|
4
|
-
import { isObjectOfStrings } from '
|
|
5
|
-
import { PROJECT_VERSION, assert, assertUsage, assertWarning, findPackageJson } from '
|
|
6
|
-
import {
|
|
4
|
+
import { isObjectOfStrings } from '../../../../../../utils/isObjectOfStrings.js';
|
|
5
|
+
import { PROJECT_VERSION, assert, assertUsage, assertWarning, findPackageJson } from '../../../../utils.js';
|
|
6
|
+
import { getConfVal } from '../getVikeConfig.js';
|
|
7
7
|
import path from 'path';
|
|
8
8
|
import semver from 'semver';
|
|
9
|
-
function assertExtensionsConventions(
|
|
10
|
-
assertExtensionName(
|
|
11
|
-
assertConfigExportPath(
|
|
9
|
+
function assertExtensionsConventions(plusFile) {
|
|
10
|
+
assertExtensionName(plusFile);
|
|
11
|
+
assertConfigExportPath(plusFile);
|
|
12
12
|
}
|
|
13
|
-
function assertConfigExportPath(
|
|
14
|
-
const { importPathAbsolute, filePathAbsoluteFilesystem } =
|
|
13
|
+
function assertConfigExportPath(plusFile) {
|
|
14
|
+
const { importPathAbsolute, filePathAbsoluteFilesystem } = plusFile.filePath;
|
|
15
15
|
// Ejected Vike extension
|
|
16
16
|
if (!importPathAbsolute) {
|
|
17
17
|
const p = filePathAbsoluteFilesystem;
|
|
18
18
|
assert(!p.includes('node_modules'));
|
|
19
19
|
return;
|
|
20
20
|
}
|
|
21
|
-
const name =
|
|
21
|
+
const name = getNameValue(plusFile);
|
|
22
22
|
assert(name); // already asserted in assertExtensionName()
|
|
23
23
|
const importPathAbsoluteExpected = `${name}/config`;
|
|
24
24
|
assertWarning(importPathAbsolute === importPathAbsoluteExpected, `The Vike configuration of ${pc.bold(name)} is exported at ${pc.bold(importPathAbsolute)}, but it should be exported at ${pc.bold(importPathAbsoluteExpected)} instead.`, { onlyOnce: true });
|
|
25
25
|
}
|
|
26
|
-
function assertExtensionName(
|
|
27
|
-
const filePathToShowToUser = getFilePathToShowToUser(
|
|
28
|
-
const name =
|
|
26
|
+
function assertExtensionName(plusFile) {
|
|
27
|
+
const filePathToShowToUser = getFilePathToShowToUser(plusFile);
|
|
28
|
+
const name = getNameValue(plusFile);
|
|
29
29
|
assertUsage(name, `Vike extension name missing: the config ${filePathToShowToUser} must define the setting ${pc.cyan('name')}`);
|
|
30
30
|
}
|
|
31
|
-
function
|
|
32
|
-
|
|
31
|
+
function assertExtensionsRequire(pageConfig) {
|
|
32
|
+
const plusFilesRelevantList = Object.values(pageConfig.plusFiles).flat(1);
|
|
33
|
+
// Collect extensions
|
|
33
34
|
const extensions = {};
|
|
34
|
-
|
|
35
|
-
const name =
|
|
35
|
+
plusFilesRelevantList.forEach((plusFile) => {
|
|
36
|
+
const name = getNameValue(plusFile);
|
|
36
37
|
if (name) {
|
|
37
|
-
const version = getExtensionVersion(name,
|
|
38
|
+
const version = getExtensionVersion(name, plusFile);
|
|
38
39
|
extensions[name] = version;
|
|
39
40
|
}
|
|
40
41
|
});
|
|
41
|
-
// Enforce
|
|
42
|
-
|
|
43
|
-
const require = getConfigRequireValue(
|
|
42
|
+
// Enforce `require`
|
|
43
|
+
plusFilesRelevantList.forEach((plusFile) => {
|
|
44
|
+
const require = getConfigRequireValue(plusFile);
|
|
44
45
|
if (!require)
|
|
45
46
|
return;
|
|
46
|
-
const name =
|
|
47
|
-
const filePathToShowToUser = getFilePathToShowToUser(
|
|
47
|
+
const name = getNameValue(plusFile);
|
|
48
|
+
const filePathToShowToUser = getFilePathToShowToUser(plusFile);
|
|
48
49
|
assertUsage(name, `Setting ${pc.bold('name')} is required for being able to use setting ${pc.bold('require')} in ${filePathToShowToUser}.`);
|
|
49
50
|
Object.entries(require).forEach(([reqName, reqVersion]) => {
|
|
50
51
|
const errBase = `${pc.bold(name)} requires ${pc.bold(reqName)}`;
|
|
@@ -58,32 +59,36 @@ function assertExtensionsPeerDependencies(interfaceFilesRelevantList) {
|
|
|
58
59
|
});
|
|
59
60
|
});
|
|
60
61
|
}
|
|
61
|
-
function getConfigRequireValue(
|
|
62
|
-
const
|
|
63
|
-
if (!
|
|
62
|
+
function getConfigRequireValue(plusFile) {
|
|
63
|
+
const confVal = getConfVal(plusFile, 'require');
|
|
64
|
+
if (!confVal)
|
|
64
65
|
return null;
|
|
65
|
-
|
|
66
|
+
assert(confVal.configValueLoaded);
|
|
67
|
+
const require = confVal.configValue;
|
|
68
|
+
const { filePathToShowToUserResolved } = plusFile.filePath;
|
|
66
69
|
assert(filePathToShowToUserResolved);
|
|
67
70
|
assertUsage(isObjectOfStrings(require), `The setting ${pc.bold('require')} defined at ${filePathToShowToUserResolved} should be an object with string values (${pc.bold('Record<string, string>')}).`);
|
|
68
71
|
return require;
|
|
69
72
|
}
|
|
70
|
-
function
|
|
71
|
-
const
|
|
72
|
-
if (!
|
|
73
|
+
function getNameValue(plusFile) {
|
|
74
|
+
const confVal = getConfVal(plusFile, 'name');
|
|
75
|
+
if (!confVal)
|
|
73
76
|
return null;
|
|
74
|
-
|
|
77
|
+
assert(confVal.configValueLoaded);
|
|
78
|
+
const name = confVal.configValue;
|
|
79
|
+
const filePathToShowToUser = getFilePathToShowToUser(plusFile);
|
|
75
80
|
assertUsage(typeof name === 'string', `The setting ${pc.bold('name')} defined at ${filePathToShowToUser} should be a string.`);
|
|
76
81
|
return name;
|
|
77
82
|
}
|
|
78
83
|
// We use a forever cache: users need to restart the dev server anyways when touching node_modules/**/* (I presume Vite doesn't pick up node_modules/**/* changes).
|
|
79
84
|
const extensionsVersion = {};
|
|
80
|
-
function getExtensionVersion(name,
|
|
85
|
+
function getExtensionVersion(name, plusFile) {
|
|
81
86
|
if (!extensionsVersion[name]) {
|
|
82
|
-
const extensionConfigFilePath =
|
|
87
|
+
const extensionConfigFilePath = plusFile.filePath.filePathAbsoluteFilesystem;
|
|
83
88
|
const found = findPackageJson(path.posix.dirname(extensionConfigFilePath));
|
|
84
89
|
assert(found);
|
|
85
90
|
const { packageJson, packageJsonPath } = found;
|
|
86
|
-
const filePathToShowToUser = getFilePathToShowToUser(
|
|
91
|
+
const filePathToShowToUser = getFilePathToShowToUser(plusFile);
|
|
87
92
|
const nameExpected = packageJson.name;
|
|
88
93
|
assertWarning(name === nameExpected, `The setting ${pc.bold('name')} defined at ${filePathToShowToUser} is ${pc.bold(JSON.stringify(name))}, but it should be equal to ${pc.bold(JSON.stringify(nameExpected))} (the value of ${packageJsonPath}${pc.dim('#')}${pc.bold('name')})`, { onlyOnce: true });
|
|
89
94
|
const { version } = packageJson;
|
|
@@ -92,8 +97,8 @@ function getExtensionVersion(name, interfaceFile) {
|
|
|
92
97
|
}
|
|
93
98
|
return extensionsVersion[name];
|
|
94
99
|
}
|
|
95
|
-
function getFilePathToShowToUser(
|
|
96
|
-
const { filePathToShowToUserResolved } =
|
|
100
|
+
function getFilePathToShowToUser(plusFile) {
|
|
101
|
+
const { filePathToShowToUserResolved } = plusFile.filePath;
|
|
97
102
|
assert(filePathToShowToUserResolved);
|
|
98
103
|
return filePathToShowToUserResolved;
|
|
99
104
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { configDefinitionsBuiltIn };
|
|
2
2
|
export type { ConfigDefinition };
|
|
3
3
|
export type { ConfigDefinitions };
|
|
4
4
|
export type { ConfigDefinitionInternal };
|
|
@@ -74,4 +74,4 @@ type ConfigDefinitionInternal = Omit<ConfigDefinition, 'env'> & {
|
|
|
74
74
|
type ConfigDefinitions = Record<string, // configName
|
|
75
75
|
ConfigDefinitionInternal>;
|
|
76
76
|
type ConfigDefinitionsBuiltIn = Record<ConfigNameBuiltIn | ConfigNameGlobal, ConfigDefinitionInternal>;
|
|
77
|
-
declare const
|
|
77
|
+
declare const configDefinitionsBuiltIn: ConfigDefinitionsBuiltIn;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { configDefinitionsBuiltIn };
|
|
2
2
|
import { assert, assertUsage } from '../../../../utils.js';
|
|
3
3
|
import { getConfigDefinedAt } from '../../../../../../shared/page-configs/getConfigDefinedAt.js';
|
|
4
|
-
const
|
|
4
|
+
const configDefinitionsBuiltIn = {
|
|
5
5
|
onRenderHtml: {
|
|
6
6
|
env: { server: true }
|
|
7
7
|
},
|
|
@@ -87,11 +87,14 @@ const configDefinitionsBuiltInAll = {
|
|
|
87
87
|
_computed: (configValueSources) => {
|
|
88
88
|
{
|
|
89
89
|
const source = getConfigValueSource(configValueSources, 'clientHooks');
|
|
90
|
-
if (source
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
90
|
+
if (source) {
|
|
91
|
+
assert(source.valueIsLoaded);
|
|
92
|
+
if (source.value !== null) {
|
|
93
|
+
const { value } = source;
|
|
94
|
+
const definedAt = getConfigDefinedAt('Config', 'clientHooks', source.definedAtFilePath);
|
|
95
|
+
assertUsage(typeof value === 'boolean', `${definedAt} should be a boolean`);
|
|
96
|
+
return value;
|
|
97
|
+
}
|
|
95
98
|
}
|
|
96
99
|
}
|
|
97
100
|
return (isConfigSet(configValueSources, 'onRenderClient') &&
|
|
@@ -127,8 +130,7 @@ const configDefinitionsBuiltInAll = {
|
|
|
127
130
|
keepScrollPosition: {
|
|
128
131
|
env: { client: true }
|
|
129
132
|
},
|
|
130
|
-
|
|
131
|
-
middleware: { env: { server: true }, cumulative: true, eager: true },
|
|
133
|
+
middleware: { env: { server: true }, cumulative: true, eager: true, global: true },
|
|
132
134
|
onPrerenderStart: {
|
|
133
135
|
env: { server: true, production: true },
|
|
134
136
|
eager: true,
|
|
@@ -139,7 +141,12 @@ const configDefinitionsBuiltInAll = {
|
|
|
139
141
|
eager: true,
|
|
140
142
|
global: true
|
|
141
143
|
},
|
|
142
|
-
prerender: {
|
|
144
|
+
prerender: {
|
|
145
|
+
env: { config: true },
|
|
146
|
+
global: (value) => typeof value === 'object',
|
|
147
|
+
type: ['boolean', 'object'],
|
|
148
|
+
cumulative: true
|
|
149
|
+
},
|
|
143
150
|
vite: { env: { config: true }, global: true, cumulative: true, type: 'object' },
|
|
144
151
|
disableAutoFullBuild: {
|
|
145
152
|
env: { config: true },
|
|
@@ -150,12 +157,42 @@ const configDefinitionsBuiltInAll = {
|
|
|
150
157
|
'string'
|
|
151
158
|
]
|
|
152
159
|
},
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
160
|
+
viteEnvironmentAPI: {
|
|
161
|
+
env: { config: true },
|
|
162
|
+
global: true,
|
|
163
|
+
type: 'boolean'
|
|
164
|
+
},
|
|
165
|
+
includeAssetsImportedByServer: {
|
|
166
|
+
env: { config: true },
|
|
167
|
+
global: true,
|
|
168
|
+
type: 'boolean'
|
|
169
|
+
},
|
|
170
|
+
baseAssets: {
|
|
171
|
+
env: { config: true, server: true },
|
|
172
|
+
global: true,
|
|
173
|
+
type: 'string'
|
|
174
|
+
},
|
|
175
|
+
baseServer: {
|
|
176
|
+
env: { config: true, server: true },
|
|
177
|
+
global: true,
|
|
178
|
+
type: 'string'
|
|
179
|
+
},
|
|
180
|
+
redirects: {
|
|
181
|
+
env: { server: true },
|
|
182
|
+
global: true,
|
|
183
|
+
type: 'string{}',
|
|
184
|
+
cumulative: true
|
|
185
|
+
},
|
|
186
|
+
trailingSlash: {
|
|
187
|
+
env: { server: true },
|
|
188
|
+
global: true,
|
|
189
|
+
type: 'boolean'
|
|
190
|
+
},
|
|
191
|
+
disableUrlNormalization: {
|
|
192
|
+
env: { server: true },
|
|
193
|
+
global: true,
|
|
194
|
+
type: 'boolean'
|
|
195
|
+
}
|
|
159
196
|
};
|
|
160
197
|
function getConfigEnv(configValueSources, configName) {
|
|
161
198
|
const configValueSource = getConfigValueSource(configValueSources, configName);
|
|
@@ -170,11 +207,11 @@ function getConfigEnv(configValueSources, configName) {
|
|
|
170
207
|
return env;
|
|
171
208
|
}
|
|
172
209
|
function isConfigSet(configValueSources, configName) {
|
|
173
|
-
const
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
210
|
+
const source = getConfigValueSource(configValueSources, configName);
|
|
211
|
+
return (!!source &&
|
|
212
|
+
!(source.valueIsLoaded &&
|
|
213
|
+
// Enable users to suppress inherited config by overriding it with `null`
|
|
214
|
+
source.value === null));
|
|
178
215
|
}
|
|
179
216
|
function getConfigValueSource(configValueSources, configName) {
|
|
180
217
|
const sources = configValueSources[configName];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { getConfigFileExport };
|
|
2
2
|
import pc from '@brillout/picocolors';
|
|
3
|
-
import { assertPlusFileExport } from '
|
|
4
|
-
import { assertUsage, isObject } from '
|
|
3
|
+
import { assertPlusFileExport } from '../../../../../../shared/page-configs/assertPlusFileExport.js';
|
|
4
|
+
import { assertUsage, isObject } from '../../../../utils.js';
|
|
5
5
|
function getConfigFileExport(fileExports, filePathToShowToUser) {
|
|
6
6
|
assertPlusFileExport(fileExports, filePathToShowToUser, 'config');
|
|
7
7
|
const usesNamedExport = !!fileExports.config;
|
package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.d.ts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export { getPlusFilesAll };
|
|
2
|
+
export { getPlusFileValueConfigName };
|
|
3
|
+
export type { PlusFileValue };
|
|
4
|
+
export type { PlusFile };
|
|
5
|
+
export type { PlusFilesByLocationId };
|
|
6
|
+
import { type LocationId } from './filesystemRouting.js';
|
|
7
|
+
import { type EsbuildCache } from './transpileAndExecuteFile.js';
|
|
8
|
+
import { PointerImportLoaded } from './loadFileAtConfigTime.js';
|
|
9
|
+
import type { FilePathResolved } from '../../../../../../shared/page-configs/FilePath.js';
|
|
10
|
+
type PlusFile = PlusFileConfig | PlusFileValue;
|
|
11
|
+
type PlusFileCommons = {
|
|
12
|
+
locationId: LocationId;
|
|
13
|
+
filePath: FilePathResolved;
|
|
14
|
+
};
|
|
15
|
+
type PlusFileConfig = PlusFileCommons & {
|
|
16
|
+
isConfigFile: true;
|
|
17
|
+
fileExportsByConfigName: Record<string, // configName
|
|
18
|
+
unknown>;
|
|
19
|
+
pointerImportsByConfigName: Record<string, // configName
|
|
20
|
+
PointerImportLoaded>;
|
|
21
|
+
isExtensionConfig: boolean;
|
|
22
|
+
extendsFilePaths: string[];
|
|
23
|
+
isNotLoaded?: undefined;
|
|
24
|
+
};
|
|
25
|
+
type PlusFileValue = PlusFileCommons & {
|
|
26
|
+
isConfigFile: false;
|
|
27
|
+
configName: string;
|
|
28
|
+
} & ({
|
|
29
|
+
isNotLoaded: false;
|
|
30
|
+
fileExportsByConfigName: Record<string, // configName
|
|
31
|
+
unknown>;
|
|
32
|
+
} | {
|
|
33
|
+
isNotLoaded: true;
|
|
34
|
+
}) & {
|
|
35
|
+
isExtensionConfig?: undefined;
|
|
36
|
+
};
|
|
37
|
+
type PlusFilesByLocationId = Record<LocationId, PlusFile[]>;
|
|
38
|
+
declare function getPlusFilesAll(userRootDir: string, esbuildCache: EsbuildCache): Promise<PlusFilesByLocationId>;
|
|
39
|
+
declare function getPlusFileValueConfigName(filePath: string): string | null;
|
package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.js
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
export { getPlusFilesAll };
|
|
2
|
+
export { getPlusFileValueConfigName };
|
|
3
|
+
import { assert, assertPosixPath, assertUsage } from '../../../../utils.js';
|
|
4
|
+
import { configDefinitionsBuiltIn } from './configDefinitionsBuiltIn.js';
|
|
5
|
+
import { getLocationId } from './filesystemRouting.js';
|
|
6
|
+
import { isTemporaryBuildFile } from './transpileAndExecuteFile.js';
|
|
7
|
+
import { crawlPlusFiles } from './crawlPlusFiles.js';
|
|
8
|
+
import { getConfigFileExport } from './getConfigFileExport.js';
|
|
9
|
+
import { loadConfigFile, loadValueFile } from './loadFileAtConfigTime.js';
|
|
10
|
+
import { resolvePointerImport } from './resolvePointerImport.js';
|
|
11
|
+
import { getFilePathResolved } from '../../../../shared/getFilePath.js';
|
|
12
|
+
import { assertExtensionsConventions } from './assertExtensions.js';
|
|
13
|
+
import path from 'node:path';
|
|
14
|
+
async function getPlusFilesAll(userRootDir, esbuildCache) {
|
|
15
|
+
const plusFiles = await findPlusFiles(userRootDir, null);
|
|
16
|
+
const configFiles = [];
|
|
17
|
+
const valueFiles = [];
|
|
18
|
+
plusFiles.forEach((f) => {
|
|
19
|
+
if (getPlusFileValueConfigName(f.filePathAbsoluteFilesystem) === 'config') {
|
|
20
|
+
configFiles.push(f);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
valueFiles.push(f);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
let plusFilesAll = {};
|
|
27
|
+
await Promise.all([
|
|
28
|
+
// Config files
|
|
29
|
+
...configFiles.map(async (filePath) => {
|
|
30
|
+
const { filePathAbsoluteUserRootDir } = filePath;
|
|
31
|
+
assert(filePathAbsoluteUserRootDir);
|
|
32
|
+
const { configFile, extendsConfigs } = await loadConfigFile(filePath, userRootDir, [], false, esbuildCache);
|
|
33
|
+
assert(filePath.filePathAbsoluteUserRootDir);
|
|
34
|
+
const locationId = getLocationId(filePathAbsoluteUserRootDir);
|
|
35
|
+
const plusFile = getPlusFileFromConfigFile(configFile, false, locationId, userRootDir);
|
|
36
|
+
plusFilesAll[locationId] = plusFilesAll[locationId] ?? [];
|
|
37
|
+
plusFilesAll[locationId].push(plusFile);
|
|
38
|
+
extendsConfigs.forEach((extendsConfig) => {
|
|
39
|
+
/* We purposely use the same locationId because the Vike extension's config should only apply to where it's being extended from, for example:
|
|
40
|
+
```js
|
|
41
|
+
// /pages/admin/+config.js
|
|
42
|
+
|
|
43
|
+
import vikeVue from 'vike-vue/config'
|
|
44
|
+
// Should only apply to /pages/admin/**
|
|
45
|
+
export default { extends: [vikeVue] }
|
|
46
|
+
```
|
|
47
|
+
```js
|
|
48
|
+
// /pages/marketing/+config.js
|
|
49
|
+
|
|
50
|
+
import vikeReact from 'vike-react/config'
|
|
51
|
+
// Should only apply to /pages/marketing/**
|
|
52
|
+
export default { extends: [vikeReact] }
|
|
53
|
+
```
|
|
54
|
+
*/
|
|
55
|
+
const plusFile = getPlusFileFromConfigFile(extendsConfig, true, locationId, userRootDir);
|
|
56
|
+
assertExtensionsConventions(plusFile);
|
|
57
|
+
plusFilesAll[locationId].push(plusFile);
|
|
58
|
+
});
|
|
59
|
+
}),
|
|
60
|
+
// Value files
|
|
61
|
+
...valueFiles.map(async (filePath) => {
|
|
62
|
+
const { filePathAbsoluteUserRootDir } = filePath;
|
|
63
|
+
assert(filePathAbsoluteUserRootDir);
|
|
64
|
+
const configName = getPlusFileValueConfigName(filePathAbsoluteUserRootDir);
|
|
65
|
+
assert(configName);
|
|
66
|
+
const locationId = getLocationId(filePathAbsoluteUserRootDir);
|
|
67
|
+
const plusFile = {
|
|
68
|
+
locationId,
|
|
69
|
+
filePath,
|
|
70
|
+
isConfigFile: false,
|
|
71
|
+
isNotLoaded: true,
|
|
72
|
+
configName
|
|
73
|
+
};
|
|
74
|
+
plusFilesAll[locationId] = plusFilesAll[locationId] ?? [];
|
|
75
|
+
plusFilesAll[locationId].push(plusFile);
|
|
76
|
+
// We don't have access to the custom config definitions defined by the user yet.
|
|
77
|
+
// - If `configDef` is `undefined` => we load the file +{configName}.js later.
|
|
78
|
+
// - We already need to load +meta.js here (to get the custom config definitions defined by the user)
|
|
79
|
+
await loadValueFile(plusFile, configDefinitionsBuiltIn, userRootDir, esbuildCache);
|
|
80
|
+
})
|
|
81
|
+
]);
|
|
82
|
+
// Make lists element order deterministic
|
|
83
|
+
Object.entries(plusFilesAll).forEach(([_locationId, plusFiles]) => {
|
|
84
|
+
plusFiles.sort(sortMakeDeterministic);
|
|
85
|
+
});
|
|
86
|
+
return plusFilesAll;
|
|
87
|
+
}
|
|
88
|
+
function getPlusFileFromConfigFile(configFile, isExtensionConfig, locationId, userRootDir) {
|
|
89
|
+
const { fileExports, filePath, extendsFilePaths } = configFile;
|
|
90
|
+
const fileExportsByConfigName = {};
|
|
91
|
+
const pointerImportsByConfigName = {};
|
|
92
|
+
const fileExport = getConfigFileExport(fileExports, filePath.filePathToShowToUser);
|
|
93
|
+
Object.entries(fileExport).forEach(([configName, configValue]) => {
|
|
94
|
+
fileExportsByConfigName[configName] = configValue;
|
|
95
|
+
const pointerImport = resolvePointerImport(configValue, configFile.filePath, userRootDir, configName);
|
|
96
|
+
if (pointerImport) {
|
|
97
|
+
pointerImportsByConfigName[configName] = {
|
|
98
|
+
...pointerImport,
|
|
99
|
+
fileExportValueLoaded: false
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
const plusFile = {
|
|
104
|
+
locationId,
|
|
105
|
+
filePath,
|
|
106
|
+
fileExportsByConfigName,
|
|
107
|
+
pointerImportsByConfigName,
|
|
108
|
+
isConfigFile: true,
|
|
109
|
+
isExtensionConfig,
|
|
110
|
+
extendsFilePaths
|
|
111
|
+
};
|
|
112
|
+
return plusFile;
|
|
113
|
+
}
|
|
114
|
+
// Make order deterministic (no other purpose)
|
|
115
|
+
function sortMakeDeterministic(plusFile1, plusFile2) {
|
|
116
|
+
return plusFile1.filePath.filePathAbsoluteVite < plusFile2.filePath.filePathAbsoluteVite ? -1 : 1;
|
|
117
|
+
}
|
|
118
|
+
async function findPlusFiles(userRootDir, outDirRoot) {
|
|
119
|
+
const files = await crawlPlusFiles(userRootDir, outDirRoot);
|
|
120
|
+
const plusFiles = files.map(({ filePathAbsoluteUserRootDir }) => getFilePathResolved({ filePathAbsoluteUserRootDir, userRootDir }));
|
|
121
|
+
return plusFiles;
|
|
122
|
+
}
|
|
123
|
+
function getPlusFileValueConfigName(filePath) {
|
|
124
|
+
assertPosixPath(filePath);
|
|
125
|
+
if (isTemporaryBuildFile(filePath))
|
|
126
|
+
return null;
|
|
127
|
+
const fileName = path.posix.basename(filePath);
|
|
128
|
+
// assertNoUnexpectedPlusSign(filePath, fileName)
|
|
129
|
+
const basename = fileName.split('.')[0];
|
|
130
|
+
if (!basename.startsWith('+')) {
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
const configName = basename.slice(1);
|
|
135
|
+
assertUsage(configName !== '', `${filePath} Invalid filename ${fileName}`);
|
|
136
|
+
return configName;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/* https://github.com/vikejs/vike/issues/1407
|
|
140
|
+
function assertNoUnexpectedPlusSign(filePath: string, fileName: string) {
|
|
141
|
+
const dirs = path.posix.dirname(filePath).split('/')
|
|
142
|
+
dirs.forEach((dir, i) => {
|
|
143
|
+
const dirPath = dirs.slice(0, i + 1).join('/')
|
|
144
|
+
assertUsage(
|
|
145
|
+
!dir.includes('+'),
|
|
146
|
+
`Character '+' is a reserved character: remove '+' from the directory name ${dirPath}/`
|
|
147
|
+
)
|
|
148
|
+
})
|
|
149
|
+
assertUsage(
|
|
150
|
+
!fileName.slice(1).includes('+'),
|
|
151
|
+
`Character '+' is only allowed at the beginning of filenames: make sure ${filePath} doesn't contain any '+' in its filename other than its first letter`
|
|
152
|
+
)
|
|
153
|
+
}
|
|
154
|
+
*/
|
|
@@ -1,21 +1,27 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { loadPointerImport };
|
|
2
2
|
export { loadValueFile };
|
|
3
3
|
export { loadConfigFile };
|
|
4
|
-
export type { ImportedFilesLoaded };
|
|
5
4
|
export type { ConfigFile };
|
|
5
|
+
export type { PointerImportLoaded };
|
|
6
6
|
import type { FilePathResolved } from '../../../../../../shared/page-configs/FilePath.js';
|
|
7
|
-
import type
|
|
8
|
-
type
|
|
7
|
+
import { type EsbuildCache } from './transpileAndExecuteFile.js';
|
|
8
|
+
import type { PlusFileValue } from './getPlusFilesAll.js';
|
|
9
|
+
import { PointerImport } from './resolvePointerImport.js';
|
|
10
|
+
import type { ConfigDefinitions } from './configDefinitionsBuiltIn.js';
|
|
9
11
|
type ConfigFile = {
|
|
10
12
|
fileExports: Record<string, unknown>;
|
|
11
13
|
filePath: FilePathResolved;
|
|
12
14
|
extendsFilePaths: string[];
|
|
13
15
|
};
|
|
14
|
-
declare function
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
declare function loadPointerImport(pointerImport: PointerImportLoaded, userRootDir: string, configName: string, configDefinitions: ConfigDefinitions, esbuildCache: EsbuildCache): Promise<unknown>;
|
|
17
|
+
type PointerImportLoaded = PointerImport & ({
|
|
18
|
+
fileExportValueLoaded: true;
|
|
19
|
+
fileExportValue: unknown;
|
|
20
|
+
} | {
|
|
21
|
+
fileExportValueLoaded: false;
|
|
22
|
+
});
|
|
23
|
+
declare function loadValueFile(interfaceValueFile: PlusFileValue, configDefinitions: ConfigDefinitions, userRootDir: string, esbuildCache: EsbuildCache): Promise<void>;
|
|
24
|
+
declare function loadConfigFile(configFilePath: FilePathResolved, userRootDir: string, visited: string[], isExtensionConfig: boolean, esbuildCache: EsbuildCache): Promise<{
|
|
19
25
|
configFile: ConfigFile;
|
|
20
26
|
extendsConfigs: ConfigFile[];
|
|
21
27
|
}>;
|