vike 0.4.224 → 0.4.225-commit-2b7971f
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/shared/getPageContextProxyForUser.js +3 -66
- package/dist/cjs/node/api/build.js +1 -1
- package/dist/cjs/node/api/context.js +4 -4
- package/dist/cjs/node/api/dev.js +1 -1
- package/dist/cjs/node/api/prepareViteApiCall.js +25 -14
- package/dist/cjs/node/api/prerender.js +1 -1
- package/dist/cjs/node/api/preview.js +1 -1
- package/dist/cjs/node/cli/context.js +5 -4
- package/dist/cjs/node/cli/entry.js +3 -3
- package/dist/cjs/node/cli/parseCli.js +43 -15
- package/dist/cjs/node/cli/utils.js +1 -1
- package/dist/cjs/node/plugin/plugins/build/pluginBuildEntry.js +1 -1
- package/dist/cjs/node/plugin/plugins/commonConfig.js +16 -11
- package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +6 -4
- package/dist/cjs/node/plugin/plugins/devConfig/index.js +1 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/index.js +14 -10
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +10 -2
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +11 -12
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +139 -84
- package/dist/cjs/node/plugin/plugins/previewConfig.js +12 -7
- package/dist/cjs/node/plugin/plugins/setGlobalContext.js +10 -1
- package/dist/cjs/node/plugin/shared/addSsrMiddleware.js +5 -1
- package/dist/cjs/node/plugin/shared/getEnvVarObject.js +9 -8
- package/dist/cjs/node/plugin/shared/loggerNotProd/log.js +1 -1
- package/dist/cjs/node/prerender/context.js +1 -1
- package/dist/cjs/node/prerender/resolvePrerenderConfig.js +33 -18
- package/dist/cjs/node/prerender/runPrerender.js +12 -18
- package/dist/cjs/node/prerender/utils.js +1 -1
- package/dist/cjs/node/runtime/globalContext.js +9 -5
- package/dist/cjs/node/runtime/html/injectAssets/getViteDevScript.js +6 -3
- package/dist/cjs/node/runtime/html/serializePageContextClientSide.js +67 -14
- package/dist/cjs/node/runtime/html/stream.js +7 -0
- package/dist/cjs/node/runtime/renderPage/createHttpResponse/assertNoInfiniteHttpRedirect.js +14 -5
- package/dist/cjs/node/runtime/renderPage/createHttpResponse.js +2 -4
- package/dist/cjs/node/runtime/renderPage/logErrorHint.js +6 -1
- package/dist/cjs/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +3 -0
- package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +18 -12
- package/dist/cjs/node/runtime/renderPage.js +19 -38
- package/dist/cjs/node/runtime/utils.js +0 -1
- package/dist/cjs/node/runtime-dev/createDevMiddleware.js +10 -8
- package/dist/cjs/node/shared/assertV1Design.js +2 -1
- package/dist/cjs/node/shared/utils.js +0 -1
- package/dist/cjs/shared/NOT_SERIALIZABLE.js +5 -0
- package/dist/cjs/shared/page-configs/getConfigDefinedAt.js +19 -2
- package/dist/cjs/shared/page-configs/getConfigValueBuildTime.js +8 -5
- package/dist/cjs/shared/page-configs/helpers.js +1 -1
- package/dist/cjs/shared/page-configs/serialize/parsePageConfigs.js +2 -5
- package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +9 -5
- package/dist/cjs/shared/route/loadPageRoutes.js +2 -2
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/assert.js +12 -5
- package/dist/cjs/utils/assertSingleInstance.js +11 -17
- package/dist/cjs/utils/debug.js +2 -1
- package/dist/cjs/utils/getRandomId.js +1 -1
- package/dist/cjs/utils/normalizeHeaders.js +1 -1
- package/dist/cjs/utils/objectAssign.js +7 -2
- package/dist/cjs/utils/parseUrl-extras.js +1 -0
- package/dist/esm/client/client-routing-runtime/createPageContext.d.ts +3 -1
- package/dist/esm/client/client-routing-runtime/createPageContext.js +4 -3
- package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +1 -1
- package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +6 -3
- package/dist/esm/client/server-routing-runtime/getPageContext.js +6 -3
- package/dist/esm/client/shared/getPageContextProxyForUser.d.ts +1 -11
- package/dist/esm/client/shared/getPageContextProxyForUser.js +4 -67
- package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.d.ts +2 -2
- package/dist/esm/node/api/build.js +1 -1
- package/dist/esm/node/api/context.d.ts +8 -2
- package/dist/esm/node/api/context.js +4 -4
- package/dist/esm/node/api/dev.js +1 -1
- package/dist/esm/node/api/prepareViteApiCall.d.ts +2 -2
- package/dist/esm/node/api/prepareViteApiCall.js +25 -14
- package/dist/esm/node/api/prerender.js +1 -1
- package/dist/esm/node/api/preview.js +1 -1
- package/dist/esm/node/api/types.d.ts +7 -0
- package/dist/esm/node/cli/context.d.ts +4 -2
- package/dist/esm/node/cli/context.js +5 -4
- package/dist/esm/node/cli/entry.js +4 -4
- package/dist/esm/node/cli/parseCli.d.ts +3 -0
- package/dist/esm/node/cli/parseCli.js +44 -16
- package/dist/esm/node/cli/utils.d.ts +1 -1
- package/dist/esm/node/cli/utils.js +1 -1
- package/dist/esm/node/plugin/plugins/build/pluginBuildEntry.js +2 -2
- package/dist/esm/node/plugin/plugins/commonConfig.d.ts +1 -0
- package/dist/esm/node/plugin/plugins/commonConfig.js +16 -11
- package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +6 -4
- package/dist/esm/node/plugin/plugins/devConfig/index.js +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/index.js +15 -11
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.d.ts +3 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +10 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.d.ts +5 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +11 -12
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +3 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +141 -85
- package/dist/esm/node/plugin/plugins/previewConfig.js +12 -7
- package/dist/esm/node/plugin/plugins/setGlobalContext.js +11 -2
- package/dist/esm/node/plugin/shared/addSsrMiddleware.d.ts +1 -1
- package/dist/esm/node/plugin/shared/addSsrMiddleware.js +5 -1
- package/dist/esm/node/plugin/shared/getEnvVarObject.d.ts +3 -1
- package/dist/esm/node/plugin/shared/getEnvVarObject.js +9 -8
- package/dist/esm/node/plugin/shared/loggerNotProd/log.js +2 -2
- package/dist/esm/node/prerender/context.js +1 -1
- package/dist/esm/node/prerender/resolvePrerenderConfig.d.ts +2 -1
- package/dist/esm/node/prerender/resolvePrerenderConfig.js +34 -19
- package/dist/esm/node/prerender/runPrerender.js +13 -19
- 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 +1 -1
- package/dist/esm/node/runtime/globalContext.js +10 -6
- package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.js +6 -3
- package/dist/esm/node/runtime/html/serializePageContextClientSide.d.ts +2 -0
- package/dist/esm/node/runtime/html/serializePageContextClientSide.js +69 -15
- package/dist/esm/node/runtime/html/stream.js +7 -0
- package/dist/esm/node/runtime/index-deprecated.d.ts +1 -3
- package/dist/esm/node/runtime/renderPage/createHttpResponse/assertNoInfiniteHttpRedirect.d.ts +3 -1
- package/dist/esm/node/runtime/renderPage/createHttpResponse/assertNoInfiniteHttpRedirect.js +15 -6
- package/dist/esm/node/runtime/renderPage/createHttpResponse.d.ts +3 -1
- package/dist/esm/node/runtime/renderPage/createHttpResponse.js +2 -4
- package/dist/esm/node/runtime/renderPage/logErrorHint.js +6 -1
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +3 -0
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +32 -6
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +18 -12
- package/dist/esm/node/runtime/renderPage.js +21 -40
- package/dist/esm/node/runtime/utils.d.ts +0 -1
- package/dist/esm/node/runtime/utils.js +0 -1
- package/dist/esm/node/runtime-dev/createDevMiddleware.js +10 -8
- package/dist/esm/node/shared/assertV1Design.js +2 -1
- package/dist/esm/node/shared/utils.d.ts +0 -1
- package/dist/esm/node/shared/utils.js +0 -1
- package/dist/esm/shared/NOT_SERIALIZABLE.d.ts +1 -0
- package/dist/esm/shared/NOT_SERIALIZABLE.js +2 -0
- package/dist/esm/shared/page-configs/Config.d.ts +23 -3
- package/dist/esm/shared/page-configs/PageConfig.d.ts +17 -6
- package/dist/esm/shared/page-configs/getConfigDefinedAt.d.ts +5 -3
- package/dist/esm/shared/page-configs/getConfigDefinedAt.js +20 -3
- package/dist/esm/shared/page-configs/getConfigValueBuildTime.js +8 -5
- package/dist/esm/shared/page-configs/helpers.js +1 -1
- package/dist/esm/shared/page-configs/serialize/parsePageConfigs.d.ts +1 -1
- package/dist/esm/shared/page-configs/serialize/parsePageConfigs.js +2 -5
- package/dist/esm/shared/page-configs/serialize/serializeConfigValues.d.ts +3 -3
- package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +9 -5
- package/dist/esm/shared/route/abort.d.ts +2 -2
- package/dist/esm/shared/route/loadPageRoutes.js +2 -2
- package/dist/esm/shared/types.d.ts +39 -3
- package/dist/esm/types/index.d.ts +2 -0
- package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/utils/assert.d.ts +2 -1
- package/dist/esm/utils/assert.js +12 -5
- package/dist/esm/utils/assertSingleInstance.js +11 -17
- package/dist/esm/utils/debug.js +2 -1
- package/dist/esm/utils/getRandomId.d.ts +1 -1
- package/dist/esm/utils/getRandomId.js +1 -1
- package/dist/esm/utils/normalizeHeaders.js +1 -1
- package/dist/esm/utils/objectAssign.d.ts +1 -1
- package/dist/esm/utils/objectAssign.js +7 -2
- package/dist/esm/utils/parseUrl-extras.js +1 -0
- package/package.json +6 -3
- package/dist/cjs/shared/notSerializable.js +0 -5
- package/dist/cjs/utils/projectInfo.js +0 -8
- package/dist/esm/shared/notSerializable.d.ts +0 -1
- package/dist/esm/shared/notSerializable.js +0 -2
- package/dist/esm/utils/projectInfo.d.ts +0 -4
- package/dist/esm/utils/projectInfo.js +0 -5
|
@@ -2,6 +2,7 @@ export { renderPageAlreadyRouted };
|
|
|
2
2
|
export { prerenderPage };
|
|
3
3
|
export { prerender404Page };
|
|
4
4
|
export { getPageContextInitEnhanced };
|
|
5
|
+
export { createPageContext };
|
|
5
6
|
export type { PageContextAfterRender };
|
|
6
7
|
export type { PageContextInitEnhanced };
|
|
7
8
|
import { type PageContextUrlInternal } from '../../../shared/getPageContextUrlComputed.js';
|
|
@@ -32,6 +33,10 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
|
|
|
32
33
|
documentHtml: string;
|
|
33
34
|
pageContextSerialized: null;
|
|
34
35
|
pageContext: {
|
|
36
|
+
_isPageContextObject: boolean;
|
|
37
|
+
isClientSide: boolean;
|
|
38
|
+
isPrerendering: boolean;
|
|
39
|
+
} & Record<string, unknown> & {
|
|
35
40
|
urlOriginal: string;
|
|
36
41
|
headersOriginal?: unknown;
|
|
37
42
|
headers?: unknown;
|
|
@@ -62,7 +67,7 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
|
|
|
62
67
|
pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
63
68
|
onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
64
69
|
pages: import("../../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
|
|
65
|
-
config: import("../../../
|
|
70
|
+
config: import("../../../types/index.js").ConfigResolved;
|
|
66
71
|
} & ({
|
|
67
72
|
isProduction: false;
|
|
68
73
|
isPrerendering: false;
|
|
@@ -118,6 +123,10 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
|
|
|
118
123
|
documentHtml: string;
|
|
119
124
|
pageContextSerialized: string;
|
|
120
125
|
pageContext: {
|
|
126
|
+
_isPageContextObject: boolean;
|
|
127
|
+
isClientSide: boolean;
|
|
128
|
+
isPrerendering: boolean;
|
|
129
|
+
} & Record<string, unknown> & {
|
|
121
130
|
urlOriginal: string;
|
|
122
131
|
headersOriginal?: unknown;
|
|
123
132
|
headers?: unknown;
|
|
@@ -148,7 +157,7 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
|
|
|
148
157
|
pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
149
158
|
onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
150
159
|
pages: import("../../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
|
|
151
|
-
config: import("../../../
|
|
160
|
+
config: import("../../../types/index.js").ConfigResolved;
|
|
152
161
|
} & ({
|
|
153
162
|
isProduction: false;
|
|
154
163
|
isPrerendering: false;
|
|
@@ -205,6 +214,10 @@ declare function prerender404Page(pageContextInit_: Record<string, unknown> | nu
|
|
|
205
214
|
documentHtml: string;
|
|
206
215
|
pageContextSerialized: null;
|
|
207
216
|
pageContext: {
|
|
217
|
+
_isPageContextObject: boolean;
|
|
218
|
+
isClientSide: boolean;
|
|
219
|
+
isPrerendering: boolean;
|
|
220
|
+
} & Record<string, unknown> & {
|
|
208
221
|
urlOriginal: string;
|
|
209
222
|
headersOriginal?: unknown;
|
|
210
223
|
headers?: unknown;
|
|
@@ -235,7 +248,7 @@ declare function prerender404Page(pageContextInit_: Record<string, unknown> | nu
|
|
|
235
248
|
pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
236
249
|
onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
237
250
|
pages: import("../../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
|
|
238
|
-
config: import("../../../
|
|
251
|
+
config: import("../../../types/index.js").ConfigResolved;
|
|
239
252
|
} & ({
|
|
240
253
|
isProduction: false;
|
|
241
254
|
isPrerendering: false;
|
|
@@ -291,6 +304,10 @@ declare function prerender404Page(pageContextInit_: Record<string, unknown> | nu
|
|
|
291
304
|
documentHtml: string;
|
|
292
305
|
pageContextSerialized: string;
|
|
293
306
|
pageContext: {
|
|
307
|
+
_isPageContextObject: boolean;
|
|
308
|
+
isClientSide: boolean;
|
|
309
|
+
isPrerendering: boolean;
|
|
310
|
+
} & Record<string, unknown> & {
|
|
294
311
|
urlOriginal: string;
|
|
295
312
|
headersOriginal?: unknown;
|
|
296
313
|
headers?: unknown;
|
|
@@ -321,7 +338,7 @@ declare function prerender404Page(pageContextInit_: Record<string, unknown> | nu
|
|
|
321
338
|
pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
322
339
|
onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
323
340
|
pages: import("../../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
|
|
324
|
-
config: import("../../../
|
|
341
|
+
config: import("../../../types/index.js").ConfigResolved;
|
|
325
342
|
} & ({
|
|
326
343
|
isProduction: false;
|
|
327
344
|
isPrerendering: false;
|
|
@@ -379,13 +396,17 @@ declare function getPageContextInitEnhanced(pageContextInit: {
|
|
|
379
396
|
urlOriginal: string;
|
|
380
397
|
headersOriginal?: unknown;
|
|
381
398
|
headers?: unknown;
|
|
382
|
-
}, globalContext: GlobalContextInternal, { ssr: { urlRewrite, urlHandler, isClientSideNavigation } }?: {
|
|
399
|
+
}, globalContext: GlobalContextInternal, isPrerendering: boolean, { ssr: { urlRewrite, urlHandler, isClientSideNavigation } }?: {
|
|
383
400
|
ssr?: {
|
|
384
401
|
urlRewrite: null | string;
|
|
385
402
|
urlHandler: null | ((url: string) => string);
|
|
386
403
|
isClientSideNavigation: boolean;
|
|
387
404
|
};
|
|
388
405
|
}): Promise<{
|
|
406
|
+
_isPageContextObject: boolean;
|
|
407
|
+
isClientSide: boolean;
|
|
408
|
+
isPrerendering: boolean;
|
|
409
|
+
} & Record<string, unknown> & {
|
|
389
410
|
urlOriginal: string;
|
|
390
411
|
headersOriginal?: unknown;
|
|
391
412
|
headers?: unknown;
|
|
@@ -416,7 +437,7 @@ declare function getPageContextInitEnhanced(pageContextInit: {
|
|
|
416
437
|
pageRoutes: import("../../../__internal/index.js").PageRoutes;
|
|
417
438
|
onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
|
|
418
439
|
pages: import("../../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
|
|
419
|
-
config: import("../../../
|
|
440
|
+
config: import("../../../types/index.js").ConfigResolved;
|
|
420
441
|
} & ({
|
|
421
442
|
isProduction: false;
|
|
422
443
|
isPrerendering: false;
|
|
@@ -450,3 +471,8 @@ declare function getPageContextInitEnhanced(pageContextInit: {
|
|
|
450
471
|
} & {
|
|
451
472
|
headers: Record<string, string> | null;
|
|
452
473
|
}>;
|
|
474
|
+
declare function createPageContext(pageContextInit: Record<string, unknown>, isPrerendering: boolean): {
|
|
475
|
+
_isPageContextObject: boolean;
|
|
476
|
+
isClientSide: boolean;
|
|
477
|
+
isPrerendering: boolean;
|
|
478
|
+
} & Record<string, unknown>;
|
|
@@ -2,6 +2,7 @@ export { renderPageAlreadyRouted };
|
|
|
2
2
|
export { prerenderPage };
|
|
3
3
|
export { prerender404Page };
|
|
4
4
|
export { getPageContextInitEnhanced };
|
|
5
|
+
export { createPageContext };
|
|
5
6
|
import { getErrorPageId } from '../../../shared/error-page.js';
|
|
6
7
|
import { getHtmlString } from '../html/renderHtml.js';
|
|
7
8
|
import { assert, assertUsage, assertWarning, hasProp, normalizeHeaders, objectAssign } from '../utils.js';
|
|
@@ -84,7 +85,11 @@ async function prerender404Page(pageContextInit_, globalContext) {
|
|
|
84
85
|
if (!errorPageId) {
|
|
85
86
|
return null;
|
|
86
87
|
}
|
|
87
|
-
|
|
88
|
+
// A URL is required for `viteDevServer.transformIndexHtml(url,html)`
|
|
89
|
+
const pageContextInit = { urlOriginal: '/fake-404-url' };
|
|
90
|
+
objectAssign(pageContextInit, pageContextInit_);
|
|
91
|
+
const pageContext = await getPageContextInitEnhanced(pageContextInit, globalContext, true);
|
|
92
|
+
objectAssign(pageContext, {
|
|
88
93
|
pageId: errorPageId,
|
|
89
94
|
_httpRequestId: null,
|
|
90
95
|
_urlRewrite: null,
|
|
@@ -93,25 +98,17 @@ async function prerender404Page(pageContextInit_, globalContext) {
|
|
|
93
98
|
// `prerender404Page()` is about generating `dist/client/404.html` for static hosts; there is no Client Routing.
|
|
94
99
|
_usesClientRouter: false,
|
|
95
100
|
_debugRouteMatches: []
|
|
96
|
-
};
|
|
97
|
-
const pageContextInit = {
|
|
98
|
-
urlOriginal: '/fake-404-url' // A URL is needed for `applyViteHtmlTransform`
|
|
99
|
-
};
|
|
100
|
-
objectAssign(pageContextInit, pageContextInit_);
|
|
101
|
-
{
|
|
102
|
-
const pageContextInitEnhanced = await getPageContextInitEnhanced(pageContextInit, globalContext);
|
|
103
|
-
objectAssign(pageContext, pageContextInitEnhanced);
|
|
104
|
-
}
|
|
101
|
+
});
|
|
105
102
|
objectAssign(pageContext, await loadUserFilesServerSide(pageContext));
|
|
106
103
|
return prerenderPage(pageContext);
|
|
107
104
|
}
|
|
108
|
-
async function getPageContextInitEnhanced(pageContextInit, globalContext, { ssr: { urlRewrite, urlHandler, isClientSideNavigation } = {
|
|
105
|
+
async function getPageContextInitEnhanced(pageContextInit, globalContext, isPrerendering, { ssr: { urlRewrite, urlHandler, isClientSideNavigation } = {
|
|
109
106
|
urlRewrite: null,
|
|
110
107
|
urlHandler: null,
|
|
111
108
|
isClientSideNavigation: false
|
|
112
109
|
} } = {}) {
|
|
113
110
|
assert(pageContextInit.urlOriginal);
|
|
114
|
-
const pageContextInitEnhanced =
|
|
111
|
+
const pageContextInitEnhanced = createPageContext(pageContextInit, isPrerendering);
|
|
115
112
|
objectAssign(pageContextInitEnhanced, pageContextInit);
|
|
116
113
|
objectAssign(pageContextInitEnhanced, {
|
|
117
114
|
_objectCreatedByVike: true,
|
|
@@ -158,3 +155,12 @@ async function getPageContextInitEnhanced(pageContextInit, globalContext, { ssr:
|
|
|
158
155
|
}
|
|
159
156
|
return pageContextInitEnhanced;
|
|
160
157
|
}
|
|
158
|
+
function createPageContext(pageContextInit, isPrerendering) {
|
|
159
|
+
const pageContext = {
|
|
160
|
+
_isPageContextObject: true,
|
|
161
|
+
isClientSide: false,
|
|
162
|
+
isPrerendering
|
|
163
|
+
};
|
|
164
|
+
objectAssign(pageContext, pageContextInit);
|
|
165
|
+
return pageContext;
|
|
166
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export { renderPage };
|
|
2
2
|
export { renderPage_addAsyncHookwrapper };
|
|
3
|
-
import { getPageContextInitEnhanced, renderPageAlreadyRouted } from './renderPage/renderPageAlreadyRouted.js';
|
|
3
|
+
import { getPageContextInitEnhanced, renderPageAlreadyRouted, createPageContext } from './renderPage/renderPageAlreadyRouted.js';
|
|
4
4
|
import { route } from '../../shared/route/index.js';
|
|
5
|
-
import { assert, hasProp, objectAssign, isUrl, parseUrl, onSetupRuntime, assertWarning, getGlobalObject, checkType, assertUsage, normalizeUrlPathname, removeBaseServer, modifyUrlPathname, prependBase, removeUrlOrigin, setUrlOrigin,
|
|
5
|
+
import { assert, hasProp, objectAssign, isUrl, parseUrl, onSetupRuntime, assertWarning, getGlobalObject, checkType, assertUsage, normalizeUrlPathname, removeBaseServer, modifyUrlPathname, prependBase, removeUrlOrigin, setUrlOrigin, isUri, getUrlPretty } from './utils.js';
|
|
6
6
|
import { assertNoInfiniteAbortLoop, getPageContextFromAllRewrites, isAbortError, logAbortErrorHandled } from '../../shared/route/abort.js';
|
|
7
7
|
import { getGlobalContextInternal, initGlobalContext_renderPage } from './globalContext.js';
|
|
8
8
|
import { handlePageContextRequestUrl } from './renderPage/handlePageContextRequestUrl.js';
|
|
@@ -103,15 +103,9 @@ async function renderPageAlreadyPrepared(pageContextInit, globalContext, httpReq
|
|
|
103
103
|
// https://stackoverflow.com/questions/9683007/detect-infinite-http-redirect-loop-on-server-side
|
|
104
104
|
0);
|
|
105
105
|
let pageContextNominalPageSuccess;
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
objectAssign(pageContextNominalPageInit, pageContextFromAllRewrites);
|
|
110
|
-
}
|
|
111
|
-
{
|
|
112
|
-
const pageContextInitEnhanced = await getPageContextInitEnhancedSSR(pageContextInit, globalContext, pageContextNominalPageInit._urlRewrite, httpRequestId);
|
|
113
|
-
objectAssign(pageContextNominalPageInit, pageContextInitEnhanced);
|
|
114
|
-
}
|
|
106
|
+
const pageContextFromAllRewrites = getPageContextFromAllRewrites(pageContextsFromRewrite);
|
|
107
|
+
const pageContextNominalPageInit = await getPageContextInitEnhancedSSR(pageContextInit, globalContext, pageContextFromAllRewrites._urlRewrite, httpRequestId);
|
|
108
|
+
objectAssign(pageContextNominalPageInit, pageContextFromAllRewrites);
|
|
115
109
|
let errNominalPage;
|
|
116
110
|
{
|
|
117
111
|
try {
|
|
@@ -242,7 +236,7 @@ function prettyUrl(url) {
|
|
|
242
236
|
return pc.bold(decodeURI(url));
|
|
243
237
|
}
|
|
244
238
|
function getPageContextHttpResponseError(err, pageContextInit, pageContext) {
|
|
245
|
-
const pageContextWithError = createPageContext(pageContextInit);
|
|
239
|
+
const pageContextWithError = createPageContext(pageContextInit, false);
|
|
246
240
|
const httpResponse = createHttpResponseError(pageContext);
|
|
247
241
|
objectAssign(pageContextWithError, {
|
|
248
242
|
httpResponse,
|
|
@@ -250,13 +244,6 @@ function getPageContextHttpResponseError(err, pageContextInit, pageContext) {
|
|
|
250
244
|
});
|
|
251
245
|
return pageContextWithError;
|
|
252
246
|
}
|
|
253
|
-
function createPageContext(pageContextInit) {
|
|
254
|
-
const pageContext = {
|
|
255
|
-
_isPageContextObject: true
|
|
256
|
-
};
|
|
257
|
-
Object.assign(pageContext, pageContextInit);
|
|
258
|
-
return pageContext;
|
|
259
|
-
}
|
|
260
247
|
async function renderPageNominal(pageContext) {
|
|
261
248
|
objectAssign(pageContext, { errorWhileRendering: null });
|
|
262
249
|
// Route
|
|
@@ -281,10 +268,8 @@ async function renderPageNominal(pageContext) {
|
|
|
281
268
|
return pageContextAfterRender;
|
|
282
269
|
}
|
|
283
270
|
async function getPageContextErrorPageInit(pageContextInit, globalContext, errNominalPage, pageContextNominalPagePartial, httpRequestId) {
|
|
284
|
-
const
|
|
271
|
+
const pageContext = await getPageContextInitEnhancedSSR(pageContextInit, globalContext, null, httpRequestId);
|
|
285
272
|
assert(errNominalPage);
|
|
286
|
-
const pageContext = {};
|
|
287
|
-
objectAssign(pageContext, pageContextInitEnhanced);
|
|
288
273
|
objectAssign(pageContext, {
|
|
289
274
|
is404: false,
|
|
290
275
|
errorWhileRendering: errNominalPage,
|
|
@@ -298,7 +283,7 @@ async function getPageContextErrorPageInit(pageContextInit, globalContext, errNo
|
|
|
298
283
|
}
|
|
299
284
|
async function getPageContextInitEnhancedSSR(pageContextInit, globalContext, urlRewrite, httpRequestId) {
|
|
300
285
|
const { isClientSideNavigation, _urlHandler } = handlePageContextUrl(pageContextInit.urlOriginal);
|
|
301
|
-
const pageContextInitEnhanced = await getPageContextInitEnhanced(pageContextInit, globalContext, {
|
|
286
|
+
const pageContextInitEnhanced = await getPageContextInitEnhanced(pageContextInit, globalContext, false, {
|
|
302
287
|
ssr: {
|
|
303
288
|
urlRewrite,
|
|
304
289
|
urlHandler: _urlHandler,
|
|
@@ -341,8 +326,8 @@ async function normalizeUrl(pageContextInit, globalContext, httpRequestId) {
|
|
|
341
326
|
if (!urlNormalized)
|
|
342
327
|
return null;
|
|
343
328
|
logRuntimeInfo?.(`URL normalized from ${pc.cyan(urlOriginal)} to ${pc.cyan(urlNormalized)} (https://vike.dev/url-normalization)`, httpRequestId, 'info');
|
|
344
|
-
const httpResponse = createHttpResponseRedirect({ url: urlNormalized, statusCode: 301 }, pageContextInit
|
|
345
|
-
const pageContextHttpResponse = createPageContext(pageContextInit);
|
|
329
|
+
const httpResponse = createHttpResponseRedirect({ url: urlNormalized, statusCode: 301 }, pageContextInit);
|
|
330
|
+
const pageContextHttpResponse = createPageContext(pageContextInit, false);
|
|
346
331
|
objectAssign(pageContextHttpResponse, { httpResponse });
|
|
347
332
|
return pageContextHttpResponse;
|
|
348
333
|
}
|
|
@@ -383,15 +368,17 @@ async function getPermanentRedirect(pageContextInit, globalContext, httpRequestI
|
|
|
383
368
|
assert(urlTarget !== pageContextInit.urlOriginal);
|
|
384
369
|
}
|
|
385
370
|
logRuntimeInfo?.(`Permanent redirection defined by config.redirects (https://vike.dev/redirects)`, httpRequestId, 'info');
|
|
386
|
-
const httpResponse = createHttpResponseRedirect({ url: urlTarget, statusCode: 301 },
|
|
387
|
-
const pageContextHttpResponse = createPageContext(pageContextInit);
|
|
371
|
+
const httpResponse = createHttpResponseRedirect({ url: urlTarget, statusCode: 301 }, pageContextInit);
|
|
372
|
+
const pageContextHttpResponse = createPageContext(pageContextInit, false);
|
|
388
373
|
objectAssign(pageContextHttpResponse, { httpResponse });
|
|
389
374
|
return pageContextHttpResponse;
|
|
390
375
|
}
|
|
391
376
|
function normalize(url) {
|
|
392
377
|
return url || '/';
|
|
393
378
|
}
|
|
394
|
-
async function handleAbortError(errAbort, pageContextsFromRewrite,
|
|
379
|
+
async function handleAbortError(errAbort, pageContextsFromRewrite,
|
|
380
|
+
// The original `pageContextInit` object passed to `renderPage(pageContextInit)`
|
|
381
|
+
pageContextInit,
|
|
395
382
|
// handleAbortError() creates a new pageContext object and we don't merge pageContextNominalPageInit to it: we only use some pageContextNominalPageInit information.
|
|
396
383
|
pageContextNominalPageInit, httpRequestId, pageContextErrorPageInit, globalContext) {
|
|
397
384
|
logAbortErrorHandled(errAbort, globalContext.isProduction, pageContextNominalPageInit);
|
|
@@ -403,10 +390,10 @@ pageContextNominalPageInit, httpRequestId, pageContextErrorPageInit, globalConte
|
|
|
403
390
|
const abortCall = pageContextAbort._abortCall;
|
|
404
391
|
assert(abortCall);
|
|
405
392
|
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`);
|
|
406
|
-
const pageContext = createPageContext({});
|
|
393
|
+
const pageContext = createPageContext({}, false);
|
|
407
394
|
objectAssign(pageContext, { pageId: errorPageId });
|
|
408
395
|
objectAssign(pageContext, pageContextAbort);
|
|
409
|
-
objectAssign(pageContext, pageContextErrorPageInit);
|
|
396
|
+
objectAssign(pageContext, pageContextErrorPageInit, true);
|
|
410
397
|
objectAssign(pageContext, await loadUserFilesServerSide(pageContext));
|
|
411
398
|
// We include pageContextInit: we don't only serialize pageContextAbort because the error page may need to access pageContextInit
|
|
412
399
|
pageContextSerialized = serializePageContextClientSide(pageContext);
|
|
@@ -427,15 +414,9 @@ pageContextNominalPageInit, httpRequestId, pageContextErrorPageInit, globalConte
|
|
|
427
414
|
return { pageContextReturn };
|
|
428
415
|
}
|
|
429
416
|
if (pageContextAbort._urlRedirect) {
|
|
430
|
-
const pageContextReturn = createPageContext(pageContextInit);
|
|
417
|
+
const pageContextReturn = createPageContext(pageContextInit, false);
|
|
431
418
|
objectAssign(pageContextReturn, pageContextAbort);
|
|
432
|
-
const httpResponse = createHttpResponseRedirect(pageContextAbort._urlRedirect,
|
|
433
|
-
const { pathname, searchOriginal } = pageContextNominalPageInit.urlParsed;
|
|
434
|
-
const urlLogical = createUrlFromComponents(null, pathname, searchOriginal,
|
|
435
|
-
// The server-side doesn't have access to the hash
|
|
436
|
-
null);
|
|
437
|
-
return urlLogical;
|
|
438
|
-
})());
|
|
419
|
+
const httpResponse = createHttpResponseRedirect(pageContextAbort._urlRedirect, pageContextInit);
|
|
439
420
|
objectAssign(pageContextReturn, { httpResponse });
|
|
440
421
|
return { pageContextReturn };
|
|
441
422
|
}
|
|
@@ -448,7 +429,7 @@ async function checkBaseUrl(pageContextInit, globalContext) {
|
|
|
448
429
|
const { isBaseMissing } = parseUrl(urlOriginal, baseServer);
|
|
449
430
|
if (!isBaseMissing)
|
|
450
431
|
return;
|
|
451
|
-
const pageContext = createPageContext(pageContextInit);
|
|
432
|
+
const pageContext = createPageContext(pageContextInit, false);
|
|
452
433
|
const httpResponse = createHttpResponseBaseIsMissing(urlOriginal, baseServer);
|
|
453
434
|
objectAssign(pageContext, {
|
|
454
435
|
httpResponse,
|
|
@@ -461,7 +442,7 @@ function renderInvalidRequest(pageContextInit) {
|
|
|
461
442
|
const urlPathnameWithBase = parseUrl(pageContextInit.urlOriginal, '/').pathname;
|
|
462
443
|
assertIsNotViteRequest(urlPathnameWithBase, pageContextInit.urlOriginal);
|
|
463
444
|
if (urlPathnameWithBase.endsWith('/favicon.ico')) {
|
|
464
|
-
const pageContext = createPageContext(pageContextInit);
|
|
445
|
+
const pageContext = createPageContext(pageContextInit, false);
|
|
465
446
|
const httpResponse = createHttpResponseFavicon404();
|
|
466
447
|
objectAssign(pageContext, { httpResponse });
|
|
467
448
|
checkType(pageContext);
|
|
@@ -11,7 +11,6 @@ export * from '../../utils/parseUrl.js';
|
|
|
11
11
|
export * from '../../utils/parseUrl-extras.js';
|
|
12
12
|
export * from '../../utils/slice.js';
|
|
13
13
|
export * from '../../utils/sorter.js';
|
|
14
|
-
export * from '../../utils/projectInfo.js';
|
|
15
14
|
export * from '../../utils/isArray.js';
|
|
16
15
|
export * from '../../utils/isObject.js';
|
|
17
16
|
export * from '../../utils/objectAssign.js';
|
|
@@ -15,7 +15,6 @@ export * from '../../utils/parseUrl.js';
|
|
|
15
15
|
export * from '../../utils/parseUrl-extras.js';
|
|
16
16
|
export * from '../../utils/slice.js';
|
|
17
17
|
export * from '../../utils/sorter.js';
|
|
18
|
-
export * from '../../utils/projectInfo.js';
|
|
19
18
|
export * from '../../utils/isArray.js';
|
|
20
19
|
export * from '../../utils/isObject.js';
|
|
21
20
|
export * from '../../utils/objectAssign.js';
|
|
@@ -9,16 +9,18 @@ import { setGlobalContext_isProduction } from '../runtime/globalContext.js';
|
|
|
9
9
|
*/
|
|
10
10
|
async function createDevMiddleware(options = {}) {
|
|
11
11
|
setGlobalContext_isProduction(false);
|
|
12
|
-
const
|
|
13
|
-
...options
|
|
14
|
-
|
|
15
|
-
...options.viteConfig
|
|
16
|
-
|
|
12
|
+
const optionsMod = {
|
|
13
|
+
...options,
|
|
14
|
+
viteConfig: {
|
|
15
|
+
...options.viteConfig,
|
|
16
|
+
root: options.root ?? options.viteConfig?.root,
|
|
17
|
+
server: {
|
|
18
|
+
...options.viteConfig?.server,
|
|
19
|
+
middlewareMode: options.viteConfig?.server?.middlewareMode ?? true
|
|
20
|
+
}
|
|
17
21
|
}
|
|
18
22
|
};
|
|
19
|
-
|
|
20
|
-
viteConfigFromOptions.root = options.root;
|
|
21
|
-
const { viteConfigEnhanced } = await prepareViteApiCall(viteConfigFromOptions, 'dev');
|
|
23
|
+
const { viteConfigEnhanced } = await prepareViteApiCall(optionsMod, 'dev');
|
|
22
24
|
const server = await createServer(viteConfigEnhanced);
|
|
23
25
|
const devMiddleware = server.middlewares;
|
|
24
26
|
return { devMiddleware, viteServer: server, viteConfig: server.config };
|
|
@@ -10,7 +10,8 @@ function assertV1Design(pageConfigs, pageFilesAll) {
|
|
|
10
10
|
assert(pageConfigs.length > 0);
|
|
11
11
|
const filesV1 = unique(pageConfigs
|
|
12
12
|
.map((p) => Object.values(p.configValueSources).map((sources) => sources
|
|
13
|
-
.map((c) => c.
|
|
13
|
+
.map((c) => c.definedAt)
|
|
14
|
+
.map((definedAt) => (definedAt.definedBy ? null : definedAt.filePathAbsoluteUserRootDir))
|
|
14
15
|
.filter(isNotNullish)
|
|
15
16
|
.map((filePathToShowToUser) => indent + filePathToShowToUser)))
|
|
16
17
|
.flat(2));
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export * from '../../utils/assert.js';
|
|
2
2
|
export * from '../../utils/getFileExtension.js';
|
|
3
3
|
export * from '../../utils/isPlainObject.js';
|
|
4
|
-
export * from '../../utils/projectInfo.js';
|
|
5
4
|
export * from '../../utils/checkType.js';
|
|
6
5
|
export * from '../../utils/hasProp.js';
|
|
7
6
|
export * from '../../utils/objectAssign.js';
|
|
@@ -3,7 +3,6 @@ assertIsNotBrowser();
|
|
|
3
3
|
export * from '../../utils/assert.js';
|
|
4
4
|
export * from '../../utils/getFileExtension.js';
|
|
5
5
|
export * from '../../utils/isPlainObject.js';
|
|
6
|
-
export * from '../../utils/projectInfo.js';
|
|
7
6
|
export * from '../../utils/checkType.js';
|
|
8
7
|
export * from '../../utils/hasProp.js';
|
|
9
8
|
export * from '../../utils/objectAssign.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const NOT_SERIALIZABLE = "__VIKE__NOT_SERIALIZABLE__";
|
|
@@ -297,13 +297,17 @@ type ConfigBuiltIn = {
|
|
|
297
297
|
*/
|
|
298
298
|
disableAutoRun?: boolean;
|
|
299
299
|
/**
|
|
300
|
-
*
|
|
300
|
+
* Whether to enable pre-rendering.
|
|
301
301
|
*
|
|
302
|
-
*
|
|
302
|
+
* Setting `enable: null` enables you to set prerender settings without enabling pre-rendering by default.
|
|
303
|
+
*
|
|
304
|
+
* This is useful, for example, if you want pre-rendering to stay opt-in instead of opt-out while setting pre-render settings globally.
|
|
305
|
+
*
|
|
306
|
+
* https://vike.dev/prerender#enable
|
|
303
307
|
*
|
|
304
308
|
* @default true
|
|
305
309
|
*/
|
|
306
|
-
|
|
310
|
+
enable?: boolean | null;
|
|
307
311
|
};
|
|
308
312
|
/**
|
|
309
313
|
* Install Vike extensions.
|
|
@@ -471,6 +475,22 @@ type ConfigBuiltIn = {
|
|
|
471
475
|
* https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control
|
|
472
476
|
*/
|
|
473
477
|
cacheControl?: string;
|
|
478
|
+
/**
|
|
479
|
+
* Make development/preview server available over LAN and public addresses.
|
|
480
|
+
*
|
|
481
|
+
* Default: `false` (or `true` if running inside Docker/Podman).
|
|
482
|
+
*
|
|
483
|
+
* https://vike.dev/host
|
|
484
|
+
*/
|
|
485
|
+
host?: boolean | string;
|
|
486
|
+
/**
|
|
487
|
+
* Change port of development/preview server.
|
|
488
|
+
*
|
|
489
|
+
* @default 3000
|
|
490
|
+
*
|
|
491
|
+
* https://vike.dev/port
|
|
492
|
+
*/
|
|
493
|
+
port?: number;
|
|
474
494
|
/** Where scripts are injected in the HTML.
|
|
475
495
|
*
|
|
476
496
|
* https://vike.dev/injectScriptsAt
|
|
@@ -17,12 +17,15 @@ export type { ConfigValueSources };
|
|
|
17
17
|
export type { ConfigValuesComputed };
|
|
18
18
|
export type { DefinedAtData };
|
|
19
19
|
export type { DefinedAtFile };
|
|
20
|
+
export type { DefinedAt };
|
|
21
|
+
export type { DefinedBy };
|
|
20
22
|
export type { DefinedAtFilePath };
|
|
21
23
|
import type { ConfigValueSerialized } from './serialize/PageConfigSerialized.js';
|
|
22
24
|
import type { LocationId } from '../../node/plugin/plugins/importUserCode/v1-design/getVikeConfig/filesystemRouting.js';
|
|
23
25
|
import type { FilePath } from './FilePath.js';
|
|
24
26
|
import type { ConfigDefinitions } from '../../node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js';
|
|
25
27
|
import type { PlusFile } from '../../node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.js';
|
|
28
|
+
import type { Operation } from '../../node/api/types.js';
|
|
26
29
|
type PageConfigCommon = {
|
|
27
30
|
pageId: string;
|
|
28
31
|
} & PageConfigRoute;
|
|
@@ -33,7 +36,7 @@ type PageConfigRoute = {
|
|
|
33
36
|
isErrorPage?: undefined;
|
|
34
37
|
routeFilesystem: {
|
|
35
38
|
routeString: string;
|
|
36
|
-
|
|
39
|
+
definedAtLocation: string;
|
|
37
40
|
};
|
|
38
41
|
};
|
|
39
42
|
/** Page config, runtime data structure */
|
|
@@ -89,12 +92,12 @@ type ConfigValueSources = Record<string, // configName
|
|
|
89
92
|
ConfigValueSource[]>;
|
|
90
93
|
type ConfigValueSource = {
|
|
91
94
|
configEnv: ConfigEnvInternal;
|
|
92
|
-
|
|
95
|
+
definedAt: DefinedAtFilePath | DefinedBy;
|
|
93
96
|
plusFile: PlusFile | null;
|
|
94
97
|
locationId: LocationId;
|
|
95
98
|
/** Wether the config value is loaded at runtime, for example config.Page or config.onBeforeRender */
|
|
96
99
|
valueIsLoadedWithImport: boolean;
|
|
97
|
-
/** Whether the config value is a file path, for
|
|
100
|
+
/** Whether the config value is a file path, this is currently only true for +client */
|
|
98
101
|
valueIsFilePath?: true;
|
|
99
102
|
/** Whether the config value is defined by a +{configName}.js file */
|
|
100
103
|
valueIsDefinedByPlusValueFile: boolean;
|
|
@@ -119,13 +122,13 @@ type ConfigValue = ConfigValueStandard | ConfigValueCumulative | ConfigValueComp
|
|
|
119
122
|
type ConfigValueStandard = {
|
|
120
123
|
type: 'standard';
|
|
121
124
|
value: unknown;
|
|
122
|
-
definedAtData:
|
|
125
|
+
definedAtData: DefinedAt;
|
|
123
126
|
};
|
|
124
127
|
/** Defined by multiple sources (thus multiple file paths). */
|
|
125
128
|
type ConfigValueCumulative = {
|
|
126
129
|
type: 'cumulative';
|
|
127
130
|
value: unknown[];
|
|
128
|
-
definedAtData:
|
|
131
|
+
definedAtData: DefinedAt[];
|
|
129
132
|
};
|
|
130
133
|
/** Defined internally by Vike (currently, Vike doesn't support computed configs created by users). */
|
|
131
134
|
type ConfigValueComputed = {
|
|
@@ -133,8 +136,16 @@ type ConfigValueComputed = {
|
|
|
133
136
|
value: unknown;
|
|
134
137
|
definedAtData: null;
|
|
135
138
|
};
|
|
136
|
-
type DefinedAtData =
|
|
139
|
+
type DefinedAtData = DefinedAt | DefinedAt[] | null;
|
|
140
|
+
type DefinedAt = DefinedAtFile | DefinedBy;
|
|
141
|
+
type DefinedBy = {
|
|
142
|
+
definedBy: 'cli' | 'env';
|
|
143
|
+
} | {
|
|
144
|
+
definedBy: 'api';
|
|
145
|
+
operation: Operation;
|
|
146
|
+
};
|
|
137
147
|
type DefinedAtFile = {
|
|
138
148
|
filePathToShowToUser: string;
|
|
139
149
|
fileExportPathToShowToUser: null | string[];
|
|
150
|
+
definedBy?: undefined;
|
|
140
151
|
};
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
export { getConfigDefinedAt };
|
|
2
2
|
export { getConfigDefinedAtOptional };
|
|
3
3
|
export { getDefinedAtString };
|
|
4
|
+
export { getDefinedByString };
|
|
4
5
|
export type { ConfigDefinedAt };
|
|
5
6
|
export type { ConfigDefinedAtOptional };
|
|
6
|
-
import type { DefinedAtData,
|
|
7
|
+
import type { DefinedAtData, DefinedBy } from './PageConfig.js';
|
|
7
8
|
type ConfigDefinedAtOptional = ConfigDefinedAt | `Config ${string} defined internally`;
|
|
8
9
|
type ConfigDefinedAt = `Config ${string} defined at ${string}`;
|
|
9
|
-
declare function getConfigDefinedAt<SentenceBegin extends 'Config' | 'config', ConfigName extends string>(sentenceBegin: SentenceBegin, configName: ConfigName, definedAtData:
|
|
10
|
+
declare function getConfigDefinedAt<SentenceBegin extends 'Config' | 'config', ConfigName extends string>(sentenceBegin: SentenceBegin, configName: ConfigName, definedAtData: NonNullable<DefinedAtData>): `${SentenceBegin} ${ConfigName} defined at ${string}`;
|
|
10
11
|
declare function getConfigDefinedAtOptional<SentenceBegin extends 'Config' | 'config', ConfigName extends string>(sentenceBegin: SentenceBegin, configName: ConfigName, definedAtData: DefinedAtData): `${SentenceBegin} ${ConfigName} defined ${'internally' | `at ${string}`}`;
|
|
11
|
-
declare function getDefinedAtString(definedAtData:
|
|
12
|
+
declare function getDefinedAtString(definedAtData: NonNullable<DefinedAtData>, configName: string): string;
|
|
13
|
+
declare function getDefinedByString(definedAt: DefinedBy, configName: string): `API call dev({ vikeConfig: { ${string} } })` | `API call build({ vikeConfig: { ${string} } })` | `API call preview({ vikeConfig: { ${string} } })` | `API call prerender({ vikeConfig: { ${string} } })` | `CLI option --${string}` | `environment variable VIKE_CONFIG="{${string}}"`;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export { getConfigDefinedAt };
|
|
2
2
|
export { getConfigDefinedAtOptional };
|
|
3
3
|
export { getDefinedAtString };
|
|
4
|
-
|
|
4
|
+
export { getDefinedByString };
|
|
5
|
+
import { assert, checkType, isArray } from '../utils.js';
|
|
5
6
|
import pc from '@brillout/picocolors';
|
|
6
7
|
import { getExportPath } from './getExportPath.js';
|
|
7
8
|
function getConfigDefinedAt(sentenceBegin, configName, definedAtData) {
|
|
@@ -28,8 +29,10 @@ function getDefinedAtString(definedAtData, configName) {
|
|
|
28
29
|
}
|
|
29
30
|
assert(files.length >= 1);
|
|
30
31
|
const definedAtString = files
|
|
31
|
-
.map((
|
|
32
|
-
|
|
32
|
+
.map((definedAt) => {
|
|
33
|
+
if (definedAt.definedBy)
|
|
34
|
+
return getDefinedByString(definedAt, configName);
|
|
35
|
+
const { filePathToShowToUser, fileExportPathToShowToUser } = definedAt;
|
|
33
36
|
let s = filePathToShowToUser;
|
|
34
37
|
const exportPath = getExportPath(fileExportPathToShowToUser, configName);
|
|
35
38
|
if (exportPath) {
|
|
@@ -40,3 +43,17 @@ function getDefinedAtString(definedAtData, configName) {
|
|
|
40
43
|
.join(' / ');
|
|
41
44
|
return definedAtString;
|
|
42
45
|
}
|
|
46
|
+
function getDefinedByString(definedAt, configName) {
|
|
47
|
+
if (definedAt.definedBy === 'api') {
|
|
48
|
+
return `API call ${pc.cyan(`${definedAt.operation}({ vikeConfig: { ${configName} } })`)}`;
|
|
49
|
+
}
|
|
50
|
+
const { definedBy } = definedAt;
|
|
51
|
+
if (definedBy === 'cli') {
|
|
52
|
+
return `CLI option ${pc.cyan(`--${configName}`)}`;
|
|
53
|
+
}
|
|
54
|
+
if (definedBy === 'env') {
|
|
55
|
+
return `environment variable ${pc.cyan(`VIKE_CONFIG="{${configName}}"`)}`;
|
|
56
|
+
}
|
|
57
|
+
checkType(definedBy);
|
|
58
|
+
assert(false);
|
|
59
|
+
}
|
|
@@ -31,7 +31,7 @@ function getConfigValue(pageConfig, configName) {
|
|
|
31
31
|
return {
|
|
32
32
|
type: 'standard',
|
|
33
33
|
value: configValueSource.value,
|
|
34
|
-
definedAtData:
|
|
34
|
+
definedAtData: getDefinedAt(configValueSource)
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
37
|
else {
|
|
@@ -51,13 +51,16 @@ function mergeCumulative(configValueSources) {
|
|
|
51
51
|
assert(configValueSource.configEnv.config === true);
|
|
52
52
|
assert(configValueSource.valueIsLoaded);
|
|
53
53
|
value.push(configValueSource.value);
|
|
54
|
-
definedAtData.push(
|
|
54
|
+
definedAtData.push(getDefinedAt(configValueSource));
|
|
55
55
|
});
|
|
56
56
|
return { value, definedAtData };
|
|
57
57
|
}
|
|
58
|
-
function
|
|
58
|
+
function getDefinedAt(configValueSource) {
|
|
59
|
+
const { definedAt } = configValueSource;
|
|
60
|
+
if (definedAt.definedBy)
|
|
61
|
+
return definedAt;
|
|
59
62
|
return {
|
|
60
|
-
filePathToShowToUser:
|
|
61
|
-
fileExportPathToShowToUser:
|
|
63
|
+
filePathToShowToUser: definedAt.filePathToShowToUser,
|
|
64
|
+
fileExportPathToShowToUser: definedAt.fileExportPathToShowToUser
|
|
62
65
|
};
|
|
63
66
|
}
|
|
@@ -12,7 +12,7 @@ function getConfigValueFilePathToShowToUser(definedAtData) {
|
|
|
12
12
|
// A unique file path only exists if the config value isn't cumulative nor computed:
|
|
13
13
|
// - cumulative config values have multiple file paths
|
|
14
14
|
// - computed values don't have any file path
|
|
15
|
-
if (!definedAtData || isArray(definedAtData))
|
|
15
|
+
if (!definedAtData || isArray(definedAtData) || definedAtData.definedBy)
|
|
16
16
|
return null;
|
|
17
17
|
const { filePathToShowToUser } = definedAtData;
|
|
18
18
|
assert(filePathToShowToUser);
|
|
@@ -3,8 +3,8 @@ export { parseConfigValuesSerialized };
|
|
|
3
3
|
import type { ConfigValues, PageConfigRuntime, PageConfigGlobalRuntime } from '../PageConfig.js';
|
|
4
4
|
import type { PageConfigGlobalRuntimeSerialized, PageConfigRuntimeSerialized } from './PageConfigSerialized.js';
|
|
5
5
|
import type { ConfigValueSerialized } from './PageConfigSerialized.js';
|
|
6
|
-
declare function parseConfigValuesSerialized(configValuesSerialized: Record<string, ConfigValueSerialized>): ConfigValues;
|
|
7
6
|
declare function parsePageConfigs(pageConfigsSerialized: PageConfigRuntimeSerialized[], pageConfigGlobalSerialized: PageConfigGlobalRuntimeSerialized): {
|
|
8
7
|
pageConfigs: PageConfigRuntime[];
|
|
9
8
|
pageConfigGlobal: PageConfigGlobalRuntime;
|
|
10
9
|
};
|
|
10
|
+
declare function parseConfigValuesSerialized(configValuesSerialized: Record<string, ConfigValueSerialized>): ConfigValues;
|