swagger-client 3.36.2 → 3.37.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/README.md +8 -7
- package/dist/swagger-client.browser.js +29435 -21476
- package/dist/swagger-client.browser.min.js +1 -1
- package/dist/swagger-client.browser.min.js.map +1 -1
- package/es/helpers/openapi-predicates.js +11 -1
- package/es/index.js +12 -4
- package/es/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/errors/SchemaRefError.js +3 -0
- package/es/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/index.js +99 -0
- package/es/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/utils/get-root-cause.js +17 -0
- package/es/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/utils/to-path.js +23 -0
- package/es/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/visitors/all-of.js +103 -0
- package/es/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/visitors/dereference.js +677 -0
- package/es/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/visitors/parameters.js +40 -0
- package/es/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/visitors/properties.js +34 -0
- package/es/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/visitors/root.js +45 -0
- package/es/resolver/apidom/reference/parse/parsers/openapi-json-3-2/index.js +55 -0
- package/es/resolver/apidom/reference/parse/parsers/openapi-yaml-3-2/index.js +56 -0
- package/es/resolver/strategies/openapi-3-2-apidom/index.js +28 -0
- package/es/resolver/strategies/openapi-3-2-apidom/normalize.js +44 -0
- package/es/resolver/strategies/openapi-3-2-apidom/resolve.js +161 -0
- package/lib/helpers/openapi-predicates.js +13 -2
- package/lib/index.js +29 -21
- package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/errors/SchemaRefError.js +7 -0
- package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/index.js +106 -0
- package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/utils/get-root-cause.js +21 -0
- package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/utils/to-path.js +27 -0
- package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/visitors/all-of.js +108 -0
- package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/visitors/dereference.js +683 -0
- package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/visitors/parameters.js +45 -0
- package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/visitors/properties.js +39 -0
- package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/visitors/root.js +51 -0
- package/lib/resolver/apidom/reference/parse/parsers/openapi-json-3-2/index.js +60 -0
- package/lib/resolver/apidom/reference/parse/parsers/openapi-yaml-3-2/index.js +62 -0
- package/lib/resolver/strategies/openapi-3-2-apidom/index.js +34 -0
- package/lib/resolver/strategies/openapi-3-2-apidom/normalize.js +51 -0
- package/lib/resolver/strategies/openapi-3-2-apidom/resolve.js +169 -0
- package/package.json +32 -29
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.default = void 0;
|
|
6
|
+
var _apidomCore = require("@swagger-api/apidom-core");
|
|
7
|
+
var _toPath = _interopRequireDefault(require("../utils/to-path.js"));
|
|
8
|
+
class ParameterMacroVisitor {
|
|
9
|
+
parameterMacro;
|
|
10
|
+
options;
|
|
11
|
+
#macroOperation;
|
|
12
|
+
OperationElement = {
|
|
13
|
+
enter: operationElement => {
|
|
14
|
+
this.#macroOperation = operationElement;
|
|
15
|
+
},
|
|
16
|
+
leave: () => {
|
|
17
|
+
this.#macroOperation = undefined;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
ParameterElement = {
|
|
21
|
+
leave: (parameterElement, key, parent, path, ancestors) => {
|
|
22
|
+
const pojoOperation = this.#macroOperation ? (0, _apidomCore.toValue)(this.#macroOperation) : null;
|
|
23
|
+
const pojoParameter = (0, _apidomCore.toValue)(parameterElement);
|
|
24
|
+
try {
|
|
25
|
+
const macroValue = this.parameterMacro(pojoOperation, pojoParameter);
|
|
26
|
+
parameterElement.set('default', macroValue);
|
|
27
|
+
} catch (error) {
|
|
28
|
+
var _this$options$derefer;
|
|
29
|
+
const macroError = new Error(error, {
|
|
30
|
+
cause: error
|
|
31
|
+
});
|
|
32
|
+
macroError.fullPath = (0, _toPath.default)([...ancestors, parent]);
|
|
33
|
+
(_this$options$derefer = this.options.dereference.dereferenceOpts) == null || (_this$options$derefer = _this$options$derefer.errors) == null || _this$options$derefer.push == null || _this$options$derefer.push(macroError);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
constructor({
|
|
38
|
+
parameterMacro,
|
|
39
|
+
options
|
|
40
|
+
}) {
|
|
41
|
+
this.parameterMacro = parameterMacro;
|
|
42
|
+
this.options = options;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
var _default = exports.default = ParameterMacroVisitor;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.default = void 0;
|
|
6
|
+
var _apidomCore = require("@swagger-api/apidom-core");
|
|
7
|
+
var _toPath = _interopRequireDefault(require("../utils/to-path.js"));
|
|
8
|
+
class ModelPropertyMacroVisitor {
|
|
9
|
+
modelPropertyMacro;
|
|
10
|
+
options;
|
|
11
|
+
SchemaElement = {
|
|
12
|
+
leave: (schemaElement, key, parent, path, ancestors) => {
|
|
13
|
+
if (typeof schemaElement.properties === 'undefined') return;
|
|
14
|
+
if (!(0, _apidomCore.isObjectElement)(schemaElement.properties)) return;
|
|
15
|
+
schemaElement.properties.forEach(property => {
|
|
16
|
+
if (!(0, _apidomCore.isObjectElement)(property)) return;
|
|
17
|
+
try {
|
|
18
|
+
const macroValue = this.modelPropertyMacro((0, _apidomCore.toValue)(property));
|
|
19
|
+
property.set('default', macroValue);
|
|
20
|
+
} catch (error) {
|
|
21
|
+
var _this$options$derefer;
|
|
22
|
+
const macroError = new Error(error, {
|
|
23
|
+
cause: error
|
|
24
|
+
});
|
|
25
|
+
macroError.fullPath = [...(0, _toPath.default)([...ancestors, parent, schemaElement]), 'properties'];
|
|
26
|
+
(_this$options$derefer = this.options.dereference.dereferenceOpts) == null || (_this$options$derefer = _this$options$derefer.errors) == null || _this$options$derefer.push == null || _this$options$derefer.push(macroError);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
constructor({
|
|
32
|
+
modelPropertyMacro,
|
|
33
|
+
options
|
|
34
|
+
}) {
|
|
35
|
+
this.modelPropertyMacro = modelPropertyMacro;
|
|
36
|
+
this.options = options;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
var _default = exports.default = ModelPropertyMacroVisitor;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.default = void 0;
|
|
6
|
+
var _apidomCore = require("@swagger-api/apidom-core");
|
|
7
|
+
var _apidomNsOpenapi = require("@swagger-api/apidom-ns-openapi-3-2");
|
|
8
|
+
var _properties = _interopRequireDefault(require("./properties.js"));
|
|
9
|
+
var _allOf = _interopRequireDefault(require("./all-of.js"));
|
|
10
|
+
var _parameters = _interopRequireDefault(require("./parameters.js"));
|
|
11
|
+
var _dereference = _interopRequireDefault(require("./dereference.js"));
|
|
12
|
+
// eslint-disable-line camelcase
|
|
13
|
+
|
|
14
|
+
const mergeAllVisitorsAsync = _apidomCore.mergeAllVisitors[Symbol.for('nodejs.util.promisify.custom')];
|
|
15
|
+
class RootVisitor {
|
|
16
|
+
constructor({
|
|
17
|
+
parameterMacro,
|
|
18
|
+
modelPropertyMacro,
|
|
19
|
+
mode,
|
|
20
|
+
options,
|
|
21
|
+
...rest
|
|
22
|
+
}) {
|
|
23
|
+
const visitors = [];
|
|
24
|
+
visitors.push(new _dereference.default({
|
|
25
|
+
...rest,
|
|
26
|
+
options
|
|
27
|
+
}));
|
|
28
|
+
if (typeof modelPropertyMacro === 'function') {
|
|
29
|
+
visitors.push(new _properties.default({
|
|
30
|
+
modelPropertyMacro,
|
|
31
|
+
options
|
|
32
|
+
}));
|
|
33
|
+
}
|
|
34
|
+
if (mode !== 'strict') {
|
|
35
|
+
visitors.push(new _allOf.default({
|
|
36
|
+
options
|
|
37
|
+
}));
|
|
38
|
+
}
|
|
39
|
+
if (typeof parameterMacro === 'function') {
|
|
40
|
+
visitors.push(new _parameters.default({
|
|
41
|
+
parameterMacro,
|
|
42
|
+
options
|
|
43
|
+
}));
|
|
44
|
+
}
|
|
45
|
+
const mergedVisitor = mergeAllVisitorsAsync(visitors, {
|
|
46
|
+
nodeTypeGetter: _apidomNsOpenapi.getNodeType
|
|
47
|
+
});
|
|
48
|
+
Object.assign(this, mergedVisitor);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
var _default = exports.default = RootVisitor;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.default = void 0;
|
|
5
|
+
var _apidomCore = require("@swagger-api/apidom-core");
|
|
6
|
+
var _empty = require("@swagger-api/apidom-reference/configuration/empty");
|
|
7
|
+
var _apidomNsOpenapi = require("@swagger-api/apidom-ns-openapi-3-2");
|
|
8
|
+
/* eslint-disable camelcase */
|
|
9
|
+
|
|
10
|
+
class OpenAPIJSON3_2Parser extends _empty.Parser {
|
|
11
|
+
detectionRegExp = /"openapi"\s*:\s*"(?<version_json>3\.2\.(?:[1-9]\d*|0))"/;
|
|
12
|
+
constructor(options = {}) {
|
|
13
|
+
super({
|
|
14
|
+
name: 'openapi-json-3-2-swagger-client',
|
|
15
|
+
mediaTypes: new _apidomNsOpenapi.OpenAPIMediaTypes(..._apidomNsOpenapi.mediaTypes.filterByFormat('generic'), ..._apidomNsOpenapi.mediaTypes.filterByFormat('json')),
|
|
16
|
+
...options
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
async canParse(file) {
|
|
20
|
+
const hasSupportedFileExtension = this.fileExtensions.length === 0 ? true : this.fileExtensions.includes(file.extension);
|
|
21
|
+
const hasSupportedMediaType = this.mediaTypes.includes(file.mediaType);
|
|
22
|
+
if (!hasSupportedFileExtension) return false;
|
|
23
|
+
if (hasSupportedMediaType) return true;
|
|
24
|
+
if (!hasSupportedMediaType) {
|
|
25
|
+
try {
|
|
26
|
+
const source = file.toString();
|
|
27
|
+
JSON.parse(source);
|
|
28
|
+
return this.detectionRegExp.test(source);
|
|
29
|
+
} catch (error) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
async parse(file) {
|
|
36
|
+
if (this.sourceMap) {
|
|
37
|
+
throw new _empty.ParserError("openapi-json-3-2-swagger-client parser plugin doesn't support sourceMaps option");
|
|
38
|
+
}
|
|
39
|
+
const parseResultElement = new _apidomCore.ParseResultElement();
|
|
40
|
+
const source = file.toString();
|
|
41
|
+
|
|
42
|
+
// allow empty files
|
|
43
|
+
if (this.allowEmpty && source.trim() === '') {
|
|
44
|
+
return parseResultElement;
|
|
45
|
+
}
|
|
46
|
+
try {
|
|
47
|
+
const pojo = JSON.parse(source);
|
|
48
|
+
const element = _apidomNsOpenapi.OpenApi3_2Element.refract(pojo, this.refractorOpts);
|
|
49
|
+
element.classes.push('result');
|
|
50
|
+
parseResultElement.push(element);
|
|
51
|
+
return parseResultElement;
|
|
52
|
+
} catch (error) {
|
|
53
|
+
throw new _empty.ParserError(`Error parsing "${file.uri}"`, {
|
|
54
|
+
cause: error
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
var _default = exports.default = OpenAPIJSON3_2Parser;
|
|
60
|
+
/* eslint-enable camelcase */
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime-corejs3/helpers/interopRequireWildcard").default;
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.default = void 0;
|
|
6
|
+
var _jsYaml = _interopRequireWildcard(require("js-yaml"));
|
|
7
|
+
var _apidomCore = require("@swagger-api/apidom-core");
|
|
8
|
+
var _empty = require("@swagger-api/apidom-reference/configuration/empty");
|
|
9
|
+
var _apidomNsOpenapi = require("@swagger-api/apidom-ns-openapi-3-2");
|
|
10
|
+
/* eslint-disable camelcase */
|
|
11
|
+
|
|
12
|
+
class OpenAPIYAML32Parser extends _empty.Parser {
|
|
13
|
+
detectionRegExp = /(?<YAML>^(["']?)openapi\2\s*:\s*(["']?)(?<version_yaml>3\.2\.(?:[1-9]\d*|0))\3(?:\s+|$))|(?<JSON>"openapi"\s*:\s*"(?<version_json>3\.2\.(?:[1-9]\d*|0))")/m;
|
|
14
|
+
constructor(options = {}) {
|
|
15
|
+
super({
|
|
16
|
+
name: 'openapi-yaml-3-2-swagger-client',
|
|
17
|
+
mediaTypes: new _apidomNsOpenapi.OpenAPIMediaTypes(..._apidomNsOpenapi.mediaTypes.filterByFormat('generic'), ..._apidomNsOpenapi.mediaTypes.filterByFormat('yaml')),
|
|
18
|
+
...options
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
async canParse(file) {
|
|
22
|
+
const hasSupportedFileExtension = this.fileExtensions.length === 0 ? true : this.fileExtensions.includes(file.extension);
|
|
23
|
+
const hasSupportedMediaType = this.mediaTypes.includes(file.mediaType);
|
|
24
|
+
if (!hasSupportedFileExtension) return false;
|
|
25
|
+
if (hasSupportedMediaType) return true;
|
|
26
|
+
if (!hasSupportedMediaType) {
|
|
27
|
+
try {
|
|
28
|
+
const source = file.toString();
|
|
29
|
+
_jsYaml.default.load(source);
|
|
30
|
+
return this.detectionRegExp.test(source);
|
|
31
|
+
} catch (error) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
async parse(file) {
|
|
38
|
+
if (this.sourceMap) {
|
|
39
|
+
throw new _empty.ParserError("openapi-yaml-3-2-swagger-client parser plugin doesn't support sourceMaps option");
|
|
40
|
+
}
|
|
41
|
+
const parseResultElement = new _apidomCore.ParseResultElement();
|
|
42
|
+
const source = file.toString();
|
|
43
|
+
try {
|
|
44
|
+
const pojo = _jsYaml.default.load(source, {
|
|
45
|
+
schema: _jsYaml.JSON_SCHEMA
|
|
46
|
+
});
|
|
47
|
+
if (this.allowEmpty && typeof pojo === 'undefined') {
|
|
48
|
+
return parseResultElement;
|
|
49
|
+
}
|
|
50
|
+
const element = _apidomNsOpenapi.OpenApi3_2Element.refract(pojo, this.refractorOpts);
|
|
51
|
+
element.classes.push('result');
|
|
52
|
+
parseResultElement.push(element);
|
|
53
|
+
return parseResultElement;
|
|
54
|
+
} catch (error) {
|
|
55
|
+
throw new _empty.ParserError(`Error parsing "${file.uri}"`, {
|
|
56
|
+
cause: error
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
var _default = exports.default = OpenAPIYAML32Parser;
|
|
62
|
+
/* eslint-enable camelcase */
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime-corejs3/helpers/interopRequireWildcard").default;
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _ramdaAdjunct = require("ramda-adjunct");
|
|
8
|
+
var _apidomCore = require("@swagger-api/apidom-core");
|
|
9
|
+
var _resolve = _interopRequireDefault(require("./resolve.js"));
|
|
10
|
+
var _normalize = _interopRequireWildcard(require("./normalize.js"));
|
|
11
|
+
var _openapiPredicates = require("../../../helpers/openapi-predicates.js");
|
|
12
|
+
const openApi32ApiDOMStrategy = {
|
|
13
|
+
name: 'openapi-3-2-apidom',
|
|
14
|
+
match(spec) {
|
|
15
|
+
return (0, _openapiPredicates.isOpenAPI32)(spec);
|
|
16
|
+
},
|
|
17
|
+
normalize(spec) {
|
|
18
|
+
// pre-normalization - happens only once before the first lazy dereferencing and in JavaScript context
|
|
19
|
+
if (!(0, _apidomCore.isElement)(spec) && (0, _ramdaAdjunct.isPlainObject)(spec) && !spec.$$normalized) {
|
|
20
|
+
const preNormalized = (0, _normalize.pojoAdapter)(_normalize.default)(spec);
|
|
21
|
+
preNormalized.$$normalized = true;
|
|
22
|
+
return preNormalized;
|
|
23
|
+
}
|
|
24
|
+
// post-normalization - happens after each dereferencing and in ApiDOM context
|
|
25
|
+
if ((0, _apidomCore.isElement)(spec)) {
|
|
26
|
+
return (0, _normalize.default)(spec);
|
|
27
|
+
}
|
|
28
|
+
return spec;
|
|
29
|
+
},
|
|
30
|
+
async resolve(options) {
|
|
31
|
+
return (0, _resolve.default)(options);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
var _default = exports.default = openApi32ApiDOMStrategy;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
|
|
4
|
+
exports.__esModule = true;
|
|
5
|
+
exports.pojoAdapter = exports.default = void 0;
|
|
6
|
+
var _apidomCore = require("@swagger-api/apidom-core");
|
|
7
|
+
var _apidomNsOpenapi = require("@swagger-api/apidom-ns-openapi-3-2");
|
|
8
|
+
var _opId = _interopRequireDefault(require("../../../helpers/op-id.js"));
|
|
9
|
+
var _resolve = _interopRequireDefault(require("./resolve.js"));
|
|
10
|
+
/* eslint-disable camelcase */
|
|
11
|
+
|
|
12
|
+
const normalize = element => {
|
|
13
|
+
if (!(0, _apidomCore.isObjectElement)(element)) return element;
|
|
14
|
+
const plugins = [(0, _apidomNsOpenapi.refractorPluginNormalizeOperationIds)({
|
|
15
|
+
operationIdNormalizer: (operationId, path, method) => (0, _opId.default)({
|
|
16
|
+
operationId
|
|
17
|
+
}, path, method, {
|
|
18
|
+
v2OperationIdCompatibilityMode: false
|
|
19
|
+
})
|
|
20
|
+
}), (0, _apidomNsOpenapi.refractorPluginNormalizeParameters)(), (0, _apidomNsOpenapi.refractorPluginNormalizeSecurityRequirements)(), (0, _apidomNsOpenapi.refractorPluginNormalizeParameterExamples)(), (0, _apidomNsOpenapi.refractorPluginNormalizeHeaderExamples)()];
|
|
21
|
+
const normalized = (0, _apidomCore.dispatchRefractorPlugins)(element, plugins, {
|
|
22
|
+
toolboxCreator: _apidomNsOpenapi.createToolbox,
|
|
23
|
+
visitorOptions: {
|
|
24
|
+
keyMap: _apidomNsOpenapi.keyMap,
|
|
25
|
+
nodeTypeGetter: _apidomNsOpenapi.getNodeType
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
return normalized;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* This adapter allow to perform normalization on Plain Old JavaScript Objects.
|
|
33
|
+
* The function adapts the `normalize` function interface and is able to accept
|
|
34
|
+
* Plain Old JavaScript Objects and returns Plain Old JavaScript Objects.
|
|
35
|
+
*/
|
|
36
|
+
const pojoAdapter = normalizeFn => spec => {
|
|
37
|
+
const openApiElement = _apidomNsOpenapi.OpenApi3_2Element.refract(spec);
|
|
38
|
+
openApiElement.classes.push('result');
|
|
39
|
+
const normalized = normalizeFn(openApiElement);
|
|
40
|
+
const value = (0, _apidomCore.toValue)(normalized);
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* We're setting the cache here to avoid repeated refracting
|
|
44
|
+
* in `openapi-3-2-apidom` strategy resolve method.
|
|
45
|
+
*/
|
|
46
|
+
_resolve.default.cache.set(value, normalized);
|
|
47
|
+
return (0, _apidomCore.toValue)(normalized);
|
|
48
|
+
};
|
|
49
|
+
exports.pojoAdapter = pojoAdapter;
|
|
50
|
+
var _default = exports.default = normalize;
|
|
51
|
+
/* eslint-enable camelcase */
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireWildcard = require("@babel/runtime-corejs3/helpers/interopRequireWildcard").default;
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.default = exports.circularReplacer = void 0;
|
|
7
|
+
var _apidomCore = require("@swagger-api/apidom-core");
|
|
8
|
+
var _modern = require("@swagger-api/apidom-json-pointer/modern");
|
|
9
|
+
var _apidomNsOpenapi = require("@swagger-api/apidom-ns-openapi-3-2");
|
|
10
|
+
var _empty = require("@swagger-api/apidom-reference/configuration/empty");
|
|
11
|
+
var _binary = _interopRequireDefault(require("@swagger-api/apidom-reference/parse/parsers/binary"));
|
|
12
|
+
var _openapi = _interopRequireDefault(require("@swagger-api/apidom-reference/resolve/strategies/openapi-3-1"));
|
|
13
|
+
var _constants = require("../../../constants.js");
|
|
14
|
+
var optionsUtil = _interopRequireWildcard(require("../../utils/options.js"));
|
|
15
|
+
var _index = _interopRequireDefault(require("../../apidom/reference/resolve/resolvers/http-swagger-client/index.js"));
|
|
16
|
+
var _index2 = _interopRequireDefault(require("../../apidom/reference/parse/parsers/json/index.js"));
|
|
17
|
+
var _index3 = _interopRequireDefault(require("../../apidom/reference/parse/parsers/yaml-1-2/index.js"));
|
|
18
|
+
var _index4 = _interopRequireDefault(require("../../apidom/reference/parse/parsers/openapi-json-3-2/index.js"));
|
|
19
|
+
var _index5 = _interopRequireDefault(require("../../apidom/reference/parse/parsers/openapi-yaml-3-2/index.js"));
|
|
20
|
+
var _index6 = _interopRequireDefault(require("../../apidom/reference/dereference/strategies/openapi-3-2-swagger-client/index.js"));
|
|
21
|
+
/* eslint-disable camelcase */
|
|
22
|
+
|
|
23
|
+
const circularReplacer = refElement => {
|
|
24
|
+
const $refBaseURI = (0, _apidomCore.toValue)(refElement.meta.get('baseURI'));
|
|
25
|
+
const referencingElement = refElement.meta.get('referencingElement');
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Removing semantics from the absolutified referencing element by
|
|
29
|
+
* using generic ObjectElement to represent the reference.
|
|
30
|
+
*/
|
|
31
|
+
return new _apidomCore.ObjectElement({
|
|
32
|
+
$ref: $refBaseURI
|
|
33
|
+
}, (0, _apidomCore.cloneDeep)(referencingElement.meta), (0, _apidomCore.cloneDeep)(referencingElement.attributes));
|
|
34
|
+
};
|
|
35
|
+
exports.circularReplacer = circularReplacer;
|
|
36
|
+
const resolveOpenAPI32Strategy = async options => {
|
|
37
|
+
const {
|
|
38
|
+
spec,
|
|
39
|
+
timeout,
|
|
40
|
+
redirects,
|
|
41
|
+
requestInterceptor,
|
|
42
|
+
responseInterceptor,
|
|
43
|
+
pathDiscriminator = [],
|
|
44
|
+
allowMetaPatches = false,
|
|
45
|
+
useCircularStructures = false,
|
|
46
|
+
skipNormalization = false,
|
|
47
|
+
parameterMacro = null,
|
|
48
|
+
modelPropertyMacro = null,
|
|
49
|
+
mode = 'non-strict',
|
|
50
|
+
strategies
|
|
51
|
+
} = options;
|
|
52
|
+
try {
|
|
53
|
+
const {
|
|
54
|
+
cache
|
|
55
|
+
} = resolveOpenAPI32Strategy;
|
|
56
|
+
const strategy = strategies.find(strg => strg.match(spec));
|
|
57
|
+
|
|
58
|
+
// determining BaseURI
|
|
59
|
+
const cwd = _empty.url.isHttpUrl(_empty.url.cwd()) ? _empty.url.cwd() : _constants.DEFAULT_BASE_URL;
|
|
60
|
+
const retrievalURI = optionsUtil.retrievalURI(options);
|
|
61
|
+
const baseURI = _empty.url.resolve(cwd, retrievalURI);
|
|
62
|
+
|
|
63
|
+
// prepare spec for dereferencing
|
|
64
|
+
let openApiElement;
|
|
65
|
+
if (cache.has(spec)) {
|
|
66
|
+
openApiElement = cache.get(spec);
|
|
67
|
+
} else {
|
|
68
|
+
openApiElement = _apidomNsOpenapi.OpenApi3_2Element.refract(spec);
|
|
69
|
+
openApiElement.classes.push('result');
|
|
70
|
+
cache.set(spec, openApiElement);
|
|
71
|
+
}
|
|
72
|
+
const openApiParseResultElement = new _apidomCore.ParseResultElement([openApiElement]);
|
|
73
|
+
|
|
74
|
+
// prepare fragment for dereferencing
|
|
75
|
+
const jsonPointer = (0, _modern.compile)(pathDiscriminator);
|
|
76
|
+
const jsonPointerURI = jsonPointer === '' ? '' : `#${jsonPointer}`;
|
|
77
|
+
const fragmentElement = (0, _modern.evaluate)(openApiElement, jsonPointer);
|
|
78
|
+
|
|
79
|
+
// prepare reference set for dereferencing
|
|
80
|
+
const openApiElementReference = new _empty.Reference({
|
|
81
|
+
uri: baseURI,
|
|
82
|
+
value: openApiParseResultElement
|
|
83
|
+
});
|
|
84
|
+
const refSet = new _empty.ReferenceSet({
|
|
85
|
+
refs: [openApiElementReference]
|
|
86
|
+
});
|
|
87
|
+
if (jsonPointer !== '') refSet.rootRef = undefined; // reset root reference as we want fragment to become the root reference
|
|
88
|
+
|
|
89
|
+
// prepare ancestors; needed for cases where fragment is not OpenAPI element
|
|
90
|
+
const ancestors = [new Set([fragmentElement])];
|
|
91
|
+
const errors = [];
|
|
92
|
+
const dereferenced = await (0, _empty.dereferenceApiDOM)(fragmentElement, {
|
|
93
|
+
resolve: {
|
|
94
|
+
/**
|
|
95
|
+
* swagger-client only supports resolving HTTP(S) URLs or spec objects.
|
|
96
|
+
* If runtime env is detected as non-browser one,
|
|
97
|
+
* and baseURI was not provided as part of resolver options,
|
|
98
|
+
* then below baseURI check will make sure that constant HTTPS URL is used as baseURI.
|
|
99
|
+
*/
|
|
100
|
+
baseURI: `${baseURI}${jsonPointerURI}`,
|
|
101
|
+
resolvers: [new _index.default({
|
|
102
|
+
timeout: timeout || 10000,
|
|
103
|
+
redirects: redirects || 10
|
|
104
|
+
})],
|
|
105
|
+
resolverOpts: {
|
|
106
|
+
swaggerHTTPClientConfig: {
|
|
107
|
+
requestInterceptor,
|
|
108
|
+
responseInterceptor
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
strategies: [new _openapi.default()]
|
|
112
|
+
},
|
|
113
|
+
parse: {
|
|
114
|
+
mediaType: _apidomNsOpenapi.mediaTypes.latest(),
|
|
115
|
+
parsers: [new _index4.default({
|
|
116
|
+
allowEmpty: false,
|
|
117
|
+
sourceMap: false
|
|
118
|
+
}), new _index5.default({
|
|
119
|
+
allowEmpty: false,
|
|
120
|
+
sourceMap: false
|
|
121
|
+
}), new _index2.default({
|
|
122
|
+
allowEmpty: false,
|
|
123
|
+
sourceMap: false
|
|
124
|
+
}), new _index3.default({
|
|
125
|
+
allowEmpty: false,
|
|
126
|
+
sourceMap: false
|
|
127
|
+
}), new _binary.default({
|
|
128
|
+
allowEmpty: false,
|
|
129
|
+
sourceMap: false
|
|
130
|
+
})]
|
|
131
|
+
},
|
|
132
|
+
dereference: {
|
|
133
|
+
maxDepth: 100,
|
|
134
|
+
strategies: [new _index6.default({
|
|
135
|
+
allowMetaPatches,
|
|
136
|
+
useCircularStructures,
|
|
137
|
+
parameterMacro,
|
|
138
|
+
modelPropertyMacro,
|
|
139
|
+
mode,
|
|
140
|
+
ancestors
|
|
141
|
+
})],
|
|
142
|
+
refSet,
|
|
143
|
+
dereferenceOpts: {
|
|
144
|
+
errors
|
|
145
|
+
},
|
|
146
|
+
immutable: false,
|
|
147
|
+
circular: useCircularStructures ? 'ignore' : 'replace',
|
|
148
|
+
circularReplacer: useCircularStructures ? _empty.options.dereference.circularReplacer : circularReplacer
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
const transcluded = (0, _apidomCore.transclude)(fragmentElement, dereferenced, openApiElement);
|
|
152
|
+
const normalized = skipNormalization ? transcluded : strategy.normalize(transcluded);
|
|
153
|
+
return {
|
|
154
|
+
spec: (0, _apidomCore.toValue)(normalized),
|
|
155
|
+
errors
|
|
156
|
+
};
|
|
157
|
+
} catch (error) {
|
|
158
|
+
if (error instanceof _modern.JSONPointerEvaluateError) {
|
|
159
|
+
return {
|
|
160
|
+
spec,
|
|
161
|
+
errors: []
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
throw error;
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
resolveOpenAPI32Strategy.cache = new WeakMap();
|
|
168
|
+
var _default = exports.default = resolveOpenAPI32Strategy;
|
|
169
|
+
/* eslint-enable camelcase */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "swagger-client",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.37.1",
|
|
4
4
|
"description": "SwaggerJS - a collection of interfaces for OAI specs",
|
|
5
5
|
"browser": {
|
|
6
6
|
"./src/helpers/btoa.node.js": "./src/helpers/btoa.browser.js",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"build:es": "cross-env BABEL_ENV=es babel src --out-dir es",
|
|
51
51
|
"lint": "eslint src/ test/",
|
|
52
52
|
"lint:fix": "npm run lint -- --fix",
|
|
53
|
-
"link:apidom": "npm link @swagger-api/apidom-core @swagger-api/apidom-error @swagger-api/apidom-reference @swagger-api/apidom-ns-openapi-2 @swagger-api/apidom-ns-openapi-3-0 @swagger-api/apidom-ns-openapi-3-1 @swagger-api/apidom-ns-json-schema-draft-4 @swagger-api/apidom-ns-json-schema-draft-6 @swagger-api/apidom-ns-json-schema-draft-7 @swagger-api/apidom-ns-json-schema-2019-09 @swagger-api/apidom-ns-json-schema-2020-12 @swagger-api/apidom-json-pointer",
|
|
53
|
+
"link:apidom": "npm link @swagger-api/apidom-core @swagger-api/apidom-error @swagger-api/apidom-reference @swagger-api/apidom-ns-openapi-2 @swagger-api/apidom-ns-openapi-3-0 @swagger-api/apidom-ns-openapi-3-1 @swagger-api/apidom-ns-openapi-3-2 @swagger-api/apidom-ns-json-schema-draft-4 @swagger-api/apidom-ns-json-schema-draft-6 @swagger-api/apidom-ns-json-schema-draft-7 @swagger-api/apidom-ns-json-schema-2019-09 @swagger-api/apidom-ns-json-schema-2020-12 @swagger-api/apidom-json-pointer",
|
|
54
54
|
"test": "run-s test:unit:coverage test:artifact",
|
|
55
55
|
"test:unit": "cross-env BABEL_ENV=commonjs jest --runInBand --config ./config/jest/jest.unit.config.js",
|
|
56
56
|
"test:unit:coverage": "cross-env BABEL_ENV=commonjs jest --runInBand --config ./config/jest/jest.unit.coverage.config.js",
|
|
@@ -74,11 +74,12 @@
|
|
|
74
74
|
"dependencies": {
|
|
75
75
|
"@babel/runtime-corejs3": "^7.22.15",
|
|
76
76
|
"@scarf/scarf": "=1.4.0",
|
|
77
|
-
"@swagger-api/apidom-core": "^1.
|
|
78
|
-
"@swagger-api/apidom-error": "^1.
|
|
79
|
-
"@swagger-api/apidom-json-pointer": "^1.
|
|
80
|
-
"@swagger-api/apidom-ns-openapi-3-1": "^1.
|
|
81
|
-
"@swagger-api/apidom-
|
|
77
|
+
"@swagger-api/apidom-core": "^1.7.0",
|
|
78
|
+
"@swagger-api/apidom-error": "^1.7.0",
|
|
79
|
+
"@swagger-api/apidom-json-pointer": "^1.7.0",
|
|
80
|
+
"@swagger-api/apidom-ns-openapi-3-1": "^1.7.0",
|
|
81
|
+
"@swagger-api/apidom-ns-openapi-3-2": "^1.7.0",
|
|
82
|
+
"@swagger-api/apidom-reference": "^1.7.0",
|
|
82
83
|
"@swaggerexpert/cookie": "^2.0.2",
|
|
83
84
|
"deepmerge": "~4.3.0",
|
|
84
85
|
"fast-json-patch": "^3.0.0-1",
|
|
@@ -108,12 +109,12 @@
|
|
|
108
109
|
"eslint-plugin-import": "=2.32.0",
|
|
109
110
|
"eslint-plugin-prettier": "=5.5.4",
|
|
110
111
|
"expect": "^29.0.3",
|
|
111
|
-
"glob": "=13.0.
|
|
112
|
+
"glob": "=13.0.6",
|
|
112
113
|
"husky": "^9.0.11",
|
|
113
114
|
"inspectpack": "=4.7.1",
|
|
114
115
|
"install": "=0.13.0",
|
|
115
116
|
"jest": "^29.7.0",
|
|
116
|
-
"jest-environment-jsdom": "^
|
|
117
|
+
"jest-environment-jsdom": "^30.3.0",
|
|
117
118
|
"json-loader": "=0.5.7",
|
|
118
119
|
"license-checker": "=25.0.1",
|
|
119
120
|
"lint-staged": "=16.2.7",
|
|
@@ -124,32 +125,34 @@
|
|
|
124
125
|
"source-map-explorer": "^2.5.3",
|
|
125
126
|
"terser-webpack-plugin": "^5.0.3",
|
|
126
127
|
"undici": "^5.28.4",
|
|
127
|
-
"webpack": "=5.105.
|
|
128
|
+
"webpack": "=5.105.3",
|
|
128
129
|
"webpack-bundle-size-analyzer": "=3.1.0",
|
|
129
130
|
"webpack-cli": "=6.0.1",
|
|
130
131
|
"webpack-stats-plugin": "=1.1.3"
|
|
131
132
|
},
|
|
132
133
|
"overrides": {
|
|
133
134
|
"@swagger-api/apidom-reference": {
|
|
134
|
-
"@swagger-api/apidom-ns-asyncapi-2": "npm
|
|
135
|
-
"@swagger-api/apidom-ns-asyncapi-3": "npm
|
|
136
|
-
"@swagger-api/apidom-ns-openapi-2": "npm
|
|
137
|
-
"@swagger-api/apidom-parser-adapter-api-design-systems-json": "npm
|
|
138
|
-
"@swagger-api/apidom-parser-adapter-api-design-systems-yaml": "npm
|
|
139
|
-
"@swagger-api/apidom-parser-adapter-asyncapi-json-2": "npm
|
|
140
|
-
"@swagger-api/apidom-parser-adapter-asyncapi-json-3": "npm
|
|
141
|
-
"@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": "npm
|
|
142
|
-
"@swagger-api/apidom-parser-adapter-asyncapi-yaml-3": "npm
|
|
143
|
-
"@swagger-api/apidom-parser-adapter-json": "npm
|
|
144
|
-
"@swagger-api/apidom-parser-adapter-openapi-json-2": "npm
|
|
145
|
-
"@swagger-api/apidom-parser-adapter-openapi-yaml-2": "npm
|
|
146
|
-
"@swagger-api/apidom-parser-adapter-openapi-json-3-0": "npm
|
|
147
|
-
"@swagger-api/apidom-parser-adapter-openapi-json-3-1": "npm
|
|
148
|
-
"@swagger-api/apidom-parser-adapter-openapi-
|
|
149
|
-
"@swagger-api/apidom-parser-adapter-openapi-yaml-3-
|
|
150
|
-
"@swagger-api/apidom-parser-adapter-
|
|
151
|
-
"@swagger-api/apidom-parser-adapter-
|
|
152
|
-
"@swagger-api/apidom-parser-adapter-
|
|
135
|
+
"@swagger-api/apidom-ns-asyncapi-2": "npm:~@0.0.1",
|
|
136
|
+
"@swagger-api/apidom-ns-asyncapi-3": "npm:~@0.0.1",
|
|
137
|
+
"@swagger-api/apidom-ns-openapi-2": "npm:~@0.0.1",
|
|
138
|
+
"@swagger-api/apidom-parser-adapter-api-design-systems-json": "npm:~@0.0.1",
|
|
139
|
+
"@swagger-api/apidom-parser-adapter-api-design-systems-yaml": "npm:~@0.0.1",
|
|
140
|
+
"@swagger-api/apidom-parser-adapter-asyncapi-json-2": "npm:~@0.0.1",
|
|
141
|
+
"@swagger-api/apidom-parser-adapter-asyncapi-json-3": "npm:~@0.0.1",
|
|
142
|
+
"@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": "npm:~@0.0.1",
|
|
143
|
+
"@swagger-api/apidom-parser-adapter-asyncapi-yaml-3": "npm:~@0.0.1",
|
|
144
|
+
"@swagger-api/apidom-parser-adapter-json": "npm:~@0.0.1",
|
|
145
|
+
"@swagger-api/apidom-parser-adapter-openapi-json-2": "npm:~@0.0.1",
|
|
146
|
+
"@swagger-api/apidom-parser-adapter-openapi-yaml-2": "npm:~@0.0.1",
|
|
147
|
+
"@swagger-api/apidom-parser-adapter-openapi-json-3-0": "npm:~@0.0.1",
|
|
148
|
+
"@swagger-api/apidom-parser-adapter-openapi-json-3-1": "npm:~@0.0.1",
|
|
149
|
+
"@swagger-api/apidom-parser-adapter-openapi-json-3-2": "npm:~@0.0.1",
|
|
150
|
+
"@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": "npm:~@0.0.1",
|
|
151
|
+
"@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": "npm:~@0.0.1",
|
|
152
|
+
"@swagger-api/apidom-parser-adapter-openapi-yaml-3-2": "npm:~@0.0.1",
|
|
153
|
+
"@swagger-api/apidom-parser-adapter-arazzo-json-1": "npm:~@0.0.1",
|
|
154
|
+
"@swagger-api/apidom-parser-adapter-arazzo-yaml-1": "npm:~@0.0.1",
|
|
155
|
+
"@swagger-api/apidom-parser-adapter-yaml-1-2": "npm:~@0.0.1"
|
|
153
156
|
}
|
|
154
157
|
}
|
|
155
158
|
}
|