@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.
- package/CHANGELOG.md +109 -0
- package/dist/body-parsers/body-parser.js +3 -0
- package/dist/body-parsers/body-parser.js.map +1 -1
- package/dist/coercion/coerce-parameter.d.ts +1 -1
- package/dist/coercion/coerce-parameter.js +36 -13
- package/dist/coercion/coerce-parameter.js.map +1 -1
- package/dist/coercion/utils.d.ts +1 -1
- package/dist/http-handler.js +5 -0
- package/dist/http-handler.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/providers/find-route.provider.d.ts +0 -2
- package/dist/providers/find-route.provider.js +11 -8
- package/dist/providers/find-route.provider.js.map +1 -1
- package/dist/providers/invoke-method.provider.d.ts +0 -2
- package/dist/providers/invoke-method.provider.js +21 -10
- package/dist/providers/invoke-method.provider.js.map +1 -1
- package/dist/providers/log-error.provider.js +7 -2
- package/dist/providers/log-error.provider.js.map +1 -1
- package/dist/providers/parse-params.provider.d.ts +0 -2
- package/dist/providers/parse-params.provider.js +16 -8
- package/dist/providers/parse-params.provider.js.map +1 -1
- package/dist/providers/reject.provider.d.ts +1 -1
- package/dist/providers/reject.provider.js +2 -1
- package/dist/providers/reject.provider.js.map +1 -1
- package/dist/providers/send.provider.d.ts +1 -4
- package/dist/providers/send.provider.js +11 -13
- package/dist/providers/send.provider.js.map +1 -1
- package/dist/request-context.js.map +1 -1
- package/dist/rest.application.js +1 -1
- package/dist/rest.application.js.map +1 -1
- package/dist/rest.server.d.ts +1 -0
- package/dist/rest.server.js +5 -4
- package/dist/rest.server.js.map +1 -1
- package/dist/router/base-route.js +3 -3
- package/dist/router/base-route.js.map +1 -1
- package/dist/router/controller-route.js +1 -1
- package/dist/router/controller-route.js.map +1 -1
- package/dist/router/handler-route.js +1 -1
- package/dist/router/handler-route.js.map +1 -1
- package/dist/router/redirect-route.js +1 -1
- package/dist/router/redirect-route.js.map +1 -1
- package/dist/sequence.js +1 -1
- package/dist/sequence.js.map +1 -1
- package/dist/spec-enhancers/consolidate.spec-enhancer.js +1 -1
- package/dist/spec-enhancers/consolidate.spec-enhancer.js.map +1 -1
- package/dist/spec-enhancers/info.spec-enhancer.js +13 -5
- package/dist/spec-enhancers/info.spec-enhancer.js.map +1 -1
- package/dist/validation/ajv-factory.provider.js +5 -3
- package/dist/validation/ajv-factory.provider.js.map +1 -1
- package/dist/validation/openapi-formats.d.ts +26 -0
- package/dist/validation/openapi-formats.js +85 -0
- package/dist/validation/openapi-formats.js.map +1 -0
- package/dist/validation/request-body.validator.d.ts +4 -4
- package/dist/validation/request-body.validator.js +5 -8
- package/dist/validation/request-body.validator.js.map +1 -1
- package/package.json +25 -22
- package/src/body-parsers/body-parser.ts +3 -0
- package/src/coercion/coerce-parameter.ts +43 -19
- package/src/http-handler.ts +6 -0
- package/src/providers/find-route.provider.ts +24 -8
- package/src/providers/invoke-method.provider.ts +28 -10
- package/src/providers/log-error.provider.ts +2 -1
- package/src/providers/parse-params.provider.ts +28 -8
- package/src/providers/reject.provider.ts +4 -3
- package/src/providers/send.provider.ts +9 -12
- package/src/request-context.ts +2 -1
- package/src/rest.application.ts +1 -1
- package/src/rest.server.ts +8 -5
- package/src/router/base-route.ts +3 -3
- package/src/router/controller-route.ts +1 -1
- package/src/router/handler-route.ts +3 -1
- package/src/router/redirect-route.ts +1 -1
- package/src/sequence.ts +2 -2
- package/src/spec-enhancers/consolidate.spec-enhancer.ts +2 -2
- package/src/spec-enhancers/info.spec-enhancer.ts +15 -6
- package/src/validation/ajv-factory.provider.ts +8 -4
- package/src/validation/openapi-formats.ts +92 -0
- 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<
|
|
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
|
-
|
|
42
|
+
result = coerceBuffer(data, spec);
|
|
43
|
+
break;
|
|
41
44
|
case 'date':
|
|
42
|
-
|
|
45
|
+
result = coerceDatetime(data, spec, { dateOnly: true });
|
|
46
|
+
break;
|
|
43
47
|
case 'date-time':
|
|
44
|
-
|
|
48
|
+
result = coerceDatetime(data, spec);
|
|
49
|
+
break;
|
|
45
50
|
case 'float':
|
|
46
51
|
case 'double':
|
|
47
52
|
case 'number':
|
|
48
|
-
|
|
53
|
+
result = coerceNumber(data, spec);
|
|
54
|
+
break;
|
|
49
55
|
case 'long':
|
|
50
|
-
|
|
56
|
+
result = coerceInteger(data, spec, { isLong: true });
|
|
57
|
+
break;
|
|
51
58
|
case 'integer':
|
|
52
|
-
|
|
59
|
+
result = coerceInteger(data, spec);
|
|
60
|
+
break;
|
|
53
61
|
case 'boolean':
|
|
54
|
-
|
|
62
|
+
result = coerceBoolean(data, spec);
|
|
63
|
+
break;
|
|
55
64
|
case 'object':
|
|
56
|
-
|
|
65
|
+
result = await coerceObject(data, spec);
|
|
66
|
+
break;
|
|
57
67
|
case 'string':
|
|
58
68
|
case 'password':
|
|
59
|
-
|
|
60
|
-
|
|
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
|
|
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
|
-
|
|
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":";AAAA,sDAAsD;AACtD,8BAA8B;AAC9B,+CAA+C;AAC/C,gEAAgE;;;;AAEhE,qDAK8B;AAC9B,0DAAgC;AAChC,
|
|
1
|
+
{"version":3,"file":"coerce-parameter.js","sourceRoot":"","sources":["../../src/coercion/coerce-parameter.ts"],"names":[],"mappings":"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"}
|
package/dist/coercion/utils.d.ts
CHANGED
|
@@ -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" | "
|
|
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;
|
package/dist/http-handler.js
CHANGED
|
@@ -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
|
}
|
package/dist/http-handler.js.map
CHANGED
|
@@ -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;;;
|
|
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
|
|
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.
|
|
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,
|
|
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
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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.
|
|
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,
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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.
|
|
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,
|
|
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])
|