alado 3.7.4 → 3.7.9

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 CHANGED
@@ -958,7 +958,7 @@ The resolved value from `handler` is set at `outputProperty` on the request obje
958
958
 
959
959
  `handler` should return `null`/`undefined` for credentials it does not accept. A thrown error is treated as a failure of the handler: the client gets `error` (or, with `required: false`, the request goes on anonymously) and the error is always logged.
960
960
 
961
- The value at `inputProperty` is checked before `handler` runs (the rest of the request is validated only after authentication). If the route declares a validator for that field (for example `body.token` in the request DTO), that validator decides; otherwise only a string is accepted. Anything else, such as an object from a JSON body or an array from a repeated query key, gets the configured `error` and `handler` is not called.
961
+ The value at `inputProperty` is checked before `handler` runs (the rest of the request is validated only after authentication). If the route declares a validator for that field (for example `body.token` in the request DTO), that validator decides, and it runs only this once for the request (request validation reuses the result); otherwise only a string is accepted. The handler gets the value as sent: query and path values stay strings even when a `number()` validator converts them for `req.query` / `req.path`. Anything else, such as an object from a JSON body or an array from a repeated query key, gets the configured `error` and `handler` is not called.
962
962
 
963
963
  When `inputProperty` reads a header, a query parameter or a path parameter, the request body is read only after authentication (and after access control, unless a rule reads `body.*`). A refused request never has its body parsed, and its connection is closed after the error response.
964
964
 
@@ -1034,6 +1034,8 @@ Either provide `compareWithProperty` to compare two request values, or `expected
1034
1034
 
1035
1035
  With `compareWithProperty`, access is denied when either value is missing (`undefined` or `null`), before or after `transformInputProperty`: two missing values never count as a match.
1036
1036
 
1037
+ Rules run before request validation, so an `inputProperty` that reads the request itself (`headers.*`, `query.*`, `path.*`, `body.*`) is checked first, as the auth input is. A field with a declared validator (for example `ownerId` in the body DTO for `body.ownerId`) is checked by that validator, once for the request. Any other request value must be a string, number, boolean or bigint. An object or an array, such as `{ "$ne": null }` from a JSON body, denies access with the rule's `statusCode` and `message`, before `transformInputProperty` or `accessControlHandler` see it. Values the application set, such as `auth.*`, are not checked.
1038
+
1037
1039
  ### Usage Example
1038
1040
 
1039
1041
  ```typescript
@@ -1215,7 +1217,7 @@ Documentation is built from:
1215
1217
  | `appId` | `string` | — | App identifier for multi-app setups |
1216
1218
  | `logger` | `AladoServerLogger` | — | Custom logger |
1217
1219
  | `ssl` | `SecureContextOptions` | — | TLS/HTTPS options |
1218
- | `maxBodySizeBytes` | `number` | `1048576` (1 MB) | Larger request bodies get `413 Content Too Large` and the connection is closed. `0` removes the limit |
1220
+ | `maxBodySizeBytes` | `number` | `1048576` (1 MB) | Larger request bodies get `413 Content Too Large` and the connection is closed. `0` removes the limit. Bodies read as text (JSON, XML, urlencoded, plain text) and multipart text fields are also refused past about 512 MB, the longest string V8 can build |
1219
1221
  | `trustProxy` | `boolean \| number` | `false` | Source of `request.ip`. `false`: the socket address (`X-Forwarded-For` is ignored, since clients can set it). `true`: the left-most `X-Forwarded-For` address. A number: how many proxies in front of the app to trust, e.g. `1` behind a single load balancer |
1220
1222
  | `caseSensitiveRoutes` | `boolean` | `true` | Whether `/Admin` and `/admin` are different paths. Case-insensitive matching lets requests slip past a reverse proxy that blocks paths by exact match, so turn it off only if clients rely on it. A trailing slash and repeated slashes are always ignored |
1221
1223
 
@@ -2,13 +2,55 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.accessControlChecker = accessControlChecker;
4
4
  const accessor_1 = require("../accessor");
5
+ const request_input_1 = require("../validate/context/request-input");
5
6
  const isMissing = (value) => value === undefined || value === null;
