@speclynx/apidom-ns-openapi-3-0 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 (518) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/package.json +8 -9
  3. package/src/elements/Callback.cjs +15 -0
  4. package/src/elements/Callback.mjs +12 -0
  5. package/src/elements/Callback.ts +13 -0
  6. package/src/elements/Components.cjs +69 -0
  7. package/src/elements/Components.mjs +66 -0
  8. package/src/elements/Components.ts +85 -0
  9. package/src/elements/Contact.cjs +33 -0
  10. package/src/elements/Contact.mjs +30 -0
  11. package/src/elements/Contact.ts +42 -0
  12. package/src/elements/Discriminator.cjs +27 -0
  13. package/src/elements/Discriminator.mjs +24 -0
  14. package/src/elements/Discriminator.ts +34 -0
  15. package/src/elements/Encoding.cjs +45 -0
  16. package/src/elements/Encoding.mjs +42 -0
  17. package/src/elements/Encoding.ts +59 -0
  18. package/src/elements/Example.cjs +39 -0
  19. package/src/elements/Example.mjs +36 -0
  20. package/src/elements/Example.ts +51 -0
  21. package/src/elements/ExternalDocumentation.cjs +27 -0
  22. package/src/elements/ExternalDocumentation.mjs +24 -0
  23. package/src/elements/ExternalDocumentation.ts +34 -0
  24. package/src/elements/Header.cjs +90 -0
  25. package/src/elements/Header.mjs +86 -0
  26. package/src/elements/Header.ts +119 -0
  27. package/src/elements/Info.cjs +52 -0
  28. package/src/elements/Info.mjs +48 -0
  29. package/src/elements/Info.ts +70 -0
  30. package/src/elements/License.cjs +27 -0
  31. package/src/elements/License.mjs +24 -0
  32. package/src/elements/License.ts +34 -0
  33. package/src/elements/Link.cjs +63 -0
  34. package/src/elements/Link.mjs +59 -0
  35. package/src/elements/Link.ts +85 -0
  36. package/src/elements/MediaType.cjs +39 -0
  37. package/src/elements/MediaType.mjs +35 -0
  38. package/src/elements/MediaType.ts +48 -0
  39. package/src/elements/OAuthFlow.cjs +39 -0
  40. package/src/elements/OAuthFlow.mjs +36 -0
  41. package/src/elements/OAuthFlow.ts +50 -0
  42. package/src/elements/OAuthFlows.cjs +39 -0
  43. package/src/elements/OAuthFlows.mjs +35 -0
  44. package/src/elements/OAuthFlows.ts +47 -0
  45. package/src/elements/OpenApi3-0.cjs +65 -0
  46. package/src/elements/OpenApi3-0.mjs +61 -0
  47. package/src/elements/OpenApi3-0.ts +90 -0
  48. package/src/elements/Openapi.cjs +17 -0
  49. package/src/elements/Openapi.mjs +14 -0
  50. package/src/elements/Openapi.ts +15 -0
  51. package/src/elements/Operation.cjs +90 -0
  52. package/src/elements/Operation.mjs +86 -0
  53. package/src/elements/Operation.ts +124 -0
  54. package/src/elements/Parameter.cjs +102 -0
  55. package/src/elements/Parameter.mjs +98 -0
  56. package/src/elements/Parameter.ts +135 -0
  57. package/src/elements/PathItem.cjs +93 -0
  58. package/src/elements/PathItem.mjs +89 -0
  59. package/src/elements/PathItem.ts +125 -0
  60. package/src/elements/Paths.cjs +15 -0
  61. package/src/elements/Paths.mjs +12 -0
  62. package/src/elements/Paths.ts +13 -0
  63. package/src/elements/Reference.cjs +22 -0
  64. package/src/elements/Reference.mjs +19 -0
  65. package/src/elements/Reference.ts +27 -0
  66. package/src/elements/RequestBody.cjs +36 -0
  67. package/src/elements/RequestBody.mjs +33 -0
  68. package/src/elements/RequestBody.ts +46 -0
  69. package/src/elements/Response.cjs +39 -0
  70. package/src/elements/Response.mjs +36 -0
  71. package/src/elements/Response.ts +50 -0
  72. package/src/elements/Responses.cjs +21 -0
  73. package/src/elements/Responses.mjs +17 -0
  74. package/src/elements/Responses.ts +24 -0
  75. package/src/elements/Schema.cjs +170 -0
  76. package/src/elements/Schema.mjs +166 -0
  77. package/src/elements/Schema.ts +230 -0
  78. package/src/elements/SecurityRequirement.cjs +15 -0
  79. package/src/elements/SecurityRequirement.mjs +12 -0
  80. package/src/elements/SecurityRequirement.ts +13 -0
  81. package/src/elements/SecurityScheme.cjs +63 -0
  82. package/src/elements/SecurityScheme.mjs +59 -0
  83. package/src/elements/SecurityScheme.ts +84 -0
  84. package/src/elements/Server.cjs +33 -0
  85. package/src/elements/Server.mjs +30 -0
  86. package/src/elements/Server.ts +42 -0
  87. package/src/elements/ServerVariable.cjs +33 -0
  88. package/src/elements/ServerVariable.mjs +30 -0
  89. package/src/elements/ServerVariable.ts +43 -0
  90. package/src/elements/Tag.cjs +33 -0
  91. package/src/elements/Tag.mjs +29 -0
  92. package/src/elements/Tag.ts +44 -0
  93. package/src/elements/Xml.cjs +45 -0
  94. package/src/elements/Xml.mjs +42 -0
  95. package/src/elements/Xml.ts +59 -0
  96. package/src/elements/nces/ComponentsCallbacks.cjs +16 -0
  97. package/src/elements/nces/ComponentsCallbacks.mjs +13 -0
  98. package/src/elements/nces/ComponentsCallbacks.ts +15 -0
  99. package/src/elements/nces/ComponentsExamples.cjs +17 -0
  100. package/src/elements/nces/ComponentsExamples.mjs +14 -0
  101. package/src/elements/nces/ComponentsExamples.ts +16 -0
  102. package/src/elements/nces/ComponentsHeaders.cjs +16 -0
  103. package/src/elements/nces/ComponentsHeaders.mjs +13 -0
  104. package/src/elements/nces/ComponentsHeaders.ts +15 -0
  105. package/src/elements/nces/ComponentsLinks.cjs +16 -0
  106. package/src/elements/nces/ComponentsLinks.mjs +13 -0
  107. package/src/elements/nces/ComponentsLinks.ts +15 -0
  108. package/src/elements/nces/ComponentsParameters.cjs +17 -0
  109. package/src/elements/nces/ComponentsParameters.mjs +14 -0
  110. package/src/elements/nces/ComponentsParameters.ts +16 -0
  111. package/src/elements/nces/ComponentsRequestBodies.cjs +16 -0
  112. package/src/elements/nces/ComponentsRequestBodies.mjs +13 -0
  113. package/src/elements/nces/ComponentsRequestBodies.ts +15 -0
  114. package/src/elements/nces/ComponentsResponses.cjs +16 -0
  115. package/src/elements/nces/ComponentsResponses.mjs +13 -0
  116. package/src/elements/nces/ComponentsResponses.ts +15 -0
  117. package/src/elements/nces/ComponentsSchemas.cjs +16 -0
  118. package/src/elements/nces/ComponentsSchemas.mjs +13 -0
  119. package/src/elements/nces/ComponentsSchemas.ts +15 -0
  120. package/src/elements/nces/ComponentsSecuritySchemes.cjs +16 -0
  121. package/src/elements/nces/ComponentsSecuritySchemes.mjs +13 -0
  122. package/src/elements/nces/ComponentsSecuritySchemes.ts +15 -0
  123. package/src/elements/nces/DiscriminatorMapping.cjs +16 -0
  124. package/src/elements/nces/DiscriminatorMapping.mjs +13 -0
  125. package/src/elements/nces/DiscriminatorMapping.ts +15 -0
  126. package/src/elements/nces/EncodingHeaders.cjs +16 -0
  127. package/src/elements/nces/EncodingHeaders.mjs +13 -0
  128. package/src/elements/nces/EncodingHeaders.ts +15 -0
  129. package/src/elements/nces/HeaderContent.cjs +17 -0
  130. package/src/elements/nces/HeaderContent.mjs +14 -0
  131. package/src/elements/nces/HeaderContent.ts +16 -0
  132. package/src/elements/nces/HeaderExamples.cjs +17 -0
  133. package/src/elements/nces/HeaderExamples.mjs +14 -0
  134. package/src/elements/nces/HeaderExamples.ts +16 -0
  135. package/src/elements/nces/LinkParameters.cjs +16 -0
  136. package/src/elements/nces/LinkParameters.mjs +13 -0
  137. package/src/elements/nces/LinkParameters.ts +15 -0
  138. package/src/elements/nces/MediaTypeEncoding.cjs +16 -0
  139. package/src/elements/nces/MediaTypeEncoding.mjs +13 -0
  140. package/src/elements/nces/MediaTypeEncoding.ts +15 -0
  141. package/src/elements/nces/MediaTypeExamples.cjs +17 -0
  142. package/src/elements/nces/MediaTypeExamples.mjs +14 -0
  143. package/src/elements/nces/MediaTypeExamples.ts +16 -0
  144. package/src/elements/nces/OAuthFlowScopes.cjs +16 -0
  145. package/src/elements/nces/OAuthFlowScopes.mjs +13 -0
  146. package/src/elements/nces/OAuthFlowScopes.ts +15 -0
  147. package/src/elements/nces/OperationCallbacks.cjs +16 -0
  148. package/src/elements/nces/OperationCallbacks.mjs +13 -0
  149. package/src/elements/nces/OperationCallbacks.ts +15 -0
  150. package/src/elements/nces/OperationParameters.cjs +17 -0
  151. package/src/elements/nces/OperationParameters.mjs +14 -0
  152. package/src/elements/nces/OperationParameters.ts +16 -0
  153. package/src/elements/nces/OperationSecurity.cjs +17 -0
  154. package/src/elements/nces/OperationSecurity.mjs +14 -0
  155. package/src/elements/nces/OperationSecurity.ts +16 -0
  156. package/src/elements/nces/OperationServers.cjs +17 -0
  157. package/src/elements/nces/OperationServers.mjs +14 -0
  158. package/src/elements/nces/OperationServers.ts +16 -0
  159. package/src/elements/nces/OperationTags.cjs +16 -0
  160. package/src/elements/nces/OperationTags.mjs +13 -0
  161. package/src/elements/nces/OperationTags.ts +15 -0
  162. package/src/elements/nces/ParameterContent.cjs +17 -0
  163. package/src/elements/nces/ParameterContent.mjs +14 -0
  164. package/src/elements/nces/ParameterContent.ts +16 -0
  165. package/src/elements/nces/ParameterExamples.cjs +17 -0
  166. package/src/elements/nces/ParameterExamples.mjs +14 -0
  167. package/src/elements/nces/ParameterExamples.ts +16 -0
  168. package/src/elements/nces/PathItemParameters.cjs +17 -0
  169. package/src/elements/nces/PathItemParameters.mjs +14 -0
  170. package/src/elements/nces/PathItemParameters.ts +16 -0
  171. package/src/elements/nces/PathItemServers.cjs +17 -0
  172. package/src/elements/nces/PathItemServers.mjs +14 -0
  173. package/src/elements/nces/PathItemServers.ts +16 -0
  174. package/src/elements/nces/RequestBodyContent.cjs +17 -0
  175. package/src/elements/nces/RequestBodyContent.mjs +14 -0
  176. package/src/elements/nces/RequestBodyContent.ts +16 -0
  177. package/src/elements/nces/ResponseContent.cjs +17 -0
  178. package/src/elements/nces/ResponseContent.mjs +14 -0
  179. package/src/elements/nces/ResponseContent.ts +16 -0
  180. package/src/elements/nces/ResponseHeaders.cjs +16 -0
  181. package/src/elements/nces/ResponseHeaders.mjs +13 -0
  182. package/src/elements/nces/ResponseHeaders.ts +15 -0
  183. package/src/elements/nces/ResponseLinks.cjs +16 -0
  184. package/src/elements/nces/ResponseLinks.mjs +13 -0
  185. package/src/elements/nces/ResponseLinks.ts +15 -0
  186. package/src/elements/nces/Security.cjs +16 -0
  187. package/src/elements/nces/Security.mjs +13 -0
  188. package/src/elements/nces/Security.ts +15 -0
  189. package/src/elements/nces/ServerVariables.cjs +16 -0
  190. package/src/elements/nces/ServerVariables.mjs +13 -0
  191. package/src/elements/nces/ServerVariables.ts +15 -0
  192. package/src/elements/nces/Servers.cjs +16 -0
  193. package/src/elements/nces/Servers.mjs +13 -0
  194. package/src/elements/nces/Servers.ts +15 -0
  195. package/src/elements/nces/Tags.cjs +16 -0
  196. package/src/elements/nces/Tags.mjs +13 -0
  197. package/src/elements/nces/Tags.ts +15 -0
  198. package/src/index.cjs +205 -0
  199. package/src/index.mjs +54 -0
  200. package/src/index.ts +550 -0
  201. package/src/media-types.cjs +34 -0
  202. package/src/media-types.mjs +30 -0
  203. package/src/media-types.ts +52 -0
  204. package/src/namespace.cjs +79 -0
  205. package/src/namespace.mjs +74 -0
  206. package/src/namespace.ts +78 -0
  207. package/src/predicates.cjs +188 -0
  208. package/src/predicates.mjs +155 -0
  209. package/src/predicates.ts +185 -0
  210. package/src/refractor/index.cjs +358 -0
  211. package/src/refractor/index.mjs +321 -0
  212. package/src/refractor/index.ts +370 -0
  213. package/src/refractor/inspect.cjs +205 -0
  214. package/src/refractor/inspect.mjs +170 -0
  215. package/src/refractor/inspect.ts +239 -0
  216. package/src/refractor/plugins/replace-empty-element.cjs +633 -0
  217. package/src/refractor/plugins/replace-empty-element.mjs +625 -0
  218. package/src/refractor/plugins/replace-empty-element.ts +656 -0
  219. package/src/refractor/predicates.cjs +36 -0
  220. package/src/refractor/predicates.mjs +31 -0
  221. package/src/refractor/predicates.ts +39 -0
  222. package/src/refractor/specification.cjs +700 -0
  223. package/src/refractor/specification.mjs +695 -0
  224. package/src/refractor/specification.ts +557 -0
  225. package/src/refractor/toolbox.cjs +28 -0
  226. package/src/refractor/toolbox.mjs +21 -0
  227. package/src/refractor/toolbox.ts +24 -0
  228. package/src/refractor/visitors/FallbackVisitor.cjs +24 -0
  229. package/src/refractor/visitors/FallbackVisitor.mjs +18 -0
  230. package/src/refractor/visitors/FallbackVisitor.ts +24 -0
  231. package/src/refractor/visitors/SpecificationExtensionVisitor.cjs +18 -0
  232. package/src/refractor/visitors/SpecificationExtensionVisitor.mjs +13 -0
  233. package/src/refractor/visitors/SpecificationExtensionVisitor.ts +22 -0
  234. package/src/refractor/visitors/SpecificationVisitor.cjs +88 -0
  235. package/src/refractor/visitors/SpecificationVisitor.mjs +82 -0
  236. package/src/refractor/visitors/SpecificationVisitor.ts +112 -0
  237. package/src/refractor/visitors/Visitor.cjs +36 -0
  238. package/src/refractor/visitors/Visitor.mjs +33 -0
  239. package/src/refractor/visitors/Visitor.ts +47 -0
  240. package/src/refractor/visitors/generics/AlternatingVisitor.cjs +42 -0
  241. package/src/refractor/visitors/generics/AlternatingVisitor.mjs +35 -0
  242. package/src/refractor/visitors/generics/AlternatingVisitor.ts +45 -0
  243. package/src/refractor/visitors/generics/FixedFieldsVisitor.cjs +75 -0
  244. package/src/refractor/visitors/generics/FixedFieldsVisitor.mjs +68 -0
  245. package/src/refractor/visitors/generics/FixedFieldsVisitor.ts +110 -0
  246. package/src/refractor/visitors/generics/MapVisitor.cjs +21 -0
  247. package/src/refractor/visitors/generics/MapVisitor.mjs +15 -0
  248. package/src/refractor/visitors/generics/MapVisitor.ts +25 -0
  249. package/src/refractor/visitors/generics/MixedFieldsVisitor.cjs +67 -0
  250. package/src/refractor/visitors/generics/MixedFieldsVisitor.mjs +61 -0
  251. package/src/refractor/visitors/generics/MixedFieldsVisitor.ts +77 -0
  252. package/src/refractor/visitors/generics/PatternedFieldsVisitor.cjs +72 -0
  253. package/src/refractor/visitors/generics/PatternedFieldsVisitor.mjs +66 -0
  254. package/src/refractor/visitors/generics/PatternedFieldsVisitor.ts +99 -0
  255. package/src/refractor/visitors/open-api-3-0/ContentVisitor.cjs +23 -0
  256. package/src/refractor/visitors/open-api-3-0/ContentVisitor.mjs +18 -0
  257. package/src/refractor/visitors/open-api-3-0/ContentVisitor.ts +28 -0
  258. package/src/refractor/visitors/open-api-3-0/ExamplesVisitor.cjs +33 -0
  259. package/src/refractor/visitors/open-api-3-0/ExamplesVisitor.mjs +28 -0
  260. package/src/refractor/visitors/open-api-3-0/ExamplesVisitor.ts +48 -0
  261. package/src/refractor/visitors/open-api-3-0/OpenapiVisitor.cjs +25 -0
  262. package/src/refractor/visitors/open-api-3-0/OpenapiVisitor.mjs +19 -0
  263. package/src/refractor/visitors/open-api-3-0/OpenapiVisitor.ts +30 -0
  264. package/src/refractor/visitors/open-api-3-0/ParametersVisitor.cjs +36 -0
  265. package/src/refractor/visitors/open-api-3-0/ParametersVisitor.mjs +31 -0
  266. package/src/refractor/visitors/open-api-3-0/ParametersVisitor.ts +47 -0
  267. package/src/refractor/visitors/open-api-3-0/SecurityVisitor.cjs +35 -0
  268. package/src/refractor/visitors/open-api-3-0/SecurityVisitor.mjs +29 -0
  269. package/src/refractor/visitors/open-api-3-0/SecurityVisitor.ts +44 -0
  270. package/src/refractor/visitors/open-api-3-0/ServersVisitor.cjs +32 -0
  271. package/src/refractor/visitors/open-api-3-0/ServersVisitor.mjs +26 -0
  272. package/src/refractor/visitors/open-api-3-0/ServersVisitor.ts +40 -0
  273. package/src/refractor/visitors/open-api-3-0/TagsVisitor.cjs +32 -0
  274. package/src/refractor/visitors/open-api-3-0/TagsVisitor.mjs +26 -0
  275. package/src/refractor/visitors/open-api-3-0/TagsVisitor.ts +40 -0
  276. package/src/refractor/visitors/open-api-3-0/bases.cjs +72 -0
  277. package/src/refractor/visitors/open-api-3-0/bases.mjs +67 -0
  278. package/src/refractor/visitors/open-api-3-0/bases.ts +82 -0
  279. package/src/refractor/visitors/open-api-3-0/callback/index.cjs +38 -0
  280. package/src/refractor/visitors/open-api-3-0/callback/index.mjs +32 -0
  281. package/src/refractor/visitors/open-api-3-0/callback/index.ts +49 -0
  282. package/src/refractor/visitors/open-api-3-0/components/CallbacksVisitor.cjs +33 -0
  283. package/src/refractor/visitors/open-api-3-0/components/CallbacksVisitor.mjs +27 -0
  284. package/src/refractor/visitors/open-api-3-0/components/CallbacksVisitor.ts +45 -0
  285. package/src/refractor/visitors/open-api-3-0/components/ExamplesVisitor.cjs +34 -0
  286. package/src/refractor/visitors/open-api-3-0/components/ExamplesVisitor.mjs +28 -0
  287. package/src/refractor/visitors/open-api-3-0/components/ExamplesVisitor.ts +46 -0
  288. package/src/refractor/visitors/open-api-3-0/components/HeadersVisitor.cjs +41 -0
  289. package/src/refractor/visitors/open-api-3-0/components/HeadersVisitor.mjs +35 -0
  290. package/src/refractor/visitors/open-api-3-0/components/HeadersVisitor.ts +53 -0
  291. package/src/refractor/visitors/open-api-3-0/components/LinksVisitor.cjs +33 -0
  292. package/src/refractor/visitors/open-api-3-0/components/LinksVisitor.mjs +27 -0
  293. package/src/refractor/visitors/open-api-3-0/components/LinksVisitor.ts +45 -0
  294. package/src/refractor/visitors/open-api-3-0/components/ParametersVisitor.cjs +34 -0
  295. package/src/refractor/visitors/open-api-3-0/components/ParametersVisitor.mjs +28 -0
  296. package/src/refractor/visitors/open-api-3-0/components/ParametersVisitor.ts +46 -0
  297. package/src/refractor/visitors/open-api-3-0/components/RequestBodiesVisitor.cjs +33 -0
  298. package/src/refractor/visitors/open-api-3-0/components/RequestBodiesVisitor.mjs +27 -0
  299. package/src/refractor/visitors/open-api-3-0/components/RequestBodiesVisitor.ts +45 -0
  300. package/src/refractor/visitors/open-api-3-0/components/ResponsesVisitor.cjs +41 -0
  301. package/src/refractor/visitors/open-api-3-0/components/ResponsesVisitor.mjs +35 -0
  302. package/src/refractor/visitors/open-api-3-0/components/ResponsesVisitor.ts +53 -0
  303. package/src/refractor/visitors/open-api-3-0/components/SchemasVisitor.cjs +34 -0
  304. package/src/refractor/visitors/open-api-3-0/components/SchemasVisitor.mjs +28 -0
  305. package/src/refractor/visitors/open-api-3-0/components/SchemasVisitor.ts +46 -0
  306. package/src/refractor/visitors/open-api-3-0/components/SecuritySchemesVisitor.cjs +33 -0
  307. package/src/refractor/visitors/open-api-3-0/components/SecuritySchemesVisitor.mjs +27 -0
  308. package/src/refractor/visitors/open-api-3-0/components/SecuritySchemesVisitor.ts +45 -0
  309. package/src/refractor/visitors/open-api-3-0/components/index.cjs +25 -0
  310. package/src/refractor/visitors/open-api-3-0/components/index.mjs +19 -0
  311. package/src/refractor/visitors/open-api-3-0/components/index.ts +31 -0
  312. package/src/refractor/visitors/open-api-3-0/contact/index.cjs +20 -0
  313. package/src/refractor/visitors/open-api-3-0/contact/index.mjs +15 -0
  314. package/src/refractor/visitors/open-api-3-0/contact/index.ts +27 -0
  315. package/src/refractor/visitors/open-api-3-0/distriminator/MappingVisitor.cjs +19 -0
  316. package/src/refractor/visitors/open-api-3-0/distriminator/MappingVisitor.mjs +14 -0
  317. package/src/refractor/visitors/open-api-3-0/distriminator/MappingVisitor.ts +24 -0
  318. package/src/refractor/visitors/open-api-3-0/distriminator/index.cjs +20 -0
  319. package/src/refractor/visitors/open-api-3-0/distriminator/index.mjs +15 -0
  320. package/src/refractor/visitors/open-api-3-0/distriminator/index.ts +27 -0
  321. package/src/refractor/visitors/open-api-3-0/encoding/HeadersVisitor.cjs +43 -0
  322. package/src/refractor/visitors/open-api-3-0/encoding/HeadersVisitor.mjs +37 -0
  323. package/src/refractor/visitors/open-api-3-0/encoding/HeadersVisitor.ts +57 -0
  324. package/src/refractor/visitors/open-api-3-0/encoding/index.cjs +40 -0
  325. package/src/refractor/visitors/open-api-3-0/encoding/index.mjs +34 -0
  326. package/src/refractor/visitors/open-api-3-0/encoding/index.ts +49 -0
  327. package/src/refractor/visitors/open-api-3-0/example/ExternalValueVisitor.cjs +16 -0
  328. package/src/refractor/visitors/open-api-3-0/example/ExternalValueVisitor.mjs +11 -0
  329. package/src/refractor/visitors/open-api-3-0/example/ExternalValueVisitor.ts +20 -0
  330. package/src/refractor/visitors/open-api-3-0/example/index.cjs +29 -0
  331. package/src/refractor/visitors/open-api-3-0/example/index.mjs +24 -0
  332. package/src/refractor/visitors/open-api-3-0/example/index.ts +38 -0
  333. package/src/refractor/visitors/open-api-3-0/external-documentation/index.cjs +20 -0
  334. package/src/refractor/visitors/open-api-3-0/external-documentation/index.mjs +15 -0
  335. package/src/refractor/visitors/open-api-3-0/external-documentation/index.ts +27 -0
  336. package/src/refractor/visitors/open-api-3-0/header/ContentVisitor.cjs +17 -0
  337. package/src/refractor/visitors/open-api-3-0/header/ContentVisitor.mjs +12 -0
  338. package/src/refractor/visitors/open-api-3-0/header/ContentVisitor.ts +18 -0
  339. package/src/refractor/visitors/open-api-3-0/header/ExamplesVisitor.cjs +17 -0
  340. package/src/refractor/visitors/open-api-3-0/header/ExamplesVisitor.mjs +12 -0
  341. package/src/refractor/visitors/open-api-3-0/header/ExamplesVisitor.ts +18 -0
  342. package/src/refractor/visitors/open-api-3-0/header/SchemaVisitor.cjs +32 -0
  343. package/src/refractor/visitors/open-api-3-0/header/SchemaVisitor.mjs +27 -0
  344. package/src/refractor/visitors/open-api-3-0/header/SchemaVisitor.ts +33 -0
  345. package/src/refractor/visitors/open-api-3-0/header/index.cjs +20 -0
  346. package/src/refractor/visitors/open-api-3-0/header/index.mjs +15 -0
  347. package/src/refractor/visitors/open-api-3-0/header/index.ts +27 -0
  348. package/src/refractor/visitors/open-api-3-0/index.cjs +29 -0
  349. package/src/refractor/visitors/open-api-3-0/index.mjs +23 -0
  350. package/src/refractor/visitors/open-api-3-0/index.ts +39 -0
  351. package/src/refractor/visitors/open-api-3-0/info/VersionVisitor.cjs +17 -0
  352. package/src/refractor/visitors/open-api-3-0/info/VersionVisitor.mjs +12 -0
  353. package/src/refractor/visitors/open-api-3-0/info/VersionVisitor.ts +21 -0
  354. package/src/refractor/visitors/open-api-3-0/info/index.cjs +20 -0
  355. package/src/refractor/visitors/open-api-3-0/info/index.mjs +15 -0
  356. package/src/refractor/visitors/open-api-3-0/info/index.ts +27 -0
  357. package/src/refractor/visitors/open-api-3-0/license/index.cjs +20 -0
  358. package/src/refractor/visitors/open-api-3-0/license/index.mjs +15 -0
  359. package/src/refractor/visitors/open-api-3-0/license/index.ts +27 -0
  360. package/src/refractor/visitors/open-api-3-0/link/OperationIdVisitor.cjs +16 -0
  361. package/src/refractor/visitors/open-api-3-0/link/OperationIdVisitor.mjs +11 -0
  362. package/src/refractor/visitors/open-api-3-0/link/OperationIdVisitor.ts +20 -0
  363. package/src/refractor/visitors/open-api-3-0/link/OperationRefVisitor.cjs +16 -0
  364. package/src/refractor/visitors/open-api-3-0/link/OperationRefVisitor.mjs +11 -0
  365. package/src/refractor/visitors/open-api-3-0/link/OperationRefVisitor.ts +20 -0
  366. package/src/refractor/visitors/open-api-3-0/link/ParametersVisitor.cjs +19 -0
  367. package/src/refractor/visitors/open-api-3-0/link/ParametersVisitor.mjs +14 -0
  368. package/src/refractor/visitors/open-api-3-0/link/ParametersVisitor.ts +24 -0
  369. package/src/refractor/visitors/open-api-3-0/link/index.cjs +29 -0
  370. package/src/refractor/visitors/open-api-3-0/link/index.mjs +24 -0
  371. package/src/refractor/visitors/open-api-3-0/link/index.ts +38 -0
  372. package/src/refractor/visitors/open-api-3-0/media-type/EncodingVisitor.cjs +19 -0
  373. package/src/refractor/visitors/open-api-3-0/media-type/EncodingVisitor.mjs +14 -0
  374. package/src/refractor/visitors/open-api-3-0/media-type/EncodingVisitor.ts +24 -0
  375. package/src/refractor/visitors/open-api-3-0/media-type/ExamplesVisitor.cjs +17 -0
  376. package/src/refractor/visitors/open-api-3-0/media-type/ExamplesVisitor.mjs +12 -0
  377. package/src/refractor/visitors/open-api-3-0/media-type/ExamplesVisitor.ts +18 -0
  378. package/src/refractor/visitors/open-api-3-0/media-type/SchemaVisitor.cjs +32 -0
  379. package/src/refractor/visitors/open-api-3-0/media-type/SchemaVisitor.mjs +27 -0
  380. package/src/refractor/visitors/open-api-3-0/media-type/SchemaVisitor.ts +33 -0
  381. package/src/refractor/visitors/open-api-3-0/media-type/index.cjs +20 -0
  382. package/src/refractor/visitors/open-api-3-0/media-type/index.mjs +15 -0
  383. package/src/refractor/visitors/open-api-3-0/media-type/index.ts +27 -0
  384. package/src/refractor/visitors/open-api-3-0/oauth-flow/ScopesVisitor.cjs +19 -0
  385. package/src/refractor/visitors/open-api-3-0/oauth-flow/ScopesVisitor.mjs +14 -0
  386. package/src/refractor/visitors/open-api-3-0/oauth-flow/ScopesVisitor.ts +24 -0
  387. package/src/refractor/visitors/open-api-3-0/oauth-flow/index.cjs +20 -0
  388. package/src/refractor/visitors/open-api-3-0/oauth-flow/index.mjs +15 -0
  389. package/src/refractor/visitors/open-api-3-0/oauth-flow/index.ts +27 -0
  390. package/src/refractor/visitors/open-api-3-0/oauth-flows/index.cjs +20 -0
  391. package/src/refractor/visitors/open-api-3-0/oauth-flows/index.mjs +15 -0
  392. package/src/refractor/visitors/open-api-3-0/oauth-flows/index.ts +27 -0
  393. package/src/refractor/visitors/open-api-3-0/operation/CallbacksVisitor.cjs +34 -0
  394. package/src/refractor/visitors/open-api-3-0/operation/CallbacksVisitor.mjs +28 -0
  395. package/src/refractor/visitors/open-api-3-0/operation/CallbacksVisitor.ts +45 -0
  396. package/src/refractor/visitors/open-api-3-0/operation/ParametersVisitor.cjs +17 -0
  397. package/src/refractor/visitors/open-api-3-0/operation/ParametersVisitor.mjs +12 -0
  398. package/src/refractor/visitors/open-api-3-0/operation/ParametersVisitor.ts +18 -0
  399. package/src/refractor/visitors/open-api-3-0/operation/RequestBodyVisitor.cjs +35 -0
  400. package/src/refractor/visitors/open-api-3-0/operation/RequestBodyVisitor.mjs +29 -0
  401. package/src/refractor/visitors/open-api-3-0/operation/RequestBodyVisitor.ts +39 -0
  402. package/src/refractor/visitors/open-api-3-0/operation/SecurityVisitor.cjs +32 -0
  403. package/src/refractor/visitors/open-api-3-0/operation/SecurityVisitor.mjs +26 -0
  404. package/src/refractor/visitors/open-api-3-0/operation/SecurityVisitor.ts +41 -0
  405. package/src/refractor/visitors/open-api-3-0/operation/ServersVisitor.cjs +17 -0
  406. package/src/refractor/visitors/open-api-3-0/operation/ServersVisitor.mjs +12 -0
  407. package/src/refractor/visitors/open-api-3-0/operation/ServersVisitor.ts +18 -0
  408. package/src/refractor/visitors/open-api-3-0/operation/TagsVisitor.cjs +27 -0
  409. package/src/refractor/visitors/open-api-3-0/operation/TagsVisitor.mjs +21 -0
  410. package/src/refractor/visitors/open-api-3-0/operation/TagsVisitor.ts +32 -0
  411. package/src/refractor/visitors/open-api-3-0/operation/index.cjs +23 -0
  412. package/src/refractor/visitors/open-api-3-0/operation/index.mjs +17 -0
  413. package/src/refractor/visitors/open-api-3-0/operation/index.ts +27 -0
  414. package/src/refractor/visitors/open-api-3-0/parameter/ContentVisitor.cjs +17 -0
  415. package/src/refractor/visitors/open-api-3-0/parameter/ContentVisitor.mjs +12 -0
  416. package/src/refractor/visitors/open-api-3-0/parameter/ContentVisitor.ts +18 -0
  417. package/src/refractor/visitors/open-api-3-0/parameter/ExamplesVisitor.cjs +17 -0
  418. package/src/refractor/visitors/open-api-3-0/parameter/ExamplesVisitor.mjs +12 -0
  419. package/src/refractor/visitors/open-api-3-0/parameter/ExamplesVisitor.ts +18 -0
  420. package/src/refractor/visitors/open-api-3-0/parameter/SchemaVisitor.cjs +36 -0
  421. package/src/refractor/visitors/open-api-3-0/parameter/SchemaVisitor.mjs +30 -0
  422. package/src/refractor/visitors/open-api-3-0/parameter/SchemaVisitor.ts +36 -0
  423. package/src/refractor/visitors/open-api-3-0/parameter/index.cjs +40 -0
  424. package/src/refractor/visitors/open-api-3-0/parameter/index.mjs +34 -0
  425. package/src/refractor/visitors/open-api-3-0/parameter/index.ts +49 -0
  426. package/src/refractor/visitors/open-api-3-0/path-item/$RefVisitor.cjs +16 -0
  427. package/src/refractor/visitors/open-api-3-0/path-item/$RefVisitor.mjs +11 -0
  428. package/src/refractor/visitors/open-api-3-0/path-item/$RefVisitor.ts +20 -0
  429. package/src/refractor/visitors/open-api-3-0/path-item/ParametersVisitor.cjs +17 -0
  430. package/src/refractor/visitors/open-api-3-0/path-item/ParametersVisitor.mjs +12 -0
  431. package/src/refractor/visitors/open-api-3-0/path-item/ParametersVisitor.ts +18 -0
  432. package/src/refractor/visitors/open-api-3-0/path-item/ServersVisitor.cjs +17 -0
  433. package/src/refractor/visitors/open-api-3-0/path-item/ServersVisitor.mjs +12 -0
  434. package/src/refractor/visitors/open-api-3-0/path-item/ServersVisitor.ts +18 -0
  435. package/src/refractor/visitors/open-api-3-0/path-item/index.cjs +42 -0
  436. package/src/refractor/visitors/open-api-3-0/path-item/index.mjs +36 -0
  437. package/src/refractor/visitors/open-api-3-0/path-item/index.ts +53 -0
  438. package/src/refractor/visitors/open-api-3-0/paths/index.cjs +40 -0
  439. package/src/refractor/visitors/open-api-3-0/paths/index.mjs +34 -0
  440. package/src/refractor/visitors/open-api-3-0/paths/index.ts +51 -0
  441. package/src/refractor/visitors/open-api-3-0/reference/$RefVisitor.cjs +16 -0
  442. package/src/refractor/visitors/open-api-3-0/reference/$RefVisitor.mjs +11 -0
  443. package/src/refractor/visitors/open-api-3-0/reference/$RefVisitor.ts +20 -0
  444. package/src/refractor/visitors/open-api-3-0/reference/index.cjs +33 -0
  445. package/src/refractor/visitors/open-api-3-0/reference/index.mjs +27 -0
  446. package/src/refractor/visitors/open-api-3-0/reference/index.ts +41 -0
  447. package/src/refractor/visitors/open-api-3-0/request-body/ContentVisitor.cjs +17 -0
  448. package/src/refractor/visitors/open-api-3-0/request-body/ContentVisitor.mjs +12 -0
  449. package/src/refractor/visitors/open-api-3-0/request-body/ContentVisitor.ts +18 -0
  450. package/src/refractor/visitors/open-api-3-0/request-body/index.cjs +39 -0
  451. package/src/refractor/visitors/open-api-3-0/request-body/index.mjs +33 -0
  452. package/src/refractor/visitors/open-api-3-0/request-body/index.ts +46 -0
  453. package/src/refractor/visitors/open-api-3-0/response/ContentVisitor.cjs +17 -0
  454. package/src/refractor/visitors/open-api-3-0/response/ContentVisitor.mjs +12 -0
  455. package/src/refractor/visitors/open-api-3-0/response/ContentVisitor.ts +18 -0
  456. package/src/refractor/visitors/open-api-3-0/response/HeadersVisitor.cjs +42 -0
  457. package/src/refractor/visitors/open-api-3-0/response/HeadersVisitor.mjs +36 -0
  458. package/src/refractor/visitors/open-api-3-0/response/HeadersVisitor.ts +57 -0
  459. package/src/refractor/visitors/open-api-3-0/response/LinksVisitor.cjs +32 -0
  460. package/src/refractor/visitors/open-api-3-0/response/LinksVisitor.mjs +26 -0
  461. package/src/refractor/visitors/open-api-3-0/response/LinksVisitor.ts +45 -0
  462. package/src/refractor/visitors/open-api-3-0/response/index.cjs +47 -0
  463. package/src/refractor/visitors/open-api-3-0/response/index.mjs +41 -0
  464. package/src/refractor/visitors/open-api-3-0/response/index.ts +57 -0
  465. package/src/refractor/visitors/open-api-3-0/responses/DefaultVisitor.cjs +40 -0
  466. package/src/refractor/visitors/open-api-3-0/responses/DefaultVisitor.mjs +34 -0
  467. package/src/refractor/visitors/open-api-3-0/responses/DefaultVisitor.ts +39 -0
  468. package/src/refractor/visitors/open-api-3-0/responses/index.cjs +46 -0
  469. package/src/refractor/visitors/open-api-3-0/responses/index.mjs +40 -0
  470. package/src/refractor/visitors/open-api-3-0/responses/index.ts +64 -0
  471. package/src/refractor/visitors/open-api-3-0/schema/AllOfVisitor.cjs +25 -0
  472. package/src/refractor/visitors/open-api-3-0/schema/AllOfVisitor.mjs +21 -0
  473. package/src/refractor/visitors/open-api-3-0/schema/AllOfVisitor.ts +34 -0
  474. package/src/refractor/visitors/open-api-3-0/schema/AnyOfVisitor.cjs +25 -0
  475. package/src/refractor/visitors/open-api-3-0/schema/AnyOfVisitor.mjs +21 -0
  476. package/src/refractor/visitors/open-api-3-0/schema/AnyOfVisitor.ts +34 -0
  477. package/src/refractor/visitors/open-api-3-0/schema/ItemsVisitor.cjs +22 -0
  478. package/src/refractor/visitors/open-api-3-0/schema/ItemsVisitor.mjs +19 -0
  479. package/src/refractor/visitors/open-api-3-0/schema/ItemsVisitor.ts +31 -0
  480. package/src/refractor/visitors/open-api-3-0/schema/OneOfVisitor.cjs +25 -0
  481. package/src/refractor/visitors/open-api-3-0/schema/OneOfVisitor.mjs +21 -0
  482. package/src/refractor/visitors/open-api-3-0/schema/OneOfVisitor.ts +34 -0
  483. package/src/refractor/visitors/open-api-3-0/schema/PropertiesVisitor.cjs +25 -0
  484. package/src/refractor/visitors/open-api-3-0/schema/PropertiesVisitor.mjs +21 -0
  485. package/src/refractor/visitors/open-api-3-0/schema/PropertiesVisitor.ts +34 -0
  486. package/src/refractor/visitors/open-api-3-0/schema/SchemaOrReferenceVisitor.cjs +23 -0
  487. package/src/refractor/visitors/open-api-3-0/schema/SchemaOrReferenceVisitor.mjs +19 -0
  488. package/src/refractor/visitors/open-api-3-0/schema/SchemaOrReferenceVisitor.ts +36 -0
  489. package/src/refractor/visitors/open-api-3-0/schema/TypeVisitor.cjs +19 -0
  490. package/src/refractor/visitors/open-api-3-0/schema/TypeVisitor.mjs +15 -0
  491. package/src/refractor/visitors/open-api-3-0/schema/TypeVisitor.ts +26 -0
  492. package/src/refractor/visitors/open-api-3-0/schema/index.cjs +24 -0
  493. package/src/refractor/visitors/open-api-3-0/schema/index.mjs +18 -0
  494. package/src/refractor/visitors/open-api-3-0/schema/index.ts +30 -0
  495. package/src/refractor/visitors/open-api-3-0/security-requirement/index.cjs +19 -0
  496. package/src/refractor/visitors/open-api-3-0/security-requirement/index.mjs +14 -0
  497. package/src/refractor/visitors/open-api-3-0/security-requirement/index.ts +24 -0
  498. package/src/refractor/visitors/open-api-3-0/security-scheme/index.cjs +20 -0
  499. package/src/refractor/visitors/open-api-3-0/security-scheme/index.mjs +15 -0
  500. package/src/refractor/visitors/open-api-3-0/security-scheme/index.ts +27 -0
  501. package/src/refractor/visitors/open-api-3-0/server/UrlVisitor.cjs +16 -0
  502. package/src/refractor/visitors/open-api-3-0/server/UrlVisitor.mjs +11 -0
  503. package/src/refractor/visitors/open-api-3-0/server/UrlVisitor.ts +20 -0
  504. package/src/refractor/visitors/open-api-3-0/server/VariablesVisitor.cjs +19 -0
  505. package/src/refractor/visitors/open-api-3-0/server/VariablesVisitor.mjs +14 -0
  506. package/src/refractor/visitors/open-api-3-0/server/VariablesVisitor.ts +24 -0
  507. package/src/refractor/visitors/open-api-3-0/server/index.cjs +20 -0
  508. package/src/refractor/visitors/open-api-3-0/server/index.mjs +15 -0
  509. package/src/refractor/visitors/open-api-3-0/server/index.ts +27 -0
  510. package/src/refractor/visitors/open-api-3-0/server-variable/index.cjs +20 -0
  511. package/src/refractor/visitors/open-api-3-0/server-variable/index.mjs +15 -0
  512. package/src/refractor/visitors/open-api-3-0/server-variable/index.ts +27 -0
  513. package/src/refractor/visitors/open-api-3-0/tag/index.cjs +20 -0
  514. package/src/refractor/visitors/open-api-3-0/tag/index.mjs +15 -0
  515. package/src/refractor/visitors/open-api-3-0/tag/index.ts +27 -0
  516. package/src/refractor/visitors/open-api-3-0/xml/index.cjs +20 -0
  517. package/src/refractor/visitors/open-api-3-0/xml/index.mjs +15 -0
  518. package/src/refractor/visitors/open-api-3-0/xml/index.ts +27 -0
