vike 0.4.222 → 0.4.223-commit-586dbfb
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/client/shared/getPageContextProxyForUser.js +1 -1
- package/dist/cjs/node/api/prepareViteApiCall.js +1 -1
- package/dist/cjs/node/plugin/index.js +6 -4
- package/dist/cjs/node/plugin/plugins/baseUrls.js +9 -2
- package/dist/cjs/node/plugin/plugins/buildApp.js +14 -7
- package/dist/cjs/node/plugin/plugins/buildConfig/fixServerAssets.js +49 -19
- package/dist/cjs/node/plugin/plugins/buildConfig.js +6 -1
- package/dist/cjs/node/plugin/plugins/commonConfig.js +17 -1
- package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +1 -1
- package/dist/cjs/node/plugin/plugins/envVars.js +2 -18
- package/dist/cjs/node/plugin/plugins/extractAssetsPlugin.js +2 -2
- package/dist/cjs/node/plugin/plugins/extractExportNamesPlugin.js +1 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/assertExtensions.js +4 -4
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +6 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +11 -10
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +8 -5
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +36 -71
- package/dist/cjs/node/plugin/shared/findPageFiles.js +3 -3
- package/dist/cjs/node/plugin/shared/getHttpRequestAsyncStore.js +1 -1
- package/dist/cjs/node/plugin/shared/viteIsSSR.js +19 -10
- package/dist/cjs/node/prerender/runPrerender.js +3 -1
- package/dist/cjs/node/runtime/globalContext.js +19 -8
- package/dist/cjs/node/runtime/renderPage/createHttpResponse/assertNoInfiniteHttpRedirect.js +1 -1
- package/dist/cjs/node/runtime/renderPage/createHttpResponse.js +24 -0
- package/dist/cjs/node/runtime/renderPage/getPageAssets.js +1 -1
- package/dist/cjs/node/runtime/renderPage/handlePageContextRequestUrl.js +1 -1
- package/dist/cjs/node/runtime/renderPage/isNewError.js +1 -1
- package/dist/cjs/node/runtime/renderPage/isVikeConfigInvalid.js +10 -0
- package/dist/cjs/node/runtime/renderPage/loadUserFilesServerSide.js +1 -1
- package/dist/cjs/node/runtime/renderPage/logErrorHint.js +7 -1
- package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +2 -4
- package/dist/cjs/node/runtime/renderPage.js +63 -49
- package/dist/cjs/node/runtime/universal-middleware.js +14 -0
- package/dist/cjs/node/shared/resolveBase.js +0 -13
- package/dist/cjs/shared/getPageConfigsRuntime.js +2 -8
- package/dist/cjs/shared/getPageContextRequestUrl.js +1 -1
- package/dist/cjs/shared/getPageContextUrlComputed.js +12 -9
- package/dist/cjs/shared/hooks/getHook.js +1 -1
- package/dist/cjs/shared/page-configs/getPageConfigUserFriendly.js +44 -12
- package/dist/cjs/shared/page-configs/serialize/parsePageConfigs.js +2 -8
- package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +16 -6
- package/dist/cjs/shared/route/loadPageRoutes.js +1 -1
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/assert.js +1 -1
- package/dist/cjs/utils/assertSetup.js +1 -1
- package/dist/cjs/utils/assertSingleInstance.js +2 -2
- package/dist/cjs/utils/findFile.js +1 -1
- package/dist/cjs/utils/getGlobalObject.js +2 -6
- package/dist/cjs/utils/parseUrl-extras.js +2 -2
- package/dist/cjs/utils/parseUrl.js +5 -5
- package/dist/cjs/utils/requireResolve.js +3 -3
- package/dist/esm/client/client-routing-runtime/getPageContextCurrent.d.ts +2 -2
- package/dist/esm/client/client-routing-runtime/getPageContextCurrent.js +1 -1
- package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.d.ts +4 -4
- package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +1 -1
- package/dist/esm/client/client-routing-runtime/history.js +1 -1
- package/dist/esm/client/client-routing-runtime/index.d.ts +1 -0
- package/dist/esm/client/client-routing-runtime/index.js +1 -0
- package/dist/esm/client/client-routing-runtime/prefetch/getPrefetchSettings.d.ts +2 -2
- package/dist/esm/client/client-routing-runtime/prefetch.d.ts +2 -2
- package/dist/esm/client/client-routing-runtime/prefetch.js +3 -3
- package/dist/esm/client/client-routing-runtime/renderPageClientSide.d.ts +8 -0
- package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +12 -3
- package/dist/esm/client/client-routing-runtime/scrollRestoration.js +1 -1
- package/dist/esm/client/client-routing-runtime/skipLink.js +2 -2
- package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +1 -1
- package/dist/esm/client/shared/executeOnRenderClientHook.d.ts +2 -2
- package/dist/esm/client/shared/getPageContextProxyForUser.js +1 -1
- package/dist/esm/client/shared/loadUserFilesClientSide.d.ts +2 -2
- package/dist/esm/client/shared/loadUserFilesClientSide.js +2 -2
- package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.d.ts +2 -2
- package/dist/esm/node/api/prepareViteApiCall.js +1 -1
- package/dist/esm/node/plugin/index.d.ts +6 -2
- package/dist/esm/node/plugin/index.js +2 -1
- package/dist/esm/node/plugin/plugins/baseUrls.js +9 -2
- package/dist/esm/node/plugin/plugins/buildApp.js +14 -7
- package/dist/esm/node/plugin/plugins/buildConfig/fixServerAssets.js +49 -19
- package/dist/esm/node/plugin/plugins/buildConfig.js +6 -1
- package/dist/esm/node/plugin/plugins/commonConfig.d.ts +14 -6
- package/dist/esm/node/plugin/plugins/commonConfig.js +17 -1
- package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +1 -1
- package/dist/esm/node/plugin/plugins/envVars.js +2 -18
- package/dist/esm/node/plugin/plugins/extractAssetsPlugin.js +3 -3
- package/dist/esm/node/plugin/plugins/extractExportNamesPlugin.js +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/assertExtensions.js +4 -4
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +6 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +10 -9
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +8 -5
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +5 -5
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +38 -73
- package/dist/esm/node/plugin/shared/findPageFiles.js +3 -3
- package/dist/esm/node/plugin/shared/getHttpRequestAsyncStore.js +2 -2
- package/dist/esm/node/plugin/shared/viteIsSSR.d.ts +7 -4
- package/dist/esm/node/plugin/shared/viteIsSSR.js +20 -11
- package/dist/esm/node/prerender/runPrerender.js +3 -1
- package/dist/esm/node/runtime/globalContext.d.ts +9 -8
- package/dist/esm/node/runtime/globalContext.js +19 -8
- package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.d.ts +2 -2
- package/dist/esm/node/runtime/html/injectAssets.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/analyzePage.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/createHttpResponse/assertNoInfiniteHttpRedirect.js +1 -1
- package/dist/esm/node/runtime/renderPage/createHttpResponse.d.ts +2 -0
- package/dist/esm/node/runtime/renderPage/createHttpResponse.js +24 -0
- package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/getPageAssets.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/getPageAssets.js +1 -1
- package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/handlePageContextRequestUrl.js +1 -1
- package/dist/esm/node/runtime/renderPage/isNewError.js +1 -1
- package/dist/esm/node/runtime/renderPage/isVikeConfigInvalid.d.ts +6 -0
- package/dist/esm/node/runtime/renderPage/isVikeConfigInvalid.js +8 -0
- package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.d.ts +3 -3
- package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +2 -2
- package/dist/esm/node/runtime/renderPage/log404/index.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/logErrorHint.js +7 -1
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +4 -4
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +12 -12
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +2 -4
- package/dist/esm/node/runtime/renderPage.d.ts +5 -5
- package/dist/esm/node/runtime/renderPage.js +64 -49
- package/dist/esm/node/runtime/universal-middleware.d.ts +1 -0
- package/dist/esm/node/runtime/universal-middleware.js +11 -0
- package/dist/esm/node/shared/resolveBase.d.ts +1 -9
- package/dist/esm/node/shared/resolveBase.js +0 -13
- package/dist/esm/shared/getPageConfigsRuntime.d.ts +2 -2
- package/dist/esm/shared/getPageConfigsRuntime.js +3 -9
- package/dist/esm/shared/getPageContextRequestUrl.js +1 -1
- package/dist/esm/shared/getPageContextUrlComputed.js +12 -9
- package/dist/esm/shared/getPageFiles.d.ts +1 -1
- package/dist/esm/shared/hooks/getHook.d.ts +3 -3
- package/dist/esm/shared/hooks/getHook.js +1 -1
- package/dist/esm/shared/page-configs/Config.d.ts +3 -1
- package/dist/esm/shared/page-configs/PageConfig.d.ts +12 -4
- package/dist/esm/shared/page-configs/getPageConfigUserFriendly.d.ts +24 -16
- package/dist/esm/shared/page-configs/getPageConfigUserFriendly.js +44 -12
- package/dist/esm/shared/page-configs/serialize/PageConfigSerialized.d.ts +3 -2
- package/dist/esm/shared/page-configs/serialize/parsePageConfigs.js +2 -8
- package/dist/esm/shared/page-configs/serialize/serializeConfigValues.d.ts +2 -0
- package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +16 -6
- package/dist/esm/shared/route/executeGuardHook.d.ts +2 -2
- package/dist/esm/shared/route/loadPageRoutes.js +1 -1
- package/dist/esm/shared/types.d.ts +6 -0
- package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/utils/assert.js +1 -1
- package/dist/esm/utils/assertSetup.js +1 -1
- package/dist/esm/utils/assertSingleInstance.js +2 -2
- package/dist/esm/utils/findFile.js +1 -1
- package/dist/esm/utils/getGlobalObject.d.ts +3 -2
- package/dist/esm/utils/getGlobalObject.js +2 -6
- package/dist/esm/utils/parseUrl-extras.js +2 -2
- package/dist/esm/utils/parseUrl.d.ts +3 -4
- package/dist/esm/utils/parseUrl.js +5 -5
- package/dist/esm/utils/projectInfo.d.ts +1 -1
- package/dist/esm/utils/requireResolve.js +3 -3
- package/package.json +18 -6
- package/universal-middleware.js +3 -0
- package/dist/cjs/node/runtime/renderPage/isConfigInvalid.js +0 -10
- package/dist/esm/node/runtime/renderPage/isConfigInvalid.d.ts +0 -6
- package/dist/esm/node/runtime/renderPage/isConfigInvalid.js +0 -8
- package/dist-cjs-fixup.mjs +0 -41
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { handleErrorWithoutErrorPage };
|
|
2
|
-
import type {
|
|
2
|
+
import type { GlobalContextInternal } from '../globalContext.js';
|
|
3
3
|
import type { PageContextAfterRender } from './renderPageAlreadyRouted.js';
|
|
4
4
|
import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
|
|
5
5
|
import type { PageFile } from '../../../shared/getPageFiles.js';
|
|
@@ -10,6 +10,6 @@ declare function handleErrorWithoutErrorPage<PageContext extends {
|
|
|
10
10
|
pageId: null;
|
|
11
11
|
_pageFilesAll: PageFile[];
|
|
12
12
|
_pageConfigs: PageConfigRuntime[];
|
|
13
|
-
_globalContext:
|
|
13
|
+
_globalContext: GlobalContextInternal;
|
|
14
14
|
urlOriginal: string;
|
|
15
15
|
}>(pageContext: PageContext): Promise<PageContext & PageContextAfterRender>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { handlePageContextRequestUrl };
|
|
2
2
|
import { pageContextJsonFileExtension, doNotCreateExtraDirectory } from '../../../shared/getPageContextRequestUrl.js';
|
|
3
3
|
import { baseServer, parseUrl, assert, slice } from '../utils.js';
|
|
4
|
-
// See shared/getPageContextRequestUrl.ts
|
|
4
|
+
// See also shared/getPageContextRequestUrl.ts
|
|
5
5
|
function handlePageContextRequestUrl(url) {
|
|
6
6
|
if (!hasSuffix(url)) {
|
|
7
7
|
return { urlWithoutPageContextRequestSuffix: url, isPageContextRequest: false };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { isNewError };
|
|
2
2
|
export { setAlreadyLogged };
|
|
3
3
|
import { getGlobalObject, isObject, isSameErrorMessage, warnIfErrorIsNotObject } from '../utils.js';
|
|
4
|
-
const globalObject = getGlobalObject('
|
|
4
|
+
const globalObject = getGlobalObject('renderPage/isNewError.ts', {
|
|
5
5
|
wasAlreadyLogged: new WeakSet()
|
|
6
6
|
});
|
|
7
7
|
function isNewError(errErrorPage, errNominalPage) {
|
|
@@ -6,17 +6,17 @@ 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 {
|
|
9
|
+
import type { GlobalContextInternal } from '../globalContext.js';
|
|
10
10
|
type PageContext_loadUserFilesServerSide = PageContextGetPageAssets & PageContextDebugRouteMatches & {
|
|
11
11
|
urlOriginal: string;
|
|
12
12
|
_pageFilesAll: PageFile[];
|
|
13
13
|
_pageConfigs: PageConfigRuntime[];
|
|
14
|
-
_globalContext:
|
|
14
|
+
_globalContext: GlobalContextInternal;
|
|
15
15
|
};
|
|
16
16
|
type PageFiles = PromiseType<ReturnType<typeof loadUserFilesServerSide>>;
|
|
17
17
|
declare function loadUserFilesServerSide(pageContext: {
|
|
18
18
|
pageId: string;
|
|
19
|
-
} & PageContext_loadUserFilesServerSide): Promise<import("../../../shared/getPageFiles.js").
|
|
19
|
+
} & PageContext_loadUserFilesServerSide): Promise<import("../../../shared/getPageFiles.js").PageConfigUserFriendlyOld & {
|
|
20
20
|
Page: unknown;
|
|
21
21
|
_isHtmlOnly: boolean;
|
|
22
22
|
_passToClient: string[];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { loadUserFilesServerSide };
|
|
2
2
|
import { getPageFilesServerSide } from '../../../shared/getPageFiles.js';
|
|
3
|
-
import {
|
|
3
|
+
import { getPageConfigUserFriendly_oldDesign } from '../../../shared/page-configs/getPageConfigUserFriendly.js';
|
|
4
4
|
import { analyzePageClientSideInit } from '../../../shared/getPageFiles/analyzePageClientSide.js';
|
|
5
5
|
import { assert, assertUsage, assertWarning, hasProp, isArrayOfStrings, objectAssign, isArray } from '../utils.js';
|
|
6
6
|
import { getPageAssets } from './getPageAssets.js';
|
|
@@ -100,7 +100,7 @@ async function loadPageUserFiles(pageFilesAll, pageConfig, pageConfigGlobal, pag
|
|
|
100
100
|
const pageFilesServerSide = getPageFilesServerSide(pageFilesAll, pageId);
|
|
101
101
|
const pageConfigLoaded = !pageConfig ? null : await loadConfigValues(pageConfig, isDev);
|
|
102
102
|
await Promise.all(pageFilesServerSide.map((p) => p.loadFile?.()));
|
|
103
|
-
const pageContextExports =
|
|
103
|
+
const pageContextExports = getPageConfigUserFriendly_oldDesign(pageFilesServerSide, pageConfigLoaded, pageConfigGlobal);
|
|
104
104
|
return {
|
|
105
105
|
pageContextExports,
|
|
106
106
|
pageFilesLoaded: pageFilesServerSide
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
export { log404 };
|
|
2
2
|
export { getRoutesInfo };
|
|
3
3
|
import type { PageRoutes } from '../../../../shared/route/index.js';
|
|
4
|
-
import type {
|
|
4
|
+
import type { GlobalContextInternal } from '../../globalContext.js';
|
|
5
5
|
declare function log404(pageContext: {
|
|
6
6
|
urlPathname: string;
|
|
7
7
|
errorWhileRendering: null | Error;
|
|
8
8
|
isClientSideNavigation: boolean;
|
|
9
9
|
_pageRoutes: PageRoutes;
|
|
10
|
-
_globalContext:
|
|
10
|
+
_globalContext: GlobalContextInternal;
|
|
11
11
|
}): Promise<void>;
|
|
12
12
|
declare function getRoutesInfo(pageRoutes: PageRoutes): string | null;
|
|
@@ -25,13 +25,19 @@ const errorsMisc = [
|
|
|
25
25
|
mustMentionNodeModules: false
|
|
26
26
|
}
|
|
27
27
|
];
|
|
28
|
+
const reactInvalidEelement = 'https://vike.dev/broken-npm-package#react-invalid-component';
|
|
28
29
|
const errorsReact = [
|
|
29
30
|
{
|
|
30
31
|
errMsg: 'Element type is invalid: expected a string (for built-in components) or a class/function (for composite components)',
|
|
31
|
-
link:
|
|
32
|
+
link: reactInvalidEelement,
|
|
32
33
|
// The stack trace can be user-land while the import is coming from node_modules
|
|
33
34
|
mustMentionNodeModules: false
|
|
34
35
|
},
|
|
36
|
+
{
|
|
37
|
+
errMsg: 'Objects are not valid as a React child',
|
|
38
|
+
link: reactInvalidEelement,
|
|
39
|
+
mustMentionNodeModules: false
|
|
40
|
+
},
|
|
35
41
|
{
|
|
36
42
|
// React's "Invalid hook call.", see https://github.com/vikejs/vike/discussions/1637#discussioncomment-9424712
|
|
37
43
|
errMsg: "Cannot read properties of null (reading 'useContext')"
|
package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts
CHANGED
|
@@ -2,10 +2,10 @@ export { preparePageContextForUserConsumptionServerSide };
|
|
|
2
2
|
export type { PageContextForUserConsumptionServerSide };
|
|
3
3
|
import { PageContextUrlInternal } from '../../../shared/getPageContextUrlComputed.js';
|
|
4
4
|
import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
|
|
5
|
-
import type {
|
|
5
|
+
import type { PageConfigUserFriendlyOld } from '../../../shared/page-configs/getPageConfigUserFriendly.js';
|
|
6
6
|
import { PageContextBuiltInServerInternal } from '../../../shared/types.js';
|
|
7
|
-
import type {
|
|
8
|
-
type PageContextForUserConsumptionServerSide = PageContextBuiltInServerInternal &
|
|
7
|
+
import type { GlobalContextInternal, GlobalContextPublic } from '../globalContext.js';
|
|
8
|
+
type PageContextForUserConsumptionServerSide = PageContextBuiltInServerInternal & PageConfigUserFriendlyOld & {
|
|
9
9
|
urlOriginal: string;
|
|
10
10
|
/** @deprecated */
|
|
11
11
|
url: string;
|
|
@@ -18,7 +18,7 @@ type PageContextForUserConsumptionServerSide = PageContextBuiltInServerInternal
|
|
|
18
18
|
is404: null | boolean;
|
|
19
19
|
isClientSideNavigation: boolean;
|
|
20
20
|
pageProps?: Record<string, unknown>;
|
|
21
|
-
_globalContext:
|
|
21
|
+
_globalContext: GlobalContextInternal;
|
|
22
22
|
globalContext: GlobalContextPublic;
|
|
23
23
|
} & Record<string, unknown>;
|
|
24
24
|
declare function preparePageContextForUserConsumptionServerSide(pageContext: PageContextForUserConsumptionServerSide): void;
|
|
@@ -5,7 +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 {
|
|
8
|
+
import type { GlobalContextInternal } from '../globalContext.js';
|
|
9
9
|
import { HttpResponse } from './createHttpResponse.js';
|
|
10
10
|
import { PageContext_loadUserFilesServerSide, type PageFiles } from './loadUserFilesServerSide.js';
|
|
11
11
|
type PageContextAfterRender = {
|
|
@@ -46,7 +46,7 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
|
|
|
46
46
|
_allPageIds: string[];
|
|
47
47
|
_pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
48
48
|
_onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
49
|
-
_globalContext:
|
|
49
|
+
_globalContext: GlobalContextInternal;
|
|
50
50
|
/** @experimental This is a beta feature https://vike.dev/getGlobalContext */
|
|
51
51
|
globalContext: import("../globalContext.js").GlobalContextPublic;
|
|
52
52
|
_pageContextInit: {
|
|
@@ -63,7 +63,7 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
|
|
|
63
63
|
url: string;
|
|
64
64
|
} & {
|
|
65
65
|
headers: Record<string, string> | null;
|
|
66
|
-
} & import("../../../shared/getPageFiles.js").
|
|
66
|
+
} & import("../../../shared/getPageFiles.js").PageConfigUserFriendlyOld & {
|
|
67
67
|
Page: unknown;
|
|
68
68
|
_isHtmlOnly: boolean;
|
|
69
69
|
_passToClient: string[];
|
|
@@ -100,7 +100,7 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
|
|
|
100
100
|
_allPageIds: string[];
|
|
101
101
|
_pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
102
102
|
_onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
103
|
-
_globalContext:
|
|
103
|
+
_globalContext: GlobalContextInternal;
|
|
104
104
|
/** @experimental This is a beta feature https://vike.dev/getGlobalContext */
|
|
105
105
|
globalContext: import("../globalContext.js").GlobalContextPublic;
|
|
106
106
|
_pageContextInit: {
|
|
@@ -117,7 +117,7 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
|
|
|
117
117
|
url: string;
|
|
118
118
|
} & {
|
|
119
119
|
headers: Record<string, string> | null;
|
|
120
|
-
} & import("../../../shared/getPageFiles.js").
|
|
120
|
+
} & import("../../../shared/getPageFiles.js").PageConfigUserFriendlyOld & {
|
|
121
121
|
Page: unknown;
|
|
122
122
|
_isHtmlOnly: boolean;
|
|
123
123
|
_passToClient: string[];
|
|
@@ -137,7 +137,7 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
|
|
|
137
137
|
_urlHandler: null;
|
|
138
138
|
};
|
|
139
139
|
}>;
|
|
140
|
-
declare function prerender404Page(pageContextInit_: Record<string, unknown> | null, globalContext:
|
|
140
|
+
declare function prerender404Page(pageContextInit_: Record<string, unknown> | null, globalContext: GlobalContextInternal): Promise<{
|
|
141
141
|
documentHtml: string;
|
|
142
142
|
pageContextSerialized: null;
|
|
143
143
|
pageContext: {
|
|
@@ -155,7 +155,7 @@ declare function prerender404Page(pageContextInit_: Record<string, unknown> | nu
|
|
|
155
155
|
_allPageIds: string[];
|
|
156
156
|
_pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
157
157
|
_onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
158
|
-
_globalContext:
|
|
158
|
+
_globalContext: GlobalContextInternal;
|
|
159
159
|
/** @experimental This is a beta feature https://vike.dev/getGlobalContext */
|
|
160
160
|
globalContext: import("../globalContext.js").GlobalContextPublic;
|
|
161
161
|
_pageContextInit: {
|
|
@@ -172,7 +172,7 @@ declare function prerender404Page(pageContextInit_: Record<string, unknown> | nu
|
|
|
172
172
|
url: string;
|
|
173
173
|
} & {
|
|
174
174
|
headers: Record<string, string> | null;
|
|
175
|
-
} & import("../../../shared/getPageFiles.js").
|
|
175
|
+
} & import("../../../shared/getPageFiles.js").PageConfigUserFriendlyOld & {
|
|
176
176
|
Page: unknown;
|
|
177
177
|
_isHtmlOnly: boolean;
|
|
178
178
|
_passToClient: string[];
|
|
@@ -209,7 +209,7 @@ declare function prerender404Page(pageContextInit_: Record<string, unknown> | nu
|
|
|
209
209
|
_allPageIds: string[];
|
|
210
210
|
_pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
211
211
|
_onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
212
|
-
_globalContext:
|
|
212
|
+
_globalContext: GlobalContextInternal;
|
|
213
213
|
/** @experimental This is a beta feature https://vike.dev/getGlobalContext */
|
|
214
214
|
globalContext: import("../globalContext.js").GlobalContextPublic;
|
|
215
215
|
_pageContextInit: {
|
|
@@ -226,7 +226,7 @@ declare function prerender404Page(pageContextInit_: Record<string, unknown> | nu
|
|
|
226
226
|
url: string;
|
|
227
227
|
} & {
|
|
228
228
|
headers: Record<string, string> | null;
|
|
229
|
-
} & import("../../../shared/getPageFiles.js").
|
|
229
|
+
} & import("../../../shared/getPageFiles.js").PageConfigUserFriendlyOld & {
|
|
230
230
|
Page: unknown;
|
|
231
231
|
_isHtmlOnly: boolean;
|
|
232
232
|
_passToClient: string[];
|
|
@@ -251,7 +251,7 @@ declare function getPageContextInitEnhanced(pageContextInit: {
|
|
|
251
251
|
urlOriginal: string;
|
|
252
252
|
headersOriginal?: unknown;
|
|
253
253
|
headers?: unknown;
|
|
254
|
-
}, globalContext:
|
|
254
|
+
}, globalContext: GlobalContextInternal, { ssr: { urlRewrite, urlHandler, isClientSideNavigation } }?: {
|
|
255
255
|
ssr?: {
|
|
256
256
|
urlRewrite: null | string;
|
|
257
257
|
urlHandler: null | ((url: string) => string);
|
|
@@ -272,7 +272,7 @@ declare function getPageContextInitEnhanced(pageContextInit: {
|
|
|
272
272
|
_allPageIds: string[];
|
|
273
273
|
_pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
274
274
|
_onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
275
|
-
_globalContext:
|
|
275
|
+
_globalContext: GlobalContextInternal;
|
|
276
276
|
/** @experimental This is a beta feature https://vike.dev/getGlobalContext */
|
|
277
277
|
globalContext: import("../globalContext.js").GlobalContextPublic;
|
|
278
278
|
_pageContextInit: {
|
|
@@ -17,7 +17,6 @@ import { preparePageContextForUserConsumptionServerSide } from './preparePageCon
|
|
|
17
17
|
import { executeGuardHook } from '../../../shared/route/executeGuardHook.js';
|
|
18
18
|
import pc from '@brillout/picocolors';
|
|
19
19
|
import { isServerSideError } from '../../../shared/misc/isServerSideError.js';
|
|
20
|
-
import { resolveBaseRuntime } from '../../shared/resolveBase.js';
|
|
21
20
|
async function renderPageAlreadyRouted(pageContext) {
|
|
22
21
|
// pageContext.pageId can either be the:
|
|
23
22
|
// - ID of the page matching the routing, or the
|
|
@@ -112,14 +111,13 @@ async function getPageContextInitEnhanced(pageContextInit, globalContext, { ssr:
|
|
|
112
111
|
isClientSideNavigation: false
|
|
113
112
|
} } = {}) {
|
|
114
113
|
assert(pageContextInit.urlOriginal);
|
|
115
|
-
const { baseServer, baseAssets } = resolveBaseRuntime(globalContext);
|
|
116
114
|
const pageContextInitEnhanced = {};
|
|
117
115
|
objectAssign(pageContextInitEnhanced, pageContextInit);
|
|
118
116
|
objectAssign(pageContextInitEnhanced, {
|
|
119
117
|
_objectCreatedByVike: true,
|
|
120
118
|
// The following is defined on `pageContext` because we can eventually make these non-global
|
|
121
|
-
_baseServer: baseServer,
|
|
122
|
-
_baseAssets: baseAssets,
|
|
119
|
+
_baseServer: globalContext.baseServer,
|
|
120
|
+
_baseAssets: globalContext.baseAssets,
|
|
123
121
|
// TODO/now: add meta.default
|
|
124
122
|
_includeAssetsImportedByServer: globalContext.config.includeAssetsImportedByServer ?? true,
|
|
125
123
|
// TODO/soon: use GloablContext instead
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
export { renderPage };
|
|
2
|
-
export {
|
|
2
|
+
export { renderPage_addAsyncHookwrapper };
|
|
3
3
|
import { HttpResponse } from './renderPage/createHttpResponse.js';
|
|
4
4
|
import type { PageContextServer } from '../../types/index.js';
|
|
5
|
-
declare let renderPage_wrapper: <PageContext>(_httpRequestId: number, ret: () => Promise<PageContext>) => Promise<{
|
|
6
|
-
pageContextReturn: Awaited<PageContext>;
|
|
7
|
-
}>;
|
|
8
|
-
declare const renderPage_addWrapper: (wrapper: typeof renderPage_wrapper) => void;
|
|
9
5
|
declare function renderPage<PageContextUserAdded extends {}, PageContextInit extends {
|
|
10
6
|
/** @deprecated */
|
|
11
7
|
url?: string;
|
|
@@ -14,3 +10,7 @@ declare function renderPage<PageContextUserAdded extends {}, PageContextInit ext
|
|
|
14
10
|
}>(pageContextInit: PageContextInit): Promise<PageContextInit & {
|
|
15
11
|
httpResponse: HttpResponse;
|
|
16
12
|
} & Partial<PageContextServer & PageContextUserAdded>>;
|
|
13
|
+
declare let asyncHookWrapper: <PageContext>(_httpRequestId: number, ret: () => Promise<PageContext>) => Promise<{
|
|
14
|
+
pageContextReturn: Awaited<PageContext>;
|
|
15
|
+
}>;
|
|
16
|
+
declare function renderPage_addAsyncHookwrapper(wrapper: typeof asyncHookWrapper): void;
|
|
@@ -1,63 +1,58 @@
|
|
|
1
1
|
export { renderPage };
|
|
2
|
-
export {
|
|
2
|
+
export { renderPage_addAsyncHookwrapper };
|
|
3
3
|
import { getPageContextInitEnhanced, renderPageAlreadyRouted } from './renderPage/renderPageAlreadyRouted.js';
|
|
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
7
|
import { getGlobalContextInternal, initGlobalContext_renderPage } from './globalContext.js';
|
|
8
8
|
import { handlePageContextRequestUrl } from './renderPage/handlePageContextRequestUrl.js';
|
|
9
|
-
import { createHttpResponseFavicon404, createHttpResponseRedirect, createHttpResponsePageContextJson, createHttpResponseError } from './renderPage/createHttpResponse.js';
|
|
9
|
+
import { createHttpResponseFavicon404, createHttpResponseRedirect, createHttpResponsePageContextJson, createHttpResponseError, createHttpResponseBaseIsMissing } from './renderPage/createHttpResponse.js';
|
|
10
10
|
import { logRuntimeError, logRuntimeInfo } from './renderPage/loggerRuntime.js';
|
|
11
11
|
import { isNewError } from './renderPage/isNewError.js';
|
|
12
12
|
import { assertArguments } from './renderPage/assertArguments.js';
|
|
13
13
|
import { log404 } from './renderPage/log404/index.js';
|
|
14
|
-
import {
|
|
14
|
+
import { isVikeConfigInvalid } from './renderPage/isVikeConfigInvalid.js';
|
|
15
15
|
import pc from '@brillout/picocolors';
|
|
16
16
|
import { serializePageContextAbort, serializePageContextClientSide } from './html/serializePageContextClientSide.js';
|
|
17
17
|
import { getErrorPageId } from '../../shared/error-page.js';
|
|
18
18
|
import { handleErrorWithoutErrorPage } from './renderPage/handleErrorWithoutErrorPage.js';
|
|
19
19
|
import { loadUserFilesServerSide } from './renderPage/loadUserFilesServerSide.js';
|
|
20
20
|
import { resolveRedirects } from './renderPage/resolveRedirects.js';
|
|
21
|
-
import { resolveBaseRuntime } from '../shared/resolveBase.js';
|
|
22
21
|
const globalObject = getGlobalObject('runtime/renderPage.ts', {
|
|
23
22
|
httpRequestsCount: 0
|
|
24
23
|
});
|
|
25
|
-
let renderPage_wrapper = async (_httpRequestId, ret) => ({
|
|
26
|
-
pageContextReturn: await ret()
|
|
27
|
-
});
|
|
28
|
-
const renderPage_addWrapper = (wrapper) => {
|
|
29
|
-
renderPage_wrapper = wrapper;
|
|
30
|
-
};
|
|
31
24
|
// `renderPage()` calls `renderPageNominal()` while ensuring that errors are `console.error(err)` instead of `throw err`, so that Vike never triggers a server shut down. (Throwing an error in an Express.js middleware shuts down the whole Express.js server.)
|
|
32
25
|
async function renderPage(pageContextInit) {
|
|
33
26
|
assertArguments(...arguments);
|
|
34
27
|
assert(hasProp(pageContextInit, 'urlOriginal', 'string')); // assertUsage() already implemented at assertArguments()
|
|
35
|
-
onSetupRuntime();
|
|
36
28
|
assertIsUrl(pageContextInit.urlOriginal);
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
if (
|
|
40
|
-
return
|
|
29
|
+
onSetupRuntime();
|
|
30
|
+
const pageContextInvalidRequest = renderInvalidRequest(pageContextInit);
|
|
31
|
+
if (pageContextInvalidRequest)
|
|
32
|
+
return pageContextInvalidRequest;
|
|
41
33
|
const httpRequestId = getRequestId();
|
|
42
34
|
const urlOriginalPretty = getUrlPretty(pageContextInit.urlOriginal);
|
|
43
35
|
logHttpRequest(urlOriginalPretty, httpRequestId);
|
|
44
|
-
const { pageContextReturn } = await
|
|
36
|
+
const { pageContextReturn } = await asyncHookWrapper(httpRequestId, () => renderPageAndPrepare(pageContextInit, httpRequestId));
|
|
45
37
|
logHttpResponse(urlOriginalPretty, httpRequestId, pageContextReturn);
|
|
46
38
|
checkType(pageContextReturn);
|
|
47
39
|
assert(pageContextReturn.httpResponse);
|
|
48
40
|
return pageContextReturn;
|
|
49
41
|
}
|
|
42
|
+
// Fallback wrapper if node:async_hooks isn't available
|
|
43
|
+
let asyncHookWrapper = async (_httpRequestId, ret) => ({
|
|
44
|
+
pageContextReturn: await ret()
|
|
45
|
+
});
|
|
46
|
+
// Add node:async_hooks wrapper
|
|
47
|
+
function renderPage_addAsyncHookwrapper(wrapper) {
|
|
48
|
+
asyncHookWrapper = wrapper;
|
|
49
|
+
}
|
|
50
50
|
async function renderPageAndPrepare(pageContextInit, httpRequestId) {
|
|
51
51
|
// Invalid config
|
|
52
|
-
|
|
53
|
-
logRuntimeInfo?.(pc.bold(pc.red('Error while loading a Vike config file, see error above.')), httpRequestId, 'error');
|
|
54
|
-
const pageContextWithError = getPageContextHttpResponseError(err, pageContextInit, null);
|
|
55
|
-
return pageContextWithError;
|
|
56
|
-
};
|
|
57
|
-
if (isConfigInvalid) {
|
|
52
|
+
if (isVikeConfigInvalid) {
|
|
58
53
|
if (1 < 2 // Make TS happy
|
|
59
54
|
) {
|
|
60
|
-
return
|
|
55
|
+
return renderInvalidVikeConfig(isVikeConfigInvalid.err, pageContextInit, httpRequestId);
|
|
61
56
|
}
|
|
62
57
|
}
|
|
63
58
|
// Prepare context
|
|
@@ -65,22 +60,29 @@ async function renderPageAndPrepare(pageContextInit, httpRequestId) {
|
|
|
65
60
|
await initGlobalContext_renderPage();
|
|
66
61
|
}
|
|
67
62
|
catch (err) {
|
|
68
|
-
// Errors are expected since assertUsage() is used in
|
|
69
|
-
//
|
|
63
|
+
// Errors are expected since assertUsage() is used in initGlobalContext_renderPage() such as:
|
|
64
|
+
// ```bash
|
|
65
|
+
// Re-build your app (you're using 1.2.3 but your app was built with 1.2.2)
|
|
66
|
+
// ```
|
|
67
|
+
// initGlobalContext_renderPage() doens't call any user hook => err isn't thrown from user code.
|
|
70
68
|
assert(!isAbortError(err));
|
|
71
69
|
logRuntimeError(err, httpRequestId);
|
|
72
70
|
const pageContextWithError = getPageContextHttpResponseError(err, pageContextInit, null);
|
|
73
71
|
return pageContextWithError;
|
|
74
72
|
}
|
|
75
|
-
if (
|
|
76
|
-
return
|
|
73
|
+
if (isVikeConfigInvalid) {
|
|
74
|
+
return renderInvalidVikeConfig(isVikeConfigInvalid.err, pageContextInit, httpRequestId);
|
|
77
75
|
}
|
|
78
76
|
else {
|
|
79
|
-
//
|
|
77
|
+
// `globalContext` now contains the entire Vike config and getVikeConfig() isn't called anymore for this request.
|
|
80
78
|
}
|
|
81
79
|
const globalContext = await getGlobalContextInternal();
|
|
82
80
|
// Check Base URL
|
|
83
|
-
|
|
81
|
+
{
|
|
82
|
+
const pageContextHttpResponse = await checkBaseUrl(pageContextInit, globalContext);
|
|
83
|
+
if (pageContextHttpResponse)
|
|
84
|
+
return pageContextHttpResponse;
|
|
85
|
+
}
|
|
84
86
|
// Normalize URL
|
|
85
87
|
{
|
|
86
88
|
const pageContextHttpResponse = await normalizeUrl(pageContextInit, globalContext, httpRequestId);
|
|
@@ -248,15 +250,6 @@ function getPageContextHttpResponseError(err, pageContextInit, pageContext) {
|
|
|
248
250
|
});
|
|
249
251
|
return pageContextWithError;
|
|
250
252
|
}
|
|
251
|
-
function getPageContextHttpResponseFavicon404(pageContextInit) {
|
|
252
|
-
const pageContext = createPageContext(pageContextInit);
|
|
253
|
-
const httpResponse = createHttpResponseFavicon404();
|
|
254
|
-
objectAssign(pageContext, {
|
|
255
|
-
httpResponse
|
|
256
|
-
});
|
|
257
|
-
checkType(pageContext);
|
|
258
|
-
return pageContext;
|
|
259
|
-
}
|
|
260
253
|
function createPageContext(pageContextInit) {
|
|
261
254
|
const pageContext = {
|
|
262
255
|
_isPageContextObject: true
|
|
@@ -337,7 +330,6 @@ function assertIsNotViteRequest(urlPathname, urlOriginal) {
|
|
|
337
330
|
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
331
|
}
|
|
339
332
|
async function normalizeUrl(pageContextInit, globalContext, httpRequestId) {
|
|
340
|
-
const { baseServer } = resolveBaseRuntime(globalContext);
|
|
341
333
|
const { trailingSlash, disableUrlNormalization } = globalContext.config;
|
|
342
334
|
if (disableUrlNormalization)
|
|
343
335
|
return null;
|
|
@@ -345,7 +337,7 @@ async function normalizeUrl(pageContextInit, globalContext, httpRequestId) {
|
|
|
345
337
|
const { isPageContextRequest } = handlePageContextRequestUrl(urlOriginal);
|
|
346
338
|
if (isPageContextRequest)
|
|
347
339
|
return null;
|
|
348
|
-
const urlNormalized = normalizeUrlPathname(urlOriginal, trailingSlash ?? false, baseServer);
|
|
340
|
+
const urlNormalized = normalizeUrlPathname(urlOriginal, trailingSlash ?? false, globalContext.baseServer);
|
|
349
341
|
if (!urlNormalized)
|
|
350
342
|
return null;
|
|
351
343
|
logRuntimeInfo?.(`URL normalized from ${pc.cyan(urlOriginal)} to ${pc.cyan(urlNormalized)} (https://vike.dev/url-normalization)`, httpRequestId, 'info');
|
|
@@ -355,8 +347,7 @@ async function normalizeUrl(pageContextInit, globalContext, httpRequestId) {
|
|
|
355
347
|
return pageContextHttpResponse;
|
|
356
348
|
}
|
|
357
349
|
async function getPermanentRedirect(pageContextInit, globalContext, httpRequestId) {
|
|
358
|
-
const
|
|
359
|
-
const urlWithoutBase = removeBaseServer(pageContextInit.urlOriginal, baseServer);
|
|
350
|
+
const urlWithoutBase = removeBaseServer(pageContextInit.urlOriginal, globalContext.baseServer);
|
|
360
351
|
let origin = null;
|
|
361
352
|
let urlTargetExternal = null;
|
|
362
353
|
let urlTarget = modifyUrlPathname(urlWithoutBase, (urlPathname) => {
|
|
@@ -387,9 +378,8 @@ async function getPermanentRedirect(pageContextInit, globalContext, httpRequestI
|
|
|
387
378
|
}
|
|
388
379
|
if (normalize(urlTarget) === normalize(urlWithoutBase))
|
|
389
380
|
return null;
|
|
390
|
-
const { baseServer } = resolveBaseRuntime(globalContext);
|
|
391
381
|
if (!originChanged)
|
|
392
|
-
urlTarget = prependBase(urlTarget, baseServer);
|
|
382
|
+
urlTarget = prependBase(urlTarget, globalContext.baseServer);
|
|
393
383
|
assert(urlTarget !== pageContextInit.urlOriginal);
|
|
394
384
|
}
|
|
395
385
|
logRuntimeInfo?.(`Permanent redirection defined by config.redirects (https://vike.dev/redirects)`, httpRequestId, 'info');
|
|
@@ -452,10 +442,35 @@ pageContextNominalPageInit, httpRequestId, pageContextErrorPageInit, globalConte
|
|
|
452
442
|
assert(pageContextAbort.abortStatusCode);
|
|
453
443
|
return { pageContextAbort };
|
|
454
444
|
}
|
|
455
|
-
async function
|
|
456
|
-
const { baseServer } =
|
|
445
|
+
async function checkBaseUrl(pageContextInit, globalContext) {
|
|
446
|
+
const { baseServer } = globalContext;
|
|
457
447
|
const { urlOriginal } = pageContextInit;
|
|
458
|
-
const {
|
|
459
|
-
|
|
460
|
-
|
|
448
|
+
const { isBaseMissing } = parseUrl(urlOriginal, baseServer);
|
|
449
|
+
if (!isBaseMissing)
|
|
450
|
+
return;
|
|
451
|
+
const pageContext = createPageContext(pageContextInit);
|
|
452
|
+
const httpResponse = createHttpResponseBaseIsMissing(urlOriginal, baseServer);
|
|
453
|
+
objectAssign(pageContext, {
|
|
454
|
+
httpResponse,
|
|
455
|
+
isBaseMissing: true
|
|
456
|
+
});
|
|
457
|
+
checkType(pageContext);
|
|
458
|
+
return pageContext;
|
|
459
|
+
}
|
|
460
|
+
function renderInvalidRequest(pageContextInit) {
|
|
461
|
+
const urlPathnameWithBase = parseUrl(pageContextInit.urlOriginal, '/').pathname;
|
|
462
|
+
assertIsNotViteRequest(urlPathnameWithBase, pageContextInit.urlOriginal);
|
|
463
|
+
if (urlPathnameWithBase.endsWith('/favicon.ico')) {
|
|
464
|
+
const pageContext = createPageContext(pageContextInit);
|
|
465
|
+
const httpResponse = createHttpResponseFavicon404();
|
|
466
|
+
objectAssign(pageContext, { httpResponse });
|
|
467
|
+
checkType(pageContext);
|
|
468
|
+
return pageContext;
|
|
469
|
+
}
|
|
470
|
+
return null;
|
|
471
|
+
}
|
|
472
|
+
function renderInvalidVikeConfig(err, pageContextInit, httpRequestId) {
|
|
473
|
+
logRuntimeInfo?.(pc.bold(pc.red('Error while loading a Vike config file, see error above.')), httpRequestId, 'error');
|
|
474
|
+
const pageContextWithError = getPageContextHttpResponseError(err, pageContextInit, null);
|
|
475
|
+
return pageContextWithError;
|
|
461
476
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function universalVikeHandler(request: Request, context: Record<string, unknown>, runtime: Record<string, unknown>): Promise<Response>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { renderPage } from './index.js';
|
|
2
|
+
export default async function universalVikeHandler(request, context, runtime) {
|
|
3
|
+
const pageContextInit = { ...context, ...runtime, urlOriginal: request.url, headersOriginal: request.headers };
|
|
4
|
+
const pageContext = await renderPage(pageContextInit);
|
|
5
|
+
const response = pageContext.httpResponse;
|
|
6
|
+
const readable = response.getReadableWebStream();
|
|
7
|
+
return new Response(readable, {
|
|
8
|
+
status: response.statusCode,
|
|
9
|
+
headers: response.headers
|
|
10
|
+
});
|
|
11
|
+
}
|
|
@@ -1,15 +1,7 @@
|
|
|
1
1
|
export { resolveBase };
|
|
2
|
-
export {
|
|
3
|
-
export { resolveBaseFromResolvedConfig };
|
|
4
|
-
import type { ResolvedConfig } from 'vite';
|
|
5
|
-
import type { GlobalContext } from '../runtime/globalContext.js';
|
|
6
|
-
declare function resolveBaseFromResolvedConfig(baseServer: string | null, baseAssets: string | null, config: ResolvedConfig): {
|
|
7
|
-
baseServer: string;
|
|
8
|
-
baseAssets: string;
|
|
9
|
-
};
|
|
2
|
+
export type { BaseUrlsResolved };
|
|
10
3
|
type BaseUrlsResolved = {
|
|
11
4
|
baseServer: string;
|
|
12
5
|
baseAssets: string;
|
|
13
6
|
};
|
|
14
|
-
declare function resolveBaseRuntime(globalContext: GlobalContext): BaseUrlsResolved;
|
|
15
7
|
declare function resolveBase(baseViteOriginal: string | null, baseServerUnresolved: string | null, baseAssetsUnresolved: string | null): BaseUrlsResolved;
|
|
@@ -1,19 +1,6 @@
|
|
|
1
1
|
export { resolveBase };
|
|
2
|
-
export { resolveBaseRuntime };
|
|
3
|
-
export { resolveBaseFromResolvedConfig };
|
|
4
2
|
import { assert, assertUsage, isBaseServer, isBaseAssets } from './utils.js';
|
|
5
3
|
import pc from '@brillout/picocolors';
|
|
6
|
-
function resolveBaseFromResolvedConfig(baseServer, baseAssets, config) {
|
|
7
|
-
let baseViteOriginal = config._baseViteOriginal;
|
|
8
|
-
assert(baseViteOriginal === null || typeof baseViteOriginal == 'string');
|
|
9
|
-
return resolveBase(baseViteOriginal, baseServer, baseAssets);
|
|
10
|
-
}
|
|
11
|
-
function resolveBaseRuntime(globalContext) {
|
|
12
|
-
const baseViteOriginal = globalContext.viteConfigRuntime._baseViteOriginal;
|
|
13
|
-
const baseServerUnresolved = globalContext.config.baseServer ?? null;
|
|
14
|
-
const baseAssetsUnresolved = globalContext.config.baseAssets ?? null;
|
|
15
|
-
return resolveBase(baseViteOriginal, baseServerUnresolved, baseAssetsUnresolved);
|
|
16
|
-
}
|
|
17
4
|
function resolveBase(baseViteOriginal, baseServerUnresolved, baseAssetsUnresolved) {
|
|
18
5
|
if (baseViteOriginal === '/__UNSET__')
|
|
19
6
|
baseViteOriginal = null;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
export { getPageConfigsRuntime };
|
|
2
2
|
export { getAllPageIds };
|
|
3
3
|
import type { PageFile } from './getPageFiles.js';
|
|
4
|
-
import { type
|
|
4
|
+
import { type PageConfigUserFriendly, type PageConfigsUserFriendly } from './page-configs/getPageConfigUserFriendly.js';
|
|
5
5
|
import type { PageConfigGlobalRuntime, PageConfigRuntime } from './page-configs/PageConfig.js';
|
|
6
6
|
declare function getPageConfigsRuntime(virtualFileExports: unknown): {
|
|
7
7
|
pageFilesAll: PageFile[];
|
|
8
8
|
allPageIds: string[];
|
|
9
9
|
pageConfigs: PageConfigRuntime[];
|
|
10
10
|
pageConfigGlobal: PageConfigGlobalRuntime;
|
|
11
|
-
globalConfig:
|
|
11
|
+
globalConfig: PageConfigUserFriendly;
|
|
12
12
|
pageConfigsUserFriendly: PageConfigsUserFriendly;
|
|
13
13
|
};
|
|
14
14
|
declare function getAllPageIds(pageFilesAll: PageFile[], pageConfigs: PageConfigRuntime[]): string[];
|
|
@@ -1,21 +1,15 @@
|
|
|
1
1
|
export { getPageConfigsRuntime };
|
|
2
2
|
export { getAllPageIds };
|
|
3
3
|
import { parseGlobResults } from './getPageFiles/parseGlobResults.js';
|
|
4
|
-
import {
|
|
4
|
+
import { getPageConfigGlobalUserFriendly, getPageConfigUserFriendly } from './page-configs/getPageConfigUserFriendly.js';
|
|
5
5
|
import { unique } from './utils.js';
|
|
6
6
|
function getPageConfigsRuntime(virtualFileExports) {
|
|
7
7
|
const { pageFilesAll, pageConfigs, pageConfigGlobal } = parseGlobResults(virtualFileExports);
|
|
8
8
|
const allPageIds = getAllPageIds(pageFilesAll, pageConfigs);
|
|
9
9
|
// TODO/now: re-use this call, instead of calling it twice
|
|
10
|
-
const globalConfig =
|
|
11
|
-
// TODO/now DEDUPE
|
|
10
|
+
const globalConfig = getPageConfigGlobalUserFriendly({ pageConfigGlobalValues: pageConfigGlobal.configValues });
|
|
12
11
|
const pageConfigsUserFriendly = Object.fromEntries(pageConfigs.map((pageConfig) => {
|
|
13
|
-
|
|
14
|
-
const page = {
|
|
15
|
-
...getPageConfigUserFriendlyNew({ configValues }),
|
|
16
|
-
route: pageConfig.routeFilesystem?.routeString ?? null
|
|
17
|
-
};
|
|
18
|
-
return [pageConfig.pageId, page];
|
|
12
|
+
return getPageConfigUserFriendly(pageConfigGlobal.configValues, pageConfig, pageConfig.configValues);
|
|
19
13
|
}));
|
|
20
14
|
return { pageFilesAll, allPageIds, pageConfigs, pageConfigGlobal, globalConfig, pageConfigsUserFriendly };
|
|
21
15
|
}
|
|
@@ -6,7 +6,7 @@ import { urlToFile } from '../utils/urlToFile.js';
|
|
|
6
6
|
const pageContextJsonFileExtension = '.pageContext.json';
|
|
7
7
|
// `/some-base-url/index.pageContext.json` instead of `/some-base-url.pageContext.json` in order to comply to common reverse proxy setups, see https://github.com/vikejs/vike/issues/443
|
|
8
8
|
const doNotCreateExtraDirectory = false;
|
|
9
|
-
// See node/renderPage/handlePageContextRequestUrl.ts
|
|
9
|
+
// See also node/renderPage/handlePageContextRequestUrl.ts
|
|
10
10
|
function getPageContextRequestUrl(url) {
|
|
11
11
|
const pageContextRequestUrl = urlToFile(url, pageContextJsonFileExtension, doNotCreateExtraDirectory);
|
|
12
12
|
return pageContextRequestUrl;
|