alado 3.7.8 → 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
@@ -1217,7 +1217,7 @@ Documentation is built from:
1217
1217
  | `appId` | `string` | — | App identifier for multi-app setups |
1218
1218
  | `logger` | `AladoServerLogger` | — | Custom logger |
1219
1219
  | `ssl` | `SecureContextOptions` | — | TLS/HTTPS options |
1220
- | `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 |
1221
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 |
1222
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 |
1223
1223
 
@@ -19,13 +19,13 @@ const clientParts = new Set([
19
19
  * other request value has to be a plain string, number, boolean or bigint. Missing values are left
20
20
  * to the rule (a comparison with a missing value already denies access).
21
21
  */
22
- async function isValidRuleInput(context, request, path, value) {
22
+ function isValidRuleInput(context, request, path, value) {
23
23
  const segments = path.split('.');
24
24
  if (!clientParts.has(segments[0]) || isMissing(value)) {
25
25
  return true;
26
26
  }
27
27
  if (segments.length === 2) {
28
- const declared = await (0, request_input_1.checkDeclaredInput)(request, context.request, segments[0], segments[1], value);
28
+ const declared = (0, request_input_1.checkDeclaredInput)(request, context.request, segments[0], segments[1], value);
29
29
  if (declared !== undefined) {
30
30
  return declared;
31
31
  }
@@ -43,7 +43,12 @@ async function accessControlChecker(context, request) {
43
43
  for (const item of accessControl) {
44
44
  const { inputProperty, transformInputProperty, statusCode, message, compareWithProperty, expectedValue, accessControlHandler, } = item;
45
45
  const rawValue = (0, accessor_1.getProperty)(request, inputProperty);
46
- if (!(await isValidRuleInput(context, request, inputProperty, rawValue))) {
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) {
47
52
  return { statusCode, message };
48
53
  }
49
54
  let providedValue = rawValue;
@@ -1 +1 @@
1
- {"version":3,"file":"access-control-checker.js","sourceRoot":"","sources":["../../../src/helpers/parser/access-control-checker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"access-control-checker.js","sourceRoot":"","sources":["../../../src/helpers/parser/access-control-checker.ts"],"names":[],"mappings":"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"}
@@ -10,9 +10,9 @@ const request_input_1 = require("../validate/context/request-input");
10
10
  * With a validator declared for the field (context.request.<part>.<name>) that validator decides,
11
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 declared = await (0, request_input_1.checkDeclaredInput)(request, context.request, part, name, value);
15
+ const declared = (0, request_input_1.checkDeclaredInput)(request, context.request, part, name, value);
16
16
  return declared === undefined ? typeof value === 'string' : declared;
17
17
  }
18
18
  /**
@@ -29,8 +29,15 @@ async function authenticate(context, request, onHandlerError) {
29
29
  if (required && !authData) {
30
30
  return error;
31
31
  }
32
- if (authData !== undefined && authData !== null && !(await isValidAuthInput(context, request, authData))) {
33
- 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
+ }
34
41
  }
35
42
  try {
36
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":";;AA0BA,oCA2BC;AApDD,0CAAuD;AACvD,qEAAuE;AAEvE;;;;;;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,QAAQ,GAAwB,MAAM,IAAA,kCAAkB,EAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5G,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,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");
@@ -126,6 +128,18 @@ function ownCopy(chunks, size) {
126
128
  return copy;
127
129
  }
128
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
+ }
129
143
  /**
130
144
  * Stops buffering an oversized body. The rest of it is not read: the connection is
131
145
  * closed once the 413 response is sent, so the client cannot keep streaming into it.
@@ -137,10 +151,10 @@ function abortOversizedBody(req, res) {
137
151
  res.setHeader('Connection', 'close');
138
152
  }
139
153
  }
140
- function collectChunks(req, res, limit, received, reject) {
154
+ function collectChunks(req, res, limit, received, reject, textLimit = 0) {
141
155
  return (chunk) => {
142
156
  received.bytes += chunk.length;
143
- if (limit && received.bytes > limit) {
157
+ if ((limit && received.bytes > limit) || (textLimit && received.bytes > textLimit)) {
144
158
  abortOversizedBody(req, res);
145
159
  reject(contentTooLarge);
146
160
  return;
@@ -204,7 +218,15 @@ async function bodyParser(req, res, limit, acceptFiles = true) {
204
218
  }
205
219
  collect(chunk);
206
220
  if (declared && received.bytes * 2 >= declared && received.bytes <= declared) {
207
- whole = Buffer.allocUnsafeSlow(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
+ }
208
230
  let offset = 0;
209
231
  for (const piece of received.chunks) {
210
232
  offset += piece.copy(whole, offset);
@@ -213,7 +235,7 @@ async function bodyParser(req, res, limit, acceptFiles = true) {
213
235
  }
214
236
  });
215
237
  req.once('error', onRequestError(reject));
216
- req.on('end', () => {
238
+ const readMultipart = () => {
217
239
  // one Buffer for the whole body; files are views into it, nothing is copied as a string
218
240
  const raw = whole ? whole.subarray(0, received.bytes) : ownCopy(received.chunks, received.bytes);
219
241
  received.chunks = [];
@@ -222,7 +244,13 @@ async function bodyParser(req, res, limit, acceptFiles = true) {
222
244
  Object.defineProperty(result, 'rawBody', {
223
245
  enumerable: true,
224
246
  configurable: true,
225
- 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
+ },
226
254
  });
227
255
  if (!boundary) {
228
256
  resolve();
@@ -232,6 +260,10 @@ async function bodyParser(req, res, limit, acceptFiles = true) {
232
260
  for (const [name, value,] of fields) {
233
261
  // same keys the JSON and urlencoded parsers drop (__proto__, constructor, ...)
234
262
  if (!_const_1.deprecatedJsonPropertiesRegExp.test(name)) {
263
+ if (value.length > exports.textLimits.maxBytes) {
264
+ reject(contentTooLarge);
265
+ return;
266
+ }
235
267
  result.body[name] = value.toString('utf8');
236
268
  }
237
269
  }
@@ -255,14 +287,22 @@ async function bodyParser(req, res, limit, acceptFiles = true) {
255
287
  }
256
288
  }
257
289
  resolve();
290
+ };
291
+ req.on('end', () => {
292
+ try {
293
+ readMultipart();
294
+ }
295
+ catch (e) {
296
+ reject(toBodyError(e));
297
+ }
258
298
  });
259
299
  });
260
300
  }
261
301
  else {
262
302
  await new Promise((resolve, reject) => {
263
- req.on('data', collectChunks(req, res, limit, received, reject));
303
+ req.on('data', collectChunks(req, res, limit, received, reject, exports.textLimits.maxBytes));
264
304
  req.once('error', onRequestError(reject));
265
- req.on('end', () => {
305
+ const readText = () => {
266
306
  body = concatChunks(received, 'utf8');
267
307
  result.rawBody = body;
268
308
  if (isJsonContentType(contentType) && !body) {
@@ -304,6 +344,14 @@ async function bodyParser(req, res, limit, acceptFiles = true) {
304
344
  result.body = body;
305
345
  resolve();
306
346
  }
347
+ };
348
+ req.on('end', () => {
349
+ try {
350
+ readText();
351
+ }
352
+ catch (e) {
353
+ reject(toBodyError(e));
354
+ }
307
355
  });
308
356
  });
309
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":"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"}
@@ -10,11 +10,12 @@ export declare function validatorInput(key: string, definition: PropertyDefiniti
10
10
  numeric: boolean;
11
11
  };
12
12
  /** Whether request[key][property] still holds a value its declared validator accepted earlier. */
13
- export declare function isPrevalidated(request: object, key: string, property: string, raw: unknown): boolean;
13
+ export declare function isPrevalidated(request: any, key: string, property: string, raw: unknown): boolean;
14
14
  /**
15
15
  * Runs the validator declared for request[key][property] ahead of request validation (for the auth
16
16
  * input and access-control inputs, which are read before it). `undefined` when no validator is
17
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).
18
+ * again for it (a slow or side-effecting validator runs once per request). Synchronous unless the
19
+ * validator returns a promise.
19
20
  */
20
- export declare function checkDeclaredInput(request: any, definitions: ContextRequest | undefined, key: string, property: string, raw: unknown): Promise<boolean | undefined>;
21
+ export declare function checkDeclaredInput(request: any, definitions: ContextRequest | undefined, key: string, property: string, raw: unknown): boolean | undefined | Promise<boolean>;
@@ -29,40 +29,49 @@ function validatorInput(key, definition, raw) {
29
29
  }
30
30
  return { value, numeric };
31
31
  }
32
- // request -> "<part>.<name>" -> the raw value that already passed its declared validator
33
- const prevalidated = new WeakMap();
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
+ }
34
38
  /** Whether request[key][property] still holds a value its declared validator accepted earlier. */
35
39
  function isPrevalidated(request, key, property, raw) {
36
- const values = prevalidated.get(request);
37
- return values !== undefined && values.has(`${key}.${property}`) && values.get(`${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;
38
51
  }
