vike 0.4.171-commit-bb72501 → 0.4.171-commit-f9548df
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/node/plugin/shared/addSsrMiddleware.js +12 -4
- package/dist/cjs/node/prerender/runPrerender.js +30 -11
- package/dist/cjs/node/prerender/utils.js +1 -0
- package/dist/cjs/node/runtime/renderPage/executeOnRenderHtmlHook.js +7 -7
- package/dist/cjs/node/runtime/renderPage/loadUserFilesServerSide.js +4 -5
- package/dist/cjs/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +2 -2
- package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +22 -3
- package/dist/cjs/node/runtime/utils.js +1 -0
- package/dist/cjs/shared/{addUrlComputedProps.js → getPageContextUrlComputed.js} +50 -42
- package/dist/cjs/shared/route/index.js +2 -2
- package/dist/cjs/shared/route/resolveRouteFunction.js +2 -2
- package/dist/cjs/shared/utils.js +2 -0
- package/dist/cjs/utils/assert.js +1 -1
- package/dist/cjs/utils/assertNodeVersion.js +1 -1
- package/dist/cjs/utils/changeEnumerable.js +9 -0
- package/dist/cjs/utils/normalizeHeaders.js +13 -0
- package/dist/cjs/utils/objectAssign.js +1 -1
- package/dist/cjs/utils/objectDefineProperty.js +8 -0
- package/dist/cjs/utils/projectInfo.js +1 -1
- package/dist/esm/client/client-routing-runtime/createPageContext.d.ts +4 -2
- package/dist/esm/client/client-routing-runtime/createPageContext.js +4 -3
- package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +11 -7
- package/dist/esm/client/shared/loadUserFilesClientSide.js +4 -4
- package/dist/esm/node/plugin/shared/addSsrMiddleware.js +9 -4
- package/dist/esm/node/prerender/runPrerender.js +31 -12
- package/dist/esm/node/prerender/utils.d.ts +1 -0
- package/dist/esm/node/prerender/utils.js +1 -0
- package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.js +7 -7
- package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.d.ts +1 -9
- package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +4 -5
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +2 -2
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +55 -46
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +23 -4
- package/dist/esm/node/runtime/utils.d.ts +1 -0
- package/dist/esm/node/runtime/utils.js +1 -0
- package/dist/esm/shared/{addUrlComputedProps.d.ts → getPageContextUrlComputed.d.ts} +23 -21
- package/dist/esm/shared/{addUrlComputedProps.js → getPageContextUrlComputed.js} +50 -42
- package/dist/esm/shared/route/index.d.ts +3 -3
- package/dist/esm/shared/route/index.js +2 -2
- package/dist/esm/shared/route/resolveRouteFunction.d.ts +2 -2
- package/dist/esm/shared/route/resolveRouteFunction.js +2 -2
- package/dist/esm/shared/types.d.ts +24 -4
- package/dist/esm/shared/utils.d.ts +2 -0
- package/dist/esm/shared/utils.js +2 -0
- package/dist/esm/types/index.d.ts +1 -1
- package/dist/esm/utils/assert.js +1 -1
- package/dist/esm/utils/assertNodeVersion.js +1 -1
- package/dist/esm/utils/changeEnumerable.d.ts +2 -0
- package/dist/esm/utils/changeEnumerable.js +5 -0
- package/dist/esm/utils/normalizeHeaders.d.ts +1 -0
- package/dist/esm/utils/normalizeHeaders.js +9 -0
- package/dist/esm/utils/objectAssign.js +1 -1
- package/dist/esm/utils/objectDefineProperty.d.ts +4 -0
- package/dist/esm/utils/objectDefineProperty.js +4 -0
- package/dist/esm/utils/projectInfo.d.ts +2 -2
- package/dist/esm/utils/projectInfo.js +1 -1
- package/package.json +2 -2
|
@@ -5,7 +5,7 @@ export { runPrerender_forceExit };
|
|
|
5
5
|
import '../runtime/page-files/setup.js';
|
|
6
6
|
import path from 'path';
|
|
7
7
|
import { route } from '../../shared/route/index.js';
|
|
8
|
-
import { assert, assertUsage, assertWarning, hasProp, projectInfo, objectAssign, isObjectWithKeys, isCallable, getOutDirs, isPropertyGetter, assertPosixPath, urlToFile, isPlainObject, handleNodeEnv_prerender, pLimit, assertPathFilesystemAbsolute, isArray } from './utils.js';
|
|
8
|
+
import { assert, assertUsage, assertWarning, hasProp, projectInfo, objectAssign, isObjectWithKeys, isCallable, getOutDirs, isPropertyGetter, assertPosixPath, urlToFile, isPlainObject, handleNodeEnv_prerender, pLimit, assertPathFilesystemAbsolute, isArray, changeEnumerable } from './utils.js';
|
|
9
9
|
import { prerenderPage, prerender404Page, getRenderContext, getPageContextInitEnhanced } from '../runtime/renderPage/renderPageAlreadyRouted.js';
|
|
10
10
|
import pc from '@brillout/picocolors';
|
|
11
11
|
import { cpus } from 'os';
|
|
@@ -19,7 +19,7 @@ import { getConfigValueFilePathToShowToUser } from '../../shared/page-configs/he
|
|
|
19
19
|
import { getConfigValue } from '../../shared/page-configs/getConfigValue.js';
|
|
20
20
|
import { loadConfigValues } from '../../shared/page-configs/loadConfigValues.js';
|
|
21
21
|
import { isErrorPage } from '../../shared/error-page.js';
|
|
22
|
-
import {
|
|
22
|
+
import { getPageContextUrlComputed } from '../../shared/getPageContextUrlComputed.js';
|
|
23
23
|
import { isAbortError } from '../../shared/route/abort.js';
|
|
24
24
|
import { loadUserFilesServerSide } from '../runtime/renderPage/loadUserFilesServerSide.js';
|
|
25
25
|
import { getHookFromPageConfig, getHookFromPageConfigGlobal, getHookTimeoutDefault, setIsPrerenderering } from '../../shared/hooks/getHook.js';
|
|
@@ -240,9 +240,9 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, renderContext,
|
|
|
240
240
|
prerenderContext.pageContexts.push(pageContextNew);
|
|
241
241
|
if (pageContext) {
|
|
242
242
|
objectAssign(pageContextNew, {
|
|
243
|
-
_pageContextAlreadyProvidedByOnPrerenderHook: true
|
|
244
|
-
...pageContext
|
|
243
|
+
_pageContextAlreadyProvidedByOnPrerenderHook: true
|
|
245
244
|
});
|
|
245
|
+
objectAssign(pageContextNew, pageContext);
|
|
246
246
|
}
|
|
247
247
|
});
|
|
248
248
|
})));
|
|
@@ -300,14 +300,11 @@ function createPageContext(urlOriginal, renderContext, prerenderContext) {
|
|
|
300
300
|
_prerenderContext: prerenderContext
|
|
301
301
|
};
|
|
302
302
|
const pageContextInit = {
|
|
303
|
-
urlOriginal
|
|
304
|
-
...prerenderContext.pageContextInit
|
|
303
|
+
urlOriginal
|
|
305
304
|
};
|
|
305
|
+
objectAssign(pageContextInit, prerenderContext.pageContextInit);
|
|
306
306
|
{
|
|
307
|
-
const pageContextInitEnhanced = getPageContextInitEnhanced(pageContextInit, renderContext
|
|
308
|
-
// We set `enumerable` to `false` to avoid computed URL properties from being iterated & copied in a onPrerenderStart() hook, e.g. /examples/i18n/
|
|
309
|
-
urlComputedPropsNonEnumerable: true
|
|
310
|
-
});
|
|
307
|
+
const pageContextInitEnhanced = getPageContextInitEnhanced(pageContextInit, renderContext);
|
|
311
308
|
objectAssign(pageContext, pageContextInitEnhanced);
|
|
312
309
|
}
|
|
313
310
|
return pageContext;
|
|
@@ -382,6 +379,8 @@ async function callOnPrerenderStartHook(prerenderContext, renderContext) {
|
|
|
382
379
|
pageContext._urlOriginalBeforeHook = pageContext.urlOriginal;
|
|
383
380
|
});
|
|
384
381
|
const docLink = 'https://vike.dev/i18n#pre-rendering';
|
|
382
|
+
// Set `enumerable` to `false` to avoid computed URL properties from being iterated & copied in onPrerenderStart() hook, e.g. /examples/i18n/
|
|
383
|
+
const { restoreEnumerable, addPageContextComputedUrl } = makePageContextComputedUrlNonEnumerable(prerenderContext.pageContexts);
|
|
385
384
|
let result = await executeHook(() => hookFn({
|
|
386
385
|
pageContexts: prerenderContext.pageContexts,
|
|
387
386
|
// TODO/v1-release: remove warning
|
|
@@ -393,6 +392,7 @@ async function callOnPrerenderStartHook(prerenderContext, renderContext) {
|
|
|
393
392
|
return prerenderContext.pageContexts;
|
|
394
393
|
}
|
|
395
394
|
}), onPrerenderStartHook, null);
|
|
395
|
+
restoreEnumerable();
|
|
396
396
|
if (result === null || result === undefined) {
|
|
397
397
|
return;
|
|
398
398
|
}
|
|
@@ -430,9 +430,8 @@ async function callOnPrerenderStartHook(prerenderContext, renderContext) {
|
|
|
430
430
|
hookName
|
|
431
431
|
};
|
|
432
432
|
}
|
|
433
|
-
// Restore as URL computed props are lost when user makes a pageContext copy
|
|
434
|
-
addUrlComputedProps(pageContext);
|
|
435
433
|
});
|
|
434
|
+
addPageContextComputedUrl(prerenderContext.pageContexts);
|
|
436
435
|
}
|
|
437
436
|
async function routeAndPrerender(prerenderContext, concurrencyLimit, onComplete) {
|
|
438
437
|
const globalContext = getGlobalContext();
|
|
@@ -714,3 +713,23 @@ function assertIsNotAbort(err, urlOr404) {
|
|
|
714
713
|
assert(abortCall);
|
|
715
714
|
assertUsage(false, `${pc.cyan(abortCall)} thrown${thrownBy} while pre-rendering ${urlOr404} but ${pc.cyan(abortCaller)} isn't supported for pre-rendered pages`);
|
|
716
715
|
}
|
|
716
|
+
function makePageContextComputedUrlNonEnumerable(pageContexts) {
|
|
717
|
+
change(false);
|
|
718
|
+
return { restoreEnumerable, addPageContextComputedUrl };
|
|
719
|
+
function restoreEnumerable() {
|
|
720
|
+
change(true);
|
|
721
|
+
}
|
|
722
|
+
function addPageContextComputedUrl(pageContexts) {
|
|
723
|
+
// Add URL computed props to the user-generated pageContext copies
|
|
724
|
+
pageContexts.forEach((pageContext) => {
|
|
725
|
+
const pageContextUrlComputed = getPageContextUrlComputed(pageContext);
|
|
726
|
+
objectAssign(pageContext, pageContextUrlComputed);
|
|
727
|
+
});
|
|
728
|
+
}
|
|
729
|
+
function change(enumerable) {
|
|
730
|
+
pageContexts.forEach((pageContext) => {
|
|
731
|
+
changeEnumerable(pageContext, 'urlPathname', enumerable);
|
|
732
|
+
changeEnumerable(pageContext, 'urlParsed', enumerable);
|
|
733
|
+
});
|
|
734
|
+
}
|
|
735
|
+
}
|
|
@@ -63,13 +63,13 @@ function getRenderHook(pageContext) {
|
|
|
63
63
|
assertUsage(false, [
|
|
64
64
|
`No ${hookName}() hook found, see https://vike.dev/${hookName}`
|
|
65
65
|
/*
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
66
|
+
'See https://vike.dev/render-modes for more information.',
|
|
67
|
+
[
|
|
68
|
+
// 'Loaded config files (none of them define the onRenderHtml() hook):',
|
|
69
|
+
'Loaded server-side page files (none of them `export { render }`):',
|
|
70
|
+
...pageContext._pageFilePathsLoaded.map((f, i) => ` (${i + 1}): ${f}`)
|
|
71
|
+
].join('\n')
|
|
72
|
+
*/
|
|
73
73
|
].join(' '));
|
|
74
74
|
}
|
|
75
75
|
return hookFound;
|
|
@@ -14,19 +14,11 @@ type PageContext_loadUserFilesServerSide = PageContextGetPageAssets & PageContex
|
|
|
14
14
|
type PageFiles = PromiseType<ReturnType<typeof loadUserFilesServerSide>>;
|
|
15
15
|
declare function loadUserFilesServerSide(pageContext: {
|
|
16
16
|
_pageId: string;
|
|
17
|
-
} & PageContext_loadUserFilesServerSide): Promise<{
|
|
17
|
+
} & PageContext_loadUserFilesServerSide): Promise<import("../../../shared/getPageFiles/getExports.js").PageContextExports & {
|
|
18
18
|
Page: unknown;
|
|
19
19
|
_isHtmlOnly: boolean;
|
|
20
20
|
_passToClient: string[];
|
|
21
21
|
_pageFilePathsLoaded: string[];
|
|
22
|
-
source: import("../../../shared/getPageFiles/getExports.js").Source;
|
|
23
|
-
sources: import("../../../shared/getPageFiles/getExports.js").Sources;
|
|
24
|
-
from: import("../../../shared/getPageFiles/getExports.js").From;
|
|
25
|
-
config: Record<string, unknown>;
|
|
26
|
-
configEntries: import("../../../shared/getPageFiles/getExports.js").ConfigEntries;
|
|
27
|
-
exports: Record<string, unknown>;
|
|
28
|
-
exportsAll: import("../../../shared/getPageFiles/getExports.js").ExportsAll;
|
|
29
|
-
pageExports: Record<string, unknown>;
|
|
30
22
|
} & {
|
|
31
23
|
__getPageAssets: () => Promise<PageAsset[]>;
|
|
32
24
|
}>;
|
|
@@ -10,7 +10,7 @@ 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 [{ pageFilesLoaded,
|
|
13
|
+
const [{ pageFilesLoaded, pageContextExports }] = await Promise.all([
|
|
14
14
|
loadPageUserFiles(pageContext._pageFilesAll, pageConfig, pageContext._pageId, !getGlobalContext().isProduction),
|
|
15
15
|
analyzePageClientSideInit(pageContext._pageFilesAll, pageContext._pageId, { sharedPageFilesAlreadyLoaded: true })
|
|
16
16
|
]);
|
|
@@ -35,8 +35,8 @@ async function loadUserFilesServerSide(pageContext) {
|
|
|
35
35
|
});
|
|
36
36
|
}
|
|
37
37
|
const pageContextAddendum = {};
|
|
38
|
+
objectAssign(pageContextAddendum, pageContextExports);
|
|
38
39
|
objectAssign(pageContextAddendum, {
|
|
39
|
-
...pageContextExports,
|
|
40
40
|
Page: pageContextExports.exports.Page,
|
|
41
41
|
_isHtmlOnly: isHtmlOnly,
|
|
42
42
|
_passToClient: passToClient,
|
|
@@ -101,8 +101,7 @@ async function loadPageUserFiles(pageFilesAll, pageConfig, pageId, isDev) {
|
|
|
101
101
|
await Promise.all(pageFilesServerSide.map((p) => p.loadFile?.()));
|
|
102
102
|
const pageContextExports = getPageContextExports(pageFilesServerSide, pageConfigLoaded);
|
|
103
103
|
return {
|
|
104
|
-
|
|
105
|
-
pageFilesLoaded: pageFilesServerSide
|
|
106
|
-
pageConfigLoaded
|
|
104
|
+
pageContextExports,
|
|
105
|
+
pageFilesLoaded: pageFilesServerSide
|
|
107
106
|
};
|
|
108
107
|
}
|
package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { preparePageContextForUserConsumptionServerSide };
|
|
2
2
|
export type { PageContextForUserConsumptionServerSide };
|
|
3
|
-
import {
|
|
3
|
+
import { PageContextUrlInternal } from '../../../shared/getPageContextUrlComputed.js';
|
|
4
4
|
import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
|
|
5
5
|
import type { PageContextExports } from '../../../shared/getPageFiles/getExports.js';
|
|
6
6
|
import { PageContextBuiltInServerInternal } from '../../../shared/types.js';
|
|
@@ -9,7 +9,7 @@ type PageContextForUserConsumptionServerSide = PageContextBuiltInServerInternal
|
|
|
9
9
|
/** @deprecated */
|
|
10
10
|
url: string;
|
|
11
11
|
urlPathname: string;
|
|
12
|
-
urlParsed:
|
|
12
|
+
urlParsed: PageContextUrlInternal['urlParsed'];
|
|
13
13
|
routeParams: Record<string, string>;
|
|
14
14
|
Page: unknown;
|
|
15
15
|
_pageId: string;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export { preparePageContextForUserConsumptionServerSide };
|
|
2
2
|
import { assert, isPlainObject, isObject } from '../utils.js';
|
|
3
3
|
import { sortPageContext } from '../../../shared/sortPageContext.js';
|
|
4
|
-
import {
|
|
4
|
+
import { assertPageContextUrl } from '../../../shared/getPageContextUrlComputed.js';
|
|
5
5
|
import { addIs404ToPageProps } from '../../../shared/addIs404ToPageProps.js';
|
|
6
6
|
function preparePageContextForUserConsumptionServerSide(pageContext) {
|
|
7
|
-
|
|
7
|
+
assertPageContextUrl(pageContext);
|
|
8
8
|
assert(isPlainObject(pageContext.routeParams));
|
|
9
9
|
assert('Page' in pageContext);
|
|
10
10
|
assert(isObject(pageContext.pageExports));
|
|
@@ -7,7 +7,7 @@ export type { RenderContext };
|
|
|
7
7
|
export type { PageContextAfterRender };
|
|
8
8
|
export type { PageContextInitEnhanced };
|
|
9
9
|
import { type PageFile } from '../../../shared/getPageFiles.js';
|
|
10
|
-
import { type
|
|
10
|
+
import { type PageContextUrlInternal } from '../../../shared/getPageContextUrlComputed.js';
|
|
11
11
|
import { HttpResponse } from './createHttpResponseObject.js';
|
|
12
12
|
import { PageContext_loadUserFilesServerSide, type PageFiles } from './loadUserFilesServerSide.js';
|
|
13
13
|
import type { PageConfigRuntime, PageConfigGlobalRuntime } from '../../../shared/page-configs/PageConfig.js';
|
|
@@ -24,7 +24,7 @@ declare function renderPageAlreadyRouted<PageContext extends {
|
|
|
24
24
|
routeParams: Record<string, string>;
|
|
25
25
|
errorWhileRendering: null | Error;
|
|
26
26
|
_httpRequestId: number;
|
|
27
|
-
} & PageContextInitEnhanced &
|
|
27
|
+
} & PageContextInitEnhanced & PageContextUrlInternal & PageContext_loadUserFilesServerSide>(pageContext: PageContext): Promise<PageContext & PageContextAfterRender>;
|
|
28
28
|
declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles & {
|
|
29
29
|
routeParams: Record<string, string>;
|
|
30
30
|
_pageId: string;
|
|
@@ -38,6 +38,8 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
|
|
|
38
38
|
pageContextSerialized: null;
|
|
39
39
|
pageContext: {
|
|
40
40
|
urlOriginal: string;
|
|
41
|
+
headersOriginal?: unknown;
|
|
42
|
+
headers?: unknown;
|
|
41
43
|
} & {
|
|
42
44
|
_objectCreatedByVike: boolean;
|
|
43
45
|
_baseServer: string;
|
|
@@ -51,25 +53,23 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
|
|
|
51
53
|
_onBeforeRouteHook: Hook | null;
|
|
52
54
|
_pageContextInit: {
|
|
53
55
|
urlOriginal: string;
|
|
56
|
+
headersOriginal?: unknown;
|
|
57
|
+
headers?: unknown;
|
|
54
58
|
};
|
|
55
59
|
_urlRewrite: string | null;
|
|
56
60
|
_urlHandler: ((url: string) => string) | null;
|
|
57
61
|
isClientSideNavigation: boolean;
|
|
58
|
-
} & import("../../../shared/addUrlComputedProps.js").PageContextUrlComputedPropsClient & {
|
|
59
|
-
_urlRewrite: string | null;
|
|
60
62
|
} & {
|
|
63
|
+
urlParsed: import("../../../shared/getPageContextUrlComputed.js").Url;
|
|
64
|
+
urlPathname: string;
|
|
65
|
+
url: string;
|
|
66
|
+
} & {
|
|
67
|
+
headers: Record<string, string> | null;
|
|
68
|
+
} & import("../../../shared/getPageFiles/getExports.js").PageContextExports & {
|
|
61
69
|
Page: unknown;
|
|
62
70
|
_isHtmlOnly: boolean;
|
|
63
71
|
_passToClient: string[];
|
|
64
72
|
_pageFilePathsLoaded: string[];
|
|
65
|
-
source: import("../../../shared/getPageFiles/getExports.js").Source;
|
|
66
|
-
sources: import("../../../shared/getPageFiles/getExports.js").Sources;
|
|
67
|
-
from: import("../../../shared/getPageFiles/getExports.js").From;
|
|
68
|
-
config: Record<string, unknown>;
|
|
69
|
-
configEntries: import("../../../shared/getPageFiles/getExports.js").ConfigEntries;
|
|
70
|
-
exports: Record<string, unknown>;
|
|
71
|
-
exportsAll: import("../../../shared/getPageFiles/getExports.js").ExportsAll;
|
|
72
|
-
pageExports: Record<string, unknown>;
|
|
73
73
|
} & {
|
|
74
74
|
__getPageAssets: () => Promise<import("./getPageAssets.js").PageAsset[]>;
|
|
75
75
|
} & {
|
|
@@ -89,6 +89,8 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
|
|
|
89
89
|
pageContextSerialized: string;
|
|
90
90
|
pageContext: {
|
|
91
91
|
urlOriginal: string;
|
|
92
|
+
headersOriginal?: unknown;
|
|
93
|
+
headers?: unknown;
|
|
92
94
|
} & {
|
|
93
95
|
_objectCreatedByVike: boolean;
|
|
94
96
|
_baseServer: string;
|
|
@@ -102,25 +104,23 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
|
|
|
102
104
|
_onBeforeRouteHook: Hook | null;
|
|
103
105
|
_pageContextInit: {
|
|
104
106
|
urlOriginal: string;
|
|
107
|
+
headersOriginal?: unknown;
|
|
108
|
+
headers?: unknown;
|
|
105
109
|
};
|
|
106
110
|
_urlRewrite: string | null;
|
|
107
111
|
_urlHandler: ((url: string) => string) | null;
|
|
108
112
|
isClientSideNavigation: boolean;
|
|
109
|
-
} & import("../../../shared/addUrlComputedProps.js").PageContextUrlComputedPropsClient & {
|
|
110
|
-
_urlRewrite: string | null;
|
|
111
113
|
} & {
|
|
114
|
+
urlParsed: import("../../../shared/getPageContextUrlComputed.js").Url;
|
|
115
|
+
urlPathname: string;
|
|
116
|
+
url: string;
|
|
117
|
+
} & {
|
|
118
|
+
headers: Record<string, string> | null;
|
|
119
|
+
} & import("../../../shared/getPageFiles/getExports.js").PageContextExports & {
|
|
112
120
|
Page: unknown;
|
|
113
121
|
_isHtmlOnly: boolean;
|
|
114
122
|
_passToClient: string[];
|
|
115
123
|
_pageFilePathsLoaded: string[];
|
|
116
|
-
source: import("../../../shared/getPageFiles/getExports.js").Source;
|
|
117
|
-
sources: import("../../../shared/getPageFiles/getExports.js").Sources;
|
|
118
|
-
from: import("../../../shared/getPageFiles/getExports.js").From;
|
|
119
|
-
config: Record<string, unknown>;
|
|
120
|
-
configEntries: import("../../../shared/getPageFiles/getExports.js").ConfigEntries;
|
|
121
|
-
exports: Record<string, unknown>;
|
|
122
|
-
exportsAll: import("../../../shared/getPageFiles/getExports.js").ExportsAll;
|
|
123
|
-
pageExports: Record<string, unknown>;
|
|
124
124
|
} & {
|
|
125
125
|
__getPageAssets: () => Promise<import("./getPageAssets.js").PageAsset[]>;
|
|
126
126
|
} & {
|
|
@@ -141,6 +141,8 @@ declare function prerender404Page(renderContext: RenderContext, pageContextInit_
|
|
|
141
141
|
pageContextSerialized: null;
|
|
142
142
|
pageContext: {
|
|
143
143
|
urlOriginal: string;
|
|
144
|
+
headersOriginal?: unknown;
|
|
145
|
+
headers?: unknown;
|
|
144
146
|
} & {
|
|
145
147
|
_objectCreatedByVike: boolean;
|
|
146
148
|
_baseServer: string;
|
|
@@ -154,25 +156,23 @@ declare function prerender404Page(renderContext: RenderContext, pageContextInit_
|
|
|
154
156
|
_onBeforeRouteHook: Hook | null;
|
|
155
157
|
_pageContextInit: {
|
|
156
158
|
urlOriginal: string;
|
|
159
|
+
headersOriginal?: unknown;
|
|
160
|
+
headers?: unknown;
|
|
157
161
|
};
|
|
158
162
|
_urlRewrite: string | null;
|
|
159
163
|
_urlHandler: ((url: string) => string) | null;
|
|
160
164
|
isClientSideNavigation: boolean;
|
|
161
|
-
} & import("../../../shared/addUrlComputedProps.js").PageContextUrlComputedPropsClient & {
|
|
162
|
-
_urlRewrite: string | null;
|
|
163
165
|
} & {
|
|
166
|
+
urlParsed: import("../../../shared/getPageContextUrlComputed.js").Url;
|
|
167
|
+
urlPathname: string;
|
|
168
|
+
url: string;
|
|
169
|
+
} & {
|
|
170
|
+
headers: Record<string, string> | null;
|
|
171
|
+
} & import("../../../shared/getPageFiles/getExports.js").PageContextExports & {
|
|
164
172
|
Page: unknown;
|
|
165
173
|
_isHtmlOnly: boolean;
|
|
166
174
|
_passToClient: string[];
|
|
167
175
|
_pageFilePathsLoaded: string[];
|
|
168
|
-
source: import("../../../shared/getPageFiles/getExports.js").Source;
|
|
169
|
-
sources: import("../../../shared/getPageFiles/getExports.js").Sources;
|
|
170
|
-
from: import("../../../shared/getPageFiles/getExports.js").From;
|
|
171
|
-
config: Record<string, unknown>;
|
|
172
|
-
configEntries: import("../../../shared/getPageFiles/getExports.js").ConfigEntries;
|
|
173
|
-
exports: Record<string, unknown>;
|
|
174
|
-
exportsAll: import("../../../shared/getPageFiles/getExports.js").ExportsAll;
|
|
175
|
-
pageExports: Record<string, unknown>;
|
|
176
176
|
} & {
|
|
177
177
|
__getPageAssets: () => Promise<import("./getPageAssets.js").PageAsset[]>;
|
|
178
178
|
} & {
|
|
@@ -192,6 +192,8 @@ declare function prerender404Page(renderContext: RenderContext, pageContextInit_
|
|
|
192
192
|
pageContextSerialized: string;
|
|
193
193
|
pageContext: {
|
|
194
194
|
urlOriginal: string;
|
|
195
|
+
headersOriginal?: unknown;
|
|
196
|
+
headers?: unknown;
|
|
195
197
|
} & {
|
|
196
198
|
_objectCreatedByVike: boolean;
|
|
197
199
|
_baseServer: string;
|
|
@@ -205,25 +207,23 @@ declare function prerender404Page(renderContext: RenderContext, pageContextInit_
|
|
|
205
207
|
_onBeforeRouteHook: Hook | null;
|
|
206
208
|
_pageContextInit: {
|
|
207
209
|
urlOriginal: string;
|
|
210
|
+
headersOriginal?: unknown;
|
|
211
|
+
headers?: unknown;
|
|
208
212
|
};
|
|
209
213
|
_urlRewrite: string | null;
|
|
210
214
|
_urlHandler: ((url: string) => string) | null;
|
|
211
215
|
isClientSideNavigation: boolean;
|
|
212
|
-
} & import("../../../shared/addUrlComputedProps.js").PageContextUrlComputedPropsClient & {
|
|
213
|
-
_urlRewrite: string | null;
|
|
214
216
|
} & {
|
|
217
|
+
urlParsed: import("../../../shared/getPageContextUrlComputed.js").Url;
|
|
218
|
+
urlPathname: string;
|
|
219
|
+
url: string;
|
|
220
|
+
} & {
|
|
221
|
+
headers: Record<string, string> | null;
|
|
222
|
+
} & import("../../../shared/getPageFiles/getExports.js").PageContextExports & {
|
|
215
223
|
Page: unknown;
|
|
216
224
|
_isHtmlOnly: boolean;
|
|
217
225
|
_passToClient: string[];
|
|
218
226
|
_pageFilePathsLoaded: string[];
|
|
219
|
-
source: import("../../../shared/getPageFiles/getExports.js").Source;
|
|
220
|
-
sources: import("../../../shared/getPageFiles/getExports.js").Sources;
|
|
221
|
-
from: import("../../../shared/getPageFiles/getExports.js").From;
|
|
222
|
-
config: Record<string, unknown>;
|
|
223
|
-
configEntries: import("../../../shared/getPageFiles/getExports.js").ConfigEntries;
|
|
224
|
-
exports: Record<string, unknown>;
|
|
225
|
-
exportsAll: import("../../../shared/getPageFiles/getExports.js").ExportsAll;
|
|
226
|
-
pageExports: Record<string, unknown>;
|
|
227
227
|
} & {
|
|
228
228
|
__getPageAssets: () => Promise<import("./getPageAssets.js").PageAsset[]>;
|
|
229
229
|
} & {
|
|
@@ -242,8 +242,9 @@ declare function prerender404Page(renderContext: RenderContext, pageContextInit_
|
|
|
242
242
|
type PageContextInitEnhanced = ReturnType<typeof getPageContextInitEnhanced>;
|
|
243
243
|
declare function getPageContextInitEnhanced(pageContextInit: {
|
|
244
244
|
urlOriginal: string;
|
|
245
|
-
|
|
246
|
-
|
|
245
|
+
headersOriginal?: unknown;
|
|
246
|
+
headers?: unknown;
|
|
247
|
+
}, renderContext: RenderContext, { ssr: { urlRewrite, urlHandler, isClientSideNavigation } }?: {
|
|
247
248
|
ssr?: {
|
|
248
249
|
urlRewrite: null | string;
|
|
249
250
|
urlHandler: null | ((url: string) => string);
|
|
@@ -251,6 +252,8 @@ declare function getPageContextInitEnhanced(pageContextInit: {
|
|
|
251
252
|
};
|
|
252
253
|
}): {
|
|
253
254
|
urlOriginal: string;
|
|
255
|
+
headersOriginal?: unknown;
|
|
256
|
+
headers?: unknown;
|
|
254
257
|
} & {
|
|
255
258
|
_objectCreatedByVike: boolean;
|
|
256
259
|
_baseServer: string;
|
|
@@ -264,12 +267,18 @@ declare function getPageContextInitEnhanced(pageContextInit: {
|
|
|
264
267
|
_onBeforeRouteHook: Hook | null;
|
|
265
268
|
_pageContextInit: {
|
|
266
269
|
urlOriginal: string;
|
|
270
|
+
headersOriginal?: unknown;
|
|
271
|
+
headers?: unknown;
|
|
267
272
|
};
|
|
268
273
|
_urlRewrite: string | null;
|
|
269
274
|
_urlHandler: ((url: string) => string) | null;
|
|
270
275
|
isClientSideNavigation: boolean;
|
|
271
|
-
} &
|
|
272
|
-
|
|
276
|
+
} & {
|
|
277
|
+
urlParsed: import("../../../shared/getPageContextUrlComputed.js").Url;
|
|
278
|
+
urlPathname: string;
|
|
279
|
+
url: string;
|
|
280
|
+
} & {
|
|
281
|
+
headers: Record<string, string> | null;
|
|
273
282
|
};
|
|
274
283
|
type RenderContext = {
|
|
275
284
|
pageFilesAll: PageFile[];
|
|
@@ -6,9 +6,9 @@ export { getRenderContext };
|
|
|
6
6
|
import { getErrorPageId } from '../../../shared/error-page.js';
|
|
7
7
|
import { getHtmlString } from '../html/renderHtml.js';
|
|
8
8
|
import { getPageFilesAll } from '../../../shared/getPageFiles.js';
|
|
9
|
-
import { assert, assertUsage, hasProp, objectAssign } from '../utils.js';
|
|
9
|
+
import { assert, assertUsage, assertWarning, hasProp, normalizeHeaders, objectAssign } from '../utils.js';
|
|
10
10
|
import { serializePageContextClientSide } from '../html/serializePageContextClientSide.js';
|
|
11
|
-
import {
|
|
11
|
+
import { getPageContextUrlComputed } from '../../../shared/getPageContextUrlComputed.js';
|
|
12
12
|
import { getGlobalContext } from '../globalContext.js';
|
|
13
13
|
import { createHttpResponseObject, createHttpResponsePageContextJson } from './createHttpResponseObject.js';
|
|
14
14
|
import { loadUserFilesServerSide } from './loadUserFilesServerSide.js';
|
|
@@ -116,7 +116,7 @@ async function prerender404Page(renderContext, pageContextInit_) {
|
|
|
116
116
|
objectAssign(pageContext, await loadUserFilesServerSide(pageContext));
|
|
117
117
|
return prerenderPage(pageContext);
|
|
118
118
|
}
|
|
119
|
-
function getPageContextInitEnhanced(pageContextInit, renderContext, {
|
|
119
|
+
function getPageContextInitEnhanced(pageContextInit, renderContext, { ssr: { urlRewrite, urlHandler, isClientSideNavigation } = {
|
|
120
120
|
urlRewrite: null,
|
|
121
121
|
urlHandler: null,
|
|
122
122
|
isClientSideNavigation: false
|
|
@@ -143,7 +143,26 @@ function getPageContextInitEnhanced(pageContextInit, renderContext, { urlCompute
|
|
|
143
143
|
_urlHandler: urlHandler,
|
|
144
144
|
isClientSideNavigation
|
|
145
145
|
});
|
|
146
|
-
|
|
146
|
+
// pageContext.urlParsed
|
|
147
|
+
const pageContextUrlComputed = getPageContextUrlComputed(pageContextInitEnhanced);
|
|
148
|
+
objectAssign(pageContextInitEnhanced, pageContextUrlComputed);
|
|
149
|
+
// pageContext.headers
|
|
150
|
+
{
|
|
151
|
+
let headers;
|
|
152
|
+
if (pageContextInit.headersOriginal) {
|
|
153
|
+
headers = normalizeHeaders(pageContextInit.headersOriginal);
|
|
154
|
+
assertUsage(!('headers' in pageContextInit), "You're defining pageContextInit.headersOriginal as well as pageContextInit.headers but you should only define pageContextInit.headersOriginal instead, see https://vike.dev/headers");
|
|
155
|
+
}
|
|
156
|
+
else if (pageContextInit.headers) {
|
|
157
|
+
headers = pageContextInit.headers;
|
|
158
|
+
// TODO/next-major-release: assertUsage() instead of assertWarning()
|
|
159
|
+
assertWarning(false, 'Setting pageContextInit.headers is deprecated: set pageContextInit.headersOriginal instead, see https://vike.dev/headers', { onlyOnce: true });
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
headers = null;
|
|
163
|
+
}
|
|
164
|
+
objectAssign(pageContextInitEnhanced, { headers });
|
|
165
|
+
}
|
|
147
166
|
return pageContextInitEnhanced;
|
|
148
167
|
}
|
|
149
168
|
// TODO: remove getRenderContext() in favor of getGlobalObject() + reloadGlobalContext()
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
3
|
-
export type {
|
|
4
|
-
export type {
|
|
5
|
-
export type {
|
|
6
|
-
export type {
|
|
1
|
+
export { getPageContextUrlComputed };
|
|
2
|
+
export { assertPageContextUrl };
|
|
3
|
+
export type { PageContextUrlInternal };
|
|
4
|
+
export type { PageContextUrlClient };
|
|
5
|
+
export type { PageContextUrlServer };
|
|
6
|
+
export type { PageContextUrlSource };
|
|
7
7
|
export type { Url };
|
|
8
8
|
type Url = {
|
|
9
9
|
/** The URL origin, e.g. `https://example.com` of `https://example.com/product/42?details=yes#reviews` */
|
|
@@ -27,23 +27,24 @@ type Url = {
|
|
|
27
27
|
/** @deprecated */
|
|
28
28
|
searchString: null | string;
|
|
29
29
|
};
|
|
30
|
-
type
|
|
30
|
+
type PageContextUrlComputed = {
|
|
31
|
+
/** Parsed information about the current URL */
|
|
32
|
+
urlParsed: Url;
|
|
33
|
+
/** The URL pathname, e.g. `/product/42` of `https://example.com/product/42?details=yes#reviews` */
|
|
34
|
+
urlPathname: string;
|
|
31
35
|
/** @deprecated */
|
|
32
36
|
url: string;
|
|
37
|
+
};
|
|
38
|
+
type PageContextUrl = {
|
|
33
39
|
/** The URL of the HTTP request */
|
|
34
40
|
urlOriginal: string;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
/** Parsed information about the current URL */
|
|
38
|
-
urlParsed: Url;
|
|
39
|
-
};
|
|
40
|
-
/** For Vike internal use */
|
|
41
|
-
type PageContextUrlComputedPropsInternal = PageContextUrlComputedPropsClient & {
|
|
41
|
+
} & PageContextUrlComputed;
|
|
42
|
+
type PageContextUrlInternal = PageContextUrl & {
|
|
42
43
|
_urlRewrite: string | null;
|
|
43
44
|
};
|
|
44
|
-
type
|
|
45
|
-
type
|
|
46
|
-
urlParsed: Omit<
|
|
45
|
+
type PageContextUrlClient = PageContextUrl;
|
|
46
|
+
type PageContextUrlServer = PageContextUrl & {
|
|
47
|
+
urlParsed: Omit<PageContextUrl['urlParsed'], HashProps> & {
|
|
47
48
|
/** Only available on the client-side */
|
|
48
49
|
hash: '';
|
|
49
50
|
/** Only available on the client-side */
|
|
@@ -52,14 +53,15 @@ type PageContextUrlComputedPropsServer = PageContextUrlComputedPropsClient & {
|
|
|
52
53
|
hashOriginal: null;
|
|
53
54
|
};
|
|
54
55
|
};
|
|
55
|
-
|
|
56
|
-
|
|
56
|
+
type HashProps = 'hash' | 'hashString' | 'hashOriginal';
|
|
57
|
+
declare function getPageContextUrlComputed(pageContext: PageContextUrlSource): PageContextUrlComputed;
|
|
58
|
+
type PageContextUrlSource = {
|
|
57
59
|
urlOriginal: string;
|
|
58
60
|
urlLogical?: string;
|
|
59
61
|
_urlRewrite: string | null;
|
|
60
62
|
_baseServer: string;
|
|
61
63
|
_urlHandler: null | ((url: string) => string);
|
|
62
64
|
};
|
|
63
|
-
declare function
|
|
65
|
+
declare function assertPageContextUrl(pageContext: {
|
|
64
66
|
urlOriginal: string;
|
|
65
|
-
} &
|
|
67
|
+
} & PageContextUrlClient): void;
|