vike 0.4.229-commit-7056ef0 → 0.4.229-commit-5da80bf
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} +15 -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 +7 -5
- 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 +14 -3
- package/dist/cjs/shared/getPageContext.js +3 -3
- package/dist/cjs/shared/getPageContextUrlComputed.js +2 -36
- package/dist/cjs/shared/getProxyForPublicUsage.js +106 -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 +2 -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 +11 -0
- package/dist/esm/client/shared/preparePageContextForPublicUsageClientShared.js +40 -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 +7 -5
- 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 +15 -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 +12 -0
- package/dist/esm/shared/getProxyForPublicUsage.js +104 -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 +12 -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 +2 -0
- package/dist/esm/shared/utils.js +2 -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,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
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { preparePageContextForPublicUsageClient };
|
|
2
|
+
import { preparePageContextForPublicUsageClientShared } from '../shared/preparePageContextForPublicUsageClientShared.js';
|
|
3
|
+
function preparePageContextForPublicUsageClient(pageContext) {
|
|
4
|
+
return preparePageContextForPublicUsageClientShared(pageContext);
|
|
5
|
+
}
|
|
@@ -15,3 +15,4 @@ 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
17
|
export * from '../../utils/augmentType.js';
|
|
18
|
+
export * from '../../utils/changeEnumerable.js';
|
|
@@ -4,6 +4,7 @@ export { createGetGlobalContextClient };
|
|
|
4
4
|
import { type GlobalContextShared } from '../../shared/createGlobalContextShared.js';
|
|
5
5
|
declare function createGetGlobalContextClient<GlobalContextAddendum extends object>(virtualFileExports: unknown, isClientRouting: boolean, addGlobalContext?: (globalContext: GlobalContextShared) => Promise<GlobalContextAddendum>): () => Promise<{
|
|
6
6
|
isGlobalContext: true;
|
|
7
|
+
_isOriginalObject: true;
|
|
7
8
|
_virtualFileExports: unknown;
|
|
8
9
|
_pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
|
|
9
10
|
_pageConfigs: import("../../__internal/index.js").PageConfig[];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { executeOnRenderClientHook };
|
|
2
2
|
export type { PageContextBeforeRenderClient };
|
|
3
3
|
import type { PageFile, PageConfigUserFriendlyOld } from '../../shared/getPageFiles.js';
|
|
4
|
-
import {
|
|
4
|
+
import type { PageContextForPublicUsageClientShared } from './preparePageContextForPublicUsageClientShared.js';
|
|
5
5
|
import type { PageConfigRuntime } from '../../shared/page-configs/PageConfig.js';
|
|
6
6
|
type PageContextBeforeRenderClient = {
|
|
7
7
|
_pageFilesLoaded: PageFile[];
|
|
@@ -9,5 +9,5 @@ type PageContextBeforeRenderClient = {
|
|
|
9
9
|
urlPathname?: string;
|
|
10
10
|
pageId: string;
|
|
11
11
|
_pageConfigs: PageConfigRuntime[];
|
|
12
|
-
} & PageConfigUserFriendlyOld &
|
|
13
|
-
declare function executeOnRenderClientHook<
|
|
12
|
+
} & PageConfigUserFriendlyOld & PageContextForPublicUsageClientShared;
|
|
13
|
+
declare function executeOnRenderClientHook<PageContext extends PageContextBeforeRenderClient>(pageContext: PageContext, prepareForPublicUsage: (pageConfig: PageContext) => PageContext): Promise<void>;
|
|
@@ -1,22 +1,17 @@
|
|
|
1
1
|
export { executeOnRenderClientHook };
|
|
2
2
|
import { assert, assertUsage } from '../server-routing-runtime/utils.js';
|
|
3
3
|
import { getHookFromPageContext } from '../../shared/hooks/getHook.js';
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
async function executeOnRenderClientHook(pageContext, isClientRouting) {
|
|
7
|
-
const pageContextForUserConsumption = preparePageContextForUserConsumptionClientSide(pageContext, isClientRouting);
|
|
4
|
+
import { execHookSingle } from '../../shared/hooks/execHook.js';
|
|
5
|
+
async function executeOnRenderClientHook(pageContext, prepareForPublicUsage) {
|
|
8
6
|
let hook = null;
|
|
9
|
-
let hookName;
|
|
10
7
|
{
|
|
11
8
|
const renderHook = getHookFromPageContext(pageContext, 'render');
|
|
12
9
|
hook = renderHook;
|
|
13
|
-
hookName = 'render';
|
|
14
10
|
}
|
|
15
11
|
{
|
|
16
12
|
const renderHook = getHookFromPageContext(pageContext, 'onRenderClient');
|
|
17
13
|
if (renderHook) {
|
|
18
14
|
hook = renderHook;
|
|
19
|
-
hookName = 'onRenderClient';
|
|
20
15
|
}
|
|
21
16
|
}
|
|
22
17
|
if (!hook) {
|
|
@@ -42,16 +37,12 @@ async function executeOnRenderClientHook(pageContext, isClientRouting) {
|
|
|
42
37
|
assertUsage(false, errMsg);
|
|
43
38
|
}
|
|
44
39
|
}
|
|
45
|
-
assert(hook);
|
|
46
|
-
const renderHook = hook.hookFn;
|
|
47
|
-
assert(hookName);
|
|
48
40
|
// We don't use a try-catch wrapper because rendering errors are usually handled by the UI framework. (E.g. React's Error Boundaries.)
|
|
49
|
-
|
|
50
|
-
assertUsage(hookResult === undefined, `The ${hookName}() hook defined by ${hook.hookFilePath} isn't allowed to return a value`);
|
|
41
|
+
await execHookSingle(hook, pageContext, prepareForPublicUsage);
|
|
51
42
|
}
|
|
52
43
|
function getUrlToShowToUser(pageContext) {
|
|
53
44
|
let url;
|
|
54
|
-
// try/catch to avoid passToClient assertUsage() (although: this may not be needed anymore, since we're now accessing pageContext and not
|
|
45
|
+
// try/catch to avoid passToClient assertUsage() (although: this may not be needed anymore, since we're now accessing pageContext and not pageContextForPublicUsage)
|
|
55
46
|
try {
|
|
56
47
|
url =
|
|
57
48
|
// Client Routing
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { preparePageContextForPublicUsageClientShared };
|
|
2
|
+
export { preparePageContextForPublicUsageClientMinimal };
|
|
3
|
+
export type { PageContextForPublicUsageClientShared };
|
|
4
|
+
import type { PageConfigUserFriendlyOld } from '../../shared/getPageFiles.js';
|
|
5
|
+
import { type PageContextPrepareMinimum } from '../../shared/preparePageContextForPublicUsage.js';
|
|
6
|
+
import type { PageContextInternalClient } from '../../shared/types.js';
|
|
7
|
+
type PageContextForPublicUsageClientShared = PageContextPrepareMinimum & PageContextInternalClient & PageConfigUserFriendlyOld;
|
|
8
|
+
declare function preparePageContextForPublicUsageClientShared<PageContext extends PageContextForPublicUsageClientShared>(pageContext: PageContext): PageContext & {
|
|
9
|
+
Page: unknown;
|
|
10
|
+
};
|
|
11
|
+
declare function preparePageContextForPublicUsageClientMinimal<PageContext extends PageContextPrepareMinimum>(pageContext: PageContext): never;
|