vike 0.4.229 → 0.4.230-commit-8b60b8c
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 +2 -5
- package/dist/cjs/node/plugin/index.js +3 -1
- package/dist/cjs/node/plugin/onLoad.js +2 -0
- package/dist/cjs/node/plugin/plugins/build/pluginDistFileNames.js +1 -0
- package/dist/cjs/node/plugin/plugins/build/pluginModuleBanner.js +4 -4
- package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +5 -0
- package/dist/cjs/node/plugin/plugins/envVars.js +17 -19
- package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +3 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/assertExtensions.js +2 -2
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +5 -0
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +1 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.js +5 -0
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +2 -2
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +12 -8
- package/dist/cjs/node/plugin/plugins/replaceConstants.js +76 -0
- package/dist/cjs/node/plugin/shared/applyRegExWithMagicString.js +10 -0
- package/dist/cjs/node/plugin/shared/findPageFiles.js +1 -1
- package/dist/cjs/node/plugin/shared/loggerNotProd.js +2 -2
- package/dist/cjs/node/plugin/shared/resolveClientEntriesDev.js +1 -1
- package/dist/cjs/node/prerender/runPrerender.js +42 -38
- package/dist/cjs/node/prerender/utils.js +1 -1
- package/dist/cjs/node/runtime/globalContext.js +13 -27
- package/dist/cjs/node/runtime/html/renderHtml.js +12 -2
- package/dist/cjs/node/runtime/html/serializeContext.js +4 -2
- package/dist/cjs/node/runtime/renderPage/createHttpResponse/getCacheControl.js +7 -5
- package/dist/cjs/node/runtime/renderPage/createHttpResponse.js +3 -4
- package/dist/cjs/node/runtime/renderPage/createPageContextServerSide.js +6 -9
- package/dist/cjs/node/runtime/renderPage/execHookServer.js +11 -0
- package/dist/cjs/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +14 -15
- package/dist/cjs/node/runtime/renderPage/executeOnRenderHtmlHook.js +8 -12
- package/dist/cjs/node/runtime/renderPage/getHttpResponseBody.js +1 -1
- package/dist/cjs/node/runtime/renderPage/getPageAssets.js +1 -1
- package/dist/cjs/node/runtime/renderPage/{loadUserFilesServerSide.js → loadPageConfigsLazyServerSide.js} +4 -4
- package/dist/cjs/node/runtime/renderPage/preparePageContextForPublicUsageServer.js +10 -0
- package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +5 -5
- package/dist/cjs/node/runtime/renderPage/resolveRedirects.js +0 -2
- package/dist/cjs/node/runtime/renderPage.js +21 -12
- 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 +37 -8
- package/dist/cjs/shared/createPageContextShared.js +14 -11
- package/dist/cjs/shared/getPageContext.js +3 -3
- package/dist/cjs/shared/getPageContextUrlComputed.js +2 -36
- package/dist/cjs/shared/getProxyForPublicUsage.js +56 -0
- package/dist/cjs/shared/hooks/execHook.js +170 -0
- package/dist/cjs/shared/hooks/getHook.js +23 -4
- package/dist/cjs/shared/page-configs/{getPageConfigUserFriendly.js → getUserFriendlyConfigs.js} +54 -47
- package/dist/cjs/shared/prepareGlobalContextForPublicUsage.js +10 -0
- package/dist/cjs/shared/preparePageContextForPublicUsage.js +80 -0
- package/dist/cjs/shared/route/abort.js +2 -2
- package/dist/cjs/shared/route/debug.js +17 -7
- 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/debug.js +15 -6
- package/dist/cjs/utils/isDev.js +3 -1
- package/dist/cjs/utils/isScriptFile.js +24 -21
- package/dist/cjs/utils/objectAssign.js +3 -3
- package/dist/cjs/utils/objectDefineProperty.js +1 -1
- package/dist/cjs/utils/parseNpmPackage.js +1 -0
- package/dist/cjs/utils/parseUrl-extras.js +0 -1
- package/dist/cjs/utils/requireResolve.js +39 -19
- package/dist/esm/client/client-routing-runtime/{createPageContext.d.ts → createPageContextClientSide.d.ts} +21 -13
- package/dist/esm/client/client-routing-runtime/{createPageContext.js → createPageContextClientSide.js} +9 -11
- package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.d.ts +400 -15
- package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +56 -54
- package/dist/esm/client/client-routing-runtime/globalContext.d.ts +11 -1
- package/dist/esm/client/client-routing-runtime/prefetch.d.ts +3 -8
- package/dist/esm/client/client-routing-runtime/prefetch.js +3 -3
- 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 +72 -81
- 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 +19 -13
- package/dist/esm/client/server-routing-runtime/createPageContextClientSide.js +15 -26
- package/dist/esm/client/server-routing-runtime/entry.js +4 -4
- package/dist/esm/client/server-routing-runtime/globalContext.d.ts +11 -1
- 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 +11 -1
- package/dist/esm/client/shared/executeOnRenderClientHook.d.ts +3 -3
- package/dist/esm/client/shared/executeOnRenderClientHook.js +4 -13
- package/dist/esm/client/shared/{loadUserFilesClientSide.d.ts → loadPageConfigsLazyClientSide.d.ts} +2 -2
- package/dist/esm/client/shared/{loadUserFilesClientSide.js → loadPageConfigsLazyClientSide.js} +4 -4
- package/dist/esm/client/shared/preparePageContextForPublicUsageClientShared.d.ts +11 -0
- package/dist/esm/client/shared/preparePageContextForPublicUsageClientShared.js +39 -0
- package/dist/esm/node/api/build.js +2 -2
- package/dist/esm/node/plugin/index.js +3 -1
- package/dist/esm/node/plugin/onLoad.js +2 -0
- package/dist/esm/node/plugin/plugins/build/pluginDistFileNames.js +1 -0
- package/dist/esm/node/plugin/plugins/build/pluginModuleBanner.js +4 -4
- package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +6 -1
- package/dist/esm/node/plugin/plugins/envVars.js +18 -20
- package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +4 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/assertExtensions.d.ts +1 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/assertExtensions.js +2 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +5 -0
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +2 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.js +6 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +3 -3
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +12 -8
- package/dist/esm/node/plugin/plugins/replaceConstants.d.ts +3 -0
- package/dist/esm/node/plugin/plugins/replaceConstants.js +71 -0
- package/dist/esm/node/plugin/shared/applyRegExWithMagicString.d.ts +3 -0
- package/dist/esm/node/plugin/shared/applyRegExWithMagicString.js +8 -0
- package/dist/esm/node/plugin/shared/findPageFiles.js +2 -2
- package/dist/esm/node/plugin/shared/loggerNotProd.js +1 -1
- package/dist/esm/node/plugin/shared/resolveClientEntriesDev.d.ts +1 -1
- package/dist/esm/node/plugin/shared/resolveClientEntriesDev.js +1 -1
- package/dist/esm/node/prerender/runPrerender.d.ts +37 -73
- package/dist/esm/node/prerender/runPrerender.js +42 -38
- 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 +46 -251
- package/dist/esm/node/runtime/globalContext.js +14 -28
- package/dist/esm/node/runtime/html/renderHtml.js +12 -2
- package/dist/esm/node/runtime/html/serializeContext.d.ts +1 -1
- package/dist/esm/node/runtime/html/serializeContext.js +4 -2
- package/dist/esm/node/runtime/renderPage/createHttpResponse/getCacheControl.d.ts +1 -1
- package/dist/esm/node/runtime/renderPage/createHttpResponse/getCacheControl.js +7 -5
- package/dist/esm/node/runtime/renderPage/createHttpResponse.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/createHttpResponse.js +3 -4
- package/dist/esm/node/runtime/renderPage/createPageContextServerSide.d.ts +26 -41
- package/dist/esm/node/runtime/renderPage/createPageContextServerSide.js +7 -10
- 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 +2 -3
- package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +14 -15
- 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/getHttpResponseBody.js +1 -1
- package/dist/esm/node/runtime/renderPage/getPageAssets.js +1 -1
- package/dist/esm/node/runtime/renderPage/{loadUserFilesServerSide.d.ts → loadPageConfigsLazyServerSide.d.ts} +6 -6
- package/dist/esm/node/runtime/renderPage/{loadUserFilesServerSide.js → loadPageConfigsLazyServerSide.js} +4 -4
- 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 +38 -74
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +5 -5
- package/dist/esm/node/runtime/renderPage/resolveRedirects.d.ts +0 -2
- package/dist/esm/node/runtime/renderPage/resolveRedirects.js +0 -1
- package/dist/esm/node/runtime/renderPage.d.ts +21 -39
- package/dist/esm/node/runtime/renderPage.js +22 -13
- 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 +28 -6
- package/dist/esm/shared/createGlobalContextShared.js +37 -8
- package/dist/esm/shared/createPageContextShared.d.ts +7 -6
- package/dist/esm/shared/createPageContextShared.js +15 -12
- 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/getPageFiles.d.ts +1 -1
- package/dist/esm/shared/getProxyForPublicUsage.d.ts +4 -0
- package/dist/esm/shared/getProxyForPublicUsage.js +54 -0
- package/dist/esm/shared/hooks/execHook.d.ts +63 -0
- package/dist/esm/shared/hooks/execHook.js +168 -0
- package/dist/esm/shared/hooks/getHook.d.ts +10 -11
- package/dist/esm/shared/hooks/getHook.js +23 -4
- package/dist/esm/shared/page-configs/Config.d.ts +11 -4
- package/dist/esm/shared/page-configs/{getPageConfigUserFriendly.d.ts → getUserFriendlyConfigs.d.ts} +8 -6
- package/dist/esm/shared/page-configs/{getPageConfigUserFriendly.js → getUserFriendlyConfigs.js} +55 -48
- package/dist/esm/shared/prepareGlobalContextForPublicUsage.d.ts +7 -0
- package/dist/esm/shared/prepareGlobalContextForPublicUsage.js +8 -0
- package/dist/esm/shared/preparePageContextForPublicUsage.d.ts +11 -0
- package/dist/esm/shared/preparePageContextForPublicUsage.js +78 -0
- package/dist/esm/shared/route/abort.js +1 -1
- package/dist/esm/shared/route/debug.d.ts +4 -1
- package/dist/esm/shared/route/debug.js +17 -7
- 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 +14 -4
- package/dist/esm/shared/utils.d.ts +1 -0
- package/dist/esm/shared/utils.js +1 -0
- package/dist/esm/types/index.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/utils/debug.d.ts +1 -1
- package/dist/esm/utils/debug.js +15 -6
- package/dist/esm/utils/isDev.js +3 -1
- package/dist/esm/utils/isScriptFile.d.ts +5 -5
- package/dist/esm/utils/isScriptFile.js +23 -20
- 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/dist/esm/utils/parseNpmPackage.d.ts +2 -0
- package/dist/esm/utils/parseNpmPackage.js +1 -1
- package/dist/esm/utils/parseUrl-extras.js +0 -1
- package/dist/esm/utils/requireResolve.js +39 -19
- package/package.json +2 -2
- package/dist/cjs/client/shared/getPageContextProxyForUser.js +0 -16
- package/dist/cjs/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +0 -16
- package/dist/cjs/shared/getPageConfigsRuntime.js +0 -23
- package/dist/cjs/shared/hooks/executeHook.js +0 -87
- package/dist/cjs/shared/hooks/executeHookGeneric.js +0 -18
- 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/preparePageContextForUserConsumptionServerSide.d.ts +0 -24
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +0 -14
- package/dist/esm/shared/getPageConfigsRuntime.d.ts +0 -14
- package/dist/esm/shared/getPageConfigsRuntime.js +0 -21
- package/dist/esm/shared/hooks/executeHook.d.ts +0 -21
- package/dist/esm/shared/hooks/executeHook.js +0 -85
- package/dist/esm/shared/hooks/executeHookGeneric.d.ts +0 -8
- package/dist/esm/shared/hooks/executeHookGeneric.js +0 -16
- 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
|
@@ -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;
|
|
@@ -6,11 +6,11 @@ export { addLinkPrefetchHandlers };
|
|
|
6
6
|
export { addLinkPrefetchHandlers_watch };
|
|
7
7
|
export { addLinkPrefetchHandlers_unwatch };
|
|
8
8
|
import { assert, assertClientRouting, assertUsage, assertWarning, checkIfClientRouting, getGlobalObject, hasProp, objectAssign } from './utils.js';
|
|
9
|
-
import { isErrorFetchingStaticAssets,
|
|
9
|
+
import { isErrorFetchingStaticAssets, loadPageConfigsLazyClientSide } from '../shared/loadPageConfigsLazyClientSide.js';
|
|
10
10
|
import { skipLink } from './skipLink.js';
|
|
11
11
|
import { disableClientRouting } from './renderPageClientSide.js';
|
|
12
12
|
import { isClientSideRoutable } from './isClientSideRoutable.js';
|
|
13
|
-
import { createPageContextClientSide } from './
|
|
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';
|
|
@@ -45,7 +45,7 @@ function getPageContextPrefetched(pageContext) {
|
|
|
45
45
|
}
|
|
46
46
|
async function prefetchAssets(pageContextLink) {
|
|
47
47
|
try {
|
|
48
|
-
await
|
|
48
|
+
await loadPageConfigsLazyClientSide(pageContextLink.pageId, pageContextLink._pageFilesAll, pageContextLink._pageConfigs, pageContextLink._pageConfigGlobal);
|
|
49
49
|
}
|
|
50
50
|
catch (err) {
|
|
51
51
|
if (isErrorFetchingStaticAssets(err)) {
|
|
@@ -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;
|
|
@@ -5,12 +5,11 @@ 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 { createPageContextClientSide } from './
|
|
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 {
|
|
13
|
-
import { isErrorFetchingStaticAssets, loadUserFilesClientSide } from '../shared/loadUserFilesClientSide.js';
|
|
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';
|
|
16
15
|
import { route } from '../../shared/route/index.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()
|
|
@@ -60,29 +70,22 @@ async function renderPageClientSide(renderArgs) {
|
|
|
60
70
|
assert(previousPageContext);
|
|
61
71
|
// We use the hook of the previous page in order to be able to call onPageTransitionStart() before fetching the files of the next page.
|
|
62
72
|
// https://github.com/vikejs/vike/issues/1560
|
|
63
|
-
assertHook(previousPageContext, 'onPageTransitionStart');
|
|
64
73
|
if (!globalObject.isTransitioning) {
|
|
65
74
|
globalObject.isTransitioning = true;
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
await executeHook(() => hookFn(pageContext), hook, pageContext);
|
|
72
|
-
}
|
|
73
|
-
catch (err) {
|
|
74
|
-
await onError(err);
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
if (isRenderOutdated())
|
|
78
|
-
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;
|
|
79
80
|
}
|
|
81
|
+
if (isRenderOutdated())
|
|
82
|
+
return;
|
|
80
83
|
}
|
|
81
84
|
}
|
|
82
85
|
// Route
|
|
83
86
|
if (isFirstRender) {
|
|
84
87
|
const pageContextSerialized = getPageContextFromHooks_serialized();
|
|
85
|
-
//
|
|
88
|
+
// TO-DO/eventually: create helper assertPageContextFromHook()
|
|
86
89
|
assert(!('urlOriginal' in pageContextSerialized));
|
|
87
90
|
objectAssign(pageContext, pageContextSerialized);
|
|
88
91
|
// TODO/pageContext-prefetch: remove or change, because this only makes sense for a pre-rendered page
|
|
@@ -127,12 +130,12 @@ async function renderPageClientSide(renderArgs) {
|
|
|
127
130
|
// Skip's Vike's rendering; let the user handle the navigation
|
|
128
131
|
return;
|
|
129
132
|
}
|
|
130
|
-
//
|
|
133
|
+
// TO-DO/eventually: create helper assertPageContextFromHook()
|
|
131
134
|
assert(!('urlOriginal' in pageContextFromRoute));
|
|
132
135
|
objectAssign(pageContext, pageContextFromRoute);
|
|
133
136
|
}
|
|
134
137
|
try {
|
|
135
|
-
objectAssign(pageContext, await
|
|
138
|
+
objectAssign(pageContext, await loadPageConfigsLazyClientSide(pageContext.pageId, pageContext._pageFilesAll, pageContext._pageConfigs, pageContext._pageConfigGlobal));
|
|
136
139
|
}
|
|
137
140
|
catch (err) {
|
|
138
141
|
if (handleErrorFetchingStaticAssets(err, pageContext, isFirstRender)) {
|
|
@@ -197,7 +200,7 @@ async function renderPageClientSide(renderArgs) {
|
|
|
197
200
|
}
|
|
198
201
|
if (isRenderOutdated())
|
|
199
202
|
return;
|
|
200
|
-
//
|
|
203
|
+
// TO-DO/eventually: create helper assertPageContextFromHook()
|
|
201
204
|
assert(!('urlOriginal' in pageContextFromServerHooks));
|
|
202
205
|
objectAssign(pageContext, pageContextFromServerHooks);
|
|
203
206
|
// Get pageContext from client-side hooks
|
|
@@ -215,33 +218,6 @@ async function renderPageClientSide(renderArgs) {
|
|
|
215
218
|
await renderPageView(pageContext);
|
|
216
219
|
}
|
|
217
220
|
}
|
|
218
|
-
async function getPageContextBegin(isForErrorPage) {
|
|
219
|
-
const pageContext = await createPageContextClientSide(urlOriginal);
|
|
220
|
-
objectAssign(pageContext, {
|
|
221
|
-
isBackwardNavigation,
|
|
222
|
-
isClientSideNavigation,
|
|
223
|
-
isHydration: isFirstRender && !isForErrorPage,
|
|
224
|
-
previousPageContext,
|
|
225
|
-
...pageContextInitClient
|
|
226
|
-
});
|
|
227
|
-
// TODO/next-major-release: remove
|
|
228
|
-
Object.defineProperty(pageContext, '_previousPageContext', {
|
|
229
|
-
get() {
|
|
230
|
-
assertWarning(false, 'pageContext._previousPageContext has been renamed pageContext.previousPageContext', {
|
|
231
|
-
showStackTrace: true,
|
|
232
|
-
onlyOnce: true
|
|
233
|
-
});
|
|
234
|
-
return previousPageContext;
|
|
235
|
-
},
|
|
236
|
-
enumerable: false
|
|
237
|
-
});
|
|
238
|
-
{
|
|
239
|
-
const pageContextFromAllRewrites = getPageContextFromAllRewrites(pageContextsFromRewrite);
|
|
240
|
-
assert(!('urlOriginal' in pageContextFromAllRewrites));
|
|
241
|
-
objectAssign(pageContext, pageContextFromAllRewrites);
|
|
242
|
-
}
|
|
243
|
-
return pageContext;
|
|
244
|
-
}
|
|
245
221
|
async function renderErrorPage(args) {
|
|
246
222
|
const onError = (err) => {
|
|
247
223
|
if (!isSameErrorMessage(err, args.err)) {
|
|
@@ -267,9 +243,10 @@ async function renderPageClientSide(renderArgs) {
|
|
|
267
243
|
// We handle the abort error down below.
|
|
268
244
|
}
|
|
269
245
|
}
|
|
270
|
-
const pageContext = await getPageContextBegin(true);
|
|
246
|
+
const pageContext = await getPageContextBegin(true, pageContextBeginArgs);
|
|
271
247
|
if (isRenderOutdated())
|
|
272
248
|
return;
|
|
249
|
+
objectAssign(pageContext, { routeParams: {} });
|
|
273
250
|
if (args.is404)
|
|
274
251
|
objectAssign(pageContext, { is404: true });
|
|
275
252
|
if (args.pageContextError)
|
|
@@ -337,7 +314,7 @@ async function renderPageClientSide(renderArgs) {
|
|
|
337
314
|
return;
|
|
338
315
|
}
|
|
339
316
|
try {
|
|
340
|
-
objectAssign(pageContext, await
|
|
317
|
+
objectAssign(pageContext, await loadPageConfigsLazyClientSide(pageContext.pageId, pageContext._pageFilesAll, pageContext._pageConfigs, pageContext._pageConfigGlobal));
|
|
341
318
|
}
|
|
342
319
|
catch (err) {
|
|
343
320
|
if (handleErrorFetchingStaticAssets(err, pageContext, isFirstRender)) {
|
|
@@ -365,7 +342,7 @@ async function renderPageClientSide(renderArgs) {
|
|
|
365
342
|
}
|
|
366
343
|
if (isRenderOutdated())
|
|
367
344
|
return;
|
|
368
|
-
//
|
|
345
|
+
// TO-DO/eventually: create helper assertPageContextFromHook()
|
|
369
346
|
assert(!('urlOriginal' in pageContextFromServerHooks));
|
|
370
347
|
objectAssign(pageContext, pageContextFromServerHooks);
|
|
371
348
|
let pageContextFromClientHooks;
|
|
@@ -379,7 +356,6 @@ async function renderPageClientSide(renderArgs) {
|
|
|
379
356
|
if (isRenderOutdated())
|
|
380
357
|
return;
|
|
381
358
|
augmentType(pageContext, pageContextFromClientHooks);
|
|
382
|
-
objectAssign(pageContext, { routeParams: {} });
|
|
383
359
|
await renderPageView(pageContext, args);
|
|
384
360
|
}
|
|
385
361
|
async function renderPageView(pageContext, isErrorPage) {
|
|
@@ -407,7 +383,7 @@ async function renderPageClientSide(renderArgs) {
|
|
|
407
383
|
const onRenderClientPromise = (async () => {
|
|
408
384
|
let onRenderClientError;
|
|
409
385
|
try {
|
|
410
|
-
await executeOnRenderClientHook(pageContext,
|
|
386
|
+
await executeOnRenderClientHook(pageContext, preparePageContextForPublicUsageClient);
|
|
411
387
|
}
|
|
412
388
|
catch (err) {
|
|
413
389
|
onRenderClientError = err;
|
|
@@ -429,21 +405,14 @@ async function renderPageClientSide(renderArgs) {
|
|
|
429
405
|
*/
|
|
430
406
|
// onHydrationEnd()
|
|
431
407
|
if (isFirstRender && !onRenderClientError) {
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
try {
|
|
437
|
-
await executeHook(() => hookFn(pageContext), hook, pageContext);
|
|
438
|
-
}
|
|
439
|
-
catch (err) {
|
|
440
|
-
await onError(err);
|
|
441
|
-
if (!isErrorPage)
|
|
442
|
-
return;
|
|
443
|
-
}
|
|
444
|
-
if (isRenderOutdated(true))
|
|
408
|
+
const res = await execHookErrorHandling('onHydrationEnd', pageContext, preparePageContextForPublicUsageClient);
|
|
409
|
+
if ('err' in res) {
|
|
410
|
+
await onError(res.err);
|
|
411
|
+
if (!isErrorPage)
|
|
445
412
|
return;
|
|
446
413
|
}
|
|
414
|
+
if (isRenderOutdated(true))
|
|
415
|
+
return;
|
|
447
416
|
}
|
|
448
417
|
// We purposely abort *after* onHydrationEnd() is called (see comment above).
|
|
449
418
|
if (isRenderOutdated(true))
|
|
@@ -452,21 +421,15 @@ async function renderPageClientSide(renderArgs) {
|
|
|
452
421
|
if (globalObject.isTransitioning) {
|
|
453
422
|
globalObject.isTransitioning = undefined;
|
|
454
423
|
assert(previousPageContext);
|
|
455
|
-
|
|
456
|
-
const
|
|
457
|
-
if (
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
await executeHook(() => hookFn(pageContext), hook, pageContext);
|
|
461
|
-
}
|
|
462
|
-
catch (err) {
|
|
463
|
-
await onError(err);
|
|
464
|
-
if (!isErrorPage)
|
|
465
|
-
return;
|
|
466
|
-
}
|
|
467
|
-
if (isRenderOutdated(true))
|
|
424
|
+
const hooks = getHookFromPageContextNew('onPageTransitionEnd', previousPageContext);
|
|
425
|
+
const res = await execHooksErrorHandling(hooks, pageContext, preparePageContextForPublicUsageClient);
|
|
426
|
+
if ('err' in res) {
|
|
427
|
+
await onError(res.err);
|
|
428
|
+
if (!isErrorPage)
|
|
468
429
|
return;
|
|
469
430
|
}
|
|
431
|
+
if (isRenderOutdated(true))
|
|
432
|
+
return;
|
|
470
433
|
}
|
|
471
434
|
if (!scrollTarget && previousPageContext) {
|
|
472
435
|
const keepScrollPositionPrev = getKeepScrollPositionSetting(previousPageContext);
|
|
@@ -489,6 +452,34 @@ async function renderPageClientSide(renderArgs) {
|
|
|
489
452
|
stampFinished(urlOriginal);
|
|
490
453
|
}
|
|
491
454
|
}
|
|
455
|
+
async function getPageContextBegin(isForErrorPage, { urlOriginal, isBackwardNavigation, pageContextsFromRewrite, isClientSideNavigation, pageContextInitClient, isFirstRender }) {
|
|
456
|
+
const previousPageContext = globalObject.previousPageContext ?? null;
|
|
457
|
+
const pageContext = await createPageContextClientSide(urlOriginal);
|
|
458
|
+
objectAssign(pageContext, {
|
|
459
|
+
isBackwardNavigation,
|
|
460
|
+
isClientSideNavigation,
|
|
461
|
+
isHydration: isFirstRender && !isForErrorPage,
|
|
462
|
+
previousPageContext,
|
|
463
|
+
...pageContextInitClient
|
|
464
|
+
});
|
|
465
|
+
// TODO/next-major-release: remove
|
|
466
|
+
Object.defineProperty(pageContext, '_previousPageContext', {
|
|
467
|
+
get() {
|
|
468
|
+
assertWarning(false, 'pageContext._previousPageContext has been renamed pageContext.previousPageContext', {
|
|
469
|
+
showStackTrace: true,
|
|
470
|
+
onlyOnce: true
|
|
471
|
+
});
|
|
472
|
+
return previousPageContext;
|
|
473
|
+
},
|
|
474
|
+
enumerable: false
|
|
475
|
+
});
|
|
476
|
+
{
|
|
477
|
+
const pageContextFromAllRewrites = getPageContextFromAllRewrites(pageContextsFromRewrite);
|
|
478
|
+
assert(!('urlOriginal' in pageContextFromAllRewrites));
|
|
479
|
+
objectAssign(pageContext, pageContextFromAllRewrites);
|
|
480
|
+
}
|
|
481
|
+
return pageContext;
|
|
482
|
+
}
|
|
492
483
|
// For Vike tests (but also potentially for Vike users)
|
|
493
484
|
// https://github.com/vikejs/vike/blob/ffbc5cf16407bcc075f414447e50d997c87c0c94/test/playground/pages/nested-layout/e2e-test.ts#L59
|
|
494
485
|
function stampFinished(urlOriginal) {
|
|
@@ -1,14 +1,30 @@
|
|
|
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[];
|
|
8
15
|
_pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
9
16
|
_allPageIds: string[];
|
|
17
|
+
_userFriendlyConfigsGlobal: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly;
|
|
10
18
|
config: import("../../types/index.js").ConfigResolved;
|
|
11
|
-
pages:
|
|
19
|
+
pages: {
|
|
20
|
+
[k: string]: import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly & ({
|
|
21
|
+
route: import("../../shared/page-configs/Config.js").Route;
|
|
22
|
+
isErrorPage?: undefined;
|
|
23
|
+
} | {
|
|
24
|
+
route?: undefined;
|
|
25
|
+
isErrorPage: true;
|
|
26
|
+
});
|
|
27
|
+
};
|
|
12
28
|
} & {
|
|
13
29
|
isClientSide: true;
|
|
14
30
|
} & object;
|
|
@@ -16,21 +32,11 @@ declare function createPageContextClientSide(): Promise<{
|
|
|
16
32
|
_pageConfigs: import("../../__internal/index.js").PageConfig[];
|
|
17
33
|
_pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
18
34
|
_allPageIds: string[];
|
|
19
|
-
isPrerendering: boolean;
|
|
20
|
-
isClientSide: boolean;
|
|
21
|
-
isHydration: true;
|
|
22
35
|
isBackwardNavigation: null;
|
|
23
36
|
_hasPageContextFromServer: true;
|
|
24
|
-
_hasPageContextFromClient: false;
|
|
25
37
|
} & {
|
|
26
38
|
pageId: string;
|
|
27
39
|
routeParams: Record<string, string>;
|
|
28
|
-
} & import("../../shared/getPageFiles.js").PageConfigUserFriendlyOld & {
|
|
40
|
+
} & import("../../shared/page-configs/getUserFriendlyConfigs.js").PageConfigUserFriendly & import("../../shared/getPageFiles.js").PageConfigUserFriendlyOld & {
|
|
29
41
|
_pageFilesLoaded: import("../../shared/getPageFiles.js").PageFile[];
|
|
30
|
-
} & {
|
|
31
|
-
config: import("../../types/index.js").ConfigResolved;
|
|
32
|
-
_source: import("../../shared/page-configs/getPageConfigUserFriendly.js").Source;
|
|
33
|
-
_sources: import("../../shared/page-configs/getPageConfigUserFriendly.js").Sources;
|
|
34
|
-
_from: import("../../shared/page-configs/getPageConfigUserFriendly.js").From;
|
|
35
|
-
isPageContext: true;
|
|
36
42
|
}>;
|
|
@@ -1,33 +1,32 @@
|
|
|
1
1
|
export { createPageContextClientSide };
|
|
2
|
-
import { assertUsage,
|
|
2
|
+
import { assertUsage, augmentType, objectAssign } from './utils.js';
|
|
3
3
|
import { getPageContextSerializedInHtml } from '../shared/getJsonSerializedInHtml.js';
|
|
4
|
-
import {
|
|
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
|
-
_hasPageContextFromServer: true
|
|
25
|
-
|
|
26
|
-
};
|
|
22
|
+
_hasPageContextFromServer: true
|
|
23
|
+
});
|
|
27
24
|
objectAssign(pageContextCreated, getPageContextSerializedInHtml());
|
|
28
|
-
|
|
29
|
-
const pageContextAugmented = await createPageContextShared(pageContextCreated, globalContext._pageConfigGlobal);
|
|
25
|
+
// Sets pageContext.config to global configs
|
|
26
|
+
const pageContextAugmented = await createPageContextShared(pageContextCreated, globalContext._pageConfigGlobal, globalContext._userFriendlyConfigsGlobal);
|
|
30
27
|
augmentType(pageContextCreated, pageContextAugmented);
|
|
28
|
+
// Sets pageContext.config to local configs (overrides the pageContext.config set above)
|
|
29
|
+
objectAssign(pageContextCreated, await loadPageConfigsLazyClientSide(pageContextCreated.pageId, pageContextCreated._pageFilesAll, pageContextCreated._pageConfigs, pageContextCreated._pageConfigGlobal));
|
|
31
30
|
assertPristineUrl();
|
|
32
31
|
return pageContextCreated;
|
|
33
32
|
}
|
|
@@ -35,13 +34,3 @@ function assertPristineUrl() {
|
|
|
35
34
|
const urlCurrent = getCurrentUrl({ withoutHash: true });
|
|
36
35
|
assertUsage(urlFirst === urlCurrent, `The URL was manipulated before the hydration finished ('${urlFirst}' to '${urlCurrent}'). Ensure the hydration has finished before manipulating the URL. Consider using the onHydrationEnd() hook.`);
|
|
37
36
|
}
|
|
38
|
-
async function loadPageUserFiles(pageId, pageContext) {
|
|
39
|
-
const pageContextAddendum = {};
|
|
40
|
-
objectAssign(pageContextAddendum, await loadUserFilesClientSide(pageId, pageContext._pageFilesAll, pageContext._pageConfigs, pageContext._pageConfigGlobal));
|
|
41
|
-
pageContext._pageFilesAll
|
|
42
|
-
.filter((p) => p.fileType !== '.page.server')
|
|
43
|
-
.forEach((p) => {
|
|
44
|
-
assertWarning(!p.fileExports?.onBeforeRender, `export { onBeforeRender } of ${p.filePath} is loaded in the browser but never executed (because you are using Server-side Routing). In order to reduce the size of you browser-side JavaScript, define onBeforeRender() in a .page.server.js file instead, see https://vike.dev/onBeforeRender-isomorphic#server-routing`, { onlyOnce: true });
|
|
45
|
-
});
|
|
46
|
-
return pageContextAddendum;
|
|
47
|
-
}
|