vike 0.4.220-commit-af5c91f → 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 +55 -11
- package/dist/cjs/node/api/prepareViteApiCall.js +20 -17
- package/dist/cjs/node/api/prerender.js +1 -0
- package/dist/cjs/node/api/utils.js +1 -0
- package/dist/cjs/node/plugin/index.js +2 -0
- package/dist/cjs/node/plugin/plugins/autoFullBuild.js +9 -20
- package/dist/cjs/node/plugin/plugins/baseUrls.js +1 -1
- package/dist/cjs/node/plugin/plugins/buildApp.js +72 -0
- package/dist/cjs/node/plugin/plugins/buildConfig/fixServerAssets.js +8 -10
- package/dist/cjs/node/plugin/plugins/buildConfig.js +5 -5
- package/dist/cjs/node/plugin/plugins/buildEntry/index.js +2 -2
- package/dist/cjs/node/plugin/plugins/commonConfig.js +1 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +1 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/index.js +8 -2
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/{assertExtensions.js → getVikeConfig/assertExtensions.js} +31 -31
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +53 -21
- 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 +3 -3
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +205 -343
- 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} +7 -7
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/{getVirtualFilePageConfigs.js → virtual-files/getVirtualFilePageConfigs.js} +3 -3
- package/dist/cjs/node/plugin/plugins/setGlobalContext.js +1 -4
- package/dist/cjs/node/plugin/shared/getFullBuildInlineConfig.js +20 -0
- package/dist/cjs/node/plugin/shared/getOutDirs.js +50 -38
- package/dist/cjs/node/prerender/runPrerender.js +29 -30
- package/dist/cjs/node/runtime/globalContext.js +186 -100
- package/dist/cjs/node/runtime/html/injectAssets/getHtmlTags.js +2 -3
- 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/renderPage/analyzePage.js +2 -3
- 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/loadUserFilesServerSide.js +5 -4
- package/dist/cjs/node/runtime/renderPage/log404/index.js +1 -2
- package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +10 -9
- package/dist/cjs/node/runtime/renderPage.js +27 -30
- package/dist/cjs/node/runtime/utils.js +1 -0
- package/dist/cjs/node/runtime-dev/createDevMiddleware.js +5 -3
- package/dist/cjs/node/shared/resolveBase.js +3 -5
- package/dist/cjs/shared/getPageConfigsRuntime.js +20 -0
- 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 +13 -4
- package/dist/cjs/shared/route/loadPageRoutes.js +1 -0
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/assertSetup.js +1 -1
- package/dist/cjs/utils/debug.js +8 -6
- package/dist/cjs/utils/findFile.js +1 -0
- package/dist/cjs/utils/objectAssignSafe.js +7 -0
- 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/server-routing-runtime/getPageContext.js +3 -4
- package/dist/esm/client/shared/loadUserFilesClientSide.js +3 -2
- package/dist/esm/node/api/build.js +23 -12
- package/dist/esm/node/api/prepareViteApiCall.d.ts +4 -2
- package/dist/esm/node/api/prepareViteApiCall.js +20 -17
- package/dist/esm/node/api/prerender.js +1 -0
- package/dist/esm/node/api/utils.d.ts +1 -0
- package/dist/esm/node/api/utils.js +1 -0
- package/dist/esm/node/plugin/index.js +2 -0
- package/dist/esm/node/plugin/plugins/autoFullBuild.js +10 -21
- package/dist/esm/node/plugin/plugins/baseUrls.js +1 -1
- 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 +8 -10
- package/dist/esm/node/plugin/plugins/buildConfig.js +6 -6
- package/dist/esm/node/plugin/plugins/buildEntry/index.js +2 -2
- package/dist/esm/node/plugin/plugins/commonConfig.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/commonConfig.js +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/index.js +8 -2
- 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} +31 -31
- 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 +52 -20
- 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 +2 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +3 -3
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +2 -38
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +208 -346
- 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} +7 -7
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/{getVirtualFilePageConfigs.js → virtual-files/getVirtualFilePageConfigs.js} +3 -3
- 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/setGlobalContext.js +2 -5
- package/dist/esm/node/plugin/shared/getFullBuildInlineConfig.d.ts +2 -0
- package/dist/esm/node/plugin/shared/getFullBuildInlineConfig.js +17 -0
- package/dist/esm/node/plugin/shared/getOutDirs.d.ts +1 -1
- package/dist/esm/node/plugin/shared/getOutDirs.js +50 -38
- package/dist/esm/node/plugin/shared/viteIsSSR.d.ts +2 -5
- package/dist/esm/node/prerender/runPrerender.d.ts +2 -2
- package/dist/esm/node/prerender/runPrerender.js +30 -31
- package/dist/esm/node/runtime/globalContext.d.ts +31 -29
- package/dist/esm/node/runtime/globalContext.js +186 -100
- package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.d.ts +1 -1
- package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +2 -3
- 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/renderPage/analyzePage.d.ts +2 -1
- package/dist/esm/node/runtime/renderPage/analyzePage.js +2 -3
- 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 +2 -0
- 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/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 +21 -5
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +10 -9
- package/dist/esm/node/runtime/renderPage.js +28 -31
- package/dist/esm/node/runtime/utils.d.ts +1 -0
- package/dist/esm/node/runtime/utils.js +1 -0
- package/dist/esm/node/runtime-dev/createDevMiddleware.js +5 -3
- package/dist/esm/node/shared/resolveBase.d.ts +2 -1
- package/dist/esm/node/shared/resolveBase.js +3 -5
- package/dist/esm/shared/getPageConfigsRuntime.d.ts +13 -0
- package/dist/esm/shared/getPageConfigsRuntime.js +18 -0
- 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 +7 -0
- package/dist/esm/shared/page-configs/PageConfig.d.ts +9 -5
- package/dist/esm/shared/page-configs/getPageConfigUserFriendly.d.ts +5 -7
- package/dist/esm/shared/page-configs/getPageConfigUserFriendly.js +13 -4
- package/dist/esm/shared/route/loadPageRoutes.js +1 -0
- 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/debug.d.ts +1 -1
- package/dist/esm/utils/debug.js +8 -6
- package/dist/esm/utils/findFile.js +1 -0
- package/dist/esm/utils/objectAssignSafe.d.ts +1 -0
- package/dist/esm/utils/objectAssignSafe.js +4 -0
- package/dist/esm/utils/projectInfo.d.ts +1 -1
- package/package.json +2 -2
- package/dist/cjs/shared/getPageFiles/getPageFiles.js +0 -48
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/assertExtensions.d.ts +0 -6
- package/dist/esm/shared/getPageFiles/getPageFiles.d.ts +0 -15
- package/dist/esm/shared/getPageFiles/getPageFiles.js +0 -46
- /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
|
@@ -5,6 +5,7 @@ export type { GetPageAssets };
|
|
|
5
5
|
export type { PageContextGetPageAssets };
|
|
6
6
|
import { type MediaType } from './inferMediaType.js';
|
|
7
7
|
import type { ClientDependency } from '../../../shared/getPageFiles/analyzePageClientSide/ClientDependency.js';
|
|
8
|
+
import type { GlobalContext } from '../globalContext.js';
|
|
8
9
|
import type { ResolveClientEntriesDev } from '../../plugin/shared/resolveClientEntriesDev.js';
|
|
9
10
|
type PageAsset = {
|
|
10
11
|
src: string;
|
|
@@ -17,6 +18,7 @@ type PageContextGetPageAssets = {
|
|
|
17
18
|
_baseServer: string;
|
|
18
19
|
_baseAssets: string | null;
|
|
19
20
|
_includeAssetsImportedByServer: boolean;
|
|
21
|
+
_globalContext: GlobalContext;
|
|
20
22
|
};
|
|
21
23
|
declare function getPageAssets(pageContext: PageContextGetPageAssets, clientDependencies: ClientDependency[], clientEntries: string[]): Promise<PageAsset[]>;
|
|
22
24
|
declare function setResolveClientEntriesDev(resolveClientEntriesDev: ResolveClientEntriesDev): void;
|
|
@@ -6,13 +6,13 @@ import { retrieveAssetsProd } from './getPageAssets/retrieveAssetsProd.js';
|
|
|
6
6
|
import { inferMediaType } from './inferMediaType.js';
|
|
7
7
|
import { getManifestEntry } from './getPageAssets/getManifestEntry.js';
|
|
8
8
|
import { sortPageAssetsForEarlyHintsHeader } from './getPageAssets/sortPageAssetsForEarlyHintsHeader.js';
|
|
9
|
-
import { getGlobalContext } from '../globalContext.js';
|
|
10
9
|
const globalObject = getGlobalObject('getPageAssets.ts', {
|
|
11
10
|
resolveClientEntriesDev: null
|
|
12
11
|
});
|
|
13
12
|
async function getPageAssets(pageContext, clientDependencies, clientEntries) {
|
|
14
|
-
const globalContext =
|
|
15
|
-
const
|
|
13
|
+
const globalContext = pageContext._globalContext;
|
|
14
|
+
const { isProduction } = globalContext;
|
|
15
|
+
const isDev = !isProduction;
|
|
16
16
|
let assetUrls;
|
|
17
17
|
let clientEntriesSrc;
|
|
18
18
|
if (isDev) {
|
|
@@ -55,7 +55,7 @@ async function getPageAssets(pageContext, clientDependencies, clientEntries) {
|
|
|
55
55
|
pageAsset.src = prependBase(toPosixPath(pageAsset.src), baseServerAssets);
|
|
56
56
|
return pageAsset;
|
|
57
57
|
});
|
|
58
|
-
sortPageAssetsForEarlyHintsHeader(pageAssets);
|
|
58
|
+
await sortPageAssetsForEarlyHintsHeader(pageAssets, isProduction);
|
|
59
59
|
return pageAssets;
|
|
60
60
|
}
|
|
61
61
|
function resolveClientEntriesProd(clientEntry, assetsManifest) {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { handleErrorWithoutErrorPage };
|
|
2
|
+
import type { GlobalContext } from '../globalContext.js';
|
|
2
3
|
import type { PageContextAfterRender } from './renderPageAlreadyRouted.js';
|
|
3
4
|
import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
|
|
4
5
|
import type { PageFile } from '../../../shared/getPageFiles.js';
|
|
@@ -9,5 +10,6 @@ declare function handleErrorWithoutErrorPage<PageContext extends {
|
|
|
9
10
|
pageId: null;
|
|
10
11
|
_pageFilesAll: PageFile[];
|
|
11
12
|
_pageConfigs: PageConfigRuntime[];
|
|
13
|
+
_globalContext: GlobalContext;
|
|
12
14
|
urlOriginal: string;
|
|
13
15
|
}>(pageContext: PageContext): Promise<PageContext & PageContextAfterRender>;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export { handleErrorWithoutErrorPage };
|
|
2
2
|
import { stringify } from '@brillout/json-serializer/stringify';
|
|
3
|
-
import { getGlobalContext } from '../globalContext.js';
|
|
4
3
|
import { assert, assertWarning, objectAssign } from '../utils.js';
|
|
5
4
|
import { createHttpResponsePage, createHttpResponseError } from './createHttpResponse.js';
|
|
6
5
|
import pc from '@brillout/picocolors';
|
|
@@ -10,7 +9,7 @@ async function handleErrorWithoutErrorPage(pageContext) {
|
|
|
10
9
|
assert(pageContext.errorWhileRendering || pageContext.is404);
|
|
11
10
|
{
|
|
12
11
|
const isV1 = pageContext._pageConfigs.length > 0;
|
|
13
|
-
warnMissingErrorPage(isV1);
|
|
12
|
+
await warnMissingErrorPage(isV1, pageContext._globalContext.isProduction);
|
|
14
13
|
}
|
|
15
14
|
if (!pageContext.isClientSideNavigation) {
|
|
16
15
|
const httpResponse = createHttpResponseError(pageContext);
|
|
@@ -25,9 +24,8 @@ async function handleErrorWithoutErrorPage(pageContext) {
|
|
|
25
24
|
return pageContext;
|
|
26
25
|
}
|
|
27
26
|
}
|
|
28
|
-
function warnMissingErrorPage(isV1) {
|
|
29
|
-
|
|
30
|
-
if (!globalContext.isProduction) {
|
|
27
|
+
async function warnMissingErrorPage(isV1, isProduction) {
|
|
28
|
+
if (!isProduction) {
|
|
31
29
|
const msg = [
|
|
32
30
|
`No ${isV1 ? 'error page' : pc.cyan('_error.page.js')} found,`,
|
|
33
31
|
'we recommend defining one',
|
|
@@ -6,10 +6,12 @@ import { PromiseType } from '../utils.js';
|
|
|
6
6
|
import { PageContextGetPageAssets, type PageAsset } from './getPageAssets.js';
|
|
7
7
|
import { type PageContextDebugRouteMatches } from './debugPageFiles.js';
|
|
8
8
|
import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
|
|
9
|
+
import type { GlobalContext } from '../globalContext.js';
|
|
9
10
|
type PageContext_loadUserFilesServerSide = PageContextGetPageAssets & PageContextDebugRouteMatches & {
|
|
10
11
|
urlOriginal: string;
|
|
11
12
|
_pageFilesAll: PageFile[];
|
|
12
13
|
_pageConfigs: PageConfigRuntime[];
|
|
14
|
+
_globalContext: GlobalContext;
|
|
13
15
|
};
|
|
14
16
|
type PageFiles = PromiseType<ReturnType<typeof loadUserFilesServerSide>>;
|
|
15
17
|
declare function loadUserFilesServerSide(pageContext: {
|
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
export { loadUserFilesServerSide };
|
|
2
|
-
import { getPageFilesServerSide
|
|
2
|
+
import { getPageFilesServerSide } from '../../../shared/getPageFiles.js';
|
|
3
|
+
import { getPageConfigUserFriendlyOld } from '../../../shared/page-configs/getPageConfigUserFriendly.js';
|
|
3
4
|
import { analyzePageClientSideInit } from '../../../shared/getPageFiles/analyzePageClientSide.js';
|
|
4
5
|
import { assert, assertUsage, assertWarning, hasProp, isArrayOfStrings, objectAssign, isArray } from '../utils.js';
|
|
5
6
|
import { getPageAssets } from './getPageAssets.js';
|
|
6
7
|
import { debugPageFiles } from './debugPageFiles.js';
|
|
7
8
|
import { findPageConfig } from '../../../shared/page-configs/findPageConfig.js';
|
|
8
9
|
import { analyzePage } from './analyzePage.js';
|
|
9
|
-
import { getGlobalContext } from '../globalContext.js';
|
|
10
10
|
import { loadConfigValues } from '../../../shared/page-configs/loadConfigValues.js';
|
|
11
11
|
async function loadUserFilesServerSide(pageContext) {
|
|
12
12
|
const pageConfig = findPageConfig(pageContext._pageConfigs, pageContext.pageId); // Make pageConfig globally available as pageContext._pageConfig?
|
|
13
|
+
const globalContext = pageContext._globalContext;
|
|
13
14
|
const [{ pageFilesLoaded, pageContextExports }] = await Promise.all([
|
|
14
|
-
loadPageUserFiles(pageContext._pageFilesAll, pageConfig, pageContext.pageId, !
|
|
15
|
+
loadPageUserFiles(pageContext._pageFilesAll, pageConfig, pageContext.pageId, !globalContext.isProduction),
|
|
15
16
|
analyzePageClientSideInit(pageContext._pageFilesAll, pageContext.pageId, { sharedPageFilesAlreadyLoaded: true })
|
|
16
17
|
]);
|
|
17
|
-
const { isHtmlOnly, isClientRouting, clientEntries, clientDependencies, pageFilesClientSide, pageFilesServerSide } = analyzePage(pageContext._pageFilesAll, pageConfig, pageContext.pageId);
|
|
18
|
+
const { isHtmlOnly, isClientRouting, clientEntries, clientDependencies, pageFilesClientSide, pageFilesServerSide } = await analyzePage(pageContext._pageFilesAll, pageConfig, pageContext.pageId, globalContext);
|
|
18
19
|
const isV1Design = !!pageConfig;
|
|
19
20
|
const passToClient = [];
|
|
20
21
|
const errMsg = ' should be an array of strings.';
|
|
@@ -99,7 +100,7 @@ async function loadPageUserFiles(pageFilesAll, pageConfig, pageId, isDev) {
|
|
|
99
100
|
const pageFilesServerSide = getPageFilesServerSide(pageFilesAll, pageId);
|
|
100
101
|
const pageConfigLoaded = !pageConfig ? null : await loadConfigValues(pageConfig, isDev);
|
|
101
102
|
await Promise.all(pageFilesServerSide.map((p) => p.loadFile?.()));
|
|
102
|
-
const pageContextExports =
|
|
103
|
+
const pageContextExports = getPageConfigUserFriendlyOld(pageFilesServerSide, pageConfigLoaded);
|
|
103
104
|
return {
|
|
104
105
|
pageContextExports,
|
|
105
106
|
pageFilesLoaded: pageFilesServerSide
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
export { log404 };
|
|
2
2
|
export { getRoutesInfo };
|
|
3
3
|
import type { PageRoutes } from '../../../../shared/route/index.js';
|
|
4
|
+
import type { GlobalContext } from '../../globalContext.js';
|
|
4
5
|
declare function log404(pageContext: {
|
|
5
6
|
urlPathname: string;
|
|
6
7
|
errorWhileRendering: null | Error;
|
|
7
8
|
isClientSideNavigation: boolean;
|
|
8
9
|
_pageRoutes: PageRoutes;
|
|
10
|
+
_globalContext: GlobalContext;
|
|
9
11
|
}): Promise<void>;
|
|
10
12
|
declare function getRoutesInfo(pageRoutes: PageRoutes): string | null;
|
|
@@ -2,7 +2,6 @@ export { log404 };
|
|
|
2
2
|
// Exported for ./index.spec.ts
|
|
3
3
|
export { getRoutesInfo };
|
|
4
4
|
import { noRouteMatch } from '../../../../shared/route/noRouteMatch.js';
|
|
5
|
-
import { getGlobalContext } from '../../globalContext.js';
|
|
6
5
|
import { assert, assertUsage, assertInfo, compareString, stripAnsi, getTerminalWidth, truncateString } from '../../utils.js';
|
|
7
6
|
import pc from '@brillout/picocolors';
|
|
8
7
|
async function log404(pageContext) {
|
|
@@ -13,7 +12,7 @@ async function log404(pageContext) {
|
|
|
13
12
|
'No page found. Create at least one /pages/some-page/+Page.js file.'
|
|
14
13
|
*/
|
|
15
14
|
);
|
|
16
|
-
const globalContext =
|
|
15
|
+
const globalContext = pageContext._globalContext;
|
|
17
16
|
if (!globalContext.isProduction && !isFileRequest(urlPathname) && !pageContext.isClientSideNavigation) {
|
|
18
17
|
const routesInfo = getRoutesInfo(pageRoutes);
|
|
19
18
|
let msg = `URL ${pc.cyan(urlPathname)} ${noRouteMatch}`;
|
package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { PageContextUrlInternal } from '../../../shared/getPageContextUrlCompute
|
|
|
4
4
|
import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
|
|
5
5
|
import type { PageConfigUserFriendly } from '../../../shared/page-configs/getPageConfigUserFriendly.js';
|
|
6
6
|
import { PageContextBuiltInServerInternal } from '../../../shared/types.js';
|
|
7
|
+
import type { GlobalContext, GlobalContextPublic } from '../globalContext.js';
|
|
7
8
|
type PageContextForUserConsumptionServerSide = PageContextBuiltInServerInternal & PageConfigUserFriendly & {
|
|
8
9
|
urlOriginal: string;
|
|
9
10
|
/** @deprecated */
|
|
@@ -17,5 +18,7 @@ type PageContextForUserConsumptionServerSide = PageContextBuiltInServerInternal
|
|
|
17
18
|
is404: null | boolean;
|
|
18
19
|
isClientSideNavigation: boolean;
|
|
19
20
|
pageProps?: Record<string, unknown>;
|
|
21
|
+
_globalContext: GlobalContext;
|
|
22
|
+
globalContext: GlobalContextPublic;
|
|
20
23
|
} & Record<string, unknown>;
|
|
21
24
|
declare function preparePageContextForUserConsumptionServerSide(pageContext: PageContextForUserConsumptionServerSide): void;
|
|
@@ -5,6 +5,7 @@ export { getPageContextInitEnhanced };
|
|
|
5
5
|
export type { PageContextAfterRender };
|
|
6
6
|
export type { PageContextInitEnhanced };
|
|
7
7
|
import { type PageContextUrlInternal } from '../../../shared/getPageContextUrlComputed.js';
|
|
8
|
+
import type { GlobalContext } from '../globalContext.js';
|
|
8
9
|
import { HttpResponse } from './createHttpResponse.js';
|
|
9
10
|
import { PageContext_loadUserFilesServerSide, type PageFiles } from './loadUserFilesServerSide.js';
|
|
10
11
|
type PageContextAfterRender = {
|
|
@@ -45,6 +46,9 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
|
|
|
45
46
|
_allPageIds: string[];
|
|
46
47
|
_pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
47
48
|
_onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
49
|
+
_globalContext: GlobalContext;
|
|
50
|
+
/** @experimental This is a beta feature https://vike.dev/getGlobalContext */
|
|
51
|
+
globalContext: import("../globalContext.js").GlobalContextPublic;
|
|
48
52
|
_pageContextInit: {
|
|
49
53
|
urlOriginal: string;
|
|
50
54
|
headersOriginal?: unknown;
|
|
@@ -96,6 +100,9 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
|
|
|
96
100
|
_allPageIds: string[];
|
|
97
101
|
_pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
98
102
|
_onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
103
|
+
_globalContext: GlobalContext;
|
|
104
|
+
/** @experimental This is a beta feature https://vike.dev/getGlobalContext */
|
|
105
|
+
globalContext: import("../globalContext.js").GlobalContextPublic;
|
|
99
106
|
_pageContextInit: {
|
|
100
107
|
urlOriginal: string;
|
|
101
108
|
headersOriginal?: unknown;
|
|
@@ -130,7 +137,7 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
|
|
|
130
137
|
_urlHandler: null;
|
|
131
138
|
};
|
|
132
139
|
}>;
|
|
133
|
-
declare function prerender404Page(pageContextInit_: Record<string, unknown> | null): Promise<{
|
|
140
|
+
declare function prerender404Page(pageContextInit_: Record<string, unknown> | null, globalContext: GlobalContext): Promise<{
|
|
134
141
|
documentHtml: string;
|
|
135
142
|
pageContextSerialized: null;
|
|
136
143
|
pageContext: {
|
|
@@ -148,6 +155,9 @@ declare function prerender404Page(pageContextInit_: Record<string, unknown> | nu
|
|
|
148
155
|
_allPageIds: string[];
|
|
149
156
|
_pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
150
157
|
_onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
158
|
+
_globalContext: GlobalContext;
|
|
159
|
+
/** @experimental This is a beta feature https://vike.dev/getGlobalContext */
|
|
160
|
+
globalContext: import("../globalContext.js").GlobalContextPublic;
|
|
151
161
|
_pageContextInit: {
|
|
152
162
|
urlOriginal: string;
|
|
153
163
|
headersOriginal?: unknown;
|
|
@@ -199,6 +209,9 @@ declare function prerender404Page(pageContextInit_: Record<string, unknown> | nu
|
|
|
199
209
|
_allPageIds: string[];
|
|
200
210
|
_pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
201
211
|
_onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
212
|
+
_globalContext: GlobalContext;
|
|
213
|
+
/** @experimental This is a beta feature https://vike.dev/getGlobalContext */
|
|
214
|
+
globalContext: import("../globalContext.js").GlobalContextPublic;
|
|
202
215
|
_pageContextInit: {
|
|
203
216
|
urlOriginal: string;
|
|
204
217
|
headersOriginal?: unknown;
|
|
@@ -233,18 +246,18 @@ declare function prerender404Page(pageContextInit_: Record<string, unknown> | nu
|
|
|
233
246
|
_urlHandler: null;
|
|
234
247
|
};
|
|
235
248
|
} | null>;
|
|
236
|
-
type PageContextInitEnhanced = ReturnType<typeof getPageContextInitEnhanced
|
|
249
|
+
type PageContextInitEnhanced = Awaited<ReturnType<typeof getPageContextInitEnhanced>>;
|
|
237
250
|
declare function getPageContextInitEnhanced(pageContextInit: {
|
|
238
251
|
urlOriginal: string;
|
|
239
252
|
headersOriginal?: unknown;
|
|
240
253
|
headers?: unknown;
|
|
241
|
-
}, { ssr: { urlRewrite, urlHandler, isClientSideNavigation } }?: {
|
|
254
|
+
}, globalContext: GlobalContext, { ssr: { urlRewrite, urlHandler, isClientSideNavigation } }?: {
|
|
242
255
|
ssr?: {
|
|
243
256
|
urlRewrite: null | string;
|
|
244
257
|
urlHandler: null | ((url: string) => string);
|
|
245
258
|
isClientSideNavigation: boolean;
|
|
246
259
|
};
|
|
247
|
-
}): {
|
|
260
|
+
}): Promise<{
|
|
248
261
|
urlOriginal: string;
|
|
249
262
|
headersOriginal?: unknown;
|
|
250
263
|
headers?: unknown;
|
|
@@ -259,6 +272,9 @@ declare function getPageContextInitEnhanced(pageContextInit: {
|
|
|
259
272
|
_allPageIds: string[];
|
|
260
273
|
_pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
261
274
|
_onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
275
|
+
_globalContext: GlobalContext;
|
|
276
|
+
/** @experimental This is a beta feature https://vike.dev/getGlobalContext */
|
|
277
|
+
globalContext: import("../globalContext.js").GlobalContextPublic;
|
|
262
278
|
_pageContextInit: {
|
|
263
279
|
urlOriginal: string;
|
|
264
280
|
headersOriginal?: unknown;
|
|
@@ -273,4 +289,4 @@ declare function getPageContextInitEnhanced(pageContextInit: {
|
|
|
273
289
|
url: string;
|
|
274
290
|
} & {
|
|
275
291
|
headers: Record<string, string> | null;
|
|
276
|
-
}
|
|
292
|
+
}>;
|
|
@@ -7,7 +7,6 @@ import { getHtmlString } from '../html/renderHtml.js';
|
|
|
7
7
|
import { assert, assertUsage, assertWarning, hasProp, normalizeHeaders, objectAssign } from '../utils.js';
|
|
8
8
|
import { serializePageContextClientSide } from '../html/serializePageContextClientSide.js';
|
|
9
9
|
import { getPageContextUrlComputed } from '../../../shared/getPageContextUrlComputed.js';
|
|
10
|
-
import { getGlobalContext } from '../globalContext.js';
|
|
11
10
|
import { createHttpResponsePage, createHttpResponsePageContextJson } from './createHttpResponse.js';
|
|
12
11
|
import { loadUserFilesServerSide } from './loadUserFilesServerSide.js';
|
|
13
12
|
import { executeOnRenderHtmlHook } from './executeOnRenderHtmlHook.js';
|
|
@@ -81,8 +80,7 @@ async function prerenderPage(pageContext) {
|
|
|
81
80
|
return { documentHtml, pageContextSerialized, pageContext };
|
|
82
81
|
}
|
|
83
82
|
}
|
|
84
|
-
async function prerender404Page(pageContextInit_) {
|
|
85
|
-
const globalContext = getGlobalContext();
|
|
83
|
+
async function prerender404Page(pageContextInit_, globalContext) {
|
|
86
84
|
const errorPageId = getErrorPageId(globalContext.pageFilesAll, globalContext.pageConfigs);
|
|
87
85
|
if (!errorPageId) {
|
|
88
86
|
return null;
|
|
@@ -102,20 +100,19 @@ async function prerender404Page(pageContextInit_) {
|
|
|
102
100
|
};
|
|
103
101
|
objectAssign(pageContextInit, pageContextInit_);
|
|
104
102
|
{
|
|
105
|
-
const pageContextInitEnhanced = getPageContextInitEnhanced(pageContextInit);
|
|
103
|
+
const pageContextInitEnhanced = await getPageContextInitEnhanced(pageContextInit, globalContext);
|
|
106
104
|
objectAssign(pageContext, pageContextInitEnhanced);
|
|
107
105
|
}
|
|
108
106
|
objectAssign(pageContext, await loadUserFilesServerSide(pageContext));
|
|
109
107
|
return prerenderPage(pageContext);
|
|
110
108
|
}
|
|
111
|
-
function getPageContextInitEnhanced(pageContextInit, { ssr: { urlRewrite, urlHandler, isClientSideNavigation } = {
|
|
109
|
+
async function getPageContextInitEnhanced(pageContextInit, globalContext, { ssr: { urlRewrite, urlHandler, isClientSideNavigation } = {
|
|
112
110
|
urlRewrite: null,
|
|
113
111
|
urlHandler: null,
|
|
114
112
|
isClientSideNavigation: false
|
|
115
113
|
} } = {}) {
|
|
116
114
|
assert(pageContextInit.urlOriginal);
|
|
117
|
-
const
|
|
118
|
-
const { baseServer, baseAssets } = resolveBaseRuntime();
|
|
115
|
+
const { baseServer, baseAssets } = resolveBaseRuntime(globalContext);
|
|
119
116
|
const pageContextInitEnhanced = {};
|
|
120
117
|
objectAssign(pageContextInitEnhanced, pageContextInit);
|
|
121
118
|
objectAssign(pageContextInitEnhanced, {
|
|
@@ -124,14 +121,18 @@ function getPageContextInitEnhanced(pageContextInit, { ssr: { urlRewrite, urlHan
|
|
|
124
121
|
_baseServer: baseServer,
|
|
125
122
|
_baseAssets: baseAssets,
|
|
126
123
|
// TODO/now: add meta.default
|
|
127
|
-
_includeAssetsImportedByServer: globalContext.
|
|
128
|
-
// TODO: use GloablContext instead
|
|
124
|
+
_includeAssetsImportedByServer: globalContext.config.includeAssetsImportedByServer ?? true,
|
|
125
|
+
// TODO/soon: use GloablContext instead
|
|
129
126
|
_pageFilesAll: globalContext.pageFilesAll,
|
|
130
127
|
_pageConfigs: globalContext.pageConfigs,
|
|
131
128
|
_pageConfigGlobal: globalContext.pageConfigGlobal,
|
|
132
129
|
_allPageIds: globalContext.allPageIds,
|
|
133
130
|
_pageRoutes: globalContext.pageRoutes,
|
|
134
131
|
_onBeforeRouteHook: globalContext.onBeforeRouteHook,
|
|
132
|
+
_globalContext: globalContext,
|
|
133
|
+
// TODO/now: add PageContext['globalContext']
|
|
134
|
+
/** @experimental This is a beta feature https://vike.dev/getGlobalContext */
|
|
135
|
+
globalContext: globalContext.globalContext_public,
|
|
135
136
|
_pageContextInit: pageContextInit,
|
|
136
137
|
_urlRewrite: urlRewrite,
|
|
137
138
|
_urlHandler: urlHandler,
|
|
@@ -4,7 +4,7 @@ import { getPageContextInitEnhanced, renderPageAlreadyRouted } from './renderPag
|
|
|
4
4
|
import { route } from '../../shared/route/index.js';
|
|
5
5
|
import { assert, hasProp, objectAssign, isUrl, parseUrl, onSetupRuntime, assertWarning, getGlobalObject, checkType, assertUsage, normalizeUrlPathname, removeBaseServer, modifyUrlPathname, prependBase, removeUrlOrigin, setUrlOrigin, createUrlFromComponents, isUri, getUrlPretty } from './utils.js';
|
|
6
6
|
import { assertNoInfiniteAbortLoop, getPageContextFromAllRewrites, isAbortError, logAbortErrorHandled } from '../../shared/route/abort.js';
|
|
7
|
-
import {
|
|
7
|
+
import { getGlobalContextInternal, initGlobalContext_renderPage } from './globalContext.js';
|
|
8
8
|
import { handlePageContextRequestUrl } from './renderPage/handlePageContextRequestUrl.js';
|
|
9
9
|
import { createHttpResponseFavicon404, createHttpResponseRedirect, createHttpResponsePageContextJson, createHttpResponseError } from './renderPage/createHttpResponse.js';
|
|
10
10
|
import { logRuntimeError, logRuntimeInfo } from './renderPage/loggerRuntime.js';
|
|
@@ -76,25 +76,26 @@ async function renderPageAndPrepare(pageContextInit, httpRequestId) {
|
|
|
76
76
|
return handleInvalidConfig(isConfigInvalid.err);
|
|
77
77
|
}
|
|
78
78
|
else {
|
|
79
|
-
// From now on,
|
|
79
|
+
// From now on, globalContext contains all the configuration data; getVikeConfig() isn't called anymore for this request
|
|
80
80
|
}
|
|
81
|
+
const globalContext = await getGlobalContextInternal();
|
|
81
82
|
// Check Base URL
|
|
82
|
-
assertBaseUrl(pageContextInit);
|
|
83
|
+
await assertBaseUrl(pageContextInit, globalContext);
|
|
83
84
|
// Normalize URL
|
|
84
85
|
{
|
|
85
|
-
const pageContextHttpResponse = normalizeUrl(pageContextInit, httpRequestId);
|
|
86
|
+
const pageContextHttpResponse = await normalizeUrl(pageContextInit, globalContext, httpRequestId);
|
|
86
87
|
if (pageContextHttpResponse)
|
|
87
88
|
return pageContextHttpResponse;
|
|
88
89
|
}
|
|
89
90
|
// Permanent redirects (HTTP status code `301`)
|
|
90
91
|
{
|
|
91
|
-
const pageContextHttpResponse = getPermanentRedirect(pageContextInit, httpRequestId);
|
|
92
|
+
const pageContextHttpResponse = await getPermanentRedirect(pageContextInit, globalContext, httpRequestId);
|
|
92
93
|
if (pageContextHttpResponse)
|
|
93
94
|
return pageContextHttpResponse;
|
|
94
95
|
}
|
|
95
|
-
return await renderPageAlreadyPrepared(pageContextInit, httpRequestId, []);
|
|
96
|
+
return await renderPageAlreadyPrepared(pageContextInit, globalContext, httpRequestId, []);
|
|
96
97
|
}
|
|
97
|
-
async function renderPageAlreadyPrepared(pageContextInit, httpRequestId, pageContextsFromRewrite) {
|
|
98
|
+
async function renderPageAlreadyPrepared(pageContextInit, globalContext, httpRequestId, pageContextsFromRewrite) {
|
|
98
99
|
assertNoInfiniteAbortLoop(pageContextsFromRewrite.length,
|
|
99
100
|
// There doesn't seem to be a way to count the number of HTTP redirects (vike don't have access to the HTTP request headers/cookies)
|
|
100
101
|
// https://stackoverflow.com/questions/9683007/detect-infinite-http-redirect-loop-on-server-side
|
|
@@ -106,7 +107,7 @@ async function renderPageAlreadyPrepared(pageContextInit, httpRequestId, pageCon
|
|
|
106
107
|
objectAssign(pageContextNominalPageInit, pageContextFromAllRewrites);
|
|
107
108
|
}
|
|
108
109
|
{
|
|
109
|
-
const pageContextInitEnhanced = getPageContextInitEnhancedSSR(pageContextInit, pageContextNominalPageInit._urlRewrite, httpRequestId);
|
|
110
|
+
const pageContextInitEnhanced = await getPageContextInitEnhancedSSR(pageContextInit, globalContext, pageContextNominalPageInit._urlRewrite, httpRequestId);
|
|
110
111
|
objectAssign(pageContextNominalPageInit, pageContextInitEnhanced);
|
|
111
112
|
}
|
|
112
113
|
let errNominalPage;
|
|
@@ -138,10 +139,10 @@ async function renderPageAlreadyPrepared(pageContextInit, httpRequestId, pageCon
|
|
|
138
139
|
assert(pageContextNominalPageSuccess === undefined);
|
|
139
140
|
assert(pageContextNominalPageInit);
|
|
140
141
|
assert(hasProp(pageContextNominalPageInit, 'urlOriginal', 'string'));
|
|
141
|
-
const pageContextErrorPageInit = await getPageContextErrorPageInit(pageContextInit, errNominalPage, pageContextNominalPageInit, httpRequestId);
|
|
142
|
+
const pageContextErrorPageInit = await getPageContextErrorPageInit(pageContextInit, globalContext, errNominalPage, pageContextNominalPageInit, httpRequestId);
|
|
142
143
|
// Handle `throw redirect()` and `throw render()` while rendering nominal page
|
|
143
144
|
if (isAbortError(errNominalPage)) {
|
|
144
|
-
const handled = await handleAbortError(errNominalPage, pageContextsFromRewrite, pageContextInit, pageContextNominalPageInit, httpRequestId, pageContextErrorPageInit);
|
|
145
|
+
const handled = await handleAbortError(errNominalPage, pageContextsFromRewrite, pageContextInit, pageContextNominalPageInit, httpRequestId, pageContextErrorPageInit, globalContext);
|
|
145
146
|
if (handled.pageContextReturn) {
|
|
146
147
|
// - throw redirect()
|
|
147
148
|
// - throw render(url)
|
|
@@ -154,7 +155,6 @@ async function renderPageAlreadyPrepared(pageContextInit, httpRequestId, pageCon
|
|
|
154
155
|
Object.assign(pageContextErrorPageInit, handled.pageContextAbort);
|
|
155
156
|
}
|
|
156
157
|
{
|
|
157
|
-
const globalContext = getGlobalContext();
|
|
158
158
|
const errorPageId = getErrorPageId(globalContext.pageFilesAll, globalContext.pageConfigs);
|
|
159
159
|
if (!errorPageId) {
|
|
160
160
|
objectAssign(pageContextErrorPageInit, { pageId: null });
|
|
@@ -171,7 +171,7 @@ async function renderPageAlreadyPrepared(pageContextInit, httpRequestId, pageCon
|
|
|
171
171
|
catch (errErrorPage) {
|
|
172
172
|
// Handle `throw redirect()` and `throw render()` while rendering error page
|
|
173
173
|
if (isAbortError(errErrorPage)) {
|
|
174
|
-
const handled = await handleAbortError(errErrorPage, pageContextsFromRewrite, pageContextInit, pageContextNominalPageInit, httpRequestId, pageContextErrorPageInit);
|
|
174
|
+
const handled = await handleAbortError(errErrorPage, pageContextsFromRewrite, pageContextInit, pageContextNominalPageInit, httpRequestId, pageContextErrorPageInit, globalContext);
|
|
175
175
|
// throw render(abortStatusCode)
|
|
176
176
|
if (!handled.pageContextReturn) {
|
|
177
177
|
const pageContextAbort = errErrorPage._pageContextAbort;
|
|
@@ -287,8 +287,8 @@ async function renderPageNominal(pageContext) {
|
|
|
287
287
|
assert(pageContext === pageContextAfterRender);
|
|
288
288
|
return pageContextAfterRender;
|
|
289
289
|
}
|
|
290
|
-
async function getPageContextErrorPageInit(pageContextInit, errNominalPage, pageContextNominalPagePartial, httpRequestId) {
|
|
291
|
-
const pageContextInitEnhanced = getPageContextInitEnhancedSSR(pageContextInit, null, httpRequestId);
|
|
290
|
+
async function getPageContextErrorPageInit(pageContextInit, globalContext, errNominalPage, pageContextNominalPagePartial, httpRequestId) {
|
|
291
|
+
const pageContextInitEnhanced = await getPageContextInitEnhancedSSR(pageContextInit, globalContext, null, httpRequestId);
|
|
292
292
|
assert(errNominalPage);
|
|
293
293
|
const pageContext = {};
|
|
294
294
|
objectAssign(pageContext, pageContextInitEnhanced);
|
|
@@ -303,9 +303,9 @@ async function getPageContextErrorPageInit(pageContextInit, errNominalPage, page
|
|
|
303
303
|
assert(pageContext.errorWhileRendering);
|
|
304
304
|
return pageContext;
|
|
305
305
|
}
|
|
306
|
-
function getPageContextInitEnhancedSSR(pageContextInit, urlRewrite, httpRequestId) {
|
|
306
|
+
async function getPageContextInitEnhancedSSR(pageContextInit, globalContext, urlRewrite, httpRequestId) {
|
|
307
307
|
const { isClientSideNavigation, _urlHandler } = handlePageContextUrl(pageContextInit.urlOriginal);
|
|
308
|
-
const pageContextInitEnhanced = getPageContextInitEnhanced(pageContextInit, {
|
|
308
|
+
const pageContextInitEnhanced = await getPageContextInitEnhanced(pageContextInit, globalContext, {
|
|
309
309
|
ssr: {
|
|
310
310
|
urlRewrite,
|
|
311
311
|
urlHandler: _urlHandler,
|
|
@@ -336,10 +336,9 @@ function assertIsNotViteRequest(urlPathname, urlOriginal) {
|
|
|
336
336
|
return;
|
|
337
337
|
assertUsage(false, `${pc.code('renderPage(pageContextInit)')} called with ${pc.code(`pageContextInit.urlOriginal===${JSON.stringify(urlOriginal)}`)} which is unexpected because the URL ${pc.bold(urlOriginal)} should have already been handled by the development middleware: make sure the ${pc.cyan('createDevMiddleware()')} middleware is executed *before* the ${pc.cyan('renderPage()')} middleware, see ${pc.underline('https://vike.dev/renderPage')}`);
|
|
338
338
|
}
|
|
339
|
-
function normalizeUrl(pageContextInit, httpRequestId) {
|
|
340
|
-
const
|
|
341
|
-
const {
|
|
342
|
-
const { trailingSlash, disableUrlNormalization } = globalContext.vikeConfig.global.config;
|
|
339
|
+
async function normalizeUrl(pageContextInit, globalContext, httpRequestId) {
|
|
340
|
+
const { baseServer } = resolveBaseRuntime(globalContext);
|
|
341
|
+
const { trailingSlash, disableUrlNormalization } = globalContext.config;
|
|
343
342
|
if (disableUrlNormalization)
|
|
344
343
|
return null;
|
|
345
344
|
const { urlOriginal } = pageContextInit;
|
|
@@ -355,14 +354,13 @@ function normalizeUrl(pageContextInit, httpRequestId) {
|
|
|
355
354
|
objectAssign(pageContextHttpResponse, { httpResponse });
|
|
356
355
|
return pageContextHttpResponse;
|
|
357
356
|
}
|
|
358
|
-
function getPermanentRedirect(pageContextInit, httpRequestId) {
|
|
359
|
-
const
|
|
360
|
-
const { baseServer } = resolveBaseRuntime();
|
|
357
|
+
async function getPermanentRedirect(pageContextInit, globalContext, httpRequestId) {
|
|
358
|
+
const { baseServer } = resolveBaseRuntime(globalContext);
|
|
361
359
|
const urlWithoutBase = removeBaseServer(pageContextInit.urlOriginal, baseServer);
|
|
362
360
|
let origin = null;
|
|
363
361
|
let urlTargetExternal = null;
|
|
364
362
|
let urlTarget = modifyUrlPathname(urlWithoutBase, (urlPathname) => {
|
|
365
|
-
const urlTarget = resolveRedirects(globalContext.
|
|
363
|
+
const urlTarget = resolveRedirects(globalContext.config.redirects ?? [], urlPathname);
|
|
366
364
|
if (urlTarget === null)
|
|
367
365
|
return null;
|
|
368
366
|
if (!isUrl(urlTarget)) {
|
|
@@ -389,7 +387,7 @@ function getPermanentRedirect(pageContextInit, httpRequestId) {
|
|
|
389
387
|
}
|
|
390
388
|
if (normalize(urlTarget) === normalize(urlWithoutBase))
|
|
391
389
|
return null;
|
|
392
|
-
const { baseServer } = resolveBaseRuntime();
|
|
390
|
+
const { baseServer } = resolveBaseRuntime(globalContext);
|
|
393
391
|
if (!originChanged)
|
|
394
392
|
urlTarget = prependBase(urlTarget, baseServer);
|
|
395
393
|
assert(urlTarget !== pageContextInit.urlOriginal);
|
|
@@ -405,13 +403,12 @@ function normalize(url) {
|
|
|
405
403
|
}
|
|
406
404
|
async function handleAbortError(errAbort, pageContextsFromRewrite, pageContextInit,
|
|
407
405
|
// handleAbortError() creates a new pageContext object and we don't merge pageContextNominalPageInit to it: we only use some pageContextNominalPageInit information.
|
|
408
|
-
pageContextNominalPageInit, httpRequestId, pageContextErrorPageInit) {
|
|
409
|
-
logAbortErrorHandled(errAbort,
|
|
406
|
+
pageContextNominalPageInit, httpRequestId, pageContextErrorPageInit, globalContext) {
|
|
407
|
+
logAbortErrorHandled(errAbort, globalContext.isProduction, pageContextNominalPageInit);
|
|
410
408
|
const pageContextAbort = errAbort._pageContextAbort;
|
|
411
409
|
let pageContextSerialized;
|
|
412
410
|
if (pageContextNominalPageInit.isClientSideNavigation) {
|
|
413
411
|
if (pageContextAbort.abortStatusCode) {
|
|
414
|
-
const globalContext = getGlobalContext();
|
|
415
412
|
const errorPageId = getErrorPageId(globalContext.pageFilesAll, globalContext.pageConfigs);
|
|
416
413
|
const abortCall = pageContextAbort._abortCall;
|
|
417
414
|
assert(abortCall);
|
|
@@ -432,7 +429,7 @@ pageContextNominalPageInit, httpRequestId, pageContextErrorPageInit) {
|
|
|
432
429
|
return { pageContextReturn };
|
|
433
430
|
}
|
|
434
431
|
if (pageContextAbort._urlRewrite) {
|
|
435
|
-
const pageContextReturn = await renderPageAlreadyPrepared(pageContextInit, httpRequestId, [
|
|
432
|
+
const pageContextReturn = await renderPageAlreadyPrepared(pageContextInit, globalContext, httpRequestId, [
|
|
436
433
|
...pageContextsFromRewrite,
|
|
437
434
|
pageContextAbort
|
|
438
435
|
]);
|
|
@@ -455,8 +452,8 @@ pageContextNominalPageInit, httpRequestId, pageContextErrorPageInit) {
|
|
|
455
452
|
assert(pageContextAbort.abortStatusCode);
|
|
456
453
|
return { pageContextAbort };
|
|
457
454
|
}
|
|
458
|
-
function assertBaseUrl(pageContextInit) {
|
|
459
|
-
const { baseServer } = resolveBaseRuntime();
|
|
455
|
+
async function assertBaseUrl(pageContextInit, globalContext) {
|
|
456
|
+
const { baseServer } = resolveBaseRuntime(globalContext);
|
|
460
457
|
const { urlOriginal } = pageContextInit;
|
|
461
458
|
const { urlWithoutPageContextRequestSuffix } = handlePageContextRequestUrl(urlOriginal);
|
|
462
459
|
const { hasBaseServer } = parseUrl(urlWithoutPageContextRequestSuffix, baseServer);
|
|
@@ -15,6 +15,7 @@ export * from '../../utils/projectInfo.js';
|
|
|
15
15
|
export * from '../../utils/isArray.js';
|
|
16
16
|
export * from '../../utils/isObject.js';
|
|
17
17
|
export * from '../../utils/objectAssign.js';
|
|
18
|
+
export * from '../../utils/objectAssignSafe.js';
|
|
18
19
|
export * from '../../utils/objectReplace.js';
|
|
19
20
|
export * from '../../utils/PromiseType.js';
|
|
20
21
|
export * from '../../utils/compareString.js';
|
|
@@ -19,6 +19,7 @@ export * from '../../utils/projectInfo.js';
|
|
|
19
19
|
export * from '../../utils/isArray.js';
|
|
20
20
|
export * from '../../utils/isObject.js';
|
|
21
21
|
export * from '../../utils/objectAssign.js';
|
|
22
|
+
export * from '../../utils/objectAssignSafe.js';
|
|
22
23
|
export * from '../../utils/objectReplace.js';
|
|
23
24
|
export * from '../../utils/PromiseType.js';
|
|
24
25
|
export * from '../../utils/compareString.js';
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
export { createDevMiddleware };
|
|
2
2
|
import { createServer } from 'vite';
|
|
3
3
|
import { prepareViteApiCall } from '../api/prepareViteApiCall.js';
|
|
4
|
+
import { setGlobalContext_isProduction } from '../runtime/globalContext.js';
|
|
4
5
|
/*
|
|
5
6
|
* Create server middleware for development with HMR and lazy-transpiling.
|
|
6
7
|
*
|
|
7
8
|
* https://vike.dev/createDevMiddleware
|
|
8
9
|
*/
|
|
9
10
|
async function createDevMiddleware(options = {}) {
|
|
10
|
-
|
|
11
|
+
setGlobalContext_isProduction(false);
|
|
12
|
+
const viteConfigFromOptions = {
|
|
11
13
|
...options.viteConfig,
|
|
12
14
|
server: {
|
|
13
15
|
...options.viteConfig?.server,
|
|
@@ -15,8 +17,8 @@ async function createDevMiddleware(options = {}) {
|
|
|
15
17
|
}
|
|
16
18
|
};
|
|
17
19
|
if (options.root)
|
|
18
|
-
|
|
19
|
-
const { viteConfigEnhanced } = await prepareViteApiCall(
|
|
20
|
+
viteConfigFromOptions.root = options.root;
|
|
21
|
+
const { viteConfigEnhanced } = await prepareViteApiCall(viteConfigFromOptions, 'dev');
|
|
20
22
|
const server = await createServer(viteConfigEnhanced);
|
|
21
23
|
const devMiddleware = server.middlewares;
|
|
22
24
|
return { devMiddleware, viteServer: server, viteConfig: server.config };
|
|
@@ -2,6 +2,7 @@ export { resolveBase };
|
|
|
2
2
|
export { resolveBaseRuntime };
|
|
3
3
|
export { resolveBaseFromResolvedConfig };
|
|
4
4
|
import type { ResolvedConfig } from 'vite';
|
|
5
|
+
import type { GlobalContext } from '../runtime/globalContext.js';
|
|
5
6
|
declare function resolveBaseFromResolvedConfig(baseServer: string | null, baseAssets: string | null, config: ResolvedConfig): {
|
|
6
7
|
baseServer: string;
|
|
7
8
|
baseAssets: string;
|
|
@@ -10,5 +11,5 @@ type BaseUrlsResolved = {
|
|
|
10
11
|
baseServer: string;
|
|
11
12
|
baseAssets: string;
|
|
12
13
|
};
|
|
13
|
-
declare function resolveBaseRuntime(): BaseUrlsResolved;
|
|
14
|
+
declare function resolveBaseRuntime(globalContext: GlobalContext): BaseUrlsResolved;
|
|
14
15
|
declare function resolveBase(baseViteOriginal: string | null, baseServerUnresolved: string | null, baseAssetsUnresolved: string | null): BaseUrlsResolved;
|
|
@@ -3,17 +3,15 @@ export { resolveBaseRuntime };
|
|
|
3
3
|
export { resolveBaseFromResolvedConfig };
|
|
4
4
|
import { assert, assertUsage, isBaseServer, isBaseAssets } from './utils.js';
|
|
5
5
|
import pc from '@brillout/picocolors';
|
|
6
|
-
import { getGlobalContext } from '../runtime/globalContext.js';
|
|
7
6
|
function resolveBaseFromResolvedConfig(baseServer, baseAssets, config) {
|
|
8
7
|
let baseViteOriginal = config._baseViteOriginal;
|
|
9
8
|
assert(baseViteOriginal === null || typeof baseViteOriginal == 'string');
|
|
10
9
|
return resolveBase(baseViteOriginal, baseServer, baseAssets);
|
|
11
10
|
}
|
|
12
|
-
function resolveBaseRuntime() {
|
|
13
|
-
const globalContext = getGlobalContext();
|
|
11
|
+
function resolveBaseRuntime(globalContext) {
|
|
14
12
|
const baseViteOriginal = globalContext.viteConfigRuntime._baseViteOriginal;
|
|
15
|
-
const baseServerUnresolved = globalContext.
|
|
16
|
-
const baseAssetsUnresolved = globalContext.
|
|
13
|
+
const baseServerUnresolved = globalContext.config.baseServer ?? null;
|
|
14
|
+
const baseAssetsUnresolved = globalContext.config.baseAssets ?? null;
|
|
17
15
|
return resolveBase(baseViteOriginal, baseServerUnresolved, baseAssetsUnresolved);
|
|
18
16
|
}
|
|
19
17
|
function resolveBase(baseViteOriginal, baseServerUnresolved, baseAssetsUnresolved) {
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export { getPageConfigsRuntime };
|
|
2
|
+
export { getAllPageIds };
|
|
3
|
+
import type { PageFile } from './getPageFiles.js';
|
|
4
|
+
import { type ConfigUserFriendly } from './page-configs/getPageConfigUserFriendly.js';
|
|
5
|
+
import type { PageConfigGlobalRuntime, PageConfigRuntime } from './page-configs/PageConfig.js';
|
|
6
|
+
declare function getPageConfigsRuntime(virtualFileExports: unknown): {
|
|
7
|
+
pageFilesAll: PageFile[];
|
|
8
|
+
allPageIds: string[];
|
|
9
|
+
pageConfigs: PageConfigRuntime[];
|
|
10
|
+
pageConfigGlobal: PageConfigGlobalRuntime;
|
|
11
|
+
globalConfig: ConfigUserFriendly;
|
|
12
|
+
};
|
|
13
|
+
declare function getAllPageIds(pageFilesAll: PageFile[], pageConfigs: PageConfigRuntime[]): string[];
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export { getPageConfigsRuntime };
|
|
2
|
+
export { getAllPageIds };
|
|
3
|
+
import { parseGlobResults } from './getPageFiles/parseGlobResults.js';
|
|
4
|
+
import { getPageConfigUserFriendlyNew } from './page-configs/getPageConfigUserFriendly.js';
|
|
5
|
+
import { unique } from './utils.js';
|
|
6
|
+
function getPageConfigsRuntime(virtualFileExports) {
|
|
7
|
+
const { pageFilesAll, pageConfigs, pageConfigGlobal } = parseGlobResults(virtualFileExports);
|
|
8
|
+
const allPageIds = getAllPageIds(pageFilesAll, pageConfigs);
|
|
9
|
+
// TODO/now: re-use this call, instead of calling it twice
|
|
10
|
+
const globalConfig = getPageConfigUserFriendlyNew(pageConfigGlobal);
|
|
11
|
+
return { pageFilesAll, allPageIds, pageConfigs, pageConfigGlobal, globalConfig };
|
|
12
|
+
}
|
|
13
|
+
function getAllPageIds(pageFilesAll, pageConfigs) {
|
|
14
|
+
const fileIds = pageFilesAll.filter(({ isDefaultPageFile }) => !isDefaultPageFile).map(({ pageId }) => pageId);
|
|
15
|
+
const allPageIds = unique(fileIds);
|
|
16
|
+
const allPageIds2 = pageConfigs.map((p) => p.pageId);
|
|
17
|
+
return [...allPageIds, ...allPageIds2];
|
|
18
|
+
}
|