alado 2.8.3 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/decorators/access-control.js +2 -1
  2. package/dist/decorators/access-control.js.map +1 -1
  3. package/dist/decorators/class-key.d.ts +4 -0
  4. package/dist/decorators/class-key.js +23 -0
  5. package/dist/decorators/class-key.js.map +1 -0
  6. package/dist/decorators/controller-instances.d.ts +1 -0
  7. package/dist/decorators/controller-instances.js +8 -0
  8. package/dist/decorators/controller-instances.js.map +1 -0
  9. package/dist/decorators/define-request.js +4 -2
  10. package/dist/decorators/define-request.js.map +1 -1
  11. package/dist/decorators/define-response.js +2 -1
  12. package/dist/decorators/define-response.js.map +1 -1
  13. package/dist/decorators/document-property.js +2 -1
  14. package/dist/decorators/document-property.js.map +1 -1
  15. package/dist/decorators/file-upload-property.js +2 -1
  16. package/dist/decorators/file-upload-property.js.map +1 -1
  17. package/dist/decorators/http.js +7 -2
  18. package/dist/decorators/http.js.map +1 -1
  19. package/dist/decorators/initialize-application.js +2 -1
  20. package/dist/decorators/initialize-application.js.map +1 -1
  21. package/dist/decorators/transform-property.js +2 -1
  22. package/dist/decorators/transform-property.js.map +1 -1
  23. package/dist/decorators/validate-property.js +2 -1
  24. package/dist/decorators/validate-property.js.map +1 -1
  25. package/dist/decorators/with-auth.js +2 -1
  26. package/dist/decorators/with-auth.js.map +1 -1
  27. package/dist/factory/open-api-doc-factory.js +1 -1
  28. package/dist/factory/open-api-doc-factory.js.map +1 -1
  29. package/dist/helpers/accessor/get-property.d.ts +4 -0
  30. package/dist/helpers/accessor/get-property.js +15 -2
  31. package/dist/helpers/accessor/get-property.js.map +1 -1
  32. package/dist/helpers/parser/authenticate.js +4 -6
  33. package/dist/helpers/parser/authenticate.js.map +1 -1
  34. package/dist/helpers/parser/body-parser.d.ts +1 -0
  35. package/dist/helpers/parser/body-parser.js +22 -8
  36. package/dist/helpers/parser/body-parser.js.map +1 -1
  37. package/dist/helpers/parser/query-parser.d.ts +5 -0
  38. package/dist/helpers/parser/query-parser.js +51 -22
  39. package/dist/helpers/parser/query-parser.js.map +1 -1
  40. package/dist/helpers/parser/xml-parser.js +25 -5
  41. package/dist/helpers/parser/xml-parser.js.map +1 -1
  42. package/dist/helpers/validate/built-in/validator.d.ts +2 -0
  43. package/dist/helpers/validate/built-in/validator.js +49 -7
  44. package/dist/helpers/validate/built-in/validator.js.map +1 -1
  45. package/dist/helpers/validate/context/validate-request-part.js +3 -5
  46. package/dist/helpers/validate/context/validate-request-part.js.map +1 -1
  47. package/dist/request-processor/request-processor.d.ts +13 -0
  48. package/dist/request-processor/request-processor.js +103 -48
  49. package/dist/request-processor/request-processor.js.map +1 -1
  50. package/dist/router/router.d.ts +10 -0
  51. package/dist/router/router.js +35 -13
  52. package/dist/router/router.js.map +1 -1
  53. package/package.json +6 -4
