vike 0.4.237-commit-92dc549 → 0.4.237-commit-fd8294f
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/runtime-server-routing/utils.js +1 -1
- package/dist/cjs/node/api/build.js +4 -30
- package/dist/cjs/node/prerender/runPrerender.js +5 -6
- package/dist/cjs/node/runtime/renderPage/analyzePage.js +3 -1
- package/dist/cjs/node/runtime/renderPage/createPageContextServerSide.js +1 -1
- package/dist/cjs/node/runtime/renderPage/execHookOnRenderHtml.js +1 -11
- package/dist/cjs/node/runtime/renderPage/loadPageConfigsLazyServerSide.js +42 -46
- package/dist/cjs/node/runtime/renderPage/{renderPageAlreadyRouted.js → renderPageAfterRoute.js} +3 -4
- package/dist/cjs/node/runtime/renderPage.js +6 -9
- package/dist/cjs/node/runtime/utils.js +1 -1
- package/dist/cjs/node/vite/plugins/pluginBuild/handleAssetsManifest.js +3 -5
- package/dist/cjs/node/vite/plugins/pluginBuild/pluginAutoFullBuild.js +8 -26
- package/dist/cjs/node/vite/plugins/pluginBuild/pluginBuildApp.js +2 -9
- package/dist/cjs/node/vite/plugins/pluginDev/determineOptimizeDeps.js +3 -2
- package/dist/cjs/node/vite/plugins/pluginFileEnv.js +4 -3
- package/dist/cjs/node/vite/shared/getOutDirs.js +5 -4
- package/dist/cjs/node/vite/shared/isViteServerSide.js +46 -19
- package/dist/cjs/shared/page-configs/{loadPageEntry.js → loadAndParseVirtualFilePageEntry.js} +2 -2
- package/dist/cjs/shared/page-configs/resolveVikeConfigPublic.js +5 -0
- package/dist/cjs/shared/route/execHookOnBeforeRoute.js +0 -1
- package/dist/cjs/shared/route/index.js +0 -1
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/{augmentType.js → updateType.js} +3 -3
- package/dist/esm/__internal/index.d.ts +1 -1
- package/dist/esm/client/runtime-client-routing/createPageContextClientSide.js +2 -2
- package/dist/esm/client/runtime-client-routing/renderPageClientSide.js +6 -6
- package/dist/esm/client/runtime-client-routing/utils.d.ts +1 -1
- package/dist/esm/client/runtime-client-routing/utils.js +1 -1
- package/dist/esm/client/runtime-server-routing/createPageContextClientSide.js +3 -3
- package/dist/esm/client/runtime-server-routing/utils.d.ts +1 -1
- package/dist/esm/client/runtime-server-routing/utils.js +1 -1
- package/dist/esm/client/shared/loadPageConfigsLazyClientSide.js +2 -2
- package/dist/esm/node/api/build.js +5 -31
- package/dist/esm/node/prerender/runPrerender.d.ts +9 -300
- package/dist/esm/node/prerender/runPrerender.js +6 -7
- package/dist/esm/node/runtime/renderPage/analyzePage.d.ts +4 -3
- package/dist/esm/node/runtime/renderPage/analyzePage.js +3 -1
- package/dist/esm/node/runtime/renderPage/createPageContextServerSide.js +2 -2
- package/dist/esm/node/runtime/renderPage/execHookOnRenderHtml.d.ts +0 -1
- package/dist/esm/node/runtime/renderPage/execHookOnRenderHtml.js +1 -11
- package/dist/esm/node/runtime/renderPage/getPageAssets.d.ts +2 -4
- package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.d.ts +1 -1
- package/dist/esm/node/runtime/renderPage/loadPageConfigsLazyServerSide.d.ts +105 -19
- package/dist/esm/node/runtime/renderPage/loadPageConfigsLazyServerSide.js +44 -48
- package/dist/esm/node/runtime/renderPage/{renderPageAlreadyRouted.d.ts → renderPageAfterRoute.d.ts} +20 -4
- package/dist/esm/node/runtime/renderPage/{renderPageAlreadyRouted.js → renderPageAfterRoute.js} +5 -6
- package/dist/esm/node/runtime/renderPage.js +8 -11
- package/dist/esm/node/runtime/utils.d.ts +1 -1
- package/dist/esm/node/runtime/utils.js +1 -1
- package/dist/esm/node/vite/plugins/pluginBuild/handleAssetsManifest.d.ts +0 -1
- package/dist/esm/node/vite/plugins/pluginBuild/handleAssetsManifest.js +5 -7
- package/dist/esm/node/vite/plugins/pluginBuild/pluginAutoFullBuild.js +10 -28
- package/dist/esm/node/vite/plugins/pluginBuild/pluginBuildApp.js +2 -9
- package/dist/esm/node/vite/plugins/pluginDev/determineOptimizeDeps.js +3 -2
- package/dist/esm/node/vite/plugins/pluginFileEnv.js +4 -3
- package/dist/esm/node/vite/shared/getOutDirs.js +5 -4
- package/dist/esm/node/vite/shared/isViteServerSide.d.ts +1 -1
- package/dist/esm/node/vite/shared/isViteServerSide.js +46 -19
- package/dist/esm/shared/page-configs/loadAndParseVirtualFilePageEntry.d.ts +3 -0
- package/dist/esm/shared/page-configs/{loadPageEntry.js → loadAndParseVirtualFilePageEntry.js} +2 -2
- package/dist/esm/shared/page-configs/resolveVikeConfigPublic.js +5 -0
- package/dist/esm/shared/route/execHookOnBeforeRoute.d.ts +3 -3
- package/dist/esm/shared/route/execHookOnBeforeRoute.js +0 -1
- package/dist/esm/shared/route/index.d.ts +5 -6
- package/dist/esm/shared/route/index.js +0 -1
- package/dist/esm/types/Config.d.ts +2 -4
- package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/utils/updateType.d.ts +3 -0
- package/dist/esm/utils/updateType.js +7 -0
- package/package.json +3 -3
- package/dist/cjs/node/runtime/renderPage/debugPageFiles.js +0 -52
- package/dist/esm/node/runtime/renderPage/debugPageFiles.d.ts +0 -23
- package/dist/esm/node/runtime/renderPage/debugPageFiles.js +0 -47
- package/dist/esm/shared/page-configs/loadPageEntry.d.ts +0 -3
- package/dist/esm/utils/augmentType.d.ts +0 -3
- package/dist/esm/utils/augmentType.js +0 -7
|
@@ -1,43 +1,39 @@
|
|
|
1
|
-
export {
|
|
2
|
-
import { getPageFilesServerSide
|
|
1
|
+
export { loadPageConfigsLazyServerSide };
|
|
2
|
+
import { getPageFilesServerSide } from '../../../shared/getPageFiles.js';
|
|
3
3
|
import { resolveVikeConfigPublicPageLazyLoaded } from '../../../shared/page-configs/resolveVikeConfigPublic.js';
|
|
4
4
|
import { analyzePageClientSideInit } from '../../../shared/getPageFiles/analyzePageClientSide.js';
|
|
5
|
-
import { assertUsage, assertWarning, hasProp, isArray, isObject, objectAssign } from '../utils.js';
|
|
5
|
+
import { assertUsage, assertWarning, hasProp, isArray, isObject, objectAssign, updateType, } from '../utils.js';
|
|
6
6
|
import { getPageAssets } from './getPageAssets.js';
|
|
7
|
-
import { debugPageFiles } from './debugPageFiles.js';
|
|
8
7
|
import { findPageConfig } from '../../../shared/page-configs/findPageConfig.js';
|
|
9
8
|
import { analyzePage } from './analyzePage.js';
|
|
10
|
-
import {
|
|
9
|
+
import { loadAndParseVirtualFilePageEntry } from '../../../shared/page-configs/loadAndParseVirtualFilePageEntry.js';
|
|
11
10
|
import { execHookServer } from './execHookServer.js';
|
|
12
11
|
import { getCacheControl } from './getCacheControl.js';
|
|
13
|
-
async function
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
async function loadPageConfigsLazyServerSide(pageContext) {
|
|
13
|
+
objectAssign(pageContext, {
|
|
14
|
+
_pageConfig: findPageConfig(pageContext._globalContext._pageConfigs, pageContext.pageId),
|
|
15
|
+
});
|
|
16
|
+
// Load the page's + files
|
|
17
|
+
updateType(pageContext, await loadPageUserFiles(pageContext));
|
|
18
|
+
// Resolve new computed pageContext properties
|
|
19
|
+
updateType(pageContext, await resolvePageContext(pageContext));
|
|
20
|
+
// Execute +onCreatePageContext
|
|
16
21
|
await execHookServer('onCreatePageContext', pageContext);
|
|
17
22
|
return pageContext;
|
|
18
23
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const pageConfig = findPageConfig(pageContext._globalContext._pageConfigs, pageContext.pageId); // Make pageConfig globally available as pageContext._pageConfig ?
|
|
22
|
-
const globalContext = pageContext._globalContext;
|
|
23
|
-
const [{ pageFilesLoaded, configPublicPageLazy }] = await Promise.all([
|
|
24
|
-
loadPageConfigFiles(pageContext._globalContext._pageFilesAll, pageConfig, globalContext._pageConfigGlobal, pageContext.pageId, !globalContext._isProduction),
|
|
25
|
-
analyzePageClientSideInit(pageContext._globalContext._pageFilesAll, pageContext.pageId, {
|
|
26
|
-
sharedPageFilesAlreadyLoaded: true,
|
|
27
|
-
}),
|
|
28
|
-
]);
|
|
29
|
-
const { isHtmlOnly, isClientRouting, clientEntries, clientDependencies, pageFilesClientSide, pageFilesServerSide } = await analyzePage(pageContext._globalContext._pageFilesAll, pageConfig, pageContext.pageId, globalContext);
|
|
30
|
-
const isV1Design = !!pageConfig;
|
|
24
|
+
async function resolvePageContext(pageContext) {
|
|
25
|
+
const { isHtmlOnly, clientEntries, clientDependencies } = analyzePage(pageContext);
|
|
31
26
|
const passToClient = [];
|
|
32
27
|
const errMsgSuffix = ' should be an array of strings.';
|
|
28
|
+
const isV1Design = !!pageContext._pageConfig;
|
|
33
29
|
if (!isV1Design) {
|
|
34
|
-
|
|
30
|
+
pageContext.exportsAll.passToClient?.forEach((e) => {
|
|
35
31
|
assertUsage(hasProp(e, 'exportValue', 'string[]'), `${e.exportSource}${errMsgSuffix}`);
|
|
36
32
|
passToClient.push(...e.exportValue);
|
|
37
33
|
});
|
|
38
34
|
}
|
|
39
35
|
else {
|
|
40
|
-
|
|
36
|
+
pageContext.from.configsCumulative.passToClient?.values.forEach((v) => {
|
|
41
37
|
const { value, definedAt } = v;
|
|
42
38
|
const errMsg = `+passToClient value defined at ${definedAt}${errMsgSuffix}`;
|
|
43
39
|
//*/ TO-DO/next-major-release: remove the passToClient once setting from the public API
|
|
@@ -57,16 +53,13 @@ async function loadPageConfigsLazyServerSide(pageContext) {
|
|
|
57
53
|
passToClient.push(...valS);
|
|
58
54
|
});
|
|
59
55
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
objectAssign(pageContextAddendum, {
|
|
63
|
-
Page: configPublicPageLazy.exports.Page,
|
|
56
|
+
objectAssign(pageContext, {
|
|
57
|
+
Page: pageContext.exports.Page,
|
|
64
58
|
_isHtmlOnly: isHtmlOnly,
|
|
65
59
|
_passToClient: passToClient,
|
|
66
|
-
|
|
67
|
-
headersResponse: resolveHeadersResponse(pageContext, pageContextAddendum),
|
|
60
|
+
headersResponse: resolveHeadersResponse(pageContext),
|
|
68
61
|
});
|
|
69
|
-
objectAssign(
|
|
62
|
+
objectAssign(pageContext, {
|
|
70
63
|
__getPageAssets: async () => {
|
|
71
64
|
if ('_pageAssets' in pageContext) {
|
|
72
65
|
return pageContext._pageAssets;
|
|
@@ -79,14 +72,14 @@ async function loadPageConfigsLazyServerSide(pageContext) {
|
|
|
79
72
|
},
|
|
80
73
|
});
|
|
81
74
|
// TO-DO/next-major-release: remove
|
|
82
|
-
Object.assign(
|
|
75
|
+
Object.assign(pageContext, {
|
|
83
76
|
_getPageAssets: async () => {
|
|
84
77
|
assertWarning(false, 'pageContext._getPageAssets() deprecated, see https://vike.dev/preloading', {
|
|
85
78
|
onlyOnce: true,
|
|
86
79
|
showStackTrace: true,
|
|
87
80
|
});
|
|
88
81
|
const pageAssetsOldFormat = [];
|
|
89
|
-
(await
|
|
82
|
+
(await pageContext.__getPageAssets()).forEach((p) => {
|
|
90
83
|
if (p.assetType === 'script' && p.isEntry) {
|
|
91
84
|
pageAssetsOldFormat.push({
|
|
92
85
|
src: p.src,
|
|
@@ -105,30 +98,33 @@ async function loadPageConfigsLazyServerSide(pageContext) {
|
|
|
105
98
|
return pageAssetsOldFormat;
|
|
106
99
|
},
|
|
107
100
|
});
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
return
|
|
101
|
+
return pageContext;
|
|
102
|
+
}
|
|
103
|
+
async function loadPageUserFiles(pageContext) {
|
|
104
|
+
const [{ configPublicPageLazy }] = await Promise.all([
|
|
105
|
+
loadPageUserFiles_v1Design(pageContext),
|
|
106
|
+
analyzePageClientSideInit(pageContext._globalContext._pageFilesAll, pageContext.pageId, {
|
|
107
|
+
sharedPageFilesAlreadyLoaded: true,
|
|
108
|
+
}),
|
|
109
|
+
]);
|
|
110
|
+
objectAssign(pageContext, configPublicPageLazy);
|
|
111
|
+
return pageContext;
|
|
119
112
|
}
|
|
120
|
-
async function
|
|
121
|
-
const pageFilesServerSide = getPageFilesServerSide(
|
|
122
|
-
const
|
|
113
|
+
async function loadPageUserFiles_v1Design(pageContext) {
|
|
114
|
+
const pageFilesServerSide = getPageFilesServerSide(pageContext._pageFilesAll, pageContext.pageId);
|
|
115
|
+
const isDev = !pageContext._globalContext._isProduction;
|
|
116
|
+
const pageConfigLoaded = !pageContext._pageConfig
|
|
117
|
+
? null
|
|
118
|
+
: await loadAndParseVirtualFilePageEntry(pageContext._pageConfig, isDev);
|
|
123
119
|
await Promise.all(pageFilesServerSide.map((p) => p.loadFile?.()));
|
|
124
|
-
const configPublicPageLazy = resolveVikeConfigPublicPageLazyLoaded(pageFilesServerSide, pageConfigLoaded,
|
|
120
|
+
const configPublicPageLazy = resolveVikeConfigPublicPageLazyLoaded(pageFilesServerSide, pageConfigLoaded, pageContext._globalContext._pageConfigGlobal);
|
|
125
121
|
return {
|
|
126
122
|
configPublicPageLazy,
|
|
127
123
|
pageFilesLoaded: pageFilesServerSide,
|
|
128
124
|
};
|
|
129
125
|
}
|
|
130
|
-
function resolveHeadersResponse(pageContext
|
|
131
|
-
const headersResponse = mergeHeaders(
|
|
126
|
+
function resolveHeadersResponse(pageContext) {
|
|
127
|
+
const headersResponse = mergeHeaders(pageContext.config.headersResponse);
|
|
132
128
|
if (!headersResponse.get('Cache-Control')) {
|
|
133
129
|
const cacheControl = getCacheControl(pageContext.pageId, pageContext._globalContext._pageConfigs);
|
|
134
130
|
if (cacheControl)
|
package/dist/esm/node/runtime/renderPage/{renderPageAlreadyRouted.d.ts → renderPageAfterRoute.d.ts}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { renderPageAfterRoute };
|
|
2
2
|
export { prerenderPage };
|
|
3
3
|
export type { PageContextAfterRender };
|
|
4
4
|
import { type PageContextUrlInternal } from '../../../shared/getPageContextUrlComputed.js';
|
|
@@ -10,7 +10,7 @@ type PageContextAfterRender = {
|
|
|
10
10
|
httpResponse: HttpResponse;
|
|
11
11
|
errorWhileRendering: null | Error;
|
|
12
12
|
};
|
|
13
|
-
declare function
|
|
13
|
+
declare function renderPageAfterRoute<PageContext extends {
|
|
14
14
|
pageId: string;
|
|
15
15
|
_pageContextAlreadyProvidedByOnPrerenderHook?: true;
|
|
16
16
|
is404: null | boolean;
|
|
@@ -118,11 +118,19 @@ declare function prerenderPage(pageContext: PageContextCreated & PageConfigsLazy
|
|
|
118
118
|
url: string;
|
|
119
119
|
} & {
|
|
120
120
|
headers: Record<string, string> | null;
|
|
121
|
+
} & import("../../../shared/route/index.js").PageContextAfterRoute & {
|
|
122
|
+
is404: boolean | null;
|
|
123
|
+
pageId: string;
|
|
124
|
+
} & {
|
|
125
|
+
_pageConfig: import("../../../types/PageConfig.js").PageConfigRuntime | null;
|
|
126
|
+
} & {
|
|
127
|
+
_pageConfig: null | import("../../../types/PageConfig.js").PageConfigRuntime;
|
|
121
128
|
} & import("../../../shared/getPageFiles.js").VikeConfigPublicPageLazyLoaded & {
|
|
129
|
+
_pageConfig: null | import("../../../types/PageConfig.js").PageConfigRuntime;
|
|
130
|
+
} & {
|
|
122
131
|
Page: unknown;
|
|
123
132
|
_isHtmlOnly: boolean;
|
|
124
133
|
_passToClient: import("../html/serializeContext.js").PassToClient;
|
|
125
|
-
_pageFilePathsLoaded: string[];
|
|
126
134
|
headersResponse: Headers;
|
|
127
135
|
} & {
|
|
128
136
|
__getPageAssets: () => Promise<import("./getPageAssets.js").PageAsset[]>;
|
|
@@ -229,11 +237,19 @@ declare function prerenderPage(pageContext: PageContextCreated & PageConfigsLazy
|
|
|
229
237
|
url: string;
|
|
230
238
|
} & {
|
|
231
239
|
headers: Record<string, string> | null;
|
|
240
|
+
} & import("../../../shared/route/index.js").PageContextAfterRoute & {
|
|
241
|
+
is404: boolean | null;
|
|
242
|
+
pageId: string;
|
|
243
|
+
} & {
|
|
244
|
+
_pageConfig: import("../../../types/PageConfig.js").PageConfigRuntime | null;
|
|
245
|
+
} & {
|
|
246
|
+
_pageConfig: null | import("../../../types/PageConfig.js").PageConfigRuntime;
|
|
232
247
|
} & import("../../../shared/getPageFiles.js").VikeConfigPublicPageLazyLoaded & {
|
|
248
|
+
_pageConfig: null | import("../../../types/PageConfig.js").PageConfigRuntime;
|
|
249
|
+
} & {
|
|
233
250
|
Page: unknown;
|
|
234
251
|
_isHtmlOnly: boolean;
|
|
235
252
|
_passToClient: import("../html/serializeContext.js").PassToClient;
|
|
236
|
-
_pageFilePathsLoaded: string[];
|
|
237
253
|
headersResponse: Headers;
|
|
238
254
|
} & {
|
|
239
255
|
__getPageAssets: () => Promise<import("./getPageAssets.js").PageAsset[]>;
|
package/dist/esm/node/runtime/renderPage/{renderPageAlreadyRouted.js → renderPageAfterRoute.js}
RENAMED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { renderPageAfterRoute };
|
|
2
2
|
export { prerenderPage };
|
|
3
3
|
import { getErrorPageId } from '../../../shared/error-page.js';
|
|
4
4
|
import { getHtmlString } from '../html/renderHtml.js';
|
|
5
|
-
import { assert, assertUsage,
|
|
5
|
+
import { assert, assertUsage, updateType, hasProp, objectAssign } from '../utils.js';
|
|
6
6
|
import { getPageContextClientSerialized } from '../html/serializeContext.js';
|
|
7
7
|
import { createHttpResponsePage, createHttpResponsePageContextJson } from './createHttpResponse.js';
|
|
8
|
-
import {
|
|
8
|
+
import { loadPageConfigsLazyServerSide, } from './loadPageConfigsLazyServerSide.js';
|
|
9
9
|
import { execHookOnRenderHtml } from './execHookOnRenderHtml.js';
|
|
10
10
|
import { execHookDataAndOnBeforeRender } from './execHookDataAndOnBeforeRender.js';
|
|
11
11
|
import { logRuntimeError } from '../loggerRuntime.js';
|
|
@@ -14,8 +14,7 @@ import { preparePageContextForPublicUsageServer } from './preparePageContextForP
|
|
|
14
14
|
import { execHookGuard } from '../../../shared/route/execHookGuard.js';
|
|
15
15
|
import pc from '@brillout/picocolors';
|
|
16
16
|
import { isServerSideError } from '../../../shared/misc/isServerSideError.js';
|
|
17
|
-
|
|
18
|
-
async function renderPageAlreadyRouted(pageContext) {
|
|
17
|
+
async function renderPageAfterRoute(pageContext) {
|
|
19
18
|
// pageContext.pageId can either be the:
|
|
20
19
|
// - ID of the page matching the routing, or the
|
|
21
20
|
// - ID of the error page `_error.page.js`.
|
|
@@ -24,7 +23,7 @@ async function renderPageAlreadyRouted(pageContext) {
|
|
|
24
23
|
assert(isError ===
|
|
25
24
|
(pageContext.pageId ===
|
|
26
25
|
getErrorPageId(pageContext._globalContext._pageFilesAll, pageContext._globalContext._pageConfigs)));
|
|
27
|
-
|
|
26
|
+
updateType(pageContext, await loadPageConfigsLazyServerSide(pageContext));
|
|
28
27
|
if (!isError) {
|
|
29
28
|
await execHookGuard(pageContext, (pageContext) => preparePageContextForPublicUsageServer(pageContext));
|
|
30
29
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export { renderPage };
|
|
2
2
|
export { renderPage_addAsyncHookwrapper };
|
|
3
|
-
import {
|
|
3
|
+
import { renderPageAfterRoute } from './renderPage/renderPageAfterRoute.js';
|
|
4
4
|
import { createPageContextServerSide, createPageContextServerSideWithoutGlobalContext, } from './renderPage/createPageContextServerSide.js';
|
|
5
5
|
import { route } from '../../shared/route/index.js';
|
|
6
|
-
import { assert, hasProp, objectAssign, isUrl, parseUrl, onSetupRuntime, assertWarning, getGlobalObject, checkType, assertUsage, normalizeUrlPathname, removeBaseServer, modifyUrlPathname, prependBase, removeUrlOrigin, setUrlOrigin, isUri, getUrlPretty,
|
|
6
|
+
import { assert, hasProp, objectAssign, isUrl, parseUrl, onSetupRuntime, assertWarning, getGlobalObject, checkType, assertUsage, normalizeUrlPathname, removeBaseServer, modifyUrlPathname, prependBase, removeUrlOrigin, setUrlOrigin, isUri, getUrlPretty, updateType, } from './utils.js';
|
|
7
7
|
import { assertNoInfiniteAbortLoop, getPageContextFromAllRewrites, isAbortError, logAbortErrorHandled, } from '../../shared/route/abort.js';
|
|
8
8
|
import { getGlobalContextServerInternal, initGlobalContext_renderPage, } from './globalContext.js';
|
|
9
9
|
import { handlePageContextRequestUrl } from './renderPage/handlePageContextRequestUrl.js';
|
|
@@ -16,7 +16,7 @@ import pc from '@brillout/picocolors';
|
|
|
16
16
|
import { getPageContextClientSerializedAbort, getPageContextClientSerialized } from './html/serializeContext.js';
|
|
17
17
|
import { getErrorPageId } from '../../shared/error-page.js';
|
|
18
18
|
import { handleErrorWithoutErrorPage } from './renderPage/handleErrorWithoutErrorPage.js';
|
|
19
|
-
import {
|
|
19
|
+
import { loadPageConfigsLazyServerSide } from './renderPage/loadPageConfigsLazyServerSide.js';
|
|
20
20
|
import { resolveRedirects } from './renderPage/resolveRedirects.js';
|
|
21
21
|
import { getVikeConfigError } from '../shared/getVikeConfigError.js';
|
|
22
22
|
const globalObject = getGlobalObject('runtime/renderPage.ts', {
|
|
@@ -153,7 +153,7 @@ async function renderPageAlreadyPrepared(pageContextBegin, globalContext, httpRe
|
|
|
153
153
|
async function renderPageOnError(errNominalPage, pageContextBegin, pageContextNominalPageBegin, globalContext, httpRequestId, pageContextsFromRewrite) {
|
|
154
154
|
assert(pageContextNominalPageBegin);
|
|
155
155
|
assert(hasProp(pageContextNominalPageBegin, 'urlOriginal', 'string'));
|
|
156
|
-
const pageContextErrorPageInit = await getPageContextErrorPageInit(pageContextBegin, errNominalPage
|
|
156
|
+
const pageContextErrorPageInit = await getPageContextErrorPageInit(pageContextBegin, errNominalPage);
|
|
157
157
|
// Handle `throw redirect()` and `throw render()` while rendering nominal page
|
|
158
158
|
if (isAbortError(errNominalPage)) {
|
|
159
159
|
const handled = await handleAbortError(errNominalPage, pageContextsFromRewrite, pageContextBegin, pageContextNominalPageBegin, httpRequestId, pageContextErrorPageInit, globalContext);
|
|
@@ -178,7 +178,7 @@ async function renderPageOnError(errNominalPage, pageContextBegin, pageContextNo
|
|
|
178
178
|
}
|
|
179
179
|
let pageContextErrorPage;
|
|
180
180
|
try {
|
|
181
|
-
pageContextErrorPage = await
|
|
181
|
+
pageContextErrorPage = await renderPageAfterRoute(pageContextErrorPageInit);
|
|
182
182
|
}
|
|
183
183
|
catch (errErrorPage) {
|
|
184
184
|
// Handle `throw redirect()` and `throw render()` while rendering error page
|
|
@@ -293,11 +293,11 @@ async function renderPageNominal(pageContext) {
|
|
|
293
293
|
assert(hasProp(pageContext, 'pageId', 'string'));
|
|
294
294
|
assert(pageContext.errorWhileRendering === null);
|
|
295
295
|
// Render
|
|
296
|
-
const pageContextAfterRender = await
|
|
296
|
+
const pageContextAfterRender = await renderPageAfterRoute(pageContext);
|
|
297
297
|
assert(pageContext === pageContextAfterRender);
|
|
298
298
|
return pageContextAfterRender;
|
|
299
299
|
}
|
|
300
|
-
async function getPageContextErrorPageInit(pageContextBegin, errNominalPage
|
|
300
|
+
async function getPageContextErrorPageInit(pageContextBegin, errNominalPage) {
|
|
301
301
|
const pageContext = forkPageContext(pageContextBegin);
|
|
302
302
|
assert(errNominalPage);
|
|
303
303
|
objectAssign(pageContext, {
|
|
@@ -305,9 +305,6 @@ async function getPageContextErrorPageInit(pageContextBegin, errNominalPage, pag
|
|
|
305
305
|
errorWhileRendering: errNominalPage,
|
|
306
306
|
routeParams: {},
|
|
307
307
|
});
|
|
308
|
-
objectAssign(pageContext, {
|
|
309
|
-
_debugRouteMatches: pageContextNominalPagePartial._debugRouteMatches || 'ROUTING_ERROR',
|
|
310
|
-
});
|
|
311
308
|
assert(pageContext.errorWhileRendering);
|
|
312
309
|
return pageContext;
|
|
313
310
|
}
|
|
@@ -423,7 +420,7 @@ pageContextNominalPageBegin, httpRequestId, pageContextErrorPageInit, globalCont
|
|
|
423
420
|
objectAssign(pageContext, { pageId: errorPageId });
|
|
424
421
|
objectAssign(pageContext, pageContextAbort);
|
|
425
422
|
objectAssign(pageContext, pageContextErrorPageInit, true);
|
|
426
|
-
|
|
423
|
+
updateType(pageContext, await loadPageConfigsLazyServerSide(pageContext));
|
|
427
424
|
// We include pageContextInit: we don't only serialize pageContextAbort because the error page may need to access pageContextInit
|
|
428
425
|
pageContextSerialized = getPageContextClientSerialized(pageContext, false);
|
|
429
426
|
}
|
|
@@ -55,7 +55,7 @@ export * from '../../utils/isVikeReactApp.js';
|
|
|
55
55
|
export * from '../../utils/getPropAccessNotation.js';
|
|
56
56
|
export * from '../../utils/PROJECT_VERSION.js';
|
|
57
57
|
export * from '../../utils/genPromise.js';
|
|
58
|
-
export * from '../../utils/
|
|
58
|
+
export * from '../../utils/updateType.js';
|
|
59
59
|
export * from '../../utils/changeEnumerable.js';
|
|
60
60
|
export * from '../../utils/getViteRPC.js';
|
|
61
61
|
export * from '../../utils/isRunnableDevEnvironment.js';
|
|
@@ -59,7 +59,7 @@ export * from '../../utils/isVikeReactApp.js';
|
|
|
59
59
|
export * from '../../utils/getPropAccessNotation.js';
|
|
60
60
|
export * from '../../utils/PROJECT_VERSION.js';
|
|
61
61
|
export * from '../../utils/genPromise.js';
|
|
62
|
-
export * from '../../utils/
|
|
62
|
+
export * from '../../utils/updateType.js';
|
|
63
63
|
export * from '../../utils/changeEnumerable.js';
|
|
64
64
|
export * from '../../utils/getViteRPC.js';
|
|
65
65
|
export * from '../../utils/isRunnableDevEnvironment.js';
|
|
@@ -12,7 +12,6 @@ declare function handleAssetsManifest_getBuildConfig(config: UserConfig): Promis
|
|
|
12
12
|
readonly ssrEmitAssets: true | undefined;
|
|
13
13
|
readonly cssMinify: "esbuild" | undefined;
|
|
14
14
|
readonly manifest: true;
|
|
15
|
-
readonly copyPublicDir: boolean | undefined;
|
|
16
15
|
}>;
|
|
17
16
|
declare function handleAssetsManifest(config: ResolvedConfig, viteEnv: Environment, options: {
|
|
18
17
|
dir: string | undefined;
|
|
@@ -11,9 +11,9 @@ import { assert, assertWarning, getGlobalObject, isEqualStringList, isObject, pL
|
|
|
11
11
|
import { parseVirtualFileId } from '../../../shared/virtualFileId.js';
|
|
12
12
|
import { getAssetsDir } from '../../shared/getAssetsDir.js';
|
|
13
13
|
import pc from '@brillout/picocolors';
|
|
14
|
-
import {
|
|
14
|
+
import { isV1Design } from '../../shared/resolveVikeConfigInternal.js';
|
|
15
15
|
import { getOutDirs } from '../../shared/getOutDirs.js';
|
|
16
|
-
import { isViteServerSide_onlySsrEnv, isViteServerSide
|
|
16
|
+
import { isViteServerSide_onlySsrEnv, isViteServerSide } from '../../shared/isViteServerSide.js';
|
|
17
17
|
import { set_macro_ASSETS_MANIFEST } from './pluginBuildEntry.js';
|
|
18
18
|
import { getManifestFilePathRelative } from '../../shared/getManifestFilePathRelative.js';
|
|
19
19
|
const globalObject = getGlobalObject('build/handleAssetsManifest.ts', {
|
|
@@ -280,7 +280,6 @@ async function writeManifestFile(manifest, manifestFilePath) {
|
|
|
280
280
|
await fs.writeFile(manifestFilePath, manifestFileContent, 'utf-8');
|
|
281
281
|
}
|
|
282
282
|
async function handleAssetsManifest_getBuildConfig(config) {
|
|
283
|
-
const vikeConfig = await getVikeConfigInternal();
|
|
284
283
|
const isFixEnabled = handleAssetsManifest_isFixEnabled(config);
|
|
285
284
|
return {
|
|
286
285
|
// https://github.com/vikejs/vike/issues/1339
|
|
@@ -288,10 +287,9 @@ async function handleAssetsManifest_getBuildConfig(config) {
|
|
|
288
287
|
// Required if `ssrEmitAssets: true`, see https://github.com/vitejs/vite/pull/11430#issuecomment-1454800934
|
|
289
288
|
cssMinify: isFixEnabled ? 'esbuild' : undefined,
|
|
290
289
|
manifest: true,
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
: !isViteServerSide_withoutEnv(config),
|
|
290
|
+
/* Already set by vike:build:pluginBuildApp
|
|
291
|
+
copyPublicDir: !isViteServerSide_withoutEnv(config),
|
|
292
|
+
*/
|
|
295
293
|
};
|
|
296
294
|
}
|
|
297
295
|
async function handleAssetsManifest(config, viteEnv, options, bundle) {
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export { pluginAutoFullBuild };
|
|
2
2
|
export { isPrerenderForceExit };
|
|
3
|
-
import { build } from 'vite';
|
|
4
3
|
import { assert, assertWarning, getGlobalObject, onSetupBuild } from '../../utils.js';
|
|
5
4
|
import { isPrerenderAutoRunEnabled, wasPrerenderRun } from '../../../prerender/context.js';
|
|
6
5
|
import { isViteCliCall, getViteConfigFromCli } from '../../shared/isViteCliCall.js';
|
|
@@ -9,8 +8,8 @@ import { logErrorHint } from '../../../runtime/renderPage/logErrorHint.js';
|
|
|
9
8
|
import { getVikeConfigInternal } from '../../shared/resolveVikeConfigInternal.js';
|
|
10
9
|
import { isVikeCliOrApi } from '../../../api/context.js';
|
|
11
10
|
import { handleAssetsManifest, handleAssetsManifest_assertUsageCssTarget } from './handleAssetsManifest.js';
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
11
|
+
import { isViteServerSide_onlySsrEnv } from '../../shared/isViteServerSide.js';
|
|
12
|
+
import { runPrerenderFromAutoRun } from '../../../prerender/runPrerenderEntry.js';
|
|
14
13
|
import { getManifestFilePathRelative } from '../../shared/getManifestFilePathRelative.js';
|
|
15
14
|
const globalObject = getGlobalObject('build/pluginAutoFullBuild.ts', {
|
|
16
15
|
forceExit: false,
|
|
@@ -54,16 +53,12 @@ function pluginAutoFullBuild() {
|
|
|
54
53
|
closeBundle: {
|
|
55
54
|
sequential: true,
|
|
56
55
|
order: 'post',
|
|
57
|
-
|
|
56
|
+
handler() {
|
|
58
57
|
onSetupBuild();
|
|
59
58
|
handleAssetsManifest_assertUsageCssTarget(config, this.environment);
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
!vikeConfig.config.vite6BuilderApp) {
|
|
64
|
-
runPrerender_forceExit();
|
|
65
|
-
assert(false);
|
|
66
|
-
}
|
|
59
|
+
/* Let vike:build:pluginBuildApp force exit
|
|
60
|
+
runPrerender_forceExit()
|
|
61
|
+
*/
|
|
67
62
|
},
|
|
68
63
|
},
|
|
69
64
|
},
|
|
@@ -72,10 +67,9 @@ function pluginAutoFullBuild() {
|
|
|
72
67
|
async function triggerFullBuild(config, viteEnv, bundle) {
|
|
73
68
|
const vikeConfig = await getVikeConfigInternal();
|
|
74
69
|
// Whether builder.buildApp() is being used, see plugin:build:pluginBuildApp
|
|
75
|
-
const isBuilderApp = vikeConfig.config.vite6BuilderApp;
|
|
76
70
|
// If builder.buildApp() => trigger at end of `this.environment.name === 'ssr'`.
|
|
77
71
|
// Else => trigger at end of client-side build.
|
|
78
|
-
if (
|
|
72
|
+
if (!isViteServerSide_onlySsrEnv(config, viteEnv))
|
|
79
73
|
return;
|
|
80
74
|
if (isEntirelyDisabled(vikeConfig))
|
|
81
75
|
return;
|
|
@@ -86,27 +80,15 @@ async function triggerFullBuild(config, viteEnv, bundle) {
|
|
|
86
80
|
if (!bundle[getManifestFilePathRelative(config.build.manifest)])
|
|
87
81
|
return;
|
|
88
82
|
const configInline = getFullBuildInlineConfig(config);
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
else {
|
|
93
|
-
// The server build is already called by builder.buildApp()
|
|
94
|
-
}
|
|
83
|
+
/* Already triggered by vike:build:pluginBuildApp
|
|
84
|
+
await build(setSSR(configInline))
|
|
85
|
+
*/
|
|
95
86
|
if (isPrerenderAutoRunEnabled(vikeConfig)) {
|
|
96
87
|
const res = await runPrerenderFromAutoRun(configInline);
|
|
97
88
|
globalObject.forceExit = res.forceExit;
|
|
98
89
|
assert(wasPrerenderRun());
|
|
99
90
|
}
|
|
100
91
|
}
|
|
101
|
-
function setSSR(configInline) {
|
|
102
|
-
return {
|
|
103
|
-
...configInline,
|
|
104
|
-
build: {
|
|
105
|
-
...configInline.build,
|
|
106
|
-
ssr: true,
|
|
107
|
-
},
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
92
|
async function abortViteBuildSsr() {
|
|
111
93
|
const vikeConfig = await getVikeConfigInternal();
|
|
112
94
|
if (vikeConfig.config.disableAutoFullBuild !== true && isViteCliCall() && getViteConfigFromCli()?.build.ssr) {
|
|
@@ -3,7 +3,6 @@ import { runPrerender_forceExit } from '../../../prerender/runPrerenderEntry.js'
|
|
|
3
3
|
import { resolveOutDir } from '../../shared/getOutDirs.js';
|
|
4
4
|
import { assert } from '../../utils.js';
|
|
5
5
|
import { isPrerenderForceExit } from './pluginAutoFullBuild.js';
|
|
6
|
-
import { getVikeConfigInternal } from '../../shared/resolveVikeConfigInternal.js';
|
|
7
6
|
function pluginBuildApp() {
|
|
8
7
|
return [
|
|
9
8
|
{
|
|
@@ -12,10 +11,7 @@ function pluginBuildApp() {
|
|
|
12
11
|
enforce: 'pre',
|
|
13
12
|
config: {
|
|
14
13
|
order: 'pre',
|
|
15
|
-
|
|
16
|
-
const vikeConfig = await getVikeConfigInternal();
|
|
17
|
-
if (!vikeConfig.config.vite6BuilderApp)
|
|
18
|
-
return;
|
|
14
|
+
handler(_config) {
|
|
19
15
|
return {
|
|
20
16
|
builder: {
|
|
21
17
|
// Can be overridden by another plugin e.g vike-vercel https://github.com/vikejs/vike/pull/2184#issuecomment-2659425195
|
|
@@ -37,10 +33,7 @@ function pluginBuildApp() {
|
|
|
37
33
|
{
|
|
38
34
|
name: 'vike:build:pluginBuildApp',
|
|
39
35
|
apply: 'build',
|
|
40
|
-
|
|
41
|
-
const vikeConfig = await getVikeConfigInternal();
|
|
42
|
-
if (!vikeConfig.config.vite6BuilderApp)
|
|
43
|
-
return;
|
|
36
|
+
config(config) {
|
|
44
37
|
return {
|
|
45
38
|
environments: {
|
|
46
39
|
ssr: {
|
|
@@ -13,8 +13,9 @@ async function determineOptimizeDeps(config) {
|
|
|
13
13
|
const { entriesClient, entriesServer, includeClient, includeServer } = await getPageDeps(config, pageConfigs);
|
|
14
14
|
config.optimizeDeps.include = add(config.optimizeDeps.include, includeClient);
|
|
15
15
|
config.optimizeDeps.entries = add(config.optimizeDeps.entries, entriesClient);
|
|
16
|
-
// Workaround
|
|
17
|
-
// -
|
|
16
|
+
// Workaround for https://github.com/vitejs/vite-plugin-react/issues/650
|
|
17
|
+
// - The issue was closed as completed with https://github.com/vitejs/vite/pull/20495 but it doesn't fix the issue and the workaround is still needed.
|
|
18
|
+
// - TO-DO/eventually: try removing the workaround and see if the CI fails (at test/@cloudflare_vite-plugin/) — maybe the issue will get fixed at some point.
|
|
18
19
|
includeServer.push('react/jsx-dev-runtime');
|
|
19
20
|
for (const envName in config.environments) {
|
|
20
21
|
const env = config.environments[envName];
|
|
@@ -7,6 +7,7 @@ import { getModuleFilePathAbsolute } from '../shared/getFilePath.js';
|
|
|
7
7
|
import { getExportNames } from '../shared/parseEsModule.js';
|
|
8
8
|
import { normalizeId } from '../shared/normalizeId.js';
|
|
9
9
|
import { isV1Design } from '../shared/resolveVikeConfigInternal.js';
|
|
10
|
+
import { isViteServerSide, isViteServerSide_extraSafe } from '../shared/isViteServerSide.js';
|
|
10
11
|
function pluginFileEnv() {
|
|
11
12
|
let config;
|
|
12
13
|
let viteDevServer;
|
|
@@ -28,7 +29,7 @@ function pluginFileEnv() {
|
|
|
28
29
|
const importers = Array.from(moduleInfo.importers)
|
|
29
30
|
.map((m) => m.id)
|
|
30
31
|
.filter((id) => id !== null);
|
|
31
|
-
assertFileEnv(id,
|
|
32
|
+
assertFileEnv(id, isViteServerSide_extraSafe(config, options, this.environment), importers,
|
|
32
33
|
// In dev, we only show a warning because we don't want to disrupt when the user plays with settings such as [ssr](https://vike.dev/ssr).
|
|
33
34
|
true);
|
|
34
35
|
},
|
|
@@ -40,7 +41,7 @@ function pluginFileEnv() {
|
|
|
40
41
|
return;
|
|
41
42
|
if (skip(id))
|
|
42
43
|
return;
|
|
43
|
-
const isServerSide =
|
|
44
|
+
const isServerSide = isViteServerSide_extraSafe(config, options, this.environment);
|
|
44
45
|
if (!isWrongEnv(id, isServerSide))
|
|
45
46
|
return;
|
|
46
47
|
const { importers } = this.getModuleInfo(id);
|
|
@@ -66,7 +67,7 @@ function pluginFileEnv() {
|
|
|
66
67
|
*/
|
|
67
68
|
return;
|
|
68
69
|
}
|
|
69
|
-
assertFileEnv(moduleId,
|
|
70
|
+
assertFileEnv(moduleId, isViteServerSide(config, this.environment), importers, false);
|
|
70
71
|
});
|
|
71
72
|
},
|
|
72
73
|
configResolved(config_) {
|
|
@@ -7,7 +7,7 @@ import { isViteServerSide, isViteServerSide_withoutEnv } from './isViteServerSid
|
|
|
7
7
|
const debug = createDebugger('vike:outDir');
|
|
8
8
|
function getOutDirs(configGlobal, viteEnv) {
|
|
9
9
|
debug('getOutDirs()', new Error().stack);
|
|
10
|
-
const outDir = getOutDirFromResolvedConfig(configGlobal);
|
|
10
|
+
const outDir = getOutDirFromResolvedConfig(configGlobal, viteEnv);
|
|
11
11
|
assertOutDirResolved(outDir, configGlobal, viteEnv);
|
|
12
12
|
const outDirs = getOutDirsAll(outDir, configGlobal.root);
|
|
13
13
|
assertNormalization(outDirs.outDirRoot);
|
|
@@ -114,7 +114,8 @@ function assertOutDirResolved(outDir, configGlobal, viteEnv) {
|
|
|
114
114
|
assert('/client'.length === '/server'.length);
|
|
115
115
|
const outDirCorrected = outDir.slice(0, -1 * '/client'.length);
|
|
116
116
|
const wrongUsage = `You've set Vite's config.build.outDir to ${pc.cyan(outDir)} but you should set it to ${pc.cyan(outDirCorrected)} instead.`;
|
|
117
|
-
|
|
117
|
+
const isServerSide = isViteServerSide_withoutEnv(configGlobal, viteEnv);
|
|
118
|
+
if (isServerSide) {
|
|
118
119
|
assertUsage(outDir.endsWith('/server'), wrongUsage);
|
|
119
120
|
}
|
|
120
121
|
else {
|
|
@@ -128,8 +129,8 @@ function getOutDirFromViteUserConfig(config) {
|
|
|
128
129
|
outDir = normalizeOutDir(outDir);
|
|
129
130
|
return outDir;
|
|
130
131
|
}
|
|
131
|
-
function getOutDirFromResolvedConfig(config) {
|
|
132
|
-
let outDir = config.build.outDir;
|
|
132
|
+
function getOutDirFromResolvedConfig(config, viteEnv) {
|
|
133
|
+
let outDir = viteEnv?.config.build?.outDir ?? config.build.outDir;
|
|
133
134
|
assert(outDir);
|
|
134
135
|
outDir = normalizeOutDir(outDir);
|
|
135
136
|
return outDir;
|
|
@@ -9,8 +9,8 @@ type ViteEnv = {
|
|
|
9
9
|
name?: string;
|
|
10
10
|
config: EnvironmentOptions | Environment['config'];
|
|
11
11
|
};
|
|
12
|
-
declare function isViteServerSide_withoutEnv(configGlobal: ResolvedConfig | UserConfig, viteEnv?: ViteEnv): boolean;
|
|
13
12
|
declare function isViteServerSide(configGlobal: ResolvedConfig | UserConfig, viteEnv: ViteEnv): boolean;
|
|
13
|
+
declare function isViteServerSide_withoutEnv(configGlobal: ResolvedConfig | UserConfig, viteEnv?: ViteEnv | undefined): boolean;
|
|
14
14
|
declare function isViteClientSide(configGlobal: ResolvedConfig, viteEnv: ViteEnv): boolean;
|
|
15
15
|
declare function isViteServerSide_onlySsrEnv(configGlobal: ResolvedConfig, viteEnv: ViteEnv): boolean;
|
|
16
16
|
declare function isViteServerSide_extraSafe(config: ResolvedConfig, options: {
|