@speclynx/apidom-reference 4.0.1 → 4.0.3

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.
Files changed (275) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/package.json +26 -27
  3. package/src/File.cjs +50 -0
  4. package/src/File.mjs +44 -0
  5. package/src/File.ts +63 -0
  6. package/src/Reference.cjs +31 -0
  7. package/src/Reference.mjs +27 -0
  8. package/src/Reference.ts +38 -0
  9. package/src/ReferenceSet.cjs +60 -0
  10. package/src/ReferenceSet.mjs +57 -0
  11. package/src/ReferenceSet.ts +73 -0
  12. package/src/bundle/index.cjs +61 -0
  13. package/src/bundle/index.mjs +55 -0
  14. package/src/bundle/index.ts +57 -0
  15. package/src/bundle/strategies/BundleStrategy.cjs +20 -0
  16. package/src/bundle/strategies/BundleStrategy.mjs +16 -0
  17. package/src/bundle/strategies/BundleStrategy.ts +27 -0
  18. package/src/bundle/strategies/openapi-3-1/index.cjs +35 -0
  19. package/src/bundle/strategies/openapi-3-1/index.mjs +29 -0
  20. package/src/bundle/strategies/openapi-3-1/index.ts +57 -0
  21. package/src/configuration/empty.cjs +9 -0
  22. package/src/configuration/empty.mjs +1 -0
  23. package/src/configuration/empty.ts +1 -0
  24. package/src/configuration/saturated.cjs +88 -0
  25. package/src/configuration/saturated.mjs +80 -0
  26. package/src/configuration/saturated.ts +72 -0
  27. package/src/dereference/index.cjs +90 -0
  28. package/src/dereference/index.mjs +83 -0
  29. package/src/dereference/index.ts +96 -0
  30. package/src/dereference/strategies/DereferenceStrategy.cjs +20 -0
  31. package/src/dereference/strategies/DereferenceStrategy.mjs +16 -0
  32. package/src/dereference/strategies/DereferenceStrategy.ts +27 -0
  33. package/src/dereference/strategies/apidom/index.cjs +89 -0
  34. package/src/dereference/strategies/apidom/index.mjs +83 -0
  35. package/src/dereference/strategies/apidom/index.ts +128 -0
  36. package/src/dereference/strategies/apidom/selectors/element-id.cjs +47 -0
  37. package/src/dereference/strategies/apidom/selectors/element-id.mjs +41 -0
  38. package/src/dereference/strategies/apidom/selectors/element-id.ts +48 -0
  39. package/src/dereference/strategies/apidom/visitor.cjs +266 -0
  40. package/src/dereference/strategies/apidom/visitor.mjs +259 -0
  41. package/src/dereference/strategies/apidom/visitor.ts +316 -0
  42. package/src/dereference/strategies/arazzo-1/index.cjs +109 -0
  43. package/src/dereference/strategies/arazzo-1/index.mjs +100 -0
  44. package/src/dereference/strategies/arazzo-1/index.ts +158 -0
  45. package/src/dereference/strategies/arazzo-1/selectors/$anchor.cjs +12 -0
  46. package/src/dereference/strategies/arazzo-1/selectors/$anchor.mjs +1 -0
  47. package/src/dereference/strategies/arazzo-1/selectors/$anchor.ts +9 -0
  48. package/src/dereference/strategies/arazzo-1/selectors/uri.cjs +8 -0
  49. package/src/dereference/strategies/arazzo-1/selectors/uri.mjs +1 -0
  50. package/src/dereference/strategies/arazzo-1/selectors/uri.ts +5 -0
  51. package/src/dereference/strategies/arazzo-1/source-descriptions.cjs +248 -0
  52. package/src/dereference/strategies/arazzo-1/source-descriptions.mjs +243 -0
  53. package/src/dereference/strategies/arazzo-1/source-descriptions.ts +317 -0
  54. package/src/dereference/strategies/arazzo-1/util.cjs +37 -0
  55. package/src/dereference/strategies/arazzo-1/util.mjs +29 -0
  56. package/src/dereference/strategies/arazzo-1/util.ts +33 -0
  57. package/src/dereference/strategies/arazzo-1/visitor.cjs +507 -0
  58. package/src/dereference/strategies/arazzo-1/visitor.mjs +500 -0
  59. package/src/dereference/strategies/arazzo-1/visitor.ts +574 -0
  60. package/src/dereference/strategies/asyncapi-2/index.cjs +94 -0
  61. package/src/dereference/strategies/asyncapi-2/index.mjs +88 -0
  62. package/src/dereference/strategies/asyncapi-2/index.ts +133 -0
  63. package/src/dereference/strategies/asyncapi-2/visitor.cjs +501 -0
  64. package/src/dereference/strategies/asyncapi-2/visitor.mjs +494 -0
  65. package/src/dereference/strategies/asyncapi-2/visitor.ts +589 -0
  66. package/src/dereference/strategies/openapi-2/index.cjs +96 -0
  67. package/src/dereference/strategies/openapi-2/index.mjs +90 -0
  68. package/src/dereference/strategies/openapi-2/index.ts +136 -0
  69. package/src/dereference/strategies/openapi-2/visitor.cjs +629 -0
  70. package/src/dereference/strategies/openapi-2/visitor.mjs +622 -0
  71. package/src/dereference/strategies/openapi-2/visitor.ts +745 -0
  72. package/src/dereference/strategies/openapi-3-0/index.cjs +96 -0
  73. package/src/dereference/strategies/openapi-3-0/index.mjs +90 -0
  74. package/src/dereference/strategies/openapi-3-0/index.ts +134 -0
  75. package/src/dereference/strategies/openapi-3-0/visitor.cjs +622 -0
  76. package/src/dereference/strategies/openapi-3-0/visitor.mjs +615 -0
  77. package/src/dereference/strategies/openapi-3-0/visitor.ts +760 -0
  78. package/src/dereference/strategies/openapi-3-1/index.cjs +99 -0
  79. package/src/dereference/strategies/openapi-3-1/index.mjs +90 -0
  80. package/src/dereference/strategies/openapi-3-1/index.ts +141 -0
  81. package/src/dereference/strategies/openapi-3-1/selectors/$anchor.cjs +65 -0
  82. package/src/dereference/strategies/openapi-3-1/selectors/$anchor.mjs +54 -0
  83. package/src/dereference/strategies/openapi-3-1/selectors/$anchor.ts +64 -0
  84. package/src/dereference/strategies/openapi-3-1/selectors/uri.cjs +50 -0
  85. package/src/dereference/strategies/openapi-3-1/selectors/uri.mjs +42 -0
  86. package/src/dereference/strategies/openapi-3-1/selectors/uri.ts +54 -0
  87. package/src/dereference/strategies/openapi-3-1/util.cjs +68 -0
  88. package/src/dereference/strategies/openapi-3-1/util.mjs +59 -0
  89. package/src/dereference/strategies/openapi-3-1/util.ts +83 -0
  90. package/src/dereference/strategies/openapi-3-1/visitor.cjs +874 -0
  91. package/src/dereference/strategies/openapi-3-1/visitor.mjs +867 -0
  92. package/src/dereference/strategies/openapi-3-1/visitor.ts +1053 -0
  93. package/src/dereference/util.cjs +31 -0
  94. package/src/dereference/util.mjs +27 -0
  95. package/src/dereference/util.ts +29 -0
  96. package/src/errors/BundleError.cjs +10 -0
  97. package/src/errors/BundleError.mjs +7 -0
  98. package/src/errors/BundleError.ts +8 -0
  99. package/src/errors/DereferenceError.cjs +10 -0
  100. package/src/errors/DereferenceError.mjs +7 -0
  101. package/src/errors/DereferenceError.ts +8 -0
  102. package/src/errors/EvaluationElementIdError.cjs +10 -0
  103. package/src/errors/EvaluationElementIdError.mjs +7 -0
  104. package/src/errors/EvaluationElementIdError.ts +8 -0
  105. package/src/errors/EvaluationJsonSchema$anchorError.cjs +11 -0
  106. package/src/errors/EvaluationJsonSchema$anchorError.mjs +6 -0
  107. package/src/errors/EvaluationJsonSchema$anchorError.ts +8 -0
  108. package/src/errors/EvaluationJsonSchemaUriError.cjs +11 -0
  109. package/src/errors/EvaluationJsonSchemaUriError.mjs +6 -0
  110. package/src/errors/EvaluationJsonSchemaUriError.ts +8 -0
  111. package/src/errors/InvalidJsonSchema$anchorError.cjs +15 -0
  112. package/src/errors/InvalidJsonSchema$anchorError.mjs +10 -0
  113. package/src/errors/InvalidJsonSchema$anchorError.ts +12 -0
  114. package/src/errors/JsonSchema$anchorError.cjs +10 -0
  115. package/src/errors/JsonSchema$anchorError.mjs +7 -0
  116. package/src/errors/JsonSchema$anchorError.ts +8 -0
  117. package/src/errors/JsonSchemaUriError.cjs +10 -0
  118. package/src/errors/JsonSchemaUriError.mjs +7 -0
  119. package/src/errors/JsonSchemaUriError.ts +8 -0
  120. package/src/errors/MaximumBundleDepthError.cjs +11 -0
  121. package/src/errors/MaximumBundleDepthError.mjs +6 -0
  122. package/src/errors/MaximumBundleDepthError.ts +8 -0
  123. package/src/errors/MaximumDereferenceDepthError.cjs +11 -0
  124. package/src/errors/MaximumDereferenceDepthError.mjs +6 -0
  125. package/src/errors/MaximumDereferenceDepthError.ts +8 -0
  126. package/src/errors/MaximumResolveDepthError.cjs +11 -0
  127. package/src/errors/MaximumResolveDepthError.mjs +6 -0
  128. package/src/errors/MaximumResolveDepthError.ts +8 -0
  129. package/src/errors/ParseError.cjs +10 -0
  130. package/src/errors/ParseError.mjs +7 -0
  131. package/src/errors/ParseError.ts +8 -0
  132. package/src/errors/ParserError.cjs +11 -0
  133. package/src/errors/ParserError.mjs +6 -0
  134. package/src/errors/ParserError.ts +8 -0
  135. package/src/errors/PluginError.cjs +18 -0
  136. package/src/errors/PluginError.mjs +15 -0
  137. package/src/errors/PluginError.ts +15 -0
  138. package/src/errors/ResolveError.cjs +10 -0
  139. package/src/errors/ResolveError.mjs +7 -0
  140. package/src/errors/ResolveError.ts +8 -0
  141. package/src/errors/ResolverError.cjs +11 -0
  142. package/src/errors/ResolverError.mjs +6 -0
  143. package/src/errors/ResolverError.ts +8 -0
  144. package/src/errors/UnmatchedBundleStrategyError.cjs +11 -0
  145. package/src/errors/UnmatchedBundleStrategyError.mjs +6 -0
  146. package/src/errors/UnmatchedBundleStrategyError.ts +8 -0
  147. package/src/errors/UnmatchedDereferenceStrategyError.cjs +11 -0
  148. package/src/errors/UnmatchedDereferenceStrategyError.mjs +6 -0
  149. package/src/errors/UnmatchedDereferenceStrategyError.ts +8 -0
  150. package/src/errors/UnmatchedParserError.cjs +11 -0
  151. package/src/errors/UnmatchedParserError.mjs +6 -0
  152. package/src/errors/UnmatchedParserError.ts +8 -0
  153. package/src/errors/UnmatchedResolveStrategyError.cjs +11 -0
  154. package/src/errors/UnmatchedResolveStrategyError.mjs +6 -0
  155. package/src/errors/UnmatchedResolveStrategyError.ts +8 -0
  156. package/src/errors/UnmatchedResolverError.cjs +11 -0
  157. package/src/errors/UnmatchedResolverError.mjs +6 -0
  158. package/src/errors/UnmatchedResolverError.ts +8 -0
  159. package/src/errors/UnresolvableReferenceError.cjs +11 -0
  160. package/src/errors/UnresolvableReferenceError.mjs +6 -0
  161. package/src/errors/UnresolvableReferenceError.ts +8 -0
  162. package/src/index.cjs +146 -0
  163. package/src/index.mjs +103 -0
  164. package/src/index.ts +135 -0
  165. package/src/options/index.cjs +194 -0
  166. package/src/options/index.mjs +191 -0
  167. package/src/options/index.ts +239 -0
  168. package/src/options/util.cjs +24 -0
  169. package/src/options/util.mjs +19 -0
  170. package/src/options/util.ts +22 -0
  171. package/src/parse/index.cjs +69 -0
  172. package/src/parse/index.mjs +63 -0
  173. package/src/parse/index.ts +67 -0
  174. package/src/parse/parsers/Parser.cjs +62 -0
  175. package/src/parse/parsers/Parser.mjs +58 -0
  176. package/src/parse/parsers/Parser.ts +80 -0
  177. package/src/parse/parsers/apidom-json/index.cjs +70 -0
  178. package/src/parse/parsers/apidom-json/index.mjs +64 -0
  179. package/src/parse/parsers/apidom-json/index.ts +78 -0
  180. package/src/parse/parsers/arazzo-json-1/index.cjs +62 -0
  181. package/src/parse/parsers/arazzo-json-1/index.mjs +56 -0
  182. package/src/parse/parsers/arazzo-json-1/index.ts +76 -0
  183. package/src/parse/parsers/arazzo-json-1/source-descriptions.cjs +221 -0
  184. package/src/parse/parsers/arazzo-json-1/source-descriptions.mjs +214 -0
  185. package/src/parse/parsers/arazzo-json-1/source-descriptions.ts +280 -0
  186. package/src/parse/parsers/arazzo-yaml-1/index.cjs +62 -0
  187. package/src/parse/parsers/arazzo-yaml-1/index.mjs +56 -0
  188. package/src/parse/parsers/arazzo-yaml-1/index.ts +77 -0
  189. package/src/parse/parsers/arazzo-yaml-1/source-descriptions.cjs +12 -0
  190. package/src/parse/parsers/arazzo-yaml-1/source-descriptions.mjs +7 -0
  191. package/src/parse/parsers/arazzo-yaml-1/source-descriptions.ts +16 -0
  192. package/src/parse/parsers/asyncapi-json-2/index.cjs +54 -0
  193. package/src/parse/parsers/asyncapi-json-2/index.mjs +48 -0
  194. package/src/parse/parsers/asyncapi-json-2/index.ts +58 -0
  195. package/src/parse/parsers/asyncapi-yaml-2/index.cjs +54 -0
  196. package/src/parse/parsers/asyncapi-yaml-2/index.mjs +48 -0
  197. package/src/parse/parsers/asyncapi-yaml-2/index.ts +58 -0
  198. package/src/parse/parsers/binary/index-browser.cjs +56 -0
  199. package/src/parse/parsers/binary/index-browser.mjs +50 -0
  200. package/src/parse/parsers/binary/index-browser.ts +60 -0
  201. package/src/parse/parsers/binary/index-node.cjs +51 -0
  202. package/src/parse/parsers/binary/index-node.mjs +45 -0
  203. package/src/parse/parsers/binary/index-node.ts +57 -0
  204. package/src/parse/parsers/json/index.cjs +53 -0
  205. package/src/parse/parsers/json/index.mjs +47 -0
  206. package/src/parse/parsers/json/index.ts +52 -0
  207. package/src/parse/parsers/openapi-json-2/index.cjs +54 -0
  208. package/src/parse/parsers/openapi-json-2/index.mjs +48 -0
  209. package/src/parse/parsers/openapi-json-2/index.ts +58 -0
  210. package/src/parse/parsers/openapi-json-3-0/index.cjs +54 -0
  211. package/src/parse/parsers/openapi-json-3-0/index.mjs +48 -0
  212. package/src/parse/parsers/openapi-json-3-0/index.ts +59 -0
  213. package/src/parse/parsers/openapi-json-3-1/index.cjs +54 -0
  214. package/src/parse/parsers/openapi-json-3-1/index.mjs +48 -0
  215. package/src/parse/parsers/openapi-json-3-1/index.ts +59 -0
  216. package/src/parse/parsers/openapi-yaml-2/index.cjs +54 -0
  217. package/src/parse/parsers/openapi-yaml-2/index.mjs +48 -0
  218. package/src/parse/parsers/openapi-yaml-2/index.ts +58 -0
  219. package/src/parse/parsers/openapi-yaml-3-0/index.cjs +54 -0
  220. package/src/parse/parsers/openapi-yaml-3-0/index.mjs +48 -0
  221. package/src/parse/parsers/openapi-yaml-3-0/index.ts +59 -0
  222. package/src/parse/parsers/openapi-yaml-3-1/index.cjs +54 -0
  223. package/src/parse/parsers/openapi-yaml-3-1/index.mjs +48 -0
  224. package/src/parse/parsers/openapi-yaml-3-1/index.ts +59 -0
  225. package/src/parse/parsers/yaml-1-2/index.cjs +56 -0
  226. package/src/parse/parsers/yaml-1-2/index.mjs +50 -0
  227. package/src/parse/parsers/yaml-1-2/index.ts +60 -0
  228. package/src/resolve/index.cjs +67 -0
  229. package/src/resolve/index.mjs +60 -0
  230. package/src/resolve/index.ts +75 -0
  231. package/src/resolve/resolvers/HTTPResolver.cjs +45 -0
  232. package/src/resolve/resolvers/HTTPResolver.mjs +37 -0
  233. package/src/resolve/resolvers/HTTPResolver.ts +58 -0
  234. package/src/resolve/resolvers/Resolver.cjs +20 -0
  235. package/src/resolve/resolvers/Resolver.mjs +16 -0
  236. package/src/resolve/resolvers/Resolver.ts +25 -0
  237. package/src/resolve/resolvers/file/index-browser.cjs +24 -0
  238. package/src/resolve/resolvers/file/index-browser.mjs +19 -0
  239. package/src/resolve/resolvers/file/index-browser.ts +24 -0
  240. package/src/resolve/resolvers/file/index-node.cjs +49 -0
  241. package/src/resolve/resolvers/file/index-node.mjs +42 -0
  242. package/src/resolve/resolvers/file/index-node.ts +55 -0
  243. package/src/resolve/resolvers/http-axios/cache/MemoryCache.cjs +41 -0
  244. package/src/resolve/resolvers/http-axios/cache/MemoryCache.mjs +37 -0
  245. package/src/resolve/resolvers/http-axios/cache/MemoryCache.ts +46 -0
  246. package/src/resolve/resolvers/http-axios/index.cjs +113 -0
  247. package/src/resolve/resolvers/http-axios/index.mjs +105 -0
  248. package/src/resolve/resolvers/http-axios/index.ts +130 -0
  249. package/src/resolve/strategies/ResolveStrategy.cjs +20 -0
  250. package/src/resolve/strategies/ResolveStrategy.mjs +16 -0
  251. package/src/resolve/strategies/ResolveStrategy.ts +26 -0
  252. package/src/resolve/strategies/apidom/index.cjs +49 -0
  253. package/src/resolve/strategies/apidom/index.mjs +43 -0
  254. package/src/resolve/strategies/apidom/index.ts +78 -0
  255. package/src/resolve/strategies/asyncapi-2/index.cjs +49 -0
  256. package/src/resolve/strategies/asyncapi-2/index.mjs +43 -0
  257. package/src/resolve/strategies/asyncapi-2/index.ts +78 -0
  258. package/src/resolve/strategies/openapi-2/index.cjs +49 -0
  259. package/src/resolve/strategies/openapi-2/index.mjs +43 -0
  260. package/src/resolve/strategies/openapi-2/index.ts +78 -0
  261. package/src/resolve/strategies/openapi-3-0/index.cjs +49 -0
  262. package/src/resolve/strategies/openapi-3-0/index.mjs +43 -0
  263. package/src/resolve/strategies/openapi-3-0/index.ts +78 -0
  264. package/src/resolve/strategies/openapi-3-1/index.cjs +49 -0
  265. package/src/resolve/strategies/openapi-3-1/index.mjs +43 -0
  266. package/src/resolve/strategies/openapi-3-1/index.ts +78 -0
  267. package/src/resolve/util.cjs +37 -0
  268. package/src/resolve/util.mjs +30 -0
  269. package/src/resolve/util.ts +39 -0
  270. package/src/util/plugins.cjs +39 -0
  271. package/src/util/plugins.mjs +34 -0
  272. package/src/util/plugins.ts +37 -0
  273. package/src/util/url.cjs +288 -0
  274. package/src/util/url.mjs +274 -0
  275. package/src/util/url.ts +285 -0
