@loopback/rest 6.1.0 → 8.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 (78) hide show
  1. package/CHANGELOG.md +109 -0
  2. package/dist/body-parsers/body-parser.js +3 -0
  3. package/dist/body-parsers/body-parser.js.map +1 -1
  4. package/dist/coercion/coerce-parameter.d.ts +1 -1
  5. package/dist/coercion/coerce-parameter.js +36 -13
  6. package/dist/coercion/coerce-parameter.js.map +1 -1
  7. package/dist/coercion/utils.d.ts +1 -1
  8. package/dist/http-handler.js +5 -0
  9. package/dist/http-handler.js.map +1 -1
  10. package/dist/index.js +1 -1
  11. package/dist/providers/find-route.provider.d.ts +0 -2
  12. package/dist/providers/find-route.provider.js +11 -8
  13. package/dist/providers/find-route.provider.js.map +1 -1
  14. package/dist/providers/invoke-method.provider.d.ts +0 -2
  15. package/dist/providers/invoke-method.provider.js +21 -10
  16. package/dist/providers/invoke-method.provider.js.map +1 -1
  17. package/dist/providers/log-error.provider.js +7 -2
  18. package/dist/providers/log-error.provider.js.map +1 -1
  19. package/dist/providers/parse-params.provider.d.ts +0 -2
  20. package/dist/providers/parse-params.provider.js +16 -8
  21. package/dist/providers/parse-params.provider.js.map +1 -1
  22. package/dist/providers/reject.provider.d.ts +1 -1
  23. package/dist/providers/reject.provider.js +2 -1
  24. package/dist/providers/reject.provider.js.map +1 -1
  25. package/dist/providers/send.provider.d.ts +1 -4
  26. package/dist/providers/send.provider.js +11 -13
  27. package/dist/providers/send.provider.js.map +1 -1
  28. package/dist/request-context.js.map +1 -1
  29. package/dist/rest.application.js +1 -1
  30. package/dist/rest.application.js.map +1 -1
  31. package/dist/rest.server.d.ts +1 -0
  32. package/dist/rest.server.js +5 -4
  33. package/dist/rest.server.js.map +1 -1
  34. package/dist/router/base-route.js +3 -3
  35. package/dist/router/base-route.js.map +1 -1
  36. package/dist/router/controller-route.js +1 -1
  37. package/dist/router/controller-route.js.map +1 -1
  38. package/dist/router/handler-route.js +1 -1
  39. package/dist/router/handler-route.js.map +1 -1
  40. package/dist/router/redirect-route.js +1 -1
  41. package/dist/router/redirect-route.js.map +1 -1
  42. package/dist/sequence.js +1 -1
  43. package/dist/sequence.js.map +1 -1
  44. package/dist/spec-enhancers/consolidate.spec-enhancer.js +1 -1
  45. package/dist/spec-enhancers/consolidate.spec-enhancer.js.map +1 -1
  46. package/dist/spec-enhancers/info.spec-enhancer.js +13 -5
  47. package/dist/spec-enhancers/info.spec-enhancer.js.map +1 -1
  48. package/dist/validation/ajv-factory.provider.js +5 -3
  49. package/dist/validation/ajv-factory.provider.js.map +1 -1
  50. package/dist/validation/openapi-formats.d.ts +26 -0
  51. package/dist/validation/openapi-formats.js +85 -0
  52. package/dist/validation/openapi-formats.js.map +1 -0
  53. package/dist/validation/request-body.validator.d.ts +4 -4
  54. package/dist/validation/request-body.validator.js +5 -8
  55. package/dist/validation/request-body.validator.js.map +1 -1
  56. package/package.json +25 -22
  57. package/src/body-parsers/body-parser.ts +3 -0
  58. package/src/coercion/coerce-parameter.ts +43 -19
  59. package/src/http-handler.ts +6 -0
  60. package/src/providers/find-route.provider.ts +24 -8
  61. package/src/providers/invoke-method.provider.ts +28 -10
  62. package/src/providers/log-error.provider.ts +2 -1
  63. package/src/providers/parse-params.provider.ts +28 -8
  64. package/src/providers/reject.provider.ts +4 -3
  65. package/src/providers/send.provider.ts +9 -12
  66. package/src/request-context.ts +2 -1
  67. package/src/rest.application.ts +1 -1
  68. package/src/rest.server.ts +8 -5
  69. package/src/router/base-route.ts +3 -3
  70. package/src/router/controller-route.ts +1 -1
  71. package/src/router/handler-route.ts +3 -1
  72. package/src/router/redirect-route.ts +1 -1
  73. package/src/sequence.ts +2 -2
  74. package/src/spec-enhancers/consolidate.spec-enhancer.ts +2 -2
  75. package/src/spec-enhancers/info.spec-enhancer.ts +15 -6
  76. package/src/validation/ajv-factory.provider.ts +8 -4
  77. package/src/validation/openapi-formats.ts +92 -0
  78. package/src/validation/request-body.validator.ts +8 -8
