@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.
Files changed (125) hide show
  1. package/README.ko.md +417 -16
  2. package/README.md +424 -16
  3. package/dist/access-log-observer.d.ts +77 -0
  4. package/dist/access-log-observer.d.ts.map +1 -0
  5. package/dist/access-log-observer.js +171 -0
  6. package/dist/adapter.d.ts +9 -0
  7. package/dist/adapter.d.ts.map +1 -1
  8. package/dist/adapter.js +15 -1
  9. package/dist/adapters/binding.d.ts.map +1 -1
  10. package/dist/adapters/binding.js +18 -16
  11. package/dist/adapters/dto-binding-plan.d.ts +2 -2
  12. package/dist/adapters/dto-binding-plan.d.ts.map +1 -1
  13. package/dist/adapters/dto-binding-plan.js +13 -4
  14. package/dist/adapters/dto-validation-adapter.d.ts +2 -1
  15. package/dist/adapters/dto-validation-adapter.d.ts.map +1 -1
  16. package/dist/adapters/dto-validation-adapter.js +2 -2
  17. package/dist/byte-range-response.d.ts +71 -0
  18. package/dist/byte-range-response.d.ts.map +1 -0
  19. package/dist/byte-range-response.js +347 -0
  20. package/dist/client-identity.d.ts +8 -4
  21. package/dist/client-identity.d.ts.map +1 -1
  22. package/dist/client-identity.js +12 -93
  23. package/dist/compiled-route-identity.d.ts +17 -0
  24. package/dist/compiled-route-identity.d.ts.map +1 -0
  25. package/dist/compiled-route-identity.js +29 -0
  26. package/dist/connection.d.ts +67 -0
  27. package/dist/connection.d.ts.map +1 -0
  28. package/dist/connection.js +480 -0
  29. package/dist/context/request-context-node-store.d.ts +6 -0
  30. package/dist/context/request-context-node-store.d.ts.map +1 -1
  31. package/dist/context/request-context-node-store.js +14 -0
  32. package/dist/context/request-context.d.ts +5 -5
  33. package/dist/context/request-context.d.ts.map +1 -1
  34. package/dist/context/request-context.js +8 -83
  35. package/dist/context/request-id.d.ts +10 -0
  36. package/dist/context/request-id.d.ts.map +1 -0
  37. package/dist/context/request-id.js +27 -0
  38. package/dist/context/sse.d.ts +13 -0
  39. package/dist/context/sse.d.ts.map +1 -1
  40. package/dist/context/sse.js +36 -6
  41. package/dist/cookie-helpers.d.ts +47 -0
  42. package/dist/cookie-helpers.d.ts.map +1 -0
  43. package/dist/cookie-helpers.js +166 -0
  44. package/dist/decorators.d.ts +52 -19
  45. package/dist/decorators.d.ts.map +1 -1
  46. package/dist/decorators.js +57 -10
  47. package/dist/dispatch/conditional-request-policy.d.ts +67 -0
  48. package/dist/dispatch/conditional-request-policy.d.ts.map +1 -0
  49. package/dist/dispatch/conditional-request-policy.js +297 -0
  50. package/dist/dispatch/dispatch-content-negotiation.d.ts +8 -0
  51. package/dist/dispatch/dispatch-content-negotiation.d.ts.map +1 -1
  52. package/dist/dispatch/dispatch-content-negotiation.js +89 -42
  53. package/dist/dispatch/dispatch-error-negotiation.d.ts +26 -0
  54. package/dist/dispatch/dispatch-error-negotiation.d.ts.map +1 -0
  55. package/dist/dispatch/dispatch-error-negotiation.js +110 -0
  56. package/dist/dispatch/dispatch-error-policy.d.ts +1 -10
  57. package/dist/dispatch/dispatch-error-policy.d.ts.map +1 -1
  58. package/dist/dispatch/dispatch-error-policy.js +1 -33
  59. package/dist/dispatch/dispatch-error-representation.d.ts +18 -0
  60. package/dist/dispatch/dispatch-error-representation.d.ts.map +1 -0
  61. package/dist/dispatch/dispatch-error-representation.js +125 -0
  62. package/dist/dispatch/dispatch-response-metadata.d.ts +10 -0
  63. package/dist/dispatch/dispatch-response-metadata.d.ts.map +1 -0
  64. package/dist/dispatch/dispatch-response-metadata.js +12 -0
  65. package/dist/dispatch/dispatch-response-policy.d.ts +30 -3
  66. package/dist/dispatch/dispatch-response-policy.d.ts.map +1 -1
  67. package/dist/dispatch/dispatch-response-policy.js +104 -15
  68. package/dist/dispatch/dispatcher.d.ts +5 -1
  69. package/dist/dispatch/dispatcher.d.ts.map +1 -1
  70. package/dist/dispatch/dispatcher.js +140 -100
  71. package/dist/dispatch/fast-path/debug-visibility.d.ts.map +1 -1
  72. package/dist/dispatch/fast-path/debug-visibility.js +6 -3
  73. package/dist/dispatch/fast-path/dispatcher-state.d.ts +10 -0
  74. package/dist/dispatch/fast-path/dispatcher-state.d.ts.map +1 -0
  75. package/dist/dispatch/fast-path/dispatcher-state.js +52 -0
  76. package/dist/dispatch/fast-path/eligibility-checker.d.ts.map +1 -1
  77. package/dist/dispatch/fast-path/eligibility-checker.js +27 -15
  78. package/dist/dispatch/fast-path/eligibility.d.ts +16 -10
  79. package/dist/dispatch/fast-path/eligibility.d.ts.map +1 -1
  80. package/dist/dispatch/fast-path/eligibility.js +10 -4
  81. package/dist/dispatch/fast-path/fast-path-executor.d.ts +1 -1
  82. package/dist/dispatch/fast-path/fast-path-executor.d.ts.map +1 -1
  83. package/dist/dispatch/fast-path/fast-path-executor.js +8 -5
  84. package/dist/dispatch/request-abort.d.ts +22 -0
  85. package/dist/dispatch/request-abort.d.ts.map +1 -0
  86. package/dist/dispatch/request-abort.js +30 -0
  87. package/dist/dispatch/response-integration.d.ts +55 -0
  88. package/dist/dispatch/response-integration.d.ts.map +1 -0
  89. package/dist/dispatch/response-integration.js +57 -0
  90. package/dist/errors.d.ts +10 -0
  91. package/dist/errors.d.ts.map +1 -1
  92. package/dist/errors.js +19 -0
  93. package/dist/guards.d.ts +1 -1
  94. package/dist/guards.d.ts.map +1 -1
  95. package/dist/header-helpers.d.ts +59 -0
  96. package/dist/header-helpers.d.ts.map +1 -0
  97. package/dist/header-helpers.js +185 -0
  98. package/dist/index.d.ts +1 -16
  99. package/dist/index.d.ts.map +1 -1
  100. package/dist/index.js +4 -15
  101. package/dist/index.portable.d.ts +25 -0
  102. package/dist/index.portable.d.ts.map +1 -0
  103. package/dist/index.portable.js +21 -0
  104. package/dist/internal.d.ts +3 -1
  105. package/dist/internal.d.ts.map +1 -1
  106. package/dist/internal.js +2 -0
  107. package/dist/mapping.d.ts.map +1 -1
  108. package/dist/mapping.js +100 -15
  109. package/dist/middleware/correlation.d.ts +9 -1
  110. package/dist/middleware/correlation.d.ts.map +1 -1
  111. package/dist/middleware/correlation.js +25 -14
  112. package/dist/middleware/cors.d.ts.map +1 -1
  113. package/dist/middleware/cors.js +5 -8
  114. package/dist/middleware/middleware.d.ts +3 -3
  115. package/dist/middleware/middleware.d.ts.map +1 -1
  116. package/dist/middleware/rate-limit.d.ts +13 -2
  117. package/dist/middleware/rate-limit.d.ts.map +1 -1
  118. package/dist/middleware/rate-limit.js +1 -0
  119. package/dist/static-assets.d.ts +77 -0
  120. package/dist/static-assets.d.ts.map +1 -0
  121. package/dist/static-assets.js +270 -0
  122. package/dist/types.d.ts +209 -16
  123. package/dist/types.d.ts.map +1 -1
  124. package/dist/types.js +69 -1
  125. 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 methods understood by Fluo route metadata and dispatcher matching. */
5
- export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'HEAD' | 'ALL';
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: MiddlewareLike[];
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: RouteDefinition;
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. */
@@ -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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"}