vike 0.4.228-commit-ae4784f → 0.4.228-commit-90cfb1a
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/server-routing-runtime/utils.js +1 -0
- package/dist/cjs/node/runtime/renderPage/createPageContextServerSide.js +3 -4
- package/dist/cjs/node/runtime/renderPage/executeHookGeneric.js +2 -2
- package/dist/cjs/node/runtime/universal-middleware.js +7 -1
- package/dist/cjs/node/runtime/utils.js +1 -0
- package/dist/cjs/shared/assertPageContextProvidedByUser.js +1 -1
- package/dist/cjs/shared/createPageContextShared.js +17 -0
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/client/client-routing-runtime/{createPageContext.d.ts → createPageContextClientSide.d.ts} +8 -4
- package/dist/esm/client/client-routing-runtime/{createPageContext.js → createPageContextClientSide.js} +10 -9
- package/dist/esm/client/client-routing-runtime/prefetch.js +2 -2
- package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +2 -2
- package/dist/esm/client/server-routing-runtime/{getPageContext.d.ts → createPageContextClientSide.d.ts} +8 -3
- package/dist/esm/client/server-routing-runtime/{getPageContext.js → createPageContextClientSide.js} +10 -8
- package/dist/esm/client/server-routing-runtime/entry.js +2 -2
- package/dist/esm/client/server-routing-runtime/utils.d.ts +1 -0
- package/dist/esm/client/server-routing-runtime/utils.js +1 -0
- package/dist/esm/node/runtime/renderPage/createPageContextServerSide.d.ts +8 -5
- package/dist/esm/node/runtime/renderPage/createPageContextServerSide.js +4 -5
- package/dist/esm/node/runtime/renderPage/executeHookGeneric.d.ts +2 -3
- package/dist/esm/node/runtime/renderPage/executeHookGeneric.js +2 -2
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +15 -7
- package/dist/esm/node/runtime/renderPage.d.ts +6 -2
- package/dist/esm/node/runtime/universal-middleware.js +7 -1
- package/dist/esm/node/runtime/utils.d.ts +1 -0
- package/dist/esm/node/runtime/utils.js +1 -0
- package/dist/esm/shared/assertPageContextProvidedByUser.js +1 -1
- package/dist/esm/shared/createPageContextShared.d.ts +9 -0
- package/dist/esm/shared/createPageContextShared.js +15 -0
- package/dist/esm/shared/hooks/getHook.d.ts +1 -1
- package/dist/esm/shared/page-configs/Config.d.ts +3 -3
- package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.js +1 -1
- package/package.json +1 -1
|
@@ -30,3 +30,4 @@ __exportStar(require("../../utils/parseUrl.js"), exports);
|
|
|
30
30
|
__exportStar(require("../../utils/slice.js"), exports);
|
|
31
31
|
__exportStar(require("../../utils/unique.js"), exports); // Only used by Server Routing (not needed for Client Routing)
|
|
32
32
|
__exportStar(require("../../utils/getPropAccessNotation.js"), exports);
|
|
33
|
+
__exportStar(require("../../utils/augmentType.js"), exports);
|
|
@@ -4,7 +4,7 @@ exports.createPageContextServerSide = createPageContextServerSide;
|
|
|
4
4
|
exports.createPageContextServerSideWithoutGlobalContext = createPageContextServerSideWithoutGlobalContext;
|
|
5
5
|
const utils_js_1 = require("../utils.js");
|
|
6
6
|
const getPageContextUrlComputed_js_1 = require("../../../shared/getPageContextUrlComputed.js");
|
|
7
|
-
const
|
|
7
|
+
const createPageContextShared_js_1 = require("../../../shared/createPageContextShared.js");
|
|
8
8
|
async function createPageContextServerSide(pageContextInit, globalContext, { isPrerendering, ssr: { urlHandler, isClientSideNavigation } = {
|
|
9
9
|
urlHandler: null,
|
|
10
10
|
isClientSideNavigation: false
|
|
@@ -13,7 +13,6 @@ async function createPageContextServerSide(pageContextInit, globalContext, { isP
|
|
|
13
13
|
const pageContextCreated = createPageContext(pageContextInit, isPrerendering);
|
|
14
14
|
(0, utils_js_1.objectAssign)(pageContextCreated, pageContextInit);
|
|
15
15
|
(0, utils_js_1.objectAssign)(pageContextCreated, {
|
|
16
|
-
_objectCreatedByVike: true,
|
|
17
16
|
// The following is defined on `pageContext` because we can eventually make these non-global
|
|
18
17
|
_baseServer: globalContext.baseServer,
|
|
19
18
|
_baseAssets: globalContext.baseAssets,
|
|
@@ -55,7 +54,8 @@ async function createPageContextServerSide(pageContextInit, globalContext, { isP
|
|
|
55
54
|
}
|
|
56
55
|
(0, utils_js_1.objectAssign)(pageContextCreated, { headers });
|
|
57
56
|
}
|
|
58
|
-
await (0,
|
|
57
|
+
const pageContextAugmented = await (0, createPageContextShared_js_1.createPageContextShared)(pageContextCreated, globalContext.pageConfigGlobal);
|
|
58
|
+
(0, utils_js_1.augmentType)(pageContextCreated, pageContextAugmented);
|
|
59
59
|
return pageContextCreated;
|
|
60
60
|
}
|
|
61
61
|
function createPageContextServerSideWithoutGlobalContext(pageContextInit) {
|
|
@@ -64,7 +64,6 @@ function createPageContextServerSideWithoutGlobalContext(pageContextInit) {
|
|
|
64
64
|
}
|
|
65
65
|
function createPageContext(pageContextInit, isPrerendering) {
|
|
66
66
|
const pageContext = {
|
|
67
|
-
_isPageContextObject: true,
|
|
68
67
|
isClientSide: false,
|
|
69
68
|
isPrerendering
|
|
70
69
|
};
|
|
@@ -10,8 +10,8 @@ async function executeHookGeneric(hookName, pageContext) {
|
|
|
10
10
|
return;
|
|
11
11
|
await (0, executeHook_js_1.executeHook)(() => hook.hookFn(pageContext), hook, pageContext);
|
|
12
12
|
}
|
|
13
|
-
async function executeHookGenericGlobalCumulative(hookName,
|
|
14
|
-
const hooks = (0, getHook_js_1.getHookFromPageConfigGlobalCumulative)(
|
|
13
|
+
async function executeHookGenericGlobalCumulative(hookName, pageConfigGlobal, pageContext) {
|
|
14
|
+
const hooks = (0, getHook_js_1.getHookFromPageConfigGlobalCumulative)(pageConfigGlobal, hookName);
|
|
15
15
|
await Promise.all(hooks.map(async (hook) => {
|
|
16
16
|
await (0, executeHook_js_1.executeHook)(() => hook.hookFn(pageContext), hook, null);
|
|
17
17
|
}));
|
|
@@ -3,7 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.default = universalVikeHandler;
|
|
4
4
|
const index_js_1 = require("./index.js");
|
|
5
5
|
async function universalVikeHandler(request, context, runtime) {
|
|
6
|
-
const pageContextInit = {
|
|
6
|
+
const pageContextInit = {
|
|
7
|
+
...context,
|
|
8
|
+
...runtime,
|
|
9
|
+
runtime,
|
|
10
|
+
urlOriginal: request.url,
|
|
11
|
+
headersOriginal: request.headers
|
|
12
|
+
};
|
|
7
13
|
const pageContext = await (0, index_js_1.renderPage)(pageContextInit);
|
|
8
14
|
const response = pageContext.httpResponse;
|
|
9
15
|
const readable = response.getReadableWebStream();
|
|
@@ -75,3 +75,4 @@ __exportStar(require("../../utils/getPropAccessNotation.js"), exports);
|
|
|
75
75
|
__exportStar(require("../../utils/PROJECT_VERSION.js"), exports);
|
|
76
76
|
__exportStar(require("../../utils/genPromise.js"), exports);
|
|
77
77
|
__exportStar(require("../../utils/makePublicCopy.js"), exports);
|
|
78
|
+
__exportStar(require("../../utils/augmentType.js"), exports);
|
|
@@ -12,7 +12,7 @@ function assertPageContextProvidedByUser(pageContextProvidedByUser, { hookName,
|
|
|
12
12
|
(0, utils_js_1.assert)(!hookName.endsWith(')'));
|
|
13
13
|
const errPrefix = `The ${picocolors_1.default.cyan('pageContext')} object provided by the ${hookName}() hook defined by ${hookFilePath}`;
|
|
14
14
|
(0, utils_js_1.assertUsage)((0, utils_js_1.isObject)(pageContextProvidedByUser), `${errPrefix} should be an object (but it's ${picocolors_1.default.cyan(`typeof pageContext === ${JSON.stringify(typeof pageContextProvidedByUser)}`)} instead)`);
|
|
15
|
-
(0, utils_js_1.assertUsage)(!('
|
|
15
|
+
(0, utils_js_1.assertUsage)(!('_isPageContextObject' in pageContextProvidedByUser), `${errPrefix} shouldn't be the whole ${picocolors_1.default.cyan('pageContext')} object, see https://vike.dev/pageContext-manipulation#do-not-return-entire-pagecontext`);
|
|
16
16
|
// In principle, it's possible to use onBeforeRoute()` to override and define the whole routing.
|
|
17
17
|
// Is that a good idea to allow users to do this? Beyond deep integration with Vue Router or React Router, is there a use case for this?
|
|
18
18
|
(0, utils_js_1.assertWarning)(!('pageId' in pageContextProvidedByUser), `${errPrefix} sets ${picocolors_1.default.cyan('pageContext.pageId')} which means that Vike's routing is overriden. This is an experimental feature: make sure to contact a vike maintainer before using this.`, { onlyOnce: true });
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createPageContextShared = createPageContextShared;
|
|
4
|
+
const executeHookGeneric_js_1 = require("../node/runtime/renderPage/executeHookGeneric.js");
|
|
5
|
+
const getPageConfigUserFriendly_js_1 = require("./page-configs/getPageConfigUserFriendly.js");
|
|
6
|
+
const utils_js_1 = require("./utils.js");
|
|
7
|
+
async function createPageContextShared(pageContextCreated, pageConfigGlobal) {
|
|
8
|
+
const pageConfigGlobalUserFriendly = (0, getPageConfigUserFriendly_js_1.getPageConfigGlobalUserFriendly)({
|
|
9
|
+
pageConfigGlobalValues: pageConfigGlobal.configValues
|
|
10
|
+
});
|
|
11
|
+
(0, utils_js_1.objectAssign)(pageContextCreated, {
|
|
12
|
+
_isPageContextObject: true,
|
|
13
|
+
...pageConfigGlobalUserFriendly
|
|
14
|
+
}, true);
|
|
15
|
+
await (0, executeHookGeneric_js_1.executeHookGenericGlobalCumulative)('onCreatePageContext', pageConfigGlobal, pageContextCreated);
|
|
16
|
+
return pageContextCreated;
|
|
17
|
+
}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
export {
|
|
2
|
-
declare function
|
|
3
|
-
_isPageContextObject: boolean;
|
|
1
|
+
export { createPageContextClientSide };
|
|
2
|
+
declare function createPageContextClientSide(urlOriginal: string): Promise<{
|
|
4
3
|
isClientSide: boolean;
|
|
5
4
|
isPrerendering: boolean;
|
|
6
5
|
urlOriginal: string;
|
|
7
6
|
globalContext: {
|
|
8
7
|
[x: string]: unknown;
|
|
9
8
|
};
|
|
10
|
-
_objectCreatedByVike: boolean;
|
|
11
9
|
_urlHandler: null;
|
|
12
10
|
_urlRewrite: null;
|
|
13
11
|
_baseServer: string;
|
|
@@ -21,4 +19,10 @@ declare function createPageContext(urlOriginal: string): Promise<{
|
|
|
21
19
|
urlParsed: import("./utils.js").UrlPublic;
|
|
22
20
|
urlPathname: string;
|
|
23
21
|
url: string;
|
|
22
|
+
} & {
|
|
23
|
+
config: import("../../types/index.js").ConfigResolved;
|
|
24
|
+
_source: import("../../shared/page-configs/getPageConfigUserFriendly.js").Source;
|
|
25
|
+
_sources: import("../../shared/page-configs/getPageConfigUserFriendly.js").Sources;
|
|
26
|
+
_from: import("../../shared/page-configs/getPageConfigUserFriendly.js").From;
|
|
27
|
+
_isPageContextObject: boolean;
|
|
24
28
|
}>;
|
|
@@ -1,24 +1,23 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { createPageContextClientSide };
|
|
2
|
+
import { createPageContextShared } from '../../shared/createPageContextShared.js';
|
|
2
3
|
import { getPageConfigsRuntime } from '../../shared/getPageConfigsRuntime.js';
|
|
3
4
|
import { getPageContextUrlComputed } from '../../shared/getPageContextUrlComputed.js';
|
|
4
5
|
import { loadPageRoutes } from '../../shared/route/loadPageRoutes.js';
|
|
5
6
|
import { getBaseServer } from './getBaseServer.js';
|
|
6
7
|
import { getGlobalContext } from './globalContextClientSide.js';
|
|
7
|
-
import { assert, isBaseServer, objectAssign } from './utils.js';
|
|
8
|
+
import { assert, augmentType, isBaseServer, objectAssign } from './utils.js';
|
|
8
9
|
// @ts-ignore
|
|
9
10
|
import * as virtualFileExports from 'virtual:vike:importUserCode:client:client-routing';
|
|
10
11
|
const { pageFilesAll, allPageIds, pageConfigs, pageConfigGlobal } = getPageConfigsRuntime(virtualFileExports);
|
|
11
|
-
async function
|
|
12
|
+
async function createPageContextClientSide(urlOriginal) {
|
|
12
13
|
const { pageRoutes, onBeforeRouteHook } = await loadPageRoutes(pageFilesAll, pageConfigs, pageConfigGlobal, allPageIds);
|
|
13
14
|
const baseServer = getBaseServer();
|
|
14
15
|
assert(isBaseServer(baseServer));
|
|
15
|
-
const
|
|
16
|
-
_isPageContextObject: true,
|
|
16
|
+
const pageContextCreated = {
|
|
17
17
|
isClientSide: true,
|
|
18
18
|
isPrerendering: false,
|
|
19
19
|
urlOriginal,
|
|
20
20
|
globalContext: getGlobalContext(),
|
|
21
|
-
_objectCreatedByVike: true,
|
|
22
21
|
_urlHandler: null,
|
|
23
22
|
_urlRewrite: null,
|
|
24
23
|
_baseServer: baseServer,
|
|
@@ -29,7 +28,9 @@ async function createPageContext(urlOriginal) {
|
|
|
29
28
|
_pageRoutes: pageRoutes,
|
|
30
29
|
_onBeforeRouteHook: onBeforeRouteHook
|
|
31
30
|
};
|
|
32
|
-
const pageContextUrlComputed = getPageContextUrlComputed(
|
|
33
|
-
objectAssign(
|
|
34
|
-
|
|
31
|
+
const pageContextUrlComputed = getPageContextUrlComputed(pageContextCreated);
|
|
32
|
+
objectAssign(pageContextCreated, pageContextUrlComputed);
|
|
33
|
+
const pageContextAugmented = await createPageContextShared(pageContextCreated, pageConfigGlobal);
|
|
34
|
+
augmentType(pageContextCreated, pageContextAugmented);
|
|
35
|
+
return pageContextCreated;
|
|
35
36
|
}
|
|
@@ -10,7 +10,7 @@ import { isErrorFetchingStaticAssets, loadUserFilesClientSide } from '../shared/
|
|
|
10
10
|
import { skipLink } from './skipLink.js';
|
|
11
11
|
import { disableClientRouting } from './renderPageClientSide.js';
|
|
12
12
|
import { isClientSideRoutable } from './isClientSideRoutable.js';
|
|
13
|
-
import {
|
|
13
|
+
import { createPageContextClientSide } from './createPageContextClientSide.js';
|
|
14
14
|
import { route } from '../../shared/route/index.js';
|
|
15
15
|
import { noRouteMatch } from '../../shared/route/noRouteMatch.js';
|
|
16
16
|
import { getPageContextFromServerHooks } from './getPageContextFromHooks.js';
|
|
@@ -238,7 +238,7 @@ function isExpired(found) {
|
|
|
238
238
|
}
|
|
239
239
|
// TODO/next-major-release: make it sync
|
|
240
240
|
async function getPageContextLink(urlOfLink) {
|
|
241
|
-
const pageContextLink = await
|
|
241
|
+
const pageContextLink = await createPageContextClientSide(urlOfLink);
|
|
242
242
|
let pageContextFromRoute;
|
|
243
243
|
try {
|
|
244
244
|
pageContextFromRoute = await route(pageContextLink);
|
|
@@ -5,7 +5,7 @@ export { firstRenderStartPromise };
|
|
|
5
5
|
export { getPageContextClient };
|
|
6
6
|
import { assert, isSameErrorMessage, objectAssign, redirectHard, getGlobalObject, hasProp, augmentType, genPromise, isCallable, catchInfiniteLoop } from './utils.js';
|
|
7
7
|
import { getPageContextFromClientHooks, getPageContextFromServerHooks, getPageContextFromHooks_isHydration, getPageContextFromHooks_serialized, setPageContextInitIsPassedToClient } from './getPageContextFromHooks.js';
|
|
8
|
-
import {
|
|
8
|
+
import { createPageContextClientSide } from './createPageContextClientSide.js';
|
|
9
9
|
import { addLinkPrefetchHandlers, addLinkPrefetchHandlers_unwatch, addLinkPrefetchHandlers_watch, getPageContextPrefetched, populatePageContextPrefetchCache } from './prefetch.js';
|
|
10
10
|
import { assertInfo, assertWarning, isReact } from './utils.js';
|
|
11
11
|
import { executeOnRenderClientHook } from '../shared/executeOnRenderClientHook.js';
|
|
@@ -217,7 +217,7 @@ async function renderPageClientSide(renderArgs) {
|
|
|
217
217
|
}
|
|
218
218
|
}
|
|
219
219
|
async function getPageContextBegin(isForErrorPage) {
|
|
220
|
-
const pageContext = await
|
|
220
|
+
const pageContext = await createPageContextClientSide(urlOriginal);
|
|
221
221
|
objectAssign(pageContext, {
|
|
222
222
|
isBackwardNavigation,
|
|
223
223
|
isClientSideNavigation,
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
export {
|
|
2
|
-
declare function
|
|
3
|
-
_isPageContextObject: boolean;
|
|
1
|
+
export { createPageContextClientSide };
|
|
2
|
+
declare function createPageContextClientSide(): Promise<{
|
|
4
3
|
isPrerendering: boolean;
|
|
5
4
|
isClientSide: boolean;
|
|
6
5
|
isHydration: true;
|
|
@@ -16,4 +15,10 @@ declare function getPageContext(): Promise<{
|
|
|
16
15
|
_pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
17
16
|
} & import("../../shared/getPageFiles.js").PageConfigUserFriendlyOld & {
|
|
18
17
|
_pageFilesLoaded: import("../../shared/getPageFiles.js").PageFile[];
|
|
18
|
+
} & {
|
|
19
|
+
config: import("../../types/index.js").ConfigResolved;
|
|
20
|
+
_source: import("../../shared/page-configs/getPageConfigUserFriendly.js").Source;
|
|
21
|
+
_sources: import("../../shared/page-configs/getPageConfigUserFriendly.js").Sources;
|
|
22
|
+
_from: import("../../shared/page-configs/getPageConfigUserFriendly.js").From;
|
|
23
|
+
_isPageContextObject: boolean;
|
|
19
24
|
}>;
|
package/dist/esm/client/server-routing-runtime/{getPageContext.js → createPageContextClientSide.js}
RENAMED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
export {
|
|
2
|
-
import { assertUsage, assertWarning, objectAssign } from './utils.js';
|
|
1
|
+
export { createPageContextClientSide };
|
|
2
|
+
import { assertUsage, assertWarning, augmentType, objectAssign } from './utils.js';
|
|
3
3
|
import { getPageContextSerializedInHtml } from '../shared/getPageContextSerializedInHtml.js';
|
|
4
4
|
import { loadUserFilesClientSide } from '../shared/loadUserFilesClientSide.js';
|
|
5
5
|
import { getCurrentUrl } from '../shared/getCurrentUrl.js';
|
|
6
6
|
import { getPageConfigsRuntime } from '../../shared/getPageConfigsRuntime.js';
|
|
7
7
|
// @ts-ignore
|
|
8
8
|
import * as virtualFileExports from 'virtual:vike:importUserCode:client:server-routing';
|
|
9
|
+
import { createPageContextShared } from '../../shared/createPageContextShared.js';
|
|
9
10
|
const { pageFilesAll, pageConfigs, pageConfigGlobal } = getPageConfigsRuntime(virtualFileExports);
|
|
10
11
|
const urlFirst = getCurrentUrl({ withoutHash: true });
|
|
11
|
-
async function
|
|
12
|
-
const
|
|
13
|
-
_isPageContextObject: true,
|
|
12
|
+
async function createPageContextClientSide() {
|
|
13
|
+
const pageContextCreated = {
|
|
14
14
|
isPrerendering: false,
|
|
15
15
|
isClientSide: true,
|
|
16
16
|
isHydration: true,
|
|
@@ -18,10 +18,12 @@ async function getPageContext() {
|
|
|
18
18
|
_hasPageContextFromServer: true,
|
|
19
19
|
_hasPageContextFromClient: false
|
|
20
20
|
};
|
|
21
|
-
objectAssign(
|
|
22
|
-
objectAssign(
|
|
21
|
+
objectAssign(pageContextCreated, getPageContextSerializedInHtml());
|
|
22
|
+
objectAssign(pageContextCreated, await loadPageUserFiles(pageContextCreated.pageId));
|
|
23
|
+
const pageContextAugmented = await createPageContextShared(pageContextCreated, pageConfigGlobal);
|
|
24
|
+
augmentType(pageContextCreated, pageContextAugmented);
|
|
23
25
|
assertPristineUrl();
|
|
24
|
-
return
|
|
26
|
+
return pageContextCreated;
|
|
25
27
|
}
|
|
26
28
|
function assertPristineUrl() {
|
|
27
29
|
const urlCurrent = getCurrentUrl({ withoutHash: true });
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { assertServerRouting } from '../../utils/assertRoutingType.js';
|
|
2
2
|
assertServerRouting();
|
|
3
|
-
import {
|
|
3
|
+
import { createPageContextClientSide } from './createPageContextClientSide.js';
|
|
4
4
|
import { executeOnRenderClientHook } from '../shared/executeOnRenderClientHook.js';
|
|
5
5
|
import { assertHook } from '../../shared/hooks/getHook.js';
|
|
6
6
|
import { assertSingleInstance_onClientEntryServerRouting } from './utils.js';
|
|
@@ -12,7 +12,7 @@ if (import.meta.env.DEV)
|
|
|
12
12
|
removeFoucBuster();
|
|
13
13
|
hydrate();
|
|
14
14
|
async function hydrate() {
|
|
15
|
-
const pageContext = await
|
|
15
|
+
const pageContext = await createPageContextClientSide();
|
|
16
16
|
await executeOnRenderClientHook(pageContext, false);
|
|
17
17
|
assertHook(pageContext, 'onHydrationEnd');
|
|
18
18
|
await pageContext.exports.onHydrationEnd?.(pageContext);
|
|
@@ -14,3 +14,4 @@ export * from '../../utils/parseUrl.js';
|
|
|
14
14
|
export * from '../../utils/slice.js';
|
|
15
15
|
export * from '../../utils/unique.js'; // Only used by Server Routing (not needed for Client Routing)
|
|
16
16
|
export * from '../../utils/getPropAccessNotation.js';
|
|
17
|
+
export * from '../../utils/augmentType.js';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export { createPageContextServerSide };
|
|
2
2
|
export { createPageContextServerSideWithoutGlobalContext };
|
|
3
|
-
export type {
|
|
3
|
+
export type { PageContextCreatedServerSide };
|
|
4
4
|
import type { GlobalContextInternal } from '../globalContext.js';
|
|
5
5
|
import type { PageContextInit } from '../renderPage.js';
|
|
6
|
-
type
|
|
6
|
+
type PageContextCreatedServerSide = Awaited<ReturnType<typeof createPageContextServerSide>>;
|
|
7
7
|
declare function createPageContextServerSide(pageContextInit: PageContextInit, globalContext: GlobalContextInternal, { isPrerendering, ssr: { urlHandler, isClientSideNavigation } }: {
|
|
8
8
|
isPrerendering: false;
|
|
9
9
|
ssr: {
|
|
@@ -14,14 +14,12 @@ declare function createPageContextServerSide(pageContextInit: PageContextInit, g
|
|
|
14
14
|
isPrerendering: true;
|
|
15
15
|
ssr?: undefined;
|
|
16
16
|
}): Promise<{
|
|
17
|
-
_isPageContextObject: boolean;
|
|
18
17
|
isClientSide: boolean;
|
|
19
18
|
isPrerendering: boolean;
|
|
20
19
|
} & Pick<import("../../../shared/types.js").PageContextBuiltInServerInternal, "urlOriginal" | "headersOriginal"> & {
|
|
21
20
|
url?: string;
|
|
22
21
|
headers?: Record<string, string>;
|
|
23
22
|
} & {
|
|
24
|
-
_objectCreatedByVike: boolean;
|
|
25
23
|
_baseServer: string;
|
|
26
24
|
_baseAssets: string;
|
|
27
25
|
_includeAssetsImportedByServer: boolean;
|
|
@@ -74,9 +72,14 @@ declare function createPageContextServerSide(pageContextInit: PageContextInit, g
|
|
|
74
72
|
url: string;
|
|
75
73
|
} & {
|
|
76
74
|
headers: Record<string, string> | null;
|
|
75
|
+
} & {
|
|
76
|
+
config: import("../../../types/index.js").ConfigResolved;
|
|
77
|
+
_source: import("../../../shared/page-configs/getPageConfigUserFriendly.js").Source;
|
|
78
|
+
_sources: import("../../../shared/page-configs/getPageConfigUserFriendly.js").Sources;
|
|
79
|
+
_from: import("../../../shared/page-configs/getPageConfigUserFriendly.js").From;
|
|
80
|
+
_isPageContextObject: boolean;
|
|
77
81
|
}>;
|
|
78
82
|
declare function createPageContextServerSideWithoutGlobalContext(pageContextInit: PageContextInit): {
|
|
79
|
-
_isPageContextObject: boolean;
|
|
80
83
|
isClientSide: boolean;
|
|
81
84
|
isPrerendering: boolean;
|
|
82
85
|
} & Pick<import("../../../shared/types.js").PageContextBuiltInServerInternal, "urlOriginal" | "headersOriginal"> & {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export { createPageContextServerSide };
|
|
2
2
|
export { createPageContextServerSideWithoutGlobalContext };
|
|
3
|
-
import { assert, assertUsage, assertWarning, normalizeHeaders, objectAssign } from '../utils.js';
|
|
3
|
+
import { assert, assertUsage, assertWarning, augmentType, normalizeHeaders, objectAssign } from '../utils.js';
|
|
4
4
|
import { getPageContextUrlComputed } from '../../../shared/getPageContextUrlComputed.js';
|
|
5
|
-
import {
|
|
5
|
+
import { createPageContextShared } from '../../../shared/createPageContextShared.js';
|
|
6
6
|
async function createPageContextServerSide(pageContextInit, globalContext, { isPrerendering, ssr: { urlHandler, isClientSideNavigation } = {
|
|
7
7
|
urlHandler: null,
|
|
8
8
|
isClientSideNavigation: false
|
|
@@ -11,7 +11,6 @@ async function createPageContextServerSide(pageContextInit, globalContext, { isP
|
|
|
11
11
|
const pageContextCreated = createPageContext(pageContextInit, isPrerendering);
|
|
12
12
|
objectAssign(pageContextCreated, pageContextInit);
|
|
13
13
|
objectAssign(pageContextCreated, {
|
|
14
|
-
_objectCreatedByVike: true,
|
|
15
14
|
// The following is defined on `pageContext` because we can eventually make these non-global
|
|
16
15
|
_baseServer: globalContext.baseServer,
|
|
17
16
|
_baseAssets: globalContext.baseAssets,
|
|
@@ -53,7 +52,8 @@ async function createPageContextServerSide(pageContextInit, globalContext, { isP
|
|
|
53
52
|
}
|
|
54
53
|
objectAssign(pageContextCreated, { headers });
|
|
55
54
|
}
|
|
56
|
-
await
|
|
55
|
+
const pageContextAugmented = await createPageContextShared(pageContextCreated, globalContext.pageConfigGlobal);
|
|
56
|
+
augmentType(pageContextCreated, pageContextAugmented);
|
|
57
57
|
return pageContextCreated;
|
|
58
58
|
}
|
|
59
59
|
function createPageContextServerSideWithoutGlobalContext(pageContextInit) {
|
|
@@ -62,7 +62,6 @@ function createPageContextServerSideWithoutGlobalContext(pageContextInit) {
|
|
|
62
62
|
}
|
|
63
63
|
function createPageContext(pageContextInit, isPrerendering) {
|
|
64
64
|
const pageContext = {
|
|
65
|
-
_isPageContextObject: true,
|
|
66
65
|
isClientSide: false,
|
|
67
66
|
isPrerendering
|
|
68
67
|
};
|
|
@@ -3,7 +3,6 @@ export { executeHookGenericGlobalCumulative };
|
|
|
3
3
|
import type { PageConfigUserFriendlyOld } from '../../../shared/getPageFiles.js';
|
|
4
4
|
import { type HookName } from '../../../shared/hooks/getHook.js';
|
|
5
5
|
import type { HookNameGlobal } from '../../../shared/page-configs/Config.js';
|
|
6
|
-
import type {
|
|
7
|
-
import type { PageContextServerSideCreated } from './createPageContextServerSide.js';
|
|
6
|
+
import type { PageConfigGlobalRuntime } from '../../../shared/page-configs/PageConfig.js';
|
|
8
7
|
declare function executeHookGeneric(hookName: HookName, pageContext: PageConfigUserFriendlyOld): Promise<void>;
|
|
9
|
-
declare function executeHookGenericGlobalCumulative(hookName: HookNameGlobal,
|
|
8
|
+
declare function executeHookGenericGlobalCumulative(hookName: HookNameGlobal, pageConfigGlobal: PageConfigGlobalRuntime, pageContext: object): Promise<void>;
|
|
@@ -8,8 +8,8 @@ async function executeHookGeneric(hookName, pageContext) {
|
|
|
8
8
|
return;
|
|
9
9
|
await executeHook(() => hook.hookFn(pageContext), hook, pageContext);
|
|
10
10
|
}
|
|
11
|
-
async function executeHookGenericGlobalCumulative(hookName,
|
|
12
|
-
const hooks = getHookFromPageConfigGlobalCumulative(
|
|
11
|
+
async function executeHookGenericGlobalCumulative(hookName, pageConfigGlobal, pageContext) {
|
|
12
|
+
const hooks = getHookFromPageConfigGlobalCumulative(pageConfigGlobal, hookName);
|
|
13
13
|
await Promise.all(hooks.map(async (hook) => {
|
|
14
14
|
await executeHook(() => hook.hookFn(pageContext), hook, null);
|
|
15
15
|
}));
|
|
@@ -4,7 +4,7 @@ export type { PageContextAfterRender };
|
|
|
4
4
|
import { type PageContextUrlInternal } from '../../../shared/getPageContextUrlComputed.js';
|
|
5
5
|
import { HttpResponse } from './createHttpResponse.js';
|
|
6
6
|
import { PageContext_loadUserFilesServerSide, type PageFiles } from './loadUserFilesServerSide.js';
|
|
7
|
-
import type {
|
|
7
|
+
import type { PageContextCreatedServerSide } from './createPageContextServerSide.js';
|
|
8
8
|
type PageContextAfterRender = {
|
|
9
9
|
httpResponse: HttpResponse;
|
|
10
10
|
errorWhileRendering: null | Error;
|
|
@@ -16,8 +16,8 @@ declare function renderPageAlreadyRouted<PageContext extends {
|
|
|
16
16
|
routeParams: Record<string, string>;
|
|
17
17
|
errorWhileRendering: null | Error;
|
|
18
18
|
_httpRequestId: number;
|
|
19
|
-
} &
|
|
20
|
-
declare function prerenderPage(pageContext:
|
|
19
|
+
} & PageContextCreatedServerSide & PageContextUrlInternal & PageContext_loadUserFilesServerSide>(pageContext: PageContext): Promise<PageContext & PageContextAfterRender>;
|
|
20
|
+
declare function prerenderPage(pageContext: PageContextCreatedServerSide & PageFiles & {
|
|
21
21
|
routeParams: Record<string, string>;
|
|
22
22
|
pageId: string;
|
|
23
23
|
_urlRewrite: null;
|
|
@@ -29,14 +29,12 @@ declare function prerenderPage(pageContext: PageContextServerSideCreated & PageF
|
|
|
29
29
|
documentHtml: string;
|
|
30
30
|
pageContextSerialized: null;
|
|
31
31
|
pageContext: {
|
|
32
|
-
_isPageContextObject: boolean;
|
|
33
32
|
isClientSide: boolean;
|
|
34
33
|
isPrerendering: boolean;
|
|
35
34
|
} & Pick<import("../../../shared/types.js").PageContextBuiltInServerInternal, "urlOriginal" | "headersOriginal"> & {
|
|
36
35
|
url?: string;
|
|
37
36
|
headers?: Record<string, string>;
|
|
38
37
|
} & {
|
|
39
|
-
_objectCreatedByVike: boolean;
|
|
40
38
|
_baseServer: string;
|
|
41
39
|
_baseAssets: string;
|
|
42
40
|
_includeAssetsImportedByServer: boolean;
|
|
@@ -88,6 +86,12 @@ declare function prerenderPage(pageContext: PageContextServerSideCreated & PageF
|
|
|
88
86
|
url: string;
|
|
89
87
|
} & {
|
|
90
88
|
headers: Record<string, string> | null;
|
|
89
|
+
} & {
|
|
90
|
+
config: import("../../../types/index.js").ConfigResolved;
|
|
91
|
+
_source: import("../../../shared/page-configs/getPageConfigUserFriendly.js").Source;
|
|
92
|
+
_sources: import("../../../shared/page-configs/getPageConfigUserFriendly.js").Sources;
|
|
93
|
+
_from: import("../../../shared/page-configs/getPageConfigUserFriendly.js").From;
|
|
94
|
+
_isPageContextObject: boolean;
|
|
91
95
|
} & import("../../../shared/getPageFiles.js").PageConfigUserFriendlyOld & {
|
|
92
96
|
Page: unknown;
|
|
93
97
|
_isHtmlOnly: boolean;
|
|
@@ -111,14 +115,12 @@ declare function prerenderPage(pageContext: PageContextServerSideCreated & PageF
|
|
|
111
115
|
documentHtml: string;
|
|
112
116
|
pageContextSerialized: string;
|
|
113
117
|
pageContext: {
|
|
114
|
-
_isPageContextObject: boolean;
|
|
115
118
|
isClientSide: boolean;
|
|
116
119
|
isPrerendering: boolean;
|
|
117
120
|
} & Pick<import("../../../shared/types.js").PageContextBuiltInServerInternal, "urlOriginal" | "headersOriginal"> & {
|
|
118
121
|
url?: string;
|
|
119
122
|
headers?: Record<string, string>;
|
|
120
123
|
} & {
|
|
121
|
-
_objectCreatedByVike: boolean;
|
|
122
124
|
_baseServer: string;
|
|
123
125
|
_baseAssets: string;
|
|
124
126
|
_includeAssetsImportedByServer: boolean;
|
|
@@ -170,6 +172,12 @@ declare function prerenderPage(pageContext: PageContextServerSideCreated & PageF
|
|
|
170
172
|
url: string;
|
|
171
173
|
} & {
|
|
172
174
|
headers: Record<string, string> | null;
|
|
175
|
+
} & {
|
|
176
|
+
config: import("../../../types/index.js").ConfigResolved;
|
|
177
|
+
_source: import("../../../shared/page-configs/getPageConfigUserFriendly.js").Source;
|
|
178
|
+
_sources: import("../../../shared/page-configs/getPageConfigUserFriendly.js").Sources;
|
|
179
|
+
_from: import("../../../shared/page-configs/getPageConfigUserFriendly.js").From;
|
|
180
|
+
_isPageContextObject: boolean;
|
|
173
181
|
} & import("../../../shared/getPageFiles.js").PageConfigUserFriendlyOld & {
|
|
174
182
|
Page: unknown;
|
|
175
183
|
_isHtmlOnly: boolean;
|
|
@@ -19,14 +19,12 @@ declare let asyncHookWrapper: <PageContext>(_httpRequestId: number, ret: () => P
|
|
|
19
19
|
}>;
|
|
20
20
|
declare function renderPage_addAsyncHookwrapper(wrapper: typeof asyncHookWrapper): void;
|
|
21
21
|
declare function getPageContextBegin(pageContextInit: PageContextInit, globalContext: GlobalContextInternal, httpRequestId: number): Promise<{
|
|
22
|
-
_isPageContextObject: boolean;
|
|
23
22
|
isClientSide: boolean;
|
|
24
23
|
isPrerendering: boolean;
|
|
25
24
|
} & Pick<PageContextBuiltInServerInternal, "urlOriginal" | "headersOriginal"> & {
|
|
26
25
|
/** @deprecated Set `pageContextInit.urlOriginal` instead */ url?: string;
|
|
27
26
|
/** @deprecated Set pageContextInit.headersOriginal instead */ headers?: Record<string, string>;
|
|
28
27
|
} & {
|
|
29
|
-
_objectCreatedByVike: boolean;
|
|
30
28
|
_baseServer: string;
|
|
31
29
|
_baseAssets: string;
|
|
32
30
|
_includeAssetsImportedByServer: boolean;
|
|
@@ -78,6 +76,12 @@ declare function getPageContextBegin(pageContextInit: PageContextInit, globalCon
|
|
|
78
76
|
url: string;
|
|
79
77
|
} & {
|
|
80
78
|
headers: Record<string, string> | null;
|
|
79
|
+
} & {
|
|
80
|
+
config: import("../../types/index.js").ConfigResolved;
|
|
81
|
+
_source: import("../../shared/page-configs/getPageConfigUserFriendly.js").Source;
|
|
82
|
+
_sources: import("../../shared/page-configs/getPageConfigUserFriendly.js").Sources;
|
|
83
|
+
_from: import("../../shared/page-configs/getPageConfigUserFriendly.js").From;
|
|
84
|
+
_isPageContextObject: boolean;
|
|
81
85
|
} & {
|
|
82
86
|
_httpRequestId: number;
|
|
83
87
|
}>;
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import { renderPage } from './index.js';
|
|
2
2
|
export default async function universalVikeHandler(request, context, runtime) {
|
|
3
|
-
const pageContextInit = {
|
|
3
|
+
const pageContextInit = {
|
|
4
|
+
...context,
|
|
5
|
+
...runtime,
|
|
6
|
+
runtime,
|
|
7
|
+
urlOriginal: request.url,
|
|
8
|
+
headersOriginal: request.headers
|
|
9
|
+
};
|
|
4
10
|
const pageContext = await renderPage(pageContextInit);
|
|
5
11
|
const response = pageContext.httpResponse;
|
|
6
12
|
const readable = response.getReadableWebStream();
|
|
@@ -7,7 +7,7 @@ function assertPageContextProvidedByUser(pageContextProvidedByUser, { hookName,
|
|
|
7
7
|
assert(!hookName.endsWith(')'));
|
|
8
8
|
const errPrefix = `The ${pc.cyan('pageContext')} object provided by the ${hookName}() hook defined by ${hookFilePath}`;
|
|
9
9
|
assertUsage(isObject(pageContextProvidedByUser), `${errPrefix} should be an object (but it's ${pc.cyan(`typeof pageContext === ${JSON.stringify(typeof pageContextProvidedByUser)}`)} instead)`);
|
|
10
|
-
assertUsage(!('
|
|
10
|
+
assertUsage(!('_isPageContextObject' in pageContextProvidedByUser), `${errPrefix} shouldn't be the whole ${pc.cyan('pageContext')} object, see https://vike.dev/pageContext-manipulation#do-not-return-entire-pagecontext`);
|
|
11
11
|
// In principle, it's possible to use onBeforeRoute()` to override and define the whole routing.
|
|
12
12
|
// Is that a good idea to allow users to do this? Beyond deep integration with Vue Router or React Router, is there a use case for this?
|
|
13
13
|
assertWarning(!('pageId' in pageContextProvidedByUser), `${errPrefix} sets ${pc.cyan('pageContext.pageId')} which means that Vike's routing is overriden. This is an experimental feature: make sure to contact a vike maintainer before using this.`, { onlyOnce: true });
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { createPageContextShared };
|
|
2
|
+
import type { PageConfigGlobalRuntime } from './page-configs/PageConfig.js';
|
|
3
|
+
declare function createPageContextShared<T extends object>(pageContextCreated: T, pageConfigGlobal: PageConfigGlobalRuntime): Promise<T & {
|
|
4
|
+
config: import("./page-configs/Config/PageContextConfig.js").ConfigResolved;
|
|
5
|
+
_source: import("./page-configs/getPageConfigUserFriendly.js").Source;
|
|
6
|
+
_sources: import("./page-configs/getPageConfigUserFriendly.js").Sources;
|
|
7
|
+
_from: import("./page-configs/getPageConfigUserFriendly.js").From;
|
|
8
|
+
_isPageContextObject: boolean;
|
|
9
|
+
}>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export { createPageContextShared };
|
|
2
|
+
import { executeHookGenericGlobalCumulative } from '../node/runtime/renderPage/executeHookGeneric.js';
|
|
3
|
+
import { getPageConfigGlobalUserFriendly } from './page-configs/getPageConfigUserFriendly.js';
|
|
4
|
+
import { objectAssign } from './utils.js';
|
|
5
|
+
async function createPageContextShared(pageContextCreated, pageConfigGlobal) {
|
|
6
|
+
const pageConfigGlobalUserFriendly = getPageConfigGlobalUserFriendly({
|
|
7
|
+
pageConfigGlobalValues: pageConfigGlobal.configValues
|
|
8
|
+
});
|
|
9
|
+
objectAssign(pageContextCreated, {
|
|
10
|
+
_isPageContextObject: true,
|
|
11
|
+
...pageConfigGlobalUserFriendly
|
|
12
|
+
}, true);
|
|
13
|
+
await executeHookGenericGlobalCumulative('onCreatePageContext', pageConfigGlobal, pageContextCreated);
|
|
14
|
+
return pageContextCreated;
|
|
15
|
+
}
|
|
@@ -45,7 +45,7 @@ import type { PageContextClient, PageContextServer } from '../types.js';
|
|
|
45
45
|
import type { InlineConfig } from 'vite';
|
|
46
46
|
type HookName = HookNamePage | HookNameGlobal | HookNameOldDesign;
|
|
47
47
|
type HookNamePage = 'onHydrationEnd' | 'onBeforePrerenderStart' | 'onBeforeRender' | 'onPageTransitionStart' | 'onPageTransitionEnd' | 'onRenderHtml' | 'onRenderClient' | 'guard' | 'data';
|
|
48
|
-
type HookNameGlobal = '
|
|
48
|
+
type HookNameGlobal = 'onBeforePrerender' | 'onBeforeRoute' | 'onPrerenderStart' | 'onCreatePageContext';
|
|
49
49
|
type HookNameOldDesign = 'render' | 'prerender';
|
|
50
50
|
type ConfigNameBuiltIn = Exclude<keyof Config, keyof VikeVitePluginOptions | 'onBeforeRoute' | 'onPrerenderStart' | 'vite' | 'redirects'> | 'prerender' | 'isClientRuntimeLoaded' | 'onBeforeRenderEnv' | 'dataEnv' | 'hooksTimeout' | 'clientHooks' | 'middleware';
|
|
51
51
|
type ConfigNameGlobal = 'onPrerenderStart' | 'onBeforeRoute' | 'prerender' | 'disableAutoFullBuild' | 'includeAssetsImportedByServer' | 'baseAssets' | 'baseServer' | 'redirects' | 'trailingSlash' | 'disableUrlNormalization' | 'vite';
|
|
@@ -330,9 +330,9 @@ type ConfigBuiltIn = {
|
|
|
330
330
|
* https://vike.dev/onBeforeRender
|
|
331
331
|
*/
|
|
332
332
|
onBeforeRender?: OnBeforeRenderAsync | OnBeforeRenderSync | ImportString | null;
|
|
333
|
-
/** Hook called when a
|
|
333
|
+
/** Hook called when a `pageContext` object is created.
|
|
334
334
|
*
|
|
335
|
-
* https://vike.dev/onCreatePageContext
|
|
335
|
+
* https://vike.dev/onCreatePageContext
|
|
336
336
|
*/
|
|
337
337
|
onCreatePageContext?: (pageContext: PageContextServer) => void | ImportString | null;
|
|
338
338
|
/** Hook for fetching data.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const PROJECT_VERSION: "0.4.228-commit-
|
|
1
|
+
export declare const PROJECT_VERSION: "0.4.228-commit-90cfb1a";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Automatically updated by @brillout/release-me
|
|
2
|
-
export const PROJECT_VERSION = '0.4.228-commit-
|
|
2
|
+
export const PROJECT_VERSION = '0.4.228-commit-90cfb1a';
|