package/CHANGELOG.md CHANGED
@@ -3,6 +3,115 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [8.0.0](https://github.com/strongloop/loopback-next/compare/@loopback/rest@7.0.1...@loopback/rest@8.0.0) (2020-10-07)
7
+
8
+
9
+ ### Features
10
+
11
+ * **context:** introduce new binding scopes ([9916cfd](https://github.com/strongloop/loopback-next/commit/9916cfd4449a870f7a3378e2e674957aed7c1626))
12
+ * update dependency openapi3-ts to v2 ([aabd6e6](https://github.com/strongloop/loopback-next/commit/aabd6e62a11d5e10ff2256ec664a923041e27ce0))
13
+
14
+
15
+ ### BREAKING CHANGES
16
+
17
+ * openapi3-ts@2.x has a stricter typing for `type` and `format`
18
+ properties as union types with a known list of values.
19
+
20
+ We now either have to explicitly type the schema as `SchemaObject`
21
+ or cast the `type` to `SchemaObject['type'], for example:
22
+
23
+ ```ts
24
+ import {SchemaObject} from '@loopback/openapi-v3';
25
+
26
+ const schemaDef1 = {
27
+ type: 'number' as const; // cast the type to be 'number' from 'string'
28
+ };
29
+
30
+ // Use the explicit `SchemaObject` to enforce inference
31
+ const schemaDef2: SchemaObject = {
32
+ type: 'number' as const;
33
+ };
34
+ ```
35
+
36
+ It also applies to OpenAPI parameter objects:
37
+
38
+ ```ts
39
+ import {ParameterObject} from '@loopback/openapi-v3';
40
+
41
+ const paramDef1 = {
42
+ type: 'number' as const, // cast the type to be 'number' from 'string'
43
+ name: 'limit',
44
+ in: 'query',
45
+ }
46
+
47
+ // Use the explicit `ParameterObject` to enforce inference
48
+ const paramDef2: ParameterObject = {
49
+ type: 'number',
50
+ name: 'limit',
51
+ in: 'query',
52
+ }
53
+ ```
54
+
55
+ Signed-off-by: Renovate Bot <bot@renovateapp.com>
56
+
57
+
58
+
59
+
60
+
61
+ ## [7.0.1](https://github.com/strongloop/loopback-next/compare/@loopback/rest@7.0.0...@loopback/rest@7.0.1) (2020-09-17)
62
+
63
+ **Note:** Version bump only for package @loopback/rest
64
+
65
+
66
+
67
+
68
+
69
+ # [7.0.0](https://github.com/strongloop/loopback-next/compare/@loopback/rest@6.2.0...@loopback/rest@7.0.0) (2020-09-15)
70
+
71
+
72
+ ### Bug Fixes
73
+
74
+ * **rest:** do not override customized openapi spec info object ([acae2a3](https://github.com/strongloop/loopback-next/commit/acae2a39d6ede327a1c1af53d33bd9e4c23b9626))
75
+ * **rest:** make sure OpenAPI parameters with simple types are validated by AJV ([987c103](https://github.com/strongloop/loopback-next/commit/987c1033a7ff28e4f2b9188a854c6479ed2365f9))
76
+
77
+
78
+ ### Features
79
+
80
+ * **rest:** use sington binding scope to cache REST middleware ([5783f54](https://github.com/strongloop/loopback-next/commit/5783f5471e1e16aface22d8db4d300366f6b06d3))
81
+ * move framework packages to `devDependencies` ([e2c61ce](https://github.com/strongloop/loopback-next/commit/e2c61ce79aa68d76f6e7138642034160b50063f0))
82
+ * **rest:** add AJV formats for OpenAPI spec data type formats ([3f2ccbf](https://github.com/strongloop/loopback-next/commit/3f2ccbf98c8cca92666c9a9931ad741d274a76b6))
83
+ * **rest:** expose RequestContext to Express request object ([50448cb](https://github.com/strongloop/loopback-next/commit/50448cb215cc94b8bd2459d7f9487aa03149fe3d))
84
+
85
+
86
+ ### BREAKING CHANGES
87
+
88
+ * components no longer install core framework packages as
89
+ their own dependencies, they use the framework packages provided by the
90
+ target application instead.
91
+
92
+ If you are getting `npm install` errors after upgrade, then make sure
93
+ your project lists all dependencies required by the extensions you are
94
+ using.
95
+
96
+ Signed-off-by: Miroslav Bajtoš <mbajtoss@gmail.com>
97
+
98
+
99
+
100
+
101
+
102
+ # [6.2.0](https://github.com/strongloop/loopback-next/compare/@loopback/rest@6.1.0...@loopback/rest@6.2.0) (2020-08-27)
103
+
104
+
105
+ ### Features
106
+
107
+ * **rest:** add more debugging statements for middleware ([de2f5be](https://github.com/strongloop/loopback-next/commit/de2f5bee6415d55c53ca14cdf989cb37b06c7f47))
108
+ * **rest:** improve route description to include verb and path ([3b7fcca](https://github.com/strongloop/loopback-next/commit/3b7fccafa57cfb7fd2ee1495dc81dbc87ab6e94e))
109
+ * **rest:** make sure rest options are passed to http-server ([e9af196](https://github.com/strongloop/loopback-next/commit/e9af1961dfe2aaae3c07e3100f6fe538797943e0))
110
+
111
+
112
+
113
+
114
+
6
115
  # [6.1.0](https://github.com/strongloop/loopback-next/compare/@loopback/rest@6.0.0...@loopback/rest@6.1.0) (2020-08-19)
7
116
 
8
117
 
@@ -31,17 +31,20 @@ let RequestBodyParser = class RequestBodyParser {
31
31
  if (customParser) {
32
32
  // Invoke the custom parser
33
33
  const body = await this._invokeCustomParser(customParser, request);
34
+ debug('Parsed request body', body);
34
35
  return Object.assign(requestBody, body);
35
36
  }
36
37
  else {
37
38
  const parser = this._findParser(matchedMediaType);
38
39
  if (parser) {
39
40
  const body = await parser.parse(request);
41
+ debug('Parsed request body', body);
40
42
  return Object.assign(requestBody, body);
41
43
  }
42
44
  }
43
45
  }
44
46
  catch (err) {
47
+ debug('Request body parsing error', err);
45
48
  throw body_parser_helpers_1.normalizeParsingError(err);
46
49
  }
47
50
  throw rest_http_error_1.RestHttpErrors.unsupportedMediaType(matchedMediaType);
@@ -1 +1 @@
1
- {"version":3,"file":"body-parser.js","sourceRoot":"","sources":["../../src/body-parsers/body-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"body-parser.js","sourceRoot":"","sources":["../../src/body-parsers/body-parser.ts"],"names":[],"mappings":"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"}
@@ -8,4 +8,4 @@ import { ValueValidationOptions } from '../';
8
8
  * @param schema - The parameter's schema defined in OpenAPI specification
9
9
  * @param options - The ajv validation options
10
10
  */
11
- export declare function coerceParameter(data: string | undefined | object, spec: ParameterObject, options?: ValueValidationOptions): Promise<string | number | boolean | object | undefined>;
11
+ export declare function coerceParameter(data: string | undefined | object, spec: ParameterObject, options?: ValueValidationOptions): Promise<any>;
@@ -35,31 +35,49 @@ async function coerceParameter(data, spec, options) {
35
35
  validator.validateParamBeforeCoercion(data);
36
36
  if (data === undefined)
37
37
  return data;
38
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
39
+ let result = data;
38
40
  switch (OAIType) {
39
41
  case 'byte':
40
- return coerceBuffer(data, spec);
42
+ result = coerceBuffer(data, spec);
43
+ break;
41
44
  case 'date':
42
- return coerceDatetime(data, spec, { dateOnly: true });
45
+ result = coerceDatetime(data, spec, { dateOnly: true });
46
+ break;
43
47
  case 'date-time':
44
- return coerceDatetime(data, spec);
48
+ result = coerceDatetime(data, spec);
49
+ break;
45
50
  case 'float':
46
51
  case 'double':
47
52
  case 'number':
48
- return coerceNumber(data, spec);
53
+ result = coerceNumber(data, spec);
54
+ break;
49
55
  case 'long':
50
- return coerceInteger(data, spec, { isLong: true });
56
+ result = coerceInteger(data, spec, { isLong: true });
57
+ break;
51
58
  case 'integer':
52
- return coerceInteger(data, spec);
59
+ result = coerceInteger(data, spec);
60
+ break;
53
61
  case 'boolean':
54
- return coerceBoolean(data, spec);
62
+ result = coerceBoolean(data, spec);
63
+ break;
55
64
  case 'object':
56
- return coerceObject(data, spec, options);
65
+ result = await coerceObject(data, spec);
66
+ break;
57
67
  case 'string':
58
68
  case 'password':
59
- return coerceString(data, spec);
60
- default:
61
- return data;
69
+ result = coerceString(data, spec);
70
+ break;
62
71
  }
72
+ if (result != null) {
73
+ // For date/date-time/byte, we need to pass the raw string value to AJV
74
+ if (OAIType === 'date' || OAIType === 'date-time' || OAIType === 'byte') {
75
+ await validateParam(spec, data, options);
76
+ return result;
77
+ }
78
+ result = await validateParam(spec, result, options);
79
+ }
80
+ return result;
63
81
  }
64
82
  exports.coerceParameter = coerceParameter;
65
83
  function coerceString(data, spec) {
@@ -124,7 +142,7 @@ function coerceBoolean(data, spec) {
124
142
  return false;
125
143
  throw __1.RestHttpErrors.invalidData(data, spec.name);
126
144
  }
127
- async function coerceObject(input, spec, options = ajv_factory_provider_1.DEFAULT_AJV_VALIDATION_OPTIONS) {
145
+ async function coerceObject(input, spec) {
128
146
  const data = parseJsonIfNeeded(input, spec);
129
147
  if (data == null) {
130
148
  // Skip any further checks and coercions, nothing we can do with `undefined`
@@ -132,10 +150,15 @@ async function coerceObject(input, spec, options = ajv_factory_provider_1.DEFAUL
132
150
  }
133
151
  if (typeof data !== 'object' || Array.isArray(data))
134
152
  throw __1.RestHttpErrors.invalidData(input, spec.name);
153
+ return data;
154
+ }
155
+ function validateParam(spec,
156
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
157
+ data, options = ajv_factory_provider_1.DEFAULT_AJV_VALIDATION_OPTIONS) {
135
158
  const schema = extractSchemaFromSpec(spec);
136
159
  if (schema) {
137
160
  // Apply coercion based on properties defined by spec.schema
138
- await __1.validateValueAgainstSchema(data, schema, {}, { ...options, coerceTypes: true, source: 'parameter', name: spec.name });
161
+ return __1.validateValueAgainstSchema(data, schema, {}, { ...options, coerceTypes: true, source: 'parameter', name: spec.name });
139
162
  }
140
163
  return data;
141
164
  }
@@ -1 +1 @@
1
- {"version":3,"file":"coerce-parameter.js","sourceRoot":"","sources":["../../src/coercion/coerce-parameter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coerce-parameter.js","sourceRoot":"","sources":["../../src/coercion/coerce-parameter.ts"],"names":[],"mappings":"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"}
@@ -40,4 +40,4 @@ export declare function matchDateFormat(date: string): boolean;
40
40
  * @param type - The type in an OpenAPI schema specification
41
41
  * @param format - The format in an OpenAPI schema specification
42
42
  */
43
- export declare function getOAIPrimitiveType(type?: string, format?: string): "object" | "boolean" | "string" | "number" | "array" | "binary" | "byte" | "date" | "date-time" | "password" | "float" | "double" | "long" | "integer" | undefined;
43
+ export declare function getOAIPrimitiveType(type?: string, format?: string): "object" | "boolean" | "string" | "number" | "integer" | "array" | "float" | "double" | "byte" | "binary" | "date" | "date-time" | "password" | "long" | undefined;
@@ -5,6 +5,7 @@
5
5
  // License text available at https://opensource.org/licenses/MIT
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.HttpHandler = void 0;
8
+ const express_1 = require("@loopback/express");
8
9
  const keys_1 = require("./keys");
9
10
  const request_context_1 = require("./request-context");
10
11
  const router_1 = require("./router");
@@ -60,6 +61,10 @@ class HttpHandler {
60
61
  }
61
62
  async _handleRequest(request, response) {
62
63
  const requestContext = new request_context_1.RequestContext(request, response, this._rootContext, this._serverConfig);
64
+ // Set the request context as a property of Express request object so that
65
+ // downstream Express native integration can access `RequestContext`
66
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
67
+ request[express_1.MIDDLEWARE_CONTEXT] = requestContext;
63
68
  const sequence = await requestContext.get(keys_1.RestBindings.SEQUENCE);
64
69
  await sequence.handle(requestContext);
65
70
  }
@@ -1 +1 @@
1
- {"version":3,"file":"http-handler.js","sourceRoot":"","sources":["../src/http-handler.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;AAWhE,iCAAoC;AACpC,uDAAiD;AAEjD,qCAMkB;AAIlB,MAAa,WAAW;IAQtB,YACqB,YAAqB,EACrB,aAAuC,EACvC,UAAU,IAAI,qBAAY,EAAE;QAF5B,iBAAY,GAAZ,YAAY,CAAS;QACrB,kBAAa,GAAb,aAAa,CAA0B;QACvC,YAAO,GAAP,OAAO,CAAqB;QAE/C,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACnE,CAAC;IAED,kBAAkB,CAChB,IAAoB,EACpB,cAAkC,EAClC,iBAAwC;QAExC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC;IAC3E,CAAC;IAED,aAAa,CAAC,KAAiB;QAC7B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,sBAAsB,CAAC,IAAmB;QACxC,IAAI,CAAC,qBAAqB,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACH,qBAAqB,CAAC,IAAsB;;QAC1C,IAAI,CAAC,kBAAkB,SAAG,IAAI,CAAC,kBAAkB,mCAAI,EAAE,CAAC;QACxD,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;YACpB,mEAAmE;YACnE,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,EAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC;SAC1E;IACH,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,iBAAiB;;QAKf,aAAO,IAAI,CAAC,kBAAkB,0CAAE,OAAO,CAAC;IAC1C,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;IACzC,CAAC;IAED,SAAS,CAAC,OAAgB;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACvD,OAAO,KAAK,CAAC;IACf,CAAC;IAES,KAAK,CAAC,cAAc,CAC5B,OAAgB,EAChB,QAAkB;QAElB,MAAM,cAAc,GAAG,IAAI,gCAAc,CACvC,OAAO,EACP,QAAQ,EACR,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,aAAa,CACnB,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,GAAG,CACvC,mBAAY,CAAC,QAAQ,CACtB,CAAC;QACF,MAAM,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IACxC,CAAC;CACF;AAzFD,kCAyFC"}
1
+ {"version":3,"file":"http-handler.js","sourceRoot":"","sources":["../src/http-handler.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;AAGhE,+CAAqD;AASrD,iCAAoC;AACpC,uDAAiD;AAEjD,qCAMkB;AAIlB,MAAa,WAAW;IAQtB,YACqB,YAAqB,EACrB,aAAuC,EACvC,UAAU,IAAI,qBAAY,EAAE;QAF5B,iBAAY,GAAZ,YAAY,CAAS;QACrB,kBAAa,GAAb,aAAa,CAA0B;QACvC,YAAO,GAAP,OAAO,CAAqB;QAE/C,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACnE,CAAC;IAED,kBAAkB,CAChB,IAAoB,EACpB,cAAkC,EAClC,iBAAwC;QAExC,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAC;IAC3E,CAAC;IAED,aAAa,CAAC,KAAiB;QAC7B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,sBAAsB,CAAC,IAAmB;QACxC,IAAI,CAAC,qBAAqB,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACH,qBAAqB,CAAC,IAAsB;;QAC1C,IAAI,CAAC,kBAAkB,SAAG,IAAI,CAAC,kBAAkB,mCAAI,EAAE,CAAC;QACxD,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE;YACpB,mEAAmE;YACnE,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,EAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC;SAC1E;IACH,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,iBAAiB;;QAKf,aAAO,IAAI,CAAC,kBAAkB,0CAAE,OAAO,CAAC;IAC1C,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;IACzC,CAAC;IAED,SAAS,CAAC,OAAgB;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACvD,OAAO,KAAK,CAAC;IACf,CAAC;IAES,KAAK,CAAC,cAAc,CAC5B,OAAgB,EAChB,QAAkB;QAElB,MAAM,cAAc,GAAG,IAAI,gCAAc,CACvC,OAAO,EACP,QAAQ,EACR,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,aAAa,CACnB,CAAC;QAEF,0EAA0E;QAC1E,oEAAoE;QACpE,8DAA8D;QAC7D,OAAe,CAAC,4BAAkB,CAAC,GAAG,cAAc,CAAC;QAEtD,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,GAAG,CACvC,mBAAY,CAAC,QAAQ,CACtB,CAAC;QACF,MAAM,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IACxC,CAAC;CACF;AA9FD,kCA8FC"}
package/dist/index.js CHANGED
@@ -4,7 +4,7 @@
4
4
  // This file is licensed under the MIT License.
5
5
  // License text available at https://opensource.org/licenses/MIT
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.HttpErrors = void 0;
7
+ exports.HttpErrors = exports.writeErrorToResponse = void 0;
8
8
  const tslib_1 = require("tslib");
9
9
  /**
10
10
  * The REST API package for loopback-next.
@@ -11,7 +11,5 @@ export declare class FindRouteProvider implements Provider<FindRoute> {
11
11
  action(request: Request): ResolvedRoute;
12
12
  }
13
13
  export declare class FindRouteMiddlewareProvider implements Provider<Middleware> {
14
- protected findRoute: FindRoute;
15
- constructor(findRoute: FindRoute);
16
14
  value(): Middleware;
17
15
  }
@@ -8,9 +8,11 @@ exports.FindRouteMiddlewareProvider = exports.FindRouteProvider = void 0;
8
8
  const tslib_1 = require("tslib");
9
9
  const core_1 = require("@loopback/core");
10
10
  const express_1 = require("@loopback/express");
11
+ const debug_1 = tslib_1.__importDefault(require("debug"));
11
12
  const http_handler_1 = require("../http-handler");
12
13
  const keys_1 = require("../keys");
13
14
  const sequence_1 = require("../sequence");
15
+ const debug = debug_1.default('loopback:rest:find-route');
14
16
  let FindRouteProvider = class FindRouteProvider {
15
17
  constructor(context, handler) {
16
18
  this.context = context;
@@ -21,6 +23,7 @@ let FindRouteProvider = class FindRouteProvider {
21
23
  }
22
24
  action(request) {
23
25
  const found = this.handler.findRoute(request);
26
+ debug('Route found for %s %s', request.method, request.originalUrl, found);
24
27
  found.updateBindings(this.context);
25
28
  return found;
26
29
  }
@@ -33,24 +36,24 @@ FindRouteProvider = tslib_1.__decorate([
33
36
  ], FindRouteProvider);
34
37
  exports.FindRouteProvider = FindRouteProvider;
35
38
  let FindRouteMiddlewareProvider = class FindRouteMiddlewareProvider {
36
- constructor(findRoute) {
37
- this.findRoute = findRoute;
38
- }
39
39
  value() {
40
40
  return async (ctx, next) => {
41
- const route = this.findRoute(ctx.request);
41
+ const request = ctx.request;
42
+ debug('Finding route for %s %s', request.method, request.originalUrl);
43
+ const handler = await ctx.get(keys_1.RestBindings.HANDLER);
44
+ const route = handler.findRoute(request);
45
+ debug('Route found for %s %s', request.method, request.originalUrl, route);
46
+ route.updateBindings(ctx);
42
47
  ctx.bind(keys_1.RestBindings.Operation.ROUTE).to(route);
43
48
  return next();
44
49
  };
45
50
  }
46
51
  };
47
52
  FindRouteMiddlewareProvider = tslib_1.__decorate([
48
- core_1.bind(express_1.asMiddleware({
53
+ core_1.injectable(express_1.asMiddleware({
49
54
  group: sequence_1.RestMiddlewareGroups.FIND_ROUTE,
50
55
  chain: keys_1.RestTags.REST_MIDDLEWARE_CHAIN,
51
- })),
52
- tslib_1.__param(0, core_1.inject(keys_1.RestBindings.SequenceActions.FIND_ROUTE)),
53
- tslib_1.__metadata("design:paramtypes", [Function])
56
+ }), { scope: core_1.BindingScope.SINGLETON })
54
57
  ], FindRouteMiddlewareProvider);
55
58
  exports.FindRouteMiddlewareProvider = FindRouteMiddlewareProvider;
56
59
  //# sourceMappingURL=find-route.provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"find-route.provider.js","sourceRoot":"","sources":["../../src/providers/find-route.provider.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;;AAEhE,yCAA+D;AAC/D,+CAA2D;AAC3D,kDAA4C;AAC5C,kCAA+C;AAE/C,0CAAiD;AAGjD,IAAa,iBAAiB,GAA9B,MAAa,iBAAiB;IAC5B,YAC+C,OAAgB,EACrB,OAAoB;QADf,YAAO,GAAP,OAAO,CAAS;QACrB,YAAO,GAAP,OAAO,CAAa;IAC3D,CAAC;IAEJ,KAAK;QACH,OAAO,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,OAAgB;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC9C,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAA;AAfY,iBAAiB;IAEzB,mBAAA,aAAM,CAAC,mBAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACjC,mBAAA,aAAM,CAAC,mBAAY,CAAC,OAAO,CAAC,CAAA;6CADyB,cAAO;QACZ,0BAAW;GAHnD,iBAAiB,CAe7B;AAfY,8CAAiB;AAuB9B,IAAa,2BAA2B,GAAxC,MAAa,2BAA2B;IACtC,YAEY,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;IAC7B,CAAC;IAEJ,KAAK;QACH,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC1C,GAAG,CAAC,IAAI,CAAC,mBAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YACjD,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC;CACF,CAAA;AAbY,2BAA2B;IANvC,WAAI,CACH,sBAAY,CAAC;QACX,KAAK,EAAE,+BAAoB,CAAC,UAAU;QACtC,KAAK,EAAE,eAAQ,CAAC,qBAAqB;KACtC,CAAC,CACH;IAGI,mBAAA,aAAM,CAAC,mBAAY,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;;GAFvC,2BAA2B,CAavC;AAbY,kEAA2B"}
1
+ {"version":3,"file":"find-route.provider.js","sourceRoot":"","sources":["../../src/providers/find-route.provider.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;;AAEhE,yCAMwB;AACxB,+CAA2D;AAC3D,0DAAiC;AACjC,kDAA4C;AAC5C,kCAA+C;AAE/C,0CAAiD;AAGjD,MAAM,KAAK,GAAG,eAAY,CAAC,0BAA0B,CAAC,CAAC;AAEvD,IAAa,iBAAiB,GAA9B,MAAa,iBAAiB;IAC5B,YAC+C,OAAgB,EACrB,OAAoB;QADf,YAAO,GAAP,OAAO,CAAS;QACrB,YAAO,GAAP,OAAO,CAAa;IAC3D,CAAC;IAEJ,KAAK;QACH,OAAO,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,OAAgB;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC9C,KAAK,CAAC,uBAAuB,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAC3E,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAA;AAhBY,iBAAiB;IAEzB,mBAAA,aAAM,CAAC,mBAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACjC,mBAAA,aAAM,CAAC,mBAAY,CAAC,OAAO,CAAC,CAAA;6CADyB,cAAO;QACZ,0BAAW;GAHnD,iBAAiB,CAgB7B;AAhBY,8CAAiB;AAyB9B,IAAa,2BAA2B,GAAxC,MAAa,2BAA2B;IACtC,KAAK;QACH,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACzB,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;YAC5B,KAAK,CAAC,yBAAyB,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;YACtE,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,mBAAY,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACzC,KAAK,CACH,uBAAuB,EACvB,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,WAAW,EACnB,KAAK,CACN,CAAC;YACF,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YAC1B,GAAG,CAAC,IAAI,CAAC,mBAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YACjD,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC;CACF,CAAA;AAlBY,2BAA2B;IAPvC,iBAAU,CACT,sBAAY,CAAC;QACX,KAAK,EAAE,+BAAoB,CAAC,UAAU;QACtC,KAAK,EAAE,eAAQ,CAAC,qBAAqB;KACtC,CAAC,EACF,EAAC,KAAK,EAAE,mBAAY,CAAC,SAAS,EAAC,CAChC;GACY,2BAA2B,CAkBvC;AAlBY,kEAA2B"}
@@ -9,7 +9,5 @@ export declare class InvokeMethodProvider implements Provider<InvokeMethod> {
9
9
  action(route: RouteEntry, args: OperationArgs): Promise<OperationRetval>;
10
10
  }
11
11
  export declare class InvokeMethodMiddlewareProvider implements Provider<Middleware> {
12
- protected invokeMethod: InvokeMethod;
13
- constructor(invokeMethod: InvokeMethod);
14
12
  value(): Middleware;
15
13
  }
@@ -8,8 +8,10 @@ exports.InvokeMethodMiddlewareProvider = exports.InvokeMethodProvider = void 0;
8
8
  const tslib_1 = require("tslib");
9
9
  const core_1 = require("@loopback/core");
10
10
  const express_1 = require("@loopback/express");
11
+ const debug_1 = tslib_1.__importDefault(require("debug"));
11
12
  const keys_1 = require("../keys");
12
13
  const sequence_1 = require("../sequence");
14
+ const debug = debug_1.default('loopback:rest:invoke-method');
13
15
  let InvokeMethodProvider = class InvokeMethodProvider {
14
16
  constructor(context) {
15
17
  this.context = context;
@@ -27,27 +29,36 @@ InvokeMethodProvider = tslib_1.__decorate([
27
29
  ], InvokeMethodProvider);
28
30
  exports.InvokeMethodProvider = InvokeMethodProvider;
29
31
  let InvokeMethodMiddlewareProvider = class InvokeMethodMiddlewareProvider {
30
- constructor(invokeMethod) {
31
- this.invokeMethod = invokeMethod;
32
- }
33
32
  value() {
34
33
  return async (ctx, next) => {
35
34
  const route = await ctx.get(keys_1.RestBindings.Operation.ROUTE);
36
35
  const params = await ctx.get(keys_1.RestBindings.Operation.PARAMS);
37
- const retVal = await this.invokeMethod(route, params);
38
- ctx.bind(keys_1.RestBindings.Operation.RETURN_VALUE).to(retVal);
39
- return retVal;
36
+ if (debug.enabled) {
37
+ debug('Invoking method %s with', route.describe(), params);
38
+ }
39
+ try {
40
+ const retVal = await route.invokeHandler(ctx, params);
41
+ ctx.bind(keys_1.RestBindings.Operation.RETURN_VALUE).to(retVal);
42
+ if (debug.enabled) {
43
+ debug('Return value from %s', route.describe(), retVal);
44
+ }
45
+ return retVal;
46
+ }
47
+ catch (err) {
48
+ if (debug.enabled) {
49
+ debug('Error thrown from %s', route.describe(), err);
50
+ }
51
+ throw err;
52
+ }
40
53
  };
41
54
  }
42
55
  };
43
56
  InvokeMethodMiddlewareProvider = tslib_1.__decorate([
44
- core_1.bind(express_1.asMiddleware({
57
+ core_1.injectable(express_1.asMiddleware({
45
58
  group: sequence_1.RestMiddlewareGroups.INVOKE_METHOD,
46
59
  upstreamGroups: sequence_1.RestMiddlewareGroups.PARSE_PARAMS,
47
60
  chain: keys_1.RestTags.REST_MIDDLEWARE_CHAIN,
48
- })),
49
- tslib_1.__param(0, core_1.inject(keys_1.RestBindings.SequenceActions.INVOKE_METHOD)),
50
- tslib_1.__metadata("design:paramtypes", [Function])
61
+ }), { scope: core_1.BindingScope.SINGLETON })
51
62
  ], InvokeMethodMiddlewareProvider);
52
63
  exports.InvokeMethodMiddlewareProvider = InvokeMethodMiddlewareProvider;
53
64
  //# sourceMappingURL=invoke-method.provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"invoke-method.provider.js","sourceRoot":"","sources":["../../src/providers/invoke-method.provider.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;;AAEhE,yCAA+D;AAC/D,+CAA2D;AAC3D,kCAA+C;AAE/C,0CAAiD;AAGjD,IAAa,oBAAoB,GAAjC,MAAa,oBAAoB;IAC/B,YAAyD,OAAgB;QAAhB,YAAO,GAAP,OAAO,CAAS;IAAG,CAAC;IAE7E,KAAK;QACH,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,CAAC,KAAiB,EAAE,IAAmB;QAC3C,OAAO,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;CACF,CAAA;AAVY,oBAAoB;IAClB,mBAAA,aAAM,CAAC,mBAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;6CAAoB,cAAO;GAD9D,oBAAoB,CAUhC;AAVY,oDAAoB;AAmBjC,IAAa,8BAA8B,GAA3C,MAAa,8BAA8B;IACzC,YAEY,YAA0B;QAA1B,iBAAY,GAAZ,YAAY,CAAc;IACnC,CAAC;IAEJ,KAAK;QACH,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACzB,MAAM,KAAK,GAAe,MAAM,GAAG,CAAC,GAAG,CAAC,mBAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACtE,MAAM,MAAM,GAAkB,MAAM,GAAG,CAAC,GAAG,CACzC,mBAAY,CAAC,SAAS,CAAC,MAAM,CAC9B,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACtD,GAAG,CAAC,IAAI,CAAC,mBAAY,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;YACzD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC;CACF,CAAA;AAjBY,8BAA8B;IAP1C,WAAI,CACH,sBAAY,CAAC;QACX,KAAK,EAAE,+BAAoB,CAAC,aAAa;QACzC,cAAc,EAAE,+BAAoB,CAAC,YAAY;QACjD,KAAK,EAAE,eAAQ,CAAC,qBAAqB;KACtC,CAAC,CACH;IAGI,mBAAA,aAAM,CAAC,mBAAY,CAAC,eAAe,CAAC,aAAa,CAAC,CAAA;;GAF1C,8BAA8B,CAiB1C;AAjBY,wEAA8B"}
1
+ {"version":3,"file":"invoke-method.provider.js","sourceRoot":"","sources":["../../src/providers/invoke-method.provider.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;;AAEhE,yCAMwB;AACxB,+CAA2D;AAC3D,0DAAiC;AACjC,kCAA+C;AAE/C,0CAAiD;AAGjD,MAAM,KAAK,GAAG,eAAY,CAAC,6BAA6B,CAAC,CAAC;AAE1D,IAAa,oBAAoB,GAAjC,MAAa,oBAAoB;IAC/B,YAAyD,OAAgB;QAAhB,YAAO,GAAP,OAAO,CAAS;IAAG,CAAC;IAE7E,KAAK;QACH,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,CAAC,KAAiB,EAAE,IAAmB;QAC3C,OAAO,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;CACF,CAAA;AAVY,oBAAoB;IAClB,mBAAA,aAAM,CAAC,mBAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;6CAAoB,cAAO;GAD9D,oBAAoB,CAUhC;AAVY,oDAAoB;AAoBjC,IAAa,8BAA8B,GAA3C,MAAa,8BAA8B;IACzC,KAAK;QACH,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACzB,MAAM,KAAK,GAAe,MAAM,GAAG,CAAC,GAAG,CAAC,mBAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACtE,MAAM,MAAM,GAAkB,MAAM,GAAG,CAAC,GAAG,CACzC,mBAAY,CAAC,SAAS,CAAC,MAAM,CAC9B,CAAC;YACF,IAAI,KAAK,CAAC,OAAO,EAAE;gBACjB,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC;aAC5D;YACD,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBACtD,GAAG,CAAC,IAAI,CAAC,mBAAY,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;gBACzD,IAAI,KAAK,CAAC,OAAO,EAAE;oBACjB,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC;iBACzD;gBACD,OAAO,MAAM,CAAC;aACf;YAAC,OAAO,GAAG,EAAE;gBACZ,IAAI,KAAK,CAAC,OAAO,EAAE;oBACjB,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC;iBACtD;gBACD,MAAM,GAAG,CAAC;aACX;QACH,CAAC,CAAC;IACJ,CAAC;CACF,CAAA;AAzBY,8BAA8B;IAR1C,iBAAU,CACT,sBAAY,CAAC;QACX,KAAK,EAAE,+BAAoB,CAAC,aAAa;QACzC,cAAc,EAAE,+BAAoB,CAAC,YAAY;QACjD,KAAK,EAAE,eAAQ,CAAC,qBAAqB;KACtC,CAAC,EACF,EAAC,KAAK,EAAE,mBAAY,CAAC,SAAS,EAAC,CAChC;GACY,8BAA8B,CAyB1C;AAzBY,wEAA8B"}
@@ -5,7 +5,9 @@
5
5
  // License text available at https://opensource.org/licenses/MIT
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.LogErrorProvider = void 0;
8
- class LogErrorProvider {
8
+ const tslib_1 = require("tslib");
9
+ const core_1 = require("@loopback/core");
10
+ let LogErrorProvider = class LogErrorProvider {
9
11
  value() {
10
12
  return (err, statusCode, req) => this.action(err, statusCode, req);
11
13
  }
@@ -16,6 +18,9 @@ class LogErrorProvider {
16
18
  }
17
19
  console.error('Unhandled error in %s %s: %s %s', req.method, req.url, statusCode, (_a = err.stack) !== null && _a !== void 0 ? _a : err);
18
20
  }
19
- }
21
+ };
22
+ LogErrorProvider = tslib_1.__decorate([
23
+ core_1.injectable({ scope: core_1.BindingScope.SINGLETON })
24
+ ], LogErrorProvider);
20
25
  exports.LogErrorProvider = LogErrorProvider;
21
26
  //# sourceMappingURL=log-error.provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"log-error.provider.js","sourceRoot":"","sources":["../../src/providers/log-error.provider.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;AAKhE,MAAa,gBAAgB;IAC3B,KAAK;QACH,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,CAAC,GAAU,EAAE,UAAkB,EAAE,GAAY;;QACjD,IAAI,UAAU,GAAG,GAAG,EAAE;YACpB,OAAO;SACR;QAED,OAAO,CAAC,KAAK,CACX,iCAAiC,EACjC,GAAG,CAAC,MAAM,EACV,GAAG,CAAC,GAAG,EACP,UAAU,QACV,GAAG,CAAC,KAAK,mCAAI,GAAG,CACjB,CAAC;IACJ,CAAC;CACF;AAlBD,4CAkBC"}
1
+ {"version":3,"file":"log-error.provider.js","sourceRoot":"","sources":["../../src/providers/log-error.provider.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;;AAEhE,yCAAkE;AAIlE,IAAa,gBAAgB,GAA7B,MAAa,gBAAgB;IAC3B,KAAK;QACH,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,CAAC,GAAU,EAAE,UAAkB,EAAE,GAAY;;QACjD,IAAI,UAAU,GAAG,GAAG,EAAE;YACpB,OAAO;SACR;QAED,OAAO,CAAC,KAAK,CACX,iCAAiC,EACjC,GAAG,CAAC,MAAM,EACV,GAAG,CAAC,GAAG,EACP,UAAU,QACV,GAAG,CAAC,KAAK,mCAAI,GAAG,CACjB,CAAC;IACJ,CAAC;CACF,CAAA;AAlBY,gBAAgB;IAD5B,iBAAU,CAAC,EAAC,KAAK,EAAE,mBAAY,CAAC,SAAS,EAAC,CAAC;GAC/B,gBAAgB,CAkB5B;AAlBY,4CAAgB"}
@@ -15,7 +15,5 @@ export declare class ParseParamsProvider implements Provider<ParseParams> {
15
15
  value(): ParseParams;
16
16
  }
17
17
  export declare class ParseParamsMiddlewareProvider implements Provider<Middleware> {
18
- protected parseParams: ParseParams;
19
- constructor(parseParams: ParseParams);
20
18
  value(): Middleware;
21
19
  }
@@ -8,11 +8,13 @@ exports.ParseParamsMiddlewareProvider = exports.ParseParamsProvider = void 0;
8
8
  const tslib_1 = require("tslib");
9
9
  const core_1 = require("@loopback/core");
10
10
  const express_1 = require("@loopback/express");
11
+ const debug_1 = tslib_1.__importDefault(require("debug"));
11
12
  const body_parsers_1 = require("../body-parsers");
12
13
  const keys_1 = require("../keys");
13
14
  const parser_1 = require("../parser");
14
15
  const sequence_1 = require("../sequence");
15
16
  const ajv_factory_provider_1 = require("../validation/ajv-factory.provider");
17
+ const debug = debug_1.default('loopback:rest:parse-param');
16
18
  /**
17
19
  * Provides the function for parsing args in requests at runtime.
18
20
  *
@@ -39,26 +41,32 @@ ParseParamsProvider = tslib_1.__decorate([
39
41
  ], ParseParamsProvider);
40
42
  exports.ParseParamsProvider = ParseParamsProvider;
41
43
  let ParseParamsMiddlewareProvider = class ParseParamsMiddlewareProvider {
42
- constructor(parseParams) {
43
- this.parseParams = parseParams;
44
- }
45
44
  value() {
46
45
  return async (ctx, next) => {
46
+ var _a;
47
+ const requestBodyParser = await ctx.get(keys_1.RestBindings.REQUEST_BODY_PARSER);
48
+ const validationOptions = (_a = (await ctx.get(keys_1.RestBindings.REQUEST_BODY_PARSER_OPTIONS.deepProperty('validation'), { optional: true }))) !== null && _a !== void 0 ? _a : ajv_factory_provider_1.DEFAULT_AJV_VALIDATION_OPTIONS;
49
+ const ajvFactory = await ctx.get(keys_1.RestBindings.AJV_FACTORY, {
50
+ optional: true,
51
+ });
47
52
  const route = await ctx.get(keys_1.RestBindings.Operation.ROUTE);
48
- const params = await this.parseParams(ctx.request, route);
53
+ debug('Parsing parameters for %s %s', route.verb, route.path);
54
+ const params = await parser_1.parseOperationArgs(ctx.request, route, requestBodyParser, {
55
+ ajvFactory: ajvFactory,
56
+ ...validationOptions,
57
+ });
49
58
  ctx.bind(keys_1.RestBindings.Operation.PARAMS).to(params);
59
+ debug('Parameters', params);
50
60
  return next();
51
61
  };
52
62
  }
53
63
  };
54
64
  ParseParamsMiddlewareProvider = tslib_1.__decorate([
55
- core_1.bind(express_1.asMiddleware({
65
+ core_1.injectable(express_1.asMiddleware({
56
66
  group: sequence_1.RestMiddlewareGroups.PARSE_PARAMS,
57
67
  upstreamGroups: sequence_1.RestMiddlewareGroups.FIND_ROUTE,
58
68
  chain: keys_1.RestTags.REST_MIDDLEWARE_CHAIN,
59
- })),
60
- tslib_1.__param(0, core_1.inject(keys_1.RestBindings.SequenceActions.PARSE_PARAMS)),
61
- tslib_1.__metadata("design:paramtypes", [Function])
69
+ }), { scope: core_1.BindingScope.SINGLETON })
62
70
  ], ParseParamsMiddlewareProvider);
63
71
  exports.ParseParamsMiddlewareProvider = ParseParamsMiddlewareProvider;
64
72
  //# sourceMappingURL=parse-params.provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parse-params.provider.js","sourceRoot":"","sources":["../../src/providers/parse-params.provider.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;;AAEhE,yCAAsD;AACtD,+CAA2D;AAC3D,kDAAkD;AAClD,kCAA+C;AAC/C,sCAA6C;AAE7C,0CAAiD;AAEjD,6EAAkF;AAClF;;;;GAIG;AACH,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;IAC9B,YAEU,iBAAoC,EAKpC,oBAAuC,qDAA8B,EAErE,UAAuB;QAPvB,sBAAiB,GAAjB,iBAAiB,CAAmB;QAKpC,sBAAiB,GAAjB,iBAAiB,CAAoD;QAErE,eAAU,GAAV,UAAU,CAAa;IAC9B,CAAC;IAEJ,KAAK;QACH,OAAO,CAAC,OAAgB,EAAE,KAAoB,EAAE,EAAE,CAChD,2BAAkB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE;YACzD,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,GAAG,IAAI,CAAC,iBAAiB;SAC1B,CAAC,CAAC;IACP,CAAC;CACF,CAAA;AApBY,mBAAmB;IAE3B,mBAAA,aAAM,CAAC,mBAAY,CAAC,mBAAmB,CAAC,CAAA;IAExC,mBAAA,aAAM,CACL,mBAAY,CAAC,2BAA2B,CAAC,YAAY,CAAC,YAAY,CAAC,EACnE,EAAC,QAAQ,EAAE,IAAI,EAAC,CACjB,CAAA;IAEA,mBAAA,aAAM,CAAC,mBAAY,CAAC,WAAW,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAA;6CANxB,gCAAiB;GAHnC,mBAAmB,CAoB/B;AApBY,kDAAmB;AA6BhC,IAAa,6BAA6B,GAA1C,MAAa,6BAA6B;IACxC,YAEY,WAAwB;QAAxB,gBAAW,GAAX,WAAW,CAAa;IACjC,CAAC;IAEJ,KAAK;QACH,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACzB,MAAM,KAAK,GAAkB,MAAM,GAAG,CAAC,GAAG,CAAC,mBAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACzE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC1D,GAAG,CAAC,IAAI,CAAC,mBAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;YACnD,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC;CACF,CAAA;AAdY,6BAA6B;IAPzC,WAAI,CACH,sBAAY,CAAC;QACX,KAAK,EAAE,+BAAoB,CAAC,YAAY;QACxC,cAAc,EAAE,+BAAoB,CAAC,UAAU;QAC/C,KAAK,EAAE,eAAQ,CAAC,qBAAqB;KACtC,CAAC,CACH;IAGI,mBAAA,aAAM,CAAC,mBAAY,CAAC,eAAe,CAAC,YAAY,CAAC,CAAA;;GAFzC,6BAA6B,CAczC;AAdY,sEAA6B"}
1
+ {"version":3,"file":"parse-params.provider.js","sourceRoot":"","sources":["../../src/providers/parse-params.provider.ts"],"names":[],"mappings":";AAAA,sDAAsD;AACtD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;;AAEhE,yCAA0E;AAC1E,+CAA2D;AAC3D,0DAAiC;AACjC,kDAAkD;AAClD,kCAA+C;AAC/C,sCAA6C;AAE7C,0CAAiD;AAEjD,6EAAkF;AAElF,MAAM,KAAK,GAAG,eAAY,CAAC,2BAA2B,CAAC,CAAC;AAExD;;;;GAIG;AACH,IAAa,mBAAmB,GAAhC,MAAa,mBAAmB;IAC9B,YAEU,iBAAoC,EAKpC,oBAAuC,qDAA8B,EAErE,UAAuB;QAPvB,sBAAiB,GAAjB,iBAAiB,CAAmB;QAKpC,sBAAiB,GAAjB,iBAAiB,CAAoD;QAErE,eAAU,GAAV,UAAU,CAAa;IAC9B,CAAC;IAEJ,KAAK;QACH,OAAO,CAAC,OAAgB,EAAE,KAAoB,EAAE,EAAE,CAChD,2BAAkB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,iBAAiB,EAAE;YACzD,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,GAAG,IAAI,CAAC,iBAAiB;SAC1B,CAAC,CAAC;IACP,CAAC;CACF,CAAA;AApBY,mBAAmB;IAE3B,mBAAA,aAAM,CAAC,mBAAY,CAAC,mBAAmB,CAAC,CAAA;IAExC,mBAAA,aAAM,CACL,mBAAY,CAAC,2BAA2B,CAAC,YAAY,CAAC,YAAY,CAAC,EACnE,EAAC,QAAQ,EAAE,IAAI,EAAC,CACjB,CAAA;IAEA,mBAAA,aAAM,CAAC,mBAAY,CAAC,WAAW,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAA;6CANxB,gCAAiB;GAHnC,mBAAmB,CAoB/B;AApBY,kDAAmB;AA8BhC,IAAa,6BAA6B,GAA1C,MAAa,6BAA6B;IACxC,KAAK;QACH,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;;YACzB,MAAM,iBAAiB,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,mBAAY,CAAC,mBAAmB,CAAC,CAAC;YAC1E,MAAM,iBAAiB,SACrB,CAAC,MAAM,GAAG,CAAC,GAAG,CACZ,mBAAY,CAAC,2BAA2B,CAAC,YAAY,CAAC,YAAY,CAAC,EACnE,EAAC,QAAQ,EAAE,IAAI,EAAC,CACjB,CAAC,mCAAI,qDAA8B,CAAC;YACvC,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,mBAAY,CAAC,WAAW,EAAE;gBACzD,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;YAEH,MAAM,KAAK,GAAkB,MAAM,GAAG,CAAC,GAAG,CAAC,mBAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACzE,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9D,MAAM,MAAM,GAAG,MAAM,2BAAkB,CACrC,GAAG,CAAC,OAAO,EACX,KAAK,EACL,iBAAiB,EACjB;gBACE,UAAU,EAAE,UAAU;gBACtB,GAAG,iBAAiB;aACrB,CACF,CAAC;YACF,GAAG,CAAC,IAAI,CAAC,mBAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;YACnD,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YAC5B,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC;CACF,CAAA;AA7BY,6BAA6B;IARzC,iBAAU,CACT,sBAAY,CAAC;QACX,KAAK,EAAE,+BAAoB,CAAC,YAAY;QACxC,cAAc,EAAE,+BAAoB,CAAC,UAAU;QAC/C,KAAK,EAAE,eAAQ,CAAC,qBAAqB;KACtC,CAAC,EACF,EAAC,KAAK,EAAE,mBAAY,CAAC,SAAS,EAAC,CAChC;GACY,6BAA6B,CA6BzC;AA7BY,sEAA6B"}
@@ -1,6 +1,6 @@
1
- import { LogError, Reject, HandlerContext } from '../types';
2
1
  import { Provider } from '@loopback/core';
3
2
  import { ErrorWriterOptions } from 'strong-error-handler';
3
+ import { HandlerContext, LogError, Reject } from '../types';
4
4
  export declare class RejectProvider implements Provider<Reject> {
5
5
  protected logError: LogError;
6
6
  protected errorWriterOptions?: ErrorWriterOptions | undefined;
@@ -7,8 +7,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.RejectProvider = void 0;
8
8
  const tslib_1 = require("tslib");
9
9
  const core_1 = require("@loopback/core");
10
- const keys_1 = require("../keys");
11
10
  const strong_error_handler_1 = require("strong-error-handler");
11
+ const keys_1 = require("../keys");
12
12
  // TODO(bajtos) Make this mapping configurable at RestServer level,
13
13
  // allow apps and extensions to contribute additional mappings.
14
14
  const codeToStatusCodeMap = {
@@ -36,6 +36,7 @@ let RejectProvider = class RejectProvider {
36
36
  }
37
37
  };
38
38
  RejectProvider = tslib_1.__decorate([
39
+ core_1.injectable({ scope: core_1.BindingScope.SINGLETON }),
39
40
  tslib_1.__param(0, core_1.inject(keys_1.RestBindings.SequenceActions.LOG_ERROR)),
40
41
  tslib_1.__param(1, core_1.inject(keys_1.RestBindings.ERROR_WRITER_OPTIONS, { optional: true })),
41
42
  tslib_1.__metadata("design:paramtypes", [Function, Object])