vike 0.4.229-commit-7056ef0 → 0.4.229-commit-e27d672
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/client/shared/{preparePageContextForUserConsumptionClientSide.js → preparePageContextForPublicUsageClientShared.js} +14 -19
- package/dist/cjs/node/api/build.js +1 -5
- package/dist/cjs/node/plugin/shared/loggerNotProd.js +2 -2
- package/dist/cjs/node/prerender/runPrerender.js +40 -36
- package/dist/cjs/node/prerender/utils.js +1 -1
- package/dist/cjs/node/runtime/globalContext.js +13 -27
- package/dist/cjs/node/runtime/html/serializeContext.js +1 -1
- package/dist/cjs/node/runtime/renderPage/createPageContextServerSide.js +4 -8
- package/dist/cjs/node/runtime/renderPage/execHookServer.js +11 -0
- package/dist/cjs/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +9 -9
- package/dist/cjs/node/runtime/renderPage/executeOnRenderHtmlHook.js +8 -12
- package/dist/cjs/node/runtime/renderPage/preparePageContextForPublicUsageServer.js +10 -0
- package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +3 -3
- package/dist/cjs/node/runtime/renderPage.js +4 -4
- package/dist/cjs/node/runtime/utils.js +1 -1
- package/dist/cjs/shared/NOT_SERIALIZABLE.js +0 -1
- package/dist/cjs/shared/addIs404ToPageProps.js +0 -7
- package/dist/cjs/shared/createGlobalContextShared.js +6 -3
- package/dist/cjs/shared/createPageContextShared.js +12 -3
- package/dist/cjs/shared/getPageContext.js +3 -3
- package/dist/cjs/shared/getPageContextUrlComputed.js +2 -36
- package/dist/cjs/shared/getProxyForPublicUsage.js +55 -0
- package/dist/cjs/shared/hooks/execHook.js +164 -0
- package/dist/cjs/shared/page-configs/getUserFriendlyConfigs.js +17 -15
- package/dist/cjs/shared/prepareGlobalContextForPublicUsage.js +10 -0
- package/dist/cjs/shared/preparePageContextForPublicUsage.js +75 -0
- package/dist/cjs/shared/route/abort.js +2 -2
- package/dist/cjs/shared/route/executeGuardHook.js +4 -9
- package/dist/cjs/shared/route/executeOnBeforeRouteHook.js +4 -3
- package/dist/cjs/shared/route/index.js +2 -4
- package/dist/cjs/shared/route/loadPageRoutes.js +6 -0
- package/dist/cjs/shared/route/resolveRouteFunction.js +14 -10
- package/dist/cjs/shared/utils.js +1 -0
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/objectAssign.js +3 -3
- package/dist/cjs/utils/objectDefineProperty.js +1 -1
- package/dist/esm/client/client-routing-runtime/createPageContextClientSide.d.ts +10 -7
- package/dist/esm/client/client-routing-runtime/createPageContextClientSide.js +8 -10
- package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.d.ts +397 -20
- package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +15 -15
- package/dist/esm/client/client-routing-runtime/globalContext.d.ts +1 -0
- package/dist/esm/client/client-routing-runtime/prefetch.d.ts +3 -8
- package/dist/esm/client/client-routing-runtime/preparePageContextForPublicUsageClient.d.ts +11 -0
- package/dist/esm/client/client-routing-runtime/preparePageContextForPublicUsageClient.js +5 -0
- package/dist/esm/client/client-routing-runtime/renderPageClientSide.d.ts +135 -0
- package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +66 -72
- package/dist/esm/client/client-routing-runtime/utils.d.ts +1 -0
- package/dist/esm/client/client-routing-runtime/utils.js +1 -0
- package/dist/esm/client/server-routing-runtime/createPageContextClientSide.d.ts +8 -6
- package/dist/esm/client/server-routing-runtime/createPageContextClientSide.js +8 -10
- package/dist/esm/client/server-routing-runtime/entry.js +4 -6
- package/dist/esm/client/server-routing-runtime/globalContext.d.ts +1 -0
- package/dist/esm/client/server-routing-runtime/preparePageContextForPublicUsageClient.d.ts +9 -0
- package/dist/esm/client/server-routing-runtime/preparePageContextForPublicUsageClient.js +5 -0
- 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/client/shared/createGetGlobalContextClient.d.ts +1 -0
- package/dist/esm/client/shared/executeOnRenderClientHook.d.ts +3 -3
- package/dist/esm/client/shared/executeOnRenderClientHook.js +4 -13
- package/dist/esm/client/shared/preparePageContextForPublicUsageClientShared.d.ts +13 -0
- package/dist/esm/client/shared/preparePageContextForPublicUsageClientShared.js +39 -0
- package/dist/esm/node/api/build.js +1 -2
- package/dist/esm/node/plugin/shared/loggerNotProd.js +1 -1
- package/dist/esm/node/prerender/runPrerender.d.ts +15 -115
- package/dist/esm/node/prerender/runPrerender.js +40 -36
- package/dist/esm/node/prerender/utils.d.ts +1 -1
- package/dist/esm/node/prerender/utils.js +1 -1
- package/dist/esm/node/runtime/globalContext.d.ts +5 -373
- package/dist/esm/node/runtime/globalContext.js +14 -28
- package/dist/esm/node/runtime/html/serializeContext.d.ts +1 -1
- package/dist/esm/node/runtime/html/serializeContext.js +1 -1
- package/dist/esm/node/runtime/renderPage/createPageContextServerSide.d.ts +15 -62
- package/dist/esm/node/runtime/renderPage/createPageContextServerSide.js +5 -9
- package/dist/esm/node/runtime/renderPage/execHookServer.d.ts +12 -0
- package/dist/esm/node/runtime/renderPage/execHookServer.js +9 -0
- package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.d.ts +1 -1
- package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +9 -9
- package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.d.ts +4 -2
- package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.js +8 -12
- package/dist/esm/node/runtime/renderPage/preparePageContextForPublicUsageServer.d.ts +20 -0
- package/dist/esm/node/runtime/renderPage/preparePageContextForPublicUsageServer.js +8 -0
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +15 -115
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +3 -3
- package/dist/esm/node/runtime/renderPage.d.ts +10 -60
- package/dist/esm/node/runtime/renderPage.js +4 -4
- package/dist/esm/node/runtime/utils.d.ts +1 -1
- package/dist/esm/node/runtime/utils.js +1 -1
- package/dist/esm/shared/NOT_SERIALIZABLE.js +0 -1
- package/dist/esm/shared/addIs404ToPageProps.d.ts +1 -6
- package/dist/esm/shared/addIs404ToPageProps.js +1 -8
- package/dist/esm/shared/createGlobalContextShared.d.ts +2 -0
- package/dist/esm/shared/createGlobalContextShared.js +7 -4
- package/dist/esm/shared/createPageContextShared.d.ts +6 -2
- package/dist/esm/shared/createPageContextShared.js +13 -4
- package/dist/esm/shared/getPageContext.d.ts +1 -1
- package/dist/esm/shared/getPageContext.js +1 -1
- package/dist/esm/shared/getPageContextUrlComputed.d.ts +2 -5
- package/dist/esm/shared/getPageContextUrlComputed.js +3 -37
- package/dist/esm/shared/getProxyForPublicUsage.d.ts +4 -0
- package/dist/esm/shared/getProxyForPublicUsage.js +53 -0
- package/dist/esm/shared/hooks/execHook.d.ts +63 -0
- package/dist/esm/shared/hooks/execHook.js +162 -0
- package/dist/esm/shared/hooks/getHook.d.ts +3 -1
- package/dist/esm/shared/page-configs/Config.d.ts +3 -3
- package/dist/esm/shared/page-configs/getUserFriendlyConfigs.js +18 -16
- package/dist/esm/shared/prepareGlobalContextForPublicUsage.d.ts +7 -0
- package/dist/esm/shared/prepareGlobalContextForPublicUsage.js +8 -0
- package/dist/esm/shared/preparePageContextForPublicUsage.d.ts +13 -0
- package/dist/esm/shared/preparePageContextForPublicUsage.js +73 -0
- package/dist/esm/shared/route/abort.js +1 -1
- package/dist/esm/shared/route/executeGuardHook.d.ts +4 -3
- package/dist/esm/shared/route/executeGuardHook.js +4 -9
- package/dist/esm/shared/route/executeOnBeforeRouteHook.js +4 -3
- package/dist/esm/shared/route/index.js +2 -4
- package/dist/esm/shared/route/loadPageRoutes.d.ts +2 -1
- package/dist/esm/shared/route/loadPageRoutes.js +7 -1
- package/dist/esm/shared/route/resolveRouteFunction.d.ts +2 -2
- package/dist/esm/shared/route/resolveRouteFunction.js +14 -10
- package/dist/esm/shared/types.d.ts +13 -3
- package/dist/esm/shared/utils.d.ts +1 -0
- package/dist/esm/shared/utils.js +1 -0
- package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/utils/objectAssign.d.ts +1 -1
- package/dist/esm/utils/objectAssign.js +3 -3
- package/dist/esm/utils/objectDefineProperty.d.ts +0 -1
- package/dist/esm/utils/objectDefineProperty.js +1 -1
- package/package.json +2 -2
- package/dist/cjs/client/shared/getPageContextProxyForUser.js +0 -16
- package/dist/cjs/node/runtime/renderPage/executeHookServer.js +0 -11
- package/dist/cjs/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +0 -16
- package/dist/cjs/shared/hooks/executeHook.js +0 -108
- package/dist/cjs/shared/preparePageContextForUserConsumption.js +0 -34
- package/dist/cjs/utils/getPublicProxy.js +0 -27
- package/dist/esm/client/shared/getPageContextProxyForUser.d.ts +0 -2
- package/dist/esm/client/shared/getPageContextProxyForUser.js +0 -14
- package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.d.ts +0 -12
- package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.js +0 -44
- package/dist/esm/node/runtime/renderPage/executeHookServer.d.ts +0 -13
- package/dist/esm/node/runtime/renderPage/executeHookServer.js +0 -9
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +0 -24
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +0 -14
- package/dist/esm/shared/hooks/executeHook.d.ts +0 -34
- package/dist/esm/shared/hooks/executeHook.js +0 -106
- package/dist/esm/shared/preparePageContextForUserConsumption.d.ts +0 -5
- package/dist/esm/shared/preparePageContextForUserConsumption.js +0 -32
- package/dist/esm/utils/getPublicProxy.d.ts +0 -2
- package/dist/esm/utils/getPublicProxy.js +0 -25
|
@@ -3,12 +3,11 @@ export { getPageContextFromHooks_serialized };
|
|
|
3
3
|
export { getPageContextFromServerHooks };
|
|
4
4
|
export { getPageContextFromClientHooks };
|
|
5
5
|
export { setPageContextInitIsPassedToClient };
|
|
6
|
-
export {
|
|
6
|
+
export { execHookClient };
|
|
7
7
|
import { assert, assertUsage, hasProp, objectAssign, getProjectError, redirectHard, isObject, getGlobalObject } from './utils.js';
|
|
8
8
|
import { parse } from '@brillout/json-serializer/parse';
|
|
9
9
|
import { getPageContextSerializedInHtml } from '../shared/getJsonSerializedInHtml.js';
|
|
10
10
|
import { analyzePageServerSide } from '../../shared/getPageFiles/analyzePageServerSide.js';
|
|
11
|
-
import { preparePageContextForUserConsumptionClientSide } from '../shared/preparePageContextForUserConsumptionClientSide.js';
|
|
12
11
|
import { removeBuiltInOverrides } from './getPageContext/removeBuiltInOverrides.js';
|
|
13
12
|
import { getPageContextRequestUrl } from '../../shared/getPageContextRequestUrl.js';
|
|
14
13
|
import { getPageConfig } from '../../shared/page-configs/helpers.js';
|
|
@@ -18,7 +17,8 @@ import { executeGuardHook } from '../../shared/route/executeGuardHook.js';
|
|
|
18
17
|
import { AbortRender, isAbortPageContext } from '../../shared/route/abort.js';
|
|
19
18
|
import { pageContextInitIsPassedToClient } from '../../shared/misc/pageContextInitIsPassedToClient.js';
|
|
20
19
|
import { isServerSideError } from '../../shared/misc/isServerSideError.js';
|
|
21
|
-
import {
|
|
20
|
+
import { execHook } from '../../shared/hooks/execHook.js';
|
|
21
|
+
import { preparePageContextForPublicUsageClient } from './preparePageContextForPublicUsageClient.js';
|
|
22
22
|
const globalObject = getGlobalObject('client-routing-runtime/getPageContextFromHooks.ts', {});
|
|
23
23
|
// TO-DO/eventually: rename
|
|
24
24
|
function getPageContextFromHooks_serialized() {
|
|
@@ -78,7 +78,7 @@ async function getPageContextFromClientHooks(pageContext, isErrorPage) {
|
|
|
78
78
|
!pageContext._hasPageContextFromServer) {
|
|
79
79
|
// Should we really call the guard() hook on the client-side? Shouldn't we make the guard() hook a server-side
|
|
80
80
|
// only hook? Or maybe make its env configurable like data() and onBeforeRender()?
|
|
81
|
-
await executeGuardHook(pageContext, (pageContext) =>
|
|
81
|
+
await executeGuardHook(pageContext, (pageContext) => preparePageContextForPublicUsageClient(pageContext));
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
84
|
else {
|
|
@@ -92,13 +92,13 @@ async function getPageContextFromClientHooks(pageContext, isErrorPage) {
|
|
|
92
92
|
}
|
|
93
93
|
// Execute +onData
|
|
94
94
|
if (dataHookExists) {
|
|
95
|
-
await
|
|
95
|
+
await execHookClient('onData', pageContext);
|
|
96
96
|
}
|
|
97
97
|
const pageContextFromClientHooks = pageContext;
|
|
98
98
|
return pageContextFromClientHooks;
|
|
99
99
|
}
|
|
100
|
-
async function
|
|
101
|
-
return await
|
|
100
|
+
async function execHookClient(hookName, pageContext) {
|
|
101
|
+
return await execHook(hookName, pageContext, (p) => preparePageContextForPublicUsageClient(p));
|
|
102
102
|
}
|
|
103
103
|
async function executeDataLikeHook(hookName, pageContext) {
|
|
104
104
|
let pageContextFromHook;
|
|
@@ -111,24 +111,24 @@ async function executeDataLikeHook(hookName, pageContext) {
|
|
|
111
111
|
Object.assign(pageContext, pageContextFromHook);
|
|
112
112
|
}
|
|
113
113
|
async function executeDataHook(pageContext) {
|
|
114
|
-
const res = await
|
|
114
|
+
const res = await execHookClient('data', pageContext);
|
|
115
115
|
const hook = res[0]; // TO-DO/soon: support cumulative
|
|
116
116
|
if (!hook)
|
|
117
117
|
return;
|
|
118
|
-
const {
|
|
119
|
-
const pageContextAddendum = { data:
|
|
118
|
+
const { hookReturn } = hook;
|
|
119
|
+
const pageContextAddendum = { data: hookReturn };
|
|
120
120
|
return pageContextAddendum;
|
|
121
121
|
}
|
|
122
122
|
async function executeOnBeforeRenderHook(pageContext) {
|
|
123
|
-
const res = await
|
|
123
|
+
const res = await execHookClient('onBeforeRender', pageContext);
|
|
124
124
|
const hook = res[0]; // TO-DO/soon: support cumulative
|
|
125
125
|
if (!hook)
|
|
126
126
|
return;
|
|
127
|
-
const {
|
|
127
|
+
const { hookReturn, hookFilePath } = hook;
|
|
128
128
|
const pageContextFromHook = {};
|
|
129
|
-
assertOnBeforeRenderHookReturn(
|
|
130
|
-
// Note:
|
|
131
|
-
const pageContextFromOnBeforeRender =
|
|
129
|
+
assertOnBeforeRenderHookReturn(hookReturn, hookFilePath);
|
|
130
|
+
// Note: hookReturn looks like { pageContext: { ... } }
|
|
131
|
+
const pageContextFromOnBeforeRender = hookReturn?.pageContext;
|
|
132
132
|
if (pageContextFromOnBeforeRender) {
|
|
133
133
|
objectAssign(pageContextFromHook, pageContextFromOnBeforeRender);
|
|
134
134
|
}
|
|
@@ -5,6 +5,7 @@ type GlobalContextClient = GlobalContextSharedPublic & Pick<GlobalContextClientI
|
|
|
5
5
|
type GlobalContextClientInternal = Awaited<ReturnType<typeof getGlobalContextClientInternal>>;
|
|
6
6
|
declare const getGlobalContextClientInternal: () => Promise<{
|
|
7
7
|
isGlobalContext: true;
|
|
8
|
+
_isOriginalObject: true;
|
|
8
9
|
_virtualFileExports: unknown;
|
|
9
10
|
_pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
|
|
10
11
|
_pageConfigs: import("../../__internal/index.js").PageConfig[];
|
|
@@ -5,17 +5,12 @@ export { populatePageContextPrefetchCache };
|
|
|
5
5
|
export { addLinkPrefetchHandlers };
|
|
6
6
|
export { addLinkPrefetchHandlers_watch };
|
|
7
7
|
export { addLinkPrefetchHandlers_unwatch };
|
|
8
|
+
import { type PageContextCreated } from './createPageContextClientSide.js';
|
|
8
9
|
import { type PageContextFromServerHooks, getPageContextFromServerHooks } from './getPageContextFromHooks.js';
|
|
9
|
-
import type { PageConfigUserFriendlyOld
|
|
10
|
-
import { type PageConfigRuntime } from '../../shared/page-configs/PageConfig.js';
|
|
10
|
+
import type { PageConfigUserFriendlyOld } from '../../shared/getPageFiles.js';
|
|
11
11
|
type ResultPageContextFromServer = Awaited<ReturnType<typeof getPageContextFromServerHooks>>;
|
|
12
|
-
type PageContextForPrefetch = {
|
|
13
|
-
urlOriginal: string;
|
|
14
|
-
urlPathname: string;
|
|
12
|
+
type PageContextForPrefetch = PageContextCreated & {
|
|
15
13
|
pageId: string;
|
|
16
|
-
_urlRewrite: null;
|
|
17
|
-
_pageFilesAll: PageFile[];
|
|
18
|
-
_pageConfigs: PageConfigRuntime[];
|
|
19
14
|
};
|
|
20
15
|
declare function getPageContextPrefetched(pageContext: {
|
|
21
16
|
urlPathname: string;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { preparePageContextForPublicUsageClient };
|
|
2
|
+
export type { PageContextForPublicUsageClient };
|
|
3
|
+
import type { PageConfigUserFriendlyOld } from '../../shared/getPageFiles.js';
|
|
4
|
+
import type { PageContextInternalClient_ClientRouting } from '../../shared/types.js';
|
|
5
|
+
import type { PageContextPrepareMinimum } from '../../shared/preparePageContextForPublicUsage.js';
|
|
6
|
+
type PageContextForPublicUsageClient = PageContextPrepareMinimum & PageContextInternalClient_ClientRouting & PageConfigUserFriendlyOld & {
|
|
7
|
+
urlOriginal: string;
|
|
8
|
+
};
|
|
9
|
+
declare function preparePageContextForPublicUsageClient<PageContext extends PageContextForPublicUsageClient>(pageContext: PageContext): PageContext & {
|
|
10
|
+
Page: unknown;
|
|
11
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { preparePageContextForPublicUsageClient };
|
|
2
|
+
import { preparePageContextForPublicUsageClientShared } from '../shared/preparePageContextForPublicUsageClientShared.js';
|
|
3
|
+
function preparePageContextForPublicUsageClient(pageContext) {
|
|
4
|
+
return preparePageContextForPublicUsageClientShared(pageContext);
|
|
5
|
+
}
|
|
@@ -3,10 +3,17 @@ export { getRenderCount };
|
|
|
3
3
|
export { disableClientRouting };
|
|
4
4
|
export { firstRenderStartPromise };
|
|
5
5
|
export { getPageContextClient };
|
|
6
|
+
export type { PageContextBegin };
|
|
6
7
|
import { type PageContextFromRewrite } from '../../shared/route/abort.js';
|
|
7
8
|
import { type ScrollTarget } from './setScrollPosition.js';
|
|
9
|
+
import type { PageConfigUserFriendlyOld } from '../../shared/getPageFiles.js';
|
|
8
10
|
import type { PageContextClient } from '../../shared/types.js';
|
|
9
11
|
declare const firstRenderStartPromise: Promise<void>;
|
|
12
|
+
type PageContextRouted = {
|
|
13
|
+
pageId: string;
|
|
14
|
+
routeParams: Record<string, string>;
|
|
15
|
+
};
|
|
16
|
+
type PageContextBegin = Awaited<ReturnType<typeof getPageContextBegin>>;
|
|
10
17
|
type RenderArgs = {
|
|
11
18
|
scrollTarget: ScrollTarget;
|
|
12
19
|
isBackwardNavigation: boolean | null;
|
|
@@ -19,6 +26,134 @@ type RenderArgs = {
|
|
|
19
26
|
pageContextInitClient?: Record<string, unknown>;
|
|
20
27
|
};
|
|
21
28
|
declare function renderPageClientSide(renderArgs: RenderArgs): Promise<void>;
|
|
29
|
+
declare function getPageContextBegin(isForErrorPage: boolean, { urlOriginal, isBackwardNavigation, pageContextsFromRewrite, isClientSideNavigation, pageContextInitClient, isFirstRender }: {
|
|
30
|
+
urlOriginal: string;
|
|
31
|
+
isBackwardNavigation: boolean | null;
|
|
32
|
+
pageContextsFromRewrite: PageContextFromRewrite[];
|
|
33
|
+
isClientSideNavigation: boolean;
|
|
34
|
+
pageContextInitClient: Record<string, unknown> | undefined;
|
|
35
|
+
isFirstRender: boolean;
|
|
36
|
+
}): Promise<{
|
|
37
|
+
_isOriginalObject: true;
|
|
38
|
+
isPageContext: true;
|
|
39
|
+
} & {
|
|
40
|
+
isClientSide: true;
|
|
41
|
+
isPrerendering: false;
|
|
42
|
+
urlOriginal: string;
|
|
43
|
+
_globalContext: {
|
|
44
|
+
isGlobalContext: true;
|
|
45
|
+
_isOriginalObject: true;
|
|
46
|
+
_virtualFileExports: unknown;
|
|
47
|
+
_pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
|
|
48
|
+
_pageConfigs: import("../../__internal/index.js").PageConfig[];
|
|
49
|
+
_pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
50
|
+
_allPageIds: string[];
|
|
51
|
+
_userFriendlyConfigsGlobal: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly;
|
|
52
|
+
config: import("../../types/index.js").ConfigResolved;
|
|
53
|
+
pages: {
|
|
54
|
+
[k: string]: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly & ({
|
|
55
|
+
route: import("../../shared/page-configs/Config.js").Route;
|
|
56
|
+
isErrorPage?: undefined;
|
|
57
|
+
} | {
|
|
58
|
+
route?: undefined;
|
|
59
|
+
isErrorPage: true;
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
} & {
|
|
63
|
+
isClientSide: true;
|
|
64
|
+
} & {
|
|
65
|
+
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
|
|
66
|
+
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
67
|
+
};
|
|
68
|
+
_pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
|
|
69
|
+
_pageConfigs: import("../../__internal/index.js").PageConfig[];
|
|
70
|
+
_pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
71
|
+
_allPageIds: string[];
|
|
72
|
+
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
|
|
73
|
+
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
74
|
+
_urlHandler: null;
|
|
75
|
+
_urlRewrite: null | string;
|
|
76
|
+
_baseServer: string;
|
|
77
|
+
} & {
|
|
78
|
+
urlParsed: import("./utils.js").UrlPublic;
|
|
79
|
+
urlPathname: string;
|
|
80
|
+
url: string;
|
|
81
|
+
} & import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly & {
|
|
82
|
+
isBackwardNavigation: boolean | null;
|
|
83
|
+
isClientSideNavigation: boolean;
|
|
84
|
+
isHydration: boolean;
|
|
85
|
+
previousPageContext: ({
|
|
86
|
+
pageId: string;
|
|
87
|
+
} & PageConfigUserFriendlyOld & PageContextRouted & import("../../shared/preparePageContextForPublicUsage.js").PageContextPrepareMinimum & import("../../shared/types.js").PageContextInternalClient & Omit<Partial<{
|
|
88
|
+
isPageContext: true;
|
|
89
|
+
Page: import("../../types/index.js").Config["Page"];
|
|
90
|
+
routeParams: Record<string, string>;
|
|
91
|
+
data: unknown;
|
|
92
|
+
config: import("../../shared/page-configs/Config/PageContextConfig.js").PageContextConfig;
|
|
93
|
+
configEntries: import("../../types/index.js").ConfigEntries;
|
|
94
|
+
exports: Record<string, unknown>;
|
|
95
|
+
exportsAll: import("../../shared/getPageFiles.js").ExportsAll;
|
|
96
|
+
urlOriginal: string;
|
|
97
|
+
headers: Record<string, string> | null;
|
|
98
|
+
headersOriginal?: unknown;
|
|
99
|
+
is404: boolean | null;
|
|
100
|
+
isClientSideNavigation: boolean;
|
|
101
|
+
abortReason?: unknown;
|
|
102
|
+
abortStatusCode?: import("../../shared/route/abort.js").AbortStatusCode;
|
|
103
|
+
errorWhileRendering?: unknown;
|
|
104
|
+
pageId: string | null;
|
|
105
|
+
from: import("../../shared/page-configs/getUserFriendlyConfigs.js").From;
|
|
106
|
+
source: import("../../shared/page-configs/getUserFriendlyConfigs.js").Source;
|
|
107
|
+
sources: import("../../shared/page-configs/getUserFriendlyConfigs.js").Sources;
|
|
108
|
+
url: string;
|
|
109
|
+
pageExports: Record<string, unknown>;
|
|
110
|
+
isBaseMissing?: true;
|
|
111
|
+
}> & Pick<{
|
|
112
|
+
isPageContext: true;
|
|
113
|
+
Page: import("../../types/index.js").Config["Page"];
|
|
114
|
+
routeParams: Record<string, string>;
|
|
115
|
+
data: unknown;
|
|
116
|
+
config: import("../../shared/page-configs/Config/PageContextConfig.js").PageContextConfig;
|
|
117
|
+
configEntries: import("../../types/index.js").ConfigEntries;
|
|
118
|
+
exports: Record<string, unknown>;
|
|
119
|
+
exportsAll: import("../../shared/getPageFiles.js").ExportsAll;
|
|
120
|
+
urlOriginal: string;
|
|
121
|
+
headers: Record<string, string> | null;
|
|
122
|
+
headersOriginal?: unknown;
|
|
123
|
+
is404: boolean | null;
|
|
124
|
+
isClientSideNavigation: boolean;
|
|
125
|
+
abortReason?: unknown;
|
|
126
|
+
abortStatusCode?: import("../../shared/route/abort.js").AbortStatusCode;
|
|
127
|
+
errorWhileRendering?: unknown;
|
|
128
|
+
pageId: string | null;
|
|
129
|
+
from: import("../../shared/page-configs/getUserFriendlyConfigs.js").From;
|
|
130
|
+
source: import("../../shared/page-configs/getUserFriendlyConfigs.js").Source;
|
|
131
|
+
sources: import("../../shared/page-configs/getUserFriendlyConfigs.js").Sources;
|
|
132
|
+
url: string;
|
|
133
|
+
pageExports: Record<string, unknown>;
|
|
134
|
+
isBaseMissing?: true;
|
|
135
|
+
}, "exports" | "pageId" | "Page" | "data" | "config" | "pageExports" | "routeParams" | "configEntries" | "exportsAll" | "abortReason" | "source" | "sources" | "from"> & {
|
|
136
|
+
isClientSide: true;
|
|
137
|
+
isPrerendering: false;
|
|
138
|
+
} & {
|
|
139
|
+
isHydration: boolean;
|
|
140
|
+
isBackwardNavigation: boolean | null;
|
|
141
|
+
previousPageContext: PageContextClient<unknown> | null;
|
|
142
|
+
globalContext: import("./globalContext.js").GlobalContextClient;
|
|
143
|
+
} & {
|
|
144
|
+
urlOriginal: string;
|
|
145
|
+
} & {
|
|
146
|
+
urlParsed: import("./utils.js").UrlPublic;
|
|
147
|
+
urlPathname: string;
|
|
148
|
+
url: string;
|
|
149
|
+
}, ("globalContext" | "Page" | "data") | "previousPageContext"> & {
|
|
150
|
+
previousPageContext: {
|
|
151
|
+
pageId: string;
|
|
152
|
+
} | null;
|
|
153
|
+
} & {
|
|
154
|
+
urlOriginal: string;
|
|
155
|
+
}) | null;
|
|
156
|
+
}>;
|
|
22
157
|
declare global {
|
|
23
158
|
var _vike: {
|
|
24
159
|
fullyRenderedUrl?: string;
|
|
@@ -4,12 +4,11 @@ export { disableClientRouting };
|
|
|
4
4
|
export { firstRenderStartPromise };
|
|
5
5
|
export { getPageContextClient };
|
|
6
6
|
import { assert, isSameErrorMessage, objectAssign, redirectHard, getGlobalObject, hasProp, augmentType, genPromise, isCallable, catchInfiniteLoop } from './utils.js';
|
|
7
|
-
import { getPageContextFromClientHooks, getPageContextFromServerHooks, getPageContextFromHooks_isHydration, getPageContextFromHooks_serialized, setPageContextInitIsPassedToClient,
|
|
7
|
+
import { getPageContextFromClientHooks, getPageContextFromServerHooks, getPageContextFromHooks_isHydration, getPageContextFromHooks_serialized, setPageContextInitIsPassedToClient, execHookClient } from './getPageContextFromHooks.js';
|
|
8
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';
|
|
12
|
-
import { getHookFromPageContext } from '../../shared/hooks/getHook.js';
|
|
13
12
|
import { isErrorFetchingStaticAssets, loadPageConfigsLazyClientSide } from '../shared/loadPageConfigsLazyClientSide.js';
|
|
14
13
|
import { pushHistoryState } from './history.js';
|
|
15
14
|
import { assertNoInfiniteAbortLoop, getPageContextFromAllRewrites, isAbortError, logAbortErrorHandled } from '../../shared/route/abort.js';
|
|
@@ -21,7 +20,10 @@ import { getErrorPageId } from '../../shared/error-page.js';
|
|
|
21
20
|
import { setPageContextCurrent } from './getPageContextCurrent.js';
|
|
22
21
|
import { getRouteStringParameterList } from '../../shared/route/resolveRouteString.js';
|
|
23
22
|
import { getCurrentUrl } from '../shared/getCurrentUrl.js';
|
|
24
|
-
import {
|
|
23
|
+
import { execHooksErrorHandling, execHookErrorHandling } from '../../shared/hooks/execHook.js';
|
|
24
|
+
import { preparePageContextForPublicUsageClient } from './preparePageContextForPublicUsageClient.js';
|
|
25
|
+
import { getHookFromPageContextNew } from '../../shared/hooks/getHook.js';
|
|
26
|
+
import { preparePageContextForPublicUsageClientMinimal } from '../shared/preparePageContextForPublicUsageClientShared.js';
|
|
25
27
|
const globalObject = getGlobalObject('client-routing-runtime/renderPageClientSide.ts', (() => {
|
|
26
28
|
const { promise: firstRenderStartPromise, resolve: firstRenderStartPromiseResolve } = genPromise();
|
|
27
29
|
return {
|
|
@@ -39,6 +41,14 @@ async function renderPageClientSide(renderArgs) {
|
|
|
39
41
|
addLinkPrefetchHandlers_unwatch();
|
|
40
42
|
const { isRenderOutdated, setHydrationCanBeAborted, isFirstRender } = getIsRenderOutdated();
|
|
41
43
|
assertNoInfiniteAbortLoop(pageContextsFromRewrite.length, redirectCount);
|
|
44
|
+
const pageContextBeginArgs = {
|
|
45
|
+
urlOriginal,
|
|
46
|
+
isBackwardNavigation,
|
|
47
|
+
pageContextsFromRewrite,
|
|
48
|
+
isClientSideNavigation,
|
|
49
|
+
pageContextInitClient,
|
|
50
|
+
isFirstRender
|
|
51
|
+
};
|
|
42
52
|
if (globalObject.clientRoutingIsDisabled) {
|
|
43
53
|
redirectHard(urlOriginal);
|
|
44
54
|
return;
|
|
@@ -52,7 +62,7 @@ async function renderPageClientSide(renderArgs) {
|
|
|
52
62
|
const onError = async (err) => {
|
|
53
63
|
await renderErrorPage({ err });
|
|
54
64
|
};
|
|
55
|
-
const pageContext = await getPageContextBegin(false);
|
|
65
|
+
const pageContext = await getPageContextBegin(false, pageContextBeginArgs);
|
|
56
66
|
if (isRenderOutdated())
|
|
57
67
|
return;
|
|
58
68
|
// onPageTransitionStart()
|
|
@@ -62,20 +72,14 @@ async function renderPageClientSide(renderArgs) {
|
|
|
62
72
|
// https://github.com/vikejs/vike/issues/1560
|
|
63
73
|
if (!globalObject.isTransitioning) {
|
|
64
74
|
globalObject.isTransitioning = true;
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
await executeHook(() => hookFn(pageContext), hook, pageContext);
|
|
71
|
-
}
|
|
72
|
-
catch (err) {
|
|
73
|
-
await onError(err);
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
if (isRenderOutdated())
|
|
77
|
-
return;
|
|
75
|
+
const hooks = getHookFromPageContextNew('onPageTransitionStart', previousPageContext);
|
|
76
|
+
const res = await execHooksErrorHandling(hooks, pageContext, preparePageContextForPublicUsageClientMinimal);
|
|
77
|
+
if ('err' in res) {
|
|
78
|
+
await onError(res.err);
|
|
79
|
+
return;
|
|
78
80
|
}
|
|
81
|
+
if (isRenderOutdated())
|
|
82
|
+
return;
|
|
79
83
|
}
|
|
80
84
|
}
|
|
81
85
|
// Route
|
|
@@ -201,7 +205,7 @@ async function renderPageClientSide(renderArgs) {
|
|
|
201
205
|
objectAssign(pageContext, pageContextFromServerHooks);
|
|
202
206
|
// Execute +onData
|
|
203
207
|
try {
|
|
204
|
-
await
|
|
208
|
+
await execHookClient('onData', pageContext);
|
|
205
209
|
}
|
|
206
210
|
catch (err) {
|
|
207
211
|
await onError(err);
|
|
@@ -224,33 +228,6 @@ async function renderPageClientSide(renderArgs) {
|
|
|
224
228
|
await renderPageView(pageContext);
|
|
225
229
|
}
|
|
226
230
|
}
|
|
227
|
-
async function getPageContextBegin(isForErrorPage) {
|
|
228
|
-
const pageContext = await createPageContextClientSide(urlOriginal);
|
|
229
|
-
objectAssign(pageContext, {
|
|
230
|
-
isBackwardNavigation,
|
|
231
|
-
isClientSideNavigation,
|
|
232
|
-
isHydration: isFirstRender && !isForErrorPage,
|
|
233
|
-
previousPageContext,
|
|
234
|
-
...pageContextInitClient
|
|
235
|
-
});
|
|
236
|
-
// TODO/next-major-release: remove
|
|
237
|
-
Object.defineProperty(pageContext, '_previousPageContext', {
|
|
238
|
-
get() {
|
|
239
|
-
assertWarning(false, 'pageContext._previousPageContext has been renamed pageContext.previousPageContext', {
|
|
240
|
-
showStackTrace: true,
|
|
241
|
-
onlyOnce: true
|
|
242
|
-
});
|
|
243
|
-
return previousPageContext;
|
|
244
|
-
},
|
|
245
|
-
enumerable: false
|
|
246
|
-
});
|
|
247
|
-
{
|
|
248
|
-
const pageContextFromAllRewrites = getPageContextFromAllRewrites(pageContextsFromRewrite);
|
|
249
|
-
assert(!('urlOriginal' in pageContextFromAllRewrites));
|
|
250
|
-
objectAssign(pageContext, pageContextFromAllRewrites);
|
|
251
|
-
}
|
|
252
|
-
return pageContext;
|
|
253
|
-
}
|
|
254
231
|
async function renderErrorPage(args) {
|
|
255
232
|
const onError = (err) => {
|
|
256
233
|
if (!isSameErrorMessage(err, args.err)) {
|
|
@@ -276,9 +253,10 @@ async function renderPageClientSide(renderArgs) {
|
|
|
276
253
|
// We handle the abort error down below.
|
|
277
254
|
}
|
|
278
255
|
}
|
|
279
|
-
const pageContext = await getPageContextBegin(true);
|
|
256
|
+
const pageContext = await getPageContextBegin(true, pageContextBeginArgs);
|
|
280
257
|
if (isRenderOutdated())
|
|
281
258
|
return;
|
|
259
|
+
objectAssign(pageContext, { routeParams: {} });
|
|
282
260
|
if (args.is404)
|
|
283
261
|
objectAssign(pageContext, { is404: true });
|
|
284
262
|
if (args.pageContextError)
|
|
@@ -388,7 +366,6 @@ async function renderPageClientSide(renderArgs) {
|
|
|
388
366
|
if (isRenderOutdated())
|
|
389
367
|
return;
|
|
390
368
|
augmentType(pageContext, pageContextFromClientHooks);
|
|
391
|
-
objectAssign(pageContext, { routeParams: {} });
|
|
392
369
|
await renderPageView(pageContext, args);
|
|
393
370
|
}
|
|
394
371
|
async function renderPageView(pageContext, isErrorPage) {
|
|
@@ -416,7 +393,7 @@ async function renderPageClientSide(renderArgs) {
|
|
|
416
393
|
const onRenderClientPromise = (async () => {
|
|
417
394
|
let onRenderClientError;
|
|
418
395
|
try {
|
|
419
|
-
await executeOnRenderClientHook(pageContext,
|
|
396
|
+
await executeOnRenderClientHook(pageContext, preparePageContextForPublicUsageClient);
|
|
420
397
|
}
|
|
421
398
|
catch (err) {
|
|
422
399
|
onRenderClientError = err;
|
|
@@ -438,20 +415,14 @@ async function renderPageClientSide(renderArgs) {
|
|
|
438
415
|
*/
|
|
439
416
|
// onHydrationEnd()
|
|
440
417
|
if (isFirstRender && !onRenderClientError) {
|
|
441
|
-
const
|
|
442
|
-
if (
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
await executeHook(() => hookFn(pageContext), hook, pageContext);
|
|
446
|
-
}
|
|
447
|
-
catch (err) {
|
|
448
|
-
await onError(err);
|
|
449
|
-
if (!isErrorPage)
|
|
450
|
-
return;
|
|
451
|
-
}
|
|
452
|
-
if (isRenderOutdated(true))
|
|
418
|
+
const res = await execHookErrorHandling('onHydrationEnd', pageContext, preparePageContextForPublicUsageClient);
|
|
419
|
+
if ('err' in res) {
|
|
420
|
+
await onError(res.err);
|
|
421
|
+
if (!isErrorPage)
|
|
453
422
|
return;
|
|
454
423
|
}
|
|
424
|
+
if (isRenderOutdated(true))
|
|
425
|
+
return;
|
|
455
426
|
}
|
|
456
427
|
// We purposely abort *after* onHydrationEnd() is called (see comment above).
|
|
457
428
|
if (isRenderOutdated(true))
|
|
@@ -460,20 +431,15 @@ async function renderPageClientSide(renderArgs) {
|
|
|
460
431
|
if (globalObject.isTransitioning) {
|
|
461
432
|
globalObject.isTransitioning = undefined;
|
|
462
433
|
assert(previousPageContext);
|
|
463
|
-
const
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
}
|
|
469
|
-
catch (err) {
|
|
470
|
-
await onError(err);
|
|
471
|
-
if (!isErrorPage)
|
|
472
|
-
return;
|
|
473
|
-
}
|
|
474
|
-
if (isRenderOutdated(true))
|
|
434
|
+
const hooks = getHookFromPageContextNew('onPageTransitionEnd', previousPageContext);
|
|
435
|
+
const res = await execHooksErrorHandling(hooks, pageContext, preparePageContextForPublicUsageClient);
|
|
436
|
+
if ('err' in res) {
|
|
437
|
+
await onError(res.err);
|
|
438
|
+
if (!isErrorPage)
|
|
475
439
|
return;
|
|
476
440
|
}
|
|
441
|
+
if (isRenderOutdated(true))
|
|
442
|
+
return;
|
|
477
443
|
}
|
|
478
444
|
if (!scrollTarget && previousPageContext) {
|
|
479
445
|
const keepScrollPositionPrev = getKeepScrollPositionSetting(previousPageContext);
|
|
@@ -496,6 +462,34 @@ async function renderPageClientSide(renderArgs) {
|
|
|
496
462
|
stampFinished(urlOriginal);
|
|
497
463
|
}
|
|
498
464
|
}
|
|
465
|
+
async function getPageContextBegin(isForErrorPage, { urlOriginal, isBackwardNavigation, pageContextsFromRewrite, isClientSideNavigation, pageContextInitClient, isFirstRender }) {
|
|
466
|
+
const previousPageContext = globalObject.previousPageContext ?? null;
|
|
467
|
+
const pageContext = await createPageContextClientSide(urlOriginal);
|
|
468
|
+
objectAssign(pageContext, {
|
|
469
|
+
isBackwardNavigation,
|
|
470
|
+
isClientSideNavigation,
|
|
471
|
+
isHydration: isFirstRender && !isForErrorPage,
|
|
472
|
+
previousPageContext,
|
|
473
|
+
...pageContextInitClient
|
|
474
|
+
});
|
|
475
|
+
// TODO/next-major-release: remove
|
|
476
|
+
Object.defineProperty(pageContext, '_previousPageContext', {
|
|
477
|
+
get() {
|
|
478
|
+
assertWarning(false, 'pageContext._previousPageContext has been renamed pageContext.previousPageContext', {
|
|
479
|
+
showStackTrace: true,
|
|
480
|
+
onlyOnce: true
|
|
481
|
+
});
|
|
482
|
+
return previousPageContext;
|
|
483
|
+
},
|
|
484
|
+
enumerable: false
|
|
485
|
+
});
|
|
486
|
+
{
|
|
487
|
+
const pageContextFromAllRewrites = getPageContextFromAllRewrites(pageContextsFromRewrite);
|
|
488
|
+
assert(!('urlOriginal' in pageContextFromAllRewrites));
|
|
489
|
+
objectAssign(pageContext, pageContextFromAllRewrites);
|
|
490
|
+
}
|
|
491
|
+
return pageContext;
|
|
492
|
+
}
|
|
499
493
|
// For Vike tests (but also potentially for Vike users)
|
|
500
494
|
// https://github.com/vikejs/vike/blob/ffbc5cf16407bcc075f414447e50d997c87c0c94/test/playground/pages/nested-layout/e2e-test.ts#L59
|
|
501
495
|
function stampFinished(urlOriginal) {
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
export { createPageContextClientSide };
|
|
2
2
|
declare function createPageContextClientSide(): Promise<{
|
|
3
|
-
|
|
3
|
+
_isOriginalObject: true;
|
|
4
|
+
isPageContext: true;
|
|
5
|
+
} & {
|
|
6
|
+
isClientSide: true;
|
|
7
|
+
isPrerendering: false;
|
|
8
|
+
isHydration: true;
|
|
9
|
+
_globalContext: {
|
|
4
10
|
isGlobalContext: true;
|
|
11
|
+
_isOriginalObject: true;
|
|
5
12
|
_virtualFileExports: unknown;
|
|
6
13
|
_pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
|
|
7
14
|
_pageConfigs: import("../../__internal/index.js").PageConfig[];
|
|
@@ -25,16 +32,11 @@ declare function createPageContextClientSide(): Promise<{
|
|
|
25
32
|
_pageConfigs: import("../../__internal/index.js").PageConfig[];
|
|
26
33
|
_pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
27
34
|
_allPageIds: string[];
|
|
28
|
-
isPrerendering: boolean;
|
|
29
|
-
isClientSide: boolean;
|
|
30
|
-
isHydration: true;
|
|
31
35
|
isBackwardNavigation: null;
|
|
32
36
|
_hasPageContextFromServer: true;
|
|
33
37
|
} & {
|
|
34
38
|
pageId: string;
|
|
35
39
|
routeParams: Record<string, string>;
|
|
36
|
-
} & {
|
|
37
|
-
isPageContext: true;
|
|
38
40
|
} & import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly & import("../../shared/getPageFiles.js").PageConfigUserFriendlyOld & {
|
|
39
41
|
_pageFilesLoaded: import("../../shared/getPageFiles.js").PageFile[];
|
|
40
42
|
}>;
|
|
@@ -3,26 +3,24 @@ import { assertUsage, augmentType, objectAssign } from './utils.js';
|
|
|
3
3
|
import { getPageContextSerializedInHtml } from '../shared/getJsonSerializedInHtml.js';
|
|
4
4
|
import { loadPageConfigsLazyClientSide } from '../shared/loadPageConfigsLazyClientSide.js';
|
|
5
5
|
import { getCurrentUrl } from '../shared/getCurrentUrl.js';
|
|
6
|
-
import { createPageContextShared } from '../../shared/createPageContextShared.js';
|
|
6
|
+
import { createPageContextObject, createPageContextShared } from '../../shared/createPageContextShared.js';
|
|
7
7
|
import { getGlobalContextClientInternal } from './globalContext.js';
|
|
8
8
|
const urlFirst = getCurrentUrl({ withoutHash: true });
|
|
9
9
|
async function createPageContextClientSide() {
|
|
10
10
|
const globalContext = await getGlobalContextClientInternal();
|
|
11
|
-
const pageContextCreated =
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
const pageContextCreated = createPageContextObject();
|
|
12
|
+
objectAssign(pageContextCreated, {
|
|
13
|
+
isClientSide: true,
|
|
14
|
+
isPrerendering: false,
|
|
15
|
+
isHydration: true,
|
|
16
|
+
_globalContext: globalContext,
|
|
16
17
|
_pageFilesAll: globalContext._pageFilesAll,
|
|
17
18
|
_pageConfigs: globalContext._pageConfigs,
|
|
18
19
|
_pageConfigGlobal: globalContext._pageConfigGlobal,
|
|
19
20
|
_allPageIds: globalContext._allPageIds,
|
|
20
|
-
isPrerendering: false,
|
|
21
|
-
isClientSide: true,
|
|
22
|
-
isHydration: true,
|
|
23
21
|
isBackwardNavigation: null,
|
|
24
22
|
_hasPageContextFromServer: true
|
|
25
|
-
};
|
|
23
|
+
});
|
|
26
24
|
objectAssign(pageContextCreated, getPageContextSerializedInHtml());
|
|
27
25
|
// Sets pageContext.config to global configs
|
|
28
26
|
const pageContextAugmented = await createPageContextShared(pageContextCreated, globalContext._pageConfigGlobal, globalContext._userFriendlyConfigsGlobal);
|
|
@@ -2,10 +2,10 @@ import { assertServerRouting } from '../../utils/assertRoutingType.js';
|
|
|
2
2
|
assertServerRouting();
|
|
3
3
|
import { createPageContextClientSide } from './createPageContextClientSide.js';
|
|
4
4
|
import { executeOnRenderClientHook } from '../shared/executeOnRenderClientHook.js';
|
|
5
|
-
import { getHookFromPageContext } from '../../shared/hooks/getHook.js';
|
|
6
5
|
import { assertSingleInstance_onClientEntryServerRouting } from './utils.js';
|
|
7
6
|
import { removeFoucBuster } from '../shared/removeFoucBuster.js';
|
|
8
|
-
import {
|
|
7
|
+
import { execHook } from '../../shared/hooks/execHook.js';
|
|
8
|
+
import { preparePageContextForPublicUsageClient } from './preparePageContextForPublicUsageClient.js';
|
|
9
9
|
// @ts-ignore Since dist/cjs/client/ is never used, we can ignore this error.
|
|
10
10
|
const isProd = import.meta.env.PROD;
|
|
11
11
|
assertSingleInstance_onClientEntryServerRouting(isProd);
|
|
@@ -14,8 +14,6 @@ if (import.meta.env.DEV)
|
|
|
14
14
|
hydrate();
|
|
15
15
|
async function hydrate() {
|
|
16
16
|
const pageContext = await createPageContextClientSide();
|
|
17
|
-
await executeOnRenderClientHook(pageContext,
|
|
18
|
-
|
|
19
|
-
if (hook)
|
|
20
|
-
await executeHook(() => hook.hookFn(pageContext), hook, pageContext);
|
|
17
|
+
await executeOnRenderClientHook(pageContext, preparePageContextForPublicUsageClient);
|
|
18
|
+
await execHook('onHydrationEnd', pageContext, preparePageContextForPublicUsageClient);
|
|
21
19
|
}
|
|
@@ -5,6 +5,7 @@ type GlobalContextClientWithServerRouting = GlobalContextSharedPublic & Pick<Glo
|
|
|
5
5
|
type GlobalContextClientInternal = Awaited<ReturnType<typeof getGlobalContextClientInternal>>;
|
|
6
6
|
declare const getGlobalContextClientInternal: () => Promise<{
|
|
7
7
|
isGlobalContext: true;
|
|
8
|
+
_isOriginalObject: true;
|
|
8
9
|
_virtualFileExports: unknown;
|
|
9
10
|
_pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
|
|
10
11
|
_pageConfigs: import("../../__internal/index.js").PageConfig[];
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { preparePageContextForPublicUsageClient };
|
|
2
|
+
export type { PageContextForPublicUsageClient };
|
|
3
|
+
import type { PageConfigUserFriendlyOld } from '../../shared/getPageFiles.js';
|
|
4
|
+
import type { PageContextInternalClient_ServerRouting } from '../../shared/types.js';
|
|
5
|
+
import type { PageContextPrepareMinimum } from '../../shared/preparePageContextForPublicUsage.js';
|
|
6
|
+
type PageContextForPublicUsageClient = PageContextPrepareMinimum & PageContextInternalClient_ServerRouting & PageConfigUserFriendlyOld;
|
|
7
|
+
declare function preparePageContextForPublicUsageClient<PageContext extends PageContextForPublicUsageClient>(pageContext: PageContext): PageContext & {
|
|
8
|
+
Page: unknown;
|
|
9
|
+
};
|