vike 0.4.228 → 0.4.229-commit-a19745d
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 +2 -2
- package/dist/cjs/client/client-routing-runtime/globalContext.js +49 -0
- package/dist/cjs/client/server-routing-runtime/globalContext.js +41 -0
- package/dist/cjs/client/server-routing-runtime/utils.js +1 -1
- package/dist/cjs/client/shared/createGetGlobalContextClient.js +58 -0
- package/dist/cjs/client/shared/getJsonSerializedInHtml.js +31 -0
- package/dist/cjs/client/shared/utils.js +22 -0
- package/dist/cjs/node/plugin/index.js +3 -1
- package/dist/cjs/node/plugin/plugins/baseUrls.js +1 -1
- package/dist/cjs/node/plugin/plugins/build/handleAssetsManifest.js +10 -5
- package/dist/cjs/node/plugin/plugins/build/pluginBuildApp.js +1 -1
- package/dist/cjs/node/plugin/plugins/build/pluginBuildConfig.js +3 -10
- package/dist/cjs/node/plugin/plugins/build/pluginBuildEntry.js +9 -5
- package/dist/cjs/node/plugin/plugins/build/pluginModuleBanner.js +9 -5
- package/dist/cjs/node/plugin/plugins/commonConfig/assertResolveAlias.js +1 -1
- package/dist/cjs/node/plugin/plugins/commonConfig.js +14 -3
- package/dist/cjs/node/plugin/plugins/devConfig/determineFsAllowList.js +2 -7
- package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +6 -1
- package/dist/cjs/node/plugin/plugins/envVars.js +17 -19
- package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +3 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +11 -0
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.js +2 -0
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +1 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +2 -2
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/{transformPointerImports.js → pointerImports.js} +13 -0
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.js +20 -19
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +15 -12
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +11 -11
- package/dist/cjs/node/plugin/plugins/replaceConstants.js +76 -0
- package/dist/cjs/node/plugin/shared/applyRegExWithMagicString.js +10 -0
- package/dist/cjs/node/plugin/shared/findPageFiles.js +1 -1
- package/dist/cjs/node/plugin/shared/getFilePath.js +2 -2
- package/dist/cjs/node/plugin/shared/resolveClientEntriesDev.js +8 -20
- package/dist/cjs/node/plugin/utils.js +1 -0
- package/dist/cjs/node/prerender/runPrerender.js +44 -41
- package/dist/cjs/node/prerender/utils.js +1 -1
- package/dist/cjs/node/runtime/globalContext.js +102 -125
- package/dist/cjs/node/runtime/html/injectAssets/getHtmlTags.js +18 -5
- package/dist/cjs/node/runtime/html/injectAssets/getViteDevScript.js +2 -2
- package/dist/cjs/node/runtime/html/propKeys.js +47 -0
- package/dist/cjs/node/runtime/html/renderHtml.js +13 -3
- package/dist/cjs/node/runtime/html/{serializePageContextClientSide.js → serializeContext.js} +37 -67
- package/dist/cjs/node/runtime/index-deprecated.js +9 -38
- package/dist/cjs/node/runtime/index.js +56 -2
- package/dist/cjs/node/runtime/renderPage/analyzePage.js +1 -1
- package/dist/cjs/node/runtime/renderPage/createHttpResponse.js +8 -3
- package/dist/cjs/node/runtime/renderPage/createPageContextServerSide.js +73 -0
- package/dist/cjs/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +2 -2
- package/dist/cjs/node/runtime/renderPage/executeOnRenderHtmlHook.js +2 -2
- package/dist/cjs/node/runtime/renderPage/getPageAssets/getManifestEntry.js +1 -1
- package/dist/cjs/node/runtime/renderPage/getPageAssets/retrieveAssetsDev.js +1 -17
- package/dist/cjs/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +1 -1
- package/dist/cjs/node/runtime/renderPage/getPageAssets.js +3 -3
- package/dist/cjs/node/runtime/renderPage/handleErrorWithoutErrorPage.js +1 -1
- package/dist/cjs/node/runtime/renderPage/loadUserFilesServerSide.js +1 -1
- package/dist/cjs/node/runtime/renderPage/log404/index.js +1 -1
- package/dist/cjs/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +1 -1
- package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +3 -68
- package/dist/cjs/node/runtime/renderPage.js +102 -81
- package/dist/cjs/node/runtime/universal-middleware.js +7 -1
- package/dist/cjs/node/runtime/utils.js +3 -2
- package/dist/cjs/shared/assertPageContextProvidedByUser.js +1 -1
- package/dist/cjs/shared/createGlobalContextShared.js +54 -0
- package/dist/cjs/shared/createPageContextShared.js +17 -0
- package/dist/cjs/shared/getPageFiles/fileTypes.js +1 -1
- package/dist/cjs/shared/hooks/executeHookGeneric.js +18 -0
- package/dist/cjs/shared/hooks/getHook.js +45 -27
- package/dist/cjs/shared/htmlElementIds.js +5 -0
- package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +3 -7
- package/dist/cjs/shared/route/executeGuardHook.js +1 -1
- package/dist/cjs/shared/route/loadPageRoutes.js +2 -1
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/catchInfiniteLoop.js +3 -3
- package/dist/cjs/utils/debug.js +1 -0
- package/dist/cjs/utils/getPublicProxy.js +27 -0
- package/dist/cjs/utils/isImportPath.js +21 -0
- package/dist/cjs/utils/isScriptFile.js +24 -21
- package/dist/cjs/utils/objectAssign.js +6 -10
- package/dist/cjs/utils/objectReplace.js +4 -4
- package/dist/cjs/utils/{isNpmPackage.js → parseNpmPackage.js} +24 -23
- package/dist/cjs/utils/path.js +12 -2
- package/dist/cjs/utils/requireResolve.js +148 -53
- package/dist/esm/__internal/index.js +3 -3
- package/dist/esm/client/client-routing-runtime/createPageContext.d.ts +29 -10
- package/dist/esm/client/client-routing-runtime/createPageContext.js +23 -22
- package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +5 -4
- package/dist/esm/client/client-routing-runtime/globalContext.d.ts +20 -0
- package/dist/esm/client/client-routing-runtime/globalContext.js +13 -0
- package/dist/esm/client/client-routing-runtime/initOnLinkClick.js +2 -2
- package/dist/esm/client/client-routing-runtime/prefetch.js +2 -2
- package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +8 -7
- package/dist/esm/client/client-routing-runtime/utils.d.ts +0 -1
- package/dist/esm/client/client-routing-runtime/utils.js +0 -1
- package/dist/esm/client/index.d.ts +1 -0
- package/dist/esm/client/index.js +4 -0
- package/dist/esm/client/node.js +1 -3
- package/dist/esm/client/server-routing-runtime/createPageContextClientSide.d.ts +36 -0
- package/dist/esm/client/server-routing-runtime/createPageContextClientSide.js +47 -0
- package/dist/esm/client/server-routing-runtime/entry.js +2 -2
- package/dist/esm/client/server-routing-runtime/globalContext.d.ts +17 -0
- package/dist/esm/client/server-routing-runtime/globalContext.js +5 -0
- package/dist/esm/client/server-routing-runtime/utils.d.ts +1 -1
- package/dist/esm/client/server-routing-runtime/utils.js +1 -1
- package/dist/esm/client/shared/createGetGlobalContextClient.d.ts +23 -0
- package/dist/esm/client/shared/createGetGlobalContextClient.js +58 -0
- package/dist/esm/client/shared/executeOnRenderClientHook.js +5 -4
- package/dist/esm/client/shared/{getPageContextSerializedInHtml.d.ts → getJsonSerializedInHtml.d.ts} +2 -0
- package/dist/esm/client/shared/getJsonSerializedInHtml.js +29 -0
- package/dist/esm/client/shared/removeFoucBuster.js +1 -0
- package/dist/esm/client/shared/utils.d.ts +4 -0
- package/dist/esm/client/shared/utils.js +4 -0
- package/dist/esm/node/plugin/index.js +3 -1
- package/dist/esm/node/plugin/plugins/baseUrls.js +2 -2
- package/dist/esm/node/plugin/plugins/build/handleAssetsManifest.js +11 -6
- package/dist/esm/node/plugin/plugins/build/pluginBuildApp.js +2 -2
- package/dist/esm/node/plugin/plugins/build/pluginBuildConfig.js +4 -11
- package/dist/esm/node/plugin/plugins/build/pluginBuildEntry.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/build/pluginBuildEntry.js +10 -6
- package/dist/esm/node/plugin/plugins/build/pluginModuleBanner.js +9 -5
- package/dist/esm/node/plugin/plugins/commonConfig/assertResolveAlias.js +2 -2
- package/dist/esm/node/plugin/plugins/commonConfig.d.ts +2 -0
- package/dist/esm/node/plugin/plugins/commonConfig.js +15 -4
- package/dist/esm/node/plugin/plugins/devConfig/determineFsAllowList.js +3 -8
- package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +7 -2
- package/dist/esm/node/plugin/plugins/envVars.js +18 -20
- package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +4 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +11 -0
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.js +2 -0
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +2 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/{transformPointerImports.d.ts → pointerImports.d.ts} +2 -0
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/{transformPointerImports.js → pointerImports.js} +14 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.js +20 -19
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +15 -12
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +11 -11
- package/dist/esm/node/plugin/plugins/replaceConstants.d.ts +3 -0
- package/dist/esm/node/plugin/plugins/replaceConstants.js +71 -0
- package/dist/esm/node/plugin/shared/applyRegExWithMagicString.d.ts +3 -0
- package/dist/esm/node/plugin/shared/applyRegExWithMagicString.js +8 -0
- package/dist/esm/node/plugin/shared/findPageFiles.js +2 -2
- package/dist/esm/node/plugin/shared/getFilePath.js +3 -3
- package/dist/esm/node/plugin/shared/resolveClientEntriesDev.d.ts +1 -1
- package/dist/esm/node/plugin/shared/resolveClientEntriesDev.js +9 -21
- package/dist/esm/node/plugin/utils.d.ts +1 -0
- package/dist/esm/node/plugin/utils.js +1 -0
- package/dist/esm/node/prerender/runPrerender.d.ts +314 -5
- package/dist/esm/node/prerender/runPrerender.js +48 -45
- package/dist/esm/node/prerender/utils.d.ts +1 -1
- package/dist/esm/node/prerender/utils.js +1 -1
- package/dist/esm/node/runtime/globalContext.d.ts +425 -47
- package/dist/esm/node/runtime/globalContext.js +103 -126
- package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +18 -5
- package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.d.ts +2 -2
- package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.js +2 -2
- package/dist/esm/node/runtime/html/injectAssets.d.ts +3 -3
- package/dist/esm/node/runtime/html/propKeys.d.ts +8 -0
- package/dist/esm/node/runtime/html/propKeys.js +45 -0
- package/dist/esm/node/runtime/html/renderHtml.js +13 -3
- package/dist/esm/node/runtime/html/{serializePageContextClientSide.d.ts → serializeContext.d.ts} +7 -6
- package/dist/esm/node/runtime/html/{serializePageContextClientSide.js → serializeContext.js} +36 -67
- package/dist/esm/node/runtime/index-deprecated.d.ts +1 -16
- package/dist/esm/node/runtime/index-deprecated.js +9 -36
- package/dist/esm/node/runtime/index.d.ts +23 -1
- package/dist/esm/node/runtime/index.js +38 -3
- package/dist/esm/node/runtime/renderPage/analyzePage.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/analyzePage.js +1 -1
- package/dist/esm/node/runtime/renderPage/createHttpResponse.d.ts +5 -4
- package/dist/esm/node/runtime/renderPage/createHttpResponse.js +8 -3
- package/dist/esm/node/runtime/renderPage/createPageContextServerSide.d.ts +155 -0
- package/dist/esm/node/runtime/renderPage/createPageContextServerSide.js +71 -0
- package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +3 -3
- package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.d.ts +1 -1
- package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.js +3 -3
- package/dist/esm/node/runtime/renderPage/getPageAssets/getManifestEntry.js +2 -2
- package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsDev.js +1 -17
- package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +2 -2
- package/dist/esm/node/runtime/renderPage/getPageAssets.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/getPageAssets.js +3 -3
- package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.js +1 -1
- package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +1 -1
- package/dist/esm/node/runtime/renderPage/log404/index.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/log404/index.js +1 -1
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +3 -3
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +1 -1
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +225 -179
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +4 -69
- package/dist/esm/node/runtime/renderPage.d.ts +146 -7
- package/dist/esm/node/runtime/renderPage.js +105 -84
- package/dist/esm/node/runtime/universal-middleware.js +7 -1
- package/dist/esm/node/runtime/utils.d.ts +3 -2
- package/dist/esm/node/runtime/utils.js +3 -2
- package/dist/esm/shared/VikeNamespace.d.ts +35 -13
- package/dist/esm/shared/assertPageContextProvidedByUser.js +1 -1
- package/dist/esm/shared/createGlobalContextShared.d.ts +39 -0
- package/dist/esm/shared/createGlobalContextShared.js +51 -0
- package/dist/esm/shared/createPageContextShared.d.ts +9 -0
- package/dist/esm/shared/createPageContextShared.js +15 -0
- package/dist/esm/shared/getPageFiles/fileTypes.js +1 -1
- package/dist/esm/shared/hooks/executeHookGeneric.d.ts +8 -0
- package/dist/esm/shared/hooks/executeHookGeneric.js +16 -0
- package/dist/esm/shared/hooks/getHook.d.ts +5 -3
- package/dist/esm/shared/hooks/getHook.js +47 -29
- package/dist/esm/shared/htmlElementIds.d.ts +2 -0
- package/dist/esm/shared/htmlElementIds.js +2 -0
- package/dist/esm/shared/page-configs/Config.d.ts +12 -2
- package/dist/esm/shared/page-configs/getConfigDefinedAt.d.ts +1 -1
- package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +3 -7
- package/dist/esm/shared/route/executeGuardHook.js +2 -2
- package/dist/esm/shared/route/loadPageRoutes.js +2 -1
- package/dist/esm/shared/types.d.ts +64 -32
- package/dist/esm/types/index.d.ts +1 -5
- package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/utils/catchInfiniteLoop.js +4 -4
- package/dist/esm/utils/debug.d.ts +1 -1
- package/dist/esm/utils/debug.js +1 -0
- package/dist/esm/utils/getGlobalObject.d.ts +1 -1
- package/dist/esm/utils/getPublicProxy.d.ts +2 -0
- package/dist/esm/utils/getPublicProxy.js +25 -0
- package/dist/esm/utils/isImportPath.d.ts +4 -0
- package/dist/esm/utils/isImportPath.js +19 -0
- package/dist/esm/utils/isScriptFile.d.ts +5 -5
- package/dist/esm/utils/isScriptFile.js +23 -20
- package/dist/esm/utils/objectAssign.d.ts +1 -1
- package/dist/esm/utils/objectAssign.js +6 -10
- package/dist/esm/utils/objectReplace.d.ts +1 -1
- package/dist/esm/utils/objectReplace.js +4 -4
- package/dist/esm/utils/parseNpmPackage.d.ts +19 -0
- package/dist/esm/utils/{isNpmPackage.js → parseNpmPackage.js} +24 -24
- package/dist/esm/utils/path.d.ts +1 -1
- package/dist/esm/utils/path.js +12 -2
- package/dist/esm/utils/requireResolve.d.ts +20 -7
- package/dist/esm/utils/requireResolve.js +148 -53
- package/package.json +14 -13
- package/dist/cjs/node/runtime/index-common.js +0 -27
- package/dist/cjs/utils/makePublicCopy.js +0 -32
- package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +0 -19
- package/dist/esm/client/server-routing-runtime/getPageContext.js +0 -44
- package/dist/esm/client/shared/getPageContextSerializedInHtml.js +0 -20
- package/dist/esm/node/runtime/index-common.d.ts +0 -8
- package/dist/esm/node/runtime/index-common.js +0 -10
- package/dist/esm/utils/isNpmPackage.d.ts +0 -17
- package/dist/esm/utils/makePublicCopy.d.ts +0 -3
- package/dist/esm/utils/makePublicCopy.js +0 -30
|
@@ -44,6 +44,7 @@ const path_1 = __importDefault(require("path"));
|
|
|
44
44
|
const index_js_1 = require("../../shared/route/index.js");
|
|
45
45
|
const utils_js_1 = require("./utils.js");
|
|
46
46
|
const renderPageAlreadyRouted_js_1 = require("../runtime/renderPage/renderPageAlreadyRouted.js");
|
|
47
|
+
const createPageContextServerSide_js_1 = require("../runtime/renderPage/createPageContextServerSide.js");
|
|
47
48
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
48
49
|
const os_1 = require("os");
|
|
49
50
|
const globalContext_js_1 = require("../runtime/globalContext.js");
|
|
@@ -114,7 +115,7 @@ async function runPrerender(options = {}, standaloneTrigger) {
|
|
|
114
115
|
await disableReactStreaming();
|
|
115
116
|
const viteConfig = await (0, vite_1.resolveConfig)(options.viteConfig || {}, 'build', 'production');
|
|
116
117
|
const vikeConfig = await (0, getVikeConfig_js_1.getVikeConfig)(viteConfig);
|
|
117
|
-
const vike = (0, commonConfig_js_1.
|
|
118
|
+
const vike = (0, commonConfig_js_1.getVikeConfigInternal)(viteConfig);
|
|
118
119
|
const { outDirClient, outDirServer } = (0, getOutDirs_js_1.getOutDirs)(viteConfig);
|
|
119
120
|
const { root } = viteConfig;
|
|
120
121
|
const prerenderConfigGlobal = (0, resolvePrerenderConfig_js_1.resolvePrerenderConfigGlobal)(vikeConfig);
|
|
@@ -131,26 +132,26 @@ async function runPrerender(options = {}, standaloneTrigger) {
|
|
|
131
132
|
}
|
|
132
133
|
const concurrencyLimit = (0, utils_js_1.pLimit)(parallel === false || parallel === 0 ? 1 : parallel === true || parallel === undefined ? (0, os_1.cpus)().length : parallel);
|
|
133
134
|
await (0, globalContext_js_1.initGlobalContext_runPrerender)();
|
|
134
|
-
const globalContext = await (0, globalContext_js_1.
|
|
135
|
-
globalContext.
|
|
135
|
+
const { globalContext, globalContext_public } = await (0, globalContext_js_1.getGlobalContextServerInternal)();
|
|
136
|
+
globalContext._pageFilesAll.forEach(assertExportNames);
|
|
136
137
|
const prerenderContext = {
|
|
137
|
-
noExtraDir,
|
|
138
138
|
pageContexts: [],
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
139
|
+
output: [],
|
|
140
|
+
_noExtraDir: noExtraDir,
|
|
141
|
+
_pageContextInit: options.pageContextInit ?? null,
|
|
142
|
+
_prerenderedPageContexts: {}
|
|
142
143
|
};
|
|
143
144
|
const doNotPrerenderList = [];
|
|
144
145
|
await collectDoNoPrerenderList(vikeConfig.pageConfigs, doNotPrerenderList, defaultLocalValue, concurrencyLimit, globalContext);
|
|
145
146
|
// Allow user to create `pageContext` for parameterized routes and/or bulk data fetching
|
|
146
147
|
// https://vike.dev/onBeforePrerenderStart
|
|
147
|
-
await callOnBeforePrerenderStartHooks(prerenderContext, globalContext, concurrencyLimit, doNotPrerenderList);
|
|
148
|
+
await callOnBeforePrerenderStartHooks(prerenderContext, globalContext, globalContext_public, concurrencyLimit, doNotPrerenderList);
|
|
148
149
|
// Create `pageContext` for each page with a static route
|
|
149
150
|
const urlList = getUrlListFromPagesWithStaticRoute(globalContext, doNotPrerenderList);
|
|
150
|
-
await
|
|
151
|
+
await createPageContexts(urlList, prerenderContext, globalContext, globalContext_public, concurrencyLimit, false);
|
|
151
152
|
// Create `pageContext` for 404 page
|
|
152
153
|
const urlList404 = getUrlList404(globalContext);
|
|
153
|
-
await
|
|
154
|
+
await createPageContexts(urlList404, prerenderContext, globalContext, globalContext_public, concurrencyLimit, true);
|
|
154
155
|
// Allow user to duplicate the list of `pageContext` for i18n
|
|
155
156
|
// https://vike.dev/onPrerenderStart
|
|
156
157
|
await callOnPrerenderStartHook(prerenderContext, globalContext, concurrencyLimit);
|
|
@@ -160,15 +161,15 @@ async function runPrerender(options = {}, standaloneTrigger) {
|
|
|
160
161
|
prerenderedCount++;
|
|
161
162
|
const { pageId } = htmlFile.pageContext;
|
|
162
163
|
(0, utils_js_1.assert)(pageId);
|
|
163
|
-
prerenderContext.
|
|
164
|
+
prerenderContext._prerenderedPageContexts[pageId] = htmlFile.pageContext;
|
|
164
165
|
await writeFiles(htmlFile, root, outDirClient, options.onPagePrerender, prerenderContext.output, logLevel);
|
|
165
166
|
};
|
|
166
167
|
await prerenderPages(prerenderContext, concurrencyLimit, onComplete);
|
|
167
|
-
warnContradictoryNoPrerenderList(prerenderContext.
|
|
168
|
+
warnContradictoryNoPrerenderList(prerenderContext._prerenderedPageContexts, doNotPrerenderList);
|
|
168
169
|
if (logLevel === 'info') {
|
|
169
170
|
console.log(`${picocolors_1.default.green(`✓`)} ${prerenderedCount} HTML documents pre-rendered.`);
|
|
170
171
|
}
|
|
171
|
-
await warnMissingPages(prerenderContext.
|
|
172
|
+
await warnMissingPages(prerenderContext._prerenderedPageContexts, globalContext, doNotPrerenderList, partial);
|
|
172
173
|
const prerenderContextPublic = makePublic(prerenderContext);
|
|
173
174
|
(0, utils_js_1.objectAssign)(vike.prerenderContext, prerenderContextPublic);
|
|
174
175
|
if (prerenderConfigGlobal.isPrerenderingEnabledForAllPages && !prerenderConfigGlobal.keepDistServer) {
|
|
@@ -195,7 +196,7 @@ async function collectDoNoPrerenderList(pageConfigs, doNotPrerenderList, default
|
|
|
195
196
|
});
|
|
196
197
|
// Old design
|
|
197
198
|
// TODO/v1-release: remove
|
|
198
|
-
await Promise.all(globalContext.
|
|
199
|
+
await Promise.all(globalContext._pageFilesAll
|
|
199
200
|
.filter((p) => {
|
|
200
201
|
assertExportNames(p);
|
|
201
202
|
if (!p.exportNames?.includes('doNotPrerender'))
|
|
@@ -207,8 +208,8 @@ async function collectDoNoPrerenderList(pageConfigs, doNotPrerenderList, default
|
|
|
207
208
|
(0, utils_js_1.assert)(p.loadFile);
|
|
208
209
|
await p.loadFile();
|
|
209
210
|
})));
|
|
210
|
-
globalContext.
|
|
211
|
-
const pageFilesServerSide = (0, getPageFiles_js_1.getPageFilesServerSide)(globalContext.
|
|
211
|
+
globalContext._allPageIds.forEach((pageId) => {
|
|
212
|
+
const pageFilesServerSide = (0, getPageFiles_js_1.getPageFilesServerSide)(globalContext._pageFilesAll, pageId);
|
|
212
213
|
for (const p of pageFilesServerSide) {
|
|
213
214
|
if (!p.exportNames?.includes('doNotPrerender'))
|
|
214
215
|
continue;
|
|
@@ -232,10 +233,10 @@ function assertExportNames(pageFile) {
|
|
|
232
233
|
const { exportNames, fileType } = pageFile;
|
|
233
234
|
(0, utils_js_1.assert)(exportNames || fileType === '.page.route' || fileType === '.css', pageFile.filePath);
|
|
234
235
|
}
|
|
235
|
-
async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext, concurrencyLimit, doNotPrerenderList) {
|
|
236
|
+
async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext, globalContext_public, concurrencyLimit, doNotPrerenderList) {
|
|
236
237
|
const onBeforePrerenderStartHooks = [];
|
|
237
238
|
// V1 design
|
|
238
|
-
await Promise.all(globalContext.
|
|
239
|
+
await Promise.all(globalContext._pageConfigs.map((pageConfig) => concurrencyLimit(async () => {
|
|
239
240
|
const hookName = 'onBeforePrerenderStart';
|
|
240
241
|
const pageConfigLoaded = await (0, loadConfigValues_js_1.loadConfigValues)(pageConfig, false);
|
|
241
242
|
const hook = (0, getHook_js_1.getHookFromPageConfig)(pageConfigLoaded, hookName);
|
|
@@ -251,7 +252,7 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext,
|
|
|
251
252
|
});
|
|
252
253
|
})));
|
|
253
254
|
// 0.4 design
|
|
254
|
-
await Promise.all(globalContext.
|
|
255
|
+
await Promise.all(globalContext._pageFilesAll
|
|
255
256
|
.filter((p) => {
|
|
256
257
|
assertExportNames(p);
|
|
257
258
|
if (!p.exportNames?.includes('prerender'))
|
|
@@ -295,7 +296,7 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext,
|
|
|
295
296
|
}
|
|
296
297
|
// Add result
|
|
297
298
|
const providedByHook = { hookFilePath, hookName };
|
|
298
|
-
const pageContextNew = await
|
|
299
|
+
const pageContextNew = await createPageContextPrerendering(url, prerenderContext, globalContext, globalContext_public, false, undefined, providedByHook);
|
|
299
300
|
prerenderContext.pageContexts.push(pageContextNew);
|
|
300
301
|
if (pageContext) {
|
|
301
302
|
(0, utils_js_1.objectAssign)(pageContextNew, { _pageContextAlreadyProvidedByOnPrerenderHook: true });
|
|
@@ -306,7 +307,7 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext,
|
|
|
306
307
|
}
|
|
307
308
|
function getUrlListFromPagesWithStaticRoute(globalContext, doNotPrerenderList) {
|
|
308
309
|
const urlList = [];
|
|
309
|
-
globalContext.
|
|
310
|
+
globalContext._pageRoutes.map((pageRoute) => {
|
|
310
311
|
const { pageId } = pageRoute;
|
|
311
312
|
if (doNotPrerenderList.find((p) => p.pageId === pageId))
|
|
312
313
|
return;
|
|
@@ -331,7 +332,7 @@ function getUrlListFromPagesWithStaticRoute(globalContext, doNotPrerenderList) {
|
|
|
331
332
|
}
|
|
332
333
|
function getUrlList404(globalContext) {
|
|
333
334
|
const urlList = [];
|
|
334
|
-
const errorPageId = (0, error_page_js_1.getErrorPageId)(globalContext.
|
|
335
|
+
const errorPageId = (0, error_page_js_1.getErrorPageId)(globalContext._pageFilesAll, globalContext._pageConfigs);
|
|
335
336
|
if (errorPageId) {
|
|
336
337
|
urlList.push({
|
|
337
338
|
// A URL is required for `viteDevServer.transformIndexHtml(url,html)`
|
|
@@ -341,28 +342,30 @@ function getUrlList404(globalContext) {
|
|
|
341
342
|
}
|
|
342
343
|
return urlList;
|
|
343
344
|
}
|
|
344
|
-
async function
|
|
345
|
+
async function createPageContexts(urlList, prerenderContext, globalContext, globalContext_public, concurrencyLimit, is404) {
|
|
345
346
|
await Promise.all(urlList.map(({ urlOriginal, pageId }) => concurrencyLimit(async () => {
|
|
346
347
|
// Already included in a onBeforePrerenderStart() hook
|
|
347
348
|
if (prerenderContext.pageContexts.find((pageContext) => isSameUrl(pageContext.urlOriginal, urlOriginal))) {
|
|
348
349
|
return;
|
|
349
350
|
}
|
|
350
|
-
const pageContext = await
|
|
351
|
+
const pageContext = await createPageContextPrerendering(urlOriginal, prerenderContext, globalContext, globalContext_public, is404, pageId, null);
|
|
351
352
|
prerenderContext.pageContexts.push(pageContext);
|
|
352
353
|
})));
|
|
353
354
|
}
|
|
354
|
-
async function
|
|
355
|
+
async function createPageContextPrerendering(urlOriginal, prerenderContext, globalContext, globalContext_public, is404, pageId, providedByHook) {
|
|
355
356
|
const pageContextInit = {
|
|
356
357
|
urlOriginal,
|
|
357
|
-
...prerenderContext.
|
|
358
|
+
...prerenderContext._pageContextInit
|
|
358
359
|
};
|
|
359
|
-
const pageContext = await (0,
|
|
360
|
+
const pageContext = await (0, createPageContextServerSide_js_1.createPageContextServerSide)(pageContextInit, globalContext, globalContext_public, {
|
|
361
|
+
isPrerendering: true
|
|
362
|
+
});
|
|
360
363
|
(0, utils_js_1.assert)(pageContext.isPrerendering === true);
|
|
361
364
|
(0, utils_js_1.objectAssign)(pageContext, {
|
|
362
365
|
_urlHandler: null,
|
|
363
366
|
_httpRequestId: null,
|
|
364
367
|
_urlRewrite: null,
|
|
365
|
-
_noExtraDir: prerenderContext.
|
|
368
|
+
_noExtraDir: prerenderContext._noExtraDir,
|
|
366
369
|
_prerenderContext: prerenderContext,
|
|
367
370
|
_providedByHook: providedByHook,
|
|
368
371
|
_urlOriginalModifiedByHook: null,
|
|
@@ -388,14 +391,14 @@ async function createPageContext(urlOriginal, prerenderContext, globalContext, i
|
|
|
388
391
|
{
|
|
389
392
|
const { pageId } = pageContext;
|
|
390
393
|
(0, utils_js_1.assert)(pageId);
|
|
391
|
-
(0, utils_js_1.assert)(globalContext.
|
|
392
|
-
if (globalContext.
|
|
393
|
-
const pageConfig = globalContext.
|
|
394
|
+
(0, utils_js_1.assert)(globalContext._isPrerendering);
|
|
395
|
+
if (globalContext._pageConfigs.length > 0) {
|
|
396
|
+
const pageConfig = globalContext._pageConfigs.find((p) => p.pageId === pageId);
|
|
394
397
|
(0, utils_js_1.assert)(pageConfig);
|
|
395
398
|
usesClientRouter = (0, getConfigValueRuntime_js_1.getConfigValueRuntime)(pageConfig, 'clientRouting', 'boolean')?.value ?? false;
|
|
396
399
|
}
|
|
397
400
|
else {
|
|
398
|
-
usesClientRouter = globalContext.
|
|
401
|
+
usesClientRouter = globalContext._usesClientRouter;
|
|
399
402
|
}
|
|
400
403
|
}
|
|
401
404
|
(0, utils_js_1.objectAssign)(pageContext, { _usesClientRouter: usesClientRouter });
|
|
@@ -432,9 +435,9 @@ function assertRouteMatch(pageContextFromRoute, pageContext) {
|
|
|
432
435
|
async function callOnPrerenderStartHook(prerenderContext, globalContext, concurrencyLimit) {
|
|
433
436
|
let onPrerenderStartHook;
|
|
434
437
|
// V1 design
|
|
435
|
-
if (globalContext.
|
|
438
|
+
if (globalContext._pageConfigs.length > 0) {
|
|
436
439
|
const hookName = 'onPrerenderStart';
|
|
437
|
-
const hook = (0, getHook_js_1.getHookFromPageConfigGlobal)(globalContext.
|
|
440
|
+
const hook = (0, getHook_js_1.getHookFromPageConfigGlobal)(globalContext._pageConfigGlobal, hookName);
|
|
438
441
|
if (hook) {
|
|
439
442
|
(0, utils_js_1.assert)(hook.hookName === 'onPrerenderStart');
|
|
440
443
|
onPrerenderStartHook = {
|
|
@@ -446,9 +449,9 @@ async function callOnPrerenderStartHook(prerenderContext, globalContext, concurr
|
|
|
446
449
|
}
|
|
447
450
|
// Old design
|
|
448
451
|
// TODO/v1-release: remove
|
|
449
|
-
if (globalContext.
|
|
452
|
+
if (globalContext._pageConfigs.length === 0) {
|
|
450
453
|
const hookTimeout = (0, getHook_js_1.getHookTimeoutDefault)('onBeforePrerender');
|
|
451
|
-
const pageFilesWithOnBeforePrerenderHook = globalContext.
|
|
454
|
+
const pageFilesWithOnBeforePrerenderHook = globalContext._pageFilesAll.filter((p) => {
|
|
452
455
|
assertExportNames(p);
|
|
453
456
|
if (!p.exportNames?.includes('onBeforePrerender'))
|
|
454
457
|
return false;
|
|
@@ -588,7 +591,7 @@ async function prerenderPages(prerenderContext, concurrencyLimit, onComplete) {
|
|
|
588
591
|
pageContext,
|
|
589
592
|
htmlString: documentHtml,
|
|
590
593
|
pageContextSerialized,
|
|
591
|
-
doNotCreateExtraDirectory: prerenderContext.
|
|
594
|
+
doNotCreateExtraDirectory: prerenderContext._noExtraDir ?? pageContext.is404
|
|
592
595
|
});
|
|
593
596
|
})));
|
|
594
597
|
}
|
|
@@ -605,16 +608,16 @@ function warnContradictoryNoPrerenderList(prerenderedPageContexts, doNotPrerende
|
|
|
605
608
|
});
|
|
606
609
|
}
|
|
607
610
|
async function warnMissingPages(prerenderedPageContexts, globalContext, doNotPrerenderList, partial) {
|
|
608
|
-
const isV1 = globalContext.
|
|
611
|
+
const isV1 = globalContext._pageConfigs.length > 0;
|
|
609
612
|
const hookName = isV1 ? 'onBeforePrerenderStart' : 'prerender';
|
|
610
613
|
/* TODO/after-v1-design-release: document setting `prerender: false` as an alternative to using prerender.partial (both in the warnings and the docs)
|
|
611
614
|
const optOutName = isV1 ? 'prerender' : 'doNotPrerender'
|
|
612
615
|
const msgAddendum = `Explicitly opt-out by setting the config ${optOutName} to ${isV1 ? 'false' : 'true'} or use the option prerender.partial`
|
|
613
616
|
*/
|
|
614
|
-
globalContext.
|
|
617
|
+
globalContext._allPageIds
|
|
615
618
|
.filter((pageId) => !prerenderedPageContexts[pageId])
|
|
616
619
|
.filter((pageId) => !doNotPrerenderList.find((p) => p.pageId === pageId))
|
|
617
|
-
.filter((pageId) => !(0, error_page_js_1.isErrorPage)(pageId, globalContext.
|
|
620
|
+
.filter((pageId) => !(0, error_page_js_1.isErrorPage)(pageId, globalContext._pageConfigs))
|
|
618
621
|
.forEach((pageId) => {
|
|
619
622
|
const pageAt = isV1 ? pageId : `\`${pageId}.page.*\``;
|
|
620
623
|
(0, utils_js_1.assertWarning)(partial, `Cannot pre-render page ${pageAt} because it has a non-static route, while no ${hookName}() hook returned any URL matching the page's route. You need to use a ${hookName}() hook (https://vike.dev/${hookName}) providing a list of URLs for ${pageAt} that should be pre-rendered. If you don't want to pre-render ${pageAt} then use the option prerender.partial (https://vike.dev/prerender#partial) to suppress this warning.`, { onlyOnce: true });
|
|
@@ -767,7 +770,7 @@ function assertIsNotAbort(err, urlOriginal) {
|
|
|
767
770
|
(0, utils_js_1.assertUsage)(false, `${picocolors_1.default.cyan(abortCall)} thrown${thrownBy} while pre-rendering ${urlOriginal} but ${picocolors_1.default.cyan(abortCaller)} isn't supported for pre-rendered pages`);
|
|
768
771
|
}
|
|
769
772
|
function makePublic(prerenderContext) {
|
|
770
|
-
const prerenderContextPublic = (0, utils_js_1.
|
|
773
|
+
const prerenderContextPublic = (0, utils_js_1.getPublicProxy)(prerenderContext, 'prerenderContext', [
|
|
771
774
|
'output', // vite-plugin-vercel
|
|
772
775
|
'pageContexts' // https://vike.dev/i18n#pre-rendering
|
|
773
776
|
]);
|
|
@@ -31,6 +31,6 @@ __exportStar(require("../../utils/pLimit.js"), exports);
|
|
|
31
31
|
__exportStar(require("../../utils/isFilePathAbsoluteFilesystem.js"), exports);
|
|
32
32
|
__exportStar(require("../../utils/isArray.js"), exports);
|
|
33
33
|
__exportStar(require("../../utils/isObject.js"), exports);
|
|
34
|
-
__exportStar(require("../../utils/
|
|
34
|
+
__exportStar(require("../../utils/getPublicProxy.js"), exports);
|
|
35
35
|
__exportStar(require("../../utils/isNullish.js"), exports);
|
|
36
36
|
__exportStar(require("../../utils/preservePropertyGetters.js"), exports);
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.getGlobalContext = getGlobalContext;
|
|
7
7
|
exports.getGlobalContextSync = getGlobalContextSync;
|
|
8
8
|
exports.getGlobalContextAsync = getGlobalContextAsync;
|
|
9
|
-
exports.
|
|
9
|
+
exports.getGlobalContextServerInternal = getGlobalContextServerInternal;
|
|
10
10
|
exports.getViteDevServer = getViteDevServer;
|
|
11
11
|
exports.getViteConfig = getViteConfig;
|
|
12
12
|
exports.initGlobalContext_renderPage = initGlobalContext_renderPage;
|
|
@@ -21,32 +21,36 @@ exports.clearGlobalContext = clearGlobalContext;
|
|
|
21
21
|
exports.assertBuildInfo = assertBuildInfo;
|
|
22
22
|
exports.updateUserFiles = updateUserFiles;
|
|
23
23
|
// The core logic revolves around:
|
|
24
|
-
// -
|
|
24
|
+
// - virtualFileExports is the main requirement
|
|
25
25
|
// - In production: globalObject.buildEntry which is the production entry set by @brillout/vite-plugin-server-entry
|
|
26
|
-
// - loadBuildEntry() sets globalObject.buildEntry and then sets
|
|
26
|
+
// - loadBuildEntry() sets globalObject.buildEntry and then sets virtualFileExports
|
|
27
27
|
// - 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()
|
|
28
28
|
// - Without vike-server it's manually loaded here using importServerProductionEntry() which uses @brillout/vite-plugin-server-entry's autoImporter or crawler
|
|
29
29
|
// - In development: globalObject.viteDevServer which is Vite's development server
|
|
30
|
-
// - globalObject.viteDevServer is used by updateUserFiles() which then sets
|
|
30
|
+
// - globalObject.viteDevServer is used by updateUserFiles() which then sets virtualFileExports
|
|
31
31
|
const utils_js_1 = require("./utils.js");
|
|
32
32
|
const runtime_1 = require("@brillout/vite-plugin-server-entry/runtime");
|
|
33
33
|
const virtualFileImportUserCode_js_1 = require("../shared/virtual-files/virtualFileImportUserCode.js");
|
|
34
34
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
35
35
|
const loadPageRoutes_js_1 = require("../../shared/route/loadPageRoutes.js");
|
|
36
36
|
const assertV1Design_js_1 = require("../shared/assertV1Design.js");
|
|
37
|
-
const getPageConfigsRuntime_js_1 = require("../../shared/getPageConfigsRuntime.js");
|
|
38
37
|
const resolveBase_js_1 = require("../shared/resolveBase.js");
|
|
38
|
+
const createGlobalContextShared_js_1 = require("../../shared/createGlobalContextShared.js");
|
|
39
39
|
const debug = (0, utils_js_1.createDebugger)('vike:globalContext');
|
|
40
40
|
const globalObject = (0, utils_js_1.getGlobalObject)('runtime/globalContext.ts', getInitialGlobalContext());
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
// Trick to break down TypeScript circular dependency
|
|
42
|
+
// https://chat.deepseek.com/a/chat/s/d7e9f90a-c7f3-4108-9cd5-4ad6caed3539
|
|
43
|
+
const globalObjectTyped = globalObject;
|
|
44
|
+
async function getGlobalContextServerInternal() {
|
|
45
|
+
// getGlobalContextServerInternal() should always be called after initGlobalContext()
|
|
43
46
|
(0, utils_js_1.assert)(globalObject.isInitialized);
|
|
44
47
|
assertGlobalContextIsDefined();
|
|
45
48
|
if (globalObject.isProduction !== true)
|
|
46
49
|
await globalObject.waitForUserFilesUpdate;
|
|
47
|
-
const { globalContext } =
|
|
50
|
+
const { globalContext, globalContext_public } = globalObjectTyped;
|
|
48
51
|
assertIsDefined(globalContext);
|
|
49
|
-
|
|
52
|
+
(0, utils_js_1.assert)(globalContext_public);
|
|
53
|
+
return { globalContext, globalContext_public };
|
|
50
54
|
}
|
|
51
55
|
function assertIsDefined(globalContext) {
|
|
52
56
|
if (!globalContext) {
|
|
@@ -56,9 +60,11 @@ function assertIsDefined(globalContext) {
|
|
|
56
60
|
}
|
|
57
61
|
}
|
|
58
62
|
function assertGlobalContextIsDefined() {
|
|
59
|
-
assertIsDefined(
|
|
63
|
+
assertIsDefined(globalObjectTyped.globalContext);
|
|
64
|
+
(0, utils_js_1.assert)(globalObject.globalContext);
|
|
60
65
|
(0, utils_js_1.assert)(globalObject.globalContext_public);
|
|
61
66
|
}
|
|
67
|
+
// We purposely return GlobalContext instead of GlobalContextServer because `import { getGlobalContext } from 'vike'` can resolve to the client-side implementation.
|
|
62
68
|
/**
|
|
63
69
|
* Get runtime information about your app.
|
|
64
70
|
*
|
|
@@ -86,7 +92,7 @@ async function getGlobalContextAsync(isProduction) {
|
|
|
86
92
|
if (!isProduction)
|
|
87
93
|
await globalObject.waitForUserFilesUpdate;
|
|
88
94
|
assertGlobalContextIsDefined();
|
|
89
|
-
const { globalContext_public } =
|
|
95
|
+
const { globalContext_public } = globalObjectTyped;
|
|
90
96
|
(0, utils_js_1.assert)(globalContext_public);
|
|
91
97
|
return globalContext_public;
|
|
92
98
|
}
|
|
@@ -99,24 +105,25 @@ async function getGlobalContextAsync(isProduction) {
|
|
|
99
105
|
*/
|
|
100
106
|
function getGlobalContextSync() {
|
|
101
107
|
debug('getGlobalContextSync()');
|
|
102
|
-
const { globalContext_public } =
|
|
103
|
-
(0, utils_js_1.assertUsage)(globalContext_public,
|
|
108
|
+
const { globalContext_public } = globalObjectTyped;
|
|
109
|
+
(0, utils_js_1.assertUsage)(globalContext_public, createGlobalContextShared_js_1.getGlobalContextSyncErrMsg);
|
|
104
110
|
(0, utils_js_1.assertWarning)(false,
|
|
105
|
-
// We discourage users from using it because
|
|
111
|
+
// We discourage users from using it because `pageContext.globalContext` is safer: I ain't sure but there could be race conditions when using `getGlobalContextSync()` inside React/Vue components upon HMR.
|
|
106
112
|
// We're lying about "is going to be deprecated in the next major release": let's keep it and see if users need it (so far I can't see a use case for it).
|
|
107
113
|
'getGlobalContextSync() is going to be deprecated in the next major release, see https://vike.dev/getGlobalContext', { onlyOnce: true });
|
|
108
114
|
return globalContext_public;
|
|
109
115
|
}
|
|
110
116
|
function makePublic(globalContext) {
|
|
111
|
-
const globalContextPublic = (0, utils_js_1.
|
|
117
|
+
const globalContextPublic = (0, utils_js_1.getPublicProxy)(globalContext, 'globalContext', [
|
|
112
118
|
'assetsManifest',
|
|
113
119
|
'config',
|
|
114
120
|
'viteConfig',
|
|
115
121
|
'viteConfigRuntime',
|
|
116
122
|
'pages',
|
|
117
123
|
'baseServer',
|
|
118
|
-
'baseAssets'
|
|
119
|
-
|
|
124
|
+
'baseAssets',
|
|
125
|
+
'isClientSide'
|
|
126
|
+
], true);
|
|
120
127
|
return globalContextPublic;
|
|
121
128
|
}
|
|
122
129
|
async function setGlobalContext_viteDevServer(viteDevServer) {
|
|
@@ -224,96 +231,6 @@ function setIsProduction(isProduction) {
|
|
|
224
231
|
(0, utils_js_1.assert)(globalObject.isProduction === isProduction);
|
|
225
232
|
globalObject.isProduction = isProduction;
|
|
226
233
|
}
|
|
227
|
-
function defineGlobalContext() {
|
|
228
|
-
const globalContext = resolveGlobalContext();
|
|
229
|
-
assertIsDefined(globalContext);
|
|
230
|
-
const globalContext_public = makePublic(globalContext);
|
|
231
|
-
(0, utils_js_1.objectAssign)(globalContext, { globalContext_public });
|
|
232
|
-
globalObject.globalContext = globalContext;
|
|
233
|
-
globalObject.globalContext_public = globalContext_public;
|
|
234
|
-
assertGlobalContextIsDefined();
|
|
235
|
-
(0, utils_js_1.onSetupRuntime)();
|
|
236
|
-
}
|
|
237
|
-
function resolveGlobalContext() {
|
|
238
|
-
const { viteDevServer, viteConfig, viteConfigRuntime, isPrerendering, isProduction, userFiles } = globalObject;
|
|
239
|
-
(0, utils_js_1.assert)(typeof isProduction === 'boolean');
|
|
240
|
-
let globalContext;
|
|
241
|
-
if (!isProduction) {
|
|
242
|
-
// Requires globalObject.viteDevServer
|
|
243
|
-
if (!viteDevServer)
|
|
244
|
-
return null;
|
|
245
|
-
(0, utils_js_1.assert)(userFiles); // main common requiement
|
|
246
|
-
(0, utils_js_1.assert)(viteConfig);
|
|
247
|
-
(0, utils_js_1.assert)(viteConfigRuntime);
|
|
248
|
-
(0, utils_js_1.assert)(!isPrerendering);
|
|
249
|
-
globalContext = {
|
|
250
|
-
isProduction: false,
|
|
251
|
-
isPrerendering: false,
|
|
252
|
-
assetsManifest: null,
|
|
253
|
-
viteDevServer,
|
|
254
|
-
viteConfig,
|
|
255
|
-
...userFiles,
|
|
256
|
-
viteConfigRuntime,
|
|
257
|
-
...resolveBaseRuntime(viteConfigRuntime, userFiles.config)
|
|
258
|
-
};
|
|
259
|
-
}
|
|
260
|
-
else {
|
|
261
|
-
// Requires globalObject.buildEntry
|
|
262
|
-
if (!globalObject.buildEntry)
|
|
263
|
-
return null;
|
|
264
|
-
(0, utils_js_1.assert)(userFiles); // main common requiement
|
|
265
|
-
const { buildInfo, assetsManifest } = globalObject;
|
|
266
|
-
(0, utils_js_1.assert)(buildInfo);
|
|
267
|
-
(0, utils_js_1.assert)(assetsManifest);
|
|
268
|
-
const globalContext_ = {
|
|
269
|
-
isProduction: true,
|
|
270
|
-
assetsManifest,
|
|
271
|
-
...userFiles,
|
|
272
|
-
viteDevServer: null,
|
|
273
|
-
viteConfigRuntime: buildInfo.viteConfigRuntime,
|
|
274
|
-
usesClientRouter: buildInfo.usesClientRouter,
|
|
275
|
-
...resolveBaseRuntime(buildInfo.viteConfigRuntime, userFiles.config)
|
|
276
|
-
};
|
|
277
|
-
if (isPrerendering) {
|
|
278
|
-
(0, utils_js_1.assert)(viteConfig);
|
|
279
|
-
(0, utils_js_1.objectAssign)(globalContext_, {
|
|
280
|
-
isPrerendering: true,
|
|
281
|
-
viteConfig
|
|
282
|
-
});
|
|
283
|
-
globalContext = globalContext_;
|
|
284
|
-
}
|
|
285
|
-
else {
|
|
286
|
-
(0, utils_js_1.objectAssign)(globalContext_, {
|
|
287
|
-
isPrerendering: false,
|
|
288
|
-
viteConfig: null
|
|
289
|
-
});
|
|
290
|
-
globalContext = globalContext_;
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
return globalContext;
|
|
294
|
-
}
|
|
295
|
-
async function getUserFiles() {
|
|
296
|
-
// Help TypeScript resolve what TypeScript (wrongfully) believes to be cyclic dependency
|
|
297
|
-
const globalObject_ = globalObject;
|
|
298
|
-
const { pageConfigsRuntime } = globalObject_;
|
|
299
|
-
(0, utils_js_1.assert)(pageConfigsRuntime);
|
|
300
|
-
const { pageFilesAll, allPageIds, pageConfigs, pageConfigGlobal, globalConfig, pageConfigsUserFriendly } = pageConfigsRuntime;
|
|
301
|
-
const { pageRoutes, onBeforeRouteHook } = await (0, loadPageRoutes_js_1.loadPageRoutes)(pageFilesAll, pageConfigs, pageConfigGlobal, allPageIds);
|
|
302
|
-
const userFiles = {
|
|
303
|
-
pageFilesAll,
|
|
304
|
-
pageConfigs,
|
|
305
|
-
pageConfigGlobal,
|
|
306
|
-
allPageIds,
|
|
307
|
-
pageRoutes,
|
|
308
|
-
onBeforeRouteHook,
|
|
309
|
-
pages: pageConfigsUserFriendly,
|
|
310
|
-
config: globalConfig.config
|
|
311
|
-
};
|
|
312
|
-
(0, assertV1Design_js_1.assertV1Design)(
|
|
313
|
-
// pageConfigs is PageConfigRuntime[] but assertV1Design() requires PageConfigBuildTime[]
|
|
314
|
-
pageConfigs.length > 0, pageFilesAll);
|
|
315
|
-
return userFiles;
|
|
316
|
-
}
|
|
317
234
|
function assertViteManifest(manifest) {
|
|
318
235
|
(0, utils_js_1.assert)((0, utils_js_1.isPlainObject)(manifest));
|
|
319
236
|
/* We should include these assertions but we don't as a workaround for PWA manifests: https://github.com/vikejs/vike/issues/769
|
|
@@ -329,10 +246,7 @@ function assertViteManifest(manifest) {
|
|
|
329
246
|
}
|
|
330
247
|
async function loadBuildEntry(outDir) {
|
|
331
248
|
debug('loadBuildEntry()');
|
|
332
|
-
if (globalObject.
|
|
333
|
-
(0, utils_js_1.assert)(globalObject.buildInfo);
|
|
334
|
-
(0, utils_js_1.assert)(globalObject.assetsManifest);
|
|
335
|
-
(0, utils_js_1.assert)(globalObject.buildEntry);
|
|
249
|
+
if (globalObject.globalContext) {
|
|
336
250
|
return;
|
|
337
251
|
}
|
|
338
252
|
if (!globalObject.buildEntry) {
|
|
@@ -345,20 +259,18 @@ async function loadBuildEntry(outDir) {
|
|
|
345
259
|
globalObject.buildEntry = globalObject.buildEntryPrevious;
|
|
346
260
|
}
|
|
347
261
|
(0, utils_js_1.assert)(globalObject.buildEntry);
|
|
262
|
+
// If using `inject` then dist/server/index.js imports dist/server/entry.js and loadBuildEntry() isn't needed.
|
|
263
|
+
// If dist/server/entry.js isn't imported then this means the user is running the original server entry `$ ts-node server/index.ts`.
|
|
348
264
|
(0, utils_js_1.assertWarning)(
|
|
349
|
-
// vike-server => `
|
|
350
|
-
// vike-node => `
|
|
351
|
-
globalObject.buildInfo?.viteConfigRuntime.vitePluginServerEntry.inject !== true,
|
|
352
|
-
/* TO-DO/eventually:
|
|
353
|
-
!!globalObject.buildInfo?.viteConfigRuntime.vitePluginServerEntry.inject,
|
|
354
|
-
*/
|
|
355
|
-
`Run the built server entry (e.g. ${picocolors_1.default.cyan('$ node dist/server/index.mjs')}) instead of the original server entry (e.g. ${picocolors_1.default.cyan('$ ts-node server/index.ts')})`, { onlyOnce: true });
|
|
265
|
+
// vike-server => `inject === true`
|
|
266
|
+
// vike-node => `inject === [ 'index' ]` => we don't show the warning to vike-node users (I don't remember why).
|
|
267
|
+
globalObject.buildInfo?.viteConfigRuntime.vitePluginServerEntry.inject !== true || globalObject.isPrerendering, `Run the built server entry (e.g. ${picocolors_1.default.cyan('$ node dist/server/index.mjs')}) instead of the original server entry (e.g. ${picocolors_1.default.cyan('$ ts-node server/index.ts')})`, { onlyOnce: true });
|
|
356
268
|
}
|
|
357
269
|
const { buildEntry } = globalObject;
|
|
358
270
|
assertBuildEntry(buildEntry);
|
|
359
271
|
globalObject.assetsManifest = buildEntry.assetsManifest;
|
|
360
272
|
globalObject.buildInfo = buildEntry.buildInfo;
|
|
361
|
-
await
|
|
273
|
+
await setGlobalContext(buildEntry.virtualFileExports);
|
|
362
274
|
}
|
|
363
275
|
async function setGlobalContext_buildEntry(buildEntry) {
|
|
364
276
|
debug('setGlobalContext_buildEntry()');
|
|
@@ -418,15 +330,80 @@ async function updateUserFiles() {
|
|
|
418
330
|
// Avoid race condition: abort if there is a new globalObject.viteDevServer (happens when vite.config.js is modified => Vite's dev server is fully reloaded).
|
|
419
331
|
if (viteDevServer !== globalObject.viteDevServer)
|
|
420
332
|
return;
|
|
421
|
-
await
|
|
333
|
+
await setGlobalContext(virtualFileExports);
|
|
422
334
|
resolve();
|
|
423
335
|
}
|
|
424
|
-
async function
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
336
|
+
async function setGlobalContext(virtualFileExports) {
|
|
337
|
+
const globalContext = await (0, createGlobalContextShared_js_1.createGlobalContextShared)(virtualFileExports, globalObject, addGlobalContext);
|
|
338
|
+
(0, assertV1Design_js_1.assertV1Design)(
|
|
339
|
+
// pageConfigs is PageConfigRuntime[] but assertV1Design() requires PageConfigBuildTime[]
|
|
340
|
+
globalContext._pageConfigs.length > 0, globalContext._pageFilesAll);
|
|
341
|
+
// Public usage
|
|
342
|
+
globalObject.globalContext_public = makePublic(globalContext);
|
|
429
343
|
assertGlobalContextIsDefined();
|
|
344
|
+
(0, utils_js_1.onSetupRuntime)();
|
|
345
|
+
// Never actually used, only used for TypeScript `ReturnType<typeof setGlobalContext>`
|
|
346
|
+
return globalContext;
|
|
347
|
+
}
|
|
348
|
+
async function addGlobalContext(globalContext) {
|
|
349
|
+
const { pageRoutes, onBeforeRouteHook } = await (0, loadPageRoutes_js_1.loadPageRoutes)(globalContext._pageFilesAll, globalContext._pageConfigs, globalContext._pageConfigGlobal, globalContext._allPageIds);
|
|
350
|
+
const globalContextBase = {
|
|
351
|
+
isClientSide: false,
|
|
352
|
+
_pageRoutes: pageRoutes,
|
|
353
|
+
_onBeforeRouteHook: onBeforeRouteHook
|
|
354
|
+
};
|
|
355
|
+
const { viteDevServer, viteConfig, viteConfigRuntime, isPrerendering, isProduction } = globalObject;
|
|
356
|
+
(0, utils_js_1.assert)(typeof isProduction === 'boolean');
|
|
357
|
+
if (!isProduction) {
|
|
358
|
+
(0, utils_js_1.assert)(viteDevServer);
|
|
359
|
+
(0, utils_js_1.assert)(globalContext); // main common requirement
|
|
360
|
+
(0, utils_js_1.assert)(viteConfig);
|
|
361
|
+
(0, utils_js_1.assert)(viteConfigRuntime);
|
|
362
|
+
(0, utils_js_1.assert)(!isPrerendering);
|
|
363
|
+
return {
|
|
364
|
+
...globalContext,
|
|
365
|
+
...globalContextBase,
|
|
366
|
+
...resolveBaseRuntime(viteConfigRuntime, globalContext.config),
|
|
367
|
+
_isProduction: false,
|
|
368
|
+
_isPrerendering: false,
|
|
369
|
+
assetsManifest: null,
|
|
370
|
+
_viteDevServer: viteDevServer,
|
|
371
|
+
viteConfig,
|
|
372
|
+
viteConfigRuntime
|
|
373
|
+
};
|
|
374
|
+
}
|
|
375
|
+
else {
|
|
376
|
+
(0, utils_js_1.assert)(globalObject.buildEntry);
|
|
377
|
+
(0, utils_js_1.assert)(globalContext); // main common requiement
|
|
378
|
+
const { buildInfo, assetsManifest } = globalObject;
|
|
379
|
+
(0, utils_js_1.assert)(buildInfo);
|
|
380
|
+
(0, utils_js_1.assert)(assetsManifest);
|
|
381
|
+
const globalContextBase2 = {
|
|
382
|
+
...globalContext,
|
|
383
|
+
...globalContextBase,
|
|
384
|
+
...resolveBaseRuntime(buildInfo.viteConfigRuntime, globalContext.config),
|
|
385
|
+
_isProduction: true,
|
|
386
|
+
assetsManifest,
|
|
387
|
+
_viteDevServer: null,
|
|
388
|
+
viteConfigRuntime: buildInfo.viteConfigRuntime,
|
|
389
|
+
_usesClientRouter: buildInfo.usesClientRouter
|
|
390
|
+
};
|
|
391
|
+
if (isPrerendering) {
|
|
392
|
+
(0, utils_js_1.assert)(viteConfig);
|
|
393
|
+
return {
|
|
394
|
+
...globalContextBase2,
|
|
395
|
+
_isPrerendering: true,
|
|
396
|
+
viteConfig
|
|
397
|
+
};
|
|
398
|
+
}
|
|
399
|
+
else {
|
|
400
|
+
return {
|
|
401
|
+
...globalContextBase2,
|
|
402
|
+
_isPrerendering: false,
|
|
403
|
+
viteConfig: null
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
}
|
|
430
407
|
}
|
|
431
408
|
function clearGlobalContext() {
|
|
432
409
|
debug('clearGlobalContext()');
|