@@ -0,0 +1,54 @@
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 _apidomParserAdapterOpenapiYaml = require("@speclynx/apidom-parser-adapter-openapi-yaml-3-0");
8
+ var _ParserError = _interopRequireDefault(require("../../../errors/ParserError.cjs"));
9
+ var _Parser = _interopRequireDefault(require("../Parser.cjs"));
10
+ /**
11
+ * @public
12
+ */
13
+
14
+ /**
15
+ * @public
16
+ */
17
+ class OpenAPIYAML3_0Parser extends _Parser.default {
18
+ refractorOpts;
19
+ constructor(options) {
20
+ const {
21
+ fileExtensions = [],
22
+ mediaTypes = _apidomParserAdapterOpenapiYaml.mediaTypes,
23
+ ...rest
24
+ } = options ?? {};
25
+ super({
26
+ ...rest,
27
+ name: 'openapi-yaml-3-0',
28
+ fileExtensions,
29
+ mediaTypes
30
+ });
31
+ }
32
+ async canParse(file) {
33
+ const hasSupportedFileExtension = this.fileExtensions.length === 0 ? true : this.fileExtensions.includes(file.extension);
34
+ const hasSupportedMediaType = this.mediaTypes.includes(file.mediaType);
35
+ if (!hasSupportedFileExtension) return false;
36
+ if (hasSupportedMediaType) return true;
37
+ if (!hasSupportedMediaType) {
38
+ return (0, _apidomParserAdapterOpenapiYaml.detect)(file.toString());
39
+ }
40
+ return false;
41
+ }
42
+ async parse(file) {
43
+ const source = file.toString();
44
+ try {
45
+ const parserOpts = (0, _ramda.pick)(['sourceMap', 'style', 'strict', 'refractorOpts'], this);
46
+ return await (0, _apidomParserAdapterOpenapiYaml.parse)(source, parserOpts);
47
+ } catch (error) {
48
+ throw new _ParserError.default(`Error parsing "${file.uri}"`, {
49
+ cause: error
50
+ });
51
+ }
52
+ }
53
+ }
54
+ var _default = exports.default = OpenAPIYAML3_0Parser;
@@ -0,0 +1,48 @@
1
+ import { pick } from 'ramda';
2
+ import { parse, mediaTypes as OpenAPIYAML3_0MediaTypes, detect } from '@speclynx/apidom-parser-adapter-openapi-yaml-3-0';
3
+ import ParserError from "../../../errors/ParserError.mjs";
4
+ import Parser from "../Parser.mjs";
5
+ /**
6
+ * @public
7
+ */
8
+ /**
9
+ * @public
10
+ */
11
+ class OpenAPIYAML3_0Parser extends Parser {
12
+ refractorOpts;
13
+ constructor(options) {
14
+ const {
15
+ fileExtensions = [],
16
+ mediaTypes = OpenAPIYAML3_0MediaTypes,
17
+ ...rest
18
+ } = options ?? {};
19
+ super({
20
+ ...rest,
21
+ name: 'openapi-yaml-3-0',
22
+ fileExtensions,
23
+ mediaTypes
24
+ });
25
+ }
26
+ async canParse(file) {
27
+ const hasSupportedFileExtension = this.fileExtensions.length === 0 ? true : this.fileExtensions.includes(file.extension);
28
+ const hasSupportedMediaType = this.mediaTypes.includes(file.mediaType);
29
+ if (!hasSupportedFileExtension) return false;
30
+ if (hasSupportedMediaType) return true;
31
+ if (!hasSupportedMediaType) {
32
+ return detect(file.toString());
33
+ }
34
+ return false;
35
+ }
36
+ async parse(file) {
37
+ const source = file.toString();
38
+ try {
39
+ const parserOpts = pick(['sourceMap', 'style', 'strict', 'refractorOpts'], this);
40
+ return await parse(source, parserOpts);
41
+ } catch (error) {
42
+ throw new ParserError(`Error parsing "${file.uri}"`, {
43
+ cause: error
44
+ });
45
+ }
46
+ }
47
+ }
48
+ export default OpenAPIYAML3_0Parser;
@@ -0,0 +1,59 @@
1
+ import { pick } from 'ramda';
2
+ import { ParseResultElement } from '@speclynx/apidom-datamodel';
3
+ import {
4
+ parse,
5
+ mediaTypes as OpenAPIYAML3_0MediaTypes,
6
+ detect,
7
+ } from '@speclynx/apidom-parser-adapter-openapi-yaml-3-0';
8
+
9
+ import ParserError from '../../../errors/ParserError.ts';
10
+ import Parser, { ParserOptions } from '../Parser.ts';
11
+ import File from '../../../File.ts';
12
+
13
+ export type { default as Parser, ParserOptions } from '../Parser.ts';
14
+ export type { default as File, FileOptions } from '../../../File.ts';
15
+
16
+ /**
17
+ * @public
18
+ */
19
+
20
+ export interface OpenAPIYAML3_0ParserOptions extends Omit<ParserOptions, 'name'> {}
21
+
22
+ /**
23
+ * @public
24
+ */
25
+ class OpenAPIYAML3_0Parser extends Parser {
26
+ public refractorOpts!: object;
27
+
28
+ constructor(options?: OpenAPIYAML3_0ParserOptions) {
29
+ const { fileExtensions = [], mediaTypes = OpenAPIYAML3_0MediaTypes, ...rest } = options ?? {};
30
+
31
+ super({ ...rest, name: 'openapi-yaml-3-0', fileExtensions, mediaTypes });
32
+ }
33
+
34
+ async canParse(file: File): Promise<boolean> {
35
+ const hasSupportedFileExtension =
36
+ this.fileExtensions.length === 0 ? true : this.fileExtensions.includes(file.extension);
37
+ const hasSupportedMediaType = this.mediaTypes.includes(file.mediaType);
38
+
39
+ if (!hasSupportedFileExtension) return false;
40
+ if (hasSupportedMediaType) return true;
41
+ if (!hasSupportedMediaType) {
42
+ return detect(file.toString());
43
+ }
44
+ return false;
45
+ }
46
+
47
+ async parse(file: File): Promise<ParseResultElement> {
48
+ const source = file.toString();
49
+
50
+ try {
51
+ const parserOpts = pick(['sourceMap', 'style', 'strict', 'refractorOpts'], this);
52
+ return await parse(source, parserOpts);
53
+ } catch (error: unknown) {
54
+ throw new ParserError(`Error parsing "${file.uri}"`, { cause: error });
55
+ }
56
+ }
57
+ }
58
+
59
+ export default OpenAPIYAML3_0Parser;
@@ -0,0 +1,54 @@
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 _apidomParserAdapterOpenapiYaml = require("@speclynx/apidom-parser-adapter-openapi-yaml-3-1");
8
+ var _ParserError = _interopRequireDefault(require("../../../errors/ParserError.cjs"));
9
+ var _Parser = _interopRequireDefault(require("../Parser.cjs"));
10
+ /**
11
+ * @public
12
+ */
13
+
14
+ /**
15
+ * @public
16
+ */
17
+ class OpenAPIYAML3_1Parser extends _Parser.default {
18
+ refractorOpts;
19
+ constructor(options) {
20
+ const {
21
+ fileExtensions = [],
22
+ mediaTypes = _apidomParserAdapterOpenapiYaml.mediaTypes,
23
+ ...rest
24
+ } = options ?? {};
25
+ super({
26
+ ...rest,
27
+ name: 'openapi-yaml-3-1',
28
+ fileExtensions,
29
+ mediaTypes
30
+ });
31
+ }
32
+ async canParse(file) {
33
+ const hasSupportedFileExtension = this.fileExtensions.length === 0 ? true : this.fileExtensions.includes(file.extension);
34
+ const hasSupportedMediaType = this.mediaTypes.includes(file.mediaType);
35
+ if (!hasSupportedFileExtension) return false;
36
+ if (hasSupportedMediaType) return true;
37
+ if (!hasSupportedMediaType) {
38
+ return (0, _apidomParserAdapterOpenapiYaml.detect)(file.toString());
39
+ }
40
+ return false;
41
+ }
42
+ async parse(file) {
43
+ const source = file.toString();
44
+ try {
45
+ const parserOpts = (0, _ramda.pick)(['sourceMap', 'style', 'strict', 'refractorOpts'], this);
46
+ return await (0, _apidomParserAdapterOpenapiYaml.parse)(source, parserOpts);
47
+ } catch (error) {
48
+ throw new _ParserError.default(`Error parsing "${file.uri}"`, {
49
+ cause: error
50
+ });
51
+ }
52
+ }
53
+ }
54
+ var _default = exports.default = OpenAPIYAML3_1Parser;
@@ -0,0 +1,48 @@
1
+ import { pick } from 'ramda';
2
+ import { parse, mediaTypes as OpenAPIYAML3_1MediaTypes, detect } from '@speclynx/apidom-parser-adapter-openapi-yaml-3-1';
3
+ import ParserError from "../../../errors/ParserError.mjs";
4
+ import Parser from "../Parser.mjs";
5
+ /**
6
+ * @public
7
+ */
8
+ /**
9
+ * @public
10
+ */
11
+ class OpenAPIYAML3_1Parser extends Parser {
12
+ refractorOpts;
13
+ constructor(options) {
14
+ const {
15
+ fileExtensions = [],
16
+ mediaTypes = OpenAPIYAML3_1MediaTypes,
17
+ ...rest
18
+ } = options ?? {};
19
+ super({
20
+ ...rest,
21
+ name: 'openapi-yaml-3-1',
22
+ fileExtensions,
23
+ mediaTypes
24
+ });
25
+ }
26
+ async canParse(file) {
27
+ const hasSupportedFileExtension = this.fileExtensions.length === 0 ? true : this.fileExtensions.includes(file.extension);
28
+ const hasSupportedMediaType = this.mediaTypes.includes(file.mediaType);
29
+ if (!hasSupportedFileExtension) return false;
30
+ if (hasSupportedMediaType) return true;
31
+ if (!hasSupportedMediaType) {
32
+ return detect(file.toString());
33
+ }
34
+ return false;
35
+ }
36
+ async parse(file) {
37
+ const source = file.toString();
38
+ try {
39
+ const parserOpts = pick(['sourceMap', 'style', 'strict', 'refractorOpts'], this);
40
+ return await parse(source, parserOpts);
41
+ } catch (error) {
42
+ throw new ParserError(`Error parsing "${file.uri}"`, {
43
+ cause: error
44
+ });
45
+ }
46
+ }
47
+ }
48
+ export default OpenAPIYAML3_1Parser;
@@ -0,0 +1,59 @@
1
+ import { pick } from 'ramda';
2
+ import { ParseResultElement } from '@speclynx/apidom-datamodel';
3
+ import {
4
+ parse,
5
+ mediaTypes as OpenAPIYAML3_1MediaTypes,
6
+ detect,
7
+ } from '@speclynx/apidom-parser-adapter-openapi-yaml-3-1';
8
+
9
+ import ParserError from '../../../errors/ParserError.ts';
10
+ import Parser, { ParserOptions } from '../Parser.ts';
11
+ import File from '../../../File.ts';
12
+
13
+ export type { default as Parser, ParserOptions } from '../Parser.ts';
14
+ export type { default as File, FileOptions } from '../../../File.ts';
15
+
16
+ /**
17
+ * @public
18
+ */
19
+
20
+ export interface OpenAPIYAML3_1ParserOptions extends Omit<ParserOptions, 'name'> {}
21
+
22
+ /**
23
+ * @public
24
+ */
25
+ class OpenAPIYAML3_1Parser extends Parser {
26
+ public refractorOpts!: object;
27
+
28
+ constructor(options?: OpenAPIYAML3_1ParserOptions) {
29
+ const { fileExtensions = [], mediaTypes = OpenAPIYAML3_1MediaTypes, ...rest } = options ?? {};
30
+
31
+ super({ ...rest, name: 'openapi-yaml-3-1', fileExtensions, mediaTypes });
32
+ }
33
+
34
+ async canParse(file: File): Promise<boolean> {
35
+ const hasSupportedFileExtension =
36
+ this.fileExtensions.length === 0 ? true : this.fileExtensions.includes(file.extension);
37
+ const hasSupportedMediaType = this.mediaTypes.includes(file.mediaType);
38
+
39
+ if (!hasSupportedFileExtension) return false;
40
+ if (hasSupportedMediaType) return true;
41
+ if (!hasSupportedMediaType) {
42
+ return detect(file.toString());
43
+ }
44
+ return false;
45
+ }
46
+
47
+ async parse(file: File): Promise<ParseResultElement> {
48
+ const source = file.toString();
49
+
50
+ try {
51
+ const parserOpts = pick(['sourceMap', 'style', 'strict', 'refractorOpts'], this);
52
+ return await parse(source, parserOpts);
53
+ } catch (error: unknown) {
54
+ throw new ParserError(`Error parsing "${file.uri}"`, { cause: error });
55
+ }
56
+ }
57
+ }
58
+
59
+ export default OpenAPIYAML3_1Parser;
@@ -0,0 +1,56 @@
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 _apidomParserAdapterYaml = require("@speclynx/apidom-parser-adapter-yaml-1-2");
7
+ var _ParserError = _interopRequireDefault(require("../../../errors/ParserError.cjs"));
8
+ var _Parser = _interopRequireDefault(require("../Parser.cjs"));
9
+ /**
10
+ * @public
11
+ */
12
+
13
+ /**
14
+ * @public
15
+ */
16
+ class YAML1Parser extends _Parser.default {
17
+ refractorOpts;
18
+ constructor(options) {
19
+ const {
20
+ fileExtensions = [],
21
+ mediaTypes = _apidomParserAdapterYaml.mediaTypes,
22
+ ...rest
23
+ } = options ?? {};
24
+ super({
25
+ ...rest,
26
+ name: 'yaml-1-2',
27
+ fileExtensions,
28
+ mediaTypes
29
+ });
30
+ }
31
+ async canParse(file) {
32
+ const hasSupportedFileExtension = this.fileExtensions.length === 0 ? true : this.fileExtensions.includes(file.extension);
33
+ const hasSupportedMediaType = this.mediaTypes.includes(file.mediaType);
34
+ if (!hasSupportedFileExtension) return false;
35
+ if (hasSupportedMediaType) return true;
36
+ if (!hasSupportedMediaType) {
37
+ return (0, _apidomParserAdapterYaml.detect)(file.toString());
38
+ }
39
+ return false;
40
+ }
41
+ async parse(file) {
42
+ const source = file.toString();
43
+ try {
44
+ return await (0, _apidomParserAdapterYaml.parse)(source, {
45
+ sourceMap: this.sourceMap,
46
+ style: this.style,
47
+ strict: this.strict
48
+ });
49
+ } catch (error) {
50
+ throw new _ParserError.default(`Error parsing "${file.uri}"`, {
51
+ cause: error
52
+ });
53
+ }
54
+ }
55
+ }
56
+ var _default = exports.default = YAML1Parser;
@@ -0,0 +1,50 @@
1
+ import { parse, mediaTypes as YAMLMediaTypes, detect } from '@speclynx/apidom-parser-adapter-yaml-1-2';
2
+ import ParserError from "../../../errors/ParserError.mjs";
3
+ import Parser from "../Parser.mjs";
4
+ /**
5
+ * @public
6
+ */
7
+ /**
8
+ * @public
9
+ */
10
+ class YAML1Parser extends Parser {
11
+ refractorOpts;
12
+ constructor(options) {
13
+ const {
14
+ fileExtensions = [],
15
+ mediaTypes = YAMLMediaTypes,
16
+ ...rest
17
+ } = options ?? {};
18
+ super({
19
+ ...rest,
20
+ name: 'yaml-1-2',
21
+ fileExtensions,
22
+ mediaTypes
23
+ });
24
+ }
25
+ async canParse(file) {
26
+ const hasSupportedFileExtension = this.fileExtensions.length === 0 ? true : this.fileExtensions.includes(file.extension);
27
+ const hasSupportedMediaType = this.mediaTypes.includes(file.mediaType);
28
+ if (!hasSupportedFileExtension) return false;
29
+ if (hasSupportedMediaType) return true;
30
+ if (!hasSupportedMediaType) {
31
+ return detect(file.toString());
32
+ }
33
+ return false;
34
+ }
35
+ async parse(file) {
36
+ const source = file.toString();
37
+ try {
38
+ return await parse(source, {
39
+ sourceMap: this.sourceMap,
40
+ style: this.style,
41
+ strict: this.strict
42
+ });
43
+ } catch (error) {
44
+ throw new ParserError(`Error parsing "${file.uri}"`, {
45
+ cause: error
46
+ });
47
+ }
48
+ }
49
+ }
50
+ export default YAML1Parser;
@@ -0,0 +1,60 @@
1
+ import { ParseResultElement } from '@speclynx/apidom-datamodel';
2
+ import {
3
+ parse,
4
+ mediaTypes as YAMLMediaTypes,
5
+ detect,
6
+ } from '@speclynx/apidom-parser-adapter-yaml-1-2';
7
+
8
+ import ParserError from '../../../errors/ParserError.ts';
9
+ import Parser, { ParserOptions } from '../Parser.ts';
10
+ import File from '../../../File.ts';
11
+
12
+ export type { default as Parser, ParserOptions } from '../Parser.ts';
13
+ export type { default as File, FileOptions } from '../../../File.ts';
14
+
15
+ /**
16
+ * @public
17
+ */
18
+ export interface YAMLParserOptions extends Omit<ParserOptions, 'name'> {}
19
+
20
+ /**
21
+ * @public
22
+ */
23
+ class YAML1Parser extends Parser {
24
+ public refractorOpts!: object;
25
+
26
+ constructor(options?: YAMLParserOptions) {
27
+ const { fileExtensions = [], mediaTypes = YAMLMediaTypes, ...rest } = options ?? {};
28
+
29
+ super({ ...rest, name: 'yaml-1-2', fileExtensions, mediaTypes });
30
+ }
31
+
32
+ async canParse(file: File): Promise<boolean> {
33
+ const hasSupportedFileExtension =
34
+ this.fileExtensions.length === 0 ? true : this.fileExtensions.includes(file.extension);
35
+ const hasSupportedMediaType = this.mediaTypes.includes(file.mediaType);
36
+
37
+ if (!hasSupportedFileExtension) return false;
38
+ if (hasSupportedMediaType) return true;
39
+ if (!hasSupportedMediaType) {
40
+ return detect(file.toString());
41
+ }
42
+ return false;
43
+ }
44
+
45
+ async parse(file: File): Promise<ParseResultElement> {
46
+ const source = file.toString();
47
+
48
+ try {
49
+ return await parse(source, {
50
+ sourceMap: this.sourceMap,
51
+ style: this.style,
52
+ strict: this.strict,
53
+ });
54
+ } catch (error: unknown) {
55
+ throw new ParserError(`Error parsing "${file.uri}"`, { cause: error });
56
+ }
57
+ }
58
+ }
59
+
60
+ export default YAML1Parser;
@@ -0,0 +1,67 @@
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.resolveApiDOM = exports.default = void 0;
7
+ var _ramda = require("ramda");
8
+ var _apidomDatamodel = require("@speclynx/apidom-datamodel");
9
+ var _util = require("../options/util.cjs");
10
+ var _index = _interopRequireDefault(require("../parse/index.cjs"));
11
+ var plugins = _interopRequireWildcard(require("../util/plugins.cjs"));
12
+ var _File = _interopRequireDefault(require("../File.cjs"));
13
+ var _ResolverError = _interopRequireDefault(require("../errors/ResolverError.cjs"));
14
+ var _UnmatchedResolveStrategyError = _interopRequireDefault(require("../errors/UnmatchedResolveStrategyError.cjs"));
15
+ var url = _interopRequireWildcard(require("../util/url.cjs"));
16
+ /**
17
+ * Resolves ApiDOM with all its external references.
18
+ */
19
+ const resolveApiDOM = async (element, options) => {
20
+ // @ts-ignore
21
+ let parseResult = element;
22
+
23
+ // wrap element into parse result
24
+ if (!(0, _apidomDatamodel.isParseResultElement)(element)) {
25
+ // shallow clone of the element
26
+ const elementClone = (0, _apidomDatamodel.cloneShallow)(element);
27
+ elementClone.classes.push('result');
28
+ parseResult = new _apidomDatamodel.ParseResultElement([elementClone]);
29
+ }
30
+ const sanitizedURI = url.sanitize(url.stripHash(options.resolve.baseURI));
31
+ const file = new _File.default({
32
+ uri: sanitizedURI,
33
+ parseResult,
34
+ mediaType: options.parse.mediaType
35
+ });
36
+ const resolveStrategies = await plugins.filter('canResolve', [file, options], options.resolve.strategies);
37
+
38
+ // we couldn't find any resolve strategy for this File
39
+ if ((0, _ramda.isEmpty)(resolveStrategies)) {
40
+ throw new _UnmatchedResolveStrategyError.default(`Could not find a resolve strategy that can resolve the file "${file.uri}"`);
41
+ }
42
+ try {
43
+ const {
44
+ result
45
+ } = await plugins.run('resolve', [file, options], resolveStrategies);
46
+ return result;
47
+ } catch (error) {
48
+ throw new _ResolverError.default(`Error while resolving file "${file.uri}"`, {
49
+ cause: error
50
+ });
51
+ }
52
+ };
53
+
54
+ /**
55
+ * Resolves a file with all its external references.
56
+ */
57
+ exports.resolveApiDOM = resolveApiDOM;
58
+ const resolve = async (uri, options) => {
59
+ const parseResult = await (0, _index.default)(uri, options);
60
+ const mergedOptions = (0, _util.merge)(options, {
61
+ resolve: {
62
+ baseURI: url.sanitize(uri)
63
+ }
64
+ });
65
+ return resolveApiDOM(parseResult, mergedOptions);
66
+ };
67
+ var _default = exports.default = resolve;
@@ -0,0 +1,60 @@
1
+ import { isEmpty } from 'ramda';
2
+ import { isParseResultElement, ParseResultElement, cloneShallow } from '@speclynx/apidom-datamodel';
3
+ import { merge as mergeOptions } from "../options/util.mjs";
4
+ import parse from "../parse/index.mjs";
5
+ import * as plugins from "../util/plugins.mjs";
6
+ import File from "../File.mjs";
7
+ import ResolveError from "../errors/ResolverError.mjs";
8
+ import UnmatchedResolveStrategyError from "../errors/UnmatchedResolveStrategyError.mjs";
9
+ import * as url from "../util/url.mjs";
10
+ /**
11
+ * Resolves ApiDOM with all its external references.
12
+ */
13
+ export const resolveApiDOM = async (element, options) => {
14
+ // @ts-ignore
15
+ let parseResult = element;
16
+
17
+ // wrap element into parse result
18
+ if (!isParseResultElement(element)) {
19
+ // shallow clone of the element
20
+ const elementClone = cloneShallow(element);
21
+ elementClone.classes.push('result');
22
+ parseResult = new ParseResultElement([elementClone]);
23
+ }
24
+ const sanitizedURI = url.sanitize(url.stripHash(options.resolve.baseURI));
25
+ const file = new File({
26
+ uri: sanitizedURI,
27
+ parseResult,
28
+ mediaType: options.parse.mediaType
29
+ });
30
+ const resolveStrategies = await plugins.filter('canResolve', [file, options], options.resolve.strategies);
31
+
32
+ // we couldn't find any resolve strategy for this File
33
+ if (isEmpty(resolveStrategies)) {
34
+ throw new UnmatchedResolveStrategyError(`Could not find a resolve strategy that can resolve the file "${file.uri}"`);
35
+ }
36
+ try {
37
+ const {
38
+ result
39
+ } = await plugins.run('resolve', [file, options], resolveStrategies);
40
+ return result;
41
+ } catch (error) {
42
+ throw new ResolveError(`Error while resolving file "${file.uri}"`, {
43
+ cause: error
44
+ });
45
+ }
46
+ };
47
+
48
+ /**
49
+ * Resolves a file with all its external references.
50
+ */
51
+ const resolve = async (uri, options) => {
52
+ const parseResult = await parse(uri, options);
53
+ const mergedOptions = mergeOptions(options, {
54
+ resolve: {
55
+ baseURI: url.sanitize(uri)
56
+ }
57
+ });
58
+ return resolveApiDOM(parseResult, mergedOptions);
59
+ };
60
+ export default resolve;