@fluojs/http 2.0.1 → 3.0.0
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/README.ko.md +417 -16
- package/README.md +424 -16
- package/dist/access-log-observer.d.ts +77 -0
- package/dist/access-log-observer.d.ts.map +1 -0
- package/dist/access-log-observer.js +171 -0
- package/dist/adapter.d.ts +9 -0
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +15 -1
- package/dist/adapters/binding.d.ts.map +1 -1
- package/dist/adapters/binding.js +18 -16
- package/dist/adapters/dto-binding-plan.d.ts +2 -2
- package/dist/adapters/dto-binding-plan.d.ts.map +1 -1
- package/dist/adapters/dto-binding-plan.js +13 -4
- package/dist/adapters/dto-validation-adapter.d.ts +2 -1
- package/dist/adapters/dto-validation-adapter.d.ts.map +1 -1
- package/dist/adapters/dto-validation-adapter.js +2 -2
- package/dist/byte-range-response.d.ts +71 -0
- package/dist/byte-range-response.d.ts.map +1 -0
- package/dist/byte-range-response.js +347 -0
- package/dist/client-identity.d.ts +8 -4
- package/dist/client-identity.d.ts.map +1 -1
- package/dist/client-identity.js +12 -93
- package/dist/compiled-route-identity.d.ts +17 -0
- package/dist/compiled-route-identity.d.ts.map +1 -0
- package/dist/compiled-route-identity.js +29 -0
- package/dist/connection.d.ts +67 -0
- package/dist/connection.d.ts.map +1 -0
- package/dist/connection.js +480 -0
- package/dist/context/request-context-node-store.d.ts +6 -0
- package/dist/context/request-context-node-store.d.ts.map +1 -1
- package/dist/context/request-context-node-store.js +14 -0
- package/dist/context/request-context.d.ts +5 -5
- package/dist/context/request-context.d.ts.map +1 -1
- package/dist/context/request-context.js +8 -83
- package/dist/context/request-id.d.ts +10 -0
- package/dist/context/request-id.d.ts.map +1 -0
- package/dist/context/request-id.js +27 -0
- package/dist/context/sse.d.ts +13 -0
- package/dist/context/sse.d.ts.map +1 -1
- package/dist/context/sse.js +36 -6
- package/dist/cookie-helpers.d.ts +47 -0
- package/dist/cookie-helpers.d.ts.map +1 -0
- package/dist/cookie-helpers.js +166 -0
- package/dist/decorators.d.ts +52 -19
- package/dist/decorators.d.ts.map +1 -1
- package/dist/decorators.js +57 -10
- package/dist/dispatch/conditional-request-policy.d.ts +67 -0
- package/dist/dispatch/conditional-request-policy.d.ts.map +1 -0
- package/dist/dispatch/conditional-request-policy.js +297 -0
- package/dist/dispatch/dispatch-content-negotiation.d.ts +8 -0
- package/dist/dispatch/dispatch-content-negotiation.d.ts.map +1 -1
- package/dist/dispatch/dispatch-content-negotiation.js +89 -42
- package/dist/dispatch/dispatch-error-negotiation.d.ts +26 -0
- package/dist/dispatch/dispatch-error-negotiation.d.ts.map +1 -0
- package/dist/dispatch/dispatch-error-negotiation.js +110 -0
- package/dist/dispatch/dispatch-error-policy.d.ts +1 -10
- package/dist/dispatch/dispatch-error-policy.d.ts.map +1 -1
- package/dist/dispatch/dispatch-error-policy.js +1 -33
- package/dist/dispatch/dispatch-error-representation.d.ts +18 -0
- package/dist/dispatch/dispatch-error-representation.d.ts.map +1 -0
- package/dist/dispatch/dispatch-error-representation.js +125 -0
- package/dist/dispatch/dispatch-response-metadata.d.ts +10 -0
- package/dist/dispatch/dispatch-response-metadata.d.ts.map +1 -0
- package/dist/dispatch/dispatch-response-metadata.js +12 -0
- package/dist/dispatch/dispatch-response-policy.d.ts +30 -3
- package/dist/dispatch/dispatch-response-policy.d.ts.map +1 -1
- package/dist/dispatch/dispatch-response-policy.js +104 -15
- package/dist/dispatch/dispatcher.d.ts +5 -1
- package/dist/dispatch/dispatcher.d.ts.map +1 -1
- package/dist/dispatch/dispatcher.js +140 -100
- package/dist/dispatch/fast-path/debug-visibility.d.ts.map +1 -1
- package/dist/dispatch/fast-path/debug-visibility.js +6 -3
- package/dist/dispatch/fast-path/dispatcher-state.d.ts +10 -0
- package/dist/dispatch/fast-path/dispatcher-state.d.ts.map +1 -0
- package/dist/dispatch/fast-path/dispatcher-state.js +52 -0
- package/dist/dispatch/fast-path/eligibility-checker.d.ts.map +1 -1
- package/dist/dispatch/fast-path/eligibility-checker.js +27 -15
- package/dist/dispatch/fast-path/eligibility.d.ts +16 -10
- package/dist/dispatch/fast-path/eligibility.d.ts.map +1 -1
- package/dist/dispatch/fast-path/eligibility.js +10 -4
- package/dist/dispatch/fast-path/fast-path-executor.d.ts +1 -1
- package/dist/dispatch/fast-path/fast-path-executor.d.ts.map +1 -1
- package/dist/dispatch/fast-path/fast-path-executor.js +8 -5
- package/dist/dispatch/request-abort.d.ts +22 -0
- package/dist/dispatch/request-abort.d.ts.map +1 -0
- package/dist/dispatch/request-abort.js +30 -0
- package/dist/dispatch/response-integration.d.ts +55 -0
- package/dist/dispatch/response-integration.d.ts.map +1 -0
- package/dist/dispatch/response-integration.js +57 -0
- package/dist/errors.d.ts +10 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +19 -0
- package/dist/guards.d.ts +1 -1
- package/dist/guards.d.ts.map +1 -1
- package/dist/header-helpers.d.ts +59 -0
- package/dist/header-helpers.d.ts.map +1 -0
- package/dist/header-helpers.js +185 -0
- package/dist/index.d.ts +1 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -15
- package/dist/index.portable.d.ts +25 -0
- package/dist/index.portable.d.ts.map +1 -0
- package/dist/index.portable.js +21 -0
- package/dist/internal.d.ts +3 -1
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +2 -0
- package/dist/mapping.d.ts.map +1 -1
- package/dist/mapping.js +100 -15
- package/dist/middleware/correlation.d.ts +9 -1
- package/dist/middleware/correlation.d.ts.map +1 -1
- package/dist/middleware/correlation.js +25 -14
- package/dist/middleware/cors.d.ts.map +1 -1
- package/dist/middleware/cors.js +5 -8
- package/dist/middleware/middleware.d.ts +3 -3
- package/dist/middleware/middleware.d.ts.map +1 -1
- package/dist/middleware/rate-limit.d.ts +13 -2
- package/dist/middleware/rate-limit.d.ts.map +1 -1
- package/dist/middleware/rate-limit.js +1 -0
- package/dist/static-assets.d.ts +77 -0
- package/dist/static-assets.d.ts.map +1 -0
- package/dist/static-assets.js +270 -0
- package/dist/types.d.ts +209 -16
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +69 -1
- package/package.json +19 -9
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
import { writeByteRangeResponse } from './byte-range-response.js';
|
|
2
|
+
import { appendVaryHeader, readFirstNonEmptyRequestHeaderValue } from './header-helpers.js';
|
|
3
|
+
import { applyResponseValidators, resolveConditionalRequestRepresentation, writeConditionalResponse } from './dispatch/conditional-request-policy.js';
|
|
4
|
+
const defaultCacheControl = 'public, max-age=0';
|
|
5
|
+
const defaultDotfiles = 'ignore';
|
|
6
|
+
|
|
7
|
+
/** Content encodings that a static asset source may select. */
|
|
8
|
+
|
|
9
|
+
/** Request encoding names considered while selecting a static representation. */
|
|
10
|
+
|
|
11
|
+
/** Metadata for one selected static representation. */
|
|
12
|
+
|
|
13
|
+
/** Context supplied to an application-owned static asset source. */
|
|
14
|
+
|
|
15
|
+
/** Resolution outcome for an existing asset without an acceptable representation. */
|
|
16
|
+
|
|
17
|
+
/** Result returned by an application-owned static asset source. */
|
|
18
|
+
|
|
19
|
+
/** Runtime-neutral source for static asset representations. */
|
|
20
|
+
|
|
21
|
+
/** Static asset middleware configuration. */
|
|
22
|
+
|
|
23
|
+
/** Static middleware that serves a required explicit {@link StaticAssetSource}. */
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Creates portable static asset middleware without assuming filesystem access.
|
|
27
|
+
*
|
|
28
|
+
* @param options Source and URL/security policy for one static mount.
|
|
29
|
+
* @returns Middleware that serves matching `GET` and `HEAD` asset requests.
|
|
30
|
+
* @throws {TypeError} When configuration is structurally invalid.
|
|
31
|
+
*/
|
|
32
|
+
export function createStaticAssetsMiddleware(options) {
|
|
33
|
+
const configuration = resolveStaticAssetsConfiguration(options);
|
|
34
|
+
return {
|
|
35
|
+
async handle(context, next) {
|
|
36
|
+
const assetPath = resolveStaticAssetPath(context.request.path, configuration.prefix, configuration.dotfiles);
|
|
37
|
+
if (!isStaticAssetMethod(context.request.method)) {
|
|
38
|
+
await next();
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (assetPath === 'denied') {
|
|
42
|
+
context.response.setStatus(403);
|
|
43
|
+
await context.response.send(undefined);
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if (!assetPath) {
|
|
47
|
+
await next();
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const sourceContext = createStaticAssetResolveContext(context);
|
|
51
|
+
const resolution = await resolveStaticAsset(configuration, assetPath, sourceContext);
|
|
52
|
+
if (resolution === 'denied') {
|
|
53
|
+
context.response.setStatus(403);
|
|
54
|
+
await context.response.send(undefined);
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
if (!resolution) {
|
|
58
|
+
await next();
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
if (isStaticAssetNotAcceptable(resolution)) {
|
|
62
|
+
appendVaryHeader(context.response, 'Accept-Encoding');
|
|
63
|
+
context.response.setHeader('Content-Length', '0');
|
|
64
|
+
context.response.setStatus(406);
|
|
65
|
+
await context.response.send(undefined, {
|
|
66
|
+
compression: false
|
|
67
|
+
});
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
try {
|
|
71
|
+
if (!isStaticAssetEncodingAccepted(resolution, sourceContext.acceptedEncodings)) {
|
|
72
|
+
appendVaryHeader(context.response, 'Accept-Encoding');
|
|
73
|
+
context.response.setHeader('Content-Length', '0');
|
|
74
|
+
context.response.setStatus(406);
|
|
75
|
+
await context.response.send(undefined, {
|
|
76
|
+
compression: false
|
|
77
|
+
});
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
if (configuration.cacheControl !== false) {
|
|
81
|
+
context.response.setHeader('Cache-Control', configuration.cacheControl);
|
|
82
|
+
}
|
|
83
|
+
if (resolution.contentEncoding) {
|
|
84
|
+
context.response.setHeader('Content-Encoding', resolution.contentEncoding);
|
|
85
|
+
}
|
|
86
|
+
if (resolution.contentEncoding || resolution.variesByEncoding) {
|
|
87
|
+
appendVaryHeader(context.response, 'Accept-Encoding');
|
|
88
|
+
}
|
|
89
|
+
const conditional = resolveConditionalRequestRepresentation(context.request, {
|
|
90
|
+
exists: true,
|
|
91
|
+
validators: resolution.validators
|
|
92
|
+
});
|
|
93
|
+
if (conditional.outcome !== 'proceed') {
|
|
94
|
+
await writeConditionalResponse(context.response, conditional.outcome, conditional.validators, {
|
|
95
|
+
compression: false
|
|
96
|
+
});
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
context.response.setStatus(200);
|
|
100
|
+
await writeByteRangeResponse({
|
|
101
|
+
applySuccessResponseMetadata: () => {
|
|
102
|
+
applyResponseValidators(context.response, conditional.validators);
|
|
103
|
+
},
|
|
104
|
+
compression: false,
|
|
105
|
+
entry: {
|
|
106
|
+
contentType: resolution.contentType,
|
|
107
|
+
size: resolution.size,
|
|
108
|
+
source: resolution.source
|
|
109
|
+
},
|
|
110
|
+
request: context.request,
|
|
111
|
+
response: context.response,
|
|
112
|
+
validators: conditional.validators
|
|
113
|
+
});
|
|
114
|
+
} finally {
|
|
115
|
+
await resolution.dispose?.();
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
function resolveStaticAssetsConfiguration(options) {
|
|
121
|
+
if (!options || typeof options !== 'object' || !options.source || typeof options.source.resolve !== 'function') {
|
|
122
|
+
throw new TypeError('Static asset middleware requires an explicit asset source.');
|
|
123
|
+
}
|
|
124
|
+
const dotfiles = options.dotfiles ?? defaultDotfiles;
|
|
125
|
+
if (dotfiles !== 'allow' && dotfiles !== 'deny' && dotfiles !== 'ignore') {
|
|
126
|
+
throw new TypeError('Static asset dotfiles policy must be "allow", "deny", or "ignore".');
|
|
127
|
+
}
|
|
128
|
+
const cacheControl = options.cacheControl ?? defaultCacheControl;
|
|
129
|
+
if (cacheControl !== false && (typeof cacheControl !== 'string' || cacheControl.trim() === '')) {
|
|
130
|
+
throw new TypeError('Static asset cacheControl must be a non-empty string or false.');
|
|
131
|
+
}
|
|
132
|
+
return {
|
|
133
|
+
cacheControl,
|
|
134
|
+
dotfiles,
|
|
135
|
+
index: normalizeIndex(options.index),
|
|
136
|
+
prefix: normalizePrefix(options.prefix),
|
|
137
|
+
source: options.source
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
function normalizePrefix(prefix) {
|
|
141
|
+
const value = prefix ?? '/';
|
|
142
|
+
if (typeof value !== 'string' || !value.startsWith('/')) {
|
|
143
|
+
throw new TypeError('Static asset prefix must begin with "/".');
|
|
144
|
+
}
|
|
145
|
+
const normalized = value.replace(/\/+$/, '');
|
|
146
|
+
return normalized === '' ? '/' : normalized;
|
|
147
|
+
}
|
|
148
|
+
function normalizeIndex(index) {
|
|
149
|
+
if (index === undefined || index === false) {
|
|
150
|
+
return [];
|
|
151
|
+
}
|
|
152
|
+
const values = typeof index === 'string' ? [index] : index;
|
|
153
|
+
if (!Array.isArray(values) || values.length === 0) {
|
|
154
|
+
throw new TypeError('Static asset index must be false, a non-empty filename, or a non-empty filename array.');
|
|
155
|
+
}
|
|
156
|
+
return values.map(value => {
|
|
157
|
+
if (typeof value !== 'string' || value === '' || value.includes('/') || value.includes('\\') || value === '.' || value === '..') {
|
|
158
|
+
throw new TypeError('Static asset index names must be plain filenames.');
|
|
159
|
+
}
|
|
160
|
+
return value;
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
function resolveStaticAssetPath(requestPath, prefix, dotfiles) {
|
|
164
|
+
if (!matchesStaticPrefix(requestPath, prefix)) {
|
|
165
|
+
return undefined;
|
|
166
|
+
}
|
|
167
|
+
const encodedPath = prefix === '/' ? requestPath : requestPath.slice(prefix.length);
|
|
168
|
+
const directory = encodedPath.endsWith('/');
|
|
169
|
+
const encodedSegments = encodedPath.split('/').filter(segment => segment.length > 0);
|
|
170
|
+
const segments = [];
|
|
171
|
+
for (const encodedSegment of encodedSegments) {
|
|
172
|
+
let segment;
|
|
173
|
+
try {
|
|
174
|
+
segment = decodeURIComponent(encodedSegment);
|
|
175
|
+
} catch {
|
|
176
|
+
return undefined;
|
|
177
|
+
}
|
|
178
|
+
if (segment === '' || segment === '.' || segment === '..' || segment.includes('/') || segment.includes('\\') || segment.includes('\0')) {
|
|
179
|
+
return undefined;
|
|
180
|
+
}
|
|
181
|
+
if (segment.startsWith('.') && dotfiles !== 'allow') {
|
|
182
|
+
return dotfiles === 'deny' ? 'denied' : undefined;
|
|
183
|
+
}
|
|
184
|
+
segments.push(segment);
|
|
185
|
+
}
|
|
186
|
+
return {
|
|
187
|
+
directory,
|
|
188
|
+
path: segments.join('/')
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
function matchesStaticPrefix(requestPath, prefix) {
|
|
192
|
+
return prefix === '/' ? requestPath.startsWith('/') : requestPath === prefix || requestPath.startsWith(`${prefix}/`);
|
|
193
|
+
}
|
|
194
|
+
function isStaticAssetMethod(method) {
|
|
195
|
+
const normalized = method.toUpperCase();
|
|
196
|
+
return normalized === 'GET' || normalized === 'HEAD';
|
|
197
|
+
}
|
|
198
|
+
function createStaticAssetResolveContext(context) {
|
|
199
|
+
return {
|
|
200
|
+
acceptedEncodings: parseAcceptedEncodings(context),
|
|
201
|
+
signal: context.request.signal
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
function parseAcceptedEncodings(context) {
|
|
205
|
+
const value = readFirstNonEmptyRequestHeaderValue(context.request, 'accept-encoding');
|
|
206
|
+
if (!value) {
|
|
207
|
+
return ['identity'];
|
|
208
|
+
}
|
|
209
|
+
const qualities = new Map();
|
|
210
|
+
for (const candidate of value.split(',')) {
|
|
211
|
+
const [name, ...parameters] = candidate.trim().toLowerCase().split(';');
|
|
212
|
+
const quality = parameters.find(parameter => parameter.trim().startsWith('q='));
|
|
213
|
+
const parsedQuality = parseAcceptEncodingQuality(quality?.trim().slice(2));
|
|
214
|
+
if (!name || parsedQuality === undefined) {
|
|
215
|
+
continue;
|
|
216
|
+
}
|
|
217
|
+
qualities.set(name, parsedQuality);
|
|
218
|
+
}
|
|
219
|
+
return ['br', 'gzip', 'identity'].map(encoding => ({
|
|
220
|
+
encoding,
|
|
221
|
+
quality: resolveAcceptEncodingQuality(encoding, qualities)
|
|
222
|
+
})).filter(candidate => candidate.quality > 0).sort((left, right) => right.quality - left.quality || encodingPriority(left.encoding) - encodingPriority(right.encoding)).map(candidate => candidate.encoding);
|
|
223
|
+
}
|
|
224
|
+
function parseAcceptEncodingQuality(value) {
|
|
225
|
+
if (value === undefined) {
|
|
226
|
+
return 1;
|
|
227
|
+
}
|
|
228
|
+
if (!/^(?:0(?:\.\d{0,3})?|1(?:\.0{0,3})?)$/.test(value)) {
|
|
229
|
+
return undefined;
|
|
230
|
+
}
|
|
231
|
+
return Number(value);
|
|
232
|
+
}
|
|
233
|
+
function resolveAcceptEncodingQuality(encoding, qualities) {
|
|
234
|
+
const explicit = qualities.get(encoding);
|
|
235
|
+
if (explicit !== undefined) {
|
|
236
|
+
return explicit;
|
|
237
|
+
}
|
|
238
|
+
const wildcard = qualities.get('*');
|
|
239
|
+
return encoding === 'identity' ? wildcard === 0 ? 0 : 1 : wildcard ?? 0;
|
|
240
|
+
}
|
|
241
|
+
function encodingPriority(encoding) {
|
|
242
|
+
return encoding === 'br' ? 0 : encoding === 'gzip' ? 1 : 2;
|
|
243
|
+
}
|
|
244
|
+
async function resolveStaticAsset(configuration, assetPath, context) {
|
|
245
|
+
if (assetPath.directory) {
|
|
246
|
+
for (const indexName of configuration.index) {
|
|
247
|
+
if (indexName.startsWith('.') && configuration.dotfiles !== 'allow') {
|
|
248
|
+
if (configuration.dotfiles === 'deny') {
|
|
249
|
+
return 'denied';
|
|
250
|
+
}
|
|
251
|
+
continue;
|
|
252
|
+
}
|
|
253
|
+
const asset = await configuration.source.resolve(assetPath.path === '' ? indexName : `${assetPath.path}/${indexName}`, context);
|
|
254
|
+
if (asset) {
|
|
255
|
+
return asset;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return undefined;
|
|
259
|
+
}
|
|
260
|
+
if (assetPath.path === '') {
|
|
261
|
+
return undefined;
|
|
262
|
+
}
|
|
263
|
+
return await configuration.source.resolve(assetPath.path, context);
|
|
264
|
+
}
|
|
265
|
+
function isStaticAssetNotAcceptable(resolution) {
|
|
266
|
+
return resolution !== undefined && 'notAcceptable' in resolution && resolution.notAcceptable;
|
|
267
|
+
}
|
|
268
|
+
function isStaticAssetEncodingAccepted(asset, acceptedEncodings) {
|
|
269
|
+
return acceptedEncodings.includes(asset.contentEncoding ?? 'identity');
|
|
270
|
+
}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { Constructor, MaybePromise, MetadataPropertyKey, MetadataSource, Token } from '@fluojs/core';
|
|
2
2
|
import type { RequestScopeContainer } from '@fluojs/di';
|
|
3
|
+
import type { ErrorResponse, HttpException } from './exceptions.js';
|
|
3
4
|
export type { ValidationIssue, Validator } from '@fluojs/validation';
|
|
4
|
-
/** HTTP
|
|
5
|
-
export type HttpMethod =
|
|
5
|
+
/** Canonical uppercase HTTP method token or Fluo's reserved `ALL` wildcard sentinel. */
|
|
6
|
+
export type HttpMethod = string;
|
|
6
7
|
/** Strategies that decide how versioned HTTP routes are selected for one request. */
|
|
7
8
|
export declare enum VersioningType {
|
|
8
9
|
URI = "URI",
|
|
@@ -30,12 +31,30 @@ export interface FrameworkRequest {
|
|
|
30
31
|
files?: readonly FrameworkRequestFile[];
|
|
31
32
|
/** Adapter-snapshotted inbound request id used without forcing header normalization. */
|
|
32
33
|
requestId?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Adapter-snapshotted transport metadata available without platform-specific
|
|
36
|
+
* casts from middleware, guards, and request-scoped services.
|
|
37
|
+
*/
|
|
38
|
+
connection?: FrameworkRequestConnection;
|
|
33
39
|
rawBody?: Uint8Array;
|
|
34
40
|
raw: unknown;
|
|
35
41
|
/** Adapter-owned abort probe used by internal fast paths without forcing AbortSignal allocation. */
|
|
36
42
|
isAborted?: () => boolean;
|
|
37
43
|
signal?: AbortSignal;
|
|
38
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Runtime-neutral transport metadata captured when an adapter receives a request.
|
|
47
|
+
*
|
|
48
|
+
* @remarks
|
|
49
|
+
* Fetch-only adapters may omit this value because the Web `Request` contract
|
|
50
|
+
* does not expose a peer address.
|
|
51
|
+
*/
|
|
52
|
+
export interface FrameworkRequestConnection {
|
|
53
|
+
/** Direct peer address supplied by the adapter transport, when available. */
|
|
54
|
+
readonly remoteAddress?: string;
|
|
55
|
+
/** Transport protocol supplied by the adapter when known. */
|
|
56
|
+
readonly protocol?: 'http' | 'https';
|
|
57
|
+
}
|
|
39
58
|
/** Runtime-neutral multipart file shape attached by adapters that parse uploads. */
|
|
40
59
|
export interface FrameworkRequestFile {
|
|
41
60
|
/** Multipart form field name that carried this file. */
|
|
@@ -57,6 +76,12 @@ export interface FrameworkRequestFile {
|
|
|
57
76
|
*/
|
|
58
77
|
export interface FrameworkResponse {
|
|
59
78
|
compression?: FrameworkResponseCompression;
|
|
79
|
+
/**
|
|
80
|
+
* Optional request-scoped writer for HTTP 103 informational responses.
|
|
81
|
+
*
|
|
82
|
+
* @remarks Property absence means the active adapter cannot emit Early Hints.
|
|
83
|
+
*/
|
|
84
|
+
earlyHints?: FrameworkResponseEarlyHints;
|
|
60
85
|
statusCode?: number;
|
|
61
86
|
statusSet?: boolean;
|
|
62
87
|
headers: Record<string, string | string[]>;
|
|
@@ -64,9 +89,41 @@ export interface FrameworkResponse {
|
|
|
64
89
|
raw?: unknown;
|
|
65
90
|
stream?: FrameworkResponseStream;
|
|
66
91
|
setStatus(code: number): void;
|
|
92
|
+
/**
|
|
93
|
+
* Writes one response header value.
|
|
94
|
+
*
|
|
95
|
+
* Repeated `Set-Cookie` writes append ordered independent fields. Other
|
|
96
|
+
* header names retain adapter-defined replacement semantics.
|
|
97
|
+
*/
|
|
67
98
|
setHeader(name: string, value: string | string[]): void;
|
|
68
99
|
redirect(status: number, location: string): void;
|
|
69
|
-
send(body: unknown): MaybePromise<void>;
|
|
100
|
+
send(body: unknown, options?: FrameworkResponseSendOptions): MaybePromise<void>;
|
|
101
|
+
}
|
|
102
|
+
/** Per-response write controls owned by response policies. */
|
|
103
|
+
export interface FrameworkResponseSendOptions {
|
|
104
|
+
/** Whether adapter-owned dynamic compression may transform this body. */
|
|
105
|
+
readonly compression?: boolean;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Headers accepted by one HTTP 103 Early Hints write.
|
|
109
|
+
*
|
|
110
|
+
* @remarks
|
|
111
|
+
* Node-backed transports require at least one non-empty `link` value. Additional
|
|
112
|
+
* informational header fields must use valid HTTP names and values. Header names
|
|
113
|
+
* are case-insensitive and cannot be repeated with different casing.
|
|
114
|
+
*/
|
|
115
|
+
export type EarlyHintsHeaders = Readonly<Record<string, string | readonly string[]>> & {
|
|
116
|
+
readonly link: string | readonly string[];
|
|
117
|
+
};
|
|
118
|
+
/** Optional request-scoped capability for writing HTTP 103 Early Hints. */
|
|
119
|
+
export interface FrameworkResponseEarlyHints {
|
|
120
|
+
/**
|
|
121
|
+
* Emit one informational response without committing or mutating the final response.
|
|
122
|
+
*
|
|
123
|
+
* @param headers Link hints and optional additional informational fields.
|
|
124
|
+
* @returns A promise that settles when the native transport accepts the write.
|
|
125
|
+
*/
|
|
126
|
+
write(headers: EarlyHintsHeaders): Promise<void>;
|
|
70
127
|
}
|
|
71
128
|
/** Compression writer used when a platform can stream encoded response bodies. */
|
|
72
129
|
export interface FrameworkResponseCompression {
|
|
@@ -82,9 +139,21 @@ export interface FrameworkResponseCompressionWriteOptions {
|
|
|
82
139
|
export interface FrameworkResponseStream {
|
|
83
140
|
readonly closed: boolean;
|
|
84
141
|
close(): void;
|
|
142
|
+
/** Disables adapter-owned dynamic compression before the first streamed byte. */
|
|
143
|
+
disableCompression?(): void;
|
|
85
144
|
flush?(): void;
|
|
145
|
+
/** Subscribes to transport closure and returns an optional remover. */
|
|
86
146
|
onClose?(listener: () => void): (() => void) | void;
|
|
147
|
+
/**
|
|
148
|
+
* Subscribes to one transport failure, including an `undefined` failure value.
|
|
149
|
+
*
|
|
150
|
+
* The optional remover stops future delivery and should be called when the
|
|
151
|
+
* streaming operation settles. A reported failure is an occurrence, not a
|
|
152
|
+
* truthiness check: consumers must propagate even an `undefined` value.
|
|
153
|
+
*/
|
|
154
|
+
onError?(listener: (error: unknown) => void): (() => void) | void;
|
|
87
155
|
waitForDrain?(): Promise<void>;
|
|
156
|
+
/** Writes one chunk; `false` requires callers to await `waitForDrain()`. */
|
|
88
157
|
write(chunk: string | Uint8Array): boolean;
|
|
89
158
|
}
|
|
90
159
|
/** Serializer used during response content negotiation. */
|
|
@@ -97,6 +166,96 @@ export interface ContentNegotiationOptions {
|
|
|
97
166
|
defaultMediaType?: string;
|
|
98
167
|
formatters?: ResponseFormatter[];
|
|
99
168
|
}
|
|
169
|
+
/** Strength used when serializing one generated HTTP entity tag. */
|
|
170
|
+
export type EntityTagStrength = 'strong' | 'weak';
|
|
171
|
+
/** Portable entity tag generated for one selected resource representation. */
|
|
172
|
+
export interface EntityTag {
|
|
173
|
+
/** Opaque validator value without surrounding quotes or a weak prefix. */
|
|
174
|
+
readonly opaqueValue: string;
|
|
175
|
+
/** Comparison strength emitted in the `ETag` response field. */
|
|
176
|
+
readonly strength: EntityTagStrength;
|
|
177
|
+
}
|
|
178
|
+
/** Validators that describe the current selected resource representation. */
|
|
179
|
+
export interface ResponseValidators {
|
|
180
|
+
/** Optional entity tag emitted as the `ETag` response field. */
|
|
181
|
+
readonly etag?: EntityTag;
|
|
182
|
+
/** Optional modification instant normalized to whole seconds for `Last-Modified`. */
|
|
183
|
+
readonly lastModified?: Date;
|
|
184
|
+
}
|
|
185
|
+
/** Route and request information supplied when resolving a selected representation. */
|
|
186
|
+
export interface ConditionalRequestContext {
|
|
187
|
+
/** Matched route descriptor selected for the request. */
|
|
188
|
+
readonly handler: HandlerDescriptor;
|
|
189
|
+
/** Adapter-normalized request carrying conditional request fields. */
|
|
190
|
+
readonly request: FrameworkRequest;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Current existence and validators for the selected representation.
|
|
194
|
+
*
|
|
195
|
+
* @remarks `exists` controls wildcard conditional fields independently from
|
|
196
|
+
* validator metadata, so an existing representation may intentionally omit
|
|
197
|
+
* both `ETag` and `Last-Modified`.
|
|
198
|
+
*/
|
|
199
|
+
export type ConditionalRequestResolution = {
|
|
200
|
+
/** The selected representation does not currently exist. */
|
|
201
|
+
readonly exists: false;
|
|
202
|
+
} | {
|
|
203
|
+
/** The selected representation exists, whether or not it has validators. */
|
|
204
|
+
readonly exists: true;
|
|
205
|
+
/** Optional validators emitted with a successful or conditional response. */
|
|
206
|
+
readonly validators?: ResponseValidators;
|
|
207
|
+
};
|
|
208
|
+
/** Resolves the selected representation before its route handler executes. */
|
|
209
|
+
export type ConditionalRequestResolver = (context: ConditionalRequestContext) => MaybePromise<ConditionalRequestResolution>;
|
|
210
|
+
/** Dispatcher-owned HTTP conditional request configuration. */
|
|
211
|
+
export interface ConditionalRequestOptions {
|
|
212
|
+
/** Resolves representation existence and optional validators for each matched resource request. */
|
|
213
|
+
readonly resolve: ConditionalRequestResolver;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* HTTP-classified failure data passed to an application HTML representation provider.
|
|
217
|
+
*
|
|
218
|
+
* @remarks
|
|
219
|
+
* The context intentionally omits `FrameworkResponse`. Providers may resolve
|
|
220
|
+
* request-scoped dependencies, but status, headers, body suppression, and
|
|
221
|
+
* response commit remain owned by the HTTP dispatcher.
|
|
222
|
+
*/
|
|
223
|
+
export interface HttpErrorRepresentationContext {
|
|
224
|
+
/** Request-scoped dependency container active for the failed dispatch. */
|
|
225
|
+
readonly container: RequestScopeContainer;
|
|
226
|
+
/** HTTP exception selected by dispatcher error classification. */
|
|
227
|
+
readonly error: HttpException;
|
|
228
|
+
/** Matched handler when the failure happened after route matching. */
|
|
229
|
+
readonly handler?: HandlerDescriptor;
|
|
230
|
+
/** Canonical JSON envelope for the selected HTTP outcome. */
|
|
231
|
+
readonly json: ErrorResponse;
|
|
232
|
+
/** Adapter-normalized request that produced the failure. */
|
|
233
|
+
readonly request: FrameworkRequest;
|
|
234
|
+
/** Optional request identifier preserved from the active request context. */
|
|
235
|
+
readonly requestId?: string;
|
|
236
|
+
}
|
|
237
|
+
/** Application-owned renderer for optional HTML error and not-found documents. */
|
|
238
|
+
export interface HtmlErrorRepresentationProvider {
|
|
239
|
+
/**
|
|
240
|
+
* Decides whether HTML is available for one classified HTTP outcome.
|
|
241
|
+
*
|
|
242
|
+
* @param context HTTP-owned error outcome and request-scope access.
|
|
243
|
+
* @returns `true` when this provider can render the outcome; defaults to `true` when omitted.
|
|
244
|
+
*/
|
|
245
|
+
canRender?(context: HttpErrorRepresentationContext): MaybePromise<boolean>;
|
|
246
|
+
/**
|
|
247
|
+
* Renders a complete HTML document before the dispatcher commits the response.
|
|
248
|
+
*
|
|
249
|
+
* @param context HTTP-owned error outcome and request-scope access.
|
|
250
|
+
* @returns Runtime-neutral UTF-8 text or bytes for the HTML representation.
|
|
251
|
+
*/
|
|
252
|
+
render(context: HttpErrorRepresentationContext): MaybePromise<string | Uint8Array>;
|
|
253
|
+
}
|
|
254
|
+
/** Optional error representation providers registered for one HTTP application. */
|
|
255
|
+
export interface HttpErrorRepresentationOptions {
|
|
256
|
+
/** Application-owned HTML provider; canonical JSON remains framework-owned and always available. */
|
|
257
|
+
readonly html: HtmlErrorRepresentationProvider;
|
|
258
|
+
}
|
|
100
259
|
/** Authenticated caller identity attached to the active request context. */
|
|
101
260
|
export interface Principal {
|
|
102
261
|
subject: string;
|
|
@@ -149,28 +308,47 @@ export interface RouteDefinition {
|
|
|
149
308
|
}
|
|
150
309
|
/** Derived metadata used while mapping controllers into dispatchable handlers. */
|
|
151
310
|
export interface HandlerMetadata {
|
|
152
|
-
controllerPath: string;
|
|
153
|
-
effectivePath: string;
|
|
154
|
-
effectiveVersion?: string;
|
|
155
|
-
moduleMiddleware:
|
|
156
|
-
moduleType?: Constructor;
|
|
157
|
-
pathParams: string[];
|
|
311
|
+
readonly controllerPath: string;
|
|
312
|
+
readonly effectivePath: string;
|
|
313
|
+
readonly effectiveVersion?: string;
|
|
314
|
+
readonly moduleMiddleware: readonly MiddlewareSnapshotLike[];
|
|
315
|
+
readonly moduleType?: Constructor;
|
|
316
|
+
readonly pathParams: readonly string[];
|
|
317
|
+
}
|
|
318
|
+
/** Immutable route metadata retained by a handler mapping snapshot. */
|
|
319
|
+
export interface HandlerRouteSnapshot {
|
|
320
|
+
readonly method: HttpMethod;
|
|
321
|
+
readonly path: string;
|
|
322
|
+
readonly produces?: readonly string[];
|
|
323
|
+
readonly request?: Constructor;
|
|
324
|
+
readonly guards?: readonly GuardLike[];
|
|
325
|
+
readonly headers?: readonly Readonly<{
|
|
326
|
+
name: string;
|
|
327
|
+
value: string;
|
|
328
|
+
}>[];
|
|
329
|
+
readonly interceptors?: readonly InterceptorLike[];
|
|
330
|
+
readonly redirect?: Readonly<{
|
|
331
|
+
url: string;
|
|
332
|
+
statusCode?: number;
|
|
333
|
+
}>;
|
|
334
|
+
readonly successStatus?: number;
|
|
335
|
+
readonly version?: string;
|
|
158
336
|
}
|
|
159
337
|
/** Fully resolved controller handler descriptor stored in handler mappings. */
|
|
160
338
|
export interface HandlerDescriptor {
|
|
161
|
-
controllerToken: Constructor;
|
|
162
|
-
metadata: HandlerMetadata;
|
|
163
|
-
methodName: string;
|
|
164
|
-
route:
|
|
339
|
+
readonly controllerToken: Constructor;
|
|
340
|
+
readonly metadata: HandlerMetadata;
|
|
341
|
+
readonly methodName: string;
|
|
342
|
+
readonly route: HandlerRouteSnapshot;
|
|
165
343
|
}
|
|
166
344
|
/** Result returned when request matching resolves one handler and path params. */
|
|
167
345
|
export interface HandlerMatch {
|
|
168
|
-
descriptor: HandlerDescriptor;
|
|
169
|
-
params: Readonly<Record<string, string>>;
|
|
346
|
+
readonly descriptor: HandlerDescriptor;
|
|
347
|
+
readonly params: Readonly<Record<string, string>>;
|
|
170
348
|
}
|
|
171
349
|
/** Immutable lookup table that matches incoming requests to controller handlers. */
|
|
172
350
|
export interface HandlerMapping {
|
|
173
|
-
readonly descriptors: HandlerDescriptor[];
|
|
351
|
+
readonly descriptors: readonly HandlerDescriptor[];
|
|
174
352
|
match(request: FrameworkRequest): HandlerMatch | undefined;
|
|
175
353
|
}
|
|
176
354
|
/** Source module/controller pair used to build a handler mapping. */
|
|
@@ -241,6 +419,15 @@ export interface MiddlewareRouteConfig {
|
|
|
241
419
|
middleware: Constructor<Middleware>;
|
|
242
420
|
routes: string[];
|
|
243
421
|
}
|
|
422
|
+
/**
|
|
423
|
+
* Immutable route-binding view retained by handler mapping snapshots.
|
|
424
|
+
*
|
|
425
|
+
* @internal
|
|
426
|
+
*/
|
|
427
|
+
export interface MiddlewareRouteSnapshot {
|
|
428
|
+
readonly middleware: Constructor<Middleware>;
|
|
429
|
+
readonly routes: readonly string[];
|
|
430
|
+
}
|
|
244
431
|
/** Guard execution context for one matched handler invocation. */
|
|
245
432
|
export interface GuardContext {
|
|
246
433
|
handler: HandlerDescriptor;
|
|
@@ -297,6 +484,12 @@ export interface Converter {
|
|
|
297
484
|
}
|
|
298
485
|
/** Middleware reference accepted by module/runtime configuration. */
|
|
299
486
|
export type MiddlewareLike = Middleware | Token<Middleware> | MiddlewareRouteConfig;
|
|
487
|
+
/**
|
|
488
|
+
* Middleware reference retained by handler mapping snapshots.
|
|
489
|
+
*
|
|
490
|
+
* @internal
|
|
491
|
+
*/
|
|
492
|
+
export type MiddlewareSnapshotLike = Middleware | Token<Middleware> | MiddlewareRouteSnapshot;
|
|
300
493
|
/** Guard reference accepted by route metadata and runtime configuration. */
|
|
301
494
|
export type GuardLike = Guard | Token<Guard>;
|
|
302
495
|
/** Interceptor reference accepted by route metadata and runtime configuration. */
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|