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
|
@@ -2,86 +2,94 @@
|
|
|
2
2
|
export { getGlobalContextSync };
|
|
3
3
|
export { getGlobalContextAsync };
|
|
4
4
|
// Internal use
|
|
5
|
-
export {
|
|
5
|
+
export { getGlobalContextInternal };
|
|
6
6
|
export { getViteDevServer };
|
|
7
7
|
export { getViteConfig };
|
|
8
|
-
export { getRuntimeManifest };
|
|
9
8
|
export { initGlobalContext_renderPage };
|
|
10
9
|
export { initGlobalContext_runPrerender };
|
|
11
|
-
export {
|
|
10
|
+
export { initGlobalContext_getPagesAndRoutes };
|
|
12
11
|
export { setGlobalContext_viteDevServer };
|
|
13
12
|
export { setGlobalContext_viteConfig };
|
|
14
|
-
export { setGlobalContext_vikeConfig };
|
|
15
|
-
export { setGlobalContext_isViteDev };
|
|
16
13
|
export { setGlobalContext_isPrerendering };
|
|
14
|
+
export { setGlobalContext_isProduction };
|
|
17
15
|
export { setGlobalContext_buildEntry };
|
|
18
16
|
export { clearGlobalContext };
|
|
19
|
-
|
|
17
|
+
export { assertBuildInfo };
|
|
18
|
+
export { getViteConfigRuntime };
|
|
19
|
+
export { updateUserFiles };
|
|
20
|
+
// The core logic revolves around:
|
|
21
|
+
// - globalObject.userFiles which is the main requirement for assembleGlobalContext()
|
|
22
|
+
// - In production: globalObject.buildEntry which is the production entry set by @brillout/vite-plugin-server-entry
|
|
23
|
+
// - loadBuildEntry() sets globalObject.buildEntry and then sets globalObject.userFiles
|
|
24
|
+
// - With vike-server it's set at server start: @brillout/vite-plugin-server-entry injects `import './entry.mjs'` (the production entry generated by @brillout/vite-plugin-server-entry) as first line of code of dist/server/index.mjs while dist/server/entry.mjs calls setGlobalContext_buildEntry()
|
|
25
|
+
// - Without vike-server it's manually loaded here using importServerProductionEntry() which uses @brillout/vite-plugin-server-entry's autoImporter or crawler
|
|
26
|
+
// - In development: globalObject.viteDevServer which is Vite's development server
|
|
27
|
+
// - globalObject.viteDevServer is used by updateUserFiles() which then sets globalConfig.userFiles
|
|
28
|
+
import { assert, onSetupRuntime, assertUsage, assertWarning, isPlainObject, objectAssign, objectReplace, isObject, hasProp, debugGlob, getGlobalObject, genPromise, createDebugger, makePublicCopy, projectInfo, checkType } from './utils.js';
|
|
20
29
|
import { importServerProductionEntry } from '@brillout/vite-plugin-server-entry/runtime';
|
|
21
30
|
import { virtualFileIdImportUserCodeServer } from '../shared/virtual-files/virtualFileImportUserCode.js';
|
|
22
|
-
import { getPageFilesAll, setPageFiles, setPageFilesAsync } from '../../shared/getPageFiles/getPageFiles.js';
|
|
23
|
-
import { assertPluginManifest } from '../shared/assertPluginManifest.js';
|
|
24
|
-
import { assertRuntimeManifest } from '../shared/assertRuntimeManifest.js';
|
|
25
31
|
import pc from '@brillout/picocolors';
|
|
26
|
-
import { resolveBaseFromResolvedConfig } from '../shared/resolveBase.js';
|
|
27
32
|
import { loadPageRoutes } from '../../shared/route/loadPageRoutes.js';
|
|
28
33
|
import { assertV1Design } from '../shared/assertV1Design.js';
|
|
34
|
+
import { getPageConfigsRuntime } from '../../shared/getPageConfigsRuntime.js';
|
|
29
35
|
const debug = createDebugger('vike:globalContext');
|
|
30
36
|
const globalObject = getGlobalObject('globalContext.ts', getInitialGlobalContext());
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
37
|
+
async function getGlobalContextInternal() {
|
|
38
|
+
// getGlobalContextInternal() should always be called after initGlobalContext()
|
|
39
|
+
assert(globalObject.isInitialized);
|
|
40
|
+
assertGlobalContextIsDefined();
|
|
41
|
+
if (globalObject.isProduction !== true)
|
|
42
|
+
await globalObject.waitForUserFilesUpdate;
|
|
43
|
+
const { globalContext } = globalObject;
|
|
44
|
+
assertIsDefined(globalContext);
|
|
45
|
+
return globalContext;
|
|
46
|
+
}
|
|
47
|
+
function assertIsDefined(globalContext) {
|
|
48
|
+
if (!globalContext) {
|
|
49
|
+
debug('globalContext', globalContext);
|
|
50
|
+
debug('assertIsDefined()', new Error().stack);
|
|
35
51
|
assert(false);
|
|
36
52
|
}
|
|
37
|
-
|
|
53
|
+
}
|
|
54
|
+
function assertGlobalContextIsDefined() {
|
|
55
|
+
assertIsDefined(globalObject.globalContext);
|
|
56
|
+
assert(globalObject.globalContext_public);
|
|
38
57
|
}
|
|
39
58
|
/** @experimental https://vike.dev/getGlobalContext */
|
|
40
59
|
function getGlobalContextSync() {
|
|
41
|
-
|
|
42
|
-
|
|
60
|
+
const { globalContext_public } = globalObject;
|
|
61
|
+
assertUsage(globalContext_public, "The global context isn't set yet, call getGlobalContextSync() later or use getGlobalContextAsync() instead.");
|
|
62
|
+
return globalContext_public;
|
|
43
63
|
}
|
|
44
64
|
/** @experimental https://vike.dev/getGlobalContext */
|
|
45
65
|
async function getGlobalContextAsync(isProduction) {
|
|
46
66
|
assertUsage(typeof isProduction === 'boolean', `[getGlobalContextAsync(isProduction)] Argument ${pc.cyan('isProduction')} ${isProduction === undefined ? 'is missing' : `should be ${pc.cyan('true')} or ${pc.cyan('false')}`}`);
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
67
|
+
setIsProduction(isProduction);
|
|
68
|
+
if (!globalObject.globalContext)
|
|
69
|
+
await initGlobalContext_getGlobalContextAsync();
|
|
70
|
+
if (!isProduction)
|
|
71
|
+
await globalObject.waitForUserFilesUpdate;
|
|
72
|
+
assertGlobalContextIsDefined();
|
|
73
|
+
const { globalContext_public } = globalObject;
|
|
74
|
+
assert(globalContext_public);
|
|
75
|
+
return globalContext_public;
|
|
51
76
|
}
|
|
52
77
|
function makePublic(globalContext) {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
assetsManifest: globalContext.assetsManifest
|
|
56
|
-
};
|
|
57
|
-
// Add internals (and prepended _ prefix to their keys)
|
|
58
|
-
{
|
|
59
|
-
const publicKeys = Object.keys(globalContextPublic);
|
|
60
|
-
objectKeys(globalContext)
|
|
61
|
-
.filter((key) => !publicKeys.includes(key))
|
|
62
|
-
.forEach((key) => {
|
|
63
|
-
const keyPublic = `_${key}`;
|
|
64
|
-
Object.defineProperty(globalContextPublic, keyPublic, {
|
|
65
|
-
enumerable: true,
|
|
66
|
-
get() {
|
|
67
|
-
assertWarning(false, `Using internal globalContext.${keyPublic} which is discouraged: it may break in any minor version update. Instead, reach out on GitHub and elaborate your use case.`, {
|
|
68
|
-
onlyOnce: true
|
|
69
|
-
});
|
|
70
|
-
return globalContext[key];
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
});
|
|
74
|
-
}
|
|
78
|
+
// TODO/soon: add `pages`
|
|
79
|
+
const globalContextPublic = makePublicCopy(globalContext, 'globalContext', ['assetsManifest', 'config', 'viteConfig']);
|
|
75
80
|
return globalContextPublic;
|
|
76
81
|
}
|
|
77
|
-
function setGlobalContext_viteDevServer(viteDevServer) {
|
|
82
|
+
async function setGlobalContext_viteDevServer(viteDevServer) {
|
|
83
|
+
debug('setGlobalContext_viteDevServer()');
|
|
84
|
+
setIsProduction(false);
|
|
78
85
|
if (globalObject.viteDevServer)
|
|
79
86
|
return;
|
|
80
87
|
assertIsNotInitilizedYet();
|
|
81
88
|
assert(globalObject.viteConfig);
|
|
82
89
|
globalObject.viteDevServer = viteDevServer;
|
|
90
|
+
await updateUserFiles();
|
|
91
|
+
assertGlobalContextIsDefined();
|
|
83
92
|
globalObject.viteDevServerPromiseResolve(viteDevServer);
|
|
84
|
-
eagerlyLoadUserFiles();
|
|
85
93
|
}
|
|
86
94
|
function setGlobalContext_viteConfig(viteConfig, outDirRoot) {
|
|
87
95
|
if (globalObject.viteConfig)
|
|
@@ -90,21 +98,16 @@ function setGlobalContext_viteConfig(viteConfig, outDirRoot) {
|
|
|
90
98
|
globalObject.viteConfig = viteConfig;
|
|
91
99
|
globalObject.outDirRoot = outDirRoot;
|
|
92
100
|
}
|
|
93
|
-
function setGlobalContext_vikeConfig(vikeConfig) {
|
|
94
|
-
if (globalObject.vikeConfig)
|
|
95
|
-
return;
|
|
96
|
-
assertIsNotInitilizedYet();
|
|
97
|
-
globalObject.vikeConfig = vikeConfig;
|
|
98
|
-
}
|
|
99
101
|
function assertIsNotInitilizedYet() {
|
|
100
|
-
// In
|
|
102
|
+
// In development, globalObject.viteDevServer always needs to be awaited for before initializing globalObject.globalContext
|
|
101
103
|
assert(!globalObject.globalContext);
|
|
102
104
|
}
|
|
103
|
-
function setGlobalContext_isViteDev(isViteDev) {
|
|
104
|
-
globalObject.isViteDev = isViteDev;
|
|
105
|
-
}
|
|
106
105
|
function setGlobalContext_isPrerendering() {
|
|
107
106
|
globalObject.isPrerendering = true;
|
|
107
|
+
setIsProduction(true);
|
|
108
|
+
}
|
|
109
|
+
function setGlobalContext_isProduction(isProduction) {
|
|
110
|
+
setIsProduction(isProduction);
|
|
108
111
|
}
|
|
109
112
|
function getViteDevServer() {
|
|
110
113
|
return globalObject.viteDevServer ?? null;
|
|
@@ -114,10 +117,15 @@ function getViteConfig() {
|
|
|
114
117
|
}
|
|
115
118
|
async function initGlobalContext_renderPage() {
|
|
116
119
|
debug('initGlobalContext_renderPage()');
|
|
117
|
-
|
|
120
|
+
// globalObject.isProduction isn't set upon production server without vike-server (there isn't any signal we can use)
|
|
121
|
+
if (globalObject.isProduction === undefined)
|
|
122
|
+
setIsProduction(true);
|
|
123
|
+
await initGlobalContext();
|
|
118
124
|
}
|
|
119
125
|
async function initGlobalContext_runPrerender() {
|
|
120
126
|
debug('initGlobalContext_runPrerender()');
|
|
127
|
+
assert(globalObject.isPrerendering === true);
|
|
128
|
+
assert(globalObject.isProduction === true);
|
|
121
129
|
if (globalObject.initGlobalContext_runPrerender_alreadyCalled)
|
|
122
130
|
return;
|
|
123
131
|
globalObject.initGlobalContext_runPrerender_alreadyCalled = true;
|
|
@@ -127,99 +135,122 @@ async function initGlobalContext_runPrerender() {
|
|
|
127
135
|
// We assume initGlobalContext_runPrerender() to be called before:
|
|
128
136
|
// - initGlobalContext_renderPage()
|
|
129
137
|
// - initGlobalContext_getGlobalContextAsync()
|
|
130
|
-
|
|
131
|
-
await initGlobalContext(
|
|
138
|
+
assertIsNotInitilizedYet();
|
|
139
|
+
await initGlobalContext();
|
|
132
140
|
}
|
|
133
|
-
async function initGlobalContext_getGlobalContextAsync(
|
|
141
|
+
async function initGlobalContext_getGlobalContextAsync() {
|
|
134
142
|
debug('initGlobalContext_getGlobalContextAsync()');
|
|
143
|
+
await initGlobalContext();
|
|
144
|
+
}
|
|
145
|
+
async function initGlobalContext_getPagesAndRoutes() {
|
|
146
|
+
debug('initGlobalContext_getPagesAndRoutes()');
|
|
147
|
+
setIsProduction(true);
|
|
148
|
+
await initGlobalContext();
|
|
149
|
+
}
|
|
150
|
+
async function waitForViteDevServer() {
|
|
151
|
+
debug('waitForViteDevServer()');
|
|
152
|
+
const waitFor = 20;
|
|
153
|
+
const timeout = setTimeout(() => {
|
|
154
|
+
assertWarning(false, `Vite's development server still not created after ${waitFor} seconds.`, {
|
|
155
|
+
onlyOnce: false,
|
|
156
|
+
showStackTrace: true
|
|
157
|
+
});
|
|
158
|
+
}, waitFor * 1000);
|
|
159
|
+
await globalObject.viteDevServerPromise;
|
|
160
|
+
clearTimeout(timeout);
|
|
161
|
+
assertGlobalContextIsDefined();
|
|
162
|
+
}
|
|
163
|
+
async function initGlobalContext() {
|
|
164
|
+
const { isProduction } = globalObject;
|
|
165
|
+
assert(typeof isProduction === 'boolean');
|
|
135
166
|
if (!isProduction) {
|
|
136
|
-
|
|
137
|
-
const timeout = setTimeout(() => {
|
|
138
|
-
assertWarning(false, `Vite's development server still not created after ${waitFor} seconds.`, {
|
|
139
|
-
onlyOnce: false,
|
|
140
|
-
showStackTrace: true
|
|
141
|
-
});
|
|
142
|
-
}, waitFor * 1000);
|
|
143
|
-
await globalObject.viteDevServerPromise;
|
|
144
|
-
clearTimeout(timeout);
|
|
167
|
+
await waitForViteDevServer();
|
|
145
168
|
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
// TODO/now: refactor: move this to the top of the file
|
|
149
|
-
async function initGlobalContext(isProduction) {
|
|
150
|
-
if (globalObject.globalContext) {
|
|
151
|
-
assert(globalObject.globalContext.isProduction === isProduction);
|
|
152
|
-
// We assume setGlobalContext_isPrerendering() is called before initGlobalContext()
|
|
153
|
-
assert(globalObject.globalContext.isPrerendering === (globalObject.isPrerendering ?? false));
|
|
154
|
-
return;
|
|
169
|
+
else {
|
|
170
|
+
await loadBuildEntry(globalObject.outDirRoot);
|
|
155
171
|
}
|
|
156
|
-
|
|
172
|
+
assertGlobalContextIsDefined();
|
|
173
|
+
globalObject.isInitialized = true;
|
|
174
|
+
}
|
|
175
|
+
function setIsProduction(isProduction) {
|
|
176
|
+
debug('setIsProduction', isProduction);
|
|
177
|
+
assert(typeof isProduction === 'boolean');
|
|
178
|
+
if (globalObject.isProduction !== undefined)
|
|
179
|
+
assert(globalObject.isProduction === isProduction);
|
|
180
|
+
globalObject.isProduction = isProduction;
|
|
181
|
+
}
|
|
182
|
+
function defineGlobalContext() {
|
|
183
|
+
const globalContext = assembleGlobalContext();
|
|
184
|
+
assertIsDefined(globalContext);
|
|
185
|
+
const globalContext_public = makePublic(globalContext);
|
|
186
|
+
objectAssign(globalContext, { globalContext_public });
|
|
187
|
+
globalObject.globalContext = globalContext;
|
|
188
|
+
globalObject.globalContext_public = globalContext_public;
|
|
189
|
+
assertGlobalContextIsDefined();
|
|
157
190
|
onSetupRuntime();
|
|
191
|
+
}
|
|
192
|
+
function assembleGlobalContext() {
|
|
193
|
+
const { viteDevServer, viteConfig, isPrerendering, isProduction, userFiles } = globalObject;
|
|
194
|
+
assert(typeof isProduction === 'boolean');
|
|
195
|
+
let globalContext;
|
|
158
196
|
if (!isProduction) {
|
|
197
|
+
// Requires globalObject.viteDevServer
|
|
198
|
+
if (!viteDevServer)
|
|
199
|
+
return null;
|
|
200
|
+
assert(userFiles); // main common requiement
|
|
159
201
|
assert(viteConfig);
|
|
160
|
-
assert(vikeConfig);
|
|
161
|
-
assert(viteDevServer);
|
|
162
202
|
assert(!isPrerendering);
|
|
163
|
-
const
|
|
164
|
-
|
|
165
|
-
globalObject.globalContext = {
|
|
203
|
+
const viteConfigRuntime = getViteConfigRuntime(viteConfig);
|
|
204
|
+
globalContext = {
|
|
166
205
|
isProduction: false,
|
|
167
206
|
isPrerendering: false,
|
|
168
207
|
assetsManifest: null,
|
|
169
208
|
viteDevServer,
|
|
170
209
|
viteConfig,
|
|
171
|
-
vikeConfig: {
|
|
172
|
-
global: globalConfig
|
|
173
|
-
},
|
|
174
210
|
...userFiles,
|
|
175
|
-
|
|
176
|
-
baseAssets: pluginManifest.baseAssets,
|
|
177
|
-
includeAssetsImportedByServer: pluginManifest.includeAssetsImportedByServer,
|
|
178
|
-
trailingSlash: pluginManifest.trailingSlash,
|
|
179
|
-
disableUrlNormalization: pluginManifest.disableUrlNormalization
|
|
211
|
+
viteConfigRuntime
|
|
180
212
|
};
|
|
181
213
|
}
|
|
182
214
|
else {
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
215
|
+
// Requires globalObject.buildEntry
|
|
216
|
+
if (!globalObject.buildEntry)
|
|
217
|
+
return null;
|
|
218
|
+
assert(userFiles); // main common requiement
|
|
219
|
+
const { buildInfo, assetsManifest } = globalObject;
|
|
220
|
+
assert(buildInfo);
|
|
221
|
+
assert(assetsManifest);
|
|
222
|
+
const globalContext_ = {
|
|
190
223
|
isProduction: true,
|
|
191
224
|
assetsManifest,
|
|
192
|
-
vikeConfig: {
|
|
193
|
-
global: globalConfig
|
|
194
|
-
},
|
|
195
225
|
...userFiles,
|
|
196
226
|
viteDevServer: null,
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
includeAssetsImportedByServer: pluginManifest.includeAssetsImportedByServer,
|
|
200
|
-
trailingSlash: pluginManifest.trailingSlash,
|
|
201
|
-
usesClientRouter: pluginManifest.usesClientRouter,
|
|
202
|
-
disableUrlNormalization: pluginManifest.disableUrlNormalization
|
|
227
|
+
viteConfigRuntime: buildInfo.viteConfigRuntime,
|
|
228
|
+
usesClientRouter: buildInfo.usesClientRouter
|
|
203
229
|
};
|
|
204
230
|
if (isPrerendering) {
|
|
205
231
|
assert(viteConfig);
|
|
206
|
-
objectAssign(
|
|
232
|
+
objectAssign(globalContext_, {
|
|
207
233
|
isPrerendering: true,
|
|
208
234
|
viteConfig
|
|
209
235
|
});
|
|
210
|
-
|
|
236
|
+
globalContext = globalContext_;
|
|
211
237
|
}
|
|
212
238
|
else {
|
|
213
|
-
objectAssign(
|
|
239
|
+
objectAssign(globalContext_, {
|
|
214
240
|
isPrerendering: false,
|
|
215
241
|
viteConfig: null
|
|
216
242
|
});
|
|
217
|
-
|
|
243
|
+
globalContext = globalContext_;
|
|
218
244
|
}
|
|
219
245
|
}
|
|
246
|
+
return globalContext;
|
|
220
247
|
}
|
|
221
|
-
async function
|
|
222
|
-
|
|
248
|
+
async function getUserFiles() {
|
|
249
|
+
// Help TypeScript resolve what TypeScript (wrongfully) believes to be cyclic dependency
|
|
250
|
+
const globalObject_ = globalObject;
|
|
251
|
+
const { pageConfigsRuntime } = globalObject_;
|
|
252
|
+
assert(pageConfigsRuntime);
|
|
253
|
+
const { pageFilesAll, allPageIds, pageConfigs, pageConfigGlobal, globalConfig } = pageConfigsRuntime;
|
|
223
254
|
const { pageRoutes, onBeforeRouteHook } = await loadPageRoutes(pageFilesAll, pageConfigs, pageConfigGlobal, allPageIds);
|
|
224
255
|
const userFiles = {
|
|
225
256
|
pageFilesAll,
|
|
@@ -227,25 +258,13 @@ async function getPageRuntimeInfo(isProduction) {
|
|
|
227
258
|
pageConfigGlobal,
|
|
228
259
|
allPageIds,
|
|
229
260
|
pageRoutes,
|
|
230
|
-
onBeforeRouteHook
|
|
261
|
+
onBeforeRouteHook,
|
|
262
|
+
config: globalConfig.config
|
|
231
263
|
};
|
|
232
264
|
assertV1Design(
|
|
233
265
|
// pageConfigs is PageConfigRuntime[] but assertV1Design() requires PageConfigBuildTime[]
|
|
234
266
|
pageConfigs.length > 0, pageFilesAll);
|
|
235
|
-
return
|
|
236
|
-
}
|
|
237
|
-
function getRuntimeManifest(vikeConfigGlobal, viteConfig) {
|
|
238
|
-
const { includeAssetsImportedByServer, trailingSlash, disableUrlNormalization } = vikeConfigGlobal;
|
|
239
|
-
const { baseServer, baseAssets } = resolveBaseFromResolvedConfig(vikeConfigGlobal.baseServer, vikeConfigGlobal.baseAssets, viteConfig);
|
|
240
|
-
const manifest = {
|
|
241
|
-
baseServer,
|
|
242
|
-
baseAssets,
|
|
243
|
-
includeAssetsImportedByServer,
|
|
244
|
-
trailingSlash,
|
|
245
|
-
disableUrlNormalization
|
|
246
|
-
};
|
|
247
|
-
assertRuntimeManifest(manifest);
|
|
248
|
-
return manifest;
|
|
267
|
+
return userFiles;
|
|
249
268
|
}
|
|
250
269
|
function assertViteManifest(manifest) {
|
|
251
270
|
assert(isPlainObject(manifest));
|
|
@@ -260,54 +279,107 @@ function assertViteManifest(manifest) {
|
|
|
260
279
|
})
|
|
261
280
|
*/
|
|
262
281
|
}
|
|
263
|
-
function
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
282
|
+
async function loadBuildEntry(outDir) {
|
|
283
|
+
debug('loadBuildEntry()');
|
|
284
|
+
if (globalObject.userFiles) {
|
|
285
|
+
assert(globalObject.buildInfo);
|
|
286
|
+
assert(globalObject.assetsManifest);
|
|
287
|
+
assert(globalObject.buildEntry);
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
270
290
|
if (!globalObject.buildEntry) {
|
|
271
291
|
debug('importServerProductionEntry()');
|
|
272
292
|
// importServerProductionEntry() loads dist/server/entry.mjs which calls setGlobalContext_buildEntry()
|
|
273
|
-
await importServerProductionEntry({ outDir
|
|
293
|
+
await importServerProductionEntry({ outDir });
|
|
274
294
|
if (!globalObject.buildEntry) {
|
|
275
295
|
debug('globalObject.buildEntryPrevious');
|
|
276
296
|
// Needed, for example, when calling the API prerender() then preview() because both trigger a importServerProductionEntry() call but only the first only is applied because of the import() cache. (A proper implementation would be to clear the import() cache, but it probably isn't possible on platforms such as Cloudflare Workers.)
|
|
277
297
|
globalObject.buildEntry = globalObject.buildEntryPrevious;
|
|
278
298
|
}
|
|
279
299
|
assert(globalObject.buildEntry);
|
|
300
|
+
assertWarning(!globalObject.buildInfo?.viteConfigRuntime.vitePluginServerEntry.inject,
|
|
301
|
+
// TODO/soon: show precise path
|
|
302
|
+
// TODO/soon: make this warning work on test/vike-node/
|
|
303
|
+
`Run the server production build (e.g. ${pc.cyan('$ node dist/server/index.mjs')}) instead of running the original server entry (e.g. ${pc.cyan('$ ts-node server/index.ts')})`, { onlyOnce: true });
|
|
280
304
|
}
|
|
281
305
|
const { buildEntry } = globalObject;
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
return buildEntry;
|
|
306
|
+
assertBuildEntry(buildEntry);
|
|
307
|
+
globalObject.assetsManifest = buildEntry.assetsManifest;
|
|
308
|
+
globalObject.buildInfo = buildEntry.buildInfo;
|
|
309
|
+
await setUserFiles(buildEntry.virtualFileExports);
|
|
287
310
|
}
|
|
288
|
-
function setGlobalContext_buildEntry(buildEntry) {
|
|
311
|
+
async function setGlobalContext_buildEntry(buildEntry) {
|
|
289
312
|
debug('setGlobalContext_buildEntry()');
|
|
313
|
+
setIsProduction(true);
|
|
314
|
+
assertBuildEntry(buildEntry);
|
|
290
315
|
globalObject.buildEntry = buildEntry;
|
|
291
316
|
globalObject.buildEntryPrevious = buildEntry;
|
|
317
|
+
assert(globalObject.buildEntry); // ensure no infinite loop
|
|
318
|
+
await loadBuildEntry();
|
|
319
|
+
assertGlobalContextIsDefined();
|
|
320
|
+
}
|
|
321
|
+
function assertBuildEntry(buildEntry) {
|
|
322
|
+
assert(isObject(buildEntry));
|
|
323
|
+
assert(hasProp(buildEntry, 'virtualFileExports', 'object'));
|
|
324
|
+
const { virtualFileExports } = buildEntry;
|
|
325
|
+
assert(hasProp(buildEntry, 'assetsManifest', 'object'));
|
|
326
|
+
const { assetsManifest } = buildEntry;
|
|
327
|
+
assertViteManifest(assetsManifest);
|
|
328
|
+
assert(hasProp(buildEntry, 'buildInfo', 'object'));
|
|
329
|
+
const { buildInfo } = buildEntry;
|
|
330
|
+
assertBuildInfo(buildInfo);
|
|
331
|
+
checkType({ virtualFileExports, assetsManifest, buildInfo });
|
|
292
332
|
}
|
|
293
|
-
function
|
|
294
|
-
|
|
333
|
+
function assertBuildInfo(buildInfo) {
|
|
334
|
+
assert(isObject(buildInfo));
|
|
335
|
+
assert(hasProp(buildInfo, 'versionAtBuildTime', 'string'));
|
|
336
|
+
assertVersionAtBuildTime(buildInfo.versionAtBuildTime);
|
|
337
|
+
assert(hasProp(buildInfo, 'viteConfigRuntime', 'object'));
|
|
338
|
+
assert(hasProp(buildInfo.viteConfigRuntime, '_baseViteOriginal', 'string'));
|
|
339
|
+
assert(hasProp(buildInfo.viteConfigRuntime, 'vitePluginServerEntry', 'object'));
|
|
340
|
+
assert(hasProp(buildInfo, 'usesClientRouter', 'boolean'));
|
|
341
|
+
checkType({ ...buildInfo, viteConfigRuntime: buildInfo.viteConfigRuntime });
|
|
295
342
|
}
|
|
296
|
-
|
|
343
|
+
function assertVersionAtBuildTime(versionAtBuildTime) {
|
|
344
|
+
const versionAtRuntime = projectInfo.projectVersion;
|
|
345
|
+
const pretty = (version) => pc.bold(`vike@${version}`);
|
|
346
|
+
assertUsage(versionAtBuildTime === versionAtRuntime, `Re-build your app (you're using ${pretty(versionAtRuntime)} but your app was built with ${pretty(versionAtBuildTime)})`);
|
|
347
|
+
}
|
|
348
|
+
function getViteConfigRuntime(viteConfig) {
|
|
349
|
+
assert(hasProp(viteConfig, '_baseViteOriginal', 'string'));
|
|
350
|
+
const viteConfigRuntime = {
|
|
351
|
+
_baseViteOriginal: viteConfig._baseViteOriginal,
|
|
352
|
+
vitePluginServerEntry: {
|
|
353
|
+
inject: viteConfig.vitePluginServerEntry?.inject
|
|
354
|
+
}
|
|
355
|
+
};
|
|
356
|
+
return viteConfigRuntime;
|
|
357
|
+
}
|
|
358
|
+
async function updateUserFiles() {
|
|
359
|
+
const { promise, resolve } = genPromise();
|
|
360
|
+
assert(!globalObject.isProduction);
|
|
361
|
+
globalObject.waitForUserFilesUpdate = promise;
|
|
297
362
|
const viteDevServer = getViteDevServer();
|
|
298
363
|
assert(viteDevServer);
|
|
299
|
-
let
|
|
364
|
+
let virtualFileExports;
|
|
300
365
|
try {
|
|
301
|
-
|
|
366
|
+
virtualFileExports = await viteDevServer.ssrLoadModule(virtualFileIdImportUserCodeServer);
|
|
302
367
|
}
|
|
303
368
|
catch (err) {
|
|
304
369
|
debugGlob(`Glob error: ${virtualFileIdImportUserCodeServer} transpile error: `, err);
|
|
305
370
|
throw err;
|
|
306
371
|
}
|
|
307
|
-
|
|
308
|
-
debugGlob('Glob result: ',
|
|
309
|
-
|
|
310
|
-
|
|
372
|
+
virtualFileExports = virtualFileExports.default || virtualFileExports;
|
|
373
|
+
debugGlob('Glob result: ', virtualFileExports);
|
|
374
|
+
await setUserFiles(virtualFileExports);
|
|
375
|
+
resolve();
|
|
376
|
+
}
|
|
377
|
+
async function setUserFiles(virtualFileExports) {
|
|
378
|
+
globalObject.pageConfigsRuntime = getPageConfigsRuntime(virtualFileExports);
|
|
379
|
+
const userFiles = await getUserFiles();
|
|
380
|
+
globalObject.userFiles = userFiles;
|
|
381
|
+
defineGlobalContext();
|
|
382
|
+
assertGlobalContextIsDefined();
|
|
311
383
|
}
|
|
312
384
|
function clearGlobalContext() {
|
|
313
385
|
debug('clearGlobalContext()');
|
|
@@ -29,4 +29,4 @@ type HtmlTag = {
|
|
|
29
29
|
};
|
|
30
30
|
declare function getHtmlTags(pageContext: {
|
|
31
31
|
_isStream: boolean;
|
|
32
|
-
} & PageContextInjectAssets, streamFromReactStreamingPackage: null | StreamFromReactStreamingPackage, injectFilter: PreloadFilter, pageAssets: PageAsset[], viteDevScript: string, isStream: boolean): HtmlTag[]
|
|
32
|
+
} & PageContextInjectAssets, streamFromReactStreamingPackage: null | StreamFromReactStreamingPackage, injectFilter: PreloadFilter, pageAssets: PageAsset[], viteDevScript: string, isStream: boolean): Promise<HtmlTag[]>;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isFontFallback } from '../../renderPage/isFontFallback.js';
|
|
1
2
|
export { getHtmlTags };
|
|
2
3
|
import { assert, assertWarning, assertUsage, isObject, freezePartial } from '../../utils.js';
|
|
3
4
|
import { serializePageContextClientSide } from '../serializePageContextClientSide.js';
|
|
@@ -6,16 +7,16 @@ import { inferAssetTag, inferPreloadTag } from './inferHtmlTags.js';
|
|
|
6
7
|
import { mergeScriptTags } from './mergeScriptTags.js';
|
|
7
8
|
import { getPageConfig } from '../../../../shared/page-configs/helpers.js';
|
|
8
9
|
import { getConfigValueRuntime } from '../../../../shared/page-configs/getConfigValueRuntime.js';
|
|
9
|
-
import { getGlobalContext } from '../../globalContext.js';
|
|
10
10
|
import pc from '@brillout/picocolors';
|
|
11
11
|
import { getConfigDefinedAt } from '../../../../shared/page-configs/getConfigDefinedAt.js';
|
|
12
12
|
const stamp = '__injectFilterEntry';
|
|
13
|
-
function getHtmlTags(pageContext, streamFromReactStreamingPackage, injectFilter, pageAssets, viteDevScript, isStream) {
|
|
13
|
+
async function getHtmlTags(pageContext, streamFromReactStreamingPackage, injectFilter, pageAssets, viteDevScript, isStream) {
|
|
14
14
|
assert([true, false].includes(pageContext._isHtmlOnly));
|
|
15
15
|
const isHtmlOnly = pageContext._isHtmlOnly;
|
|
16
|
-
const { isProduction } =
|
|
16
|
+
const { isProduction } = pageContext._globalContext;
|
|
17
17
|
const injectScriptsAt = getInjectScriptsAt(pageContext.pageId, pageContext._pageConfigs);
|
|
18
|
-
const injectFilterEntries =
|
|
18
|
+
const injectFilterEntries = [];
|
|
19
|
+
pageAssets
|
|
19
20
|
.filter((asset) => {
|
|
20
21
|
if (asset.isEntry && asset.assetType === 'script') {
|
|
21
22
|
// We could allow the user to change the position of <script> but we currently don't:
|
|
@@ -26,15 +27,18 @@ function getHtmlTags(pageContext, streamFromReactStreamingPackage, injectFilter,
|
|
|
26
27
|
}
|
|
27
28
|
return true;
|
|
28
29
|
})
|
|
29
|
-
.
|
|
30
|
+
.forEach((asset) => {
|
|
30
31
|
const inject = (() => {
|
|
31
32
|
if (!isProduction) {
|
|
32
33
|
// In development, we should always load assets as soon as possible, in order to eagerly process assets (e.g. applying the transform() hooks of Vite plugins) which are lazily discovered.
|
|
33
34
|
return 'HTML_BEGIN';
|
|
34
35
|
}
|
|
35
|
-
if (asset.assetType === 'style'
|
|
36
|
+
if (asset.assetType === 'style') {
|
|
36
37
|
return 'HTML_BEGIN';
|
|
37
38
|
}
|
|
39
|
+
if (asset.assetType === 'font') {
|
|
40
|
+
return !isFontFallback(asset, injectFilterEntries) ? 'HTML_BEGIN' : false;
|
|
41
|
+
}
|
|
38
42
|
if (asset.assetType === 'script') {
|
|
39
43
|
if (isHtmlOnly)
|
|
40
44
|
return false;
|
|
@@ -48,7 +52,7 @@ function getHtmlTags(pageContext, streamFromReactStreamingPackage, injectFilter,
|
|
|
48
52
|
// @ts-ignore
|
|
49
53
|
[stamp]: true
|
|
50
54
|
};
|
|
51
|
-
|
|
55
|
+
injectFilterEntries.push(entry);
|
|
52
56
|
});
|
|
53
57
|
assertInjectFilterEntries(injectFilterEntries);
|
|
54
58
|
// ==============
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
export { getViteDevScript };
|
|
2
|
-
import { getGlobalContext } from '../../globalContext.js';
|
|
3
2
|
import { assert, assertUsage, assertWarning } from '../../utils.js';
|
|
4
3
|
import pc from '@brillout/picocolors';
|
|
5
|
-
async function getViteDevScript() {
|
|
6
|
-
const globalContext =
|
|
4
|
+
async function getViteDevScript(pageContext) {
|
|
5
|
+
const globalContext = pageContext._globalContext;
|
|
7
6
|
if (globalContext.isProduction) {
|
|
8
7
|
return '';
|
|
9
8
|
}
|
|
@@ -8,6 +8,7 @@ import { type PreloadFilter } from './injectAssets/getHtmlTags.js';
|
|
|
8
8
|
import type { StreamFromReactStreamingPackage } from './stream/react-streaming.js';
|
|
9
9
|
import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
|
|
10
10
|
import type { PageContextSerialization } from './serializePageContextClientSide.js';
|
|
11
|
+
import type { GlobalContext } from '../globalContext.js';
|
|
11
12
|
type PageContextInjectAssets = {
|
|
12
13
|
urlPathname: string;
|
|
13
14
|
__getPageAssets: () => Promise<PageAsset[]>;
|
|
@@ -21,6 +22,7 @@ type PageContextInjectAssets = {
|
|
|
21
22
|
_baseServer: string;
|
|
22
23
|
_pageConfigs: PageConfigRuntime[];
|
|
23
24
|
is404: null | boolean;
|
|
25
|
+
_globalContext: GlobalContext;
|
|
24
26
|
} & PageContextSerialization;
|
|
25
27
|
declare function injectHtmlTagsToString(htmlParts: HtmlPart[], pageContext: PageContextInjectAssets & {
|
|
26
28
|
_isStream: false;
|
|
@@ -7,8 +7,8 @@ import { getHtmlTags } from './injectAssets/getHtmlTags.js';
|
|
|
7
7
|
import { getViteDevScript } from './injectAssets/getViteDevScript.js';
|
|
8
8
|
async function injectHtmlTagsToString(htmlParts, pageContext, injectFilter) {
|
|
9
9
|
const pageAssets = await pageContext.__getPageAssets();
|
|
10
|
-
const viteDevScript = await getViteDevScript();
|
|
11
|
-
const htmlTags = getHtmlTags(pageContext, null, injectFilter, pageAssets, viteDevScript, false);
|
|
10
|
+
const viteDevScript = await getViteDevScript(pageContext);
|
|
11
|
+
const htmlTags = await getHtmlTags(pageContext, null, injectFilter, pageAssets, viteDevScript, false);
|
|
12
12
|
let htmlString = htmlPartsToString(htmlParts, pageAssets);
|
|
13
13
|
htmlString = injectToHtmlBegin(htmlString, htmlTags);
|
|
14
14
|
htmlString = injectToHtmlEnd(htmlString, htmlTags);
|
|
@@ -24,8 +24,8 @@ function injectHtmlTagsToStream(pageContext, streamFromReactStreamingPackage, in
|
|
|
24
24
|
};
|
|
25
25
|
async function injectAtStreamBegin(htmlPartsBegin) {
|
|
26
26
|
const pageAssets = await pageContext.__getPageAssets();
|
|
27
|
-
const viteDevScript = await getViteDevScript();
|
|
28
|
-
htmlTags = getHtmlTags(pageContext, streamFromReactStreamingPackage, injectFilter, pageAssets, viteDevScript, true);
|
|
27
|
+
const viteDevScript = await getViteDevScript(pageContext);
|
|
28
|
+
htmlTags = await getHtmlTags(pageContext, streamFromReactStreamingPackage, injectFilter, pageAssets, viteDevScript, true);
|
|
29
29
|
let htmlBegin = htmlPartsToString(htmlPartsBegin, pageAssets);
|
|
30
30
|
htmlBegin = injectToHtmlBegin(htmlBegin, htmlTags);
|
|
31
31
|
if (streamFromReactStreamingPackage) {
|