39
52
  /**
40
53
  * Runs the validator declared for request[key][property] ahead of request validation (for the auth
41
54
  * input and access-control inputs, which are read before it). `undefined` when no validator is
42
55
  * declared. An accepted value is remembered, so request validation does not run the validator
43
- * again for it (a slow or side-effecting validator runs once per request).
56
+ * again for it (a slow or side-effecting validator runs once per request). Synchronous unless the
57
+ * validator returns a promise.
44
58
  */
45
- async function checkDeclaredInput(request, definitions, key, property, raw) {
59
+ function checkDeclaredInput(request, definitions, key, property, raw) {
46
60
  const definition = definitions?.[key]?.[property];
47
61
  const handler = definition?.validation?.handler;
48
62
  if (typeof handler !== 'function') {
49
63
  return undefined;
50
64
  }
51
- let valid;
65
+ let result;
52
66
  try {
53
- valid = Boolean(await handler.apply(request, [validatorInput(key, definition, raw).value]));
67
+ result = handler.apply(request, [validatorInput(key, definition, raw).value]);
54
68
  }
55
69
  catch {
56
- valid = false;
70
+ return false;
57
71
  }
58
- if (valid) {
59
- let values = prevalidated.get(request);
60
- if (!values) {
61
- values = new Map();
62
- prevalidated.set(request, values);
63
- }
64
- values.set(`${key}.${property}`, raw);
72
+ if (isThenable(result)) {
73
+ return Promise.resolve(result).then((ok) => (ok ? remember(request, key, property, raw) : false), () => false);
65
74
  }
66
- return valid;
75
+ return result ? remember(request, key, property, raw) : false;
67
76
  }
68
77
  //# sourceMappingURL=request-input.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"request-input.js","sourceRoot":"","sources":["../../../../src/helpers/validate/context/request-input.ts"],"names":[],"mappings":";;AAUA,wCAoBC;AAMD,wCAGC;AAQD,gDA2BC;AAzED,0DAAqD;AACrD,6DAA2F;AAE3F;;;;;GAKG;AACH,SAAgB,cAAc,CAC5B,GAAW,EACX,UAA8B,EAC9B,GAAY;IAEZ,IAAI,KAAK,GAAY,GAAG,CAAC;IACzB,IAAI,OAAO,GAAY,KAAK,CAAC;IAC7B,MAAM,WAAW,GAAkC,UAAU,CAAC,UAAU,EAAE,OAAe,EAAE,CAAC,4BAAY,CAAC,CAAC;IAC1G,IAAI,WAAW,IAAI,CAAC,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,MAAM,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACpF,KAAK,GAAG,IAAA,8BAAc,EAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAC3C,OAAO,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC;IACtC,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACnD,IAAI,CAAC;YACH,KAAK,GAAG,IAAA,uBAAS,EAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,oCAAoC;QACtC,CAAC;IACH,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5B,CAAC;AAED,yFAAyF;AACzF,MAAM,YAAY,GAA0C,IAAI,OAAO,EAAE,CAAC;AAE1E,kGAAkG;AAClG,SAAgB,cAAc,CAAC,OAAe,EAAE,GAAW,EAAE,QAAgB,EAAE,GAAY;IACzF,MAAM,MAAM,GAAqC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3E,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,QAAQ,EAAE,CAAC,KAAK,GAAG,CAAC;AAC9G,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,kBAAkB,CACtC,OAAY,EACZ,WAAuC,EACvC,GAAW,EACX,QAAgB,EAChB,GAAY;IAEZ,MAAM,UAAU,GAAoC,WAAmB,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;IAC3F,MAAM,OAAO,GAAG,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC;IAChD,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,KAAc,CAAC;IACnB,IAAI,CAAC;QACH,KAAK,GAAG,OAAO,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,UAAgC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACpH,CAAC;IAAC,MAAM,CAAC;QACP,KAAK,GAAG,KAAK,CAAC;IAChB,CAAC;IACD,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,MAAM,GAAqC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;YACnB,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"request-input.js","sourceRoot":"","sources":["../../../../src/helpers/validate/context/request-input.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "alado",
3
- "version": "3.7.8",
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",