@speclynx/apidom-reference 1.12.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/CHANGELOG.md +86 -0
- package/LICENSE +202 -0
- package/LICENSES/AFL-3.0.txt +182 -0
- package/LICENSES/Apache-2.0.txt +202 -0
- package/LICENSES/BSD-3-Clause.txt +26 -0
- package/LICENSES/MIT.txt +9 -0
- package/NOTICE +65 -0
- package/README.md +2107 -0
- package/dist/167.apidom-reference.browser.js +10 -0
- package/dist/167.apidom-reference.browser.min.js +1 -0
- package/dist/451.apidom-reference.browser.js +10 -0
- package/dist/451.apidom-reference.browser.min.js +1 -0
- package/dist/9786785aaddf11f37840fad896531940.wasm +0 -0
- package/dist/apidom-reference.browser.js +85376 -0
- package/dist/apidom-reference.browser.min.js +1 -0
- package/package.json +304 -0
- package/src/File.cjs +50 -0
- package/src/File.mjs +44 -0
- package/src/Reference.cjs +31 -0
- package/src/Reference.mjs +27 -0
- package/src/ReferenceSet.cjs +60 -0
- package/src/ReferenceSet.mjs +57 -0
- package/src/bundle/index.cjs +61 -0
- package/src/bundle/index.mjs +55 -0
- package/src/bundle/strategies/BundleStrategy.cjs +20 -0
- package/src/bundle/strategies/BundleStrategy.mjs +16 -0
- package/src/bundle/strategies/openapi-3-1/index.cjs +35 -0
- package/src/bundle/strategies/openapi-3-1/index.mjs +29 -0
- package/src/configuration/empty.cjs +9 -0
- package/src/configuration/empty.mjs +1 -0
- package/src/configuration/saturated.cjs +95 -0
- package/src/configuration/saturated.mjs +87 -0
- package/src/dereference/index.cjs +86 -0
- package/src/dereference/index.mjs +79 -0
- package/src/dereference/strategies/DereferenceStrategy.cjs +20 -0
- package/src/dereference/strategies/DereferenceStrategy.mjs +16 -0
- package/src/dereference/strategies/apidom/index.cjs +89 -0
- package/src/dereference/strategies/apidom/index.mjs +84 -0
- package/src/dereference/strategies/apidom/selectors/element-id.cjs +36 -0
- package/src/dereference/strategies/apidom/selectors/element-id.mjs +30 -0
- package/src/dereference/strategies/apidom/visitor.cjs +165 -0
- package/src/dereference/strategies/apidom/visitor.mjs +159 -0
- package/src/dereference/strategies/asyncapi-2/index.cjs +100 -0
- package/src/dereference/strategies/asyncapi-2/index.mjs +94 -0
- package/src/dereference/strategies/asyncapi-2/visitor.cjs +412 -0
- package/src/dereference/strategies/asyncapi-2/visitor.mjs +406 -0
- package/src/dereference/strategies/openapi-2/index.cjs +102 -0
- package/src/dereference/strategies/openapi-2/index.mjs +96 -0
- package/src/dereference/strategies/openapi-2/visitor.cjs +530 -0
- package/src/dereference/strategies/openapi-2/visitor.mjs +524 -0
- package/src/dereference/strategies/openapi-3-0/index.cjs +102 -0
- package/src/dereference/strategies/openapi-3-0/index.mjs +96 -0
- package/src/dereference/strategies/openapi-3-0/visitor.cjs +519 -0
- package/src/dereference/strategies/openapi-3-0/visitor.mjs +513 -0
- package/src/dereference/strategies/openapi-3-1/index.cjs +105 -0
- package/src/dereference/strategies/openapi-3-1/index.mjs +96 -0
- package/src/dereference/strategies/openapi-3-1/selectors/$anchor.cjs +66 -0
- package/src/dereference/strategies/openapi-3-1/selectors/$anchor.mjs +55 -0
- package/src/dereference/strategies/openapi-3-1/selectors/uri.cjs +50 -0
- package/src/dereference/strategies/openapi-3-1/selectors/uri.mjs +42 -0
- package/src/dereference/strategies/openapi-3-1/util.cjs +67 -0
- package/src/dereference/strategies/openapi-3-1/util.mjs +58 -0
- package/src/dereference/strategies/openapi-3-1/visitor.cjs +776 -0
- package/src/dereference/strategies/openapi-3-1/visitor.mjs +770 -0
- package/src/dereference/util.cjs +31 -0
- package/src/dereference/util.mjs +27 -0
- package/src/errors/BundleError.cjs +10 -0
- package/src/errors/BundleError.mjs +7 -0
- package/src/errors/DereferenceError.cjs +10 -0
- package/src/errors/DereferenceError.mjs +7 -0
- package/src/errors/EvaluationElementIdError.cjs +10 -0
- package/src/errors/EvaluationElementIdError.mjs +7 -0
- package/src/errors/EvaluationJsonSchema$anchorError.cjs +11 -0
- package/src/errors/EvaluationJsonSchema$anchorError.mjs +6 -0
- package/src/errors/EvaluationJsonSchemaUriError.cjs +11 -0
- package/src/errors/EvaluationJsonSchemaUriError.mjs +6 -0
- package/src/errors/InvalidJsonSchema$anchorError.cjs +15 -0
- package/src/errors/InvalidJsonSchema$anchorError.mjs +10 -0
- package/src/errors/JsonSchema$anchorError.cjs +10 -0
- package/src/errors/JsonSchema$anchorError.mjs +7 -0
- package/src/errors/JsonSchemaUriError.cjs +10 -0
- package/src/errors/JsonSchemaUriError.mjs +7 -0
- package/src/errors/MaximumBundleDepthError.cjs +11 -0
- package/src/errors/MaximumBundleDepthError.mjs +6 -0
- package/src/errors/MaximumDereferenceDepthError.cjs +11 -0
- package/src/errors/MaximumDereferenceDepthError.mjs +6 -0
- package/src/errors/MaximumResolveDepthError.cjs +11 -0
- package/src/errors/MaximumResolveDepthError.mjs +6 -0
- package/src/errors/ParseError.cjs +10 -0
- package/src/errors/ParseError.mjs +7 -0
- package/src/errors/ParserError.cjs +11 -0
- package/src/errors/ParserError.mjs +6 -0
- package/src/errors/PluginError.cjs +18 -0
- package/src/errors/PluginError.mjs +15 -0
- package/src/errors/ResolveError.cjs +10 -0
- package/src/errors/ResolveError.mjs +7 -0
- package/src/errors/ResolverError.cjs +11 -0
- package/src/errors/ResolverError.mjs +6 -0
- package/src/errors/UnmatchedBundleStrategyError.cjs +11 -0
- package/src/errors/UnmatchedBundleStrategyError.mjs +6 -0
- package/src/errors/UnmatchedDereferenceStrategyError.cjs +11 -0
- package/src/errors/UnmatchedDereferenceStrategyError.mjs +6 -0
- package/src/errors/UnmatchedResolveStrategyError.cjs +11 -0
- package/src/errors/UnmatchedResolveStrategyError.mjs +6 -0
- package/src/errors/UnmatchedResolverError.cjs +11 -0
- package/src/errors/UnmatchedResolverError.mjs +6 -0
- package/src/index.cjs +142 -0
- package/src/index.mjs +101 -0
- package/src/options/index.cjs +185 -0
- package/src/options/index.mjs +182 -0
- package/src/options/util.cjs +24 -0
- package/src/options/util.mjs +19 -0
- package/src/parse/index.cjs +69 -0
- package/src/parse/index.mjs +63 -0
- package/src/parse/parsers/Parser.cjs +48 -0
- package/src/parse/parsers/Parser.mjs +44 -0
- package/src/parse/parsers/api-design-systems-json/index.cjs +55 -0
- package/src/parse/parsers/api-design-systems-json/index.mjs +49 -0
- package/src/parse/parsers/api-design-systems-yaml/index.cjs +54 -0
- package/src/parse/parsers/api-design-systems-yaml/index.mjs +48 -0
- package/src/parse/parsers/apidom-json/index.cjs +70 -0
- package/src/parse/parsers/apidom-json/index.mjs +64 -0
- package/src/parse/parsers/arazzo-json-1/index.cjs +55 -0
- package/src/parse/parsers/arazzo-json-1/index.mjs +49 -0
- package/src/parse/parsers/arazzo-yaml-1/index.cjs +54 -0
- package/src/parse/parsers/arazzo-yaml-1/index.mjs +48 -0
- package/src/parse/parsers/asyncapi-json-2/index.cjs +55 -0
- package/src/parse/parsers/asyncapi-json-2/index.mjs +49 -0
- package/src/parse/parsers/asyncapi-yaml-2/index.cjs +54 -0
- package/src/parse/parsers/asyncapi-yaml-2/index.mjs +48 -0
- package/src/parse/parsers/binary/index-browser.cjs +56 -0
- package/src/parse/parsers/binary/index-browser.mjs +50 -0
- package/src/parse/parsers/binary/index-node.cjs +51 -0
- package/src/parse/parsers/binary/index-node.mjs +45 -0
- package/src/parse/parsers/json/index.cjs +54 -0
- package/src/parse/parsers/json/index.mjs +48 -0
- package/src/parse/parsers/openapi-json-2/index.cjs +55 -0
- package/src/parse/parsers/openapi-json-2/index.mjs +49 -0
- package/src/parse/parsers/openapi-json-3-0/index.cjs +55 -0
- package/src/parse/parsers/openapi-json-3-0/index.mjs +49 -0
- package/src/parse/parsers/openapi-json-3-1/index.cjs +55 -0
- package/src/parse/parsers/openapi-json-3-1/index.mjs +49 -0
- package/src/parse/parsers/openapi-yaml-2/index.cjs +54 -0
- package/src/parse/parsers/openapi-yaml-2/index.mjs +48 -0
- package/src/parse/parsers/openapi-yaml-3-0/index.cjs +54 -0
- package/src/parse/parsers/openapi-yaml-3-0/index.mjs +48 -0
- package/src/parse/parsers/openapi-yaml-3-1/index.cjs +54 -0
- package/src/parse/parsers/openapi-yaml-3-1/index.mjs +48 -0
- package/src/parse/parsers/yaml-1-2/index.cjs +54 -0
- package/src/parse/parsers/yaml-1-2/index.mjs +48 -0
- package/src/resolve/index.cjs +67 -0
- package/src/resolve/index.mjs +60 -0
- package/src/resolve/resolvers/HTTPResolver.cjs +38 -0
- package/src/resolve/resolvers/HTTPResolver.mjs +31 -0
- package/src/resolve/resolvers/Resolver.cjs +20 -0
- package/src/resolve/resolvers/Resolver.mjs +16 -0
- package/src/resolve/resolvers/file/index-browser.cjs +24 -0
- package/src/resolve/resolvers/file/index-browser.mjs +19 -0
- package/src/resolve/resolvers/file/index-node.cjs +49 -0
- package/src/resolve/resolvers/file/index-node.mjs +42 -0
- package/src/resolve/resolvers/http-axios/index.cjs +80 -0
- package/src/resolve/resolvers/http-axios/index.mjs +73 -0
- package/src/resolve/strategies/ResolveStrategy.cjs +20 -0
- package/src/resolve/strategies/ResolveStrategy.mjs +16 -0
- package/src/resolve/strategies/apidom/index.cjs +49 -0
- package/src/resolve/strategies/apidom/index.mjs +43 -0
- package/src/resolve/strategies/asyncapi-2/index.cjs +49 -0
- package/src/resolve/strategies/asyncapi-2/index.mjs +43 -0
- package/src/resolve/strategies/openapi-2/index.cjs +49 -0
- package/src/resolve/strategies/openapi-2/index.mjs +43 -0
- package/src/resolve/strategies/openapi-3-0/index.cjs +49 -0
- package/src/resolve/strategies/openapi-3-0/index.mjs +43 -0
- package/src/resolve/strategies/openapi-3-1/index.cjs +49 -0
- package/src/resolve/strategies/openapi-3-1/index.mjs +43 -0
- package/src/resolve/util.cjs +37 -0
- package/src/resolve/util.mjs +30 -0
- package/src/util/plugins.cjs +44 -0
- package/src/util/plugins.mjs +37 -0
- package/src/util/url.cjs +288 -0
- package/src/util/url.mjs +274 -0
- package/types/File.d.ts +24 -0
- package/types/Reference.d.ts +23 -0
- package/types/ReferenceSet.d.ts +25 -0
- package/types/apidom-reference.d.ts +584 -0
- package/types/bundle/index.d.ts +7 -0
- package/types/bundle/strategies/BundleStrategy.d.ts +19 -0
- package/types/bundle/strategies/openapi-3-1/index.d.ts +26 -0
- package/types/configuration/empty.d.ts +1 -0
- package/types/configuration/saturated.d.ts +1 -0
- package/types/dereference/index.d.ts +11 -0
- package/types/dereference/strategies/DereferenceStrategy.d.ts +19 -0
- package/types/dereference/strategies/apidom/index.d.ts +30 -0
- package/types/dereference/strategies/apidom/selectors/element-id.d.ts +11 -0
- package/types/dereference/strategies/apidom/visitor.d.ts +32 -0
- package/types/dereference/strategies/asyncapi-2/index.d.ts +31 -0
- package/types/dereference/strategies/asyncapi-2/visitor.d.ts +43 -0
- package/types/dereference/strategies/openapi-2/index.d.ts +32 -0
- package/types/dereference/strategies/openapi-2/visitor.d.ts +47 -0
- package/types/dereference/strategies/openapi-3-0/index.d.ts +31 -0
- package/types/dereference/strategies/openapi-3-0/visitor.d.ts +49 -0
- package/types/dereference/strategies/openapi-3-1/index.d.ts +32 -0
- package/types/dereference/strategies/openapi-3-1/selectors/$anchor.d.ts +22 -0
- package/types/dereference/strategies/openapi-3-1/selectors/uri.d.ts +12 -0
- package/types/dereference/strategies/openapi-3-1/util.d.ts +21 -0
- package/types/dereference/strategies/openapi-3-1/visitor.d.ts +52 -0
- package/types/dereference/util.d.ts +9 -0
- package/types/errors/BundleError.d.ts +7 -0
- package/types/errors/DereferenceError.d.ts +7 -0
- package/types/errors/EvaluationElementIdError.d.ts +7 -0
- package/types/errors/EvaluationJsonSchema$anchorError.d.ts +7 -0
- package/types/errors/EvaluationJsonSchemaUriError.d.ts +7 -0
- package/types/errors/InvalidJsonSchema$anchorError.d.ts +8 -0
- package/types/errors/JsonSchema$anchorError.d.ts +7 -0
- package/types/errors/JsonSchemaUriError.d.ts +7 -0
- package/types/errors/MaximumBundleDepthError.d.ts +7 -0
- package/types/errors/MaximumDereferenceDepthError.d.ts +7 -0
- package/types/errors/MaximumResolveDepthError.d.ts +7 -0
- package/types/errors/ParseError.d.ts +7 -0
- package/types/errors/ParserError.d.ts +7 -0
- package/types/errors/PluginError.d.ts +12 -0
- package/types/errors/ResolveError.d.ts +7 -0
- package/types/errors/ResolverError.d.ts +7 -0
- package/types/errors/UnmatchedBundleStrategyError.d.ts +7 -0
- package/types/errors/UnmatchedDereferenceStrategyError.d.ts +7 -0
- package/types/errors/UnmatchedResolveStrategyError.d.ts +7 -0
- package/types/errors/UnmatchedResolverError.d.ts +7 -0
- package/types/index.d.ts +75 -0
- package/types/options/index.d.ts +62 -0
- package/types/options/util.d.ts +5 -0
- package/types/parse/index.d.ts +7 -0
- package/types/parse/parsers/Parser.d.ts +38 -0
- package/types/parse/parsers/api-design-systems-json/index.d.ts +21 -0
- package/types/parse/parsers/api-design-systems-yaml/index.d.ts +20 -0
- package/types/parse/parsers/apidom-json/index.d.ts +24 -0
- package/types/parse/parsers/arazzo-json-1/index.d.ts +21 -0
- package/types/parse/parsers/arazzo-yaml-1/index.d.ts +20 -0
- package/types/parse/parsers/asyncapi-json-2/index.d.ts +21 -0
- package/types/parse/parsers/asyncapi-yaml-2/index.d.ts +20 -0
- package/types/parse/parsers/binary/index-browser.d.ts +21 -0
- package/types/parse/parsers/binary/index-node.d.ts +21 -0
- package/types/parse/parsers/json/index.d.ts +20 -0
- package/types/parse/parsers/openapi-json-2/index.d.ts +21 -0
- package/types/parse/parsers/openapi-json-3-0/index.d.ts +21 -0
- package/types/parse/parsers/openapi-json-3-1/index.d.ts +21 -0
- package/types/parse/parsers/openapi-yaml-2/index.d.ts +20 -0
- package/types/parse/parsers/openapi-yaml-3-0/index.d.ts +20 -0
- package/types/parse/parsers/openapi-yaml-3-1/index.d.ts +20 -0
- package/types/parse/parsers/yaml-1-2/index.d.ts +20 -0
- package/types/resolve/index.d.ts +12 -0
- package/types/resolve/resolvers/HTTPResolver.d.ts +22 -0
- package/types/resolve/resolvers/Resolver.d.ts +17 -0
- package/types/resolve/resolvers/file/index-browser.d.ts +12 -0
- package/types/resolve/resolvers/file/index-node.d.ts +20 -0
- package/types/resolve/resolvers/http-axios/index.d.ts +30 -0
- package/types/resolve/strategies/ResolveStrategy.d.ts +19 -0
- package/types/resolve/strategies/apidom/index.d.ts +27 -0
- package/types/resolve/strategies/asyncapi-2/index.d.ts +27 -0
- package/types/resolve/strategies/openapi-2/index.d.ts +27 -0
- package/types/resolve/strategies/openapi-3-0/index.d.ts +27 -0
- package/types/resolve/strategies/openapi-3-1/index.d.ts +27 -0
- package/types/resolve/util.d.ts +6 -0
- package/types/util/plugins.d.ts +14 -0
- package/types/util/url.d.ts +106 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import Resolver from "./Resolver.mjs";
|
|
2
|
+
import * as url from "../../util/url.mjs";
|
|
3
|
+
/**
|
|
4
|
+
* @public
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* @public
|
|
8
|
+
*/
|
|
9
|
+
class HTTPResolver extends Resolver {
|
|
10
|
+
timeout;
|
|
11
|
+
redirects;
|
|
12
|
+
withCredentials;
|
|
13
|
+
constructor(options) {
|
|
14
|
+
const {
|
|
15
|
+
name = 'http-resolver',
|
|
16
|
+
timeout = 5000,
|
|
17
|
+
redirects = 5,
|
|
18
|
+
withCredentials = false
|
|
19
|
+
} = options ?? {};
|
|
20
|
+
super({
|
|
21
|
+
name
|
|
22
|
+
});
|
|
23
|
+
this.timeout = timeout;
|
|
24
|
+
this.redirects = redirects;
|
|
25
|
+
this.withCredentials = withCredentials;
|
|
26
|
+
}
|
|
27
|
+
canRead(file) {
|
|
28
|
+
return url.isHttpUrl(file.uri);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export default HTTPResolver;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.default = void 0;
|
|
5
|
+
/**
|
|
6
|
+
* @public
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @public
|
|
11
|
+
*/
|
|
12
|
+
class Resolver {
|
|
13
|
+
name;
|
|
14
|
+
constructor({
|
|
15
|
+
name
|
|
16
|
+
}) {
|
|
17
|
+
this.name = name;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
var _default = exports.default = Resolver;
|
|
@@ -0,0 +1,24 @@
|
|
|
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 _Resolver = _interopRequireDefault(require("../Resolver.cjs"));
|
|
7
|
+
var _ResolverError = _interopRequireDefault(require("../../../errors/ResolverError.cjs"));
|
|
8
|
+
/**
|
|
9
|
+
* @public
|
|
10
|
+
*/
|
|
11
|
+
class FileResolver extends _Resolver.default {
|
|
12
|
+
constructor() {
|
|
13
|
+
super({
|
|
14
|
+
name: 'file'
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
canRead() {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
read() {
|
|
21
|
+
throw new _ResolverError.default('FileResolver is not intended to be used in browser context.');
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
var _default = exports.default = FileResolver;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import Resolver from "../Resolver.mjs";
|
|
2
|
+
import ResolverError from "../../../errors/ResolverError.mjs";
|
|
3
|
+
/**
|
|
4
|
+
* @public
|
|
5
|
+
*/
|
|
6
|
+
class FileResolver extends Resolver {
|
|
7
|
+
constructor() {
|
|
8
|
+
super({
|
|
9
|
+
name: 'file'
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
canRead() {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
read() {
|
|
16
|
+
throw new ResolverError('FileResolver is not intended to be used in browser context.');
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export default FileResolver;
|
|
@@ -0,0 +1,49 @@
|
|
|
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 _nodeFs = require("node:fs");
|
|
8
|
+
var _nodeUtil = require("node:util");
|
|
9
|
+
var _minimatch = _interopRequireDefault(require("minimatch"));
|
|
10
|
+
var _Resolver = _interopRequireDefault(require("../Resolver.cjs"));
|
|
11
|
+
var url = _interopRequireWildcard(require("../../../util/url.cjs"));
|
|
12
|
+
var _ResolverError = _interopRequireDefault(require("../../../errors/ResolverError.cjs"));
|
|
13
|
+
/**
|
|
14
|
+
* @public
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* @public
|
|
19
|
+
*/
|
|
20
|
+
class FileResolver extends _Resolver.default {
|
|
21
|
+
fileAllowList;
|
|
22
|
+
constructor(options) {
|
|
23
|
+
const {
|
|
24
|
+
fileAllowList = []
|
|
25
|
+
} = options ?? {};
|
|
26
|
+
super({
|
|
27
|
+
name: 'file'
|
|
28
|
+
});
|
|
29
|
+
this.fileAllowList = fileAllowList;
|
|
30
|
+
}
|
|
31
|
+
canRead(file) {
|
|
32
|
+
return url.isFileSystemPath(file.uri) && this.fileAllowList.some(pattern => {
|
|
33
|
+
return typeof pattern === 'string' ? (0, _minimatch.default)(file.uri, pattern, {
|
|
34
|
+
matchBase: true
|
|
35
|
+
}) : pattern.test(file.uri);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
async read(file) {
|
|
39
|
+
const fileSystemPath = url.toFileSystemPath(file.uri);
|
|
40
|
+
try {
|
|
41
|
+
return await (0, _nodeUtil.promisify)(_nodeFs.readFile)(fileSystemPath);
|
|
42
|
+
} catch (error) {
|
|
43
|
+
throw new _ResolverError.default(`Error opening file "${file.uri}"`, {
|
|
44
|
+
cause: error
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
var _default = exports.default = FileResolver;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { readFile } from 'node:fs';
|
|
2
|
+
import { promisify } from 'node:util';
|
|
3
|
+
import minimatch from 'minimatch';
|
|
4
|
+
import Resolver from "../Resolver.mjs";
|
|
5
|
+
import * as url from "../../../util/url.mjs";
|
|
6
|
+
import ResolverError from "../../../errors/ResolverError.mjs";
|
|
7
|
+
/**
|
|
8
|
+
* @public
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* @public
|
|
12
|
+
*/
|
|
13
|
+
class FileResolver extends Resolver {
|
|
14
|
+
fileAllowList;
|
|
15
|
+
constructor(options) {
|
|
16
|
+
const {
|
|
17
|
+
fileAllowList = []
|
|
18
|
+
} = options ?? {};
|
|
19
|
+
super({
|
|
20
|
+
name: 'file'
|
|
21
|
+
});
|
|
22
|
+
this.fileAllowList = fileAllowList;
|
|
23
|
+
}
|
|
24
|
+
canRead(file) {
|
|
25
|
+
return url.isFileSystemPath(file.uri) && this.fileAllowList.some(pattern => {
|
|
26
|
+
return typeof pattern === 'string' ? minimatch(file.uri, pattern, {
|
|
27
|
+
matchBase: true
|
|
28
|
+
}) : pattern.test(file.uri);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
async read(file) {
|
|
32
|
+
const fileSystemPath = url.toFileSystemPath(file.uri);
|
|
33
|
+
try {
|
|
34
|
+
return await promisify(readFile)(fileSystemPath);
|
|
35
|
+
} catch (error) {
|
|
36
|
+
throw new ResolverError(`Error opening file "${file.uri}"`, {
|
|
37
|
+
cause: error
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export default FileResolver;
|
|
@@ -0,0 +1,80 @@
|
|
|
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 _ramda = require("ramda");
|
|
7
|
+
var _ramdaAdjunct = require("ramda-adjunct");
|
|
8
|
+
var _axios = _interopRequireDefault(require("axios"));
|
|
9
|
+
var _HTTPResolver = _interopRequireDefault(require("../HTTPResolver.cjs"));
|
|
10
|
+
var _ResolverError = _interopRequireDefault(require("../../../errors/ResolverError.cjs"));
|
|
11
|
+
/**
|
|
12
|
+
* @public
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @public
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @public
|
|
21
|
+
*/
|
|
22
|
+
class HTTPResolverAxios extends _HTTPResolver.default {
|
|
23
|
+
axiosConfig = {};
|
|
24
|
+
axiosInstance;
|
|
25
|
+
previousAxiosConfig;
|
|
26
|
+
constructor(options) {
|
|
27
|
+
const {
|
|
28
|
+
axiosConfig = {},
|
|
29
|
+
...rest
|
|
30
|
+
} = options ?? {};
|
|
31
|
+
super({
|
|
32
|
+
...rest,
|
|
33
|
+
name: 'http-axios'
|
|
34
|
+
});
|
|
35
|
+
this.axiosConfig = axiosConfig;
|
|
36
|
+
}
|
|
37
|
+
getHttpClient() {
|
|
38
|
+
if (this.axiosInstance === undefined || this.previousAxiosConfig !== this.axiosConfig) {
|
|
39
|
+
const config = (0, _ramda.omit)(['interceptors'], this.axiosConfig);
|
|
40
|
+
const {
|
|
41
|
+
interceptors
|
|
42
|
+
} = this.axiosConfig;
|
|
43
|
+
this.axiosInstance = _axios.default.create({
|
|
44
|
+
timeout: this.timeout,
|
|
45
|
+
maxRedirects: this.redirects,
|
|
46
|
+
withCredentials: this.withCredentials,
|
|
47
|
+
responseType: 'arraybuffer',
|
|
48
|
+
...config
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
// settings up request interceptors
|
|
52
|
+
if (Array.isArray(interceptors?.request)) {
|
|
53
|
+
interceptors.request.forEach(requestInterceptor => {
|
|
54
|
+
this.axiosInstance.interceptors.request.use(...(0, _ramdaAdjunct.ensureArray)(requestInterceptor));
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// settings up response interceptors
|
|
59
|
+
if (Array.isArray(interceptors?.response)) {
|
|
60
|
+
interceptors.response.forEach(responseInterceptor => {
|
|
61
|
+
this.axiosInstance.interceptors.response.use(...(0, _ramdaAdjunct.ensureArray)(responseInterceptor));
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
this.previousAxiosConfig = this.axiosConfig;
|
|
65
|
+
}
|
|
66
|
+
return this.axiosInstance;
|
|
67
|
+
}
|
|
68
|
+
async read(file) {
|
|
69
|
+
const client = this.getHttpClient();
|
|
70
|
+
try {
|
|
71
|
+
const response = await client.get(file.uri);
|
|
72
|
+
return response.data;
|
|
73
|
+
} catch (error) {
|
|
74
|
+
throw new _ResolverError.default(`Error downloading "${file.uri}"`, {
|
|
75
|
+
cause: error
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
var _default = exports.default = HTTPResolverAxios;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { omit } from 'ramda';
|
|
2
|
+
import { ensureArray } from 'ramda-adjunct';
|
|
3
|
+
import axios from 'axios';
|
|
4
|
+
import HTTPResolver from "../HTTPResolver.mjs";
|
|
5
|
+
import ResolverError from "../../../errors/ResolverError.mjs";
|
|
6
|
+
/**
|
|
7
|
+
* @public
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* @public
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* @public
|
|
14
|
+
*/
|
|
15
|
+
class HTTPResolverAxios extends HTTPResolver {
|
|
16
|
+
axiosConfig = {};
|
|
17
|
+
axiosInstance;
|
|
18
|
+
previousAxiosConfig;
|
|
19
|
+
constructor(options) {
|
|
20
|
+
const {
|
|
21
|
+
axiosConfig = {},
|
|
22
|
+
...rest
|
|
23
|
+
} = options ?? {};
|
|
24
|
+
super({
|
|
25
|
+
...rest,
|
|
26
|
+
name: 'http-axios'
|
|
27
|
+
});
|
|
28
|
+
this.axiosConfig = axiosConfig;
|
|
29
|
+
}
|
|
30
|
+
getHttpClient() {
|
|
31
|
+
if (this.axiosInstance === undefined || this.previousAxiosConfig !== this.axiosConfig) {
|
|
32
|
+
const config = omit(['interceptors'], this.axiosConfig);
|
|
33
|
+
const {
|
|
34
|
+
interceptors
|
|
35
|
+
} = this.axiosConfig;
|
|
36
|
+
this.axiosInstance = axios.create({
|
|
37
|
+
timeout: this.timeout,
|
|
38
|
+
maxRedirects: this.redirects,
|
|
39
|
+
withCredentials: this.withCredentials,
|
|
40
|
+
responseType: 'arraybuffer',
|
|
41
|
+
...config
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
// settings up request interceptors
|
|
45
|
+
if (Array.isArray(interceptors?.request)) {
|
|
46
|
+
interceptors.request.forEach(requestInterceptor => {
|
|
47
|
+
this.axiosInstance.interceptors.request.use(...ensureArray(requestInterceptor));
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// settings up response interceptors
|
|
52
|
+
if (Array.isArray(interceptors?.response)) {
|
|
53
|
+
interceptors.response.forEach(responseInterceptor => {
|
|
54
|
+
this.axiosInstance.interceptors.response.use(...ensureArray(responseInterceptor));
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
this.previousAxiosConfig = this.axiosConfig;
|
|
58
|
+
}
|
|
59
|
+
return this.axiosInstance;
|
|
60
|
+
}
|
|
61
|
+
async read(file) {
|
|
62
|
+
const client = this.getHttpClient();
|
|
63
|
+
try {
|
|
64
|
+
const response = await client.get(file.uri);
|
|
65
|
+
return response.data;
|
|
66
|
+
} catch (error) {
|
|
67
|
+
throw new ResolverError(`Error downloading "${file.uri}"`, {
|
|
68
|
+
cause: error
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
export default HTTPResolverAxios;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.default = void 0;
|
|
5
|
+
/**
|
|
6
|
+
* @public
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @public
|
|
11
|
+
*/
|
|
12
|
+
class ResolveStrategy {
|
|
13
|
+
name;
|
|
14
|
+
constructor({
|
|
15
|
+
name
|
|
16
|
+
}) {
|
|
17
|
+
this.name = name;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
var _default = exports.default = ResolveStrategy;
|
|
@@ -0,0 +1,49 @@
|
|
|
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 _ResolveStrategy = _interopRequireDefault(require("../ResolveStrategy.cjs"));
|
|
7
|
+
var _ReferenceSet = _interopRequireDefault(require("../../../ReferenceSet.cjs"));
|
|
8
|
+
var _util = require("../../../options/util.cjs");
|
|
9
|
+
var _UnmatchedDereferenceStrategyError = _interopRequireDefault(require("../../../errors/UnmatchedDereferenceStrategyError.cjs"));
|
|
10
|
+
/**
|
|
11
|
+
* @public
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @public
|
|
16
|
+
*/
|
|
17
|
+
class ApiDOMResolveStrategy extends _ResolveStrategy.default {
|
|
18
|
+
constructor(options) {
|
|
19
|
+
super({
|
|
20
|
+
...(options ?? {}),
|
|
21
|
+
name: 'apidom'
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
canResolve(file, options) {
|
|
25
|
+
const dereferenceStrategy = options.dereference.strategies.find(strategy => strategy.name === 'apidom');
|
|
26
|
+
if (dereferenceStrategy === undefined) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
return dereferenceStrategy.canDereference(file, options);
|
|
30
|
+
}
|
|
31
|
+
async resolve(file, options) {
|
|
32
|
+
const dereferenceStrategy = options.dereference.strategies.find(strategy => strategy.name === 'apidom');
|
|
33
|
+
if (dereferenceStrategy === undefined) {
|
|
34
|
+
throw new _UnmatchedDereferenceStrategyError.default('"apidom" dereference strategy is not available.');
|
|
35
|
+
}
|
|
36
|
+
const refSet = new _ReferenceSet.default();
|
|
37
|
+
const mergedOptions = (0, _util.merge)(options, {
|
|
38
|
+
resolve: {
|
|
39
|
+
internal: false
|
|
40
|
+
},
|
|
41
|
+
dereference: {
|
|
42
|
+
refSet
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
await dereferenceStrategy.dereference(file, mergedOptions);
|
|
46
|
+
return refSet;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
var _default = exports.default = ApiDOMResolveStrategy;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import ResolveStrategy from "../ResolveStrategy.mjs";
|
|
2
|
+
import ReferenceSet from "../../../ReferenceSet.mjs";
|
|
3
|
+
import { merge as mergeOptions } from "../../../options/util.mjs";
|
|
4
|
+
import UnmatchedDereferenceStrategyError from "../../../errors/UnmatchedDereferenceStrategyError.mjs";
|
|
5
|
+
/**
|
|
6
|
+
* @public
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* @public
|
|
10
|
+
*/
|
|
11
|
+
class ApiDOMResolveStrategy extends ResolveStrategy {
|
|
12
|
+
constructor(options) {
|
|
13
|
+
super({
|
|
14
|
+
...(options ?? {}),
|
|
15
|
+
name: 'apidom'
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
canResolve(file, options) {
|
|
19
|
+
const dereferenceStrategy = options.dereference.strategies.find(strategy => strategy.name === 'apidom');
|
|
20
|
+
if (dereferenceStrategy === undefined) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
return dereferenceStrategy.canDereference(file, options);
|
|
24
|
+
}
|
|
25
|
+
async resolve(file, options) {
|
|
26
|
+
const dereferenceStrategy = options.dereference.strategies.find(strategy => strategy.name === 'apidom');
|
|
27
|
+
if (dereferenceStrategy === undefined) {
|
|
28
|
+
throw new UnmatchedDereferenceStrategyError('"apidom" dereference strategy is not available.');
|
|
29
|
+
}
|
|
30
|
+
const refSet = new ReferenceSet();
|
|
31
|
+
const mergedOptions = mergeOptions(options, {
|
|
32
|
+
resolve: {
|
|
33
|
+
internal: false
|
|
34
|
+
},
|
|
35
|
+
dereference: {
|
|
36
|
+
refSet
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
await dereferenceStrategy.dereference(file, mergedOptions);
|
|
40
|
+
return refSet;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
export default ApiDOMResolveStrategy;
|
|
@@ -0,0 +1,49 @@
|
|
|
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 _ResolveStrategy = _interopRequireDefault(require("../ResolveStrategy.cjs"));
|
|
7
|
+
var _ReferenceSet = _interopRequireDefault(require("../../../ReferenceSet.cjs"));
|
|
8
|
+
var _util = require("../../../options/util.cjs");
|
|
9
|
+
var _UnmatchedDereferenceStrategyError = _interopRequireDefault(require("../../../errors/UnmatchedDereferenceStrategyError.cjs"));
|
|
10
|
+
/**
|
|
11
|
+
* @public
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @public
|
|
16
|
+
*/
|
|
17
|
+
class AsyncAPI2ResolveStrategy extends _ResolveStrategy.default {
|
|
18
|
+
constructor(options) {
|
|
19
|
+
super({
|
|
20
|
+
...(options ?? {}),
|
|
21
|
+
name: 'asyncapi-2'
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
canResolve(file, options) {
|
|
25
|
+
const dereferenceStrategy = options.dereference.strategies.find(strategy => strategy.name === 'asyncapi-2');
|
|
26
|
+
if (dereferenceStrategy === undefined) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
return dereferenceStrategy.canDereference(file, options);
|
|
30
|
+
}
|
|
31
|
+
async resolve(file, options) {
|
|
32
|
+
const dereferenceStrategy = options.dereference.strategies.find(strategy => strategy.name === 'asyncapi-2');
|
|
33
|
+
if (dereferenceStrategy === undefined) {
|
|
34
|
+
throw new _UnmatchedDereferenceStrategyError.default('"asyncapi-2" dereference strategy is not available.');
|
|
35
|
+
}
|
|
36
|
+
const refSet = new _ReferenceSet.default();
|
|
37
|
+
const mergedOptions = (0, _util.merge)(options, {
|
|
38
|
+
resolve: {
|
|
39
|
+
internal: false
|
|
40
|
+
},
|
|
41
|
+
dereference: {
|
|
42
|
+
refSet
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
await dereferenceStrategy.dereference(file, mergedOptions);
|
|
46
|
+
return refSet;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
var _default = exports.default = AsyncAPI2ResolveStrategy;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import ResolveStrategy from "../ResolveStrategy.mjs";
|
|
2
|
+
import ReferenceSet from "../../../ReferenceSet.mjs";
|
|
3
|
+
import { merge as mergeOptions } from "../../../options/util.mjs";
|
|
4
|
+
import UnmatchedDereferenceStrategyError from "../../../errors/UnmatchedDereferenceStrategyError.mjs";
|
|
5
|
+
/**
|
|
6
|
+
* @public
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* @public
|
|
10
|
+
*/
|
|
11
|
+
class AsyncAPI2ResolveStrategy extends ResolveStrategy {
|
|
12
|
+
constructor(options) {
|
|
13
|
+
super({
|
|
14
|
+
...(options ?? {}),
|
|
15
|
+
name: 'asyncapi-2'
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
canResolve(file, options) {
|
|
19
|
+
const dereferenceStrategy = options.dereference.strategies.find(strategy => strategy.name === 'asyncapi-2');
|
|
20
|
+
if (dereferenceStrategy === undefined) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
return dereferenceStrategy.canDereference(file, options);
|
|
24
|
+
}
|
|
25
|
+
async resolve(file, options) {
|
|
26
|
+
const dereferenceStrategy = options.dereference.strategies.find(strategy => strategy.name === 'asyncapi-2');
|
|
27
|
+
if (dereferenceStrategy === undefined) {
|
|
28
|
+
throw new UnmatchedDereferenceStrategyError('"asyncapi-2" dereference strategy is not available.');
|
|
29
|
+
}
|
|
30
|
+
const refSet = new ReferenceSet();
|
|
31
|
+
const mergedOptions = mergeOptions(options, {
|
|
32
|
+
resolve: {
|
|
33
|
+
internal: false
|
|
34
|
+
},
|
|
35
|
+
dereference: {
|
|
36
|
+
refSet
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
await dereferenceStrategy.dereference(file, mergedOptions);
|
|
40
|
+
return refSet;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
export default AsyncAPI2ResolveStrategy;
|
|
@@ -0,0 +1,49 @@
|
|
|
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 _ResolveStrategy = _interopRequireDefault(require("../ResolveStrategy.cjs"));
|
|
7
|
+
var _ReferenceSet = _interopRequireDefault(require("../../../ReferenceSet.cjs"));
|
|
8
|
+
var _util = require("../../../options/util.cjs");
|
|
9
|
+
var _UnmatchedDereferenceStrategyError = _interopRequireDefault(require("../../../errors/UnmatchedDereferenceStrategyError.cjs"));
|
|
10
|
+
/**
|
|
11
|
+
* @public
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @public
|
|
16
|
+
*/
|
|
17
|
+
class OpenAPI2ResolveStrategy extends _ResolveStrategy.default {
|
|
18
|
+
constructor(options) {
|
|
19
|
+
super({
|
|
20
|
+
...(options ?? {}),
|
|
21
|
+
name: 'openapi-2'
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
canResolve(file, options) {
|
|
25
|
+
const dereferenceStrategy = options.dereference.strategies.find(strategy => strategy.name === 'openapi-2');
|
|
26
|
+
if (dereferenceStrategy === undefined) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
return dereferenceStrategy.canDereference(file, options);
|
|
30
|
+
}
|
|
31
|
+
async resolve(file, options) {
|
|
32
|
+
const dereferenceStrategy = options.dereference.strategies.find(strategy => strategy.name === 'openapi-2');
|
|
33
|
+
if (dereferenceStrategy === undefined) {
|
|
34
|
+
throw new _UnmatchedDereferenceStrategyError.default('"openapi-2" dereference strategy is not available.');
|
|
35
|
+
}
|
|
36
|
+
const refSet = new _ReferenceSet.default();
|
|
37
|
+
const mergedOptions = (0, _util.merge)(options, {
|
|
38
|
+
resolve: {
|
|
39
|
+
internal: false
|
|
40
|
+
},
|
|
41
|
+
dereference: {
|
|
42
|
+
refSet
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
await dereferenceStrategy.dereference(file, mergedOptions);
|
|
46
|
+
return refSet;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
var _default = exports.default = OpenAPI2ResolveStrategy;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import ResolveStrategy from "../ResolveStrategy.mjs";
|
|
2
|
+
import ReferenceSet from "../../../ReferenceSet.mjs";
|
|
3
|
+
import { merge as mergeOptions } from "../../../options/util.mjs";
|
|
4
|
+
import UnmatchedDereferenceStrategyError from "../../../errors/UnmatchedDereferenceStrategyError.mjs";
|
|
5
|
+
/**
|
|
6
|
+
* @public
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* @public
|
|
10
|
+
*/
|
|
11
|
+
class OpenAPI2ResolveStrategy extends ResolveStrategy {
|
|
12
|
+
constructor(options) {
|
|
13
|
+
super({
|
|
14
|
+
...(options ?? {}),
|
|
15
|
+
name: 'openapi-2'
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
canResolve(file, options) {
|
|
19
|
+
const dereferenceStrategy = options.dereference.strategies.find(strategy => strategy.name === 'openapi-2');
|
|
20
|
+
if (dereferenceStrategy === undefined) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
return dereferenceStrategy.canDereference(file, options);
|
|
24
|
+
}
|
|
25
|
+
async resolve(file, options) {
|
|
26
|
+
const dereferenceStrategy = options.dereference.strategies.find(strategy => strategy.name === 'openapi-2');
|
|
27
|
+
if (dereferenceStrategy === undefined) {
|
|
28
|
+
throw new UnmatchedDereferenceStrategyError('"openapi-2" dereference strategy is not available.');
|
|
29
|
+
}
|
|
30
|
+
const refSet = new ReferenceSet();
|
|
31
|
+
const mergedOptions = mergeOptions(options, {
|
|
32
|
+
resolve: {
|
|
33
|
+
internal: false
|
|
34
|
+
},
|
|
35
|
+
dereference: {
|
|
36
|
+
refSet
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
await dereferenceStrategy.dereference(file, mergedOptions);
|
|
40
|
+
return refSet;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
export default OpenAPI2ResolveStrategy;
|