swagger-client 3.27.9 → 3.28.1
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/dist/swagger-client.browser.js +12494 -12585
- package/dist/swagger-client.browser.min.js +1 -1
- package/dist/swagger-client.browser.min.js.map +1 -1
- package/es/index.js +2 -2
- package/es/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/index.js +81 -119
- package/es/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/visitors/all-of.js +66 -69
- package/es/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/visitors/dereference.js +569 -588
- package/es/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/visitors/parameters.js +31 -34
- package/es/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/visitors/properties.js +25 -28
- package/es/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/visitors/root.js +45 -0
- package/es/resolver/apidom/reference/parse/parsers/json/index.js +43 -42
- package/es/resolver/apidom/reference/parse/parsers/openapi-json-3-1/index.js +46 -45
- package/es/resolver/apidom/reference/parse/parsers/openapi-yaml-3-1/index.js +46 -45
- package/es/resolver/apidom/reference/parse/parsers/yaml-1-2/index.js +44 -43
- package/es/resolver/apidom/reference/resolve/resolvers/http-swagger-client/index.js +62 -60
- package/es/resolver/strategies/openapi-3-1-apidom/resolve.js +18 -18
- package/lib/index.js +1 -1
- package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/index.js +79 -117
- package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/visitors/all-of.js +66 -69
- package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/visitors/dereference.js +568 -587
- package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/visitors/parameters.js +31 -34
- package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/visitors/properties.js +25 -28
- package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/visitors/root.js +51 -0
- package/lib/resolver/apidom/reference/parse/parsers/json/index.js +43 -42
- package/lib/resolver/apidom/reference/parse/parsers/openapi-json-3-1/index.js +46 -45
- package/lib/resolver/apidom/reference/parse/parsers/openapi-yaml-3-1/index.js +46 -45
- package/lib/resolver/apidom/reference/parse/parsers/yaml-1-2/index.js +44 -43
- package/lib/resolver/apidom/reference/resolve/resolvers/http-swagger-client/index.js +61 -59
- package/lib/resolver/strategies/openapi-3-1-apidom/resolve.js +11 -11
- package/package.json +23 -22
- package/es/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/utils/compose.js +0 -5
- package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/utils/compose.js +0 -11
package/es/index.js
CHANGED
|
@@ -12,7 +12,7 @@ import { makeApisTagOperation } from './interfaces.js';
|
|
|
12
12
|
import { execute, buildRequest, baseUrl } from './execute/index.js';
|
|
13
13
|
import { opId, isHttpUrl } from './helpers/index.js';
|
|
14
14
|
import { isOpenAPI2, isOpenAPI3 } from './helpers/openapi-predicates.js';
|
|
15
|
-
import
|
|
15
|
+
import HTTPResolverSwaggerClient from './resolver/apidom/reference/resolve/resolvers/http-swagger-client/index.js';
|
|
16
16
|
import JsonParser from './resolver/apidom/reference/parse/parsers/json/index.js';
|
|
17
17
|
import YamlParser from './resolver/apidom/reference/parse/parsers/yaml-1-2/index.js';
|
|
18
18
|
import OpenApiJson3_1Parser from './resolver/apidom/reference/parse/parsers/openapi-json-3-1/index.js';
|
|
@@ -45,7 +45,7 @@ Swagger.getBaseUrl = baseUrl;
|
|
|
45
45
|
Swagger.apidom = {
|
|
46
46
|
resolve: {
|
|
47
47
|
resolvers: {
|
|
48
|
-
|
|
48
|
+
HTTPResolverSwaggerClient
|
|
49
49
|
}
|
|
50
50
|
},
|
|
51
51
|
parse: {
|
package/es/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/index.js
CHANGED
|
@@ -1,137 +1,99 @@
|
|
|
1
1
|
/* eslint-disable camelcase */
|
|
2
|
-
import { createNamespace, visit,
|
|
2
|
+
import { createNamespace, visit, cloneDeep } from '@swagger-api/apidom-core';
|
|
3
3
|
import { ReferenceSet, Reference } from '@swagger-api/apidom-reference/configuration/empty';
|
|
4
|
-
import
|
|
4
|
+
import OpenAPI3_1DereferenceStrategy from '@swagger-api/apidom-reference/dereference/strategies/openapi-3-1';
|
|
5
5
|
import openApi3_1Namespace, { getNodeType, keyMap } from '@swagger-api/apidom-ns-openapi-3-1';
|
|
6
|
-
import
|
|
7
|
-
import ParameterMacroVisitor from './visitors/parameters.js';
|
|
8
|
-
import ModelPropertyMacroVisitor from './visitors/properties.js';
|
|
9
|
-
import AllOfVisitor from './visitors/all-of.js';
|
|
6
|
+
import RootVisitor from './visitors/root.js';
|
|
10
7
|
const visitAsync = visit[Symbol.for('nodejs.util.promisify.custom')];
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
mode = this.mode,
|
|
25
|
-
ancestors = []
|
|
8
|
+
class OpenAPI3_1SwaggerClientDereferenceStrategy extends OpenAPI3_1DereferenceStrategy {
|
|
9
|
+
allowMetaPatches;
|
|
10
|
+
parameterMacro;
|
|
11
|
+
modelPropertyMacro;
|
|
12
|
+
mode;
|
|
13
|
+
ancestors;
|
|
14
|
+
constructor({
|
|
15
|
+
allowMetaPatches = false,
|
|
16
|
+
parameterMacro = null,
|
|
17
|
+
modelPropertyMacro = null,
|
|
18
|
+
mode = 'non-strict',
|
|
19
|
+
ancestors = [],
|
|
20
|
+
...rest
|
|
26
21
|
} = {}) {
|
|
22
|
+
super({
|
|
23
|
+
...rest
|
|
24
|
+
});
|
|
27
25
|
this.name = 'openapi-3-1-swagger-client';
|
|
28
26
|
this.allowMetaPatches = allowMetaPatches;
|
|
29
27
|
this.parameterMacro = parameterMacro;
|
|
30
28
|
this.modelPropertyMacro = modelPropertyMacro;
|
|
31
29
|
this.mode = mode;
|
|
32
30
|
this.ancestors = [...ancestors];
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
uri: file.uri,
|
|
46
|
-
value: file.parseResult
|
|
47
|
-
});
|
|
48
|
-
immutableRefSet.add(reference);
|
|
49
|
-
} else {
|
|
50
|
-
// pre-computed refSet was provided as configuration option
|
|
51
|
-
reference = immutableRefSet.find(ref => ref.uri === file.uri);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Clone refSet due the dereferencing process being mutable.
|
|
56
|
-
* We don't want to mutate the original refSet and the references.
|
|
57
|
-
*/
|
|
58
|
-
if (options.dereference.immutable) {
|
|
59
|
-
immutableRefSet.refs.map(ref => Reference({
|
|
60
|
-
...ref,
|
|
61
|
-
value: cloneDeep(ref.value)
|
|
62
|
-
})).forEach(ref => mutableRefsSet.add(ref));
|
|
63
|
-
reference = mutableRefsSet.find(ref => ref.uri === file.uri);
|
|
64
|
-
refSet = mutableRefsSet;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
// create main dereference visitor
|
|
68
|
-
const dereferenceVisitor = OpenApi3_1SwaggerClientDereferenceVisitor({
|
|
69
|
-
reference,
|
|
70
|
-
namespace,
|
|
71
|
-
options,
|
|
72
|
-
allowMetaPatches: this.allowMetaPatches,
|
|
73
|
-
ancestors: this.ancestors
|
|
31
|
+
}
|
|
32
|
+
async dereference(file, options) {
|
|
33
|
+
var _options$dereference$;
|
|
34
|
+
const namespace = createNamespace(openApi3_1Namespace);
|
|
35
|
+
const immutableRefSet = (_options$dereference$ = options.dereference.refSet) !== null && _options$dereference$ !== void 0 ? _options$dereference$ : new ReferenceSet();
|
|
36
|
+
const mutableRefsSet = new ReferenceSet();
|
|
37
|
+
let refSet = immutableRefSet;
|
|
38
|
+
let reference;
|
|
39
|
+
if (!immutableRefSet.has(file.uri)) {
|
|
40
|
+
reference = new Reference({
|
|
41
|
+
uri: file.uri,
|
|
42
|
+
value: file.parseResult
|
|
74
43
|
});
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
//
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
parameterMacro: this.parameterMacro,
|
|
81
|
-
options
|
|
82
|
-
});
|
|
83
|
-
visitors.push(parameterMacroVisitor);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
// create model property macro visitor (if necessary)
|
|
87
|
-
if (typeof this.modelPropertyMacro === 'function') {
|
|
88
|
-
const modelPropertyMacroVisitor = ModelPropertyMacroVisitor({
|
|
89
|
-
modelPropertyMacro: this.modelPropertyMacro,
|
|
90
|
-
options
|
|
91
|
-
});
|
|
92
|
-
visitors.push(modelPropertyMacroVisitor);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
// create allOf visitor (if necessary)
|
|
96
|
-
if (this.mode !== 'strict') {
|
|
97
|
-
const allOfVisitor = AllOfVisitor({
|
|
98
|
-
options
|
|
99
|
-
});
|
|
100
|
-
visitors.push(allOfVisitor);
|
|
101
|
-
}
|
|
44
|
+
immutableRefSet.add(reference);
|
|
45
|
+
} else {
|
|
46
|
+
// pre-computed refSet was provided as configuration option
|
|
47
|
+
reference = immutableRefSet.find(ref => ref.uri === file.uri);
|
|
48
|
+
}
|
|
102
49
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
50
|
+
/**
|
|
51
|
+
* Clone refSet due the dereferencing process being mutable.
|
|
52
|
+
* We don't want to mutate the original refSet and the references.
|
|
53
|
+
*/
|
|
54
|
+
if (options.dereference.immutable) {
|
|
55
|
+
immutableRefSet.refs.map(ref => new Reference({
|
|
56
|
+
...ref,
|
|
57
|
+
value: cloneDeep(ref.value)
|
|
58
|
+
})).forEach(ref => mutableRefsSet.add(ref));
|
|
59
|
+
reference = mutableRefsSet.find(ref => ref.uri === file.uri);
|
|
60
|
+
refSet = mutableRefsSet;
|
|
61
|
+
}
|
|
62
|
+
const rootVisitor = new RootVisitor({
|
|
63
|
+
reference,
|
|
64
|
+
namespace,
|
|
65
|
+
options,
|
|
66
|
+
allowMetaPatches: this.allowMetaPatches,
|
|
67
|
+
ancestors: this.ancestors,
|
|
68
|
+
modelPropertyMacro: this.modelPropertyMacro,
|
|
69
|
+
mode: this.mode,
|
|
70
|
+
parameterMacro: this.parameterMacro
|
|
71
|
+
});
|
|
72
|
+
const dereferencedElement = await visitAsync(refSet.rootRef.value, rootVisitor, {
|
|
73
|
+
keyMap,
|
|
74
|
+
nodeTypeGetter: getNodeType
|
|
75
|
+
});
|
|
111
76
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
refSet = immutableRefSet;
|
|
122
|
-
}
|
|
77
|
+
/**
|
|
78
|
+
* If immutable option is set, replay refs from the refSet.
|
|
79
|
+
*/
|
|
80
|
+
if (options.dereference.immutable) {
|
|
81
|
+
mutableRefsSet.refs.filter(ref => ref.uri.startsWith('immutable://')).map(ref => new Reference({
|
|
82
|
+
...ref,
|
|
83
|
+
uri: ref.uri.replace(/^immutable:\/\//, '')
|
|
84
|
+
})).forEach(ref => immutableRefSet.add(ref));
|
|
85
|
+
}
|
|
123
86
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
}
|
|
131
|
-
mutableRefsSet.clean();
|
|
132
|
-
return dereferencedElement;
|
|
87
|
+
/**
|
|
88
|
+
* Release all memory if this refSet was not provided as an configuration option.
|
|
89
|
+
* If provided as configuration option, then provider is responsible for cleanup.
|
|
90
|
+
*/
|
|
91
|
+
if (options.dereference.refSet === null) {
|
|
92
|
+
immutableRefSet.clean();
|
|
133
93
|
}
|
|
94
|
+
mutableRefsSet.clean();
|
|
95
|
+
return dereferencedElement;
|
|
134
96
|
}
|
|
135
|
-
}
|
|
136
|
-
export default
|
|
97
|
+
}
|
|
98
|
+
export default OpenAPI3_1SwaggerClientDereferenceStrategy;
|
|
137
99
|
/* eslint-enable camelcase */
|
|
@@ -1,85 +1,82 @@
|
|
|
1
1
|
import { isArrayElement, deepmerge } from '@swagger-api/apidom-core';
|
|
2
2
|
import { isSchemaElement } from '@swagger-api/apidom-ns-openapi-3-1';
|
|
3
|
-
import compose from '../utils/compose.js';
|
|
4
3
|
import toPath from '../utils/to-path.js';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
props: {
|
|
12
|
-
options: null,
|
|
13
|
-
SchemaElement: {
|
|
14
|
-
leave(schemaElement, key, parent, path, ancestors) {
|
|
15
|
-
// do nothing
|
|
16
|
-
if (typeof schemaElement.allOf === 'undefined') return undefined;
|
|
4
|
+
class AllOfVisitor {
|
|
5
|
+
options;
|
|
6
|
+
SchemaElement = {
|
|
7
|
+
leave(schemaElement, key, parent, path, ancestors) {
|
|
8
|
+
// do nothing
|
|
9
|
+
if (typeof schemaElement.allOf === 'undefined') return undefined;
|
|
17
10
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
11
|
+
// collect error and return if allOf keyword is not an array
|
|
12
|
+
if (!isArrayElement(schemaElement.allOf)) {
|
|
13
|
+
var _this$options$derefer, _this$options$derefer2;
|
|
14
|
+
const error = new TypeError('allOf must be an array');
|
|
15
|
+
error.fullPath = [...toPath([...ancestors, parent, schemaElement]), 'allOf'];
|
|
16
|
+
(_this$options$derefer = this.options.dereference.dereferenceOpts) === null || _this$options$derefer === void 0 || (_this$options$derefer = _this$options$derefer.errors) === null || _this$options$derefer === void 0 || (_this$options$derefer2 = _this$options$derefer.push) === null || _this$options$derefer2 === void 0 || _this$options$derefer2.call(_this$options$derefer, error);
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
26
19
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
20
|
+
// remove allOf keyword if empty
|
|
21
|
+
if (schemaElement.allOf.isEmpty) {
|
|
22
|
+
schemaElement.remove('allOf');
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
32
25
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
26
|
+
// collect errors if allOf keyword contains anything else than Schema Object
|
|
27
|
+
const includesSchemaElementOnly = schemaElement.allOf.content.every(isSchemaElement);
|
|
28
|
+
if (!includesSchemaElementOnly) {
|
|
29
|
+
var _this$options$derefer3, _this$options$derefer4;
|
|
30
|
+
const error = new TypeError('Elements in allOf must be objects');
|
|
31
|
+
error.fullPath = [...toPath([...ancestors, parent, schemaElement]), 'allOf'];
|
|
32
|
+
(_this$options$derefer3 = this.options.dereference.dereferenceOpts) === null || _this$options$derefer3 === void 0 || (_this$options$derefer3 = _this$options$derefer3.errors) === null || _this$options$derefer3 === void 0 || (_this$options$derefer4 = _this$options$derefer3.push) === null || _this$options$derefer4 === void 0 || _this$options$derefer4.call(_this$options$derefer3, error);
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
while (schemaElement.hasKey('allOf')) {
|
|
36
|
+
const {
|
|
37
|
+
allOf
|
|
38
|
+
} = schemaElement;
|
|
39
|
+
schemaElement.remove('allOf');
|
|
40
|
+
const allOfMerged = deepmerge.all([...allOf.content, schemaElement]);
|
|
48
41
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
42
|
+
/**
|
|
43
|
+
* If there was not an original $$ref value, make sure to remove
|
|
44
|
+
* any $$ref value that may exist from the result of `allOf` merges.
|
|
45
|
+
*/
|
|
46
|
+
if (!schemaElement.hasKey('$$ref')) {
|
|
47
|
+
allOfMerged.remove('$$ref');
|
|
48
|
+
}
|
|
56
49
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
}
|
|
50
|
+
/**
|
|
51
|
+
* If there was an example keyword in the original schema,
|
|
52
|
+
* keep it instead of merging with example from other schema.
|
|
53
|
+
*/
|
|
54
|
+
if (schemaElement.hasKey('example')) {
|
|
55
|
+
const member = allOfMerged.getMember('example');
|
|
56
|
+
if (member) {
|
|
57
|
+
member.value = schemaElement.get('example');
|
|
66
58
|
}
|
|
59
|
+
}
|
|
67
60
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
}
|
|
61
|
+
/**
|
|
62
|
+
* If there was an examples keyword in the original schema,
|
|
63
|
+
* keep it instead of merging with examples from other schema.
|
|
64
|
+
*/
|
|
65
|
+
if (schemaElement.hasKey('examples')) {
|
|
66
|
+
const member = allOfMerged.getMember('examples');
|
|
67
|
+
if (member) {
|
|
68
|
+
member.value = schemaElement.get('examples');
|
|
77
69
|
}
|
|
78
|
-
schemaElement.content = allOfMerged.content;
|
|
79
70
|
}
|
|
80
|
-
|
|
71
|
+
schemaElement.content = allOfMerged.content;
|
|
81
72
|
}
|
|
73
|
+
return undefined;
|
|
82
74
|
}
|
|
75
|
+
};
|
|
76
|
+
constructor({
|
|
77
|
+
options
|
|
78
|
+
}) {
|
|
79
|
+
this.options = options;
|
|
83
80
|
}
|
|
84
|
-
}
|
|
81
|
+
}
|
|
85
82
|
export default AllOfVisitor;
|