@swagger-api/apidom-ns-openapi-2 0.79.0

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 (221) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/LICENSES/Apache-2.0.txt +202 -0
  3. package/LICENSES/MIT.txt +9 -0
  4. package/NOTICE +57 -0
  5. package/README.md +215 -0
  6. package/cjs/elements/Contact.cjs +30 -0
  7. package/cjs/elements/Definitions.cjs +12 -0
  8. package/cjs/elements/Example.cjs +12 -0
  9. package/cjs/elements/ExternalDocumentation.cjs +24 -0
  10. package/cjs/elements/Header.cjs +184 -0
  11. package/cjs/elements/Headers.cjs +12 -0
  12. package/cjs/elements/Info.cjs +49 -0
  13. package/cjs/elements/Items.cjs +189 -0
  14. package/cjs/elements/License.cjs +24 -0
  15. package/cjs/elements/Operation.cjs +75 -0
  16. package/cjs/elements/Parameter.cjs +229 -0
  17. package/cjs/elements/ParametersDefinitions.cjs +12 -0
  18. package/cjs/elements/PathItem.cjs +66 -0
  19. package/cjs/elements/Paths.cjs +12 -0
  20. package/cjs/elements/Reference.cjs +19 -0
  21. package/cjs/elements/Response.cjs +36 -0
  22. package/cjs/elements/Responses.cjs +18 -0
  23. package/cjs/elements/ResponsesDefinitions.cjs +12 -0
  24. package/cjs/elements/Schema.cjs +115 -0
  25. package/cjs/elements/Scopes.cjs +12 -0
  26. package/cjs/elements/SecurityDefinitions.cjs +12 -0
  27. package/cjs/elements/SecurityRequirement.cjs +12 -0
  28. package/cjs/elements/SecurityScheme.cjs +60 -0
  29. package/cjs/elements/Swagger.cjs +103 -0
  30. package/cjs/elements/SwaggerVersion.cjs +14 -0
  31. package/cjs/elements/Tag.cjs +30 -0
  32. package/cjs/elements/Xml.cjs +42 -0
  33. package/cjs/elements/nces/OperationConsumes.cjs +13 -0
  34. package/cjs/elements/nces/OperationParameters.cjs +14 -0
  35. package/cjs/elements/nces/OperationProduces.cjs +13 -0
  36. package/cjs/elements/nces/OperationSchemes.cjs +13 -0
  37. package/cjs/elements/nces/OperationSecurity.cjs +14 -0
  38. package/cjs/elements/nces/OperationTags.cjs +13 -0
  39. package/cjs/elements/nces/PathItemParameters.cjs +14 -0
  40. package/cjs/elements/nces/SwaggerConsumes.cjs +13 -0
  41. package/cjs/elements/nces/SwaggerProduces.cjs +13 -0
  42. package/cjs/elements/nces/SwaggerSchemes.cjs +13 -0
  43. package/cjs/elements/nces/SwaggerSecurity.cjs +14 -0
  44. package/cjs/elements/nces/SwaggerTags.cjs +13 -0
  45. package/cjs/index.cjs +134 -0
  46. package/cjs/media-types.cjs +23 -0
  47. package/cjs/namespace.cjs +68 -0
  48. package/cjs/predicates.cjs +222 -0
  49. package/cjs/refractor/index.cjs +47 -0
  50. package/cjs/refractor/plugins/replace-empty-element.cjs +365 -0
  51. package/cjs/refractor/predicates.cjs +14 -0
  52. package/cjs/refractor/registration.cjs +87 -0
  53. package/cjs/refractor/specification.cjs +488 -0
  54. package/cjs/refractor/toolbox.cjs +23 -0
  55. package/cjs/refractor/visitors/FallbackVisitor.cjs +23 -0
  56. package/cjs/refractor/visitors/SpecificationExtensionVisitor.cjs +18 -0
  57. package/cjs/refractor/visitors/SpecificationVisitor.cjs +87 -0
  58. package/cjs/refractor/visitors/Visitor.cjs +22 -0
  59. package/cjs/refractor/visitors/generics/AlternatingVisitor.cjs +27 -0
  60. package/cjs/refractor/visitors/generics/FixedFieldsVisitor.cjs +56 -0
  61. package/cjs/refractor/visitors/generics/MapVisitor.cjs +14 -0
  62. package/cjs/refractor/visitors/generics/MixedFieldsVisitor.cjs +42 -0
  63. package/cjs/refractor/visitors/generics/PatternedFieldsVisitor.cjs +58 -0
  64. package/cjs/refractor/visitors/open-api-2/ConsumesVisitor.cjs +21 -0
  65. package/cjs/refractor/visitors/open-api-2/ProducesVisitor.cjs +21 -0
  66. package/cjs/refractor/visitors/open-api-2/SchemesVisitor.cjs +21 -0
  67. package/cjs/refractor/visitors/open-api-2/SecurityVisitor.cjs +27 -0
  68. package/cjs/refractor/visitors/open-api-2/SwaggerVisitor.cjs +21 -0
  69. package/cjs/refractor/visitors/open-api-2/TagsVisitor.cjs +27 -0
  70. package/cjs/refractor/visitors/open-api-2/contact/index.cjs +20 -0
  71. package/cjs/refractor/visitors/open-api-2/definitions/index.cjs +33 -0
  72. package/cjs/refractor/visitors/open-api-2/example/index.cjs +20 -0
  73. package/cjs/refractor/visitors/open-api-2/external-documentation/index.cjs +20 -0
  74. package/cjs/refractor/visitors/open-api-2/header/index.cjs +20 -0
  75. package/cjs/refractor/visitors/open-api-2/headers/index.cjs +20 -0
  76. package/cjs/refractor/visitors/open-api-2/index.cjs +20 -0
  77. package/cjs/refractor/visitors/open-api-2/info/VersionVisitor.cjs +19 -0
  78. package/cjs/refractor/visitors/open-api-2/info/index.cjs +20 -0
  79. package/cjs/refractor/visitors/open-api-2/items/index.cjs +20 -0
  80. package/cjs/refractor/visitors/open-api-2/license/index.cjs +20 -0
  81. package/cjs/refractor/visitors/open-api-2/operation/ConsumesVisitor.cjs +21 -0
  82. package/cjs/refractor/visitors/open-api-2/operation/ParametersVisitor.cjs +32 -0
  83. package/cjs/refractor/visitors/open-api-2/operation/ProducesVisitor.cjs +21 -0
  84. package/cjs/refractor/visitors/open-api-2/operation/SchemesVisitor.cjs +21 -0
  85. package/cjs/refractor/visitors/open-api-2/operation/SecurityVisitor.cjs +27 -0
  86. package/cjs/refractor/visitors/open-api-2/operation/TagsVisitor.cjs +21 -0
  87. package/cjs/refractor/visitors/open-api-2/operation/index.cjs +19 -0
  88. package/cjs/refractor/visitors/open-api-2/parameter/index.cjs +20 -0
  89. package/cjs/refractor/visitors/open-api-2/parameters-definitions/index.cjs +19 -0
  90. package/cjs/refractor/visitors/open-api-2/path-item/$RefVisitor.cjs +18 -0
  91. package/cjs/refractor/visitors/open-api-2/path-item/ParametersVisitor.cjs +32 -0
  92. package/cjs/refractor/visitors/open-api-2/path-item/index.cjs +40 -0
  93. package/cjs/refractor/visitors/open-api-2/paths/index.cjs +35 -0
  94. package/cjs/refractor/visitors/open-api-2/reference/$RefVisitor.cjs +18 -0
  95. package/cjs/refractor/visitors/open-api-2/reference/index.cjs +33 -0
  96. package/cjs/refractor/visitors/open-api-2/response/index.cjs +20 -0
  97. package/cjs/refractor/visitors/open-api-2/responses/DefaultVisitor.cjs +37 -0
  98. package/cjs/refractor/visitors/open-api-2/responses/index.cjs +46 -0
  99. package/cjs/refractor/visitors/open-api-2/responses-definitions/index.cjs +19 -0
  100. package/cjs/refractor/visitors/open-api-2/schema/AllOfVisitor.cjs +23 -0
  101. package/cjs/refractor/visitors/open-api-2/schema/ItemsVisitor.cjs +31 -0
  102. package/cjs/refractor/visitors/open-api-2/schema/PropertiesVisitor.cjs +23 -0
  103. package/cjs/refractor/visitors/open-api-2/schema/SchemaOrJSONReferenceVisitor.cjs +23 -0
  104. package/cjs/refractor/visitors/open-api-2/schema/index.cjs +20 -0
  105. package/cjs/refractor/visitors/open-api-2/scopes/index.cjs +20 -0
  106. package/cjs/refractor/visitors/open-api-2/security-definitions/index.cjs +19 -0
  107. package/cjs/refractor/visitors/open-api-2/security-requirement/index.cjs +19 -0
  108. package/cjs/refractor/visitors/open-api-2/security-scheme/index.cjs +20 -0
  109. package/cjs/refractor/visitors/open-api-2/tag/index.cjs +20 -0
  110. package/cjs/refractor/visitors/open-api-2/xml/index.cjs +20 -0
  111. package/cjs/traversal/visitor.cjs +53 -0
  112. package/dist/apidom-ns-openapi-2.browser.js +25296 -0
  113. package/dist/apidom-ns-openapi-2.browser.min.js +1 -0
  114. package/es/elements/Contact.mjs +26 -0
  115. package/es/elements/Definitions.mjs +8 -0
  116. package/es/elements/Example.mjs +8 -0
  117. package/es/elements/ExternalDocumentation.mjs +20 -0
  118. package/es/elements/Header.mjs +182 -0
  119. package/es/elements/Headers.mjs +8 -0
  120. package/es/elements/Info.mjs +45 -0
  121. package/es/elements/Items.mjs +187 -0
  122. package/es/elements/License.mjs +20 -0
  123. package/es/elements/Operation.mjs +71 -0
  124. package/es/elements/Parameter.mjs +226 -0
  125. package/es/elements/ParametersDefinitions.mjs +8 -0
  126. package/es/elements/PathItem.mjs +62 -0
  127. package/es/elements/Paths.mjs +8 -0
  128. package/es/elements/Reference.mjs +15 -0
  129. package/es/elements/Response.mjs +32 -0
  130. package/es/elements/Responses.mjs +14 -0
  131. package/es/elements/ResponsesDefinitions.mjs +8 -0
  132. package/es/elements/Schema.mjs +113 -0
  133. package/es/elements/Scopes.mjs +8 -0
  134. package/es/elements/SecurityDefinitions.mjs +8 -0
  135. package/es/elements/SecurityRequirement.mjs +8 -0
  136. package/es/elements/SecurityScheme.mjs +56 -0
  137. package/es/elements/Swagger.mjs +99 -0
  138. package/es/elements/SwaggerVersion.mjs +10 -0
  139. package/es/elements/Tag.mjs +26 -0
  140. package/es/elements/Xml.mjs +38 -0
  141. package/es/elements/nces/OperationConsumes.mjs +9 -0
  142. package/es/elements/nces/OperationParameters.mjs +10 -0
  143. package/es/elements/nces/OperationProduces.mjs +9 -0
  144. package/es/elements/nces/OperationSchemes.mjs +9 -0
  145. package/es/elements/nces/OperationSecurity.mjs +10 -0
  146. package/es/elements/nces/OperationTags.mjs +9 -0
  147. package/es/elements/nces/PathItemParameters.mjs +10 -0
  148. package/es/elements/nces/SwaggerConsumes.mjs +9 -0
  149. package/es/elements/nces/SwaggerProduces.mjs +9 -0
  150. package/es/elements/nces/SwaggerSchemes.mjs +9 -0
  151. package/es/elements/nces/SwaggerSecurity.mjs +10 -0
  152. package/es/elements/nces/SwaggerTags.mjs +9 -0
  153. package/es/index.mjs +31 -0
  154. package/es/media-types.mjs +18 -0
  155. package/es/namespace.mjs +63 -0
  156. package/es/predicates.mjs +217 -0
  157. package/es/refractor/index.mjs +41 -0
  158. package/es/refractor/plugins/replace-empty-element.mjs +357 -0
  159. package/es/refractor/predicates.mjs +8 -0
  160. package/es/refractor/registration.mjs +56 -0
  161. package/es/refractor/specification.mjs +482 -0
  162. package/es/refractor/toolbox.mjs +17 -0
  163. package/es/refractor/visitors/FallbackVisitor.mjs +18 -0
  164. package/es/refractor/visitors/SpecificationExtensionVisitor.mjs +13 -0
  165. package/es/refractor/visitors/SpecificationVisitor.mjs +82 -0
  166. package/es/refractor/visitors/Visitor.mjs +17 -0
  167. package/es/refractor/visitors/generics/AlternatingVisitor.mjs +22 -0
  168. package/es/refractor/visitors/generics/FixedFieldsVisitor.mjs +51 -0
  169. package/es/refractor/visitors/generics/MapVisitor.mjs +9 -0
  170. package/es/refractor/visitors/generics/MixedFieldsVisitor.mjs +37 -0
  171. package/es/refractor/visitors/generics/PatternedFieldsVisitor.mjs +53 -0
  172. package/es/refractor/visitors/open-api-2/ConsumesVisitor.mjs +16 -0
  173. package/es/refractor/visitors/open-api-2/ProducesVisitor.mjs +16 -0
  174. package/es/refractor/visitors/open-api-2/SchemesVisitor.mjs +16 -0
  175. package/es/refractor/visitors/open-api-2/SecurityVisitor.mjs +22 -0
  176. package/es/refractor/visitors/open-api-2/SwaggerVisitor.mjs +16 -0
  177. package/es/refractor/visitors/open-api-2/TagsVisitor.mjs +22 -0
  178. package/es/refractor/visitors/open-api-2/contact/index.mjs +15 -0
  179. package/es/refractor/visitors/open-api-2/definitions/index.mjs +28 -0
  180. package/es/refractor/visitors/open-api-2/example/index.mjs +15 -0
  181. package/es/refractor/visitors/open-api-2/external-documentation/index.mjs +15 -0
  182. package/es/refractor/visitors/open-api-2/header/index.mjs +15 -0
  183. package/es/refractor/visitors/open-api-2/headers/index.mjs +15 -0
  184. package/es/refractor/visitors/open-api-2/index.mjs +15 -0
  185. package/es/refractor/visitors/open-api-2/info/VersionVisitor.mjs +14 -0
  186. package/es/refractor/visitors/open-api-2/info/index.mjs +15 -0
  187. package/es/refractor/visitors/open-api-2/items/index.mjs +15 -0
  188. package/es/refractor/visitors/open-api-2/license/index.mjs +15 -0
  189. package/es/refractor/visitors/open-api-2/operation/ConsumesVisitor.mjs +16 -0
  190. package/es/refractor/visitors/open-api-2/operation/ParametersVisitor.mjs +27 -0
  191. package/es/refractor/visitors/open-api-2/operation/ProducesVisitor.mjs +16 -0
  192. package/es/refractor/visitors/open-api-2/operation/SchemesVisitor.mjs +16 -0
  193. package/es/refractor/visitors/open-api-2/operation/SecurityVisitor.mjs +22 -0
  194. package/es/refractor/visitors/open-api-2/operation/TagsVisitor.mjs +16 -0
  195. package/es/refractor/visitors/open-api-2/operation/index.mjs +14 -0
  196. package/es/refractor/visitors/open-api-2/parameter/index.mjs +15 -0
  197. package/es/refractor/visitors/open-api-2/parameters-definitions/index.mjs +14 -0
  198. package/es/refractor/visitors/open-api-2/path-item/$RefVisitor.mjs +13 -0
  199. package/es/refractor/visitors/open-api-2/path-item/ParametersVisitor.mjs +27 -0
  200. package/es/refractor/visitors/open-api-2/path-item/index.mjs +35 -0
  201. package/es/refractor/visitors/open-api-2/paths/index.mjs +30 -0
  202. package/es/refractor/visitors/open-api-2/reference/$RefVisitor.mjs +13 -0
  203. package/es/refractor/visitors/open-api-2/reference/index.mjs +28 -0
  204. package/es/refractor/visitors/open-api-2/response/index.mjs +15 -0
  205. package/es/refractor/visitors/open-api-2/responses/DefaultVisitor.mjs +32 -0
  206. package/es/refractor/visitors/open-api-2/responses/index.mjs +41 -0
  207. package/es/refractor/visitors/open-api-2/responses-definitions/index.mjs +14 -0
  208. package/es/refractor/visitors/open-api-2/schema/AllOfVisitor.mjs +18 -0
  209. package/es/refractor/visitors/open-api-2/schema/ItemsVisitor.mjs +26 -0
  210. package/es/refractor/visitors/open-api-2/schema/PropertiesVisitor.mjs +18 -0
  211. package/es/refractor/visitors/open-api-2/schema/SchemaOrJSONReferenceVisitor.mjs +18 -0
  212. package/es/refractor/visitors/open-api-2/schema/index.mjs +15 -0
  213. package/es/refractor/visitors/open-api-2/scopes/index.mjs +15 -0
  214. package/es/refractor/visitors/open-api-2/security-definitions/index.mjs +14 -0
  215. package/es/refractor/visitors/open-api-2/security-requirement/index.mjs +14 -0
  216. package/es/refractor/visitors/open-api-2/security-scheme/index.mjs +15 -0
  217. package/es/refractor/visitors/open-api-2/tag/index.mjs +15 -0
  218. package/es/refractor/visitors/open-api-2/xml/index.mjs +15 -0
  219. package/es/traversal/visitor.mjs +50 -0
  220. package/package.json +64 -0
  221. package/types/dist.d.ts +1143 -0
