vike 0.4.267-commit-feffb0f → 0.4.267-commit-83049a4
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 +1 -0
- package/dist/client/runtime-client-routing/getGlobalContextClientInternal.d.ts +1 -0
- package/dist/client/runtime-client-routing/getPageContextFromHooks.d.ts +4 -0
- package/dist/client/runtime-client-routing/renderPageClient.d.ts +8 -0
- package/dist/client/runtime-client-routing/renderPageClient.js +0 -7
- package/dist/client/runtime-server-routing/createPageContextClient.d.ts +1 -0
- package/dist/client/runtime-server-routing/getGlobalContextClientInternal.d.ts +1 -0
- package/dist/client/shared/getGlobalContextClientInternalShared.d.ts +1 -0
- package/dist/client/shared/getGlobalContextClientInternalShared.js +2 -0
- package/dist/client/shared/removeFoucBuster.js +14 -3
- package/dist/node/api/dev.js +15 -1
- package/dist/node/api/serverEntryDev.d.ts +10 -0
- package/dist/node/api/serverEntryDev.js +113 -0
- package/dist/node/createDevMiddleware.js +12 -0
- package/dist/node/prerender/resolvePrerenderConfig.d.ts +1 -1
- package/dist/node/prerender/resolvePrerenderConfig.js +4 -1
- package/dist/node/prerender/runPrerender.d.ts +6 -14
- package/dist/node/prerender/runPrerender.js +1 -1
- package/dist/node/vite/plugins/build/pluginBuildConfig.js +1 -1
- package/dist/node/vite/plugins/pluginCommon.js +1 -1
- package/dist/node/vite/plugins/pluginDev/optimizeDeps.d.ts +1 -1
- package/dist/node/vite/plugins/pluginDev/optimizeDeps.js +3 -1
- package/dist/node/vite/plugins/pluginUniversalDeploy/getServerConfig.d.ts +3 -0
- package/dist/node/vite/plugins/pluginUniversalDeploy/getServerConfig.js +26 -0
- package/dist/node/vite/plugins/pluginUniversalDeploy/pluginServerEntryAlias.d.ts +1 -1
- package/dist/node/vite/plugins/pluginUniversalDeploy/pluginServerEntryAlias.js +22 -11
- package/dist/node/vite/plugins/pluginUniversalDeploy.js +27 -3
- package/dist/node/vite/plugins/pluginVirtualFiles/getConfigValueSourcesRelevant.d.ts +4 -2
- package/dist/node/vite/plugins/pluginVirtualFiles/getConfigValueSourcesRelevant.js +1 -1
- package/dist/node/vite/shared/addSsrMiddleware.js +11 -39
- package/dist/node/vite/shared/findPageFiles.d.ts +1 -1
- package/dist/node/vite/shared/findPageFiles.js +1 -11
- package/dist/node/vite/shared/resolveVikeConfigInternal/metaBuiltIn.d.ts +5 -3
- package/dist/node/vite/shared/resolveVikeConfigInternal/metaBuiltIn.js +9 -0
- package/dist/node/vite/shared/resolveVikeConfigInternal/transpileAndExecuteFile.js +9 -2
- package/dist/node/vite/shared/resolveVikeConfigInternal.d.ts +1 -0
- package/dist/node/vite/shared/resolveVikeConfigInternal.js +4 -2
- package/dist/server/__internal/index.d.ts +1 -0
- package/dist/server/__internal/index.js +2 -0
- package/dist/server/createPageRenderer.d.ts +2 -2
- package/dist/server/createPageRenderer.js +2 -2
- package/dist/server/runtime/createDevMiddleware.js +3 -1
- package/dist/server/runtime/fetch.d.ts +4 -5
- package/dist/server/runtime/fetch.js +2 -2
- package/dist/server/runtime/globalContext.d.ts +49 -10
- package/dist/server/runtime/globalContext.js +35 -2
- package/dist/server/runtime/index.d.ts +1 -1
- package/dist/server/runtime/index.js +1 -1
- package/dist/server/runtime/renderPageServer/createHttpResponse.d.ts +0 -2
- package/dist/server/runtime/renderPageServer/createHttpResponse.js +0 -6
- package/dist/server/runtime/renderPageServer/createPageContextServer.d.ts +9 -23
- package/dist/server/runtime/renderPageServer/getHttpResponseBody.js +2 -10
- package/dist/server/runtime/renderPageServer/handlePageContextRequestUrl.js +2 -2
- package/dist/server/runtime/renderPageServer/html/stream.d.ts +1 -1
- package/dist/server/runtime/renderPageServer/html/stream.js +16 -3
- package/dist/server/runtime/renderPageServer/loadPageConfigsLazyServerSide.d.ts +6 -14
- package/dist/server/runtime/renderPageServer/renderPageServerAfterRoute.d.ts +36 -84
- package/dist/server/runtime/renderPageServer.d.ts +61 -18
- package/dist/server/runtime/renderPageServer.js +12 -53
- package/dist/server/runtime/universal-middleware/core.d.ts +25 -0
- package/dist/server/runtime/universal-middleware/core.js +167 -0
- package/dist/server/runtime/universal-middleware/deprecated-export.d.ts +3 -0
- package/dist/server/runtime/universal-middleware/deprecated-export.js +10 -0
- package/dist/server/runtime/universal-middleware/getMiddlewaresPipe.d.ts +15 -0
- package/dist/server/runtime/universal-middleware/getMiddlewaresPipe.js +51 -0
- package/dist/server/runtime/universal-middleware/vikeUniversalMiddleware.d.ts +9 -0
- package/dist/server/runtime/universal-middleware/vikeUniversalMiddleware.js +22 -0
- package/dist/shared-server-client/page-configs/serialize/serializeConfigValues.js +2 -0
- package/dist/types/Config.d.ts +9 -1
- package/dist/types/GlobalContext.d.ts +3 -3
- package/dist/types/PageContext.d.ts +0 -9
- package/dist/types/PageContext.js +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/utils/PROJECT_VERSION.js +1 -1
- package/package.json +16 -15
- package/universal-middleware.js +2 -2
- package/vike-server.d.ts +14 -0
- package/dist/server/runtime/universal-middleware.d.ts +0 -10
- package/dist/server/runtime/universal-middleware.js +0 -27
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
export { getMiddlewares_globalContext };
|
|
2
|
+
export { getMiddlewares_withErrorHandling };
|
|
3
|
+
export { hasPlusMiddlewares };
|
|
4
|
+
export { routeCatchAll };
|
|
5
|
+
export { mergeContext };
|
|
6
|
+
import { createMatcher, enhance, getUniversal, getUniversalProp, isHandler, methodSymbol, orderSymbol, pathSymbol, nameSymbol, runsSymbol, } from '@universal-middleware/core';
|
|
7
|
+
import { parseUrl } from '../../../utils/parseUrl.js';
|
|
8
|
+
import { prependBase } from '../../../utils/parseUrl-extras.js';
|
|
9
|
+
import { handlePageContextRequestUrl } from '../renderPageServer/handlePageContextRequestUrl.js';
|
|
10
|
+
import { renderPageServer } from '../renderPageServer.js';
|
|
11
|
+
import { getGlobalContextServerInternal, initGlobalContext_renderPage } from '../globalContext.js';
|
|
12
|
+
import { getVikeConfigError } from '../../../shared-server-node/getVikeConfigError.js';
|
|
13
|
+
import { assertWarning } from '../../../utils/assert.js';
|
|
14
|
+
import pc from '@brillout/picocolors';
|
|
15
|
+
import '../../assertEnvServer.js';
|
|
16
|
+
const routeCatchAll = {
|
|
17
|
+
name: 'vike',
|
|
18
|
+
method: ['GET', 'POST', 'PUT', 'PATCH', 'HEAD', 'OPTIONS'],
|
|
19
|
+
path: '/**',
|
|
20
|
+
};
|
|
21
|
+
// Vike's pages
|
|
22
|
+
const renderPageServer_universalMiddleware = enhance(renderPageServer_universal, routeCatchAll);
|
|
23
|
+
// globalContext.middlewares — every +middleware and Vike's handler that renders pages
|
|
24
|
+
function getMiddlewares_globalContext(globalContext, baseServer) {
|
|
25
|
+
return [
|
|
26
|
+
...getMiddlewares_config(globalContext).map((plusMiddleware) => wrapWithVikeNormalizedURL(plusMiddleware, baseServer)),
|
|
27
|
+
renderPageServer_universalMiddleware,
|
|
28
|
+
].map(withIsHandler);
|
|
29
|
+
}
|
|
30
|
+
// Returns globalContext.middlewares, or middlewares_errorHandling upon an invalid config
|
|
31
|
+
async function getMiddlewares_withErrorHandling() {
|
|
32
|
+
if (getVikeConfigError())
|
|
33
|
+
return middlewares_errorHandling;
|
|
34
|
+
try {
|
|
35
|
+
await initGlobalContext_renderPage();
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return middlewares_errorHandling;
|
|
39
|
+
}
|
|
40
|
+
if (getVikeConfigError())
|
|
41
|
+
return middlewares_errorHandling;
|
|
42
|
+
const { globalContext } = await getGlobalContextServerInternal();
|
|
43
|
+
return globalContext.middlewares;
|
|
44
|
+
}
|
|
45
|
+
// Upon an invalid config: let renderPageServer() answer every request with the error (`+middleware` isn't defined upon config error)
|
|
46
|
+
const middlewares_errorHandling = [enhance(renderPageServer_universal, { name: 'vike:error-handling' })].map(withIsHandler);
|
|
47
|
+
async function renderPageServer_universal(request, context, runtime) {
|
|
48
|
+
const pageContextInit = {
|
|
49
|
+
urlOriginal: request.url, // Let `context` override it, e.g. `$ vike dev` passes the URL's path
|
|
50
|
+
headersOriginal: request.headers,
|
|
51
|
+
req: 'req' in runtime ? runtime.req : null,
|
|
52
|
+
res: 'res' in runtime ? runtime.res : null,
|
|
53
|
+
runtime,
|
|
54
|
+
...context,
|
|
55
|
+
};
|
|
56
|
+
addUserAgent_deprecated(pageContextInit, request, runtime);
|
|
57
|
+
const pageContext = await renderPageServer(pageContextInit, false);
|
|
58
|
+
const { httpResponse } = pageContext;
|
|
59
|
+
return new Response(httpResponse.getReadableWebStream(), {
|
|
60
|
+
status: httpResponse.statusCode,
|
|
61
|
+
headers: httpResponse.headers,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
// List of +middleware
|
|
65
|
+
function getMiddlewares_config(globalContext) {
|
|
66
|
+
return (globalContext.config.middleware ?? []).flat();
|
|
67
|
+
}
|
|
68
|
+
// Does a +middleware exist?
|
|
69
|
+
function hasPlusMiddlewares(globalContext) {
|
|
70
|
+
return getMiddlewares_config(globalContext).length > 0;
|
|
71
|
+
}
|
|
72
|
+
// Handle:
|
|
73
|
+
// - Base URL
|
|
74
|
+
// - JSON URL `.pageContext.json`
|
|
75
|
+
function wrapWithVikeNormalizedURL(plusMiddleware, baseServer) {
|
|
76
|
+
const { path, method, ...options } = getOptions(plusMiddleware);
|
|
77
|
+
if (path)
|
|
78
|
+
assertPath(options.name, path, baseServer);
|
|
79
|
+
if (isHandler(plusMiddleware)) {
|
|
80
|
+
// A handler is a route of the server, which matches it: its path gets the Base URL. (`enhance()` clones it, so that marking it `isHandler` leaves the extension's export untouched.)
|
|
81
|
+
return enhance(plusMiddleware, path ? { path: prependBase(path.startsWith('/') ? path : `/${path}`, baseServer) } : {});
|
|
82
|
+
}
|
|
83
|
+
const isMatch = path && createMatcher(path, method);
|
|
84
|
+
const plusMiddlewareMerged = mergeContext(plusMiddleware);
|
|
85
|
+
return enhance(async (request, context, runtime) => {
|
|
86
|
+
const { isPageContextJsonRequest, urlWithoutPageContextRequestSuffix } = handlePageContextRequestUrl(request.url);
|
|
87
|
+
if (isMatch) {
|
|
88
|
+
const { href, isBaseMissing } = parseUrl(urlWithoutPageContextRequestSuffix, baseServer);
|
|
89
|
+
if (isBaseMissing || !isMatch(new Request(href, { method: request.method })))
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
const answer = await getUniversal(plusMiddlewareMerged)(request, context, runtime);
|
|
93
|
+
return isPageContextJsonRequest ? toPageContextJsonAnswer(answer) : answer;
|
|
94
|
+
}, {
|
|
95
|
+
...options,
|
|
96
|
+
// Whatever its order, it doesn't run once a Response exists
|
|
97
|
+
runs: 'until-response',
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
// A +middleware's answer to a `.pageContext.json` request. Its own Response, or a response function's replacement of
|
|
101
|
+
// Vike's JSON, becomes a 404 without JSON: the client router then reloads the page, so that the page's own request shows
|
|
102
|
+
// the +middleware's answer (e.g. a 401, a redirect or a login page).
|
|
103
|
+
function toPageContextJsonAnswer(answer) {
|
|
104
|
+
const toReload = (response) => {
|
|
105
|
+
const headers = new Headers(response.headers);
|
|
106
|
+
headers.delete('content-type');
|
|
107
|
+
return new Response(response.body, { status: 404, headers });
|
|
108
|
+
};
|
|
109
|
+
// The +middleware answered instead of the page
|
|
110
|
+
if (answer instanceof Response)
|
|
111
|
+
return toReload(answer);
|
|
112
|
+
if (typeof answer !== 'function')
|
|
113
|
+
return answer;
|
|
114
|
+
return async (response) => {
|
|
115
|
+
const replaced = await answer(response);
|
|
116
|
+
// Vike's JSON, possibly re-encoded, keeps its status and its JSON Content-Type
|
|
117
|
+
const isVikeJson = replaced?.status === response.status && replaced.headers.get('content-type')?.includes('application/json');
|
|
118
|
+
return replaced && (isVikeJson ? replaced : toReload(replaced));
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
// Warns about a path that starts with the Base URL
|
|
122
|
+
function assertPath(name, path, baseServer) {
|
|
123
|
+
const base = baseServer.replace(/\/$/, '');
|
|
124
|
+
if (!base || (path !== base && !path.startsWith(`${base}/`)))
|
|
125
|
+
return;
|
|
126
|
+
assertWarning(false, `The +middleware ${name ? `${pc.bold(name)} ` : ''}has the path ${pc.cyan(path)}, which starts with the Base URL ${pc.cyan(baseServer)}. A +middleware path is relative to the Base URL, use ${pc.cyan(path.slice(base.length) || '/')} instead.`, { onlyOnce: `middleware-path:${name}:${path}` });
|
|
127
|
+
}
|
|
128
|
+
// Universal Middleware replaces the context with the one a middleware returns: Vike merges it into a new object, as a
|
|
129
|
+
// +middleware or a user-land universal middleware returns only what it adds, and an adapter may reuse the context
|
|
130
|
+
function mergeContext(middleware) {
|
|
131
|
+
return enhance(async (request, context, runtime) => {
|
|
132
|
+
const result = await getUniversal(middleware)(request, context, runtime);
|
|
133
|
+
if (!result || result instanceof Response || typeof result === 'function')
|
|
134
|
+
return result;
|
|
135
|
+
return { ...context, ...result };
|
|
136
|
+
}, getOptions(middleware));
|
|
137
|
+
}
|
|
138
|
+
// The options `enhance()` gave a middleware, also when an adapter wraps it, without the unset ones: Universal Middleware sorts an `order` set to `undefined` as `NaN`
|
|
139
|
+
function getOptions(middleware) {
|
|
140
|
+
const options = {
|
|
141
|
+
name: getUniversalProp(middleware, nameSymbol),
|
|
142
|
+
path: getUniversalProp(middleware, pathSymbol),
|
|
143
|
+
method: getUniversalProp(middleware, methodSymbol),
|
|
144
|
+
order: getUniversalProp(middleware, orderSymbol),
|
|
145
|
+
runs: getUniversalProp(middleware, runsSymbol),
|
|
146
|
+
};
|
|
147
|
+
return Object.fromEntries(Object.entries(options).filter(([, value]) => value !== undefined));
|
|
148
|
+
}
|
|
149
|
+
function withIsHandler(middleware) {
|
|
150
|
+
return Object.assign(middleware, { isHandler: isHandler(middleware) });
|
|
151
|
+
}
|
|
152
|
+
function addUserAgent_deprecated(pageContextInit, request, runtime) {
|
|
153
|
+
// Backwards compatibility for `$ vike dev` and `$ vike preview`
|
|
154
|
+
if (runtime.adapter === 'other' && 'req' in runtime) {
|
|
155
|
+
Object.defineProperty(pageContextInit, 'userAgent', {
|
|
156
|
+
get() {
|
|
157
|
+
// TO-DO/next-major-release: assertUsage() instead of assertWarning()
|
|
158
|
+
assertWarning(false, `${pc.cyan('pageContext.userAgent')} is deprecated: use ${pc.cyan("pageContext.headers['user-agent']")} instead.`, {
|
|
159
|
+
showStackTrace: true,
|
|
160
|
+
onlyOnce: true,
|
|
161
|
+
});
|
|
162
|
+
return request.headers.get('user-agent') ?? undefined;
|
|
163
|
+
},
|
|
164
|
+
enumerable: false,
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export default vikeUniversalMiddleware;
|
|
2
|
+
// TO-DO/next-major-release: remove this export (the entire file)
|
|
3
|
+
import { vikeUniversalMiddleware } from './vikeUniversalMiddleware.js';
|
|
4
|
+
import { assertWarning } from '../../../utils/assert.js';
|
|
5
|
+
import '../../assertEnvServer.js';
|
|
6
|
+
assertWarning(false, [
|
|
7
|
+
"You're using a deprecated Vike extension:",
|
|
8
|
+
'- If you use one of the following, update to its latest version: @vikejs/hono, @vikejs/express, @vikejs/fastify, @vikejs/h3, or @vikejs/elysia',
|
|
9
|
+
'- If you use vike-photon or vike-server, migrate to +server.js — see https://vike.dev/migration/server',
|
|
10
|
+
].join('\n'), { onlyOnce: true });
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export { getMiddlewaresPipe_nonHandlers };
|
|
2
|
+
export { getMiddlewaresPipe_handlers };
|
|
3
|
+
export { pipeNonHandlers };
|
|
4
|
+
import { type UniversalHandler, type UniversalMiddleware } from '@universal-middleware/core';
|
|
5
|
+
import { type Middleware } from './core.js';
|
|
6
|
+
import '../../assertEnvServer.js';
|
|
7
|
+
/**
|
|
8
|
+
* What `vike(app, middlewares)` runs after the app's routes: the middlewares (looked up upon each request) that are handlers, as one universal handler (the pipe).
|
|
9
|
+
*/
|
|
10
|
+
declare function getMiddlewaresPipe_handlers(middlewaresUserLand: object[]): UniversalHandler;
|
|
11
|
+
/**
|
|
12
|
+
* What `vike(app, middlewares)` applies before the app's routes: the middlewares (looked up upon each request) that aren't handlers, as one universal middleware (the pipe).
|
|
13
|
+
*/
|
|
14
|
+
declare function getMiddlewaresPipe_nonHandlers(middlewaresUserLand: object[]): UniversalMiddleware;
|
|
15
|
+
declare function pipeNonHandlers(middlewares: Middleware[], nonHandlersUserLand: UniversalMiddleware[]): UniversalMiddleware;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export { getMiddlewaresPipe_nonHandlers };
|
|
2
|
+
export { getMiddlewaresPipe_handlers };
|
|
3
|
+
export { pipeNonHandlers };
|
|
4
|
+
import { enhance, isHandler, pipeRoute, } from '@universal-middleware/core';
|
|
5
|
+
import { getMiddlewares_withErrorHandling, mergeContext } from './core.js';
|
|
6
|
+
import '../../assertEnvServer.js';
|
|
7
|
+
/**
|
|
8
|
+
* What `vike(app, middlewares)` runs after the app's routes: the middlewares (looked up upon each request) that are handlers, as one universal handler (the pipe).
|
|
9
|
+
*/
|
|
10
|
+
function getMiddlewaresPipe_handlers(
|
|
11
|
+
// `object[]`: the user-land universal middlewares can come from another copy of @universal-middleware/core, whose types don't match this copy's
|
|
12
|
+
middlewaresUserLand) {
|
|
13
|
+
const handlersUserLand = middlewaresUserLand.filter(isHandler);
|
|
14
|
+
const router = pipe((middlewares) => pipeRoute([...handlersUserLand, ...middlewares.filter((middleware) => middleware.isHandler)]));
|
|
15
|
+
return enhance(async (request, context, runtime) => {
|
|
16
|
+
return ((await router(request, context, runtime)) ??
|
|
17
|
+
// Fallback when no handler answers
|
|
18
|
+
new Response('Not Found', { status: 404 }));
|
|
19
|
+
}, {
|
|
20
|
+
name: 'vike:handlers',
|
|
21
|
+
method: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'CONNECT', 'OPTIONS', 'TRACE', 'PATCH'],
|
|
22
|
+
path: '/**',
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* What `vike(app, middlewares)` applies before the app's routes: the middlewares (looked up upon each request) that aren't handlers, as one universal middleware (the pipe).
|
|
27
|
+
*/
|
|
28
|
+
function getMiddlewaresPipe_nonHandlers(
|
|
29
|
+
// `object[]`: the user-land universal middlewares can come from another copy of @universal-middleware/core, whose types don't match this copy's
|
|
30
|
+
middlewaresUserLand) {
|
|
31
|
+
const nonHandlersUserLand = middlewaresUserLand.filter((middleware) => !isHandler(middleware));
|
|
32
|
+
return enhance(pipe((middlewares) => pipeNonHandlers(middlewares, nonHandlersUserLand)), { name: 'vike:nonHandlers' });
|
|
33
|
+
}
|
|
34
|
+
function pipeNonHandlers(middlewares, nonHandlersUserLand) {
|
|
35
|
+
const nonHandlers = [
|
|
36
|
+
...middlewares.filter((middleware) => !middleware.isHandler),
|
|
37
|
+
...nonHandlersUserLand.map((middleware) => mergeContext(enhance(middleware, { runs: 'always' }))),
|
|
38
|
+
];
|
|
39
|
+
return pipeRoute(nonHandlers);
|
|
40
|
+
}
|
|
41
|
+
function pipe(getPipe) {
|
|
42
|
+
// Caching: the list changes only when the config does, so getPipe() runs once per list
|
|
43
|
+
const cache = new WeakMap();
|
|
44
|
+
return async (request, context, runtime) => {
|
|
45
|
+
const middlewares = await getMiddlewares_withErrorHandling();
|
|
46
|
+
let ret = cache.get(middlewares);
|
|
47
|
+
if (!ret)
|
|
48
|
+
cache.set(middlewares, (ret = getPipe(middlewares)));
|
|
49
|
+
return ret(request, context, runtime);
|
|
50
|
+
};
|
|
51
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { vikeUniversalMiddleware };
|
|
2
|
+
import { type RuntimeAdapterTarget } from '@universal-middleware/core';
|
|
3
|
+
import '../../assertEnvServer.js';
|
|
4
|
+
declare const vikeUniversalMiddleware: typeof handler & import("@universal-middleware/core").WithUniversalSymbols<{
|
|
5
|
+
readonly name: 'vike';
|
|
6
|
+
readonly method: ["GET", "POST", "PUT", "PATCH", "HEAD", "OPTIONS"];
|
|
7
|
+
readonly path: '/**';
|
|
8
|
+
}>;
|
|
9
|
+
declare function handler(request: Request, context?: Universal.Context, runtime?: RuntimeAdapterTarget<unknown>): Promise<Response>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export { vikeUniversalMiddleware };
|
|
2
|
+
import { enhance, getAdapterRuntime } from '@universal-middleware/core';
|
|
3
|
+
import { getMiddlewaresPipe_handlers, getMiddlewaresPipe_nonHandlers } from './getMiddlewaresPipe.js';
|
|
4
|
+
import { routeCatchAll } from './core.js';
|
|
5
|
+
import '../../assertEnvServer.js';
|
|
6
|
+
// The Universal Middleware for Vike's built-in server.
|
|
7
|
+
// - The same two pipes that `vike(app)` applies, but without any user-land middlewares (there aren't any)
|
|
8
|
+
const vikeUniversalMiddleware = enhance(handler, routeCatchAll);
|
|
9
|
+
const pipeNonHandlers = getMiddlewaresPipe_nonHandlers([]);
|
|
10
|
+
const pipeHandlers = getMiddlewaresPipe_handlers([]);
|
|
11
|
+
async function handler(request, context = {}, runtime = getAdapterRuntime('other', { params: undefined })) {
|
|
12
|
+
// A copy: Universal Middleware's `pipe()` writes a returned context into it when a response function follows, and a Cloudflare worker's `env` (its context) is shared by all requests
|
|
13
|
+
context = { ...context };
|
|
14
|
+
const answer = await pipeNonHandlers(request, context, runtime);
|
|
15
|
+
if (answer instanceof Response)
|
|
16
|
+
return answer;
|
|
17
|
+
// The context the +middleware returned
|
|
18
|
+
if (answer && typeof answer === 'object')
|
|
19
|
+
context = answer;
|
|
20
|
+
const response = await pipeHandlers(request, context, runtime);
|
|
21
|
+
return typeof answer === 'function' ? ((await answer(response)) ?? response) : response;
|
|
22
|
+
}
|
|
@@ -207,6 +207,8 @@ function getConfigValuesBase(pageConfig, runtimeEnv, isEager) {
|
|
|
207
207
|
assert(configDef);
|
|
208
208
|
if (isEager !== null && isEager !== !!configDef.eager)
|
|
209
209
|
return 'SKIP';
|
|
210
|
+
if (configDef._valueNotLoadedAtRuntime && !runtimeEnv.isConfigEnvironment)
|
|
211
|
+
return 'SKIP';
|
|
210
212
|
if (!configDef.cumulative) {
|
|
211
213
|
const sourcesRelevant = getConfigValueSourcesRelevant(configName, runtimeEnv, pageConfig);
|
|
212
214
|
const source = sourcesRelevant[0];
|
package/dist/types/Config.d.ts
CHANGED
|
@@ -540,7 +540,7 @@ type ConfigBuiltIn = {
|
|
|
540
540
|
*
|
|
541
541
|
* The middlewares defined via `+middleware` are so called "Universal Middleware" — they work with any JavaScript server (Hono, Express, Cloudflare, ...).
|
|
542
542
|
*
|
|
543
|
-
* https://
|
|
543
|
+
* https://vike.dev/middleware
|
|
544
544
|
*/
|
|
545
545
|
middleware?: EnhancedMiddleware | EnhancedMiddleware[];
|
|
546
546
|
/**
|
|
@@ -551,6 +551,14 @@ type ConfigBuiltIn = {
|
|
|
551
551
|
* https://vike.dev/server
|
|
552
552
|
*/
|
|
553
553
|
server?: boolean | ImportStringList;
|
|
554
|
+
/**
|
|
555
|
+
* Control how your server starts.
|
|
556
|
+
*
|
|
557
|
+
* It's built into `dist/server/index.mjs` for production, and it's also run in development if you don't define `+server.js`.
|
|
558
|
+
*
|
|
559
|
+
* https://vike.dev/serverEntry
|
|
560
|
+
*/
|
|
561
|
+
serverEntry?: string | ImportStringList;
|
|
554
562
|
/**
|
|
555
563
|
* Set to `true` to create `.br` and `.gz` files for your static assets at build time, so that they don't have to be compressed on each request.
|
|
556
564
|
*
|
|
@@ -7,12 +7,12 @@ import type { GlobalContextClientInternalWithServerRouting } from '../client/run
|
|
|
7
7
|
import type { GlobalContextBasePublic } from '../shared-server-client/createGlobalContextShared.js';
|
|
8
8
|
import type { GlobalContextClientInternal } from '../client/runtime-client-routing/getGlobalContextClientInternal.js';
|
|
9
9
|
type GlobalContext = GlobalContextServer | GlobalContextClient;
|
|
10
|
-
type GlobalContextServer = Pick<GlobalContextServerInternal, 'assetsManifest' | 'config' | 'viteConfig' | 'viteConfigRuntime' | 'pages' | 'baseServer' | 'baseAssets' | 'isClientSide'> & {
|
|
10
|
+
type GlobalContextServer = Pick<GlobalContextServerInternal, 'assetsManifest' | 'config' | 'viteConfig' | 'viteConfigRuntime' | 'pages' | 'baseServer' | 'baseAssets' | 'middlewares' | 'isClientSide' | 'devMiddleware'> & {
|
|
11
11
|
/** https://vike.dev/warning/internals */
|
|
12
12
|
dangerouslyUseInternals: GlobalContextServerInternal;
|
|
13
13
|
} & Vike.GlobalContext & Vike.GlobalContextServer;
|
|
14
14
|
type GlobalContextClient = GlobalContextBasePublic & {
|
|
15
15
|
/** https://vike.dev/warning/internals */
|
|
16
16
|
dangerouslyUseInternals: GlobalContextClientInternal;
|
|
17
|
-
} & Pick<GlobalContextClientInternal, 'isClientSide'> & Vike.GlobalContext & Vike.GlobalContextClient & {};
|
|
18
|
-
type GlobalContextClientWithServerRouting = GlobalContextBasePublic & Pick<GlobalContextClientInternalWithServerRouting, 'isClientSide'> & Vike.GlobalContext & Vike.GlobalContextClient & {};
|
|
17
|
+
} & Pick<GlobalContextClientInternal, 'isClientSide' | 'devMiddleware'> & Vike.GlobalContext & Vike.GlobalContextClient & {};
|
|
18
|
+
type GlobalContextClientWithServerRouting = GlobalContextBasePublic & Pick<GlobalContextClientInternalWithServerRouting, 'isClientSide' | 'devMiddleware'> & Vike.GlobalContext & Vike.GlobalContextClient & {};
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { IncomingMessage, ServerResponse } 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 { PageContextInitInternal };
|
|
12
10
|
export type { PageContextInit };
|
|
13
11
|
export type { PageContextBuiltInServer_deprecated as PageContextBuiltInServer };
|
|
14
12
|
export type { PageContextBuiltInClientWithClientRouting_deprecated as PageContextBuiltInClientWithClientRouting };
|
|
@@ -149,13 +147,6 @@ type PageContextInit = {
|
|
|
149
147
|
headersOriginal?: unknown;
|
|
150
148
|
/** @deprecated Set `pageContextInit.urlOriginal` instead */ url?: string;
|
|
151
149
|
};
|
|
152
|
-
type PageContextInitInternal = PageContextInit & {
|
|
153
|
-
_nodeDev?: {
|
|
154
|
-
req: IncomingMessage;
|
|
155
|
-
res: ServerResponse;
|
|
156
|
-
};
|
|
157
|
-
_reqWeb?: Request;
|
|
158
|
-
};
|
|
159
150
|
type PageContextBuiltInServer<Data> = PageContextBuiltInCommon<Data> & PageContextInit & PageContextUrlServer & {
|
|
160
151
|
/**
|
|
161
152
|
* The HTTP request headers.
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/// <reference path="../../vike-server.d.ts" preserve="true" />
|
|
1
2
|
export type { PageContext, PageContextServer, PageContextClient, PageContextWithServerRouting, PageContextClientWithServerRouting, } from './PageContext.js';
|
|
2
3
|
export type { GlobalContext, GlobalContextServer, GlobalContextClient, GlobalContextClientWithServerRouting, } from './GlobalContext.js';
|
|
3
4
|
export type { PrerenderContextPublic as PrerenderContext } from '../node/prerender/runPrerender.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const PROJECT_VERSION: '0.4.267-commit-
|
|
1
|
+
export declare const PROJECT_VERSION: '0.4.267-commit-83049a4';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Automatically updated by @brillout/release-me
|
|
2
|
-
export const PROJECT_VERSION = '0.4.267-commit-
|
|
2
|
+
export const PROJECT_VERSION = '0.4.267-commit-83049a4';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vike",
|
|
3
|
-
"version": "0.4.267-commit-
|
|
3
|
+
"version": "0.4.267-commit-83049a4",
|
|
4
4
|
"repository": "https://github.com/vikejs/vike",
|
|
5
5
|
"exports": {
|
|
6
6
|
"./server": {
|
|
@@ -87,12 +87,12 @@
|
|
|
87
87
|
"default": "./dist/shared-server-client/modifyUrl.js"
|
|
88
88
|
},
|
|
89
89
|
"./universal-middleware": {
|
|
90
|
-
"types": "./dist/server/runtime/universal-middleware.d.ts",
|
|
91
|
-
"worker": "./dist/server/runtime/universal-middleware.js",
|
|
92
|
-
"workerd": "./dist/server/runtime/universal-middleware.js",
|
|
93
|
-
"node": "./dist/server/runtime/universal-middleware.js",
|
|
90
|
+
"types": "./dist/server/runtime/universal-middleware/deprecated-export.d.ts",
|
|
91
|
+
"worker": "./dist/server/runtime/universal-middleware/deprecated-export.js",
|
|
92
|
+
"workerd": "./dist/server/runtime/universal-middleware/deprecated-export.js",
|
|
93
|
+
"node": "./dist/server/runtime/universal-middleware/deprecated-export.js",
|
|
94
94
|
"browser": "./dist/client/node.js",
|
|
95
|
-
"default": "./dist/server/runtime/universal-middleware.js"
|
|
95
|
+
"default": "./dist/server/runtime/universal-middleware/deprecated-export.js"
|
|
96
96
|
},
|
|
97
97
|
"./fetch": {
|
|
98
98
|
"types": "./dist/server/runtime/fetch.d.ts",
|
|
@@ -128,15 +128,15 @@
|
|
|
128
128
|
"@brillout/json-serializer": "^0.5.27",
|
|
129
129
|
"@brillout/picocolors": "^1.0.31",
|
|
130
130
|
"@brillout/vite-plugin-server-entry": "^0.7.23",
|
|
131
|
-
"@universal-deploy/store": "^0.
|
|
132
|
-
"@universal-deploy/vite": "^0.
|
|
133
|
-
"@universal-middleware/core": "^0.
|
|
134
|
-
"@universal-middleware/node": "^0.2.
|
|
131
|
+
"@universal-deploy/store": "^0.3.0",
|
|
132
|
+
"@universal-deploy/vite": "^0.2.2",
|
|
133
|
+
"@universal-middleware/core": "^0.7.0",
|
|
134
|
+
"@universal-middleware/node": "^0.2.9",
|
|
135
135
|
"cac": "^6.0.0",
|
|
136
|
-
"convert-route": "^
|
|
136
|
+
"convert-route": "^2.0.0",
|
|
137
137
|
"es-module-lexer": "^1.0.0",
|
|
138
138
|
"json5": "^2.0.0",
|
|
139
|
-
"magic-string": "^1.4.
|
|
139
|
+
"magic-string": "^1.4.3",
|
|
140
140
|
"picomatch": "^4.0.7",
|
|
141
141
|
"rolldown": ">=1.0.0",
|
|
142
142
|
"semver": "^7.8.5",
|
|
@@ -216,7 +216,7 @@
|
|
|
216
216
|
"./dist/shared-server-client/modifyUrl.d.ts"
|
|
217
217
|
],
|
|
218
218
|
"universal-middleware": [
|
|
219
|
-
"./dist/server/runtime/universal-middleware.d.ts"
|
|
219
|
+
"./dist/server/runtime/universal-middleware/deprecated-export.d.ts"
|
|
220
220
|
],
|
|
221
221
|
"fetch": [
|
|
222
222
|
"./dist/server/runtime/fetch.d.ts"
|
|
@@ -257,7 +257,8 @@
|
|
|
257
257
|
"./server.js",
|
|
258
258
|
"./types.js",
|
|
259
259
|
"./universal-middleware.js",
|
|
260
|
-
"./fetch.js"
|
|
260
|
+
"./fetch.js",
|
|
261
|
+
"./vike-server.d.ts"
|
|
261
262
|
],
|
|
262
263
|
"devDependencies": {
|
|
263
264
|
"@brillout/release-me": "^0.4.19",
|
|
@@ -267,7 +268,7 @@
|
|
|
267
268
|
"@types/picomatch": "^4.0.3",
|
|
268
269
|
"@types/semver": "^7.7.1",
|
|
269
270
|
"@types/source-map-support": "^0.5.10",
|
|
270
|
-
"react-streaming": "^0.4.
|
|
271
|
+
"react-streaming": "^0.4.21",
|
|
271
272
|
"rimraf": "^6.1.3",
|
|
272
273
|
"typescript": "^7.0.2",
|
|
273
274
|
"vite": "^7.2.6"
|
package/universal-middleware.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// Some tools still need this as of January 2025
|
|
2
|
-
export * from './dist/server/runtime/universal-middleware.js'
|
|
3
|
-
export { default } from './dist/server/runtime/universal-middleware.js'
|
|
2
|
+
export * from './dist/server/runtime/universal-middleware/deprecated-export.js'
|
|
3
|
+
export { default } from './dist/server/runtime/universal-middleware/deprecated-export.js'
|
package/vike-server.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// `import server from 'vike:server'` — https://vike.dev/serverEntry
|
|
2
|
+
// Hand-written (not generated by tsc): a .ts file inside this ESM package is always a module, whereas `declare module` below needs a script.
|
|
3
|
+
|
|
4
|
+
declare module 'vike:server' {
|
|
5
|
+
/**
|
|
6
|
+
* Your `+server.js` exports.
|
|
7
|
+
*
|
|
8
|
+
* https://vike.dev/serverEntry
|
|
9
|
+
*/
|
|
10
|
+
const server: Record<string, unknown> & {
|
|
11
|
+
fetch: (request: Request, ...args: any[]) => Promise<Response>
|
|
12
|
+
}
|
|
13
|
+
export default server
|
|
14
|
+
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { type RuntimeAdapterTarget } from '@universal-middleware/core';
|
|
2
|
-
import '../assertEnvServer.js';
|
|
3
|
-
declare function universalVikeHandler<T extends string>(request: Request, context: Universal.Context, runtime: RuntimeAdapterTarget<T>): Promise<Response>;
|
|
4
|
-
declare const universalVikeHandlerEnhanced: typeof universalVikeHandler & import("@universal-middleware/core").WithUniversalSymbols<{
|
|
5
|
-
name: string;
|
|
6
|
-
method: ("GET" | "HEAD" | "OPTIONS" | "PATCH" | "POST" | "PUT")[];
|
|
7
|
-
path: string;
|
|
8
|
-
immutable: true;
|
|
9
|
-
}>;
|
|
10
|
-
export default universalVikeHandlerEnhanced;
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { enhance } from '@universal-middleware/core';
|
|
2
|
-
import { renderPageServer } from './renderPageServer.js';
|
|
3
|
-
import '../assertEnvServer.js';
|
|
4
|
-
async function universalVikeHandler(request, context, runtime) {
|
|
5
|
-
const pageContextInit = {
|
|
6
|
-
...context,
|
|
7
|
-
...runtime,
|
|
8
|
-
runtime,
|
|
9
|
-
urlOriginal: request.url,
|
|
10
|
-
headersOriginal: request.headers,
|
|
11
|
-
_reqWeb: request,
|
|
12
|
-
};
|
|
13
|
-
const pageContext = await renderPageServer(pageContextInit);
|
|
14
|
-
const response = pageContext.httpResponse;
|
|
15
|
-
const readable = response.getReadableWebStream();
|
|
16
|
-
return new Response(readable, {
|
|
17
|
-
status: response.statusCode,
|
|
18
|
-
headers: response.headers,
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
const universalVikeHandlerEnhanced = enhance(universalVikeHandler, {
|
|
22
|
-
name: 'vike',
|
|
23
|
-
method: ['GET', 'POST', 'PUT', 'PATCH', 'HEAD', 'OPTIONS'],
|
|
24
|
-
path: '/**',
|
|
25
|
-
immutable: true,
|
|
26
|
-
});
|
|
27
|
-
export default universalVikeHandlerEnhanced;
|