@@ -1,31 +1,60 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.queryParser = queryParser;
4
+ const unsafeKeys = new Set([
5
+ '__proto__',
6
+ 'constructor',
7
+ 'prototype',
8
+ ]);
9
+ function decodeComponent(value) {
10
+ try {
11
+ // query strings encode spaces as '+' (application/x-www-form-urlencoded)
12
+ return decodeURIComponent(value.replace(/\+/g, ' '));
13
+ }
14
+ catch {
15
+ throw Object.assign(new Error('Malformed query string'), { statusCode: 400 });
16
+ }
17
+ }
18
+ /**
19
+ * Splits on '&' and the first '=' BEFORE decoding, so encoded '&' / '=' stay
20
+ * inside values. Keys without a value are skipped (as before); `key[]` and
21
+ * repeated keys produce arrays. Malformed percent-encoding throws a 400 error.
22
+ */
4
23
  function queryParser(queryString) {
5
24
  const query = {};
6
- if (queryString) {
7
- decodeURIComponent(queryString)
8
- .split('&')
9
- .forEach((part) => {
10
- const [key, value,] = part.split('=');
11
- if (key && value) {
12
- const transformedValue = decodeURIComponent(value).replace(/[\n\s]/g, '');
13
- if (/\w+\[\]$/.test(key)) {
14
- const k = key.replace(/\[\]$/, '');
15
- query[k] = query[k] || [];
16
- query[k].push(transformedValue);
17
- }
18
- else if (key in query) {
19
- if (!Array.isArray(query[key])) {
20
- query[key] = [query[key]];
21
- }
22
- query[key].push(transformedValue);
23
- }
24
- else {
25
- query[key] = transformedValue;
26
- }
25
+ if (!queryString) {
26
+ return query;
27
+ }
28
+ for (const part of queryString.split('&')) {
29
+ const separator = part.indexOf('=');
30
+ if (separator <= 0) {
31
+ continue;
32
+ }
33
+ const key = decodeComponent(part.slice(0, separator));
34
+ const value = decodeComponent(part.slice(separator + 1));
35
+ if (!key || !value) {
36
+ continue;
37
+ }
38
+ if (/\w+\[\]$/.test(key)) {
39
+ const k = key.replace(/\[\]$/, '');
40
+ if (unsafeKeys.has(k)) {
41
+ continue;
42
+ }
43
+ query[k] = Array.isArray(query[k]) ? query[k] : [];
44
+ query[k].push(value);
45
+ }
46
+ else if (unsafeKeys.has(key)) {
47
+ continue;
48
+ }
49
+ else if (Object.prototype.hasOwnProperty.call(query, key)) {
50
+ if (!Array.isArray(query[key])) {
51
+ query[key] = [query[key]];
27
52
  }
28
- });
53
+ query[key].push(value);
54
+ }
55
+ else {
56
+ query[key] = value;
57
+ }
29
58
  }
30
59
  return query;
31
60
  }
@@ -1 +1 @@
1
- {"version":3,"file":"query-parser.js","sourceRoot":"","sources":["../../../src/helpers/parser/query-parser.ts"],"names":[],"mappings":";;AAAA,kCA4BC;AA5BD,SAAgB,WAAW,CAAC,WAAmB;IAC7C,MAAM,KAAK,GAAwB,EAAE,CAAC;IACtC,IAAI,WAAW,EAAE,CAAC;QAChB,kBAAkB,CAAC,WAAW,CAAC;aAC5B,KAAK,CAAC,GAAG,CAAC;aACV,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YAChB,MAAM,CACJ,GAAG,EACH,KAAK,EACN,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACpB,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;gBACjB,MAAM,gBAAgB,GAAW,kBAAkB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;gBAClF,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBACzB,MAAM,CAAC,GAAW,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;oBAC3C,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC1B,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAClC,CAAC;qBAAM,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;oBACxB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;wBAC/B,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC5B,CAAC;oBACD,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBACpC,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACP,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"query-parser.js","sourceRoot":"","sources":["../../../src/helpers/parser/query-parser.ts"],"names":[],"mappings":";;AAsBA,kCAkCC;AAtDD,MAAM,UAAU,GAAgB,IAAI,GAAG,CAAC;IACtC,WAAW;IACX,aAAa;IACb,WAAW;CACZ,CAAC,CAAC;AAEH,SAAS,eAAe,CAAC,KAAa;IACpC,IAAI,CAAC;QACH,yEAAyE;QACzE,OAAO,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,EAAsB,CAAC,CAAC;IACpG,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAgB,WAAW,CAAC,WAAmB;IAC7C,MAAM,KAAK,GAAwB,EAAE,CAAC;IACtC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAW,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;YACnB,SAAS;QACX,CAAC;QACD,MAAM,GAAG,GAAW,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAW,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YACnB,SAAS;QACX,CAAC;QACD,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,GAAW,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC3C,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtB,SAAS;YACX,CAAC;YACD,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;aAAM,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,SAAS;QACX,CAAC;aAAM,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;YAC5D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC/B,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5B,CAAC;YACD,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,6 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.xmlParser = xmlParser;
4
+ // Same keys the JSON body parser drops: assigning them on a plain object can
5
+ // replace its prototype (__proto__) or shadow built-ins.
6
+ const unsafeKeys = new Set([
7
+ '__proto__',
8
+ 'constructor',
9
+ 'prototype',
10
+ ]);
4
11
  function xmlParser(xmlInput) {
5
12
  let xml = xmlInput;
6
13
  let pos = 0;
@@ -23,7 +30,9 @@ function xmlParser(xmlInput) {
23
30
  while (match !== null) {
24
31
  const name = match[1] || match[3];
25
32
  const value = match[2] !== undefined ? match[2] : match[4];
26
- attrs[name] = decodeEntities(value);
33
+ if (!unsafeKeys.has(name)) {
34
+ attrs[name] = decodeEntities(value);
35
+ }
27
36
  match = attrRegex.exec(tagContent);
28
37
  }
29
38
  return attrs;
@@ -68,6 +77,9 @@ function xmlParser(xmlInput) {
68
77
  return { localName, namespaceUri };
69
78
  }
70
79
  function addChild(parent, key, value) {
80
+ if (unsafeKeys.has(key)) {
81
+ return;
82
+ }
71
83
  if (Object.prototype.hasOwnProperty.call(parent, key)) {
72
84
  const existing = parent[key];
73
85
  if (Array.isArray(existing)) {
@@ -115,11 +127,13 @@ function xmlParser(xmlInput) {
115
127
  const children = {};
116
128
  let textContent = '';
117
129
  let sawChildElement = false;
130
+ let closed = false;
118
131
  while (pos < xml.length) {
119
132
  skipWhitespace();
120
- const closeMatch = new RegExp(`^</${rawTagName}\\s*>`).exec(xml.slice(pos));
133
+ const closeMatch = new RegExp(`^</${rawTagName.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}\\s*>`).exec(xml.slice(pos));
121
134
  if (closeMatch) {
122
135
  pos += closeMatch[0].length;
136
+ closed = true;
123
137
  break;
124
138
  }
125
139
  if (xml[pos] === '<') {
@@ -128,6 +142,7 @@ function xmlParser(xmlInput) {
128
142
  if (end === -1) {
129
143
  throw new Error('Unterminated CDATA section');
130
144
  }
145
+ // CDATA is literal: no entity decoding
131
146
  textContent += xml.slice(pos + 9, end);
132
147
  pos = end + 3;
133
148
  continue;
@@ -142,11 +157,14 @@ function xmlParser(xmlInput) {
142
157
  else {
143
158
  const nextTag = xml.indexOf('<', pos);
144
159
  const end = nextTag === -1 ? xml.length : nextTag;
145
- textContent += xml.slice(pos, end);
160
+ textContent += decodeEntities(xml.slice(pos, end));
146
161
  pos = end;
147
162
  }
148
163
  }
149
- const trimmedText = decodeEntities(textContent.trim());
164
+ if (!closed) {
165
+ throw new Error(`Unclosed element <${rawTagName}>`);
166
+ }
167
+ const trimmedText = textContent.trim();
150
168
  if (sawChildElement) {
151
169
  children['@ns'] = namespaceUri;
152
170
  if (hasAttrs) {
@@ -182,7 +200,9 @@ function xmlParser(xmlInput) {
182
200
  const rootElement = parseElement(rootScope);
183
201
  if (rootElement) {
184
202
  const [rootName, rootValue,] = rootElement;
185
- root[rootName] = rootValue;
203
+ if (!unsafeKeys.has(rootName)) {
204
+ root[rootName] = rootValue;
205
+ }
186
206
  }
187
207
  return root;
188
208
  }
@@ -1 +1 @@
1
- {"version":3,"file":"xml-parser.js","sourceRoot":"","sources":["../../../src/helpers/parser/xml-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"xml-parser.js","sourceRoot":"","sources":["../../../src/helpers/parser/xml-parser.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  type ValidatorFn = (input: any, root?: any) => boolean | Promise<boolean>;
2
+ type SyncValidatorFn = (input: any, root?: any) => boolean;
2
3
  declare class Validator {
3
4
  private rules;
4
5
  private _required;
@@ -36,6 +37,7 @@ declare class Validator {
36
37
  maxItems(n: number): Validator;
37
38
  unique(): Validator;
38
39
  build(): (input: any, root?: any) => Promise<boolean>;
40
+ buildSync(): SyncValidatorFn;
39
41
  }
40
42
  export declare const validate: {
41
43
  string: () => Validator;
@@ -1,6 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.validate = void 0;
4
+ const ASYNC_RULE_ERROR = 'Validator contains async rules — use .build() instead of .buildSync()';
5
+ function isThenable(value) {
6
+ return value !== null && typeof value === 'object' && typeof value.then === 'function';
7
+ }
8
+ function isAsyncFunction(fn) {
9
+ return typeof fn === 'function' && fn.constructor?.name === 'AsyncFunction';
10
+ }
11
+ // Stays synchronous when every result is synchronous, so composed
12
+ // validators built with .buildSync() can be nested in shape() / items().
13
+ function every(results) {
14
+ if (results.some(isThenable)) {
15
+ return Promise.all(results).then((r) => r.every(Boolean));
16
+ }
17
+ return results.every(Boolean);
18
+ }
4
19
  class Validator {
5
20
  rules = [];
6
21
  _required = false;
@@ -88,12 +103,11 @@ class Validator {
88
103
  }
89
104
  // Object rules
90
105
  shape(schema) {
91
- return this.add(async (v) => {
106
+ return this.add((v) => {
92
107
  if (typeof v !== 'object' || v === null || Array.isArray(v)) {
93
108
  return false;
94
109
  }
95
- const results = await Promise.all(Object.entries(schema).map(([key, fn,]) => fn(v[key], v)));
96
- return results.every(Boolean);
110
+ return every(Object.entries(schema).map(([key, fn,]) => fn(v[key], v)));
97
111
  });
98
112
  }
99
113
  minKeys(n) {
@@ -146,7 +160,8 @@ class Validator {
146
160
  return true;
147
161
  }
148
162
  const caseKey = String(ctx[key]);
149
- const fn = cases[caseKey] ?? fallback;
163
+ // own keys only: 'constructor', 'toString', ... must not resolve to Object.prototype
164
+ const fn = Object.prototype.hasOwnProperty.call(cases, caseKey) ? cases[caseKey] : fallback;
150
165
  if (!fn) {
151
166
  return true;
152
167
  }
@@ -155,12 +170,11 @@ class Validator {
155
170
  }
156
171
  // Array rules
157
172
  items(fn) {
158
- return this.add(async (v) => {
173
+ return this.add((v) => {
159
174
  if (!Array.isArray(v)) {
160
175
  return false;
161
176
  }
162
- const results = await Promise.all(v.map((item) => fn(item)));
163
- return results.every(Boolean);
177
+ return every(v.map((item) => fn(item)));
164
178
  });
165
179
  }
166
180
  minItems(n) {
@@ -190,6 +204,34 @@ class Validator {
190
204
  return true;
191
205
  };
192
206
  }
207
+ // Same semantics as build(), but returns a plain boolean. Throws if any rule
208
+ // is async: eagerly for async functions passed to custom()/when()/match(),
209
+ // and at call time for any rule that returns a Promise.
210
+ buildSync() {
211
+ const rules = [...this.rules];
212
+ const required = this._required;
213
+ if (rules.some(isAsyncFunction)) {
214
+ throw new Error(ASYNC_RULE_ERROR);
215
+ }
216
+ return (input, root) => {
217
+ const isEmpty = input === null || input === undefined || input === '';
218
+ if (isEmpty) {
219
+ return !required;
220
+ }
221
+ for (const rule of rules) {
222
+ const ok = rule(input, root);
223
+ if (isThenable(ok)) {
224
+ // avoid an unhandled rejection from the promise we are discarding
225
+ Promise.resolve(ok).catch(() => undefined);
226
+ throw new Error(ASYNC_RULE_ERROR);
227
+ }
228
+ if (!ok) {
229
+ return false;
230
+ }
231
+ }
232
+ return true;
233
+ };
234
+ }
193
235
  }
194
236
  // Entry point
195
237
  exports.validate = {
@@ -1 +1 @@
1
- {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../../../src/helpers/validate/built-in/validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../../../src/helpers/validate/built-in/validator.ts"],"names":[],"mappings":"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"}
@@ -43,11 +43,9 @@ async function validateRequestPart(key, context, request) {
43
43
  request[key][property] = await transform.apply(request, [value]);
44
44
  }
45
45
  }
46
- catch (e) {
47
- return {
48
- statusCode: error.statusCode,
49
- message: e.message,
50
- };
46
+ catch {
47
+ // the configured error, never the exception text (it may describe internals)
48
+ return error;
51
49
  }
52
50
  }
53
51
  }
@@ -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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"}
@@ -1,6 +1,19 @@
1
1
  import { IncomingMessage, ServerResponse } from 'http';
2
2
  import { RequestProcessorOptions } from '../options/index.js';
3
3
  import { AladoServerError, Response } from '../dto/index.js';
4
+ /**
5
+ * Maps a request URL to a Swagger UI asset name, or undefined if it is not one.
6
+ * The result is always an exact entry of the swagger-ui-dist listing, so no
7
+ * part of the URL ever reaches the filesystem (no `..`, no subdirectories).
8
+ */
9
+ export declare function resolveSwaggerUiFile(url: string, docsRoute: string): string | undefined;
10
+ /**
11
+ * Errors that carry an HTTP status (thrown on purpose, e.g. `{ statusCode: 404,
12
+ * message }`, or produced by the body parser) keep their status and message.
13
+ * Anything else is an internal failure: the client gets a generic 500 and the
14
+ * details only go to the logger.
15
+ */
16
+ export declare function toClientError(e: any): AladoServerError;
4
17
  export declare class RequestProcessor {
5
18
  private readonly options;
6
19
  constructor(requestProcessorOptions: RequestProcessorOptions);
@@ -1,12 +1,51 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RequestProcessor = void 0;
4
+ exports.resolveSwaggerUiFile = resolveSwaggerUiFile;
5
+ exports.toClientError = toClientError;
4
6
  const path_1 = require("path");
5
7
  const fs_1 = require("fs");
6
8
  const _const_1 = require("../constants/index.js");
7
9
  const _helper_1 = require("../helpers/index.js");
8
10
  const swaggerUiAssetPath = require('swagger-ui-dist').absolutePath();
9
- const swaggerUiFiles = (0, fs_1.readdirSync)(swaggerUiAssetPath);
11
+ // Only regular files directly inside swagger-ui-dist are ever served.
12
+ const swaggerUiFiles = new Set((0, fs_1.readdirSync)(swaggerUiAssetPath, { withFileTypes: true })
13
+ .filter((entry) => entry.isFile())
14
+ .map((entry) => entry.name));
15
+ /**
16
+ * Maps a request URL to a Swagger UI asset name, or undefined if it is not one.
17
+ * The result is always an exact entry of the swagger-ui-dist listing, so no
18
+ * part of the URL ever reaches the filesystem (no `..`, no subdirectories).
19
+ */
20
+ function resolveSwaggerUiFile(url, docsRoute) {
21
+ const route = (0, _helper_1.clearRoutePath)(docsRoute || '');
22
+ const pathname = url.split('?')[0];
23
+ let name;
24
+ if (pathname === route) {
25
+ name = 'index.html';
26
+ }
27
+ else if (route && pathname.startsWith(`${route}/`)) {
28
+ name = pathname.slice(route.length + 1);
29
+ }
30
+ else {
31
+ // index.html references its assets relatively, so they are requested from the root
32
+ name = pathname.replace(/^\//, '');
33
+ }
34
+ return swaggerUiFiles.has(name) ? name : undefined;
35
+ }
36
+ /**
37
+ * Errors that carry an HTTP status (thrown on purpose, e.g. `{ statusCode: 404,
38
+ * message }`, or produced by the body parser) keep their status and message.
39
+ * Anything else is an internal failure: the client gets a generic 500 and the
40
+ * details only go to the logger.
41
+ */
42
+ function toClientError(e) {
43
+ const statusCode = e?.statusCode;
44
+ if (typeof statusCode === 'number' && statusCode >= 400 && statusCode < 600 && typeof e?.message === 'string') {
45
+ return { statusCode, message: e.message };
46
+ }
47
+ return { statusCode: 500, message: 'Internal Server Error' };
48
+ }
10
49
  class RequestProcessor {
11
50
  options;
12
51
  constructor(requestProcessorOptions) {
@@ -14,12 +53,26 @@ class RequestProcessor {
14
53
  }
15
54
  respond(res, response, backgroundHeaders = {}) {
16
55
  let responseBody;
17
- const { statusCode, headers, body } = response;
56
+ const { statusCode, body } = response;
57
+ const headers = { ...(response.headers || {}) };
18
58
  const isStreamBody = (0, _helper_1.isReadableStream)(body);
19
- const contentType = headers && (headers['Content-Type'] || headers['content-type']);
59
+ const contentTypeKey = Object.keys(headers).find((h) => h.toLowerCase() === 'content-type');
60
+ const contentType = contentTypeKey ? headers[contentTypeKey] : undefined;
61
+ const isRawBody = body === undefined ||
62
+ body === null ||
63
+ typeof body === 'string' ||
64
+ Buffer.isBuffer(body) ||
65
+ body instanceof Uint8Array;
20
66
  if (contentType?.startsWith(_const_1.ContentType.JSON)) {
21
67
  responseBody = isStreamBody ? body : JSON.stringify(body);
22
68
  }
69
+ else if (!isStreamBody && !isRawBody) {
70
+ // res.end() only accepts strings and buffers: serialise anything else as JSON
71
+ if (!contentType) {
72
+ headers['Content-Type'] = _const_1.ContentType.JSON;
73
+ }
74
+ responseBody = JSON.stringify(body);
75
+ }
23
76
  else {
24
77
  responseBody = body;
25
78
  }
@@ -32,6 +85,11 @@ class RequestProcessor {
32
85
  }
33
86
  }
34
87
  respondError(res, error, headers = {}) {
88
+ if (res.headersSent) {
89
+ // too late for an error response: the status line is already on the wire
90
+ res.destroy();
91
+ return;
92
+ }
35
93
  const { statusCode, message } = error;
36
94
  return this.respond(res, {
37
95
  statusCode,
@@ -49,40 +107,34 @@ class RequestProcessor {
49
107
  // Process Open API routes
50
108
  if (openApiDoc?.enable) {
51
109
  if (method === _const_1.HttpMethod.GET) {
52
- if (!req.url?.startsWith(`/swagger.json`) &&
53
- ((url?.startsWith((0, _helper_1.clearRoutePath)(openApiDoc?.route)) &&
54
- ![
55
- '',
56
- '/',
57
- ].includes(openApiDoc?.route)) ||
58
- swaggerUiFiles.includes(url.replace('/', '')) ||
59
- url === openApiDoc?.route)) {
60
- let filePath = (0, path_1.join)(swaggerUiAssetPath, url.replace(`${(0, _helper_1.clearRoutePath)(openApiDoc.route)}`, ''));
61
- filePath += url === (0, _helper_1.clearRoutePath)(openApiDoc.route) ? '/index.html' : '';
62
- return (0, fs_1.access)(filePath, fs_1.constants.F_OK, (err) => {
63
- if (err) {
64
- return this.respond(res, {
65
- statusCode: 404,
66
- headers: { 'Content-Type': 'text/plain' },
67
- body: 'Not Found',
68
- });
110
+ const swaggerFile = req.url?.startsWith(`/swagger.json`)
111
+ ? undefined
112
+ : resolveSwaggerUiFile(url, openApiDoc.route);
113
+ if (swaggerFile) {
114
+ // swaggerFile is a bare name from the swagger-ui-dist listing, never a path from the URL
115
+ const filePath = (0, path_1.join)(swaggerUiAssetPath, swaggerFile);
116
+ if (swaggerFile === _const_1.SWAGGER_INITIALIZER_FILE_NAME) {
117
+ const initFileContent = (0, fs_1.readFileSync)(filePath)
118
+ .toString()
119
+ .replace('https://petstore.swagger.io/v2/swagger.json', '/swagger.json');
120
+ res.writeHead(200, {
121
+ 'Content-Type': 'application/javascript; charset=utf-8',
122
+ 'Content-Length': Buffer.byteLength(initFileContent),
123
+ });
124
+ res.end(initFileContent);
125
+ return;
126
+ }
127
+ const stream = (0, fs_1.createReadStream)(filePath);
128
+ stream.on('error', () => {
129
+ if (!res.headersSent) {
130
+ this.respond(res, { statusCode: 404, headers: { 'Content-Type': 'text/plain' }, body: 'Not Found' });
69
131
  }
70
132
  else {
71
- if (url.replace('/', '') === _const_1.SWAGGER_INITIALIZER_FILE_NAME) {
72
- const initFileContent = (0, fs_1.readFileSync)(filePath)
73
- .toString()
74
- .replace('https://petstore.swagger.io/v2/swagger.json', '/swagger.json');
75
- res.writeHead(200, {
76
- 'Content-Type': 'application/json; charset=utf-8',
77
- 'Content-Length': Buffer.byteLength(initFileContent),
78
- });
79
- res.end(initFileContent);
80
- }
81
- else {
82
- (0, fs_1.createReadStream)(filePath).pipe(res);
83
- }
133
+ res.destroy();
84
134
  }
85
135
  });
136
+ stream.pipe(res);
137
+ return;
86
138
  }
87
139
  else if (req.url?.startsWith(`/swagger.json`)) {
88
140
  return this.respond(res, {
@@ -96,20 +148,23 @@ class RequestProcessor {
96
148
  // Process API routes
97
149
  const [uri, queryString,] = url.split('?');
98
150
  const route = router.parse(method, (0, _helper_1.clearRoutePath)(uri));
99
- const backgroundHeaders = {
100
- 'Access-Control-Allow-Methods': route?.allowedMethods?.join(', ') || '',
101
- 'Access-Control-Allow-Headers': this.options.router.options.cors?.allowedHeaders?.join(', ') || '',
102
- 'Access-Control-Expose-Headers': this.options.router.options.cors?.exposeHeaders?.join(', ') || '',
103
- 'Access-Control-Allow-Credentials': this.options.router.options.cors?.allowedCredentials ? 'true' : 'false',
104
- };
105
- if (Array.isArray(this.options.router.options.cors.allowedOrigin)) {
106
- if (this.options.router.options.cors.allowedOrigin.includes(origin)) {
107
- backgroundHeaders['Access-Control-Allow-Origin'] = origin;
151
+ let backgroundHeaders = {};
152
+ if (this.options.enableCors) {
153
+ backgroundHeaders = {
154
+ 'Access-Control-Allow-Methods': route?.allowedMethods?.join(', ') || '',
155
+ 'Access-Control-Allow-Headers': this.options.router.options.cors?.allowedHeaders?.join(', ') || '',
156
+ 'Access-Control-Expose-Headers': this.options.router.options.cors?.exposeHeaders?.join(', ') || '',
157
+ 'Access-Control-Allow-Credentials': this.options.router.options.cors?.allowedCredentials ? 'true' : 'false',
158
+ };
159
+ if (Array.isArray(this.options.router.options.cors.allowedOrigin)) {
160
+ if (this.options.router.options.cors.allowedOrigin.includes(origin)) {
161
+ backgroundHeaders['Access-Control-Allow-Origin'] = origin;
162
+ }
163
+ }
164
+ else {
165
+ backgroundHeaders['Access-Control-Allow-Origin'] =
166
+ this.options.router.options.cors.allowedOrigin || origin;
108
167
  }
109
- }
110
- else {
111
- backgroundHeaders['Access-Control-Allow-Origin'] =
112
- this.options.router.options.cors.allowedOrigin || origin;
113
168
  }
114
169
  if (!route) {
115
170
  // Not Found
@@ -200,13 +255,13 @@ class RequestProcessor {
200
255
  }
201
256
  catch (e) {
202
257
  this.logError(e);
203
- return this.respondError(res, { statusCode: 500, message: e.message }, backgroundHeaders);
258
+ return this.respondError(res, toClientError(e), backgroundHeaders);
204
259
  }
205
260
  }
206
261
  }
207
262
  catch (e) {
208
263
  this.logError(e);
209
- return this.respondError(res, { statusCode: e.statusCode || 500, message: e.message }, {});
264
+ return this.respondError(res, toClientError(e), {});
210
265
  }
211
266
  }
212
267
  logError(e) {