@@ -0,0 +1,357 @@
1
+ import { MemberElement, ArrayElement, ObjectElement, isStringElement, includesClasses, isArrayElement, cloneDeep, toValue } from '@swagger-api/apidom-core';
2
+
3
+ /**
4
+ * OpenAPI 2.0 specification elements.
5
+ */
6
+ import InfoElement from "../../elements/Info.mjs";
7
+ import ContactElement from "../../elements/Contact.mjs";
8
+ import LicenseElement from "../../elements/License.mjs";
9
+ import PathsElement from "../../elements/Paths.mjs";
10
+ import PathItemElement from "../../elements/PathItem.mjs";
11
+ import OperationElement from "../../elements/Operation.mjs";
12
+ import ExternalDocumentationElement from "../../elements/ExternalDocumentation.mjs";
13
+ import ParameterElement from "../../elements/Parameter.mjs";
14
+ import ItemsElement from "../../elements/Items.mjs";
15
+ import ResponsesElement from "../../elements/Responses.mjs";
16
+ import ResponseElement from "../../elements/Response.mjs";
17
+ import HeadersElement from "../../elements/Headers.mjs";
18
+ import ExampleElement from "../../elements/Example.mjs";
19
+ import HeaderElement from "../../elements/Header.mjs";
20
+ import TagElement from "../../elements/Tag.mjs";
21
+ import SchemaElement from "../../elements/Schema.mjs";
22
+ import XmlElement from "../../elements/Xml.mjs";
23
+ import DefinitionsElement from "../../elements/Definitions.mjs";
24
+ import ParametersDefinitionsElement from "../../elements/ParametersDefinitions.mjs";
25
+ import ResponsesDefinitionsElement from "../../elements/ResponsesDefinitions.mjs";
26
+ import SecurityDefinitionsElement from "../../elements/SecurityDefinitions.mjs";
27
+ import SecuritySchemeElement from "../../elements/SecurityScheme.mjs";
28
+ import ScopesElement from "../../elements/Scopes.mjs";
29
+ import SecurityRequirementElement from "../../elements/SecurityRequirement.mjs"; // non-concrete Elements (NCEs)
30
+ import OperationConsumesElement from "../../elements/nces/OperationConsumes.mjs";
31
+ import OperationParametersElement from "../../elements/nces/OperationParameters.mjs";
32
+ import OperationProducesElement from "../../elements/nces/OperationProduces.mjs";
33
+ import OperationSchemesElement from "../../elements/nces/OperationSchemes.mjs";
34
+ import OperationSecurityElement from "../../elements/nces/OperationSecurity.mjs";
35
+ import OperationTagsElement from "../../elements/nces/OperationTags.mjs";
36
+ import PathItemParametersElement from "../../elements/nces/PathItemParameters.mjs";
37
+ import SwaggerSchemesElement from "../../elements/nces/SwaggerSchemes.mjs";
38
+ import SwaggerConsumesElement from "../../elements/nces/SwaggerConsumes.mjs";
39
+ import SwaggerProducesElement from "../../elements/nces/SwaggerProduces.mjs";
40
+ import SwaggerSecurityElement from "../../elements/nces/SwaggerSecurity.mjs";
41
+ import SwaggerTagsElement from "../../elements/nces/SwaggerTags.mjs";
42
+ import { getNodeType } from "../../traversal/visitor.mjs";
43
+ /**
44
+ * This plugin is specific to YAML 1.2 format, which allows defining key-value pairs
45
+ * with empty key, empty value, or both. If the value is not provided in YAML format,
46
+ * this plugin compensates for this missing value with the most appropriate semantic element type.
47
+ *
48
+ * https://yaml.org/spec/1.2.2/#72-empty-nodes
49
+ *
50
+ * @example
51
+ *
52
+ * ```yaml
53
+ * swagger: "2.0"
54
+ * info:
55
+ * ```
56
+ * Refracting result without this plugin:
57
+ *
58
+ * (SwaggerElement
59
+ * (MemberElement
60
+ * (StringElement)
61
+ * (SwaggerVersionElement))
62
+ * (MemberElement
63
+ * (StringElement)
64
+ * (StringElement))
65
+ *
66
+ * Refracting result with this plugin:
67
+ *
68
+ * (SwaggerElement
69
+ * (MemberElement
70
+ * (StringElement)
71
+ * (SwaggerVersionElement))
72
+ * (MemberElement
73
+ * (StringElement)
74
+ * (InfoElement))
75
+ */
76
+ const isEmptyElement = element => isStringElement(element) && includesClasses(['yaml-e-node', 'yaml-e-scalar'], element);
77
+ const schema = {
78
+ // concrete types handling (CTs)
79
+ SwaggerElement: {
80
+ info(...args) {
81
+ return new InfoElement(...args);
82
+ },
83
+ schemes(...args) {
84
+ return new SwaggerSchemesElement(...args);
85
+ },
86
+ consumes(...args) {
87
+ return new SwaggerConsumesElement(...args);
88
+ },
89
+ produces(...args) {
90
+ return new SwaggerProducesElement(...args);
91
+ },
92
+ paths(...args) {
93
+ return new PathsElement(...args);
94
+ },
95
+ definitions(...args) {
96
+ return new DefinitionsElement(...args);
97
+ },
98
+ parameters(...args) {
99
+ return new ParametersDefinitionsElement(...args);
100
+ },
101
+ responses(...args) {
102
+ return new ResponsesDefinitionsElement(...args);
103
+ },
104
+ securityDefinitions(...args) {
105
+ return new SecurityDefinitionsElement(...args);
106
+ },
107
+ security(...args) {
108
+ return new SwaggerSecurityElement(...args);
109
+ },
110
+ tags(...args) {
111
+ return new SwaggerTagsElement(...args);
112
+ },
113
+ externalDocs(...args) {
114
+ return new ExternalDocumentationElement(...args);
115
+ }
116
+ },
117
+ InfoElement: {
118
+ contact(...args) {
119
+ return new ContactElement(...args);
120
+ },
121
+ license(...args) {
122
+ return new LicenseElement(...args);
123
+ }
124
+ },
125
+ PathsElement: {
126
+ '[key: *]': function key(...args) {
127
+ return new PathItemElement(...args);
128
+ }
129
+ },
130
+ PathItemElement: {
131
+ get(...args) {
132
+ return new OperationElement(...args);
133
+ },
134
+ put(...args) {
135
+ return new OperationElement(...args);
136
+ },
137
+ post(...args) {
138
+ return new OperationElement(...args);
139
+ },
140
+ delete(...args) {
141
+ return new OperationElement(...args);
142
+ },
143
+ options(...args) {
144
+ return new OperationElement(...args);
145
+ },
146
+ head(...args) {
147
+ return new OperationElement(...args);
148
+ },
149
+ patch(...args) {
150
+ return new OperationElement(...args);
151
+ },
152
+ parameters(...args) {
153
+ return new PathItemParametersElement(...args);
154
+ }
155
+ },
156
+ OperationElement: {
157
+ tags(...args) {
158
+ return new OperationTagsElement(...args);
159
+ },
160
+ externalDocs(...args) {
161
+ return new ExternalDocumentationElement(...args);
162
+ },
163
+ consumes(...args) {
164
+ return new OperationConsumesElement(...args);
165
+ },
166
+ produces(...args) {
167
+ return new OperationProducesElement(...args);
168
+ },
169
+ parameters(...args) {
170
+ return new OperationParametersElement(...args);
171
+ },
172
+ responses(...args) {
173
+ return new ResponsesElement(...args);
174
+ },
175
+ schemes(...args) {
176
+ return new OperationSchemesElement(...args);
177
+ },
178
+ security(...args) {
179
+ return new OperationSecurityElement(...args);
180
+ }
181
+ },
182
+ ParameterElement: {
183
+ schema(...args) {
184
+ return new SchemaElement(...args);
185
+ },
186
+ items(...args) {
187
+ return new ItemsElement(...args);
188
+ }
189
+ },
190
+ ItemsElement: {
191
+ items(...args) {
192
+ return new ItemsElement(...args);
193
+ }
194
+ },
195
+ ResponsesElement: {
196
+ '[key: *]': function key(...args) {
197
+ return new ResponseElement(...args);
198
+ }
199
+ },
200
+ ResponseElement: {
201
+ schema(...args) {
202
+ return new SchemaElement(...args);
203
+ },
204
+ headers(...args) {
205
+ return new HeadersElement(...args);
206
+ },
207
+ examples(...args) {
208
+ return new ExampleElement(...args);
209
+ }
210
+ },
211
+ HeadersElement: {
212
+ '[key: *]': function key(...args) {
213
+ return new HeaderElement(...args);
214
+ }
215
+ },
216
+ HeaderElement: {
217
+ items(...args) {
218
+ return new ItemsElement(...args);
219
+ }
220
+ },
221
+ TagElement: {
222
+ externalDocs(...args) {
223
+ return new ExternalDocumentationElement(...args);
224
+ }
225
+ },
226
+ SchemaElement: {
227
+ items(...args) {
228
+ return new SchemaElement(...args);
229
+ },
230
+ allOf(...args) {
231
+ const element = new ArrayElement(...args);
232
+ element.classes.push('json-schema-allOf');
233
+ return element;
234
+ },
235
+ properties(...args) {
236
+ const element = new ObjectElement(...args);
237
+ element.classes.push('json-schema-properties');
238
+ return element;
239
+ },
240
+ additionalProperties(...args) {
241
+ return new SchemaElement(...args);
242
+ },
243
+ xml(...args) {
244
+ return new XmlElement(...args);
245
+ },
246
+ externalDocs(...args) {
247
+ return new ExternalDocumentationElement(...args);
248
+ }
249
+ },
250
+ DefinitionsElement: {
251
+ '[key: *]': function key(...args) {
252
+ return new SchemaElement(...args);
253
+ }
254
+ },
255
+ ParametersDefinitionsElement: {
256
+ '[key: *]': function key(...args) {
257
+ return new ParameterElement(...args);
258
+ }
259
+ },
260
+ ResponsesDefinitionsElement: {
261
+ '[key: *]': function key(...args) {
262
+ return new ResponseElement(...args);
263
+ }
264
+ },
265
+ SecurityDefinitionsElement: {
266
+ '[key: *]': function key(...args) {
267
+ return new SecuritySchemeElement(...args);
268
+ }
269
+ },
270
+ SecuritySchemeElement: {
271
+ scopes(...args) {
272
+ return new ScopesElement(...args);
273
+ }
274
+ },
275
+ SecurityRequirementElement: {
276
+ '[key: *]': function key(...args) {
277
+ return new ArrayElement(...args);
278
+ }
279
+ },
280
+ // non-concrete types handling (NCEs)
281
+ [OperationParametersElement.primaryClass]: {
282
+ '<*>': function asterisk(...args) {
283
+ return new ParameterElement(...args);
284
+ }
285
+ },
286
+ [OperationSecurityElement.primaryClass]: {
287
+ '<*>': function asterisk(...args) {
288
+ return new SecurityRequirementElement(...args);
289
+ }
290
+ },
291
+ [PathItemParametersElement.primaryClass]: {
292
+ '<*>': function asterisk(...args) {
293
+ return new ParameterElement(...args);
294
+ }
295
+ },
296
+ [SwaggerSecurityElement.primaryClass]: {
297
+ '<*>': function asterisk(...args) {
298
+ return new SecurityRequirementElement(...args);
299
+ }
300
+ },
301
+ [SwaggerTagsElement.primaryClass]: {
302
+ '<*>': function asterisk(...args) {
303
+ return new TagElement(...args);
304
+ }
305
+ },
306
+ 'json-schema-properties': {
307
+ '[key: *]': function key(...args) {
308
+ return new SchemaElement(...args);
309
+ }
310
+ },
311
+ 'json-schema-allOf': {
312
+ '<*>': function asterisk(...args) {
313
+ return new SchemaElement(...args);
314
+ }
315
+ }
316
+ };
317
+ const findElementFactory = (ancestor, keyName) => {
318
+ const elementType = getNodeType(ancestor); // @ts-ignore
319
+ const keyMapping = schema[elementType] || schema[toValue(ancestor.classes.first)];
320
+ return typeof keyMapping === 'undefined' ? undefined : Object.prototype.hasOwnProperty.call(keyMapping, '[key: *]') ? keyMapping['[key: *]'] : keyMapping[keyName];
321
+ };
322
+ const plugin = () => () => {
323
+ return {
324
+ visitor: {
325
+ MemberElement(element, ...rest) {
326
+ // no empty Element, continue with next one
327
+ if (!isEmptyElement(element.value)) return undefined;
328
+ const [,,, ancestors] = rest;
329
+ const ancestor = ancestors.at(-1);
330
+ const elementFactory = findElementFactory(ancestor, toValue(element.key));
331
+
332
+ // no element factory found
333
+ if (typeof elementFactory === 'undefined') return undefined;
334
+ const originalValue = element.value;
335
+ return new MemberElement(element.key, elementFactory.call({
336
+ context: ancestor
337
+ }, undefined, cloneDeep(originalValue.meta), cloneDeep(originalValue.attributes)), cloneDeep(element.meta), cloneDeep(element.attributes));
338
+ },
339
+ StringElement(element, ...rest) {
340
+ if (!isEmptyElement(element)) return undefined;
341
+ const [,,, ancestors] = rest;
342
+ const ancestor = ancestors.at(-1);
343
+
344
+ // we're only interested in empty elements in ArrayElements
345
+ if (!isArrayElement(ancestor)) return undefined;
346
+ const elementFactory = findElementFactory(ancestor, '<*>');
347
+
348
+ // no element factory found
349
+ if (typeof elementFactory === 'undefined') return undefined;
350
+ return elementFactory.call({
351
+ context: element
352
+ }, undefined, cloneDeep(element.meta), cloneDeep(element.attributes));
353
+ }
354
+ }
355
+ };
356
+ };
357
+ export default plugin;
@@ -0,0 +1,8 @@
1
+ import { startsWith } from 'ramda';
2
+ import { isStringElement, toValue, isObjectElement } from '@swagger-api/apidom-core';
3
+ export const isSwaggerExtension = element => {
4
+ return isStringElement(element.key) && startsWith('x-', toValue(element.key));
5
+ };
6
+ export const isReferenceLikeElement = element => {
7
+ return isObjectElement(element) && element.hasKey('$ref');
8
+ };
@@ -0,0 +1,56 @@
1
+ import SwaggerElement from "../elements/Swagger.mjs";
2
+ import SwaggerVersionElement from "../elements/SwaggerVersion.mjs";
3
+ import InfoElement from "../elements/Info.mjs";
4
+ import ContactElement from "../elements/Contact.mjs";
5
+ import LicenseElement from "../elements/License.mjs";
6
+ import PathsElement from "../elements/Paths.mjs";
7
+ import PathItemElement from "../elements/PathItem.mjs";
8
+ import OperationElement from "../elements/Operation.mjs";
9
+ import ExternalDocumentationElement from "../elements/ExternalDocumentation.mjs";
10
+ import ParameterElement from "../elements/Parameter.mjs";
11
+ import ItemsElement from "../elements/Items.mjs";
12
+ import ResponsesElement from "../elements/Responses.mjs";
13
+ import ResponseElement from "../elements/Response.mjs";
14
+ import HeadersElement from "../elements/Headers.mjs";
15
+ import ExampleElement from "../elements/Example.mjs";
16
+ import HeaderElement from "../elements/Header.mjs";
17
+ import TagElement from "../elements/Tag.mjs";
18
+ import ReferenceElement from "../elements/Reference.mjs";
19
+ import SchemaElement from "../elements/Schema.mjs";
20
+ import XmlElement from "../elements/Xml.mjs";
21
+ import DefinitionsElement from "../elements/Definitions.mjs";
22
+ import ParametersDefinitionsElement from "../elements/ParametersDefinitions.mjs";
23
+ import ResponsesDefinitionsElement from "../elements/ResponsesDefinitions.mjs";
24
+ import SecurityDefinitionsElement from "../elements/SecurityDefinitions.mjs";
25
+ import SecuritySchemeElement from "../elements/SecurityScheme.mjs";
26
+ import ScopesElement from "../elements/Scopes.mjs";
27
+ import SecurityRequirementElement from "../elements/SecurityRequirement.mjs";
28
+ import { createRefractor } from "./index.mjs"; // register refractors specific to element types
29
+ SwaggerElement.refract = createRefractor(['visitors', 'document', 'objects', 'Swagger', '$visitor']);
30
+ SwaggerVersionElement.refract = createRefractor(['visitors', 'document', 'objects', 'SwaggerVersion', '$visitor']);
31
+ InfoElement.refract = createRefractor(['visitors', 'document', 'objects', 'Info', '$visitor']);
32
+ ContactElement.refract = createRefractor(['visitors', 'document', 'objects', 'Contact', '$visitor']);
33
+ LicenseElement.refract = createRefractor(['visitors', 'document', 'objects', 'License', '$visitor']);
34
+ PathsElement.refract = createRefractor(['visitors', 'document', 'objects', 'Paths', '$visitor']);
35
+ PathItemElement.refract = createRefractor(['visitors', 'document', 'objects', 'PathItem', '$visitor']);
36
+ OperationElement.refract = createRefractor(['visitors', 'document', 'objects', 'Operation', '$visitor']);
37
+ ExternalDocumentationElement.refract = createRefractor(['visitors', 'document', 'objects', 'ExternalDocumentation', '$visitor']);
38
+ ParameterElement.refract = createRefractor(['visitors', 'document', 'objects', 'Parameter', '$visitor']);
39
+ ItemsElement.refract = createRefractor(['visitors', 'document', 'objects', 'Items', '$visitor']);
40
+ ResponsesElement.refract = createRefractor(['visitors', 'document', 'objects', 'Responses', '$visitor']);
41
+ ResponseElement.refract = createRefractor(['visitors', 'document', 'objects', 'Response', '$visitor']);
42
+ HeadersElement.refract = createRefractor(['visitors', 'document', 'objects', 'Headers', '$visitor']);
43
+ ExampleElement.refract = createRefractor(['visitors', 'document', 'objects', 'Example', '$visitor']);
44
+ HeaderElement.refract = createRefractor(['visitors', 'document', 'objects', 'Header', '$visitor']);
45
+ TagElement.refract = createRefractor(['visitors', 'document', 'objects', 'Tag', '$visitor']);
46
+ ReferenceElement.refract = createRefractor(['visitors', 'document', 'objects', 'Reference', '$visitor']);
47
+ SchemaElement.refract = createRefractor(['visitors', 'document', 'objects', 'Schema', '$visitor']);
48
+ XmlElement.refract = createRefractor(['visitors', 'document', 'objects', 'XML', '$visitor']);
49
+ DefinitionsElement.refract = createRefractor(['visitors', 'document', 'objects', 'Definitions', '$visitor']);
50
+ ParametersDefinitionsElement.refract = createRefractor(['visitors', 'document', 'objects', 'ParametersDefinitions', '$visitor']);
51
+ ResponsesDefinitionsElement.refract = createRefractor(['visitors', 'document', 'objects', 'ResponsesDefinitions', '$visitor']);
52
+ SecurityDefinitionsElement.refract = createRefractor(['visitors', 'document', 'objects', 'SecurityDefinitions', '$visitor']);
53
+ SecuritySchemeElement.refract = createRefractor(['visitors', 'document', 'objects', 'SecurityScheme', '$visitor']);
54
+ ScopesElement.refract = createRefractor(['visitors', 'document', 'objects', 'Scopes', '$visitor']);
55
+ SecurityRequirementElement.refract = createRefractor(['visitors', 'document', 'objects', 'SecurityRequirement', '$visitor']);
56
+ export { SwaggerElement, SwaggerVersionElement, InfoElement, ContactElement, LicenseElement, PathsElement, PathItemElement, OperationElement, ExternalDocumentationElement, ParameterElement, ItemsElement, ResponsesElement, ResponseElement, HeadersElement, ExampleElement, HeaderElement, TagElement, ReferenceElement, SchemaElement, XmlElement, DefinitionsElement, ParametersDefinitionsElement, ResponsesDefinitionsElement, SecurityDefinitionsElement, SecuritySchemeElement, ScopesElement, SecurityRequirementElement };