vike 0.4.255-commit-05a7b95 → 0.4.256
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/client/runtime-client-routing/createPageContextClient.d.ts +24 -2
- package/dist/client/runtime-client-routing/getGlobalContextClientInternal.d.ts +24 -2
- package/dist/client/runtime-client-routing/getPageContextFromHooks.d.ts +96 -8
- package/dist/client/runtime-client-routing/renderPageClient.d.ts +96 -8
- package/dist/client/runtime-server-routing/createPageContextClient.d.ts +24 -2
- package/dist/client/runtime-server-routing/getGlobalContextClientInternal.d.ts +24 -2
- package/dist/client/shared/getGlobalContextClientInternalShared.d.ts +24 -2
- package/dist/node/prerender/runPrerender.d.ts +36 -9
- package/dist/node/prerender/runPrerender.js +17 -11
- package/dist/node/vite/index.js +0 -2
- package/dist/node/vite/plugins/pluginExtractAssets.js +2 -0
- package/dist/node/vite/plugins/pluginReplaceConstantsGlobalThis.js +0 -2
- package/dist/node/vite/shared/addSsrMiddleware.js +0 -1
- package/dist/node/vite/shared/resolveVikeConfigInternal/configDefinitionsBuiltIn.js +0 -14
- package/dist/server/runtime/globalContext.d.ts +120 -10
- package/dist/server/runtime/renderPageServer/createHttpResponse.d.ts +3 -5
- package/dist/server/runtime/renderPageServer/createHttpResponse.js +1 -13
- package/dist/server/runtime/renderPageServer/createPageContextServer.d.ts +39 -15
- package/dist/server/runtime/renderPageServer/loadPageConfigsLazyServerSide.d.ts +36 -9
- package/dist/server/runtime/renderPageServer/renderPageServerAfterRoute.d.ts +144 -36
- package/dist/server/runtime/renderPageServer.d.ts +39 -13
- package/dist/server/runtime/renderPageServer.js +3 -51
- package/dist/server/runtime/universal-middleware.d.ts +2 -9
- package/dist/server/runtime/universal-middleware.js +1 -9
- package/dist/shared-server-client/createGlobalContextShared.d.ts +48 -4
- package/dist/shared-server-client/page-configs/resolveVikeConfigPublic.d.ts +0 -1
- package/dist/types/Config.d.ts +1 -21
- package/dist/types/PageContext.d.ts +0 -6
- package/dist/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/utils/PROJECT_VERSION.js +1 -1
- package/dist/utils/assertKeys.js +2 -2
- package/dist/utils/assertNodeVersion.js +1 -1
- package/dist/utils/assertVersion.js +1 -1
- package/dist/utils/joinEnglish.d.ts +4 -1
- package/dist/utils/joinEnglish.js +4 -4
- package/package.json +9 -26
- package/dist/node/vite/plugins/pluginUniversalDeploy/getDeployConfigs.d.ts +0 -12
- package/dist/node/vite/plugins/pluginUniversalDeploy/getDeployConfigs.js +0 -73
- package/dist/node/vite/plugins/pluginUniversalDeploy.d.ts +0 -5
- package/dist/node/vite/plugins/pluginUniversalDeploy.js +0 -155
- package/dist/server/runtime/fetch.d.ts +0 -10
- package/dist/server/runtime/fetch.js +0 -5
- package/dist/utils/asyncFlatten.d.ts +0 -4
- package/dist/utils/asyncFlatten.js +0 -7
- package/fetch.js +0 -3
package/dist/types/Config.d.ts
CHANGED
|
@@ -54,7 +54,7 @@ type HookName = HookNamePage | HookNameGlobal;
|
|
|
54
54
|
type HookNamePage = 'onHydrationEnd' | 'onBeforePrerenderStart' | 'onBeforeRender' | 'onPageTransitionStart' | 'onPageTransitionEnd' | 'onRenderHtml' | 'onRenderClient' | 'guard' | 'data' | 'onData' | 'route';
|
|
55
55
|
type HookNameGlobal = 'onBeforeRoute' | 'onPrerenderStart' | 'onCreatePageContext' | 'onCreateGlobalContext' | 'onError' | 'onHookCall';
|
|
56
56
|
type HookNameOldDesign = 'render' | 'prerender' | 'onBeforePrerender';
|
|
57
|
-
type ConfigNameBuiltIn = Exclude<keyof ConfigBuiltIn, keyof VikeVitePluginOptions | 'onBeforeRoute' | 'onPrerenderStart' | 'vite' | 'redirects'> | 'prerender' | 'hasServerOnlyHook' | 'isClientRuntimeLoaded' | 'onBeforeRenderEnv' | 'dataEnv' | 'guardEnv' | 'hooksTimeout' | 'clientHooks' | 'middleware'
|
|
57
|
+
type ConfigNameBuiltIn = Exclude<keyof ConfigBuiltIn, keyof VikeVitePluginOptions | 'onBeforeRoute' | 'onPrerenderStart' | 'vite' | 'redirects'> | 'prerender' | 'hasServerOnlyHook' | 'isClientRuntimeLoaded' | 'onBeforeRenderEnv' | 'dataEnv' | 'guardEnv' | 'hooksTimeout' | 'clientHooks' | 'middleware';
|
|
58
58
|
type ConfigNameGlobal = 'onPrerenderStart' | 'onBeforeRoute' | 'prerender' | 'disableAutoFullBuild' | 'includeAssetsImportedByServer' | 'baseAssets' | 'baseServer' | 'redirects' | 'trailingSlash' | 'disableUrlNormalization' | 'vite';
|
|
59
59
|
type Config = ConfigBuiltIn & Vike.Config;
|
|
60
60
|
/** @deprecated This type is deprecated, see:
|
|
@@ -521,14 +521,6 @@ type ConfigBuiltIn = {
|
|
|
521
521
|
keepScrollPosition?: KeepScrollPosition;
|
|
522
522
|
/** @experimental */
|
|
523
523
|
middleware?: Function;
|
|
524
|
-
/**
|
|
525
|
-
* Set to `false` to disable Vike's automatic server integration mechanism (e.g. for integrating a JavaScript server manually via `renderPage()`).
|
|
526
|
-
*
|
|
527
|
-
* Set to `true` to use Vike's built-in server (no need to define `+server.js`).
|
|
528
|
-
*
|
|
529
|
-
* https://vike.dev/server
|
|
530
|
-
*/
|
|
531
|
-
server?: boolean;
|
|
532
524
|
cli?: {
|
|
533
525
|
/** @experimental
|
|
534
526
|
*
|
|
@@ -555,18 +547,6 @@ type ConfigBuiltIn = {
|
|
|
555
547
|
* https://vike.dev/pricing
|
|
556
548
|
*/
|
|
557
549
|
license?: string;
|
|
558
|
-
/** Incremental Static Regeneration (ISR).
|
|
559
|
-
*
|
|
560
|
-
* https://vike.dev/vercel#isr
|
|
561
|
-
*/
|
|
562
|
-
isr?: {
|
|
563
|
-
expiration: number;
|
|
564
|
-
};
|
|
565
|
-
/** Deploy on Vercel Edge.
|
|
566
|
-
*
|
|
567
|
-
* https://vike.dev/vercel
|
|
568
|
-
*/
|
|
569
|
-
edge?: boolean;
|
|
570
550
|
};
|
|
571
551
|
type PrerenderSetting = boolean | {
|
|
572
552
|
/**
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { IncomingMessage } from 'node:http';
|
|
2
1
|
export type { PageContext };
|
|
3
2
|
export type { PageContextServer };
|
|
4
3
|
export type { PageContextClient };
|
|
@@ -8,7 +7,6 @@ export type { PageContextInternalServer };
|
|
|
8
7
|
export type { PageContextInternalClient };
|
|
9
8
|
export type { PageContextInternalClient_ServerRouting };
|
|
10
9
|
export type { PageContextInternalClient_ClientRouting };
|
|
11
|
-
export type { PageContextInternalInit };
|
|
12
10
|
export type { PageContextInit };
|
|
13
11
|
export type { PageContextBuiltInServer_deprecated as PageContextBuiltInServer };
|
|
14
12
|
export type { PageContextBuiltInClientWithClientRouting_deprecated as PageContextBuiltInClientWithClientRouting };
|
|
@@ -134,10 +132,6 @@ type PageContextInit = {
|
|
|
134
132
|
headersOriginal?: unknown;
|
|
135
133
|
/** @deprecated Set `pageContextInit.urlOriginal` instead */ url?: string;
|
|
136
134
|
};
|
|
137
|
-
type PageContextInternalInit = PageContextInit & {
|
|
138
|
-
_reqDev?: IncomingMessage;
|
|
139
|
-
_reqWeb?: Request;
|
|
140
|
-
};
|
|
141
135
|
type PageContextBuiltInServer<Data> = PageContextBuiltInCommon<Data> & PageContextInit & PageContextUrlServer & {
|
|
142
136
|
/**
|
|
143
137
|
* The HTTP request headers.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const PROJECT_VERSION: "0.4.
|
|
1
|
+
export declare const PROJECT_VERSION: "0.4.256";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Automatically updated by @brillout/release-me
|
|
2
|
-
export const PROJECT_VERSION = '0.4.
|
|
2
|
+
export const PROJECT_VERSION = '0.4.256';
|
package/dist/utils/assertKeys.js
CHANGED
|
@@ -14,9 +14,9 @@ function assertKeys(obj, keysExpected, errPrefix) {
|
|
|
14
14
|
assertUsage(false, [
|
|
15
15
|
errPrefix,
|
|
16
16
|
`unknown key${keysUnknown.length === 1 ? '' : 's'}`,
|
|
17
|
-
joinEnglish(keysUnknown, 'and', pc.cyan) + '.',
|
|
17
|
+
joinEnglish(keysUnknown, 'and', { color: pc.cyan }) + '.',
|
|
18
18
|
'Only following keys are allowed:',
|
|
19
|
-
joinEnglish(keysExpected, 'and', pc.cyan) + '.',
|
|
19
|
+
joinEnglish(keysExpected, 'and', { color: pc.cyan }) + '.',
|
|
20
20
|
].join(' '));
|
|
21
21
|
}
|
|
22
22
|
}
|
|
@@ -6,7 +6,7 @@ import { assertIsNotBrowser } from './assertIsNotBrowser.js';
|
|
|
6
6
|
import { joinEnglish } from './joinEnglish.js';
|
|
7
7
|
assertIsNotBrowser();
|
|
8
8
|
function assertVersion(dependencyName, versionActual, versionExpectedList) {
|
|
9
|
-
assertUsage(isVersionMatch(versionActual, versionExpectedList), `${pc.bold(dependencyName)} ${pc.red(pc.bold(versionActual))} isn't supported, use ${pc.bold(dependencyName)} ${joinEnglish([...versionExpectedList, 'above'].map((v) => pc.green(pc.bold(v))), 'or')}.`);
|
|
9
|
+
assertUsage(isVersionMatch(versionActual, versionExpectedList), `${pc.bold(dependencyName)} ${pc.red(pc.bold(versionActual))} isn't supported, use ${pc.bold(dependencyName)} ${joinEnglish([...versionExpectedList, 'above'].map((v) => pc.green(pc.bold(v))), 'or', { trailingComma: false })}.`);
|
|
10
10
|
}
|
|
11
11
|
function isVersionMatch(versionActual, versionExpectedList) {
|
|
12
12
|
assert(versionActual);
|
|
@@ -1,2 +1,5 @@
|
|
|
1
1
|
export { joinEnglish };
|
|
2
|
-
declare function joinEnglish(arr: string[] | readonly string[], conjunction: 'or' | 'and',
|
|
2
|
+
declare function joinEnglish(arr: string[] | readonly string[], conjunction: 'or' | 'and', { color, trailingComma }?: {
|
|
3
|
+
color?: (s: string) => string;
|
|
4
|
+
trailingComma?: boolean;
|
|
5
|
+
}): string;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
export { joinEnglish };
|
|
2
2
|
import { assert } from './assert.js';
|
|
3
3
|
// https://stackoverflow.com/questions/53879088/join-an-array-by-commas-and-and/53879103#53879103
|
|
4
|
-
function joinEnglish(arr, conjunction,
|
|
4
|
+
function joinEnglish(arr, conjunction, { color = (s) => s, trailingComma = true } = {}) {
|
|
5
5
|
assert(arr.length > 0);
|
|
6
6
|
if (arr.length === 1)
|
|
7
|
-
return
|
|
7
|
+
return color(arr[0]);
|
|
8
8
|
const firsts = arr.slice(0, arr.length - 1);
|
|
9
9
|
const last = arr[arr.length - 1];
|
|
10
|
-
const lastComma = arr.length > 2 ? ',' : '';
|
|
11
|
-
return firsts.map(
|
|
10
|
+
const lastComma = trailingComma && arr.length > 2 ? ',' : '';
|
|
11
|
+
return firsts.map(color).join(', ') + `${lastComma} ${conjunction} ` + color(last);
|
|
12
12
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vike",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.256",
|
|
4
4
|
"repository": "https://github.com/vikejs/vike",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./server": {
|
|
@@ -94,14 +94,6 @@
|
|
|
94
94
|
"browser": "./dist/client/node.js",
|
|
95
95
|
"default": "./dist/server/runtime/universal-middleware.js"
|
|
96
96
|
},
|
|
97
|
-
"./fetch": {
|
|
98
|
-
"types": "./dist/server/runtime/fetch.d.ts",
|
|
99
|
-
"worker": "./dist/server/runtime/fetch.js",
|
|
100
|
-
"workerd": "./dist/server/runtime/fetch.js",
|
|
101
|
-
"node": "./dist/server/runtime/fetch.js",
|
|
102
|
-
"browser": "./dist/client/node.js",
|
|
103
|
-
"default": "./dist/server/runtime/fetch.js"
|
|
104
|
-
},
|
|
105
97
|
"./__internal": {
|
|
106
98
|
"types": "./dist/server/__internal/index.d.ts",
|
|
107
99
|
"node": "./dist/server/__internal/index.js",
|
|
@@ -132,19 +124,14 @@
|
|
|
132
124
|
"@brillout/json-serializer": "^0.5.22",
|
|
133
125
|
"@brillout/picocolors": "^1.0.30",
|
|
134
126
|
"@brillout/vite-plugin-server-entry": "0.7.18",
|
|
135
|
-
"@universal-deploy/node": "^0.1.2",
|
|
136
|
-
"@universal-deploy/store": "^0.1.4",
|
|
137
|
-
"@universal-middleware/core": "^0.4.17",
|
|
138
|
-
"@universal-middleware/node": "^0.1.0",
|
|
139
127
|
"cac": "^6.0.0",
|
|
140
|
-
"convert-route": "^1.1.1",
|
|
141
128
|
"es-module-lexer": "^1.0.0",
|
|
142
129
|
"esbuild": ">=0.19.0",
|
|
143
130
|
"json5": "^2.0.0",
|
|
144
131
|
"magic-string": "^0.30.17",
|
|
145
|
-
"picomatch": "^4.0.
|
|
146
|
-
"semver": "^7.
|
|
147
|
-
"sirv": "^3.0.
|
|
132
|
+
"picomatch": "^4.0.4",
|
|
133
|
+
"semver": "^7.7.4",
|
|
134
|
+
"sirv": "^3.0.2",
|
|
148
135
|
"source-map-support": "^0.5.0",
|
|
149
136
|
"tinyglobby": "^0.2.10",
|
|
150
137
|
"vite": ">=6.3.0"
|
|
@@ -221,9 +208,6 @@
|
|
|
221
208
|
"universal-middleware": [
|
|
222
209
|
"./dist/server/runtime/universal-middleware.d.ts"
|
|
223
210
|
],
|
|
224
|
-
"fetch": [
|
|
225
|
-
"./dist/server/runtime/fetch.d.ts"
|
|
226
|
-
],
|
|
227
211
|
"__internal": [
|
|
228
212
|
"./dist/server/__internal/index.d.ts"
|
|
229
213
|
],
|
|
@@ -257,19 +241,18 @@
|
|
|
257
241
|
"./routing.js",
|
|
258
242
|
"./server.js",
|
|
259
243
|
"./types.js",
|
|
260
|
-
"./universal-middleware.js"
|
|
261
|
-
"./fetch.js"
|
|
244
|
+
"./universal-middleware.js"
|
|
262
245
|
],
|
|
263
246
|
"devDependencies": {
|
|
264
247
|
"@brillout/release-me": "^0.4.13",
|
|
265
248
|
"@types/babel__core": "^7.20.5",
|
|
266
249
|
"@types/estree": "^1.0.5",
|
|
267
250
|
"@types/node": "^20.10.5",
|
|
268
|
-
"@types/picomatch": "^
|
|
269
|
-
"@types/semver": "^7.
|
|
251
|
+
"@types/picomatch": "^4.0.2",
|
|
252
|
+
"@types/semver": "^7.7.1",
|
|
270
253
|
"@types/source-map-support": "^0.5.10",
|
|
271
|
-
"react-streaming": "^0.4.
|
|
272
|
-
"rimraf": "^
|
|
254
|
+
"react-streaming": "^0.4.17",
|
|
255
|
+
"rimraf": "^6.1.3",
|
|
273
256
|
"typescript": "^5.9.3",
|
|
274
257
|
"vite": "^7.2.6"
|
|
275
258
|
},
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export { getDeployConfigs };
|
|
2
|
-
import type { PageConfigPublicWithRoute } from '../../../../shared-server-client/page-configs/resolveVikeConfigPublic.js';
|
|
3
|
-
import '../../assertEnvVite.js';
|
|
4
|
-
declare function getDeployConfigs(pageId: string, page: PageConfigPublicWithRoute): {
|
|
5
|
-
route: string[];
|
|
6
|
-
vercel: {
|
|
7
|
-
isr: {
|
|
8
|
-
expiration: number;
|
|
9
|
-
} | undefined;
|
|
10
|
-
edge: boolean;
|
|
11
|
-
};
|
|
12
|
-
} | null;
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import pc from '@brillout/picocolors';
|
|
2
|
-
export { getDeployConfigs };
|
|
3
|
-
import { fromVike, toRou3 } from 'convert-route';
|
|
4
|
-
import { assert, assertUsage, assertWarning } from '../../../../utils/assert.js';
|
|
5
|
-
import '../../assertEnvVite.js';
|
|
6
|
-
function getDeployConfigs(pageId, page) {
|
|
7
|
-
// Convert Vike's routes to rou3 format
|
|
8
|
-
const routeIr = typeof page.route === 'string' ? fromVike(page.route) : null;
|
|
9
|
-
// Vercel specific configs
|
|
10
|
-
const rawIsr = extractIsr(page.config);
|
|
11
|
-
let isr = assertIsr(rawIsr);
|
|
12
|
-
const edge = extractEdge(page.config);
|
|
13
|
-
const isrOrEdge = isr ? 'isr' : edge ? 'edge' : null;
|
|
14
|
-
if (typeof page.route === 'function' && isrOrEdge) {
|
|
15
|
-
assertWarning(false, `Page ${pageId}: ${pc.cyan(isrOrEdge)} is not supported when using route function. Remove ${pc.cyan(isrOrEdge)} config or use a route string if possible.`, { onlyOnce: true });
|
|
16
|
-
isr = null;
|
|
17
|
-
}
|
|
18
|
-
if (edge && rawIsr !== null && typeof rawIsr === 'object') {
|
|
19
|
-
assertUsage(false, `Page ${pageId}: ISR cannot be enabled for edge functions. Remove ${pc.cyan('isr')} config or set \`{ edge: false }\`.`);
|
|
20
|
-
}
|
|
21
|
-
if (isrOrEdge && routeIr) {
|
|
22
|
-
return {
|
|
23
|
-
route: [...new Set([...toRou3(routeIr), ...getPageContextRoute(routeIr)])],
|
|
24
|
-
vercel: {
|
|
25
|
-
isr: isr ? { expiration: isr } : undefined,
|
|
26
|
-
edge: Boolean(edge),
|
|
27
|
-
},
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
return null;
|
|
31
|
-
}
|
|
32
|
-
function extractIsr(exports) {
|
|
33
|
-
if (exports === null || typeof exports !== 'object')
|
|
34
|
-
return null;
|
|
35
|
-
if (!('isr' in exports))
|
|
36
|
-
return null;
|
|
37
|
-
const isr = exports.isr;
|
|
38
|
-
assertUsage(typeof isr === 'object' &&
|
|
39
|
-
typeof isr.expiration === 'number' &&
|
|
40
|
-
isr.expiration > 0, ' `{ expiration }` must be a positive number');
|
|
41
|
-
return isr;
|
|
42
|
-
}
|
|
43
|
-
function assertIsr(isr) {
|
|
44
|
-
if (isr === null || isr === undefined)
|
|
45
|
-
return null;
|
|
46
|
-
return isr.expiration;
|
|
47
|
-
}
|
|
48
|
-
function extractEdge(exports) {
|
|
49
|
-
if (exports === null || typeof exports !== 'object')
|
|
50
|
-
return null;
|
|
51
|
-
if (!('edge' in exports))
|
|
52
|
-
return null;
|
|
53
|
-
const edge = exports.edge;
|
|
54
|
-
assertUsage(typeof edge === 'boolean', ' `{ edge }` must be a boolean');
|
|
55
|
-
return edge;
|
|
56
|
-
}
|
|
57
|
-
function getPageContextRoute(routeIr) {
|
|
58
|
-
const lastSegment = routeIr.pathname.at(-1);
|
|
59
|
-
assert(lastSegment);
|
|
60
|
-
if (!lastSegment.catchAll) {
|
|
61
|
-
const pageContextIr = {
|
|
62
|
-
pathname: [
|
|
63
|
-
...routeIr.pathname.slice(0, -1),
|
|
64
|
-
{
|
|
65
|
-
...lastSegment,
|
|
66
|
-
value: `${lastSegment.value}.pageContext.json`,
|
|
67
|
-
},
|
|
68
|
-
],
|
|
69
|
-
};
|
|
70
|
-
return toRou3(pageContextIr);
|
|
71
|
-
}
|
|
72
|
-
return [];
|
|
73
|
-
}
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
export { pluginUniversalDeploy };
|
|
2
|
-
import { addEntry } from '@universal-deploy/store';
|
|
3
|
-
import { node } from '@universal-deploy/node/vite';
|
|
4
|
-
import { catchAll, devServer } from '@universal-deploy/store/vite';
|
|
5
|
-
import { serverEntryVirtualId as vikeEntryId } from '@brillout/vite-plugin-server-entry/plugin';
|
|
6
|
-
import { getMagicString } from '../shared/getMagicString.js';
|
|
7
|
-
import { escapeRegex } from '../../../utils/escapeRegex.js';
|
|
8
|
-
import { getDeployConfigs } from './pluginUniversalDeploy/getDeployConfigs.js';
|
|
9
|
-
import { assert, assertUsage, assertWarning } from '../../../utils/assert.js';
|
|
10
|
-
import { asyncFlatten } from '../../../utils/asyncFlatten.js';
|
|
11
|
-
import '../assertEnvVite.js';
|
|
12
|
-
import pc from '@brillout/picocolors';
|
|
13
|
-
const virtualFileIdCatchAll = /^virtual:ud:catch-all$/;
|
|
14
|
-
function pluginUniversalDeploy(vikeConfig) {
|
|
15
|
-
if (hasVikeServerOrVikePhoton(vikeConfig))
|
|
16
|
-
return [];
|
|
17
|
-
let serverEntryId = virtualFileIdCatchAll;
|
|
18
|
-
let serverFilePath = null;
|
|
19
|
-
const serverConfig = vikeConfig.config.server;
|
|
20
|
-
if (serverConfig === false)
|
|
21
|
-
return [];
|
|
22
|
-
const serverPlusFile = vikeConfig._pageConfigGlobal.configValueSources.server?.[0];
|
|
23
|
-
if (serverPlusFile) {
|
|
24
|
-
assert('filePathAbsoluteFilesystem' in serverPlusFile.definedAt);
|
|
25
|
-
serverFilePath = serverPlusFile.definedAt.filePathAbsoluteFilesystem;
|
|
26
|
-
assert(serverFilePath);
|
|
27
|
-
serverEntryId = new RegExp(escapeRegex(serverFilePath));
|
|
28
|
-
}
|
|
29
|
-
if (serverConfig !== true && !serverFilePath)
|
|
30
|
-
return [];
|
|
31
|
-
const plugins = [
|
|
32
|
-
catchAll(),
|
|
33
|
-
devServer(),
|
|
34
|
-
// Enable node adapter only if +server is defined and no other deployment target has been found
|
|
35
|
-
...node({ importer: 'vike' }).map((p) =>
|
|
36
|
-
// Disable node() plugin later when Vite's config() hook runs, because noDeploymentTargetFound() requires `config`
|
|
37
|
-
enablePluginIf((config) => noDeploymentTargetFound(config), p)),
|
|
38
|
-
{
|
|
39
|
-
name: 'vike:pluginUniversalDeploy:entries',
|
|
40
|
-
config() {
|
|
41
|
-
for (const [pageId, page] of Object.entries(vikeConfig.pages)) {
|
|
42
|
-
const deployConfigs = getDeployConfigs(pageId, page);
|
|
43
|
-
if (deployConfigs !== null) {
|
|
44
|
-
addEntry({
|
|
45
|
-
id: serverFilePath ?? 'vike/fetch',
|
|
46
|
-
...deployConfigs,
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
// Default catch-all route
|
|
51
|
-
addEntry({
|
|
52
|
-
id: serverFilePath ?? 'vike/fetch',
|
|
53
|
-
route: '/**',
|
|
54
|
-
});
|
|
55
|
-
},
|
|
56
|
-
...pluginOptions,
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
name: 'vike:pluginUniversalDeploy:serverEntry',
|
|
60
|
-
apply: 'build',
|
|
61
|
-
transform: {
|
|
62
|
-
order: 'post',
|
|
63
|
-
filter: {
|
|
64
|
-
id: {
|
|
65
|
-
include: [serverEntryId],
|
|
66
|
-
},
|
|
67
|
-
},
|
|
68
|
-
handler(code, id) {
|
|
69
|
-
const { magicString, getMagicStringResult } = getMagicString(code, id);
|
|
70
|
-
// Inject Vike virtual server entry
|
|
71
|
-
magicString.prepend(`import "${vikeEntryId}";\n`);
|
|
72
|
-
return getMagicStringResult();
|
|
73
|
-
},
|
|
74
|
-
},
|
|
75
|
-
...pluginOptions,
|
|
76
|
-
},
|
|
77
|
-
];
|
|
78
|
-
if (serverFilePath) {
|
|
79
|
-
plugins.push(
|
|
80
|
-
// If +server.js is defined, make virtual:ud:catch-all resolve to +server.js absolute path
|
|
81
|
-
{
|
|
82
|
-
name: 'vike:pluginUniversalDeploy:server',
|
|
83
|
-
resolveId: {
|
|
84
|
-
order: 'pre',
|
|
85
|
-
filter: {
|
|
86
|
-
id: virtualFileIdCatchAll,
|
|
87
|
-
},
|
|
88
|
-
handler() {
|
|
89
|
-
// Will resolve the entry from the users project root
|
|
90
|
-
return this.resolve(serverFilePath);
|
|
91
|
-
},
|
|
92
|
-
},
|
|
93
|
-
...pluginOptions,
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
return plugins;
|
|
97
|
-
}
|
|
98
|
-
const pluginOptions = {
|
|
99
|
-
applyToEnvironment(env) {
|
|
100
|
-
return env.config.consumer === 'server';
|
|
101
|
-
},
|
|
102
|
-
sharedDuringBuild: true,
|
|
103
|
-
};
|
|
104
|
-
/**
|
|
105
|
-
* Enables a plugin based on a specified condition callback which will be executed in the `config` hook.
|
|
106
|
-
*/
|
|
107
|
-
function enablePluginIf(condition, originalPlugin) {
|
|
108
|
-
const originalConfig = originalPlugin.config;
|
|
109
|
-
originalPlugin.config = {
|
|
110
|
-
order: originalConfig && 'order' in originalConfig ? originalConfig.order : 'pre',
|
|
111
|
-
async handler(c, e) {
|
|
112
|
-
const enabled = await condition.call(this, c, e);
|
|
113
|
-
if (!enabled) {
|
|
114
|
-
const keysToDelete = Object.keys(originalPlugin).filter((k) => k !== 'name');
|
|
115
|
-
originalPlugin.name += ':disabled';
|
|
116
|
-
for (const key of keysToDelete) {
|
|
117
|
-
// @ts-expect-error
|
|
118
|
-
delete originalPlugin[key];
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
else if (originalConfig) {
|
|
122
|
-
if (typeof originalConfig === 'function') {
|
|
123
|
-
return originalConfig.call(this, c, e);
|
|
124
|
-
}
|
|
125
|
-
return originalConfig.handler.call(this, c, e);
|
|
126
|
-
}
|
|
127
|
-
},
|
|
128
|
-
};
|
|
129
|
-
return originalPlugin;
|
|
130
|
-
}
|
|
131
|
-
// Disable a plugin if one of the following plugin is present
|
|
132
|
-
// - vite-plugin-vercel
|
|
133
|
-
// - @cloudflare/vite-plugin
|
|
134
|
-
async function noDeploymentTargetFound(c) {
|
|
135
|
-
const plugins = (await asyncFlatten((c.plugins ?? []))).filter((p) => Boolean(p));
|
|
136
|
-
assertUsage(!plugins.some((p) => p.name.startsWith('photon:target-loader:vercel')), 'Replace `@photonjs/vercel` by `vite-plugin-vercel@11`, see https://vike.dev/migration/universal-deploy');
|
|
137
|
-
assertUsage(!plugins.some((p) => p.name.startsWith('photon:target-loader:cloudflare')), 'Replace `@photonjs/cloudflare` by `@cloudflare/vite-plugin`, see https://vike.dev/migration/universal-deploy');
|
|
138
|
-
// vite-plugin-vercel
|
|
139
|
-
const vitePluginVercel = plugins.some((p) => p.name.match(/^vite-plugin-vercel:(?!.*:disabled$)/));
|
|
140
|
-
// @cloudflare/vite-plugin
|
|
141
|
-
const cloudflareVitePlugin = plugins.some((p) => p.name.match(/^vite-plugin-cloudflare:(?!.*:disabled$)/));
|
|
142
|
-
return !vitePluginVercel && !cloudflareVitePlugin;
|
|
143
|
-
}
|
|
144
|
-
function hasVikeServerOrVikePhoton(vikeConfig) {
|
|
145
|
-
const vikeExtendsNames = new Set(vikeConfig._extensions.map((plusFile) => ('fileExportsByConfigName' in plusFile ? plusFile.fileExportsByConfigName : {}).name));
|
|
146
|
-
const vikeServerOrVikePhoton = vikeExtendsNames.has('vike-server')
|
|
147
|
-
? 'vike-server'
|
|
148
|
-
: vikeExtendsNames.has('vike-photon')
|
|
149
|
-
? 'vike-photon'
|
|
150
|
-
: null;
|
|
151
|
-
if (vikeServerOrVikePhoton) {
|
|
152
|
-
assertWarning(false, `${pc.cyan(vikeServerOrVikePhoton)} is deprecated, see ${pc.underline('https://vike.dev/migration/universal-deploy')}`, { onlyOnce: true });
|
|
153
|
-
return true;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import '../assertEnvServer.js';
|
|
2
|
-
declare const _default: {
|
|
3
|
-
fetch: (<T extends string>(request: Request, context: Universal.Context, runtime: import("@universal-middleware/core").RuntimeAdapterTarget<T>) => Promise<Response>) & import("@universal-middleware/core").WithUniversalSymbols<{
|
|
4
|
-
name: string;
|
|
5
|
-
method: ("GET" | "HEAD" | "POST" | "PUT" | "OPTIONS" | "PATCH")[];
|
|
6
|
-
path: string;
|
|
7
|
-
immutable: true;
|
|
8
|
-
}>;
|
|
9
|
-
};
|
|
10
|
-
export default _default;
|
package/fetch.js
DELETED