expediate 1.0.5 → 1.0.6
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/CHANGELOG.md +138 -0
- package/CONTRIBUTING.md +150 -0
- package/README.md +278 -779
- package/dist/apis.d.ts +372 -12
- package/dist/apis.d.ts.map +1 -1
- package/dist/apis.js +483 -65
- package/dist/apis.js.map +1 -1
- package/dist/cjs/index.js +2290 -807
- package/dist/git.d.ts +1 -1
- package/dist/git.d.ts.map +1 -1
- package/dist/git.js +5 -5
- package/dist/git.js.map +1 -1
- package/dist/http-objects.d.ts +26 -0
- package/dist/http-objects.d.ts.map +1 -0
- package/dist/http-objects.js +588 -0
- package/dist/http-objects.js.map +1 -0
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/jwt-auth.d.ts +11 -0
- package/dist/jwt-auth.d.ts.map +1 -1
- package/dist/jwt-auth.js +9 -9
- package/dist/jwt-auth.js.map +1 -1
- package/dist/middleware.js +2 -2
- package/dist/middleware.js.map +1 -1
- package/dist/mimetypes.json +882 -1
- package/dist/misc.d.ts +161 -25
- package/dist/misc.d.ts.map +1 -1
- package/dist/misc.js +228 -80
- package/dist/misc.js.map +1 -1
- package/dist/openapi.d.ts +156 -13
- package/dist/openapi.d.ts.map +1 -1
- package/dist/openapi.js +214 -71
- package/dist/openapi.js.map +1 -1
- package/dist/router-types.d.ts +760 -0
- package/dist/router-types.d.ts.map +1 -0
- package/dist/router-types.js +23 -0
- package/dist/router-types.js.map +1 -0
- package/dist/router.d.ts +7 -530
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +128 -375
- package/dist/router.js.map +1 -1
- package/dist/static.d.ts +2 -2
- package/dist/static.d.ts.map +1 -1
- package/dist/static.js +77 -22
- package/dist/static.js.map +1 -1
- package/docs/THREAT_MODEL.md +52 -0
- package/docs/api-builder-v2-design.md +644 -0
- package/docs/api-builder-v3-design.md +397 -0
- package/docs/api-builder.md +454 -0
- package/docs/benchmark.md +27 -0
- package/docs/body-parsing.md +223 -0
- package/docs/errors.md +359 -0
- package/docs/expediate.png +0 -0
- package/docs/git.md +139 -0
- package/docs/jwt-auth.md +251 -0
- package/docs/logo.svg +12 -0
- package/docs/middleware.md +264 -0
- package/docs/openapi.md +180 -0
- package/docs/router.md +356 -0
- package/docs/static.md +128 -0
- package/docs/wiki.json +123 -0
- package/package.json +30 -8
- package/dist/cjs/apis.js +0 -327
- package/dist/cjs/git.js +0 -293
- package/dist/cjs/jwt-auth.js +0 -532
- package/dist/cjs/middleware.js +0 -511
- package/dist/cjs/mimetypes.json +0 -1
- package/dist/cjs/misc.js +0 -787
- package/dist/cjs/openapi.js +0 -485
- package/dist/cjs/router.js +0 -898
- package/dist/cjs/static.js +0 -669
package/dist/misc.js
CHANGED
|
@@ -21,16 +21,61 @@
|
|
|
21
21
|
'use strict';
|
|
22
22
|
import { Readable } from 'stream';
|
|
23
23
|
import zlib from 'zlib';
|
|
24
|
+
/**
|
|
25
|
+
* Build a fully-resolved {@link BodyOptions} object, applying defaults for any
|
|
26
|
+
* unspecified field. `defaultType` is the parser's natural content type, used
|
|
27
|
+
* when the caller does not supply `opts.type`.
|
|
28
|
+
*/
|
|
29
|
+
function resolveBodyOptions(opts, defaultType) {
|
|
30
|
+
return {
|
|
31
|
+
inflate: opts?.inflate ?? true,
|
|
32
|
+
limit: opts?.limit ?? '100kb',
|
|
33
|
+
reviver: opts?.reviver ?? null,
|
|
34
|
+
strict: opts?.strict ?? true,
|
|
35
|
+
type: opts?.type ?? defaultType,
|
|
36
|
+
verify: opts?.verify ?? null,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Test whether a request's `Content-Type` matches a {@link BodyTypeMatcher}.
|
|
41
|
+
* Returns `true` for any request when `matcher` is `null`.
|
|
42
|
+
*/
|
|
43
|
+
function matchesBodyType(req, matcher) {
|
|
44
|
+
if (matcher === null)
|
|
45
|
+
return true;
|
|
46
|
+
if (typeof matcher === 'function')
|
|
47
|
+
return matcher(req);
|
|
48
|
+
const actual = ((req.headers['content-type']) ?? '')
|
|
49
|
+
.split(';')[0].trim().toLowerCase();
|
|
50
|
+
if (!actual)
|
|
51
|
+
return false;
|
|
52
|
+
const patterns = Array.isArray(matcher) ? matcher : [matcher];
|
|
53
|
+
return patterns.some((pattern) => matchMimePattern(actual, pattern.toLowerCase()));
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Match a concrete media type (e.g. `'application/json'`) against a pattern
|
|
57
|
+
* that may contain wildcards (`'*\/*'`, `'application/*'`).
|
|
58
|
+
*/
|
|
59
|
+
function matchMimePattern(actual, pattern) {
|
|
60
|
+
if (pattern === '*/*' || pattern === '*')
|
|
61
|
+
return true;
|
|
62
|
+
if (pattern === actual)
|
|
63
|
+
return true;
|
|
64
|
+
const [pType, pSub] = pattern.split('/');
|
|
65
|
+
const [aType] = actual.split('/');
|
|
66
|
+
return pSub === '*' && pType === aType;
|
|
67
|
+
}
|
|
24
68
|
// ---------------------------------------------------------------------------
|
|
25
69
|
// Decompression algorithm registry
|
|
26
70
|
// ---------------------------------------------------------------------------
|
|
27
71
|
/**
|
|
28
72
|
* Maps a supported `Content-Encoding` value to its corresponding `zlib`
|
|
29
|
-
* decompression function.
|
|
73
|
+
* decompression function. `gzip`, `deflate`, and `br` (Brotli) are supported.
|
|
30
74
|
*/
|
|
31
75
|
const DECOMPRESS_ALGO = {
|
|
32
76
|
gzip: zlib.gunzip,
|
|
33
77
|
deflate: zlib.inflate,
|
|
78
|
+
br: zlib.brotliDecompress,
|
|
34
79
|
};
|
|
35
80
|
// ---------------------------------------------------------------------------
|
|
36
81
|
// Internal utilities
|
|
@@ -60,11 +105,11 @@ function readSize(value) {
|
|
|
60
105
|
return 0;
|
|
61
106
|
const num = parseFloat(fmt[1] ?? '0');
|
|
62
107
|
const sfx = (fmt[3] ?? 'b').toLowerCase();
|
|
63
|
-
if (sfx
|
|
108
|
+
if (sfx.startsWith('k'))
|
|
64
109
|
return num * 1024;
|
|
65
|
-
if (sfx
|
|
110
|
+
if (sfx.startsWith('m'))
|
|
66
111
|
return num * 1024 * 1024;
|
|
67
|
-
if (sfx
|
|
112
|
+
if (sfx.startsWith('g'))
|
|
68
113
|
return num * 1024 * 1024 * 1024;
|
|
69
114
|
return num;
|
|
70
115
|
}
|
|
@@ -129,16 +174,16 @@ export function extractCharset(contentType) {
|
|
|
129
174
|
* @param req - The incoming request.
|
|
130
175
|
* @param res - The outgoing response.
|
|
131
176
|
* @param opts - Resolved body-parsing options.
|
|
132
|
-
* @param
|
|
133
|
-
* to accept any content type.
|
|
177
|
+
* @param type - Content-type matcher (see {@link BodyTypeMatcher}), or
|
|
178
|
+
* `null` to accept any content type.
|
|
134
179
|
* @param next - The next middleware callback; called when the body is
|
|
135
180
|
* empty or absent.
|
|
136
181
|
* @param callback - Invoked with `(contentType, body)` on success.
|
|
137
182
|
*/
|
|
138
|
-
function readBody(req, res, opts,
|
|
139
|
-
const length = parseInt(req.headers['content-length'] ?? '0', 10);
|
|
183
|
+
function readBody(req, res, opts, type, next, callback) {
|
|
184
|
+
const length = parseInt((req.headers['content-length']) ?? '0', 10);
|
|
140
185
|
// Detect chunked transfer encoding — no Content-Length is present in this case.
|
|
141
|
-
const isChunked = req.headers['transfer-encoding']
|
|
186
|
+
const isChunked = (req.headers['transfer-encoding'])
|
|
142
187
|
?.split(',').map((v) => v.trim()).some((v) => v.toLowerCase() === 'chunked') ?? false;
|
|
143
188
|
// No body declared and not chunked — skip to next middleware.
|
|
144
189
|
if (!isChunked && (!length || length === 0))
|
|
@@ -151,12 +196,14 @@ function readBody(req, res, opts, mimetype, next, callback) {
|
|
|
151
196
|
const encoding = req.headers['content-encoding'];
|
|
152
197
|
if (encoding && (opts.inflate === false || !DECOMPRESS_ALGO[encoding]))
|
|
153
198
|
return void res.status(415).send('Unsupported Media Type: Wrong Content-Encoding');
|
|
154
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
155
199
|
const decompress = (encoding ? DECOMPRESS_ALGO[encoding] : undefined) ?? ((d, c) => c(null, d));
|
|
156
200
|
// Content-Type validation.
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
201
|
+
// When the request's content type does not match, pass through to the next
|
|
202
|
+
// middleware (Express-compatible composable behaviour). Returning 415 here
|
|
203
|
+
// would break parser stacking: json() + formEncoded() + …
|
|
204
|
+
const contentType = (req.headers['content-type']) ?? '';
|
|
205
|
+
if (!matchesBodyType(req, type))
|
|
206
|
+
return next();
|
|
160
207
|
// Stream collection.
|
|
161
208
|
let data = Buffer.alloc(0);
|
|
162
209
|
req.on('data', (chunk) => {
|
|
@@ -174,20 +221,45 @@ function readBody(req, res, opts, mimetype, next, callback) {
|
|
|
174
221
|
if (data === null)
|
|
175
222
|
return; // aborted during streaming
|
|
176
223
|
// zlib types require NonSharedBuffer; Buffer satisfies this at runtime.
|
|
177
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
178
224
|
decompress(data, (err, decompressed) => {
|
|
179
225
|
if (err)
|
|
180
226
|
return void res.status(500).send(err.message);
|
|
181
|
-
|
|
227
|
+
const body = decompressed;
|
|
228
|
+
// Optional verify hook — runs on the raw bytes before parsing. A throw
|
|
229
|
+
// rejects the request with the error's status (default 403).
|
|
230
|
+
if (opts.verify) {
|
|
231
|
+
try {
|
|
232
|
+
opts.verify(req, res, body, extractCharset(contentType));
|
|
233
|
+
}
|
|
234
|
+
catch (e) {
|
|
235
|
+
const status = e.status
|
|
236
|
+
?? e.statusCode ?? 403;
|
|
237
|
+
return void res.status(status).send(e.message ?? 'Forbidden');
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
callback(contentType, body);
|
|
182
241
|
});
|
|
183
242
|
});
|
|
184
243
|
}
|
|
185
|
-
|
|
186
|
-
|
|
244
|
+
/**
|
|
245
|
+
* Promise-based body collector used by the `req.json()`, `req.text()`, and
|
|
246
|
+
* `req.formData()` request helpers.
|
|
247
|
+
*
|
|
248
|
+
* @param req - The incoming request.
|
|
249
|
+
* @param opts - Resolved body-parsing options.
|
|
250
|
+
* @param mimetype - Expected MIME type, or `null` to accept any content type.
|
|
251
|
+
* @param res - The outgoing response, required only so an `opts.verify`
|
|
252
|
+
* hook receives the Express-style `(req, res, buf, encoding)`
|
|
253
|
+
* arguments. When omitted, the verify hook is skipped.
|
|
254
|
+
* @returns The collected `{ mimetype, content }`, or `null` for an empty body.
|
|
255
|
+
* Rejects with `{ status, message }` on size, encoding, type, or
|
|
256
|
+
* verify-hook failures.
|
|
257
|
+
*/
|
|
258
|
+
export function readReqBody(req, opts, mimetype, res) {
|
|
187
259
|
return new Promise((resolve, reject) => {
|
|
188
|
-
const length = parseInt(req.headers['content-length'] ?? '0', 10);
|
|
260
|
+
const length = parseInt((req.headers['content-length']) ?? '0', 10);
|
|
189
261
|
// Detect chunked transfer encoding — no Content-Length is present in this case.
|
|
190
|
-
const isChunked = req.headers['transfer-encoding']
|
|
262
|
+
const isChunked = (req.headers['transfer-encoding'])
|
|
191
263
|
?.split(',').map((v) => v.trim()).some((v) => v.toLowerCase() === 'chunked') ?? false;
|
|
192
264
|
// No body declared and not chunked — resolve with null.
|
|
193
265
|
if (!isChunked && (!length || length === 0))
|
|
@@ -200,10 +272,9 @@ export function readReqBody(req, opts, mimetype) {
|
|
|
200
272
|
const encoding = req.headers['content-encoding'];
|
|
201
273
|
if (encoding && (opts.inflate === false || !DECOMPRESS_ALGO[encoding]))
|
|
202
274
|
return reject({ status: 415, message: 'Unsupported Media Type: Wrong Content-Encoding' });
|
|
203
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
204
275
|
const decompress = (encoding ? DECOMPRESS_ALGO[encoding] : undefined) ?? ((d, c) => c(null, d));
|
|
205
276
|
// Content-Type validation.
|
|
206
|
-
const contentType = req.headers['content-type'] ?? '';
|
|
277
|
+
const contentType = (req.headers['content-type']) ?? '';
|
|
207
278
|
if (mimetype && contentType.split(';')[0].trim() !== mimetype)
|
|
208
279
|
return reject({ status: 415, message: 'Unsupported Media Type: Wrong Content-Type' });
|
|
209
280
|
// Stream collection.
|
|
@@ -223,11 +294,23 @@ export function readReqBody(req, opts, mimetype) {
|
|
|
223
294
|
if (data === null)
|
|
224
295
|
return; // aborted during streaming
|
|
225
296
|
// zlib types require NonSharedBuffer; Buffer satisfies this at runtime.
|
|
226
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
227
297
|
decompress(data, (err, decompressed) => {
|
|
228
298
|
if (err)
|
|
229
299
|
return reject({ status: 500, message: err.message });
|
|
230
|
-
|
|
300
|
+
const body = decompressed;
|
|
301
|
+
// Optional verify hook — runs on the raw bytes before parsing. A throw
|
|
302
|
+
// rejects the promise with the error's status (default 403).
|
|
303
|
+
if (opts.verify && res) {
|
|
304
|
+
try {
|
|
305
|
+
opts.verify(req, res, body, extractCharset(contentType));
|
|
306
|
+
}
|
|
307
|
+
catch (e) {
|
|
308
|
+
const status = e.status
|
|
309
|
+
?? e.statusCode ?? 403;
|
|
310
|
+
return reject({ status, message: e.message ?? 'Forbidden' });
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
resolve({ mimetype: contentType ?? '', content: body });
|
|
231
314
|
});
|
|
232
315
|
});
|
|
233
316
|
});
|
|
@@ -437,43 +520,27 @@ const BODY_READERS = {
|
|
|
437
520
|
// Public middleware factories
|
|
438
521
|
// ---------------------------------------------------------------------------
|
|
439
522
|
/**
|
|
440
|
-
* Middleware factory that parses
|
|
523
|
+
* Middleware factory that parses an `application/json` request body and
|
|
441
524
|
* assigns the parsed value to `req.body`.
|
|
442
525
|
*
|
|
443
|
-
* Also attaches a `res.json(data)` helper to the response object so that
|
|
444
|
-
* handlers can send JSON responses conveniently:
|
|
445
|
-
* ```ts
|
|
446
|
-
* res.json({ ok: true });
|
|
447
|
-
* ```
|
|
448
|
-
*
|
|
449
526
|
* Behaviour:
|
|
450
527
|
* - Requests without a body (`Content-Length: 0` or absent) are passed
|
|
451
528
|
* through to `next()` without touching `req.body`.
|
|
529
|
+
* - Requests whose `Content-Type` is not `application/json` are also passed
|
|
530
|
+
* through to `next()` unchanged, allowing other parsers to handle them
|
|
531
|
+
* (Express-compatible composable behaviour).
|
|
452
532
|
* - Bodies larger than `opts.limit` receive **413 Content Too Large**.
|
|
453
533
|
* - Bodies with an unsupported `Content-Encoding` receive
|
|
454
534
|
* **415 Unsupported Media Type**.
|
|
455
|
-
* - Bodies whose `Content-Type` is not `application/json` receive
|
|
456
|
-
* **415 Unsupported Media Type**.
|
|
457
535
|
* - Parse errors receive **500 Internal Server Error**.
|
|
458
536
|
*
|
|
459
537
|
* @param opts - Optional configuration (see {@link BodyOptions}).
|
|
460
538
|
* @returns An Express-compatible middleware function.
|
|
461
539
|
*/
|
|
462
540
|
export function json(opts) {
|
|
463
|
-
const resolved =
|
|
464
|
-
inflate: true,
|
|
465
|
-
limit: '100kb',
|
|
466
|
-
reviver: null,
|
|
467
|
-
strict: true,
|
|
468
|
-
...opts,
|
|
469
|
-
};
|
|
541
|
+
const resolved = resolveBodyOptions(opts, 'application/json');
|
|
470
542
|
return (req, res, next) => {
|
|
471
|
-
|
|
472
|
-
res.json = (data) => {
|
|
473
|
-
res.write(JSON.stringify(data));
|
|
474
|
-
res.end();
|
|
475
|
-
};
|
|
476
|
-
readBody(req, res, resolved, 'application/json', next, (contentType, body) => {
|
|
543
|
+
readBody(req, res, resolved, resolved.type, next, (contentType, body) => {
|
|
477
544
|
readBodyAsJson(req, res, next, resolved, contentType, body);
|
|
478
545
|
});
|
|
479
546
|
};
|
|
@@ -497,15 +564,9 @@ export function json(opts) {
|
|
|
497
564
|
* @returns An Express-compatible middleware function.
|
|
498
565
|
*/
|
|
499
566
|
export function formData(opts) {
|
|
500
|
-
const resolved =
|
|
501
|
-
inflate: true,
|
|
502
|
-
limit: '100kb',
|
|
503
|
-
reviver: null,
|
|
504
|
-
strict: true,
|
|
505
|
-
...opts,
|
|
506
|
-
};
|
|
567
|
+
const resolved = resolveBodyOptions(opts, 'multipart/form-data');
|
|
507
568
|
return (req, res, next) => {
|
|
508
|
-
readBody(req, res, resolved,
|
|
569
|
+
readBody(req, res, resolved, resolved.type, next, (contentType, body) => {
|
|
509
570
|
readBodyAsFormData(req, res, next, contentType, body);
|
|
510
571
|
});
|
|
511
572
|
};
|
|
@@ -520,8 +581,8 @@ export function formData(opts) {
|
|
|
520
581
|
* Behaviour:
|
|
521
582
|
* - Requests without a body are passed through to `next()`.
|
|
522
583
|
* - Bodies larger than `opts.limit` receive **413 Content Too Large**.
|
|
523
|
-
* -
|
|
524
|
-
*
|
|
584
|
+
* - Requests whose `Content-Type` is not `application/x-www-form-urlencoded`
|
|
585
|
+
* are passed through to `next()` unchanged (Express-compatible composable behaviour).
|
|
525
586
|
* - Parse errors receive **400 Bad Request**.
|
|
526
587
|
*
|
|
527
588
|
* @param opts - Optional configuration (see {@link BodyOptions}).
|
|
@@ -536,15 +597,9 @@ export function formData(opts) {
|
|
|
536
597
|
* ```
|
|
537
598
|
*/
|
|
538
599
|
export function formEncoded(opts) {
|
|
539
|
-
const resolved =
|
|
540
|
-
inflate: true,
|
|
541
|
-
limit: '100kb',
|
|
542
|
-
reviver: null,
|
|
543
|
-
strict: true,
|
|
544
|
-
...opts,
|
|
545
|
-
};
|
|
600
|
+
const resolved = resolveBodyOptions(opts, 'application/x-www-form-urlencoded');
|
|
546
601
|
return (req, res, next) => {
|
|
547
|
-
readBody(req, res, resolved,
|
|
602
|
+
readBody(req, res, resolved, resolved.type, next, (contentType, body) => {
|
|
548
603
|
readBodyAsFormEncoded(req, res, next, contentType, body);
|
|
549
604
|
});
|
|
550
605
|
};
|
|
@@ -568,15 +623,11 @@ export function formEncoded(opts) {
|
|
|
568
623
|
* @returns An Express-compatible middleware function.
|
|
569
624
|
*/
|
|
570
625
|
export function parseBody(opts) {
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
reviver: null,
|
|
575
|
-
strict: true,
|
|
576
|
-
...opts,
|
|
577
|
-
};
|
|
626
|
+
// parseBody matches any content type by default (`null`); callers may still
|
|
627
|
+
// narrow it via `opts.type`.
|
|
628
|
+
const resolved = resolveBodyOptions(opts, null);
|
|
578
629
|
return (req, res, next) => {
|
|
579
|
-
readBody(req, res, resolved,
|
|
630
|
+
readBody(req, res, resolved, resolved.type, next, (contentType, body) => {
|
|
580
631
|
const mimetype = contentType.split(';')[0].trim();
|
|
581
632
|
if (!BODY_READERS[mimetype])
|
|
582
633
|
return res.status(415).send('Unsupported Media Type');
|
|
@@ -584,6 +635,63 @@ export function parseBody(opts) {
|
|
|
584
635
|
});
|
|
585
636
|
};
|
|
586
637
|
}
|
|
638
|
+
/**
|
|
639
|
+
* Middleware factory that collects the request body into a `Buffer` and assigns
|
|
640
|
+
* it to `req.body` without any parsing.
|
|
641
|
+
*
|
|
642
|
+
* Behaviour:
|
|
643
|
+
* - Defaults to handling `application/octet-stream`; override with `opts.type`
|
|
644
|
+
* (e.g. `raw({ type: '*\/*' })` to capture every body).
|
|
645
|
+
* - Requests without a body are passed through to `next()`.
|
|
646
|
+
* - Requests whose `Content-Type` does not match are passed through unchanged.
|
|
647
|
+
* - Bodies larger than `opts.limit` receive **413 Content Too Large**.
|
|
648
|
+
* - Bodies with an unsupported `Content-Encoding` receive
|
|
649
|
+
* **415 Unsupported Media Type**.
|
|
650
|
+
*
|
|
651
|
+
* @param opts - Optional configuration (see {@link BodyOptions}).
|
|
652
|
+
* @returns An Express-compatible middleware function.
|
|
653
|
+
*
|
|
654
|
+
* @example
|
|
655
|
+
* ```ts
|
|
656
|
+
* app.post('/webhook', raw({ type: 'application/json' }), (req, res) => {
|
|
657
|
+
* const raw = req.body as Buffer; // untouched bytes
|
|
658
|
+
* res.send('ok');
|
|
659
|
+
* });
|
|
660
|
+
* ```
|
|
661
|
+
*/
|
|
662
|
+
export function raw(opts) {
|
|
663
|
+
const resolved = resolveBodyOptions(opts, 'application/octet-stream');
|
|
664
|
+
return (req, res, next) => {
|
|
665
|
+
readBody(req, res, resolved, resolved.type, next, (_contentType, body) => {
|
|
666
|
+
req.body = body;
|
|
667
|
+
next();
|
|
668
|
+
});
|
|
669
|
+
};
|
|
670
|
+
}
|
|
671
|
+
/**
|
|
672
|
+
* Middleware factory that decodes the request body as text (using the charset
|
|
673
|
+
* from the `Content-Type` header) and assigns the resulting string to
|
|
674
|
+
* `req.body`.
|
|
675
|
+
*
|
|
676
|
+
* Behaviour:
|
|
677
|
+
* - Defaults to handling `text/plain`; override with `opts.type`
|
|
678
|
+
* (e.g. `text({ type: 'text/*' })`).
|
|
679
|
+
* - Requests without a body are passed through to `next()`.
|
|
680
|
+
* - Requests whose `Content-Type` does not match are passed through unchanged.
|
|
681
|
+
* - Bodies larger than `opts.limit` receive **413 Content Too Large**.
|
|
682
|
+
* - Decoding errors receive **500 Internal Server Error**.
|
|
683
|
+
*
|
|
684
|
+
* @param opts - Optional configuration (see {@link BodyOptions}).
|
|
685
|
+
* @returns An Express-compatible middleware function.
|
|
686
|
+
*/
|
|
687
|
+
export function text(opts) {
|
|
688
|
+
const resolved = resolveBodyOptions(opts, 'text/plain');
|
|
689
|
+
return (req, res, next) => {
|
|
690
|
+
readBody(req, res, resolved, resolved.type, next, (contentType, body) => {
|
|
691
|
+
readBodyAsPlainText(req, res, next, contentType, body);
|
|
692
|
+
});
|
|
693
|
+
};
|
|
694
|
+
}
|
|
587
695
|
/**
|
|
588
696
|
* Async generator that yields each part of a `multipart/form-data` request
|
|
589
697
|
* body as a {@link FormPartStream} object.
|
|
@@ -626,7 +734,7 @@ export async function* streamFormData(req, opts) {
|
|
|
626
734
|
chunks.push(chunk);
|
|
627
735
|
}
|
|
628
736
|
const body = Buffer.concat(chunks);
|
|
629
|
-
const contentType = req.headers['content-type'] ?? '';
|
|
737
|
+
const contentType = (req.headers['content-type']) ?? '';
|
|
630
738
|
const parts = parseMultipartBody(contentType, body);
|
|
631
739
|
for (const part of parts) {
|
|
632
740
|
// Expose each part's Buffer content as a Readable stream so callers can
|
|
@@ -734,20 +842,57 @@ export function logger(opts) {
|
|
|
734
842
|
length: contentLen,
|
|
735
843
|
});
|
|
736
844
|
else
|
|
737
|
-
log(`${timestamp} ${statusStr} ${req.method} ${requestPath} ${ip} <${user}> ${elapsed}ms (${contentLen})`);
|
|
845
|
+
log(`${timestamp} ${statusStr} ${req.method} ${requestPath} ${ip} <${user}> ${elapsed}ms (${String(contentLen)})`);
|
|
738
846
|
});
|
|
739
847
|
next();
|
|
740
848
|
};
|
|
741
849
|
}
|
|
850
|
+
/**
|
|
851
|
+
* Resolve the single `Access-Control-Allow-Origin` value for a request, given
|
|
852
|
+
* the configured {@link CorsOptions.origin} and the request's `Origin` header.
|
|
853
|
+
*
|
|
854
|
+
* @param origin - The configured allow-list (string or array form).
|
|
855
|
+
* @param requestOrigin - The request's `Origin` header value.
|
|
856
|
+
* @returns The string to send as `Access-Control-Allow-Origin`, or `undefined`
|
|
857
|
+
* when `origin` is an array with no matching entry (the header
|
|
858
|
+
* should then be omitted entirely).
|
|
859
|
+
*/
|
|
860
|
+
function resolveAllowOrigin(origin, requestOrigin) {
|
|
861
|
+
if (typeof origin === 'string')
|
|
862
|
+
return origin;
|
|
863
|
+
return origin.includes(requestOrigin) ? requestOrigin : undefined;
|
|
864
|
+
}
|
|
865
|
+
/**
|
|
866
|
+
* Middleware factory that adds Cross-Origin Resource Sharing (CORS) response
|
|
867
|
+
* headers and answers `OPTIONS` preflight requests.
|
|
868
|
+
*
|
|
869
|
+
* CORS headers are only set when the request carries an `Origin` header
|
|
870
|
+
* (browser-only; server-to-server requests typically omit it). When
|
|
871
|
+
* {@link CorsOptions.origin} is an array, the request's `Origin` is matched
|
|
872
|
+
* against it via {@link resolveAllowOrigin} and only the matching value is
|
|
873
|
+
* echoed back — see that option's documentation for why a plain array cannot
|
|
874
|
+
* be passed straight to `res.setHeader()`.
|
|
875
|
+
*
|
|
876
|
+
* @param opts - Optional configuration (see {@link CorsOptions}). All fields
|
|
877
|
+
* are optional; unset fields fall back to permissive defaults
|
|
878
|
+
* (wildcard origin, no credentials, no max-age).
|
|
879
|
+
* @returns An Express-compatible middleware function.
|
|
880
|
+
*
|
|
881
|
+
* @example
|
|
882
|
+
* ```ts
|
|
883
|
+
* // Allow exactly two known origins, denying everything else
|
|
884
|
+
* app.use(cors({ origin: ['https://app.example.com', 'https://admin.example.com'] }));
|
|
885
|
+
* ```
|
|
886
|
+
*/
|
|
742
887
|
export function cors(opts) {
|
|
743
888
|
const options = {
|
|
744
|
-
origin: opts?.origin
|
|
745
|
-
allowHeaders: opts?.allowHeaders
|
|
746
|
-
allowMethods: opts?.allowMethods
|
|
889
|
+
origin: opts?.origin ?? '*',
|
|
890
|
+
allowHeaders: opts?.allowHeaders ?? 'Accept, Content-Type, Authorization',
|
|
891
|
+
allowMethods: opts?.allowMethods ?? 'GET,HEAD,PUT,PATCH,POST,DELETE',
|
|
747
892
|
allowCredentials: opts?.allowCredentials,
|
|
748
893
|
maxAge: opts?.maxAge,
|
|
749
894
|
vary: opts?.vary,
|
|
750
|
-
optionsStatus: opts?.optionsStatus
|
|
895
|
+
optionsStatus: opts?.optionsStatus ?? 204,
|
|
751
896
|
preflight: opts?.preflight,
|
|
752
897
|
};
|
|
753
898
|
return (req, res, next) => {
|
|
@@ -756,9 +901,12 @@ export function cors(opts) {
|
|
|
756
901
|
return;
|
|
757
902
|
}
|
|
758
903
|
if (req.headers.origin) {
|
|
759
|
-
|
|
760
|
-
if (
|
|
761
|
-
res.setHeader('
|
|
904
|
+
const allowOrigin = resolveAllowOrigin(options.origin, req.headers.origin);
|
|
905
|
+
if (allowOrigin !== undefined) {
|
|
906
|
+
res.setHeader('Access-Control-Allow-Origin', allowOrigin);
|
|
907
|
+
if (options.vary !== undefined)
|
|
908
|
+
res.setHeader('Vary', options.vary);
|
|
909
|
+
}
|
|
762
910
|
}
|
|
763
911
|
if (req.method == 'OPTIONS') {
|
|
764
912
|
res.setHeader('Access-Control-Allow-Headers', options.allowHeaders);
|
package/dist/misc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"misc.js","sourceRoot":"","sources":["../src/misc.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"misc.js","sourceRoot":"","sources":["../src/misc.ts"],"names":[],"mappings":"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"}
|