vike 0.4.228-commit-90cfb1a → 0.4.228-commit-558224a
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/__internal/index.js +2 -2
- package/dist/cjs/client/client-routing-runtime/globalContext.js +49 -0
- package/dist/cjs/client/server-routing-runtime/globalContext.js +41 -0
- package/dist/cjs/client/shared/createGetGlobalContext.js +31 -0
- package/dist/cjs/client/shared/getJsonSerializedInHtml.js +31 -0
- package/dist/cjs/client/shared/utils.js +21 -0
- package/dist/cjs/node/plugin/plugins/build/pluginModuleBanner.js +1 -0
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +6 -1
- package/dist/cjs/node/prerender/runPrerender.js +42 -40
- package/dist/cjs/node/prerender/utils.js +1 -1
- package/dist/cjs/node/runtime/globalContext.js +87 -119
- package/dist/cjs/node/runtime/html/injectAssets/getHtmlTags.js +18 -5
- package/dist/cjs/node/runtime/html/injectAssets/getViteDevScript.js +2 -2
- package/dist/cjs/node/runtime/html/propKeys.js +47 -0
- package/dist/cjs/node/runtime/html/renderHtml.js +1 -1
- package/dist/cjs/node/runtime/html/{serializePageContextClientSide.js → serializeContext.js} +37 -67
- package/dist/cjs/node/runtime/renderPage/analyzePage.js +1 -1
- package/dist/cjs/node/runtime/renderPage/createPageContextServerSide.js +14 -13
- package/dist/cjs/node/runtime/renderPage/getPageAssets.js +2 -2
- package/dist/cjs/node/runtime/renderPage/handleErrorWithoutErrorPage.js +1 -1
- package/dist/cjs/node/runtime/renderPage/loadUserFilesServerSide.js +1 -1
- package/dist/cjs/node/runtime/renderPage/log404/index.js +1 -1
- package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +3 -3
- package/dist/cjs/node/runtime/renderPage.js +10 -10
- package/dist/cjs/node/runtime/utils.js +1 -1
- package/dist/cjs/shared/createGlobalContextShared.js +45 -0
- package/dist/cjs/shared/createPageContextShared.js +2 -2
- package/dist/cjs/{node/runtime/renderPage → shared/hooks}/executeHookGeneric.js +4 -4
- package/dist/cjs/shared/htmlElementIds.js +5 -0
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/catchInfiniteLoop.js +3 -3
- package/dist/cjs/utils/getPublicProxy.js +27 -0
- package/dist/cjs/utils/objectAssign.js +5 -5
- package/dist/cjs/utils/objectReplace.js +4 -4
- package/dist/esm/__internal/index.js +2 -2
- package/dist/esm/client/client-routing-runtime/{createPageContextClientSide.d.ts → createPageContext.d.ts} +17 -8
- package/dist/esm/client/client-routing-runtime/{createPageContextClientSide.js → createPageContext.js} +14 -16
- package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +1 -1
- package/dist/esm/client/client-routing-runtime/globalContext.d.ts +16 -0
- package/dist/esm/client/client-routing-runtime/globalContext.js +13 -0
- package/dist/esm/client/client-routing-runtime/prefetch.js +1 -1
- package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +2 -3
- package/dist/esm/client/server-routing-runtime/createPageContextClientSide.d.ts +13 -4
- package/dist/esm/client/server-routing-runtime/createPageContextClientSide.js +16 -15
- package/dist/esm/client/server-routing-runtime/globalContext.d.ts +13 -0
- package/dist/esm/client/server-routing-runtime/globalContext.js +5 -0
- package/dist/esm/client/shared/createGetGlobalContext.d.ts +11 -0
- package/dist/esm/client/shared/createGetGlobalContext.js +29 -0
- package/dist/esm/client/shared/{getPageContextSerializedInHtml.d.ts → getJsonSerializedInHtml.d.ts} +2 -0
- package/dist/esm/client/shared/getJsonSerializedInHtml.js +29 -0
- package/dist/esm/client/shared/utils.d.ts +3 -0
- package/dist/esm/client/shared/utils.js +3 -0
- package/dist/esm/node/plugin/plugins/build/pluginModuleBanner.js +1 -0
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +6 -1
- package/dist/esm/node/prerender/runPrerender.d.ts +300 -5
- package/dist/esm/node/prerender/runPrerender.js +43 -41
- 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 +393 -46
- package/dist/esm/node/runtime/globalContext.js +88 -120
- package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +18 -5
- package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.js +2 -2
- package/dist/esm/node/runtime/html/injectAssets.d.ts +1 -1
- package/dist/esm/node/runtime/html/propKeys.d.ts +8 -0
- package/dist/esm/node/runtime/html/propKeys.js +45 -0
- package/dist/esm/node/runtime/html/renderHtml.js +1 -1
- package/dist/esm/node/runtime/html/{serializePageContextClientSide.d.ts → serializeContext.d.ts} +7 -6
- package/dist/esm/node/runtime/html/{serializePageContextClientSide.js → serializeContext.js} +36 -67
- package/dist/esm/node/runtime/renderPage/analyzePage.js +1 -1
- package/dist/esm/node/runtime/renderPage/createPageContextServerSide.d.ts +95 -35
- package/dist/esm/node/runtime/renderPage/createPageContextServerSide.js +14 -13
- package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.d.ts +1 -1
- package/dist/esm/node/runtime/renderPage/getPageAssets.js +2 -2
- package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.js +1 -1
- package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +1 -1
- package/dist/esm/node/runtime/renderPage/log404/index.js +1 -1
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +186 -64
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +3 -3
- package/dist/esm/node/runtime/renderPage.d.ts +95 -34
- package/dist/esm/node/runtime/renderPage.js +10 -10
- package/dist/esm/node/runtime/utils.d.ts +1 -1
- package/dist/esm/node/runtime/utils.js +1 -1
- package/dist/esm/shared/VikeNamespace.d.ts +6 -0
- package/dist/esm/shared/createGlobalContextShared.d.ts +25 -0
- package/dist/esm/shared/createGlobalContextShared.js +43 -0
- package/dist/esm/shared/createPageContextShared.js +2 -2
- package/dist/esm/shared/hooks/executeHookGeneric.d.ts +8 -0
- package/dist/esm/{node/runtime/renderPage → shared/hooks}/executeHookGeneric.js +4 -4
- package/dist/esm/shared/htmlElementIds.d.ts +2 -0
- package/dist/esm/shared/htmlElementIds.js +2 -0
- package/dist/esm/shared/page-configs/Config.d.ts +8 -3
- package/dist/esm/shared/types.d.ts +20 -13
- package/dist/esm/types/index.d.ts +1 -5
- package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/utils/catchInfiniteLoop.js +4 -4
- package/dist/esm/utils/getGlobalObject.d.ts +1 -1
- package/dist/esm/utils/getPublicProxy.d.ts +2 -0
- package/dist/esm/utils/getPublicProxy.js +25 -0
- package/dist/esm/utils/objectAssign.d.ts +1 -1
- package/dist/esm/utils/objectAssign.js +5 -5
- package/dist/esm/utils/objectReplace.d.ts +1 -1
- package/dist/esm/utils/objectReplace.js +4 -4
- package/package.json +2 -2
- package/dist/cjs/client/client-routing-runtime/globalContextClientSide.js +0 -10
- package/dist/cjs/client/client-routing-runtime/onLoad.js +0 -10
- package/dist/cjs/client/client-routing-runtime/utils.js +0 -43
- package/dist/cjs/utils/makePublicCopy.js +0 -32
- package/dist/esm/client/client-routing-runtime/globalContextClientSide.d.ts +0 -5
- package/dist/esm/client/client-routing-runtime/globalContextClientSide.js +0 -8
- package/dist/esm/client/shared/getPageContextSerializedInHtml.js +0 -20
- package/dist/esm/node/runtime/renderPage/executeHookGeneric.d.ts +0 -8
- package/dist/esm/utils/makePublicCopy.d.ts +0 -3
- package/dist/esm/utils/makePublicCopy.js +0 -30
|
@@ -2,7 +2,7 @@ export { renderPage };
|
|
|
2
2
|
export { renderPage_addAsyncHookwrapper };
|
|
3
3
|
export type { PageContextInit };
|
|
4
4
|
export type { PageContextBegin };
|
|
5
|
-
import { type GlobalContextInternal } from './globalContext.js';
|
|
5
|
+
import { type GlobalContextServer, type GlobalContextInternal } from './globalContext.js';
|
|
6
6
|
import { type HttpResponse } from './renderPage/createHttpResponse.js';
|
|
7
7
|
import type { PageContextServer } from '../../types/index.js';
|
|
8
8
|
import type { PageContextBuiltInServerInternal } from '../../shared/types.js';
|
|
@@ -18,13 +18,106 @@ declare let asyncHookWrapper: <PageContext>(_httpRequestId: number, ret: () => P
|
|
|
18
18
|
pageContextReturn: Awaited<PageContext>;
|
|
19
19
|
}>;
|
|
20
20
|
declare function renderPage_addAsyncHookwrapper(wrapper: typeof asyncHookWrapper): void;
|
|
21
|
-
declare function getPageContextBegin(pageContextInit: PageContextInit, globalContext: GlobalContextInternal, httpRequestId: number): Promise<{
|
|
21
|
+
declare function getPageContextBegin(pageContextInit: PageContextInit, globalContext: GlobalContextInternal, globalContext_public: GlobalContextServer, httpRequestId: number): Promise<{
|
|
22
22
|
isClientSide: boolean;
|
|
23
23
|
isPrerendering: boolean;
|
|
24
24
|
} & Pick<PageContextBuiltInServerInternal, "urlOriginal" | "headersOriginal"> & {
|
|
25
25
|
/** @deprecated Set `pageContextInit.urlOriginal` instead */ url?: string;
|
|
26
26
|
/** @deprecated Set pageContextInit.headersOriginal instead */ headers?: Record<string, string>;
|
|
27
27
|
} & {
|
|
28
|
+
globalContext: GlobalContextServer;
|
|
29
|
+
_globalContext: {
|
|
30
|
+
_virtualFileExports: unknown;
|
|
31
|
+
_pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
|
|
32
|
+
_pageConfigs: import("../../__internal/index.js").PageConfig[];
|
|
33
|
+
_pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
34
|
+
_allPageIds: string[];
|
|
35
|
+
config: import("../../types/index.js").ConfigResolved;
|
|
36
|
+
pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
|
|
37
|
+
} & ({
|
|
38
|
+
_isProduction: false;
|
|
39
|
+
_isPrerendering: false;
|
|
40
|
+
assetsManifest: null;
|
|
41
|
+
_viteDevServer: import("vite").ViteDevServer;
|
|
42
|
+
viteConfig: import("vite").ResolvedConfig;
|
|
43
|
+
viteConfigRuntime: {
|
|
44
|
+
root: string;
|
|
45
|
+
build: {
|
|
46
|
+
outDir: string;
|
|
47
|
+
};
|
|
48
|
+
_baseViteOriginal: string;
|
|
49
|
+
vitePluginServerEntry: {
|
|
50
|
+
inject: boolean | undefined;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
baseServer: string;
|
|
54
|
+
baseAssets: string;
|
|
55
|
+
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
|
|
56
|
+
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
57
|
+
_virtualFileExports: unknown;
|
|
58
|
+
_pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
|
|
59
|
+
_pageConfigs: import("../../__internal/index.js").PageConfig[];
|
|
60
|
+
_pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
61
|
+
_allPageIds: string[];
|
|
62
|
+
config: import("../../types/index.js").ConfigResolved;
|
|
63
|
+
pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
|
|
64
|
+
} | {
|
|
65
|
+
_isPrerendering: true;
|
|
66
|
+
viteConfig: import("vite").ResolvedConfig;
|
|
67
|
+
_isProduction: true;
|
|
68
|
+
assetsManifest: import("../shared/ViteManifest.js").ViteManifest;
|
|
69
|
+
_viteDevServer: null;
|
|
70
|
+
viteConfigRuntime: {
|
|
71
|
+
root: string;
|
|
72
|
+
build: {
|
|
73
|
+
outDir: string;
|
|
74
|
+
};
|
|
75
|
+
_baseViteOriginal: string;
|
|
76
|
+
vitePluginServerEntry: {
|
|
77
|
+
inject: boolean | undefined;
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
_usesClientRouter: boolean;
|
|
81
|
+
baseServer: string;
|
|
82
|
+
baseAssets: string;
|
|
83
|
+
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
|
|
84
|
+
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
85
|
+
_virtualFileExports: unknown;
|
|
86
|
+
_pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
|
|
87
|
+
_pageConfigs: import("../../__internal/index.js").PageConfig[];
|
|
88
|
+
_pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
89
|
+
_allPageIds: string[];
|
|
90
|
+
config: import("../../types/index.js").ConfigResolved;
|
|
91
|
+
pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
|
|
92
|
+
} | {
|
|
93
|
+
_isPrerendering: false;
|
|
94
|
+
viteConfig: null;
|
|
95
|
+
_isProduction: true;
|
|
96
|
+
assetsManifest: import("../shared/ViteManifest.js").ViteManifest;
|
|
97
|
+
_viteDevServer: null;
|
|
98
|
+
viteConfigRuntime: {
|
|
99
|
+
root: string;
|
|
100
|
+
build: {
|
|
101
|
+
outDir: string;
|
|
102
|
+
};
|
|
103
|
+
_baseViteOriginal: string;
|
|
104
|
+
vitePluginServerEntry: {
|
|
105
|
+
inject: boolean | undefined;
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
_usesClientRouter: boolean;
|
|
109
|
+
baseServer: string;
|
|
110
|
+
baseAssets: string;
|
|
111
|
+
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
|
|
112
|
+
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
113
|
+
_virtualFileExports: unknown;
|
|
114
|
+
_pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
|
|
115
|
+
_pageConfigs: import("../../__internal/index.js").PageConfig[];
|
|
116
|
+
_pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
117
|
+
_allPageIds: string[];
|
|
118
|
+
config: import("../../types/index.js").ConfigResolved;
|
|
119
|
+
pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
|
|
120
|
+
});
|
|
28
121
|
_baseServer: string;
|
|
29
122
|
_baseAssets: string;
|
|
30
123
|
_includeAssetsImportedByServer: boolean;
|
|
@@ -34,38 +127,6 @@ declare function getPageContextBegin(pageContextInit: PageContextInit, globalCon
|
|
|
34
127
|
_allPageIds: string[];
|
|
35
128
|
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
|
|
36
129
|
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
37
|
-
_globalContext: GlobalContextInternal;
|
|
38
|
-
globalContext: Pick<{
|
|
39
|
-
viteConfigRuntime: import("../plugin/shared/getViteConfigRuntime.js").ViteConfigRuntime;
|
|
40
|
-
config: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigUserFriendly["config"];
|
|
41
|
-
pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
|
|
42
|
-
} & import("../shared/resolveBase.js").BaseUrlsResolved & ({
|
|
43
|
-
pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
|
|
44
|
-
pageConfigs: import("../../__internal/index.js").PageConfig[];
|
|
45
|
-
pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
46
|
-
allPageIds: string[];
|
|
47
|
-
pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
|
|
48
|
-
onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
49
|
-
pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
|
|
50
|
-
config: import("../../types/index.js").ConfigResolved;
|
|
51
|
-
} & ({
|
|
52
|
-
isProduction: false;
|
|
53
|
-
isPrerendering: false;
|
|
54
|
-
viteConfig: import("vite").ResolvedConfig;
|
|
55
|
-
viteDevServer: import("vite").ViteDevServer;
|
|
56
|
-
assetsManifest: null;
|
|
57
|
-
} | ({
|
|
58
|
-
isProduction: true;
|
|
59
|
-
assetsManifest: import("../shared/ViteManifest.js").ViteManifest;
|
|
60
|
-
viteDevServer: null;
|
|
61
|
-
} & ({
|
|
62
|
-
isPrerendering: false;
|
|
63
|
-
viteConfig: null;
|
|
64
|
-
} | {
|
|
65
|
-
isPrerendering: true;
|
|
66
|
-
usesClientRouter: boolean;
|
|
67
|
-
viteConfig: import("vite").ResolvedConfig;
|
|
68
|
-
})))), "pages" | "baseServer" | "baseAssets" | "config" | "assetsManifest" | "viteConfig" | "viteConfigRuntime">;
|
|
69
130
|
_pageContextInit: PageContextInit;
|
|
70
131
|
_urlRewrite: null;
|
|
71
132
|
_urlHandler: ((url: string) => string) | null;
|
|
@@ -14,7 +14,7 @@ import { assertArguments } from './renderPage/assertArguments.js';
|
|
|
14
14
|
import { log404 } from './renderPage/log404/index.js';
|
|
15
15
|
import { isVikeConfigInvalid } from './renderPage/isVikeConfigInvalid.js';
|
|
16
16
|
import pc from '@brillout/picocolors';
|
|
17
|
-
import {
|
|
17
|
+
import { getPageContextClientSerializedAbort, getPageContextClientSerialized } from './html/serializeContext.js';
|
|
18
18
|
import { getErrorPageId } from '../../shared/error-page.js';
|
|
19
19
|
import { handleErrorWithoutErrorPage } from './renderPage/handleErrorWithoutErrorPage.js';
|
|
20
20
|
import { loadUserFilesServerSide } from './renderPage/loadUserFilesServerSide.js';
|
|
@@ -76,8 +76,8 @@ async function renderPagePrepare(pageContextInit, httpRequestId) {
|
|
|
76
76
|
else {
|
|
77
77
|
// `globalContext` now contains the entire Vike config and getVikeConfig() isn't called anymore for this request.
|
|
78
78
|
}
|
|
79
|
-
const globalContext = await getGlobalContextInternal();
|
|
80
|
-
const pageContextBegin = await getPageContextBegin(pageContextInit, globalContext, httpRequestId);
|
|
79
|
+
const { globalContext, globalContext_public } = await getGlobalContextInternal();
|
|
80
|
+
const pageContextBegin = await getPageContextBegin(pageContextInit, globalContext, globalContext_public, httpRequestId);
|
|
81
81
|
// Check Base URL
|
|
82
82
|
{
|
|
83
83
|
const pageContextHttpResponse = await checkBaseUrl(pageContextBegin, globalContext);
|
|
@@ -154,7 +154,7 @@ async function renderPageAlreadyPrepared(pageContextBegin, globalContext, httpRe
|
|
|
154
154
|
Object.assign(pageContextErrorPageInit, handled.pageContextAbort);
|
|
155
155
|
}
|
|
156
156
|
{
|
|
157
|
-
const errorPageId = getErrorPageId(globalContext.
|
|
157
|
+
const errorPageId = getErrorPageId(globalContext._pageFilesAll, globalContext._pageConfigs);
|
|
158
158
|
if (!errorPageId) {
|
|
159
159
|
objectAssign(pageContextErrorPageInit, { pageId: null });
|
|
160
160
|
return handleErrorWithoutErrorPage(pageContextErrorPageInit);
|
|
@@ -299,9 +299,9 @@ async function getPageContextErrorPageInit(pageContextBegin, errNominalPage, pag
|
|
|
299
299
|
assert(pageContext.errorWhileRendering);
|
|
300
300
|
return pageContext;
|
|
301
301
|
}
|
|
302
|
-
async function getPageContextBegin(pageContextInit, globalContext, httpRequestId) {
|
|
302
|
+
async function getPageContextBegin(pageContextInit, globalContext, globalContext_public, httpRequestId) {
|
|
303
303
|
const { isClientSideNavigation, _urlHandler } = handlePageContextUrl(pageContextInit.urlOriginal);
|
|
304
|
-
const pageContextBegin = await createPageContextServerSide(pageContextInit, globalContext, {
|
|
304
|
+
const pageContextBegin = await createPageContextServerSide(pageContextInit, globalContext, globalContext_public, {
|
|
305
305
|
isPrerendering: false,
|
|
306
306
|
ssr: {
|
|
307
307
|
urlHandler: _urlHandler,
|
|
@@ -397,12 +397,12 @@ function normalize(url) {
|
|
|
397
397
|
async function handleAbortError(errAbort, pageContextsFromRewrite, pageContextBegin,
|
|
398
398
|
// handleAbortError() creates a new pageContext object and we don't merge pageContextNominalPageBegin to it: we only use some pageContextNominalPageBegin information.
|
|
399
399
|
pageContextNominalPageBegin, httpRequestId, pageContextErrorPageInit, globalContext) {
|
|
400
|
-
logAbortErrorHandled(errAbort, globalContext.
|
|
400
|
+
logAbortErrorHandled(errAbort, globalContext._isProduction, pageContextNominalPageBegin);
|
|
401
401
|
const pageContextAbort = errAbort._pageContextAbort;
|
|
402
402
|
let pageContextSerialized;
|
|
403
403
|
if (pageContextNominalPageBegin.isClientSideNavigation) {
|
|
404
404
|
if (pageContextAbort.abortStatusCode) {
|
|
405
|
-
const errorPageId = getErrorPageId(globalContext.
|
|
405
|
+
const errorPageId = getErrorPageId(globalContext._pageFilesAll, globalContext._pageConfigs);
|
|
406
406
|
const abortCall = pageContextAbort._abortCall;
|
|
407
407
|
assert(abortCall);
|
|
408
408
|
assertUsage(errorPageId, `You called ${pc.cyan(abortCall)} but you didn't define an error page, make sure to define one https://vike.dev/error-page`);
|
|
@@ -412,10 +412,10 @@ pageContextNominalPageBegin, httpRequestId, pageContextErrorPageInit, globalCont
|
|
|
412
412
|
objectAssign(pageContext, pageContextErrorPageInit, true);
|
|
413
413
|
objectAssign(pageContext, await loadUserFilesServerSide(pageContext));
|
|
414
414
|
// We include pageContextInit: we don't only serialize pageContextAbort because the error page may need to access pageContextInit
|
|
415
|
-
pageContextSerialized =
|
|
415
|
+
pageContextSerialized = getPageContextClientSerialized(pageContext);
|
|
416
416
|
}
|
|
417
417
|
else {
|
|
418
|
-
pageContextSerialized =
|
|
418
|
+
pageContextSerialized = getPageContextClientSerializedAbort(pageContextAbort);
|
|
419
419
|
}
|
|
420
420
|
const httpResponse = await createHttpResponsePageContextJson(pageContextSerialized);
|
|
421
421
|
const pageContextReturn = { httpResponse };
|
|
@@ -54,5 +54,5 @@ export * from '../../utils/isVikeReactApp.js';
|
|
|
54
54
|
export * from '../../utils/getPropAccessNotation.js';
|
|
55
55
|
export * from '../../utils/PROJECT_VERSION.js';
|
|
56
56
|
export * from '../../utils/genPromise.js';
|
|
57
|
-
export * from '../../utils/
|
|
57
|
+
export * from '../../utils/getPublicProxy.js';
|
|
58
58
|
export * from '../../utils/augmentType.js';
|
|
@@ -58,5 +58,5 @@ export * from '../../utils/isVikeReactApp.js';
|
|
|
58
58
|
export * from '../../utils/getPropAccessNotation.js';
|
|
59
59
|
export * from '../../utils/PROJECT_VERSION.js';
|
|
60
60
|
export * from '../../utils/genPromise.js';
|
|
61
|
-
export * from '../../utils/
|
|
61
|
+
export * from '../../utils/getPublicProxy.js';
|
|
62
62
|
export * from '../../utils/augmentType.js';
|
|
@@ -31,6 +31,12 @@ declare global {
|
|
|
31
31
|
*/
|
|
32
32
|
interface ConfigResolved {
|
|
33
33
|
}
|
|
34
|
+
/** Extend the `GlobalContext` type (`import type { GlobalContext } from 'vike/types'`).
|
|
35
|
+
*
|
|
36
|
+
* https://vike.dev/globalContext#typescript
|
|
37
|
+
*/
|
|
38
|
+
interface GlobalContext {
|
|
39
|
+
}
|
|
34
40
|
}
|
|
35
41
|
/** This namespace is only used by:
|
|
36
42
|
* - `vike-react`
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export { createGlobalContextShared };
|
|
2
|
+
export type { GlobalContextShared };
|
|
3
|
+
export type { GlobalContextSharedPublic };
|
|
4
|
+
declare function createGlobalContextShared<GlobalContextAddendum extends object>(virtualFileExports: unknown, globalObject: {
|
|
5
|
+
globalContext?: Record<string, unknown>;
|
|
6
|
+
}, addGlobalContext?: (globalContext: GlobalContextShared) => Promise<GlobalContextAddendum>): Promise<{
|
|
7
|
+
_virtualFileExports: unknown;
|
|
8
|
+
_pageFilesAll: import("./getPageFiles.js").PageFile[];
|
|
9
|
+
_pageConfigs: import("./page-configs/PageConfig.js").PageConfigRuntime[];
|
|
10
|
+
_pageConfigGlobal: import("./page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
11
|
+
_allPageIds: string[];
|
|
12
|
+
config: import("./page-configs/Config/PageContextConfig.js").ConfigResolved;
|
|
13
|
+
pages: import("./page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
|
|
14
|
+
} & Awaited<GlobalContextAddendum>>;
|
|
15
|
+
type GlobalContextSharedPublic = Pick<GlobalContextShared, 'config' | 'pages'>;
|
|
16
|
+
type GlobalContextShared = ReturnType<typeof createGlobalContextBase>;
|
|
17
|
+
declare function createGlobalContextBase(virtualFileExports: unknown): {
|
|
18
|
+
_virtualFileExports: unknown;
|
|
19
|
+
_pageFilesAll: import("./getPageFiles.js").PageFile[];
|
|
20
|
+
_pageConfigs: import("./page-configs/PageConfig.js").PageConfigRuntime[];
|
|
21
|
+
_pageConfigGlobal: import("./page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
22
|
+
_allPageIds: string[];
|
|
23
|
+
config: import("./page-configs/Config/PageContextConfig.js").ConfigResolved;
|
|
24
|
+
pages: import("./page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
|
|
25
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export { createGlobalContextShared };
|
|
2
|
+
import { getPageConfigsRuntime } from './getPageConfigsRuntime.js';
|
|
3
|
+
import { executeHookGenericGlobalCumulative } from './hooks/executeHookGeneric.js';
|
|
4
|
+
import { objectAssign } from './utils.js';
|
|
5
|
+
async function createGlobalContextShared(virtualFileExports, globalObject, addGlobalContext) {
|
|
6
|
+
const globalContext = createGlobalContextBase(virtualFileExports);
|
|
7
|
+
const globalContextAddendum = await addGlobalContext?.(globalContext);
|
|
8
|
+
objectAssign(globalContext, globalContextAddendum);
|
|
9
|
+
if (!globalObject.globalContext) {
|
|
10
|
+
globalObject.globalContext = globalContext;
|
|
11
|
+
// - We deliberately call onCreateGlobalContext() only at the beginning and only once per process.
|
|
12
|
+
// - TO-DO/eventually: HMR
|
|
13
|
+
// - Once Photon supports it: `server.hot.send({ type: 'full-server-reload' })`
|
|
14
|
+
// - Either use:
|
|
15
|
+
// - import.meta.hot
|
|
16
|
+
// - https://vite.dev/guide/api-hmr.html
|
|
17
|
+
// - Use a Vite transformer to inject import.meta.hot code into each user-land `+onCreateGlobalContext.js` file
|
|
18
|
+
// - Seems more idiomatic
|
|
19
|
+
// - globalContext._viteDevServer.hot.send()
|
|
20
|
+
// - Send 'full-server-reload' signal whenever a onCreateGlobalContext() function is modified => we need a globalObject to track all hooks and see if one of them is new/modified.
|
|
21
|
+
// - Seems less idiomatic
|
|
22
|
+
await executeHookGenericGlobalCumulative('onCreateGlobalContext', globalContext._pageConfigGlobal, null, globalContext);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
// Singleton: ensure all `globalContext` user-land references are preserved & updated.
|
|
26
|
+
// We don't use objectReplace() in order to keep user-land properties.
|
|
27
|
+
objectAssign(globalObject.globalContext, globalContext);
|
|
28
|
+
}
|
|
29
|
+
return globalObject.globalContext;
|
|
30
|
+
}
|
|
31
|
+
function createGlobalContextBase(virtualFileExports) {
|
|
32
|
+
const { pageFilesAll, allPageIds, pageConfigs, pageConfigGlobal, globalConfig, pageConfigsUserFriendly } = getPageConfigsRuntime(virtualFileExports);
|
|
33
|
+
const globalContext = {
|
|
34
|
+
_virtualFileExports: virtualFileExports,
|
|
35
|
+
_pageFilesAll: pageFilesAll,
|
|
36
|
+
_pageConfigs: pageConfigs,
|
|
37
|
+
_pageConfigGlobal: pageConfigGlobal,
|
|
38
|
+
_allPageIds: allPageIds,
|
|
39
|
+
config: globalConfig.config,
|
|
40
|
+
pages: pageConfigsUserFriendly
|
|
41
|
+
};
|
|
42
|
+
return globalContext;
|
|
43
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { createPageContextShared };
|
|
2
|
-
import { executeHookGenericGlobalCumulative } from '
|
|
2
|
+
import { executeHookGenericGlobalCumulative } from './hooks/executeHookGeneric.js';
|
|
3
3
|
import { getPageConfigGlobalUserFriendly } from './page-configs/getPageConfigUserFriendly.js';
|
|
4
4
|
import { objectAssign } from './utils.js';
|
|
5
5
|
async function createPageContextShared(pageContextCreated, pageConfigGlobal) {
|
|
@@ -10,6 +10,6 @@ async function createPageContextShared(pageContextCreated, pageConfigGlobal) {
|
|
|
10
10
|
_isPageContextObject: true,
|
|
11
11
|
...pageConfigGlobalUserFriendly
|
|
12
12
|
}, true);
|
|
13
|
-
await executeHookGenericGlobalCumulative('onCreatePageContext', pageConfigGlobal, pageContextCreated);
|
|
13
|
+
await executeHookGenericGlobalCumulative('onCreatePageContext', pageConfigGlobal, pageContextCreated, pageContextCreated);
|
|
14
14
|
return pageContextCreated;
|
|
15
15
|
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { executeHookGeneric };
|
|
2
|
+
export { executeHookGenericGlobalCumulative };
|
|
3
|
+
import type { PageConfigUserFriendlyOld } from '../getPageFiles.js';
|
|
4
|
+
import { type HookName } from './getHook.js';
|
|
5
|
+
import type { HookNameGlobal } from '../page-configs/Config.js';
|
|
6
|
+
import type { PageConfigGlobalRuntime } from '../page-configs/PageConfig.js';
|
|
7
|
+
declare function executeHookGeneric(hookName: HookName, pageContext: PageConfigUserFriendlyOld): Promise<void>;
|
|
8
|
+
declare function executeHookGenericGlobalCumulative(hookName: HookNameGlobal, pageConfigGlobal: PageConfigGlobalRuntime, pageContext: object | null, arg: object): Promise<void>;
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
export { executeHookGeneric }; // TO-DO/refactor: start using executeHookGeneric() and, eventually, prominently use it
|
|
2
2
|
export { executeHookGenericGlobalCumulative };
|
|
3
|
-
import { executeHook } from '
|
|
4
|
-
import { getHookFromPageContext, getHookFromPageConfigGlobalCumulative } from '
|
|
3
|
+
import { executeHook } from './executeHook.js';
|
|
4
|
+
import { getHookFromPageContext, getHookFromPageConfigGlobalCumulative } from './getHook.js';
|
|
5
5
|
async function executeHookGeneric(hookName, pageContext) {
|
|
6
6
|
const hook = getHookFromPageContext(pageContext, hookName);
|
|
7
7
|
if (!hook)
|
|
8
8
|
return;
|
|
9
9
|
await executeHook(() => hook.hookFn(pageContext), hook, pageContext);
|
|
10
10
|
}
|
|
11
|
-
async function executeHookGenericGlobalCumulative(hookName, pageConfigGlobal, pageContext) {
|
|
11
|
+
async function executeHookGenericGlobalCumulative(hookName, pageConfigGlobal, pageContext, arg) {
|
|
12
12
|
const hooks = getHookFromPageConfigGlobalCumulative(pageConfigGlobal, hookName);
|
|
13
13
|
await Promise.all(hooks.map(async (hook) => {
|
|
14
|
-
await executeHook(() => hook.hookFn(
|
|
14
|
+
await executeHook(() => hook.hookFn(arg), hook, pageContext);
|
|
15
15
|
}));
|
|
16
16
|
}
|
|
@@ -41,11 +41,11 @@ import type { InjectFilterEntry } from '../../types/index.js';
|
|
|
41
41
|
import type { VikeVitePluginOptions } from '../../node/plugin/index.js';
|
|
42
42
|
import type { Vike, VikePackages } from '../VikeNamespace.js';
|
|
43
43
|
import type { HooksTimeoutProvidedByUser } from '../hooks/getHook.js';
|
|
44
|
-
import type { PageContextClient, PageContextServer } from '../types.js';
|
|
44
|
+
import type { GlobalContext, PageContextClient, PageContextServer } from '../types.js';
|
|
45
45
|
import type { InlineConfig } from 'vite';
|
|
46
46
|
type HookName = HookNamePage | HookNameGlobal | HookNameOldDesign;
|
|
47
47
|
type HookNamePage = 'onHydrationEnd' | 'onBeforePrerenderStart' | 'onBeforeRender' | 'onPageTransitionStart' | 'onPageTransitionEnd' | 'onRenderHtml' | 'onRenderClient' | 'guard' | 'data';
|
|
48
|
-
type HookNameGlobal = 'onBeforePrerender' | 'onBeforeRoute' | 'onPrerenderStart' | 'onCreatePageContext';
|
|
48
|
+
type HookNameGlobal = 'onBeforePrerender' | 'onBeforeRoute' | 'onPrerenderStart' | 'onCreatePageContext' | 'onCreateGlobalContext';
|
|
49
49
|
type HookNameOldDesign = 'render' | 'prerender';
|
|
50
50
|
type ConfigNameBuiltIn = Exclude<keyof Config, keyof VikeVitePluginOptions | 'onBeforeRoute' | 'onPrerenderStart' | 'vite' | 'redirects'> | 'prerender' | 'isClientRuntimeLoaded' | 'onBeforeRenderEnv' | 'dataEnv' | 'hooksTimeout' | 'clientHooks' | 'middleware';
|
|
51
51
|
type ConfigNameGlobal = 'onPrerenderStart' | 'onBeforeRoute' | 'prerender' | 'disableAutoFullBuild' | 'includeAssetsImportedByServer' | 'baseAssets' | 'baseServer' | 'redirects' | 'trailingSlash' | 'disableUrlNormalization' | 'vite';
|
|
@@ -334,7 +334,12 @@ type ConfigBuiltIn = {
|
|
|
334
334
|
*
|
|
335
335
|
* https://vike.dev/onCreatePageContext
|
|
336
336
|
*/
|
|
337
|
-
onCreatePageContext?: (pageContext: PageContextServer) => void | ImportString | null;
|
|
337
|
+
onCreatePageContext?: ((pageContext: PageContextServer) => void) | ImportString | null;
|
|
338
|
+
/** Hook called when the `globalContext` object is created.
|
|
339
|
+
*
|
|
340
|
+
* https://vike.dev/onCreateGlobalContext
|
|
341
|
+
*/
|
|
342
|
+
onCreateGlobalContext?: ((globalContext: GlobalContext) => void) | ImportString | null;
|
|
338
343
|
/** Hook for fetching data.
|
|
339
344
|
*
|
|
340
345
|
* https://vike.dev/data
|
|
@@ -1,22 +1,28 @@
|
|
|
1
|
-
export { PageContext };
|
|
2
|
-
export { PageContextServer };
|
|
3
|
-
export { PageContextClient };
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
8
|
-
export {
|
|
9
|
-
export {
|
|
1
|
+
export type { PageContext };
|
|
2
|
+
export type { PageContextServer };
|
|
3
|
+
export type { PageContextClient };
|
|
4
|
+
export type { GlobalContext };
|
|
5
|
+
export type { GlobalContextServer };
|
|
6
|
+
export type { GlobalContextClient };
|
|
7
|
+
export type { PageContextWithServerRouting };
|
|
8
|
+
export type { PageContextClientWithServerRouting };
|
|
9
|
+
export type { GlobalContextClientWithServerRouting };
|
|
10
|
+
export type { PageContextBuiltInServerInternal };
|
|
11
|
+
export type { PageContextBuiltInServer_deprecated as PageContextBuiltInServer };
|
|
12
|
+
export type { PageContextBuiltInClientWithClientRouting_deprecated as PageContextBuiltInClientWithClientRouting };
|
|
13
|
+
export type { PageContextBuiltInClientWithServerRouting_deprecated as PageContextBuiltInClientWithServerRouting };
|
|
10
14
|
import type { PageContextUrlInternal, PageContextUrlClient, PageContextUrlServer } from './getPageContextUrlComputed.js';
|
|
11
15
|
import type { ConfigEntries, ExportsAll, From, Source, Sources } from './page-configs/getPageConfigUserFriendly.js';
|
|
12
16
|
import type { Config } from './page-configs/Config.js';
|
|
13
17
|
import type { PageContextConfig } from './page-configs/Config/PageContextConfig.js';
|
|
14
18
|
import type { AbortStatusCode } from './route/abort.js';
|
|
15
|
-
import type {
|
|
16
|
-
import type {
|
|
19
|
+
import type { GlobalContextServer } from '../node/runtime/globalContext.js';
|
|
20
|
+
import type { GlobalContextClient } from '../client/client-routing-runtime/globalContext.js';
|
|
21
|
+
import type { GlobalContextClientWithServerRouting } from '../client/server-routing-runtime/globalContext.js';
|
|
17
22
|
type PageContextServer<Data = unknown> = PageContextBuiltInServer<Data> & Vike.PageContext;
|
|
18
23
|
type PageContext<Data = unknown> = PageContextClient<Data> | PageContextServer<Data>;
|
|
19
24
|
type PageContextClient<Data = unknown> = PageContextBuiltInClientWithClientRouting<Data> & Vike.PageContext;
|
|
25
|
+
type GlobalContext = GlobalContextServer | GlobalContextClient;
|
|
20
26
|
type PageContextWithServerRouting<Data = unknown> = PageContextClientWithServerRouting<Data> | PageContextServer<Data>;
|
|
21
27
|
type PageContextClientWithServerRouting<Data = unknown> = PageContextBuiltInClientWithServerRouting<Data> & Vike.PageContext;
|
|
22
28
|
type PageContextBuiltInCommon<Data> = {
|
|
@@ -152,7 +158,7 @@ type PageContextBuiltInServer<Data> = PageContextBuiltInCommon<Data> & PageConte
|
|
|
152
158
|
*
|
|
153
159
|
* https://vike.dev/getGlobalContext
|
|
154
160
|
*/
|
|
155
|
-
globalContext:
|
|
161
|
+
globalContext: GlobalContextServer;
|
|
156
162
|
isHydration?: undefined;
|
|
157
163
|
isBackwardNavigation?: undefined;
|
|
158
164
|
previousPageContext?: undefined;
|
|
@@ -172,6 +178,7 @@ type PageContextBuiltInClientWithClientRouting<Data> = Partial<PageContextBuiltI
|
|
|
172
178
|
* https://vike.dev/pageContext
|
|
173
179
|
*/
|
|
174
180
|
previousPageContext: PageContextClient<Data> | null;
|
|
181
|
+
globalContext: GlobalContextClient;
|
|
175
182
|
} & PageContextUrlClient;
|
|
176
183
|
type PageContextBuiltInClientWithServerRouting<Data> = Partial<PageContextBuiltInCommon<Data>> & Pick<PageContextBuiltInCommon<Data>, 'Page' | 'pageExports' | 'exports' | 'abortReason' | 'pageId' | 'data'> & PageContextClientCommon & {
|
|
177
184
|
/**
|
|
@@ -186,6 +193,7 @@ type PageContextBuiltInClientWithServerRouting<Data> = Partial<PageContextBuiltI
|
|
|
186
193
|
* The `isBackwardNavigation` property only works with Client Routing. (The value is always `null` when using Server Routing.)
|
|
187
194
|
*/
|
|
188
195
|
isBackwardNavigation: null;
|
|
196
|
+
globalContext: GlobalContextClientWithServerRouting;
|
|
189
197
|
};
|
|
190
198
|
type PageContextClientCommon = {
|
|
191
199
|
/**
|
|
@@ -203,7 +211,6 @@ type PageContextClientCommon = {
|
|
|
203
211
|
* https://vike.dev/pageContext
|
|
204
212
|
*/
|
|
205
213
|
isPrerendering: false;
|
|
206
|
-
globalContext: GlobalContextPublicClientSide;
|
|
207
214
|
};
|
|
208
215
|
/** For Vike internal use */
|
|
209
216
|
type PageContextBuiltInServerInternal = Omit<PageContextBuiltInCommon<unknown> & PageContextUrlInternal, 'data'>;
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
export type { PageContext } from '../shared/types.js';
|
|
2
|
-
export type { PageContextServer } from '../shared/types.js';
|
|
3
|
-
export type { PageContextClient } from '../shared/types.js';
|
|
4
|
-
export type { PageContextWithServerRouting } from '../shared/types.js';
|
|
5
|
-
export type { PageContextClientWithServerRouting } from '../shared/types.js';
|
|
1
|
+
export type { PageContext, PageContextServer, PageContextClient, GlobalContext, GlobalContextServer, GlobalContextClient, PageContextWithServerRouting, PageContextClientWithServerRouting, GlobalContextClientWithServerRouting } from '../shared/types.js';
|
|
6
2
|
export type { PageContextBuiltInServer } from '../shared/types.js';
|
|
7
3
|
export type { PageContextBuiltInClientWithClientRouting } from '../shared/types.js';
|
|
8
4
|
export type { PageContextBuiltInClientWithServerRouting } from '../shared/types.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const PROJECT_VERSION: "0.4.228-commit-
|
|
1
|
+
export declare const PROJECT_VERSION: "0.4.228-commit-558224a";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Automatically updated by @brillout/release-me
|
|
2
|
-
export const PROJECT_VERSION = '0.4.228-commit-
|
|
2
|
+
export const PROJECT_VERSION = '0.4.228-commit-558224a';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { catchInfiniteLoop };
|
|
2
|
-
import {
|
|
2
|
+
import { assertUsage, assertWarning } from './assert.js';
|
|
3
3
|
const trackers = {};
|
|
4
4
|
function catchInfiniteLoop(functionName, maxNumberOfCalls = 100, withinSeconds = 5) {
|
|
5
5
|
// Init
|
|
@@ -12,14 +12,14 @@ function catchInfiniteLoop(functionName, maxNumberOfCalls = 100, withinSeconds =
|
|
|
12
12
|
// Count
|
|
13
13
|
tracker.count++;
|
|
14
14
|
// Error
|
|
15
|
-
const msg = `[Infinite Loop]
|
|
15
|
+
const msg = `[Infinite Loop] Rendering ${tracker.count} times within ${withinSeconds} seconds [${functionName}]`;
|
|
16
16
|
if (tracker.count > maxNumberOfCalls) {
|
|
17
|
-
|
|
17
|
+
assertUsage(false, msg);
|
|
18
18
|
}
|
|
19
19
|
// Warning, at 50% threshold
|
|
20
20
|
if (!tracker.warned && tracker.count > maxNumberOfCalls * 0.5) {
|
|
21
21
|
// Warning is shown upon 10 calls a second, on average during 5 seconds, given the default parameters
|
|
22
|
-
assertWarning(false, msg, { onlyOnce: false });
|
|
22
|
+
assertWarning(false, msg, { onlyOnce: false, showStackTrace: true });
|
|
23
23
|
tracker.warned = true;
|
|
24
24
|
}
|
|
25
25
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { getGlobalObject };
|
|
2
2
|
export { assertIsSingleModuleInstance };
|
|
3
|
-
type Key = `${string}
|
|
3
|
+
type Key = `${string}.ts`;
|
|
4
4
|
/** Share information across module instances. */
|
|
5
5
|
declare function getGlobalObject<T extends Record<string, unknown> = never>(key: Key, defaultValue: T): T;
|
|
6
6
|
/** Assert that the module is instantiated only once. */
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export { getPublicProxy };
|
|
2
|
+
// We use a proxy instead of property getters.
|
|
3
|
+
// - The issue with property getters is that they can't be `writable: true` but we do want the user to be able to modify the value of internal properties.
|
|
4
|
+
// ```console
|
|
5
|
+
// TypeError: Invalid property descriptor. Cannot both specify accessors and a value or writable attribute, #<Object>
|
|
6
|
+
// ```
|
|
7
|
+
// - Previous implementation using property getters: https://github.com/vikejs/vike/blob/main/vike/utils/makePublicCopy.ts
|
|
8
|
+
import { assert, assertWarning } from './assert.js';
|
|
9
|
+
// Show warning when user is accessing internal `_` properties.
|
|
10
|
+
function getPublicProxy(obj, objName, propsPublic, expectCustomUserLandProps) {
|
|
11
|
+
if (!expectCustomUserLandProps) {
|
|
12
|
+
Object.keys(obj).forEach((key) => assert(key.startsWith('_') || propsPublic.includes(key)));
|
|
13
|
+
propsPublic.forEach((prop) => prop in obj);
|
|
14
|
+
}
|
|
15
|
+
return new Proxy(obj, {
|
|
16
|
+
get(_, prop) {
|
|
17
|
+
const propStr = String(prop);
|
|
18
|
+
if (propStr.startsWith('_')) {
|
|
19
|
+
assertWarning(false, `Using internal ${objName}.${propStr} which may break in any minor version update. Reach out on GitHub and elaborate your use case so that the Vike team can add official support for your use case.`, { onlyOnce: true });
|
|
20
|
+
}
|
|
21
|
+
// @ts-ignore Seems to be TypeScript bug
|
|
22
|
+
return Reflect.get(...arguments);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { objectAssign };
|
|
2
|
-
declare function objectAssign<Obj extends object, ObjAddendum extends object | null>(obj: Obj, objAddendum: ObjAddendum, objAddendumCanBePageContextObject?: true): asserts obj is Obj & ObjAddendum;
|
|
2
|
+
declare function objectAssign<Obj extends object, ObjAddendum extends object | null | undefined>(obj: Obj, objAddendum: ObjAddendum, objAddendumCanBePageContextObject?: true): asserts obj is Obj & ObjAddendum;
|
|
@@ -4,9 +4,9 @@ import { assert } from './assert.js';
|
|
|
4
4
|
// - With type inference
|
|
5
5
|
// - Preserves property descriptors, which we need for preserving the getters of getPageContextUrlComputed()
|
|
6
6
|
function objectAssign(obj, objAddendum, objAddendumCanBePageContextObject) {
|
|
7
|
-
if (objAddendum)
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
if (!objAddendum)
|
|
8
|
+
return;
|
|
9
|
+
if (!objAddendumCanBePageContextObject)
|
|
10
|
+
assert(!('_isPageContextObject' in objAddendum));
|
|
11
|
+
Object.defineProperties(obj, Object.getOwnPropertyDescriptors(objAddendum));
|
|
12
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function objectReplace(
|
|
1
|
+
export declare function objectReplace<T extends object>(objOld: T, objNew: T, except?: string[]): void;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export function objectReplace(
|
|
2
|
-
Object.keys(
|
|
1
|
+
export function objectReplace(objOld, objNew, except) {
|
|
2
|
+
Object.keys(objOld)
|
|
3
3
|
.filter((key) => !except?.includes(key))
|
|
4
|
-
.forEach((key) => delete
|
|
5
|
-
Object.
|
|
4
|
+
.forEach((key) => delete objOld[key]);
|
|
5
|
+
Object.defineProperties(objOld, Object.getOwnPropertyDescriptors(objNew));
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vike",
|
|
3
|
-
"version": "0.4.228-commit-
|
|
3
|
+
"version": "0.4.228-commit-558224a",
|
|
4
4
|
"repository": "https://github.com/vikejs/vike",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./server": {
|
|
@@ -255,7 +255,7 @@
|
|
|
255
255
|
"@types/source-map-support": "^0.5.10",
|
|
256
256
|
"react-streaming": "^0.3.47",
|
|
257
257
|
"rimraf": "^5.0.5",
|
|
258
|
-
"typescript": "^5.8.
|
|
258
|
+
"typescript": "^5.8.3",
|
|
259
259
|
"vite": "^6.2.5"
|
|
260
260
|
},
|
|
261
261
|
"scripts": {
|