7
+ // request parts a client writes; anything else (auth.*) is set by the application
8
+ const clientParts = new Set([
9
+ 'headers',
10
+ 'query',
11
+ 'path',
12
+ 'body',
13
+ ]);
14
+ /**
15
+ * A rule reads its input before request validation runs, so a value from the request itself is
16
+ * checked first, as the auth input is: a JSON body could otherwise hand an object such as
17
+ * {"$ne": null} (a NoSQL operator) to transformInputProperty or accessControlHandler. A field with
18
+ * a declared validator (`body.ownerId` with `ownerId` in the body DTO) is checked by it, once; any
19
+ * other request value has to be a plain string, number, boolean or bigint. Missing values are left
20
+ * to the rule (a comparison with a missing value already denies access).
21
+ */
22
+ function isValidRuleInput(context, request, path, value) {
23
+ const segments = path.split('.');
24
+ if (!clientParts.has(segments[0]) || isMissing(value)) {
25
+ return true;
26
+ }
27
+ if (segments.length === 2) {
28
+ const declared = (0, request_input_1.checkDeclaredInput)(request, context.request, segments[0], segments[1], value);
29
+ if (declared !== undefined) {
30
+ return declared;
31
+ }
32
+ }
33
+ return [
34
+ 'string',
35
+ 'number',
36
+ 'boolean',
37
+ 'bigint',
38
+ ].includes(typeof value);
39
+ }
6
40
  async function accessControlChecker(context, request) {
7
41
  const { accessControl } = context;
8
42
  let success = true;
9
43
  for (const item of accessControl) {
10
44
  const { inputProperty, transformInputProperty, statusCode, message, compareWithProperty, expectedValue, accessControlHandler, } = item;
11
45
  const rawValue = (0, accessor_1.getProperty)(request, inputProperty);
46
+ // only awaited when a declared validator is async
47
+ let validInput = isValidRuleInput(context, request, inputProperty, rawValue);
48
+ if (typeof validInput !== 'boolean') {
49
+ validInput = await validInput;
50
+ }
51
+ if (!validInput) {
52
+ return { statusCode, message };
53
+ }
12
54
  let providedValue = rawValue;
13
55
  if (typeof transformInputProperty === 'function') {
14
56
  providedValue = await transformInputProperty(providedValue);
@@ -1 +1 @@
1
- {"version":3,"file":"access-control-checker.js","sourceRoot":"","sources":["../../../src/helpers/parser/access-control-checker.ts"],"names":[],"mappings":";;AAKA,oDAoDC;AAxDD,0CAA0C;AAE1C,MAAM,SAAS,GAAG,CAAC,KAAc,EAAW,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;AAE9E,KAAK,UAAU,oBAAoB,CAAC,OAAqB,EAAE,OAAY;IAC5E,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IAClC,IAAI,OAAO,GAAY,IAAI,CAAC;IAC5B,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,MAAM,EACJ,aAAa,EACb,sBAAsB,EACtB,UAAU,EACV,OAAO,EACP,mBAAmB,EACnB,aAAa,EACb,oBAAoB,GACrB,GAAG,IAAI,CAAC;QAET,MAAM,QAAQ,GAAY,IAAA,sBAAW,EAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAC9D,IAAI,aAAa,GAAY,QAAQ,CAAC;QAEtC,IAAI,OAAO,sBAAsB,KAAK,UAAU,EAAE,CAAC;YACjD,aAAa,GAAG,MAAM,sBAAsB,CAAC,aAAa,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO,GAAG,aAAa,KAAK,aAAa,CAAC;QAC5C,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;QACjC,CAAC;QAED,IAAI,mBAAmB,EAAE,CAAC;YACxB,MAAM,gBAAgB,GAAY,IAAA,sBAAW,EAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;YAC5E,sFAAsF;YACtF,qFAAqF;YACrF,OAAO;gBACL,CAAC,SAAS,CAAC,QAAQ,CAAC;oBACpB,CAAC,SAAS,CAAC,aAAa,CAAC;oBACzB,CAAC,SAAS,CAAC,gBAAgB,CAAC;oBAC5B,gBAAgB,KAAK,aAAa,CAAC;QACvC,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;QACjC,CAAC;QAED,IAAI,OAAO,oBAAoB,KAAK,UAAU,EAAE,CAAC;YAC/C,OAAO,GAAG,MAAM,oBAAoB,CAAC,aAAa,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;QACjC,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"access-control-checker.js","sourceRoot":"","sources":["../../../src/helpers/parser/access-control-checker.ts"],"names":[],"mappings":"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"}
@@ -2,36 +2,18 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.authenticate = authenticate;
4
4
  const accessor_1 = require("../accessor");
5
- const json_parser_1 = require("./json-parser");
5
+ const request_input_1 = require("../validate/context/request-input");
6
6
  /**
7
7
  * The auth input is checked before the handler sees it: validation of the rest of the request runs
8
8
  * only after authentication, so without this a JSON body or a repeated query key could hand the
9
9
  * handler an object or an array (e.g. {"$ne": null}, a NoSQL operator) instead of a token.
10
- * With a validator declared for the field (context.request.<part>.<name>) that validator decides;
11
- * without one, only a string is accepted.
10
+ * With a validator declared for the field (context.request.<part>.<name>) that validator decides,
11
+ * once: request validation reuses its result. Without one, only a string is accepted.
12
12
  */
13
- async function isValidAuthInput(context, request, value) {
13
+ function isValidAuthInput(context, request, value) {
14
14
  const [part, name,] = context.auth.inputProperty.split('.');
15
- const definition = context.request?.[part]?.[name];
16
- const handler = definition?.validation?.handler;
17
- if (typeof handler !== 'function') {
18
- return typeof value === 'string';
19
- }
20
- let input = value;
21
- if (definition?.isJSON && typeof value === 'string') {
22
- try {
23
- input = (0, json_parser_1.parseJson)(value);
24
- }
25
- catch {
26
- // the validator gets the raw string, as in request validation
27
- }
28
- }
29
- try {
30
- return Boolean(await handler.apply(request, [input]));
31
- }
32
- catch {
33
- return false;
34
- }
15
+ const declared = (0, request_input_1.checkDeclaredInput)(request, context.request, part, name, value);
16
+ return declared === undefined ? typeof value === 'string' : declared;
35
17
  }
36
18
  /**
37
19
  * Runs the auth handler. With `required: false` a request is never refused here: credentials that
@@ -47,8 +29,15 @@ async function authenticate(context, request, onHandlerError) {
47
29
  if (required && !authData) {
48
30
  return error;
49
31
  }
50
- if (authData !== undefined && authData !== null && !(await isValidAuthInput(context, request, authData))) {
51
- return refuse;
32
+ if (authData !== undefined && authData !== null) {
33
+ // only awaited when a declared validator is async
34
+ let validInput = isValidAuthInput(context, request, authData);
35
+ if (typeof validInput !== 'boolean') {
36
+ validInput = await validInput;
37
+ }
38
+ if (!validInput) {
39
+ return refuse;
40
+ }
52
41
  }
53
42
  try {
54
43
  const result = await handler.apply(handlerContext || {}, [authData]);
@@ -1 +1 @@
1
- {"version":3,"file":"authenticate.js","sourceRoot":"","sources":["../../../src/helpers/parser/authenticate.ts"],"names":[],"mappings":";;AA0CA,oCA2BC;AApED,0CAAuD;AACvD,+CAA0C;AAE1C;;;;;;GAMG;AACH,KAAK,UAAU,gBAAgB,CAAC,OAAqB,EAAE,OAAY,EAAE,KAAc;IACjF,MAAM,CACJ,IAAI,EACJ,IAAI,EACL,GAAI,OAAO,CAAC,IAA8B,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrE,MAAM,UAAU,GAAoC,OAAO,CAAC,OAAe,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAC5F,MAAM,OAAO,GAAG,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC;IAChD,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;QAClC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;IACnC,CAAC;IACD,IAAI,KAAK,GAAY,KAAK,CAAC;IAC3B,IAAI,UAAU,EAAE,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACpD,IAAI,CAAC;YACH,KAAK,GAAG,IAAA,uBAAS,EAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,8DAA8D;QAChE,CAAC;IACH,CAAC;IACD,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,YAAY,CAChC,OAAqB,EACrB,OAAY,EACZ,cAAyC;IAEzC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IACzB,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,IAA6B,CAAC;IAClH,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAE5C,MAAM,QAAQ,GAAQ,IAAA,sBAAW,EAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAC1D,IAAI,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;QACzG,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,cAAc,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,MAAM,IAAI,QAAQ,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAA,sBAAW,EAAC,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;QACpB,6EAA6E;QAC7E,OAAO,MAAM,CAAC;IAChB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"authenticate.js","sourceRoot":"","sources":["../../../src/helpers/parser/authenticate.ts"],"names":[],"mappings":";;AAgCA,oCAkCC;AAjED,0CAAuD;AACvD,qEAAuE;AAEvE;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,OAAqB,EAAE,OAAY,EAAE,KAAc;IAC3E,MAAM,CACJ,IAAI,EACJ,IAAI,EACL,GAAI,OAAO,CAAC,IAA8B,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrE,MAAM,QAAQ,GAA2C,IAAA,kCAAkB,EACzE,OAAO,EACP,OAAO,CAAC,OAAO,EACf,IAAI,EACJ,IAAI,EACJ,KAAK,CACN,CAAC;IACF,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;AACvE,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,YAAY,CAChC,OAAqB,EACrB,OAAY,EACZ,cAAyC;IAEzC,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IACzB,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,IAA6B,CAAC;IAClH,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAE5C,MAAM,QAAQ,GAAQ,IAAA,sBAAW,EAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAC1D,IAAI,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QAChD,kDAAkD;QAClD,IAAI,UAAU,GAA+B,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC1F,IAAI,OAAO,UAAU,KAAK,SAAS,EAAE,CAAC;YACpC,UAAU,GAAG,MAAM,UAAU,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,cAAc,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,MAAM,IAAI,QAAQ,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAA,sBAAW,EAAC,OAAO,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;QACpB,6EAA6E;QAC7E,OAAO,MAAM,CAAC;IAChB,CAAC;AACH,CAAC"}
@@ -32,5 +32,15 @@ export declare function parseMultipartBody(raw: Buffer, boundary: string): {
32
32
  files: MultipartFile[];
33
33
  };
34
34
  export declare function multipartBoundary(contentType: string): string | null;
35
+ /**
36
+ * V8 cannot build a string longer than buffer.constants.MAX_STRING_LENGTH (about 512 MB), and
37
+ * decoding more throws. A body decoded as text (JSON, XML, urlencoded, text) above it is refused
38
+ * with 413 while it arrives, even when maxBodySizeBytes is 0 or larger; so is a multipart text field.
39
+ * UTF-8 never decodes to more UTF-16 units than bytes, so a byte count is enough. Exported as an
40
+ * object so tests can lower it.
41
+ */
42
+ export declare const textLimits: {
43
+ maxBytes: number;
44
+ };
35
45
  export declare function bodyParser(req: IncomingMessage, res: OutgoingMessage, limit: number, acceptFiles?: boolean): Promise<any>;
36
46
  export {};
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.textLimits = void 0;
3
4
  exports.mediaType = mediaType;
4
5
  exports.isXmlContentType = isXmlContentType;
5
6
  exports.isJsonContentType = isJsonContentType;
@@ -7,6 +8,7 @@ exports.parsePartHeaders = parsePartHeaders;
7
8
  exports.parseMultipartBody = parseMultipartBody;
8
9
  exports.multipartBoundary = multipartBoundary;
9
10
  exports.bodyParser = bodyParser;
11
+ const buffer_1 = require("buffer");
10
12
  const _const_1 = require("../../constants/index.js");
11
13
  const stream_1 = require("stream");
12
14
  const xml_parser_1 = require("./xml-parser");
@@ -116,7 +118,28 @@ function multipartBoundary(contentType) {
116
118
  const match = /;\s*boundary=(?:"([^"]+)"|([^;\s]+))/i.exec(contentType || '');
117
119
  return match ? match[1] || match[2] : null;
118
120
  }
121
+ // chunks joined into a Buffer of exactly `size` bytes that nothing else shares (see the multipart branch)
122
+ function ownCopy(chunks, size) {
123
+ const copy = Buffer.allocUnsafeSlow(size);
124
+ let offset = 0;
125
+ for (const chunk of chunks) {
126
+ offset += chunk.copy(copy, offset);
127
+ }
128
+ return copy;
129
+ }
119
130
  const contentTooLarge = { statusCode: 413, message: 'Content Too Large' };
131
+ /**
132
+ * V8 cannot build a string longer than buffer.constants.MAX_STRING_LENGTH (about 512 MB), and
133
+ * decoding more throws. A body decoded as text (JSON, XML, urlencoded, text) above it is refused
134
+ * with 413 while it arrives, even when maxBodySizeBytes is 0 or larger; so is a multipart text field.
135
+ * UTF-8 never decodes to more UTF-16 units than bytes, so a byte count is enough. Exported as an
136
+ * object so tests can lower it.
137
+ */
138
+ exports.textLimits = { maxBytes: buffer_1.constants.MAX_STRING_LENGTH };
139
+ // an error thrown while a body is turned into request data: never left to crash the process
140
+ function toBodyError(e) {
141
+ return e?.code === 'ERR_STRING_TOO_LONG' ? contentTooLarge : e;
142
+ }
120
143
  /**
121
144
  * Stops buffering an oversized body. The rest of it is not read: the connection is
122
145
  * closed once the 413 response is sent, so the client cannot keep streaming into it.
@@ -128,10 +151,10 @@ function abortOversizedBody(req, res) {
128
151
  res.setHeader('Connection', 'close');
129
152
  }
130
153
  }
131
- function collectChunks(req, res, limit, received, reject) {
154
+ function collectChunks(req, res, limit, received, reject, textLimit = 0) {
132
155
  return (chunk) => {
133
156
  received.bytes += chunk.length;
134
- if (limit && received.bytes > limit) {
157
+ if ((limit && received.bytes > limit) || (textLimit && received.bytes > textLimit)) {
135
158
  abortOversizedBody(req, res);
136
159
  reject(contentTooLarge);
137
160
  return;
@@ -173,6 +196,9 @@ async function bodyParser(req, res, limit, acceptFiles = true) {
173
196
  // of it has arrived, the chunks so far are copied in and dropped, and the rest is copied as it
174
197
  // comes: about 1.5x at the peak. Waiting for half keeps a client from making the server allocate a
175
198
  // large body it never sends. Without a declared length (chunked encoding) the chunks are joined.
199
+ // Either way the Buffer is the request's own allocation (allocUnsafeSlow, never Node's shared pool,
200
+ // never a socket chunk that also holds the headers): file contents are views into it, so their
201
+ // `.buffer` must not reach memory outside this body.
176
202
  const declared = Number.isSafeInteger(declaredLength) && declaredLength > 0 ? declaredLength : 0;
177
203
  let whole;
178
204
  await new Promise((resolve, reject) => {
@@ -192,7 +218,15 @@ async function bodyParser(req, res, limit, acceptFiles = true) {
192
218
  }
193
219
  collect(chunk);
194
220
  if (declared && received.bytes * 2 >= declared && received.bytes <= declared) {
195
- whole = Buffer.allocUnsafe(declared);
221
+ try {
222
+ whole = Buffer.allocUnsafeSlow(declared);
223
+ }
224
+ catch {
225
+ // no memory for a body of the declared size
226
+ abortOversizedBody(req, res);
227
+ reject(contentTooLarge);
228
+ return;
229
+ }
196
230
  let offset = 0;
197
231
  for (const piece of received.chunks) {
198
232
  offset += piece.copy(whole, offset);
@@ -201,20 +235,22 @@ async function bodyParser(req, res, limit, acceptFiles = true) {
201
235
  }
202
236
  });
203
237
  req.once('error', onRequestError(reject));
204
- req.on('end', () => {
238
+ const readMultipart = () => {
205
239
  // one Buffer for the whole body; files are views into it, nothing is copied as a string
206
- const raw = whole
207
- ? whole.subarray(0, received.bytes)
208
- : received.chunks.length === 1
209
- ? received.chunks[0]
210
- : Buffer.concat(received.chunks, received.bytes);
240
+ const raw = whole ? whole.subarray(0, received.bytes) : ownCopy(received.chunks, received.bytes);
211
241
  received.chunks = [];
212
242
  // the latin1 ("binary") text of the body costs as much memory again: built only when read
213
243
  let rawBody;
214
244
  Object.defineProperty(result, 'rawBody', {
215
245
  enumerable: true,
216
246
  configurable: true,
217
- get: () => (rawBody ??= raw.toString('latin1')),
247
+ get: () => {
248
+ if (rawBody === undefined && raw.length > exports.textLimits.maxBytes) {
249
+ // too long for a string: a 413 for the handler that reads it, not a RangeError
250
+ throw Object.assign(new Error(contentTooLarge.message), { statusCode: contentTooLarge.statusCode });
251
+ }
252
+ return (rawBody ??= raw.toString('latin1'));
253
+ },
218
254
  });
219
255
  if (!boundary) {
220
256
  resolve();
@@ -224,6 +260,10 @@ async function bodyParser(req, res, limit, acceptFiles = true) {
224
260
  for (const [name, value,] of fields) {
225
261
  // same keys the JSON and urlencoded parsers drop (__proto__, constructor, ...)
226
262
  if (!_const_1.deprecatedJsonPropertiesRegExp.test(name)) {
263
+ if (value.length > exports.textLimits.maxBytes) {
264
+ reject(contentTooLarge);
265
+ return;
266
+ }
227
267
  result.body[name] = value.toString('utf8');
228
268
  }
229
269
  }
@@ -247,14 +287,22 @@ async function bodyParser(req, res, limit, acceptFiles = true) {
247
287
  }
248
288
  }
249
289
  resolve();
290
+ };
291
+ req.on('end', () => {
292
+ try {
293
+ readMultipart();
294
+ }
295
+ catch (e) {
296
+ reject(toBodyError(e));
297
+ }
250
298
  });
251
299
  });
252
300
  }
253
301
  else {
254
302
  await new Promise((resolve, reject) => {
255
- req.on('data', collectChunks(req, res, limit, received, reject));
303
+ req.on('data', collectChunks(req, res, limit, received, reject, exports.textLimits.maxBytes));
256
304
  req.once('error', onRequestError(reject));
257
- req.on('end', () => {
305
+ const readText = () => {
258
306
  body = concatChunks(received, 'utf8');
259
307
  result.rawBody = body;
260
308
  if (isJsonContentType(contentType) && !body) {
@@ -296,6 +344,14 @@ async function bodyParser(req, res, limit, acceptFiles = true) {
296
344
  result.body = body;
297
345
  resolve();
298
346
  }
347
+ };
348
+ req.on('end', () => {
349
+ try {
350
+ readText();
351
+ }
352
+ catch (e) {
353
+ reject(toBodyError(e));
354
+ }
299
355
  });
300
356
  });
301
357
  }
@@ -1 +1 @@
1
- {"version":3,"file":"body-parser.js","sourceRoot":"","sources":["../../../src/helpers/parser/body-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"body-parser.js","sourceRoot":"","sources":["../../../src/helpers/parser/body-parser.ts"],"names":[],"mappings":";;;AAWA,8BAEC;AAED,4CAGC;AAGD,8CAGC;AAgBD,4CASC;AAQD,gDAwEC;AAGD,8CAGC;AA0ED,gCAwLC;AAxYD,mCAAmC;AACnC,mCAAqE;AACrE,mCAAkC;AAElC,6CAAyC;AACzC,+CAA0D;AAC1D,uEAA6F;AAE7F,+GAA+G;AAC/G,sGAAsG;AACtG,SAAgB,SAAS,CAAC,WAA+B;IACvD,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAChE,CAAC;AAED,SAAgB,gBAAgB,CAAC,WAA+B;IAC9D,MAAM,IAAI,GAAW,SAAS,CAAC,WAAW,CAAC,CAAC;IAC5C,OAAO,IAAI,KAAK,oBAAW,CAAC,GAAG,IAAI,IAAI,KAAK,oBAAW,CAAC,QAAQ,IAAI,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChH,CAAC;AAED,qGAAqG;AACrG,SAAgB,iBAAiB,CAAC,WAA+B;IAC/D,MAAM,IAAI,GAAW,SAAS,CAAC,WAAW,CAAC,CAAC;IAC5C,OAAO,IAAI,KAAK,oBAAW,CAAC,IAAI,IAAI,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjF,CAAC;AAKD,MAAM,cAAc,GAAW,4BAA4B,CAAC;AAC5D,MAAM,kBAAkB,GAAW,gCAAgC,CAAC;AACpE,MAAM,qBAAqB,GAAW,6BAA6B,CAAC;AACpE,MAAM,IAAI,GAAW,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACzC,MAAM,WAAW,GAAW,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAEpD;;;;GAIG;AACH,SAAgB,gBAAgB,CAAC,OAAe;IAC9C,MAAM,IAAI,GAA2B,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClE,MAAM,QAAQ,GAA2B,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAA2B,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7E,OAAO;QACL,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;QAC9E,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;QACvC,QAAQ,EAAE,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;KACrE,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAgB,kBAAkB,CAChC,GAAW,EACX,QAAgB;IAUhB,MAAM,MAAM,GAKR,EAAE,CAAC;IACP,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,MAAM,YAAY,GAAW,MAAM,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;IAC1D,iFAAiF;IACjF,MAAM,SAAS,GAAW,MAAM,CAAC,IAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,CAAC;IAC3D,IAAI,QAAQ,GAAW,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACjD,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC3B,CAAC;IACD,QAAQ,IAAI,YAAY,CAAC,MAAM,CAAC;IAChC,SAAS,CAAC;QACR,2EAA2E;QAC3E,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;YACrD,MAAM;QACR,CAAC;QACD,4EAA4E;QAC5E,MAAM,OAAO,GAAW,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACpD,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;YACnB,MAAM;QACR,CAAC;QACD,MAAM,YAAY,GAAW,OAAO,GAAG,CAAC,CAAC;QACzC,MAAM,IAAI,GAAW,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAC1D,IAAI,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC;YAChB,MAAM;QACR,CAAC;QACD,sEAAsE;QACtE,MAAM,IAAI,GAAW,GAAG,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACtD,IAAI,UAAkB,CAAC;QACvB,IAAI,UAAkB,CAAC;QACvB,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;YACrC,iCAAiC;YACjC,UAAU,GAAG,CAAC,CAAC;YACf,UAAU,GAAG,CAAC,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YACvC,UAAU,GAAG,UAAU,GAAG,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;YACtB,MAAM,OAAO,GAAgB,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;YACtF,MAAM,KAAK,GAAW,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAChD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;oBAC9B,MAAM,CAAC,IAAI,CAAC;wBACV,OAAO,CAAC,IAAI;wBACZ,KAAK;qBACN,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,EAAE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;oBAC7E,2EAA2E;oBAC3E,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;gBACjF,CAAC;YACH,CAAC;QACH,CAAC;QACD,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC;IACrC,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAC3B,CAAC;AAED,+FAA+F;AAC/F,SAAgB,iBAAiB,CAAC,WAAmB;IACnD,MAAM,KAAK,GAA2B,uCAAuC,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IACtG,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC;AAID,0GAA0G;AAC1G,SAAS,OAAO,CAAC,MAAgB,EAAE,IAAY;IAC7C,MAAM,IAAI,GAAW,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,MAAM,GAAW,CAAC,CAAC;IACvB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,eAAe,GAAqB,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAE5F;;;;;;GAMG;AACU,QAAA,UAAU,GAAyB,EAAE,QAAQ,EAAE,kBAAS,CAAC,iBAAiB,EAAE,CAAC;AAE1F,4FAA4F;AAC5F,SAAS,WAAW,CAAC,CAAM;IACzB,OAAO,CAAC,EAAE,IAAI,KAAK,qBAAqB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CAAC,GAAoB,EAAE,GAAoB;IACpE,GAAG,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC/B,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QACrB,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CACpB,GAAoB,EACpB,GAAoB,EACpB,KAAa,EACb,QAAsB,EACtB,MAAyC,EACzC,YAAoB,CAAC;IAErB,OAAO,CAAC,KAAa,EAAE,EAAE;QACvB,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE,CAAC;YACnF,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC7B,MAAM,CAAC,eAAe,CAAC,CAAC;YACxB,OAAO;QACT,CAAC;QACD,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC,CAAC;AACJ,CAAC;AAED,4EAA4E;AAC5E,SAAS,cAAc,CAAC,MAAyC;IAC/D,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,YAAY,CAAC,QAAsB,EAAE,QAAwB;IACpE,sEAAsE;IACtE,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC3E,CAAC;AAEM,KAAK,UAAU,UAAU,CAC9B,GAAoB,EACpB,GAAoB,EACpB,KAAa,EACb,cAAuB,IAAI;IAE3B,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAChD,MAAM,MAAM,GAAQ;QAClB,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,EAAE;QACT,OAAO,EAAE,EAAE;KACZ,CAAC;IACF,IAAI,IAAI,GAAW,EAAE,CAAC;IACtB,MAAM,QAAQ,GAAiB,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IACxD,uEAAuE;IACvE,MAAM,cAAc,GAAW,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACrE,IAAI,KAAK,IAAI,cAAc,GAAG,KAAK,EAAE,CAAC;QACpC,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC7B,MAAM,eAAe,CAAC;IACxB,CAAC;IACD,MAAM,IAAI,GAAW,SAAS,CAAC,WAAW,CAAC,CAAC;IAC5C,IAAI,IAAI,KAAK,oBAAW,CAAC,SAAS,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAkB,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAW,CAAC,CAAC;QACzF,kGAAkG;QAClG,oGAAoG;QACpG,+FAA+F;QAC/F,mGAAmG;QACnG,iGAAiG;QACjG,oGAAoG;QACpG,+FAA+F;QAC/F,qDAAqD;QACrD,MAAM,QAAQ,GAAW,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QACzG,IAAI,KAAyB,CAAC;QAC9B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YACjE,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC/B,IAAI,KAAK,EAAE,CAAC;oBACV,IAAI,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;wBACjD,yFAAyF;wBACzF,GAAG,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;wBAC/B,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;wBAC9B,MAAM,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;wBACpD,OAAO;oBACT,CAAC;oBACD,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAClC,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC;oBAC/B,OAAO;gBACT,CAAC;gBACD,OAAO,CAAC,KAAK,CAAC,CAAC;gBACf,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,GAAG,CAAC,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,EAAE,CAAC;oBAC7E,IAAI,CAAC;wBACH,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;oBAC3C,CAAC;oBAAC,MAAM,CAAC;wBACP,4CAA4C;wBAC5C,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;wBAC7B,MAAM,CAAC,eAAe,CAAC,CAAC;wBACxB,OAAO;oBACT,CAAC;oBACD,IAAI,MAAM,GAAW,CAAC,CAAC;oBACvB,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;wBACpC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;oBACtC,CAAC;oBACD,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC;gBACvB,CAAC;YACH,CAAC,CAAC,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;YAC1C,MAAM,aAAa,GAAG,GAAS,EAAE;gBAC/B,wFAAwF;gBACxF,MAAM,GAAG,GAAW,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACzG,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC;gBACrB,0FAA0F;gBAC1F,IAAI,OAA2B,CAAC;gBAChC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE;oBACvC,UAAU,EAAE,IAAI;oBAChB,YAAY,EAAE,IAAI;oBAClB,GAAG,EAAE,GAAG,EAAE;wBACR,IAAI,OAAO,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,GAAG,kBAAU,CAAC,QAAQ,EAAE,CAAC;4BAC9D,+EAA+E;4BAC/E,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,EAAE,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;wBACtG,CAAC;wBACD,OAAO,CAAC,OAAO,KAAK,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAC9C,CAAC;iBACF,CAAC,CAAC;gBACH,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,OAAO,EAAE,CAAC;oBACV,OAAO;gBACT,CAAC;gBACD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,kBAAkB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBAC5D,KAAK,MAAM,CACT,IAAI,EACJ,KAAK,EACN,IAAI,MAAM,EAAE,CAAC;oBACZ,+EAA+E;oBAC/E,IAAI,CAAC,uCAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC/C,IAAI,KAAK,CAAC,MAAM,GAAG,kBAAU,CAAC,QAAQ,EAAE,CAAC;4BACvC,MAAM,CAAC,eAAe,CAAC,CAAC;4BACxB,OAAO;wBACT,CAAC;wBACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAC7C,CAAC;gBACH,CAAC;gBACD,IAAI,WAAW,EAAE,CAAC;oBAChB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;wBACzB,MAAM,GAAG,GAAW,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;wBACrC,gFAAgF;wBAChF,IAAI,uCAA8B,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;4BAC7C,SAAS;wBACX,CAAC;wBACD,MAAM,MAAM,GAAa,IAAI,iBAAQ,EAAE,CAAC;wBACxC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBAC1B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAClB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG;4BAClB,MAAM;4BACN,gEAAgE;4BAChE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;4BACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;yBACxB,CAAC;wBACF,kCAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,qCAAoB,CAAC,CAAC,CAAC;oBAC3F,CAAC;gBACH,CAAC;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC;YACF,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,IAAI,CAAC;oBACH,aAAa,EAAE,CAAC;gBAClB,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,kBAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;YACtF,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;YAC1C,MAAM,QAAQ,GAAG,GAAS,EAAE;gBAC1B,IAAI,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBACtC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;gBACtB,IAAI,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC5C,2FAA2F;oBAC3F,OAAO,EAAE,CAAC;gBACZ,CAAC;qBAAM,IAAI,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC1C,IAAI,CAAC;wBACH,MAAM,CAAC,IAAI,GAAG,IAAA,uBAAS,EAAC,IAAI,CAAwB,CAAC;wBACrD,OAAO,EAAE,CAAC;oBACZ,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,mEAAmE;wBACnE,MAAM,CAAC;4BACL,UAAU,EAAE,GAAG;4BACf,OAAO,EAAE,CAAC,YAAY,4BAAc,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,mBAAmB;yBAC/F,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;qBAAM,IAAI,IAAI,KAAK,oBAAW,CAAC,qBAAqB,EAAE,CAAC;oBACtD,gFAAgF;oBAChF,KAAK,MAAM,CACT,GAAG,EACH,KAAK,EACN,IAAI,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC/B,IAAI,GAAG,IAAI,CAAC,uCAA8B,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;4BACrD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;wBAC3B,CAAC;oBACH,CAAC;oBACD,OAAO,EAAE,CAAC;gBACZ,CAAC;qBAAM,IAAI,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC;oBACzC,IAAI,CAAC;wBACH,MAAM,CAAC,IAAI,GAAG,IAAA,sBAAS,EAAC,IAAI,CAAC,CAAC;wBAC9B,OAAO,EAAE,CAAC;oBACZ,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,MAAM,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,qBAAqB,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;oBACzE,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;oBACnB,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC,CAAC;YACF,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,IAAI,CAAC;oBACH,QAAQ,EAAE,CAAC;gBACb,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export * from './validate-context';
2
2
  export * from './validate-request-files';
3
3
  export * from './validate-request-part';
4
+ export * from './request-input';
@@ -17,4 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./validate-context"), exports);
18
18
  __exportStar(require("./validate-request-files"), exports);
19
19
  __exportStar(require("./validate-request-part"), exports);
20
+ __exportStar(require("./request-input"), exports);
20
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/helpers/validate/context/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,2DAAyC;AACzC,0DAAwC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/helpers/validate/context/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,2DAAyC;AACzC,0DAAwC;AACxC,kDAAgC"}
@@ -0,0 +1,21 @@
1
+ import { ContextRequest, PropertyDefinition } from '../../../dto/index.js';
2
+ /**
3
+ * The value a declared validator sees. Query and path values are strings: a number()/bigint()
4
+ * validator gets them converted (`numeric` tells the caller to store the converted value). An
5
+ * isJSON field gets the parsed JSON, from the same parser as JSON bodies, so a field such as
6
+ * {"__proto__":{...}} never reaches a validator or a transform with an own __proto__ key.
7
+ */
8
+ export declare function validatorInput(key: string, definition: PropertyDefinition, raw: unknown): {
9
+ value: unknown;
10
+ numeric: boolean;
11
+ };
12
+ /** Whether request[key][property] still holds a value its declared validator accepted earlier. */
13
+ export declare function isPrevalidated(request: any, key: string, property: string, raw: unknown): boolean;
14
+ /**
15
+ * Runs the validator declared for request[key][property] ahead of request validation (for the auth
16
+ * input and access-control inputs, which are read before it). `undefined` when no validator is
17
+ * declared. An accepted value is remembered, so request validation does not run the validator
18
+ * again for it (a slow or side-effecting validator runs once per request). Synchronous unless the
19
+ * validator returns a promise.
20
+ */
21
+ export declare function checkDeclaredInput(request: any, definitions: ContextRequest | undefined, key: string, property: string, raw: unknown): boolean | undefined | Promise<boolean>;
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validatorInput = validatorInput;
4
+ exports.isPrevalidated = isPrevalidated;
5
+ exports.checkDeclaredInput = checkDeclaredInput;
6
+ const json_parser_1 = require("../../parser/json-parser");
7
+ const numeric_input_1 = require("../built-in/numeric-input");
8
+ /**
9
+ * The value a declared validator sees. Query and path values are strings: a number()/bigint()
10
+ * validator gets them converted (`numeric` tells the caller to store the converted value). An
11
+ * isJSON field gets the parsed JSON, from the same parser as JSON bodies, so a field such as
12
+ * {"__proto__":{...}} never reaches a validator or a transform with an own __proto__ key.
13
+ */
14
+ function validatorInput(key, definition, raw) {
15
+ let value = raw;
16
+ let numeric = false;
17
+ const numericType = definition.validation?.handler?.[numeric_input_1.numericInput];
18
+ if (numericType && (key === 'query' || key === 'path') && typeof value === 'string') {
19
+ value = (0, numeric_input_1.toNumericInput)(numericType, value);
20
+ numeric = typeof value !== 'string';
21
+ }
22
+ if (definition.isJSON && typeof value === 'string') {
23
+ try {
24
+ value = (0, json_parser_1.parseJson)(value);
25
+ }
26
+ catch {
27
+ // the validator gets the raw string
28
+ }
29
+ }
30
+ return { value, numeric };
31
+ }
32
+ // "<part>.<name>" -> the raw value that already passed its declared validator, kept on the request
33
+ // itself (not in a WeakMap: an entry per short-lived request is costly for the garbage collector)
34
+ const PREVALIDATED = Symbol('alado.prevalidated');
35
+ function isThenable(value) {
36
+ return value !== null && typeof value === 'object' && typeof value.then === 'function';
37
+ }
38
+ /** Whether request[key][property] still holds a value its declared validator accepted earlier. */
39
+ function isPrevalidated(request, key, property, raw) {
40
+ const values = request[PREVALIDATED];
41
+ return values !== undefined && raw !== undefined && values[`${key}.${property}`] === raw;
42
+ }
43
+ function remember(request, key, property, raw) {
44
+ let values = request[PREVALIDATED];
45
+ if (values === undefined) {
46
+ values = Object.create(null);
47
+ Object.defineProperty(request, PREVALIDATED, { value: values });
48
+ }
49
+ values[`${key}.${property}`] = raw;
50
+ return true;
51
+ }
52
+ /**
53
+ * Runs the validator declared for request[key][property] ahead of request validation (for the auth
54
+ * input and access-control inputs, which are read before it). `undefined` when no validator is
55
+ * declared. An accepted value is remembered, so request validation does not run the validator
56
+ * again for it (a slow or side-effecting validator runs once per request). Synchronous unless the
57
+ * validator returns a promise.
58
+ */
59
+ function checkDeclaredInput(request, definitions, key, property, raw) {
60
+ const definition = definitions?.[key]?.[property];
61
+ const handler = definition?.validation?.handler;
62
+ if (typeof handler !== 'function') {
63
+ return undefined;
64
+ }
65
+ let result;
66
+ try {
67
+ result = handler.apply(request, [validatorInput(key, definition, raw).value]);
68
+ }
69
+ catch {
70
+ return false;
71
+ }
72
+ if (isThenable(result)) {
73
+ return Promise.resolve(result).then((ok) => (ok ? remember(request, key, property, raw) : false), () => false);
74
+ }
75
+ return result ? remember(request, key, property, raw) : false;
76
+ }
77
+ //# sourceMappingURL=request-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-input.js","sourceRoot":"","sources":["../../../../src/helpers/validate/context/request-input.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.validateRequestPart = validateRequestPart;
4
- const json_parser_1 = require("../../parser/json-parser");
5
- const numeric_input_1 = require("../built-in/numeric-input");
4
+ const request_input_1 = require("./request-input");
6
5
  const nonProcessingRequestParts = new Set([
7
6
  'files',
8
7
  'auth',
@@ -48,7 +47,7 @@ function validateRequestPart(key, context, request) {
48
47
  * when the validation handler or the transform does, so plain validators cost no microtasks.
49
48
  */
50
49
  function validateProperty(key, property, definition, request) {
51
- const { validation, transform, isJSON } = definition;
50
+ const { validation, transform } = definition;
52
51
  const { required, handler, error } = validation;
53
52
  const part = request[key];
54
53
  const present = hasOwn(part, property);
@@ -58,25 +57,15 @@ function validateProperty(key, property, definition, request) {
58
57
  if (!handler || !present) {
59
58
  return;
60
59
  }
61
- let value = part[property];
60
+ const raw = part[property];
61
+ // already accepted by its validator before authentication / access control: not run twice
62
+ const accepted = (0, request_input_1.isPrevalidated)(request, key, property, raw);
62
63
  // query and path values are strings: a number()/bigint() validator gets them converted, and so
63
64
  // does the handler. A value that is not a well-formed number stays a string and fails validation.
64
- const numericType = handler[numeric_input_1.numericInput];
65
- if (numericType && (key === 'query' || key === 'path') && typeof value === 'string') {
66
- value = (0, numeric_input_1.toNumericInput)(numericType, value);
67
- if (typeof value !== 'string') {
68
- part[property] = value;
69
- }
70
- }
71
- if (isJSON && typeof value === 'string') {
72
- try {
73
- // same parser as JSON bodies: a field such as {"__proto__":{...}} must not reach the
74
- // validator or a transform with an own __proto__ key
75
- value = (0, json_parser_1.parseJson)(value);
76
- }
77
- catch {
78
- // keep the raw string
79
- }
65
+ const input = (0, request_input_1.validatorInput)(key, definition, raw);
66
+ const value = input.value;
67
+ if (input.numeric) {
68
+ part[property] = value;
80
69
  }
81
70
  // the configured error, never the exception text (it may describe internals)
82
71
  const fail = () => error;
@@ -93,6 +82,9 @@ function validateProperty(key, property, definition, request) {
93
82
  }
94
83
  request[key][property] = transformed;
95
84
  };
85
+ if (accepted) {
86
+ return applyTransform();
87
+ }
96
88
  try {
97
89
  const isValid = handler.apply(request, [value]);
98
90
  if (isThenable(isValid)) {
@@ -1 +1 @@
1
- {"version":3,"file":"validate-request-part.js","sourceRoot":"","sources":["../../../../src/helpers/validate/context/validate-request-part.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate-request-part.js","sourceRoot":"","sources":["../../../../src/helpers/validate/context/validate-request-part.ts"],"names":[],"mappings":"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"}
@@ -5,8 +5,8 @@ import { CorsOptions } from './cors-options';
5
5
  import { SecureContextOptions } from 'tls';
6
6
  export type AladoServerOptions = {
7
7
  port: number;
8
- cors: CorsOptions;
9
- openApiDoc: OpenApiDoc;
8
+ cors?: CorsOptions;
9
+ openApiDoc?: OpenApiDoc;
10
10
  headers?: Record<string, string>;
11
11
  serverOptions?: ServerOptions;
12
12
  host?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "alado",
3
- "version": "3.7.4",
3
+ "version": "3.7.9",
4
4
  "description": "Fast, lightweight, robust framework for HTTP applications written in Node.js",
5
5
  "keywords": [
6
6
  "HTTP",