@loopback/openapi-v3 1.10.3 → 2.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 +131 -0
- package/dist/controller-spec.js +114 -35
- package/dist/controller-spec.js.map +1 -1
- package/dist/decorators/api.decorator.js +2 -2
- package/dist/decorators/api.decorator.js.map +1 -1
- package/dist/decorators/deprecated.decorator.d.ts +37 -0
- package/dist/decorators/deprecated.decorator.js +71 -0
- package/dist/decorators/deprecated.decorator.js.map +1 -0
- package/dist/decorators/index.d.ts +20 -0
- package/dist/decorators/index.js +24 -0
- package/dist/decorators/index.js.map +1 -1
- package/dist/decorators/operation.decorator.js +2 -2
- package/dist/decorators/operation.decorator.js.map +1 -1
- package/dist/decorators/parameter.decorator.js +13 -6
- package/dist/decorators/parameter.decorator.js.map +1 -1
- package/dist/decorators/request-body.decorator.js +3 -3
- package/dist/decorators/request-body.decorator.js.map +1 -1
- package/dist/decorators/tags.decorator.d.ts +1 -0
- package/dist/decorators/tags.decorator.js +33 -0
- package/dist/decorators/tags.decorator.js.map +1 -0
- package/dist/enhancers/index.d.ts +3 -0
- package/dist/enhancers/index.js +13 -0
- package/dist/enhancers/index.js.map +1 -0
- package/dist/enhancers/keys.d.ts +6 -0
- package/dist/enhancers/keys.js +12 -0
- package/dist/enhancers/keys.js.map +1 -0
- package/dist/enhancers/spec-enhancer.service.d.ts +73 -0
- package/dist/enhancers/spec-enhancer.service.js +135 -0
- package/dist/enhancers/spec-enhancer.service.js.map +1 -0
- package/dist/enhancers/types.d.ts +18 -0
- package/dist/enhancers/types.js +20 -0
- package/dist/enhancers/types.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/json-to-schema.js +9 -7
- package/dist/json-to-schema.js.map +1 -1
- package/dist/keys.d.ts +17 -1
- package/dist/keys.js +22 -10
- package/dist/keys.js.map +1 -1
- package/dist/types.d.ts +3 -0
- package/package.json +11 -10
- package/src/controller-spec.ts +134 -19
- package/src/decorators/api.decorator.ts +1 -1
- package/src/decorators/deprecated.decorator.ts +87 -0
- package/src/decorators/index.ts +30 -0
- package/src/decorators/operation.decorator.ts +1 -1
- package/src/decorators/parameter.decorator.ts +11 -6
- package/src/decorators/request-body.decorator.ts +1 -1
- package/src/decorators/tags.decorator.ts +46 -0
- package/src/enhancers/index.ts +8 -0
- package/src/enhancers/keys.ts +14 -0
- package/src/enhancers/spec-enhancer.service.ts +121 -0
- package/src/enhancers/types.ts +30 -0
- package/src/index.ts +1 -0
- package/src/json-to-schema.ts +13 -7
- package/src/keys.ts +33 -6
- package/src/types.ts +4 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// Copyright IBM Corp. 2019. All Rights Reserved.
|
|
2
|
+
// Node module: @loopback/openapi-v3
|
|
3
|
+
// This file is licensed under the MIT License.
|
|
4
|
+
// License text available at https://opensource.org/licenses/MIT
|
|
5
|
+
|
|
6
|
+
import {BindingTemplate, extensionFor} from '@loopback/core';
|
|
7
|
+
import {OpenApiSpec} from '../types';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Typically an extension point defines an interface as the contract for
|
|
11
|
+
* extensions to implement
|
|
12
|
+
*/
|
|
13
|
+
export interface OASEnhancer {
|
|
14
|
+
name: string;
|
|
15
|
+
modifySpec(spec: OpenApiSpec): OpenApiSpec;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Name/id of the OAS enhancer extension point
|
|
20
|
+
*/
|
|
21
|
+
export const OAS_ENHANCER_EXTENSION_POINT_NAME = 'oas-enhancer';
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* A binding template for spec contributor extensions
|
|
25
|
+
*/
|
|
26
|
+
export const asSpecEnhancer: BindingTemplate = binding => {
|
|
27
|
+
extensionFor(OAS_ENHANCER_EXTENSION_POINT_NAME)(binding);
|
|
28
|
+
// is it ok to have a different namespace than the extension point name?
|
|
29
|
+
binding.tag({namespace: 'oas-enhancer'});
|
|
30
|
+
};
|
package/src/index.ts
CHANGED
package/src/json-to-schema.ts
CHANGED
|
@@ -56,13 +56,7 @@ export function jsonToSchemaObject(
|
|
|
56
56
|
[converted]: false,
|
|
57
57
|
};
|
|
58
58
|
visited.set(json, result);
|
|
59
|
-
const propsToIgnore = [
|
|
60
|
-
'anyOf',
|
|
61
|
-
'oneOf',
|
|
62
|
-
'additionalItems',
|
|
63
|
-
'defaultProperties',
|
|
64
|
-
'typeof',
|
|
65
|
-
];
|
|
59
|
+
const propsToIgnore = ['additionalItems', 'defaultProperties', 'typeof'];
|
|
66
60
|
for (const property in json) {
|
|
67
61
|
if (propsToIgnore.includes(property)) {
|
|
68
62
|
continue;
|
|
@@ -83,6 +77,18 @@ export function jsonToSchemaObject(
|
|
|
83
77
|
);
|
|
84
78
|
break;
|
|
85
79
|
}
|
|
80
|
+
case 'anyOf': {
|
|
81
|
+
result.anyOf = _.map(json.anyOf, item =>
|
|
82
|
+
jsonToSchemaObject(item as JsonSchema, visited),
|
|
83
|
+
);
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
case 'oneOf': {
|
|
87
|
+
result.oneOf = _.map(json.oneOf, item =>
|
|
88
|
+
jsonToSchemaObject(item as JsonSchema, visited),
|
|
89
|
+
);
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
86
92
|
case 'definitions': {
|
|
87
93
|
result.definitions = _.mapValues(json.definitions, def =>
|
|
88
94
|
jsonToSchemaObject(jsonOrBooleanToJSON(def), visited),
|
package/src/keys.ts
CHANGED
|
@@ -3,15 +3,10 @@
|
|
|
3
3
|
// This file is licensed under the MIT License.
|
|
4
4
|
// License text available at https://opensource.org/licenses/MIT
|
|
5
5
|
|
|
6
|
-
import {MetadataAccessor} from '@loopback/
|
|
6
|
+
import {MetadataAccessor} from '@loopback/core';
|
|
7
7
|
import {ControllerSpec, RestEndpoint} from './controller-spec';
|
|
8
8
|
import {ParameterObject, RequestBodyObject} from './types';
|
|
9
9
|
|
|
10
|
-
// Copyright IBM Corp. 2018. All Rights Reserved.
|
|
11
|
-
// Node module: @loopback/openapi-v3
|
|
12
|
-
// This file is licensed under the MIT License.
|
|
13
|
-
// License text available at https://opensource.org/licenses/MIT
|
|
14
|
-
|
|
15
10
|
export namespace OAI3Keys {
|
|
16
11
|
/**
|
|
17
12
|
* Metadata key used to set or retrieve `@operation` metadata.
|
|
@@ -21,6 +16,22 @@ export namespace OAI3Keys {
|
|
|
21
16
|
MethodDecorator
|
|
22
17
|
>('openapi-v3:methods');
|
|
23
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Metadata key used to set or retrieve `@deprecated` metadata on a method.
|
|
21
|
+
*/
|
|
22
|
+
export const DEPRECATED_METHOD_KEY = MetadataAccessor.create<
|
|
23
|
+
boolean,
|
|
24
|
+
MethodDecorator
|
|
25
|
+
>('openapi-v3:methods:deprecated');
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Metadata key used to set or retrieve `@deprecated` metadata on a class
|
|
29
|
+
*/
|
|
30
|
+
export const DEPRECATED_CLASS_KEY = MetadataAccessor.create<
|
|
31
|
+
boolean,
|
|
32
|
+
ClassDecorator
|
|
33
|
+
>('openapi-v3:class:deprecated');
|
|
34
|
+
|
|
24
35
|
/**
|
|
25
36
|
* Metadata key used to set or retrieve `param` decorator metadata
|
|
26
37
|
*/
|
|
@@ -29,6 +40,22 @@ export namespace OAI3Keys {
|
|
|
29
40
|
ParameterDecorator
|
|
30
41
|
>('openapi-v3:parameters');
|
|
31
42
|
|
|
43
|
+
/**
|
|
44
|
+
* Metadata key used to set or retrieve `@deprecated` metadata on a method.
|
|
45
|
+
*/
|
|
46
|
+
export const TAGS_METHOD_KEY = MetadataAccessor.create<
|
|
47
|
+
string[],
|
|
48
|
+
MethodDecorator
|
|
49
|
+
>('openapi-v3:methods:tags');
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Metadata key used to set or retrieve `@deprecated` metadata on a class
|
|
53
|
+
*/
|
|
54
|
+
export const TAGS_CLASS_KEY = MetadataAccessor.create<
|
|
55
|
+
string[],
|
|
56
|
+
ClassDecorator
|
|
57
|
+
>('openapi-v3:class:tags');
|
|
58
|
+
|
|
32
59
|
/**
|
|
33
60
|
* Metadata key used to set or retrieve `@api` metadata
|
|
34
61
|
*/
|