@@ -0,0 +1,321 @@
1
+ import { resolveSpecification, dispatchRefractorPlugins } from '@speclynx/apidom-core';
2
+ import { refract as baseRefract } from '@speclynx/apidom-datamodel';
3
+ import { traverse, getNodePrimitiveType } from '@speclynx/apidom-traverse';
4
+ import { path } from 'ramda';
5
+ import specification from "./specification.mjs";
6
+ import createToolbox from "./toolbox.mjs";
7
+ /**
8
+ * @public
9
+ */
10
+ /**
11
+ * @public
12
+ */
13
+ /**
14
+ * @public
15
+ */
16
+ const refract = (value, {
17
+ element = 'openApi3_0',
18
+ plugins = [],
19
+ specificationObj = specification,
20
+ consume = false
21
+ } = {}) => {
22
+ const genericElement = baseRefract(value);
23
+ const resolvedSpec = resolveSpecification(specificationObj);
24
+ const elementMap = resolvedSpec.elementMap;
25
+ const specPath = elementMap[element];
26
+ if (!specPath) {
27
+ throw new Error(`Unknown element type: "${element}"`);
28
+ }
29
+
30
+ /**
31
+ * This is where generic ApiDOM becomes semantic (namespace applied).
32
+ * We don't allow consumers to hook into this translation.
33
+ * Though we allow consumers to define their own plugins on already transformed ApiDOM.
34
+ */
35
+ const RootVisitorClass = path(specPath, resolvedSpec);
36
+ const rootVisitor = new RootVisitorClass({
37
+ specObj: resolvedSpec,
38
+ consume
39
+ });
40
+ traverse(genericElement, rootVisitor, {
41
+ nodeTypeGetter: getNodePrimitiveType
42
+ });
43
+
44
+ /**
45
+ * Running plugins visitors means extra single traversal === performance hit.
46
+ */
47
+ return dispatchRefractorPlugins(rootVisitor.element, plugins, {
48
+ toolboxCreator: createToolbox
49
+ });
50
+ };
51
+
52
+ /**
53
+ * Refracts a value into an OpenApi3_0Element.
54
+ * @public
55
+ */
56
+ export const refractOpenApi3_0 = (value, options = {}) => refract(value, {
57
+ ...options,
58
+ element: 'openApi3_0'
59
+ });
60
+
61
+ /**
62
+ * Refracts a value into an InfoElement.
63
+ * @public
64
+ */
65
+ export const refractInfo = (value, options = {}) => refract(value, {
66
+ ...options,
67
+ element: 'info'
68
+ });
69
+
70
+ /**
71
+ * Refracts a value into a ContactElement.
72
+ * @public
73
+ */
74
+ export const refractContact = (value, options = {}) => refract(value, {
75
+ ...options,
76
+ element: 'contact'
77
+ });
78
+
79
+ /**
80
+ * Refracts a value into a LicenseElement.
81
+ * @public
82
+ */
83
+ export const refractLicense = (value, options = {}) => refract(value, {
84
+ ...options,
85
+ element: 'license'
86
+ });
87
+
88
+ /**
89
+ * Refracts a value into a ServerElement.
90
+ * @public
91
+ */
92
+ export const refractServer = (value, options = {}) => refract(value, {
93
+ ...options,
94
+ element: 'server'
95
+ });
96
+
97
+ /**
98
+ * Refracts a value into a ServerVariableElement.
99
+ * @public
100
+ */
101
+ export const refractServerVariable = (value, options = {}) => refract(value, {
102
+ ...options,
103
+ element: 'serverVariable'
104
+ });
105
+
106
+ /**
107
+ * Refracts a value into a ComponentsElement.
108
+ * @public
109
+ */
110
+ export const refractComponents = (value, options = {}) => refract(value, {
111
+ ...options,
112
+ element: 'components'
113
+ });
114
+
115
+ /**
116
+ * Refracts a value into a PathsElement.
117
+ * @public
118
+ */
119
+ export const refractPaths = (value, options = {}) => refract(value, {
120
+ ...options,
121
+ element: 'paths'
122
+ });
123
+
124
+ /**
125
+ * Refracts a value into a PathItemElement.
126
+ * @public
127
+ */
128
+ export const refractPathItem = (value, options = {}) => refract(value, {
129
+ ...options,
130
+ element: 'pathItem'
131
+ });
132
+
133
+ /**
134
+ * Refracts a value into an OperationElement.
135
+ * @public
136
+ */
137
+ export const refractOperation = (value, options = {}) => refract(value, {
138
+ ...options,
139
+ element: 'operation'
140
+ });
141
+
142
+ /**
143
+ * Refracts a value into an ExternalDocumentationElement.
144
+ * @public
145
+ */
146
+ export const refractExternalDocumentation = (value, options = {}) => refract(value, {
147
+ ...options,
148
+ element: 'externalDocumentation'
149
+ });
150
+
151
+ /**
152
+ * Refracts a value into a ParameterElement.
153
+ * @public
154
+ */
155
+ export const refractParameter = (value, options = {}) => refract(value, {
156
+ ...options,
157
+ element: 'parameter'
158
+ });
159
+
160
+ /**
161
+ * Refracts a value into a RequestBodyElement.
162
+ * @public
163
+ */
164
+ export const refractRequestBody = (value, options = {}) => refract(value, {
165
+ ...options,
166
+ element: 'requestBody'
167
+ });
168
+
169
+ /**
170
+ * Refracts a value into a MediaTypeElement.
171
+ * @public
172
+ */
173
+ export const refractMediaType = (value, options = {}) => refract(value, {
174
+ ...options,
175
+ element: 'mediaType'
176
+ });
177
+
178
+ /**
179
+ * Refracts a value into an EncodingElement.
180
+ * @public
181
+ */
182
+ export const refractEncoding = (value, options = {}) => refract(value, {
183
+ ...options,
184
+ element: 'encoding'
185
+ });
186
+
187
+ /**
188
+ * Refracts a value into a ResponsesElement.
189
+ * @public
190
+ */
191
+ export const refractResponses = (value, options = {}) => refract(value, {
192
+ ...options,
193
+ element: 'responses'
194
+ });
195
+
196
+ /**
197
+ * Refracts a value into a ResponseElement.
198
+ * @public
199
+ */
200
+ export const refractResponse = (value, options = {}) => refract(value, {
201
+ ...options,
202
+ element: 'response'
203
+ });
204
+
205
+ /**
206
+ * Refracts a value into a CallbackElement.
207
+ * @public
208
+ */
209
+ export const refractCallback = (value, options = {}) => refract(value, {
210
+ ...options,
211
+ element: 'callback'
212
+ });
213
+
214
+ /**
215
+ * Refracts a value into an ExampleElement.
216
+ * @public
217
+ */
218
+ export const refractExample = (value, options = {}) => refract(value, {
219
+ ...options,
220
+ element: 'example'
221
+ });
222
+
223
+ /**
224
+ * Refracts a value into a LinkElement.
225
+ * @public
226
+ */
227
+ export const refractLink = (value, options = {}) => refract(value, {
228
+ ...options,
229
+ element: 'link'
230
+ });
231
+
232
+ /**
233
+ * Refracts a value into a HeaderElement.
234
+ * @public
235
+ */
236
+ export const refractHeader = (value, options = {}) => refract(value, {
237
+ ...options,
238
+ element: 'header'
239
+ });
240
+
241
+ /**
242
+ * Refracts a value into a TagElement.
243
+ * @public
244
+ */
245
+ export const refractTag = (value, options = {}) => refract(value, {
246
+ ...options,
247
+ element: 'tag'
248
+ });
249
+
250
+ /**
251
+ * Refracts a value into a ReferenceElement.
252
+ * @public
253
+ */
254
+ export const refractReference = (value, options = {}) => refract(value, {
255
+ ...options,
256
+ element: 'reference'
257
+ });
258
+
259
+ /**
260
+ * Refracts a value into a SchemaElement.
261
+ * @public
262
+ */
263
+ export const refractSchema = (value, options = {}) => refract(value, {
264
+ ...options,
265
+ element: 'schema'
266
+ });
267
+
268
+ /**
269
+ * Refracts a value into a DiscriminatorElement.
270
+ * @public
271
+ */
272
+ export const refractDiscriminator = (value, options = {}) => refract(value, {
273
+ ...options,
274
+ element: 'discriminator'
275
+ });
276
+
277
+ /**
278
+ * Refracts a value into an XmlElement.
279
+ * @public
280
+ */
281
+ export const refractXml = (value, options = {}) => refract(value, {
282
+ ...options,
283
+ element: 'xml'
284
+ });
285
+
286
+ /**
287
+ * Refracts a value into a SecuritySchemeElement.
288
+ * @public
289
+ */
290
+ export const refractSecurityScheme = (value, options = {}) => refract(value, {
291
+ ...options,
292
+ element: 'securityScheme'
293
+ });
294
+
295
+ /**
296
+ * Refracts a value into an OAuthFlowsElement.
297
+ * @public
298
+ */
299
+ export const refractOAuthFlows = (value, options = {}) => refract(value, {
300
+ ...options,
301
+ element: 'oAuthFlows'
302
+ });
303
+
304
+ /**
305
+ * Refracts a value into an OAuthFlowElement.
306
+ * @public
307
+ */
308
+ export const refractOAuthFlow = (value, options = {}) => refract(value, {
309
+ ...options,
310
+ element: 'oAuthFlow'
311
+ });
312
+
313
+ /**
314
+ * Refracts a value into a SecurityRequirementElement.
315
+ * @public
316
+ */
317
+ export const refractSecurityRequirement = (value, options = {}) => refract(value, {
318
+ ...options,
319
+ element: 'securityRequirement'
320
+ });
321
+ export default refract;
@@ -0,0 +1,370 @@
1
+ import { resolveSpecification, dispatchRefractorPlugins } from '@speclynx/apidom-core';
2
+ import { Element, refract as baseRefract } from '@speclynx/apidom-datamodel';
3
+ import { traverse, getNodePrimitiveType } from '@speclynx/apidom-traverse';
4
+ import { path } from 'ramda';
5
+
6
+ import type VisitorClass from './visitors/Visitor.ts';
7
+ import specification from './specification.ts';
8
+ import createToolbox, { type Toolbox } from './toolbox.ts';
9
+ import type CallbackElement from '../elements/Callback.ts';
10
+ import type ComponentsElement from '../elements/Components.ts';
11
+ import type ContactElement from '../elements/Contact.ts';
12
+ import type DiscriminatorElement from '../elements/Discriminator.ts';
13
+ import type EncodingElement from '../elements/Encoding.ts';
14
+ import type ExampleElement from '../elements/Example.ts';
15
+ import type ExternalDocumentationElement from '../elements/ExternalDocumentation.ts';
16
+ import type HeaderElement from '../elements/Header.ts';
17
+ import type InfoElement from '../elements/Info.ts';
18
+ import type LicenseElement from '../elements/License.ts';
19
+ import type LinkElement from '../elements/Link.ts';
20
+ import type MediaTypeElement from '../elements/MediaType.ts';
21
+ import type OAuthFlowElement from '../elements/OAuthFlow.ts';
22
+ import type OAuthFlowsElement from '../elements/OAuthFlows.ts';
23
+ import type OpenApi3_0Element from '../elements/OpenApi3-0.ts';
24
+ import type OperationElement from '../elements/Operation.ts';
25
+ import type ParameterElement from '../elements/Parameter.ts';
26
+ import type PathItemElement from '../elements/PathItem.ts';
27
+ import type PathsElement from '../elements/Paths.ts';
28
+ import type ReferenceElement from '../elements/Reference.ts';
29
+ import type RequestBodyElement from '../elements/RequestBody.ts';
30
+ import type ResponseElement from '../elements/Response.ts';
31
+ import type ResponsesElement from '../elements/Responses.ts';
32
+ import type SchemaElement from '../elements/Schema.ts';
33
+ import type SecurityRequirementElement from '../elements/SecurityRequirement.ts';
34
+ import type SecuritySchemeElement from '../elements/SecurityScheme.ts';
35
+ import type ServerElement from '../elements/Server.ts';
36
+ import type ServerVariableElement from '../elements/ServerVariable.ts';
37
+ import type TagElement from '../elements/Tag.ts';
38
+ import type XmlElement from '../elements/Xml.ts';
39
+
40
+ /**
41
+ * @public
42
+ */
43
+ export type RefractorPlugin = (toolbox: Toolbox) => {
44
+ visitor?: object;
45
+ pre?: () => void;
46
+ post?: () => void;
47
+ };
48
+
49
+ /**
50
+ * @public
51
+ */
52
+ export interface RefractorOptions {
53
+ readonly element?: string;
54
+ readonly plugins?: RefractorPlugin[];
55
+ readonly specificationObj?: typeof specification;
56
+ readonly consume?: boolean;
57
+ }
58
+
59
+ /**
60
+ * @public
61
+ */
62
+ const refract = <T extends Element>(
63
+ value: unknown,
64
+ {
65
+ element = 'openApi3_0',
66
+ plugins = [],
67
+ specificationObj = specification,
68
+ consume = false,
69
+ }: RefractorOptions = {},
70
+ ): T => {
71
+ const genericElement = baseRefract(value);
72
+ const resolvedSpec = resolveSpecification(specificationObj);
73
+ const elementMap = resolvedSpec.elementMap as Record<string, string[]>;
74
+ const specPath = elementMap[element];
75
+
76
+ if (!specPath) {
77
+ throw new Error(`Unknown element type: "${element}"`);
78
+ }
79
+
80
+ /**
81
+ * This is where generic ApiDOM becomes semantic (namespace applied).
82
+ * We don't allow consumers to hook into this translation.
83
+ * Though we allow consumers to define their own plugins on already transformed ApiDOM.
84
+ */
85
+ const RootVisitorClass = path(specPath, resolvedSpec) as new (
86
+ options: Record<string, unknown>,
87
+ ) => InstanceType<typeof VisitorClass>;
88
+ const rootVisitor = new RootVisitorClass({ specObj: resolvedSpec, consume });
89
+
90
+ traverse(genericElement, rootVisitor, { nodeTypeGetter: getNodePrimitiveType });
91
+
92
+ /**
93
+ * Running plugins visitors means extra single traversal === performance hit.
94
+ */
95
+ return dispatchRefractorPlugins(rootVisitor.element, plugins, {
96
+ toolboxCreator: createToolbox,
97
+ }) as T;
98
+ };
99
+
100
+ /**
101
+ * Refracts a value into an OpenApi3_0Element.
102
+ * @public
103
+ */
104
+ export const refractOpenApi3_0 = <T extends Element = OpenApi3_0Element>(
105
+ value: unknown,
106
+ options: Omit<RefractorOptions, 'element'> = {},
107
+ ): T => refract(value, { ...options, element: 'openApi3_0' });
108
+
109
+ /**
110
+ * Refracts a value into an InfoElement.
111
+ * @public
112
+ */
113
+ export const refractInfo = <T extends Element = InfoElement>(
114
+ value: unknown,
115
+ options: Omit<RefractorOptions, 'element'> = {},
116
+ ): T => refract(value, { ...options, element: 'info' });
117
+
118
+ /**
119
+ * Refracts a value into a ContactElement.
120
+ * @public
121
+ */
122
+ export const refractContact = <T extends Element = ContactElement>(
123
+ value: unknown,
124
+ options: Omit<RefractorOptions, 'element'> = {},
125
+ ): T => refract(value, { ...options, element: 'contact' });
126
+
127
+ /**
128
+ * Refracts a value into a LicenseElement.
129
+ * @public
130
+ */
131
+ export const refractLicense = <T extends Element = LicenseElement>(
132
+ value: unknown,
133
+ options: Omit<RefractorOptions, 'element'> = {},
134
+ ): T => refract(value, { ...options, element: 'license' });
135
+
136
+ /**
137
+ * Refracts a value into a ServerElement.
138
+ * @public
139
+ */
140
+ export const refractServer = <T extends Element = ServerElement>(
141
+ value: unknown,
142
+ options: Omit<RefractorOptions, 'element'> = {},
143
+ ): T => refract(value, { ...options, element: 'server' });
144
+
145
+ /**
146
+ * Refracts a value into a ServerVariableElement.
147
+ * @public
148
+ */
149
+ export const refractServerVariable = <T extends Element = ServerVariableElement>(
150
+ value: unknown,
151
+ options: Omit<RefractorOptions, 'element'> = {},
152
+ ): T => refract(value, { ...options, element: 'serverVariable' });
153
+
154
+ /**
155
+ * Refracts a value into a ComponentsElement.
156
+ * @public
157
+ */
158
+ export const refractComponents = <T extends Element = ComponentsElement>(
159
+ value: unknown,
160
+ options: Omit<RefractorOptions, 'element'> = {},
161
+ ): T => refract(value, { ...options, element: 'components' });
162
+
163
+ /**
164
+ * Refracts a value into a PathsElement.
165
+ * @public
166
+ */
167
+ export const refractPaths = <T extends Element = PathsElement>(
168
+ value: unknown,
169
+ options: Omit<RefractorOptions, 'element'> = {},
170
+ ): T => refract(value, { ...options, element: 'paths' });
171
+
172
+ /**
173
+ * Refracts a value into a PathItemElement.
174
+ * @public
175
+ */
176
+ export const refractPathItem = <T extends Element = PathItemElement>(
177
+ value: unknown,
178
+ options: Omit<RefractorOptions, 'element'> = {},
179
+ ): T => refract(value, { ...options, element: 'pathItem' });
180
+
181
+ /**
182
+ * Refracts a value into an OperationElement.
183
+ * @public
184
+ */
185
+ export const refractOperation = <T extends Element = OperationElement>(
186
+ value: unknown,
187
+ options: Omit<RefractorOptions, 'element'> = {},
188
+ ): T => refract(value, { ...options, element: 'operation' });
189
+
190
+ /**
191
+ * Refracts a value into an ExternalDocumentationElement.
192
+ * @public
193
+ */
194
+ export const refractExternalDocumentation = <T extends Element = ExternalDocumentationElement>(
195
+ value: unknown,
196
+ options: Omit<RefractorOptions, 'element'> = {},
197
+ ): T => refract(value, { ...options, element: 'externalDocumentation' });
198
+
199
+ /**
200
+ * Refracts a value into a ParameterElement.
201
+ * @public
202
+ */
203
+ export const refractParameter = <T extends Element = ParameterElement>(
204
+ value: unknown,
205
+ options: Omit<RefractorOptions, 'element'> = {},
206
+ ): T => refract(value, { ...options, element: 'parameter' });
207
+
208
+ /**
209
+ * Refracts a value into a RequestBodyElement.
210
+ * @public
211
+ */
212
+ export const refractRequestBody = <T extends Element = RequestBodyElement>(
213
+ value: unknown,
214
+ options: Omit<RefractorOptions, 'element'> = {},
215
+ ): T => refract(value, { ...options, element: 'requestBody' });
216
+
217
+ /**
218
+ * Refracts a value into a MediaTypeElement.
219
+ * @public
220
+ */
221
+ export const refractMediaType = <T extends Element = MediaTypeElement>(
222
+ value: unknown,
223
+ options: Omit<RefractorOptions, 'element'> = {},
224
+ ): T => refract(value, { ...options, element: 'mediaType' });
225
+
226
+ /**
227
+ * Refracts a value into an EncodingElement.
228
+ * @public
229
+ */
230
+ export const refractEncoding = <T extends Element = EncodingElement>(
231
+ value: unknown,
232
+ options: Omit<RefractorOptions, 'element'> = {},
233
+ ): T => refract(value, { ...options, element: 'encoding' });
234
+
235
+ /**
236
+ * Refracts a value into a ResponsesElement.
237
+ * @public
238
+ */
239
+ export const refractResponses = <T extends Element = ResponsesElement>(
240
+ value: unknown,
241
+ options: Omit<RefractorOptions, 'element'> = {},
242
+ ): T => refract(value, { ...options, element: 'responses' });
243
+
244
+ /**
245
+ * Refracts a value into a ResponseElement.
246
+ * @public
247
+ */
248
+ export const refractResponse = <T extends Element = ResponseElement>(
249
+ value: unknown,
250
+ options: Omit<RefractorOptions, 'element'> = {},
251
+ ): T => refract(value, { ...options, element: 'response' });
252
+
253
+ /**
254
+ * Refracts a value into a CallbackElement.
255
+ * @public
256
+ */
257
+ export const refractCallback = <T extends Element = CallbackElement>(
258
+ value: unknown,
259
+ options: Omit<RefractorOptions, 'element'> = {},
260
+ ): T => refract(value, { ...options, element: 'callback' });
261
+
262
+ /**
263
+ * Refracts a value into an ExampleElement.
264
+ * @public
265
+ */
266
+ export const refractExample = <T extends Element = ExampleElement>(
267
+ value: unknown,
268
+ options: Omit<RefractorOptions, 'element'> = {},
269
+ ): T => refract(value, { ...options, element: 'example' });
270
+
271
+ /**
272
+ * Refracts a value into a LinkElement.
273
+ * @public
274
+ */
275
+ export const refractLink = <T extends Element = LinkElement>(
276
+ value: unknown,
277
+ options: Omit<RefractorOptions, 'element'> = {},
278
+ ): T => refract(value, { ...options, element: 'link' });
279
+
280
+ /**
281
+ * Refracts a value into a HeaderElement.
282
+ * @public
283
+ */
284
+ export const refractHeader = <T extends Element = HeaderElement>(
285
+ value: unknown,
286
+ options: Omit<RefractorOptions, 'element'> = {},
287
+ ): T => refract(value, { ...options, element: 'header' });
288
+
289
+ /**
290
+ * Refracts a value into a TagElement.
291
+ * @public
292
+ */
293
+ export const refractTag = <T extends Element = TagElement>(
294
+ value: unknown,
295
+ options: Omit<RefractorOptions, 'element'> = {},
296
+ ): T => refract(value, { ...options, element: 'tag' });
297
+
298
+ /**
299
+ * Refracts a value into a ReferenceElement.
300
+ * @public
301
+ */
302
+ export const refractReference = <T extends Element = ReferenceElement>(
303
+ value: unknown,
304
+ options: Omit<RefractorOptions, 'element'> = {},
305
+ ): T => refract(value, { ...options, element: 'reference' });
306
+
307
+ /**
308
+ * Refracts a value into a SchemaElement.
309
+ * @public
310
+ */
311
+ export const refractSchema = <T extends Element = SchemaElement>(
312
+ value: unknown,
313
+ options: Omit<RefractorOptions, 'element'> = {},
314
+ ): T => refract(value, { ...options, element: 'schema' });
315
+
316
+ /**
317
+ * Refracts a value into a DiscriminatorElement.
318
+ * @public
319
+ */
320
+ export const refractDiscriminator = <T extends Element = DiscriminatorElement>(
321
+ value: unknown,
322
+ options: Omit<RefractorOptions, 'element'> = {},
323
+ ): T => refract(value, { ...options, element: 'discriminator' });
324
+
325
+ /**
326
+ * Refracts a value into an XmlElement.
327
+ * @public
328
+ */
329
+ export const refractXml = <T extends Element = XmlElement>(
330
+ value: unknown,
331
+ options: Omit<RefractorOptions, 'element'> = {},
332
+ ): T => refract(value, { ...options, element: 'xml' });
333
+
334
+ /**
335
+ * Refracts a value into a SecuritySchemeElement.
336
+ * @public
337
+ */
338
+ export const refractSecurityScheme = <T extends Element = SecuritySchemeElement>(
339
+ value: unknown,
340
+ options: Omit<RefractorOptions, 'element'> = {},
341
+ ): T => refract(value, { ...options, element: 'securityScheme' });
342
+
343
+ /**
344
+ * Refracts a value into an OAuthFlowsElement.
345
+ * @public
346
+ */
347
+ export const refractOAuthFlows = <T extends Element = OAuthFlowsElement>(
348
+ value: unknown,
349
+ options: Omit<RefractorOptions, 'element'> = {},
350
+ ): T => refract(value, { ...options, element: 'oAuthFlows' });
351
+
352
+ /**
353
+ * Refracts a value into an OAuthFlowElement.
354
+ * @public
355
+ */
356
+ export const refractOAuthFlow = <T extends Element = OAuthFlowElement>(
357
+ value: unknown,
358
+ options: Omit<RefractorOptions, 'element'> = {},
359
+ ): T => refract(value, { ...options, element: 'oAuthFlow' });
360
+
361
+ /**
362
+ * Refracts a value into a SecurityRequirementElement.
363
+ * @public
364
+ */
365
+ export const refractSecurityRequirement = <T extends Element = SecurityRequirementElement>(
366
+ value: unknown,
367
+ options: Omit<RefractorOptions, 'element'> = {},
368
+ ): T => refract(value, { ...options, element: 'securityRequirement' });
369
+
370
+ export default refract;