@dcl/http-server 2.0.3 → 2.2.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.md +114 -0
- package/dist/body-size-limiter.d.ts +19 -0
- package/dist/body-size-limiter.js +87 -0
- package/dist/body-size-limiter.js.map +1 -0
- package/dist/cors.d.ts +7 -0
- package/dist/cors.js +31 -7
- package/dist/cors.js.map +1 -1
- package/dist/helpers.d.ts +24 -1
- package/dist/helpers.js +48 -0
- package/dist/helpers.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/logic.d.ts +1 -1
- package/dist/logic.js +106 -15
- package/dist/logic.js.map +1 -1
- package/dist/metrics.js +9 -0
- package/dist/metrics.js.map +1 -1
- package/dist/router.js +7 -1
- package/dist/router.js.map +1 -1
- package/dist/server.js +55 -1
- package/dist/server.js.map +1 -1
- package/dist/types.d.ts +34 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,3 +1,117 @@
|
|
|
1
1
|
# @dcl/http-server
|
|
2
2
|
|
|
3
3
|
forked from https://github.com/well-known-components/http-server
|
|
4
|
+
|
|
5
|
+
## Server options
|
|
6
|
+
|
|
7
|
+
`createServerComponent(components, options)` accepts a `Partial<IHttpServerOptions>`
|
|
8
|
+
to tune the underlying Node server:
|
|
9
|
+
|
|
10
|
+
```ts
|
|
11
|
+
import { createServerComponent } from '@dcl/http-server'
|
|
12
|
+
|
|
13
|
+
const server = await createServerComponent(
|
|
14
|
+
{ config, logs },
|
|
15
|
+
{
|
|
16
|
+
// Reject request bodies larger than 1 MiB.
|
|
17
|
+
maxBodySize: 1024 * 1024,
|
|
18
|
+
// Abort a request whose headers + body don't arrive within 30s.
|
|
19
|
+
requestTimeout: 30_000,
|
|
20
|
+
maxHeadersCount: 100,
|
|
21
|
+
maxRequestsPerSocket: 1000,
|
|
22
|
+
cors: { origin: '*' }
|
|
23
|
+
}
|
|
24
|
+
)
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
| Option | Maps to | Description |
|
|
28
|
+
| --- | --- | --- |
|
|
29
|
+
| `maxBodySize` | _(enforced by this component)_ | Maximum size, in bytes, of an incoming request body. A request that declares a larger `Content-Length` is rejected with `413 Payload Too Large` before the body is read; a body that omits or under-declares its length (e.g. chunked transfer-encoding) is capped with the same `413` while streaming. Unset means no limit. |
|
|
30
|
+
| `cors` | _(CORS middleware)_ | CORS configuration applied as middleware. |
|
|
31
|
+
| `keepAliveTimeout` | `server.keepAliveTimeout` | Idle keep-alive socket timeout in ms (default `70000`). |
|
|
32
|
+
| `headersTimeout` | `server.headersTimeout` | Time to receive the complete headers in ms (default `75000`). |
|
|
33
|
+
| `requestTimeout` | `server.requestTimeout` | Time to receive the entire request in ms. `0` disables it. |
|
|
34
|
+
| `maxHeadersCount` | `server.maxHeadersCount` | Maximum number of request headers. `0` means unlimited. |
|
|
35
|
+
| `maxRequestsPerSocket` | `server.maxRequestsPerSocket` | Max requests served per keep-alive socket. Unset/`0` means unlimited. |
|
|
36
|
+
|
|
37
|
+
A `maxBodySize` rejection produces a `413` that a handler can also surface itself: when
|
|
38
|
+
a handler reads an over-limit body inside the middleware chain (e.g. `await ctx.request.json()`),
|
|
39
|
+
the read rejects and the error middleware maps it to a `413` response.
|
|
40
|
+
|
|
41
|
+
`maxBodySize` must be a positive integer when provided — `createServerComponent` throws on
|
|
42
|
+
`0`, negative or fractional values (omit the option for "no limit"). When `cors` is also
|
|
43
|
+
configured, the up-front `Content-Length` rejection still carries the actual-response CORS
|
|
44
|
+
headers, so a cross-origin client can read the `413`.
|
|
45
|
+
|
|
46
|
+
### Reading the request body under a `maxBodySize`
|
|
47
|
+
|
|
48
|
+
The streaming limit is enforced as `ctx.request.body` is consumed, so it only turns into a `413`
|
|
49
|
+
if your handler actually reads the body **and propagates stream errors**. Reading it with
|
|
50
|
+
`await ctx.request.json()` / `.text()` / `.arrayBuffer()` or `for await (… of ctx.request.body)`
|
|
51
|
+
does this for you — the read rejects with the `413` and the error middleware maps it to a response.
|
|
52
|
+
|
|
53
|
+
If you instead **pipe** `ctx.request.body` into another stream (e.g. a multipart parser like
|
|
54
|
+
`busboy`), remember that `Readable.prototype.pipe` does **not** forward *source* errors to the
|
|
55
|
+
destination. Attach an error handler to the adapted source, or a body-stream error — a client
|
|
56
|
+
abort *or* the `maxBodySize` limiter emitting its `413` — surfaces as an unhandled error (and can
|
|
57
|
+
crash the process):
|
|
58
|
+
|
|
59
|
+
```ts
|
|
60
|
+
import { Readable } from 'stream'
|
|
61
|
+
|
|
62
|
+
const body = Readable.fromWeb(ctx.request.body as any)
|
|
63
|
+
// Forward source errors (client abort, or the maxBodySize 413) so the parser rejects cleanly.
|
|
64
|
+
body.on('error', (err) => parser.destroy(err))
|
|
65
|
+
body.pipe(parser)
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Requests that declare a `Content-Length` over the limit — the usual case for `multipart/form-data`
|
|
69
|
+
uploads from browsers and `fetch` — are rejected up-front regardless of how the body is consumed.
|
|
70
|
+
|
|
71
|
+
### Per-route body-size limits
|
|
72
|
+
|
|
73
|
+
`maxBodySize` on `createServerComponent` is server-wide. For a tighter limit on specific routes, use
|
|
74
|
+
`createBodySizeLimitMiddleware(bytes)` and mount it on those routes:
|
|
75
|
+
|
|
76
|
+
```ts
|
|
77
|
+
import { createBodySizeLimitMiddleware } from '@dcl/http-server'
|
|
78
|
+
|
|
79
|
+
// allow at most 4 KB on this endpoint
|
|
80
|
+
router.post('/v1/notes', createBodySizeLimitMiddleware(4096), notesHandler)
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
It enforces the same dual check as the server-wide option: a request declaring a larger
|
|
84
|
+
`Content-Length` is rejected up front with `413 Payload Too Large`, and a body that omits or
|
|
85
|
+
under-declares its length (e.g. chunked) is capped while streaming — the body read by downstream
|
|
86
|
+
handlers errors with a `413` once the limit is crossed. Either `413` sets `Connection: close`, so an
|
|
87
|
+
oversized or stalled client can't tie up the socket. `bytes` must be a positive integer or the
|
|
88
|
+
factory throws. It composes with the server-wide `maxBodySize` (the global cap still applies first).
|
|
89
|
+
|
|
90
|
+
## Returning a native `Response` from a handler
|
|
91
|
+
|
|
92
|
+
Handlers return the structural `IResponse` (Node `Readable`/`Buffer`/string/JSON
|
|
93
|
+
bodies). A native `Response` (as returned by `fetch`, with a web `ReadableStream`
|
|
94
|
+
body) is **not** an `IResponse` — returning one via `as any` lets
|
|
95
|
+
response-transforming middleware (e.g. CORS) silently drop its `status` and `body`.
|
|
96
|
+
|
|
97
|
+
When you have a native `Response` (typically proxying an upstream `fetch`), adapt it
|
|
98
|
+
at the boundary with `fromNativeResponse`:
|
|
99
|
+
|
|
100
|
+
```ts
|
|
101
|
+
import { fromNativeResponse } from '@dcl/http-server'
|
|
102
|
+
|
|
103
|
+
router.get('/proxy/:id', async (ctx) => {
|
|
104
|
+
const upstream = await fetch(`${CONTENT_SERVER}/${ctx.params.id}`)
|
|
105
|
+
return fromNativeResponse(upstream)
|
|
106
|
+
})
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
The body is streamed (not buffered), so proxying large responses stays
|
|
110
|
+
memory-safe. The passed `Response` is consumed by the returned stream — don't also
|
|
111
|
+
read it with `.text()`/`.json()`.
|
|
112
|
+
|
|
113
|
+
Plain handlers are unaffected — keep returning the structural shape directly:
|
|
114
|
+
|
|
115
|
+
```ts
|
|
116
|
+
return { status: 200, body: { hello: 'world' } }
|
|
117
|
+
```
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { IHttpServerComponent } from '@dcl/core-commons';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a per-route middleware that rejects request bodies larger than `maxBodySize` bytes with
|
|
4
|
+
* `413 Payload Too Large`.
|
|
5
|
+
*
|
|
6
|
+
* - A request that declares a larger `Content-Length` is rejected up front, before its body is read.
|
|
7
|
+
* - A body that omits or under-declares its length (e.g. chunked transfer-encoding) is capped while
|
|
8
|
+
* streaming: once a downstream handler reads past the limit the body errors, and the middleware
|
|
9
|
+
* turns that into a `413` and closes the connection so the client can't keep streaming.
|
|
10
|
+
*
|
|
11
|
+
* Either way the `413` carries `Connection: close` so an oversized or stalled request can't tie up
|
|
12
|
+
* the socket.
|
|
13
|
+
*
|
|
14
|
+
* Unlike the server-wide `maxBodySize` option (enforced at the transport layer for the whole
|
|
15
|
+
* server), this middleware can be applied to individual routes for tighter, per-endpoint limits.
|
|
16
|
+
*
|
|
17
|
+
* @public
|
|
18
|
+
*/
|
|
19
|
+
export declare function createBodySizeLimitMiddleware<Context extends object = {}>(maxBodySize: number): IHttpServerComponent.IRequestHandler<Context>;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createBodySizeLimitMiddleware = createBodySizeLimitMiddleware;
|
|
4
|
+
const logic_1 = require("./logic");
|
|
5
|
+
/**
|
|
6
|
+
* Builds a web `TransformStream` that errors with a `413` once more than `maxBodySize` bytes have
|
|
7
|
+
* passed through it, invoking `onExceeded` so the caller can react (e.g. tear the connection down).
|
|
8
|
+
* Used to cap a request body that omits or under-declares its `Content-Length`.
|
|
9
|
+
*/
|
|
10
|
+
function createBodyStreamLimiter(maxBodySize, onExceeded) {
|
|
11
|
+
let received = 0;
|
|
12
|
+
return new TransformStream({
|
|
13
|
+
transform(chunk, controller) {
|
|
14
|
+
received += chunk.byteLength;
|
|
15
|
+
if (received > maxBodySize) {
|
|
16
|
+
onExceeded();
|
|
17
|
+
controller.error((0, logic_1.payloadTooLargeError)());
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
controller.enqueue(chunk);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
// The `413` returned for an oversized body. `Connection: close` frees the socket: the rest of the
|
|
26
|
+
// body is never going to be read, so without it a client can keep streaming (or stall) and tie up
|
|
27
|
+
// the connection — Node won't reuse it but also won't tear it down on its own once a response is sent.
|
|
28
|
+
function payloadTooLargeResponse() {
|
|
29
|
+
return { status: 413, headers: { connection: 'close' }, body: 'Payload Too Large' };
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Creates a per-route middleware that rejects request bodies larger than `maxBodySize` bytes with
|
|
33
|
+
* `413 Payload Too Large`.
|
|
34
|
+
*
|
|
35
|
+
* - A request that declares a larger `Content-Length` is rejected up front, before its body is read.
|
|
36
|
+
* - A body that omits or under-declares its length (e.g. chunked transfer-encoding) is capped while
|
|
37
|
+
* streaming: once a downstream handler reads past the limit the body errors, and the middleware
|
|
38
|
+
* turns that into a `413` and closes the connection so the client can't keep streaming.
|
|
39
|
+
*
|
|
40
|
+
* Either way the `413` carries `Connection: close` so an oversized or stalled request can't tie up
|
|
41
|
+
* the socket.
|
|
42
|
+
*
|
|
43
|
+
* Unlike the server-wide `maxBodySize` option (enforced at the transport layer for the whole
|
|
44
|
+
* server), this middleware can be applied to individual routes for tighter, per-endpoint limits.
|
|
45
|
+
*
|
|
46
|
+
* @public
|
|
47
|
+
*/
|
|
48
|
+
function createBodySizeLimitMiddleware(maxBodySize) {
|
|
49
|
+
(0, logic_1.assertValidMaxBodySize)(maxBodySize);
|
|
50
|
+
return async (context, next) => {
|
|
51
|
+
if ((0, logic_1.exceedsContentLength)(context.request.headers.get('content-length'), maxBodySize)) {
|
|
52
|
+
return payloadTooLargeResponse();
|
|
53
|
+
}
|
|
54
|
+
const body = context.request.body;
|
|
55
|
+
if (!body) {
|
|
56
|
+
return next();
|
|
57
|
+
}
|
|
58
|
+
// Route the body through the limiter and replace the request so any downstream read flows
|
|
59
|
+
// through it. `duplex: 'half'` is required by the fetch spec when constructing a `Request`
|
|
60
|
+
// with a streaming body.
|
|
61
|
+
let exceeded = false;
|
|
62
|
+
context.request = new Request(context.request.url, {
|
|
63
|
+
method: context.request.method,
|
|
64
|
+
headers: context.request.headers,
|
|
65
|
+
body: body.pipeThrough(createBodyStreamLimiter(maxBodySize, () => {
|
|
66
|
+
exceeded = true;
|
|
67
|
+
})),
|
|
68
|
+
duplex: 'half'
|
|
69
|
+
});
|
|
70
|
+
// The limiter errors the body stream when the limit is crossed. A handler that reads the body
|
|
71
|
+
// surfaces that as a thrown `413` (which would otherwise propagate to the error middleware
|
|
72
|
+
// *without* `Connection: close`, leaving the socket open while the client keeps streaming). By
|
|
73
|
+
// catching it here we guarantee the `413`-with-close response whenever the limit was exceeded,
|
|
74
|
+
// regardless of whether the handler rethrew or swallowed the read error.
|
|
75
|
+
try {
|
|
76
|
+
const response = await next();
|
|
77
|
+
return exceeded ? payloadTooLargeResponse() : response;
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
if (exceeded) {
|
|
81
|
+
return payloadTooLargeResponse();
|
|
82
|
+
}
|
|
83
|
+
throw error;
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=body-size-limiter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"body-size-limiter.js","sourceRoot":"","sources":["../src/body-size-limiter.ts"],"names":[],"mappings":";;AAkDA,sEA6CC;AA9FD,mCAA4F;AAE5F;;;;GAIG;AACH,SAAS,uBAAuB,CAC9B,WAAmB,EACnB,UAAsB;IAEtB,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,OAAO,IAAI,eAAe,CAAC;QACzB,SAAS,CAAC,KAAK,EAAE,UAAU;YACzB,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAA;YAC5B,IAAI,QAAQ,GAAG,WAAW,EAAE,CAAC;gBAC3B,UAAU,EAAE,CAAA;gBACZ,UAAU,CAAC,KAAK,CAAC,IAAA,4BAAoB,GAAE,CAAC,CAAA;YAC1C,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAED,kGAAkG;AAClG,kGAAkG;AAClG,uGAAuG;AACvG,SAAS,uBAAuB;IAC9B,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAA;AACrF,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,6BAA6B,CAC3C,WAAmB;IAEnB,IAAA,8BAAsB,EAAC,WAAW,CAAC,CAAA;IAEnC,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC7B,IAAI,IAAA,4BAAoB,EAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC;YACrF,OAAO,uBAAuB,EAAE,CAAA;QAClC,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAA;QACjC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,IAAI,EAAE,CAAA;QACf,CAAC;QAED,0FAA0F;QAC1F,2FAA2F;QAC3F,yBAAyB;QACzB,IAAI,QAAQ,GAAG,KAAK,CAAA;QACpB,OAAO,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE;YACjD,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM;YAC9B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO;YAChC,IAAI,EAAE,IAAI,CAAC,WAAW,CACpB,uBAAuB,CAAC,WAAW,EAAE,GAAG,EAAE;gBACxC,QAAQ,GAAG,IAAI,CAAA;YACjB,CAAC,CAAC,CACH;YACD,MAAM,EAAE,MAAM;SACqB,CAAC,CAAA;QAEtC,8FAA8F;QAC9F,2FAA2F;QAC3F,+FAA+F;QAC/F,+FAA+F;QAC/F,yEAAyE;QACzE,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,EAAE,CAAA;YAC7B,OAAO,QAAQ,CAAC,CAAC,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAA;QACxD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,uBAAuB,EAAE,CAAA;YAClC,CAAC;YACD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC,CAAA;AACH,CAAC"}
|
package/dist/cors.d.ts
CHANGED
|
@@ -30,5 +30,12 @@ export interface CorsOptions {
|
|
|
30
30
|
*/
|
|
31
31
|
optionsSuccessStatus?: number;
|
|
32
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Builds the CORS headers that apply to an actual (non-preflight) response for `request`. Returns
|
|
35
|
+
* an empty `Headers` when the request carries no `Origin`, since there is nothing to add. Shared by
|
|
36
|
+
* the CORS middleware and by paths that respond before the middleware runs (e.g. an early
|
|
37
|
+
* body-size rejection), so cross-origin clients can still read those responses.
|
|
38
|
+
*/
|
|
39
|
+
export declare function getActualResponseCorsHeaders(options: CorsOptions, request: Request): Headers;
|
|
33
40
|
export declare function createCorsMiddleware<Context>(options: CorsOptions): IHttpServerComponent.IRequestHandler<Context>;
|
|
34
41
|
export {};
|
package/dist/cors.js
CHANGED
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.corsHeaders = void 0;
|
|
5
5
|
exports.handleOptions = handleOptions;
|
|
6
|
+
exports.getActualResponseCorsHeaders = getActualResponseCorsHeaders;
|
|
6
7
|
exports.createCorsMiddleware = createCorsMiddleware;
|
|
8
|
+
const helpers_1 = require("./helpers");
|
|
7
9
|
exports.corsHeaders = {
|
|
8
10
|
'Access-Control-Allow-Origin': '*',
|
|
9
11
|
'Access-Control-Allow-Methods': 'GET, HEAD, OPTIONS',
|
|
@@ -100,6 +102,22 @@ function configureMaxAge(options, req, headers) {
|
|
|
100
102
|
headers.set('Access-Control-Max-Age', options.maxAge.toString());
|
|
101
103
|
}
|
|
102
104
|
}
|
|
105
|
+
/**
|
|
106
|
+
* Builds the CORS headers that apply to an actual (non-preflight) response for `request`. Returns
|
|
107
|
+
* an empty `Headers` when the request carries no `Origin`, since there is nothing to add. Shared by
|
|
108
|
+
* the CORS middleware and by paths that respond before the middleware runs (e.g. an early
|
|
109
|
+
* body-size rejection), so cross-origin clients can still read those responses.
|
|
110
|
+
*/
|
|
111
|
+
function getActualResponseCorsHeaders(options, request) {
|
|
112
|
+
const headers = new Headers();
|
|
113
|
+
if (!request.headers.has('origin')) {
|
|
114
|
+
return headers;
|
|
115
|
+
}
|
|
116
|
+
configureOrigin(options, request, headers);
|
|
117
|
+
configureCredentials(options, request, headers);
|
|
118
|
+
configureExposedHeaders(options, request, headers);
|
|
119
|
+
return headers;
|
|
120
|
+
}
|
|
103
121
|
function createCorsMiddleware(options) {
|
|
104
122
|
return async function handleCors(event, next) {
|
|
105
123
|
const request = event.request;
|
|
@@ -123,14 +141,20 @@ function createCorsMiddleware(options) {
|
|
|
123
141
|
}
|
|
124
142
|
else {
|
|
125
143
|
const r = await next();
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
configureCredentials(options, request, headers);
|
|
131
|
-
configureExposedHeaders(options, request, headers);
|
|
144
|
+
// No Origin means there are no CORS headers to add, so return the response
|
|
145
|
+
// untouched instead of copying its headers and re-wrapping it on every request.
|
|
146
|
+
if (!event.request.headers.has('origin')) {
|
|
147
|
+
return r;
|
|
132
148
|
}
|
|
133
|
-
|
|
149
|
+
// Normalize a native Response to the structural shape before re-wrapping it: a
|
|
150
|
+
// Response's status/body are prototype getters, so `{ ...response }` would drop
|
|
151
|
+
// them. Handlers should convert via `fromNativeResponse`; this also guards the
|
|
152
|
+
// case where one slips through to the middleware as a native Response.
|
|
153
|
+
const base = r instanceof Response ? (0, helpers_1.fromNativeResponse)(r) : r;
|
|
154
|
+
// actual response
|
|
155
|
+
const headers = new Headers(base.headers);
|
|
156
|
+
getActualResponseCorsHeaders(options, request).forEach((value, key) => headers.set(key, value));
|
|
157
|
+
return { ...base, headers };
|
|
134
158
|
}
|
|
135
159
|
};
|
|
136
160
|
}
|
package/dist/cors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cors.js","sourceRoot":"","sources":["../src/cors.ts"],"names":[],"mappings":";AAAA,6FAA6F;;;
|
|
1
|
+
{"version":3,"file":"cors.js","sourceRoot":"","sources":["../src/cors.ts"],"names":[],"mappings":"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"}
|
package/dist/helpers.d.ts
CHANGED
|
@@ -1 +1,24 @@
|
|
|
1
|
-
|
|
1
|
+
import type { IHttpServerComponent } from '@dcl/core-commons';
|
|
2
|
+
/**
|
|
3
|
+
* Adapts a native `Response` (e.g. one obtained from `fetch`) into the server's
|
|
4
|
+
* `IResponse` shape so it can be returned from a handler and flow safely through
|
|
5
|
+
* the middleware pipeline.
|
|
6
|
+
*
|
|
7
|
+
* The pipeline carries the structural `IResponse` (Node `Readable`/`Buffer` bodies).
|
|
8
|
+
* A native `Response` has a web `ReadableStream` body and is *not* assignable to
|
|
9
|
+
* `IResponse`; forcing one in via `as any` lets response-transforming middleware
|
|
10
|
+
* corrupt it — e.g. CORS does `{ ...response }`, and a `Response`'s `status`/`body`
|
|
11
|
+
* are prototype getters, so the spread drops them (served as a bodiless `200`).
|
|
12
|
+
* Convert at the boundary instead:
|
|
13
|
+
*
|
|
14
|
+
* ```ts
|
|
15
|
+
* router.get('/proxy', async () => fromNativeResponse(await fetch(upstreamUrl)))
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* The body is streamed (via `Readable.fromWeb`), not buffered, so proxying large
|
|
19
|
+
* responses stays memory-safe. The passed `Response`'s body is taken over by the
|
|
20
|
+
* returned stream — don't also read it with `.text()`/`.json()`.
|
|
21
|
+
*
|
|
22
|
+
* @public
|
|
23
|
+
*/
|
|
24
|
+
export declare function fromNativeResponse(response: Response): IHttpServerComponent.IResponse;
|
package/dist/helpers.js
CHANGED
|
@@ -1,3 +1,51 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fromNativeResponse = fromNativeResponse;
|
|
4
|
+
// Public helpers exposed in the API
|
|
5
|
+
const stream_1 = require("stream");
|
|
6
|
+
/**
|
|
7
|
+
* Adapts a native `Response` (e.g. one obtained from `fetch`) into the server's
|
|
8
|
+
* `IResponse` shape so it can be returned from a handler and flow safely through
|
|
9
|
+
* the middleware pipeline.
|
|
10
|
+
*
|
|
11
|
+
* The pipeline carries the structural `IResponse` (Node `Readable`/`Buffer` bodies).
|
|
12
|
+
* A native `Response` has a web `ReadableStream` body and is *not* assignable to
|
|
13
|
+
* `IResponse`; forcing one in via `as any` lets response-transforming middleware
|
|
14
|
+
* corrupt it — e.g. CORS does `{ ...response }`, and a `Response`'s `status`/`body`
|
|
15
|
+
* are prototype getters, so the spread drops them (served as a bodiless `200`).
|
|
16
|
+
* Convert at the boundary instead:
|
|
17
|
+
*
|
|
18
|
+
* ```ts
|
|
19
|
+
* router.get('/proxy', async () => fromNativeResponse(await fetch(upstreamUrl)))
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* The body is streamed (via `Readable.fromWeb`), not buffered, so proxying large
|
|
23
|
+
* responses stays memory-safe. The passed `Response`'s body is taken over by the
|
|
24
|
+
* returned stream — don't also read it with `.text()`/`.json()`.
|
|
25
|
+
*
|
|
26
|
+
* @public
|
|
27
|
+
*/
|
|
28
|
+
function fromNativeResponse(response) {
|
|
29
|
+
// Copy the headers and drop the framing/encoding descriptors that no longer
|
|
30
|
+
// describe the outgoing body: `fetch` has already decoded the body, and it will be
|
|
31
|
+
// re-streamed (chunked) downstream, so forwarding the upstream `Content-Encoding`
|
|
32
|
+
// (body is now plaintext → double-decode), `Content-Length` (length changed → the
|
|
33
|
+
// piped stream mismatches it → truncation/hang) or hop-by-hop `Transfer-Encoding`
|
|
34
|
+
// would corrupt the response. This is the classic decoded-proxy bug.
|
|
35
|
+
const headers = new Headers(response.headers);
|
|
36
|
+
headers.delete('content-encoding');
|
|
37
|
+
headers.delete('content-length');
|
|
38
|
+
headers.delete('transfer-encoding');
|
|
39
|
+
return {
|
|
40
|
+
status: response.status,
|
|
41
|
+
statusText: response.statusText,
|
|
42
|
+
headers,
|
|
43
|
+
// Only adapt a body that is present, unread and unlocked: `Readable.fromWeb`
|
|
44
|
+
// throws on a locked stream, so a response whose body a caller already took a
|
|
45
|
+
// reader for is forwarded without a body rather than crashing normalization.
|
|
46
|
+
body: response.body && !response.bodyUsed && !response.body.locked
|
|
47
|
+
? stream_1.Readable.fromWeb(response.body)
|
|
48
|
+
: undefined
|
|
49
|
+
};
|
|
50
|
+
}
|
|
3
51
|
//# sourceMappingURL=helpers.js.map
|
package/dist/helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":";;AA0BA,gDAwBC;AAlDD,oCAAoC;AACpC,mCAAiC;AAGjC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAgB,kBAAkB,CAAC,QAAkB;IACnD,4EAA4E;IAC5E,mFAAmF;IACnF,kFAAkF;IAClF,kFAAkF;IAClF,kFAAkF;IAClF,qEAAqE;IACrE,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC7C,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAA;IAClC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAA;IAChC,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAA;IAEnC,OAAO;QACL,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,OAAO;QACP,6EAA6E;QAC7E,8EAA8E;QAC9E,6EAA6E;QAC7E,IAAI,EACF,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM;YAC1D,CAAC,CAAE,iBAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAW,CAAc;YACtD,CAAC,CAAC,SAAS;KAChB,CAAA;AACH,CAAC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -15,6 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./server"), exports);
|
|
18
|
+
__exportStar(require("./body-size-limiter"), exports);
|
|
18
19
|
__exportStar(require("./injectors"), exports);
|
|
19
20
|
__exportStar(require("./test-component"), exports);
|
|
20
21
|
__exportStar(require("./types"), exports);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB;AACxB,8CAA2B;AAC3B,mDAAgC;AAChC,0CAAuB;AACvB,kDAA+B;AAC/B,4CAAyB;AACzB,2CAAwB;AACxB,4CAAyB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB;AACxB,sDAAmC;AACnC,8CAA2B;AAC3B,mDAAgC;AAChC,0CAAuB;AACvB,kDAA+B;AAC/B,4CAAyB;AACzB,2CAAwB;AACxB,4CAAyB"}
|
package/dist/logic.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import type { IHttpServerComponent } from '@dcl/core-commons';
|
|
|
3
3
|
import { Middleware } from './middleware';
|
|
4
4
|
export declare const getRequestFromNodeMessage: <T extends http.IncomingMessage & {
|
|
5
5
|
originalUrl?: string;
|
|
6
|
-
}>(request: T, host: string) => IHttpServerComponent.IRequest;
|
|
6
|
+
}>(request: T, host: string, maxBodySize?: number, onBodyExceeded?: () => void) => IHttpServerComponent.IRequest;
|
|
7
7
|
export declare const coerceErrorsMiddleware: Middleware<any>;
|
|
8
8
|
/**
|
|
9
9
|
* Default middleware
|
package/dist/logic.js
CHANGED
|
@@ -38,6 +38,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.coerceErrorsMiddleware = exports.getRequestFromNodeMessage = exports.isBlob = void 0;
|
|
40
40
|
exports.getServer = getServer;
|
|
41
|
+
exports.payloadTooLargeError = payloadTooLargeError;
|
|
42
|
+
exports.assertValidMaxBodySize = assertValidMaxBodySize;
|
|
43
|
+
exports.exceedsContentLength = exceedsContentLength;
|
|
44
|
+
exports.createBodySizeLimiter = createBodySizeLimiter;
|
|
41
45
|
exports.success = success;
|
|
42
46
|
exports.getDefaultMiddlewares = getDefaultMiddlewares;
|
|
43
47
|
exports.defaultHandler = defaultHandler;
|
|
@@ -48,23 +52,98 @@ const http = __importStar(require("http"));
|
|
|
48
52
|
const https = __importStar(require("https"));
|
|
49
53
|
const destroy_1 = __importDefault(require("destroy"));
|
|
50
54
|
const on_finished_1 = __importDefault(require("on-finished"));
|
|
51
|
-
const http_errors_1 = require("http-errors");
|
|
55
|
+
const http_errors_1 = __importStar(require("http-errors"));
|
|
52
56
|
const ws_1 = require("./ws");
|
|
57
|
+
const helpers_1 = require("./helpers");
|
|
53
58
|
/**
|
|
54
59
|
* @internal
|
|
55
60
|
*/
|
|
56
61
|
function getServer(options, listener) {
|
|
57
62
|
let server;
|
|
58
|
-
if (
|
|
63
|
+
// Note: these branches must be mutually exclusive. A plain `if (https) ... if (http) ... else`
|
|
64
|
+
// would let the trailing `else` overwrite an https server whenever `http` is absent.
|
|
65
|
+
if ('https' in options && options.https) {
|
|
59
66
|
server = https.createServer(options.https, listener);
|
|
60
|
-
|
|
67
|
+
}
|
|
68
|
+
else if ('http' in options && options.http) {
|
|
61
69
|
server = http.createServer(options.http, listener);
|
|
62
|
-
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
63
72
|
server = http.createServer(listener);
|
|
73
|
+
}
|
|
64
74
|
server.keepAliveTimeout = options.keepAliveTimeout ?? 70000;
|
|
65
75
|
server.headersTimeout = options.headersTimeout ?? 75000;
|
|
76
|
+
if (options.requestTimeout !== undefined)
|
|
77
|
+
server.requestTimeout = options.requestTimeout;
|
|
78
|
+
if (options.maxHeadersCount !== undefined)
|
|
79
|
+
server.maxHeadersCount = options.maxHeadersCount;
|
|
80
|
+
if (options.maxRequestsPerSocket !== undefined)
|
|
81
|
+
server.maxRequestsPerSocket = options.maxRequestsPerSocket;
|
|
66
82
|
return server;
|
|
67
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* @internal
|
|
86
|
+
* Builds the error thrown when a request body exceeds the configured `maxBodySize`. It is an
|
|
87
|
+
* `HttpError`, so `coerceErrorsMiddleware` maps it to a `413 Payload Too Large` response when a
|
|
88
|
+
* handler reads the body within the middleware chain.
|
|
89
|
+
*/
|
|
90
|
+
function payloadTooLargeError() {
|
|
91
|
+
return (0, http_errors_1.default)(413, 'Payload Too Large');
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* @internal
|
|
95
|
+
* Validates a `maxBodySize` option, throwing if it is defined but not a positive integer number of
|
|
96
|
+
* bytes. A negative, fractional or zero limit would silently reject every request body.
|
|
97
|
+
*/
|
|
98
|
+
function assertValidMaxBodySize(maxBodySize) {
|
|
99
|
+
if (maxBodySize !== undefined && (!Number.isInteger(maxBodySize) || maxBodySize < 1)) {
|
|
100
|
+
throw new Error(`Invalid maxBodySize: expected a positive integer number of bytes, got ${maxBodySize}`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* @internal
|
|
105
|
+
* Parses an incoming `Content-Length` header and reports whether it declares a body larger than
|
|
106
|
+
* `maxBodySize`. The comparison is strict (`>`), so a declared length of exactly `maxBodySize` is
|
|
107
|
+
* allowed. A missing, empty or non-numeric header is treated as "not exceeding" — those bodies
|
|
108
|
+
* (including chunked transfer-encoding) are caught instead by {@link createBodySizeLimiter} while
|
|
109
|
+
* streaming.
|
|
110
|
+
*/
|
|
111
|
+
function exceedsContentLength(contentLength, maxBodySize) {
|
|
112
|
+
if (contentLength === null || contentLength === undefined || contentLength === '')
|
|
113
|
+
return false;
|
|
114
|
+
const declared = Number(contentLength);
|
|
115
|
+
return Number.isFinite(declared) && declared > maxBodySize;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* @internal
|
|
119
|
+
* Wraps a Node request stream so it errors with a `413` once more than `maxBodySize` bytes have
|
|
120
|
+
* flowed through, invoking `onExceeded` so the caller can react (e.g. close the connection). This
|
|
121
|
+
* guards against bodies that omit or under-declare `Content-Length` (e.g. chunked transfer-encoding),
|
|
122
|
+
* which the up-front header check cannot catch. A handler that reads the body within the middleware
|
|
123
|
+
* chain surfaces the error as a clean `413` (via `coerceErrorsMiddleware`).
|
|
124
|
+
*/
|
|
125
|
+
function createBodySizeLimiter(source, maxBodySize, onExceeded) {
|
|
126
|
+
let received = 0;
|
|
127
|
+
const limiter = new stream_1.Transform({
|
|
128
|
+
transform(chunk, _encoding, callback) {
|
|
129
|
+
received += chunk.length;
|
|
130
|
+
if (received > maxBodySize) {
|
|
131
|
+
onExceeded?.();
|
|
132
|
+
callback(payloadTooLargeError());
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
callback(null, chunk);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
// Forward a failure of the underlying request (e.g. a client abort) to the limiter so the
|
|
140
|
+
// handler's body read rejects. The reverse is intentionally not wired: destroying `source` on a
|
|
141
|
+
// limiter error would tear down the socket and prevent the `413` response from being written —
|
|
142
|
+
// `pipe` already unpipes `source` when the limiter errors, which stops it from feeding more data.
|
|
143
|
+
source.once('error', (err) => limiter.destroy(err));
|
|
144
|
+
source.pipe(limiter);
|
|
145
|
+
return limiter;
|
|
146
|
+
}
|
|
68
147
|
const NAME = Symbol.toStringTag;
|
|
69
148
|
/**
|
|
70
149
|
* Check if `object` is a W3C `Blob` object (which `File` inherits from)
|
|
@@ -123,7 +202,11 @@ function success(data, res) {
|
|
|
123
202
|
function getDefaultMiddlewares() {
|
|
124
203
|
return [exports.coerceErrorsMiddleware];
|
|
125
204
|
}
|
|
126
|
-
|
|
205
|
+
// Caches the `URL` parsed while building a request so `contextFromRequest` can reuse
|
|
206
|
+
// it instead of re-parsing `request.url` on every request. Weakly keyed, so an entry
|
|
207
|
+
// disappears together with its request.
|
|
208
|
+
const parsedUrlByRequest = new WeakMap();
|
|
209
|
+
const getRequestFromNodeMessage = (request, host, maxBodySize, onBodyExceeded) => {
|
|
127
210
|
const headers = new Headers();
|
|
128
211
|
for (let key in request.headers) {
|
|
129
212
|
if (request.headers.hasOwnProperty(key)) {
|
|
@@ -151,7 +234,10 @@ const getRequestFromNodeMessage = (request, host) => {
|
|
|
151
234
|
if (method != 'GET' && method != 'HEAD' && !bodyAlreadyConsumed) {
|
|
152
235
|
// The native `Request` body must be a web `ReadableStream`. Adapt the incoming Node message
|
|
153
236
|
// stream; `duplex: 'half'` is required by the fetch spec when streaming a request body.
|
|
154
|
-
|
|
237
|
+
// When a `maxBodySize` is configured the stream is first routed through a limiter that errors
|
|
238
|
+
// once the body exceeds it, catching bodies that omit or under-declare `Content-Length`.
|
|
239
|
+
const bodySource = maxBodySize === undefined ? request : createBodySizeLimiter(request, maxBodySize, onBodyExceeded);
|
|
240
|
+
requestInit.body = stream_1.Readable.toWeb(bodySource);
|
|
155
241
|
requestInit.duplex = 'half';
|
|
156
242
|
}
|
|
157
243
|
const protocol = headers.get('X-Forwarded-Proto') == 'https' ? 'https' : 'http';
|
|
@@ -160,12 +246,18 @@ const getRequestFromNodeMessage = (request, host) => {
|
|
|
160
246
|
// purposes and retains the original value on `req.originalUrl`
|
|
161
247
|
// @see https://expressjs.com/en/api.html#req.originalUrl
|
|
162
248
|
const originalUrl = request.originalUrl ?? request.url;
|
|
163
|
-
|
|
249
|
+
// Parse the URL once. The two-arg form resolves `originalUrl` against `baseUrl`;
|
|
250
|
+
// only fall back to string concatenation if that throws on a malformed input.
|
|
251
|
+
let url;
|
|
164
252
|
try {
|
|
165
253
|
url = new URL(originalUrl, baseUrl);
|
|
166
254
|
}
|
|
167
|
-
catch {
|
|
255
|
+
catch {
|
|
256
|
+
url = new URL(baseUrl + originalUrl);
|
|
257
|
+
}
|
|
168
258
|
const ret = new Request(url.toString(), requestInit);
|
|
259
|
+
// Cache the parsed URL so `contextFromRequest` doesn't re-parse `request.url`.
|
|
260
|
+
parsedUrlByRequest.set(ret, url);
|
|
169
261
|
return ret;
|
|
170
262
|
};
|
|
171
263
|
exports.getRequestFromNodeMessage = getRequestFromNodeMessage;
|
|
@@ -231,12 +323,9 @@ function normalizeResponseBody(request, response) {
|
|
|
231
323
|
return (0, ws_1.withWebSocketCallback)({ status: 101, headers: new Headers(response.headers) }, cb);
|
|
232
324
|
}
|
|
233
325
|
if (response instanceof Response) {
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
headers: new Headers(response.headers),
|
|
238
|
-
body: response.body && !response.bodyUsed ? stream_1.Readable.fromWeb(response.body) : undefined
|
|
239
|
-
};
|
|
326
|
+
// Route native Responses through the same boundary adapter handlers use, so both
|
|
327
|
+
// paths normalize identically (incl. dropping stale content-encoding/length).
|
|
328
|
+
return normalizeResponseBody(request, (0, helpers_1.fromNativeResponse)(response));
|
|
240
329
|
}
|
|
241
330
|
const is1xx = response.status && response.status >= 100 && response.status < 200;
|
|
242
331
|
const is204 = response.status == 204;
|
|
@@ -291,7 +380,9 @@ function contextFromRequest(baseCtx, request) {
|
|
|
291
380
|
const newContext = Object.create(baseCtx);
|
|
292
381
|
// hydrate context with the request
|
|
293
382
|
newContext.request = request;
|
|
294
|
-
|
|
383
|
+
// Reuse the URL parsed when the request was built; only re-parse for requests that
|
|
384
|
+
// didn't pass through `getRequestFromNodeMessage` (e.g. ones built directly in tests).
|
|
385
|
+
newContext.url = parsedUrlByRequest.get(request) ?? new URL(request.url);
|
|
295
386
|
return newContext;
|
|
296
387
|
}
|
|
297
388
|
//# sourceMappingURL=logic.js.map
|
package/dist/logic.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logic.js","sourceRoot":"","sources":["../src/logic.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"logic.js","sourceRoot":"","sources":["../src/logic.ts"],"names":[],"mappings":"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"}
|
package/dist/metrics.js
CHANGED
|
@@ -109,6 +109,15 @@ async function instrumentHttpServerWithPromClientRegistry(options) {
|
|
|
109
109
|
try {
|
|
110
110
|
return (res = await next());
|
|
111
111
|
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
// A thrown error is turned into a response by `coerceErrorsMiddleware`, which runs *outside*
|
|
114
|
+
// this middleware, so the final response object never reaches us here. Derive the status the
|
|
115
|
+
// same way it does, so the metric is labelled with the real code (e.g. a thrown `413` or
|
|
116
|
+
// `404`, or `500` for an unmapped error) instead of defaulting to `200`. Coerce to a number so
|
|
117
|
+
// a non-numeric `.status`/`.statusCode` can't leak into a high-cardinality Prometheus label.
|
|
118
|
+
labels.code = Number(error?.status || error?.statusCode) || 500;
|
|
119
|
+
throw error;
|
|
120
|
+
}
|
|
112
121
|
finally {
|
|
113
122
|
labels.code = (res && res.status) || labels.code;
|
|
114
123
|
if (ctx.routerPath) {
|
package/dist/metrics.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":";;AAgDA,sDAEC;AAoBD,
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"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"}
|
package/dist/router.js
CHANGED
|
@@ -159,7 +159,13 @@ class Router {
|
|
|
159
159
|
}
|
|
160
160
|
return await next();
|
|
161
161
|
});
|
|
162
|
-
|
|
162
|
+
// Append in place instead of `memo.concat(...)`, which allocates a fresh
|
|
163
|
+
// array each iteration (O(L^2) over the matched layers). A loop rather
|
|
164
|
+
// than `memo.push(...layer.stack)` avoids any spread argument-count limit.
|
|
165
|
+
for (const layerMiddleware of layer.stack) {
|
|
166
|
+
memo.push(layerMiddleware);
|
|
167
|
+
}
|
|
168
|
+
return memo;
|
|
163
169
|
}, []);
|
|
164
170
|
return (0, middleware_1.compose)(...layerChain)(ctx, next);
|
|
165
171
|
};
|
package/dist/router.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":";;;;;;AAAA,8DAAmC;AACnC,mCAA6C;AAC7C,mDAAkD;AAElD,6CAAkD;AAClD,uCAAuC;AAoBvC,MAAM,8BAA8B,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAA;AAEhE,gBAAgB;AAChB,SAAS,iBAAiB,CAAe,UAAyB;IAChE,OAAQ,UAAkB,CAAC,8BAA8B,CAAC,IAAI,IAAI,CAAA;AACpE,CAAC;AAED,gBAAgB;AAChB,SAAS,iBAAiB,CAAI,UAAyB,EAAE,MAAmB;IAC1E,CAAC;IAAE,UAAkB,CAAC,8BAA8B,CAAC,GAAG,MAAM,CAAA;AAChE,CAAC;AAyBD,SAAS,mBAAmB,CAC1B,MAAuB,EACvB,MAAuC;IAEvC,OAAO,UAAS,IAAI,EAAE,GAAG,WAAW;QAClC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,IAAA,oBAAO,EAAC,GAAG,WAAW,CAAkD,EAAE,EAAE,CAAC,CAAA;QAC7G,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAa,MAAM;IAIjB,YAAY,IAAoB;QADhC,UAAK,GAA0B,EAAE,CAAA;QAcjC,YAAO,GAAG,mBAAmB,CAAU,IAAI,EAAE,SAAS,CAAC,CAAA;QACvD,WAAM,GAAG,mBAAmB,CAAU,IAAI,EAAE,QAAQ,CAAC,CAAA;QACrD,QAAG,GAAG,mBAAmB,CAAU,IAAI,EAAE,KAAK,CAAC,CAAA;QAC/C,SAAI,GAAG,mBAAmB,CAAU,IAAI,EAAE,MAAM,CAAC,CAAA;QACjD,YAAO,GAAG,mBAAmB,CAAU,IAAI,EAAE,SAAS,CAAC,CAAA;QACvD,UAAK,GAAG,mBAAmB,CAAU,IAAI,EAAE,OAAO,CAAC,CAAA;QACnD,SAAI,GAAG,mBAAmB,CAAU,IAAI,EAAE,MAAM,CAAC,CAAA;QACjD,QAAG,GAAG,mBAAmB,CAAU,IAAI,EAAE,KAAK,CAAC,CAAA;QAC/C,UAAK,GAAG,mBAAmB,CAAU,IAAI,EAAE,OAAO,CAAC,CAAA;QApBjD,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAA;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI;YAChE,MAAM;YACN,SAAS;YACT,KAAK;YACL,KAAK;YACL,OAAO;YACP,MAAM;YACN,QAAQ;SACT,CAAA;IACH,CAAC;IA6CD,GAAG;QACD,MAAM,UAAU,GAA0B,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAC/E,IAAI,IAAwB,CAAA;QAC5B,IAAI,MAAM,GAAG,IAAI,CAAA;QAEjB,MAAM,OAAO,GAAG,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAA;QACjD,IAAI,OAAO;YAAE,IAAI,GAAG,UAAU,CAAC,KAAK,EAAmB,CAAA;QAEvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;YACvB,MAAM,cAAc,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAA;YAC3C,IAAI,cAAc,EAAE,CAAC;gBACnB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE;oBACjF,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;iBACrC,CAAC,CAAA;gBAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAClD,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;oBACxC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,aAAK,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,CAAA;oBAE7E,IAAI,IAAI;wBAAE,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;oBACpC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM;wBAAE,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;oBAChE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;oBAC7B,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,CAAA;gBACnC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAU,EAAE,CAAA;gBACtB,IAAA,6BAAY,EAAC,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,IAAI,CAAC,CAAA;gBAC5C,MAAM,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAA;gBAC9D,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,SAAS,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAA;YAC9G,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;;;;;;OAUG;IAEH,MAAM,CAAC,MAAc;QACnB,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QAElC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QAEzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAC3B,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QACzB,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;OAEG;IACH,UAAU;QACR,MAAM,MAAM,GAAG,IAAI,CAAA;QAEnB,MAAM,gBAAgB,GACpB,SAAS,gBAAgB,CAAC,GAAG,EAAE,IAAI;YACjC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAA;YACzE,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;YACtD,IAAI,UAA6F,CAAA;YAEjG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAChB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;YACnD,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAA;YAC5B,CAAC;YAED,GAAG,CAAC,MAAM,GAAG,MAAM,CAAA;YAEnB,IAAI,CAAC,OAAO,CAAC,KAAK;gBAAE,OAAO,IAAI,EAAE,CAAA;YAEjC,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAA;YAC3C,MAAM,iBAAiB,GAAG,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;YACjE,GAAG,CAAC,aAAa,GAAG,iBAAiB,CAAC,IAAI,CAAA;YAC1C,IAAI,iBAAiB,CAAC,IAAI,EAAE,CAAC;gBAC3B,GAAG,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,IAAI,CAAA;YAChD,CAAC;YAED,UAAU,GAAG,aAAa,CAAC,MAAM,CAC/B,UAAS,IAAI,EAAE,KAAK;gBAClB,IAAI,CAAC,IAAI,CAAC,KAAK,WAAU,GAAG,EAAE,IAAI;oBAChC,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;oBACnC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;oBAChE,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAA;oBAC3B,2CAA2C;oBAC3C,GAAG,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAAA;oBAC9B,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;wBACf,GAAG,CAAC,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAA;oBACpC,CAAC;oBACD,OAAO,MAAM,IAAI,EAAE,CAAA;gBACrB,CAAC,CAAC,CAAA;gBACF,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YACjC,CAAC,EACD,EAAuB,CACxB,CAAA;YAED,OAAO,IAAA,oBAAO,EAAC,GAAG,UAAU,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAC1C,CAAC,CAAA;QAEH,iBAAiB,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAA;QAEzC,OAAO,gBAAiE,CAAA;IAC1E,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IAEH,cAAc,CAAC,UAAgC,EAAE;QAC/C,OAAO,GAAG,OAAO,IAAI,EAAE,CAAA;QACvB,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAA;QAEhC,MAAM,gBAAgB,GACpB,KAAK,UAAU,gBAAgB,CAAC,GAAG,EAAE,IAAI;YACvC,MAAM,QAAQ,GAAG,MAAM,IAAI,EAAE,CAAA;YAE7B,MAAM,OAAO,GAAoC,EAAE,CAAA;YAEnD,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAChD,IAAI,SAAS,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;oBACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBAC5C,MAAM,KAAK,GAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;wBACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;4BAC9C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;4BAC/B,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAA;wBAC1B,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBACvC,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAA;gBAEtD,IAAI,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;oBACzC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;wBAClB,IAAI,uBAAuB,GACzB,OAAO,OAAO,CAAC,cAAc,KAAK,UAAU;4BAC1C,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,oDAAoD;4BAC/E,CAAC,CAAC,IAAI,qBAAS,CAAC,cAAc,EAAE,CAAA;wBAEpC,MAAM,uBAAuB,CAAA;oBAC/B,CAAC;yBAAM,CAAC;wBACN,OAAO;4BACL,MAAM,EAAE,GAAG;4BACX,OAAO,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;yBAC1C,CAAA;oBACH,CAAC;gBACH,CAAC;qBAAM,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;oBAC7B,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;wBAChC,OAAO;4BACL,MAAM,EAAE,GAAG;4BACX,OAAO,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;yBAC1C,CAAA;oBACH,CAAC;yBAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;wBACnC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;4BAClB,IAAI,mBAAmB,GACrB,OAAO,OAAO,CAAC,gBAAgB,KAAK,UAAU;gCAC5C,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,oDAAoD;gCACjF,CAAC,CAAC,IAAI,qBAAS,CAAC,gBAAgB,EAAE,CAAA;4BAEtC,MAAM,mBAAmB,CAAA;wBAC3B,CAAC;6BAAM,CAAC;4BACN,OAAO;gCACL,MAAM,EAAE,GAAG;gCACX,OAAO,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;6BAC1C,CAAA;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YACD,OAAO,QAAQ,CAAA;QACjB,CAAC,CAAA;QACH,OAAO,gBAAiE,CAAA;IAC1E,CAAC;IAED;;;;;;;OAOG;IAEH,GAAG,CAAmB,IAAO,EAAE,UAA2E;QACxG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,qBAAW,EAAE,UAAiB,EAAE,EAAE,CAAC,CAAA;QAEvD,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IAEH,QAAQ,CAAC,MAAc,EAAE,WAAmB,EAAE,OAAe,GAAG;QAC9D,8BAA8B;QAC9B,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAE9G,mCAAmC;QACnC,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC;YACxD,MAAM,IAAI,KAAK,CACb,2EAA2E,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CACpG,CAAA;QAEH,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YACpC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,CAAA;QAC7D,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;OAMG;IAEH,QAAQ,CACN,IAAU,EACV,OAAuD,EACvD,UAAyD,EACzD,IAAmB;QAEnB,IAAI,GAAG,IAAI,IAAI,EAAE,CAAA;QAEjB,MAAM,MAAM,GAAG,IAAI,CAAA;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QAExB,yBAAyB;QACzB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBACvB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;YAClE,CAAC;QACH,CAAC;QAED,eAAe;QACf,MAAM,KAAK,GAAG,IAAI,aAAK,CAAgB,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE;YAChE,GAAG,EAAE,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;YACzC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK;YACzD,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK;YAChD,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE;YAC7C,cAAc,EAAE,IAAI,CAAC,cAAc;SACpC,CAAC,CAAA;QAEF,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACrB,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACnC,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAEjB,0DAA0D;QAE1D,OAAO,KAAK,CAAA;IACd,CAAC;IAED;;;;;OAKG;IAEH,KAAK,CAAC,IAAY,EAAE,MAAc;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAA;QACzB,IAAI,KAA6B,CAAA;QAEjC,MAAM,OAAO,GAAG;YACd,IAAI,EAAE,EAA8B;YACpC,aAAa,EAAE,EAA8B;YAC7C,KAAK,EAAE,KAAK;SACb,CAAA;QAED,KAAK,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAClD,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;YAEjB,gDAAgD;YAEhD,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAExB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAa,CAAC,EAAE,CAAC;oBACxE,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;oBACjC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM;wBAAE,OAAO,CAAC,KAAK,GAAG,IAAI,CAAA;gBAChD,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;CACF;AA3ZD,wBA2ZC;AAED,MAAM;AACN,uDAAuD;AACvD,KAAK;AACL,cAAc;AACd,KAAK;AACL,mBAAmB;AACnB,oDAAoD;AACpD,sBAAsB;AACtB,SAAS;AACT,KAAK;AACL,+BAA+B;AAC/B,oCAAoC;AACpC,MAAM;AACN,qEAAqE;AACrE,qDAAqD;AACrD,IAAI;AAEJ,MAAM;AACN,gFAAgF;AAChF,2CAA2C;AAC3C,KAAK;AACL,2FAA2F;AAC3F,wFAAwF;AACxF,KAAK;AACL,2EAA2E;AAC3E,KAAK;AACL,mBAAmB;AACnB,YAAY;AACZ,kCAAkC;AAClC,2CAA2C;AAC3C,UAAU;AACV,wCAAwC;AACxC,gBAAgB;AAChB,UAAU;AACV,2CAA2C;AAC3C,gBAAgB;AAChB,UAAU;AACV,2CAA2C;AAC3C,gBAAgB;AAChB,UAAU;AACV,2CAA2C;AAC3C,gBAAgB;AAChB,WAAW;AACX,SAAS;AACT,KAAK;AACL,yFAAyF;AACzF,sDAAsD;AACtD,KAAK;AACL,iEAAiE;AACjE,mEAAmE;AACnE,KAAK;AACL,kEAAkE;AAClE,KAAK;AACL,uBAAuB;AACvB,KAAK;AACL,+EAA+E;AAC/E,0CAA0C;AAC1C,KAAK;AACL,mBAAmB;AACnB,uDAAuD;AACvD,aAAa;AACb,SAAS;AACT,KAAK;AACL,4BAA4B;AAC5B,sBAAsB;AACtB,SAAS;AACT,KAAK;AACL,8BAA8B;AAC9B,KAAK;AACL,uCAAuC;AACvC,KAAK;AACL,mBAAmB;AACnB,iBAAiB;AACjB,qBAAqB;AACrB,wBAAwB;AACxB,kEAAkE;AAClE,4BAA4B;AAC5B,mBAAmB;AACnB,aAAa;AACb,UAAU;AACV,gBAAgB;AAChB,gCAAgC;AAChC,wCAAwC;AACxC,SAAS;AACT,QAAQ;AACR,SAAS;AACT,KAAK;AACL,wBAAwB;AACxB,KAAK;AACL,mCAAmC;AACnC,KAAK;AACL,mBAAmB;AACnB,kCAAkC;AAClC,iCAAiC;AACjC,KAAK;AACL,2CAA2C;AAC3C,+CAA+C;AAC/C,+EAA+E;AAC/E,KAAK;AACL,oEAAoE;AACpE,+BAA+B;AAC/B,SAAS;AACT,KAAK;AACL,0BAA0B;AAC1B,KAAK;AACL,sDAAsD;AACtD,KAAK;AACL,mBAAmB;AACnB,iCAAiC;AACjC,wBAAwB;AACxB,SAAS;AACT,KAAK;AACL,mDAAmD;AACnD,0DAA0D;AAC1D,SAAS;AACT,KAAK;AACL,yBAAyB;AACzB,KAAK;AACL,oEAAoE;AACpE,KAAK;AACL,mBAAmB;AACnB,sDAAsD;AACtD,gCAAgC;AAChC,+DAA+D;AAC/D,SAAS;AACT,SAAS;AACT,KAAK;AACL,gFAAgF;AAChF,mDAAmD;AACnD,KAAK;AACL,yCAAyC;AACzC,2CAA2C;AAC3C,mBAAmB;AACnB,6CAA6C;AAC7C,sCAAsC;AACtC,MAAM;AAEN,6CAA6C;AAC7C,qCAAqC;AACrC,gFAAgF;AAChF,sDAAsD;AAEtD,oBAAoB;AACpB,QAAQ;AACR,MAAM;AACN,8BAA8B;AAC9B,IAAI;AAEJ,mEAAmE;AACnE,oDAAoD"}
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
|
package/dist/server.js
CHANGED
|
@@ -46,6 +46,19 @@ const terminator_1 = require("./terminator");
|
|
|
46
46
|
const ws_1 = require("./ws");
|
|
47
47
|
const destroy_1 = __importDefault(require("destroy"));
|
|
48
48
|
const cors_1 = require("./cors");
|
|
49
|
+
/**
|
|
50
|
+
* Builds a throwaway web `Request` carrying only the incoming `Origin` header, so the CORS helpers
|
|
51
|
+
* (which read `request.headers.get('origin')`) can run on the early body-size rejection path
|
|
52
|
+
* without adapting the request body.
|
|
53
|
+
*/
|
|
54
|
+
function corsRequestFromNodeMessage(req) {
|
|
55
|
+
const headers = new Headers();
|
|
56
|
+
const origin = req.headers.origin;
|
|
57
|
+
if (typeof origin === 'string') {
|
|
58
|
+
headers.set('origin', origin);
|
|
59
|
+
}
|
|
60
|
+
return new Request('http://cors.invalid/', { headers });
|
|
61
|
+
}
|
|
49
62
|
/**
|
|
50
63
|
* Creates a http-server component
|
|
51
64
|
* @public
|
|
@@ -56,6 +69,10 @@ async function createServerComponent(components, options) {
|
|
|
56
69
|
// config
|
|
57
70
|
const port = await config.requireNumber('HTTP_SERVER_PORT');
|
|
58
71
|
const host = await config.requireString('HTTP_SERVER_HOST');
|
|
72
|
+
const maxBodySize = options.maxBodySize;
|
|
73
|
+
// Catch misconfiguration early: a negative, fractional, NaN or zero limit would silently reject
|
|
74
|
+
// every request body rather than do something useful. Omit the option for "no limit".
|
|
75
|
+
(0, logic_1.assertValidMaxBodySize)(maxBodySize);
|
|
59
76
|
let handlerFn = handler;
|
|
60
77
|
const server = (0, logic_1.getServer)(options, handlerFn);
|
|
61
78
|
let listen;
|
|
@@ -109,8 +126,45 @@ async function createServerComponent(components, options) {
|
|
|
109
126
|
resetMiddlewares: serverHandler.resetMiddlewares
|
|
110
127
|
};
|
|
111
128
|
async function asyncHandle(req, res) {
|
|
112
|
-
|
|
129
|
+
// Reject oversized bodies up-front, before reading them, when the client declares its size.
|
|
130
|
+
// Bodies that omit or under-declare `Content-Length` are still capped while streaming by the
|
|
131
|
+
// limiter in `getRequestFromNodeMessage`.
|
|
132
|
+
if (maxBodySize !== undefined && (0, logic_1.exceedsContentLength)(req.headers['content-length'], maxBodySize)) {
|
|
133
|
+
// This path responds before the middleware chain, so it never reaches the metrics middleware.
|
|
134
|
+
// Log it so the rejection is at least observable (e.g. for log-based alerting).
|
|
135
|
+
logger.warn('Rejected request: body exceeds maxBodySize', {
|
|
136
|
+
method: req.method ?? '',
|
|
137
|
+
contentLength: req.headers['content-length'] ?? '',
|
|
138
|
+
maxBodySize
|
|
139
|
+
});
|
|
140
|
+
res.statusCode = 413;
|
|
141
|
+
res.setHeader('content-type', 'text/plain; charset=utf-8');
|
|
142
|
+
// Close the connection: the declared body is never read, so the socket can't be reused.
|
|
143
|
+
// With `Connection: close` Node tears the socket down after the response instead of waiting
|
|
144
|
+
// for the (never-arriving) body.
|
|
145
|
+
res.setHeader('connection', 'close');
|
|
146
|
+
// This path responds before the middleware chain runs, so the CORS middleware never sees it.
|
|
147
|
+
// Add the actual-response CORS headers here so a cross-origin client can read the 413.
|
|
148
|
+
if (options.cors) {
|
|
149
|
+
(0, cors_1.getActualResponseCorsHeaders)(options.cors, corsRequestFromNodeMessage(req)).forEach((value, key) => {
|
|
150
|
+
res.setHeader(key, value);
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
res.end('Payload Too Large');
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
// If the streaming limiter trips (a chunked/under-declared body that exceeds `maxBodySize`), the
|
|
157
|
+
// handler's body read rejects and the error middleware produces the `413` — but through the
|
|
158
|
+
// normal response path, which wouldn't close the connection. Flag it here so we can add
|
|
159
|
+
// `Connection: close` and stop the client from continuing to stream into a doomed request.
|
|
160
|
+
let bodyExceeded = false;
|
|
161
|
+
const request = (0, logic_1.getRequestFromNodeMessage)(req, host, maxBodySize, () => {
|
|
162
|
+
bodyExceeded = true;
|
|
163
|
+
});
|
|
113
164
|
const response = await serverHandler.processRequest(configuredContext, request);
|
|
165
|
+
if (bodyExceeded) {
|
|
166
|
+
res.setHeader('connection', 'close');
|
|
167
|
+
}
|
|
114
168
|
(0, logic_1.success)(response, res);
|
|
115
169
|
}
|
|
116
170
|
async function handleUpgrade(req, socket, head) {
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -23,8 +23,42 @@ export type ServerComponents = {
|
|
|
23
23
|
*/
|
|
24
24
|
export type IHttpServerOptions = {
|
|
25
25
|
cors?: CorsOptions;
|
|
26
|
+
/**
|
|
27
|
+
* Milliseconds an idle keep-alive socket is kept open waiting for the next request before the
|
|
28
|
+
* server closes it. Maps to Node's `server.keepAliveTimeout`.
|
|
29
|
+
* @defaultValue 70000
|
|
30
|
+
*/
|
|
26
31
|
keepAliveTimeout?: number;
|
|
32
|
+
/**
|
|
33
|
+
* Milliseconds the server waits to receive the complete request headers before aborting the
|
|
34
|
+
* connection. Maps to Node's `server.headersTimeout` and should stay above `keepAliveTimeout`.
|
|
35
|
+
* @defaultValue 75000
|
|
36
|
+
*/
|
|
27
37
|
headersTimeout?: number;
|
|
38
|
+
/**
|
|
39
|
+
* Maximum allowed size, in bytes, of an incoming request body. Requests whose `Content-Length`
|
|
40
|
+
* exceeds it are rejected with `413 Payload Too Large` before the body is read; bodies that
|
|
41
|
+
* exceed it while streaming (e.g. chunked transfer-encoding or an under-declared `Content-Length`)
|
|
42
|
+
* have their stream torn down with the same `413`. The limit is inclusive — a body of exactly
|
|
43
|
+
* `maxBodySize` bytes is allowed, only larger ones are rejected. Must be a positive integer when
|
|
44
|
+
* provided; unset means no limit is enforced.
|
|
45
|
+
*/
|
|
46
|
+
maxBodySize?: number;
|
|
47
|
+
/**
|
|
48
|
+
* Milliseconds the server waits to receive the entire request (headers and body) from the client
|
|
49
|
+
* before aborting it. Maps to Node's `server.requestTimeout`. `0` disables the timeout.
|
|
50
|
+
*/
|
|
51
|
+
requestTimeout?: number;
|
|
52
|
+
/**
|
|
53
|
+
* Maximum number of request headers allowed. Requests with more headers are rejected. Maps to
|
|
54
|
+
* Node's `server.maxHeadersCount`. `0` means unlimited.
|
|
55
|
+
*/
|
|
56
|
+
maxHeadersCount?: number;
|
|
57
|
+
/**
|
|
58
|
+
* Maximum number of requests a single keep-alive socket may serve before the server closes it.
|
|
59
|
+
* Maps to Node's `server.maxRequestsPerSocket`. Unset (or `0`) means unlimited.
|
|
60
|
+
*/
|
|
61
|
+
maxRequestsPerSocket?: number;
|
|
28
62
|
} & ({
|
|
29
63
|
https: https.ServerOptions;
|
|
30
64
|
} | {
|