@speclynx/apidom-ns-openapi-2 1.12.2 → 2.1.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 (222) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/NOTICE +16 -7
  3. package/README.md +18 -13
  4. package/dist/apidom-ns-openapi-2.browser.js +15352 -12648
  5. package/dist/apidom-ns-openapi-2.browser.min.js +1 -1
  6. package/package.json +10 -9
  7. package/src/elements/Contact.cjs +2 -2
  8. package/src/elements/Contact.mjs +1 -1
  9. package/src/elements/Definitions.cjs +2 -2
  10. package/src/elements/Definitions.mjs +1 -1
  11. package/src/elements/Example.cjs +2 -2
  12. package/src/elements/Example.mjs +1 -1
  13. package/src/elements/ExternalDocumentation.cjs +2 -2
  14. package/src/elements/ExternalDocumentation.mjs +1 -1
  15. package/src/elements/Header.cjs +10 -10
  16. package/src/elements/Header.mjs +10 -10
  17. package/src/elements/Headers.cjs +2 -2
  18. package/src/elements/Headers.mjs +1 -1
  19. package/src/elements/Info.cjs +2 -2
  20. package/src/elements/Info.mjs +1 -1
  21. package/src/elements/Items.cjs +10 -10
  22. package/src/elements/Items.mjs +10 -10
  23. package/src/elements/License.cjs +2 -2
  24. package/src/elements/License.mjs +1 -1
  25. package/src/elements/Operation.cjs +3 -3
  26. package/src/elements/Operation.mjs +1 -1
  27. package/src/elements/Parameter.cjs +11 -11
  28. package/src/elements/Parameter.mjs +11 -11
  29. package/src/elements/ParametersDefinitions.cjs +2 -2
  30. package/src/elements/ParametersDefinitions.mjs +1 -1
  31. package/src/elements/PathItem.cjs +23 -23
  32. package/src/elements/PathItem.mjs +22 -22
  33. package/src/elements/Paths.cjs +2 -2
  34. package/src/elements/Paths.mjs +1 -1
  35. package/src/elements/Reference.cjs +2 -2
  36. package/src/elements/Reference.mjs +1 -1
  37. package/src/elements/Response.cjs +2 -2
  38. package/src/elements/Response.mjs +1 -1
  39. package/src/elements/Responses.cjs +2 -2
  40. package/src/elements/Responses.mjs +1 -1
  41. package/src/elements/ResponsesDefinitions.cjs +2 -2
  42. package/src/elements/ResponsesDefinitions.mjs +1 -1
  43. package/src/elements/Schema.cjs +43 -8
  44. package/src/elements/Schema.mjs +43 -9
  45. package/src/elements/Scopes.cjs +2 -2
  46. package/src/elements/Scopes.mjs +1 -1
  47. package/src/elements/SecurityDefinitions.cjs +2 -2
  48. package/src/elements/SecurityDefinitions.mjs +1 -1
  49. package/src/elements/SecurityRequirement.cjs +2 -2
  50. package/src/elements/SecurityRequirement.mjs +1 -1
  51. package/src/elements/SecurityScheme.cjs +2 -2
  52. package/src/elements/SecurityScheme.mjs +1 -1
  53. package/src/elements/Swagger.cjs +2 -2
  54. package/src/elements/Swagger.mjs +1 -1
  55. package/src/elements/SwaggerVersion.cjs +2 -2
  56. package/src/elements/SwaggerVersion.mjs +1 -1
  57. package/src/elements/Tag.cjs +2 -2
  58. package/src/elements/Tag.mjs +1 -1
  59. package/src/elements/Xml.cjs +2 -2
  60. package/src/elements/Xml.mjs +1 -1
  61. package/src/elements/nces/OperationConsumes.cjs +2 -2
  62. package/src/elements/nces/OperationConsumes.mjs +1 -1
  63. package/src/elements/nces/OperationParameters.cjs +2 -2
  64. package/src/elements/nces/OperationParameters.mjs +1 -1
  65. package/src/elements/nces/OperationProduces.cjs +2 -2
  66. package/src/elements/nces/OperationProduces.mjs +1 -1
  67. package/src/elements/nces/OperationSchemes.cjs +2 -2
  68. package/src/elements/nces/OperationSchemes.mjs +1 -1
  69. package/src/elements/nces/OperationSecurity.cjs +2 -2
  70. package/src/elements/nces/OperationSecurity.mjs +1 -1
  71. package/src/elements/nces/OperationTags.cjs +2 -2
  72. package/src/elements/nces/OperationTags.mjs +1 -1
  73. package/src/elements/nces/PathItemParameters.cjs +2 -2
  74. package/src/elements/nces/PathItemParameters.mjs +1 -1
  75. package/src/elements/nces/SwaggerConsumes.cjs +2 -2
  76. package/src/elements/nces/SwaggerConsumes.mjs +1 -1
  77. package/src/elements/nces/SwaggerProduces.cjs +2 -2
  78. package/src/elements/nces/SwaggerProduces.mjs +1 -1
  79. package/src/elements/nces/SwaggerSchemes.cjs +2 -2
  80. package/src/elements/nces/SwaggerSchemes.mjs +1 -1
  81. package/src/elements/nces/SwaggerSecurity.cjs +2 -2
  82. package/src/elements/nces/SwaggerSecurity.mjs +1 -1
  83. package/src/elements/nces/SwaggerTags.cjs +2 -2
  84. package/src/elements/nces/SwaggerTags.mjs +1 -1
  85. package/src/index.cjs +65 -45
  86. package/src/index.mjs +6 -5
  87. package/src/namespace.mjs +2 -2
  88. package/src/predicates.cjs +54 -190
  89. package/src/predicates.mjs +27 -190
  90. package/src/refractor/index.cjs +279 -17
  91. package/src/refractor/index.mjs +251 -16
  92. package/src/refractor/inspect.cjs +157 -0
  93. package/src/refractor/inspect.mjs +126 -0
  94. package/src/refractor/plugins/replace-empty-element.cjs +20 -14
  95. package/src/refractor/plugins/replace-empty-element.mjs +14 -8
  96. package/src/refractor/predicates.cjs +3 -2
  97. package/src/refractor/predicates.mjs +2 -1
  98. package/src/refractor/specification.cjs +41 -12
  99. package/src/refractor/specification.mjs +41 -12
  100. package/src/refractor/toolbox.cjs +8 -3
  101. package/src/refractor/toolbox.mjs +6 -2
  102. package/src/refractor/visitors/FallbackVisitor.cjs +4 -4
  103. package/src/refractor/visitors/FallbackVisitor.mjs +4 -4
  104. package/src/refractor/visitors/SpecificationExtensionVisitor.cjs +4 -4
  105. package/src/refractor/visitors/SpecificationExtensionVisitor.mjs +4 -4
  106. package/src/refractor/visitors/SpecificationVisitor.cjs +4 -3
  107. package/src/refractor/visitors/SpecificationVisitor.mjs +3 -2
  108. package/src/refractor/visitors/Visitor.cjs +10 -8
  109. package/src/refractor/visitors/Visitor.mjs +11 -9
  110. package/src/refractor/visitors/generics/AlternatingVisitor.cjs +3 -3
  111. package/src/refractor/visitors/generics/AlternatingVisitor.mjs +3 -3
  112. package/src/refractor/visitors/generics/FixedFieldsVisitor.cjs +10 -7
  113. package/src/refractor/visitors/generics/FixedFieldsVisitor.mjs +9 -6
  114. package/src/refractor/visitors/generics/MixedFieldsVisitor.cjs +13 -6
  115. package/src/refractor/visitors/generics/MixedFieldsVisitor.mjs +13 -6
  116. package/src/refractor/visitors/generics/PatternedFieldsVisitor.cjs +9 -6
  117. package/src/refractor/visitors/generics/PatternedFieldsVisitor.mjs +8 -5
  118. package/src/refractor/visitors/open-api-2/BasePathVisitor.cjs +2 -3
  119. package/src/refractor/visitors/open-api-2/BasePathVisitor.mjs +2 -3
  120. package/src/refractor/visitors/open-api-2/ConsumesVisitor.cjs +5 -4
  121. package/src/refractor/visitors/open-api-2/ConsumesVisitor.mjs +4 -3
  122. package/src/refractor/visitors/open-api-2/HostVisitor.cjs +2 -3
  123. package/src/refractor/visitors/open-api-2/HostVisitor.mjs +2 -3
  124. package/src/refractor/visitors/open-api-2/ProducesVisitor.cjs +5 -4
  125. package/src/refractor/visitors/open-api-2/ProducesVisitor.mjs +4 -3
  126. package/src/refractor/visitors/open-api-2/SchemesVisitor.cjs +5 -4
  127. package/src/refractor/visitors/open-api-2/SchemesVisitor.mjs +4 -3
  128. package/src/refractor/visitors/open-api-2/SecurityVisitor.cjs +5 -11
  129. package/src/refractor/visitors/open-api-2/SecurityVisitor.mjs +5 -10
  130. package/src/refractor/visitors/open-api-2/SwaggerVisitor.cjs +5 -10
  131. package/src/refractor/visitors/open-api-2/SwaggerVisitor.mjs +6 -10
  132. package/src/refractor/visitors/open-api-2/TagsVisitor.cjs +5 -11
  133. package/src/refractor/visitors/open-api-2/TagsVisitor.mjs +5 -10
  134. package/src/refractor/visitors/open-api-2/bases.cjs +72 -0
  135. package/src/refractor/visitors/open-api-2/bases.mjs +67 -0
  136. package/src/refractor/visitors/open-api-2/contact/index.cjs +2 -8
  137. package/src/refractor/visitors/open-api-2/contact/index.mjs +2 -7
  138. package/src/refractor/visitors/open-api-2/definitions/index.cjs +5 -12
  139. package/src/refractor/visitors/open-api-2/definitions/index.mjs +5 -11
  140. package/src/refractor/visitors/open-api-2/example/index.cjs +2 -8
  141. package/src/refractor/visitors/open-api-2/example/index.mjs +2 -7
  142. package/src/refractor/visitors/open-api-2/external-documentation/index.cjs +2 -8
  143. package/src/refractor/visitors/open-api-2/external-documentation/index.mjs +2 -7
  144. package/src/refractor/visitors/open-api-2/header/index.cjs +2 -8
  145. package/src/refractor/visitors/open-api-2/header/index.mjs +2 -7
  146. package/src/refractor/visitors/open-api-2/headers/index.cjs +2 -8
  147. package/src/refractor/visitors/open-api-2/headers/index.mjs +2 -7
  148. package/src/refractor/visitors/open-api-2/index.cjs +2 -8
  149. package/src/refractor/visitors/open-api-2/index.mjs +2 -7
  150. package/src/refractor/visitors/open-api-2/info/VersionVisitor.cjs +2 -3
  151. package/src/refractor/visitors/open-api-2/info/VersionVisitor.mjs +2 -3
  152. package/src/refractor/visitors/open-api-2/info/index.cjs +2 -8
  153. package/src/refractor/visitors/open-api-2/info/index.mjs +2 -7
  154. package/src/refractor/visitors/open-api-2/items/index.cjs +2 -8
  155. package/src/refractor/visitors/open-api-2/items/index.mjs +2 -7
  156. package/src/refractor/visitors/open-api-2/license/index.cjs +2 -8
  157. package/src/refractor/visitors/open-api-2/license/index.mjs +2 -7
  158. package/src/refractor/visitors/open-api-2/operation/ConsumesVisitor.cjs +5 -4
  159. package/src/refractor/visitors/open-api-2/operation/ConsumesVisitor.mjs +4 -3
  160. package/src/refractor/visitors/open-api-2/operation/ParametersVisitor.cjs +6 -12
  161. package/src/refractor/visitors/open-api-2/operation/ParametersVisitor.mjs +6 -11
  162. package/src/refractor/visitors/open-api-2/operation/ProducesVisitor.cjs +5 -4
  163. package/src/refractor/visitors/open-api-2/operation/ProducesVisitor.mjs +4 -3
  164. package/src/refractor/visitors/open-api-2/operation/SchemesVisitor.cjs +5 -4
  165. package/src/refractor/visitors/open-api-2/operation/SchemesVisitor.mjs +4 -3
  166. package/src/refractor/visitors/open-api-2/operation/SecurityVisitor.cjs +5 -11
  167. package/src/refractor/visitors/open-api-2/operation/SecurityVisitor.mjs +5 -10
  168. package/src/refractor/visitors/open-api-2/operation/TagsVisitor.cjs +5 -4
  169. package/src/refractor/visitors/open-api-2/operation/TagsVisitor.mjs +4 -3
  170. package/src/refractor/visitors/open-api-2/operation/index.cjs +2 -8
  171. package/src/refractor/visitors/open-api-2/operation/index.mjs +2 -7
  172. package/src/refractor/visitors/open-api-2/parameter/index.cjs +2 -8
  173. package/src/refractor/visitors/open-api-2/parameter/index.mjs +2 -7
  174. package/src/refractor/visitors/open-api-2/parameters-definitions/index.cjs +2 -8
  175. package/src/refractor/visitors/open-api-2/parameters-definitions/index.mjs +2 -7
  176. package/src/refractor/visitors/open-api-2/path-item/$RefVisitor.cjs +2 -3
  177. package/src/refractor/visitors/open-api-2/path-item/$RefVisitor.mjs +2 -3
  178. package/src/refractor/visitors/open-api-2/path-item/ParametersVisitor.cjs +6 -12
  179. package/src/refractor/visitors/open-api-2/path-item/ParametersVisitor.mjs +6 -11
  180. package/src/refractor/visitors/open-api-2/path-item/index.cjs +8 -14
  181. package/src/refractor/visitors/open-api-2/path-item/index.mjs +7 -12
  182. package/src/refractor/visitors/open-api-2/paths/index.cjs +6 -13
  183. package/src/refractor/visitors/open-api-2/paths/index.mjs +6 -12
  184. package/src/refractor/visitors/open-api-2/reference/$RefVisitor.cjs +2 -3
  185. package/src/refractor/visitors/open-api-2/reference/$RefVisitor.mjs +2 -3
  186. package/src/refractor/visitors/open-api-2/reference/index.cjs +6 -13
  187. package/src/refractor/visitors/open-api-2/reference/index.mjs +5 -11
  188. package/src/refractor/visitors/open-api-2/response/index.cjs +2 -8
  189. package/src/refractor/visitors/open-api-2/response/index.mjs +2 -7
  190. package/src/refractor/visitors/open-api-2/responses/DefaultVisitor.cjs +6 -12
  191. package/src/refractor/visitors/open-api-2/responses/DefaultVisitor.mjs +6 -11
  192. package/src/refractor/visitors/open-api-2/responses/index.cjs +8 -14
  193. package/src/refractor/visitors/open-api-2/responses/index.mjs +8 -13
  194. package/src/refractor/visitors/open-api-2/responses-definitions/index.cjs +2 -8
  195. package/src/refractor/visitors/open-api-2/responses-definitions/index.mjs +2 -7
  196. package/src/refractor/visitors/open-api-2/schema/AllOfVisitor.cjs +3 -4
  197. package/src/refractor/visitors/open-api-2/schema/AllOfVisitor.mjs +3 -4
  198. package/src/refractor/visitors/open-api-2/schema/ItemsVisitor.cjs +9 -15
  199. package/src/refractor/visitors/open-api-2/schema/ItemsVisitor.mjs +8 -13
  200. package/src/refractor/visitors/open-api-2/schema/PropertiesVisitor.cjs +3 -4
  201. package/src/refractor/visitors/open-api-2/schema/PropertiesVisitor.mjs +3 -4
  202. package/src/refractor/visitors/open-api-2/schema/SchemaOrJSONReferenceVisitor.cjs +3 -4
  203. package/src/refractor/visitors/open-api-2/schema/SchemaOrJSONReferenceVisitor.mjs +3 -4
  204. package/src/refractor/visitors/open-api-2/schema/index.cjs +2 -8
  205. package/src/refractor/visitors/open-api-2/schema/index.mjs +2 -7
  206. package/src/refractor/visitors/open-api-2/scopes/index.cjs +2 -8
  207. package/src/refractor/visitors/open-api-2/scopes/index.mjs +2 -7
  208. package/src/refractor/visitors/open-api-2/security-definitions/index.cjs +2 -8
  209. package/src/refractor/visitors/open-api-2/security-definitions/index.mjs +2 -7
  210. package/src/refractor/visitors/open-api-2/security-requirement/index.cjs +2 -8
  211. package/src/refractor/visitors/open-api-2/security-requirement/index.mjs +2 -7
  212. package/src/refractor/visitors/open-api-2/security-scheme/index.cjs +2 -8
  213. package/src/refractor/visitors/open-api-2/security-scheme/index.mjs +2 -7
  214. package/src/refractor/visitors/open-api-2/tag/index.cjs +2 -8
  215. package/src/refractor/visitors/open-api-2/tag/index.mjs +2 -7
  216. package/src/refractor/visitors/open-api-2/xml/index.cjs +2 -8
  217. package/src/refractor/visitors/open-api-2/xml/index.mjs +2 -7
  218. package/types/apidom-ns-openapi-2.d.ts +541 -565
  219. package/src/refractor/registration.cjs +0 -87
  220. package/src/refractor/registration.mjs +0 -56
  221. package/src/traversal/visitor.cjs +0 -56
  222. package/src/traversal/visitor.mjs +0 -53
@@ -1,46 +1,281 @@
1
- import { visit, dereference, refract as baseRefract, dispatchRefractorPlugins } from '@speclynx/apidom-core';
1
+ import { resolveSpecification, dispatchRefractorPlugins } from '@speclynx/apidom-core';
2
+ import { refract as baseRefract } from '@speclynx/apidom-datamodel';
3
+ import { traverse } from '@speclynx/apidom-traverse';
2
4
  import { path } from 'ramda';
3
5
  import specification from "./specification.mjs";
4
- import { keyMap, getNodeType } from "../traversal/visitor.mjs";
5
6
  import createToolbox from "./toolbox.mjs";
7
+ /**
8
+ * @public
9
+ */
10
+ /**
11
+ * @public
12
+ */
6
13
  /**
7
14
  * @public
8
15
  */
9
16
  const refract = (value, {
10
- specPath = ['visitors', 'document', 'objects', 'Swagger', '$visitor'],
11
- plugins = []
17
+ element = 'swagger',
18
+ plugins = [],
19
+ specificationObj = specification
12
20
  } = {}) => {
13
- const element = baseRefract(value);
14
- const resolvedSpec = dereference(specification);
21
+ const genericElement = baseRefract(value);
22
+ const resolvedSpec = resolveSpecification(specificationObj);
23
+ const elementMap = resolvedSpec.elementMap;
24
+ const specPath = elementMap[element];
25
+ if (!specPath) {
26
+ throw new Error(`Unknown element type: "${element}"`);
27
+ }
15
28
 
16
29
  /**
17
30
  * This is where generic ApiDOM becomes semantic (namespace applied).
18
31
  * We don't allow consumers to hook into this translation.
19
- * Though we allow consumers to define their onw plugins on already transformed ApiDOM.
32
+ * Though we allow consumers to define their own plugins on already transformed ApiDOM.
20
33
  */
21
34
  const RootVisitorClass = path(specPath, resolvedSpec);
22
35
  const rootVisitor = new RootVisitorClass({
23
36
  specObj: resolvedSpec
24
37
  });
25
- visit(element, rootVisitor);
38
+ traverse(genericElement, rootVisitor);
26
39
 
27
40
  /**
28
41
  * Running plugins visitors means extra single traversal === performance hit.
29
42
  */
30
43
  return dispatchRefractorPlugins(rootVisitor.element, plugins, {
31
- toolboxCreator: createToolbox,
32
- visitorOptions: {
33
- keyMap,
34
- nodeTypeGetter: getNodeType
35
- }
44
+ toolboxCreator: createToolbox
36
45
  });
37
46
  };
38
47
 
39
48
  /**
49
+ * Refracts a value into a SwaggerElement.
50
+ * @public
51
+ */
52
+ export const refractSwagger = (value, options = {}) => refract(value, {
53
+ ...options,
54
+ element: 'swagger'
55
+ });
56
+
57
+ /**
58
+ * Refracts a value into an InfoElement.
59
+ * @public
60
+ */
61
+ export const refractInfo = (value, options = {}) => refract(value, {
62
+ ...options,
63
+ element: 'info'
64
+ });
65
+
66
+ /**
67
+ * Refracts a value into a ContactElement.
68
+ * @public
69
+ */
70
+ export const refractContact = (value, options = {}) => refract(value, {
71
+ ...options,
72
+ element: 'contact'
73
+ });
74
+
75
+ /**
76
+ * Refracts a value into a LicenseElement.
77
+ * @public
78
+ */
79
+ export const refractLicense = (value, options = {}) => refract(value, {
80
+ ...options,
81
+ element: 'license'
82
+ });
83
+
84
+ /**
85
+ * Refracts a value into a PathsElement.
86
+ * @public
87
+ */
88
+ export const refractPaths = (value, options = {}) => refract(value, {
89
+ ...options,
90
+ element: 'paths'
91
+ });
92
+
93
+ /**
94
+ * Refracts a value into a PathItemElement.
95
+ * @public
96
+ */
97
+ export const refractPathItem = (value, options = {}) => refract(value, {
98
+ ...options,
99
+ element: 'pathItem'
100
+ });
101
+
102
+ /**
103
+ * Refracts a value into an OperationElement.
104
+ * @public
105
+ */
106
+ export const refractOperation = (value, options = {}) => refract(value, {
107
+ ...options,
108
+ element: 'operation'
109
+ });
110
+
111
+ /**
112
+ * Refracts a value into an ExternalDocumentationElement.
113
+ * @public
114
+ */
115
+ export const refractExternalDocumentation = (value, options = {}) => refract(value, {
116
+ ...options,
117
+ element: 'externalDocumentation'
118
+ });
119
+
120
+ /**
121
+ * Refracts a value into a ParameterElement.
122
+ * @public
123
+ */
124
+ export const refractParameter = (value, options = {}) => refract(value, {
125
+ ...options,
126
+ element: 'parameter'
127
+ });
128
+
129
+ /**
130
+ * Refracts a value into an ItemsElement.
131
+ * @public
132
+ */
133
+ export const refractItems = (value, options = {}) => refract(value, {
134
+ ...options,
135
+ element: 'items'
136
+ });
137
+
138
+ /**
139
+ * Refracts a value into a ResponsesElement.
140
+ * @public
141
+ */
142
+ export const refractResponses = (value, options = {}) => refract(value, {
143
+ ...options,
144
+ element: 'responses'
145
+ });
146
+
147
+ /**
148
+ * Refracts a value into a ResponseElement.
149
+ * @public
150
+ */
151
+ export const refractResponse = (value, options = {}) => refract(value, {
152
+ ...options,
153
+ element: 'response'
154
+ });
155
+
156
+ /**
157
+ * Refracts a value into a HeadersElement.
158
+ * @public
159
+ */
160
+ export const refractHeaders = (value, options = {}) => refract(value, {
161
+ ...options,
162
+ element: 'headers'
163
+ });
164
+
165
+ /**
166
+ * Refracts a value into an ExampleElement.
167
+ * @public
168
+ */
169
+ export const refractExample = (value, options = {}) => refract(value, {
170
+ ...options,
171
+ element: 'example'
172
+ });
173
+
174
+ /**
175
+ * Refracts a value into a HeaderElement.
176
+ * @public
177
+ */
178
+ export const refractHeader = (value, options = {}) => refract(value, {
179
+ ...options,
180
+ element: 'header'
181
+ });
182
+
183
+ /**
184
+ * Refracts a value into a TagElement.
185
+ * @public
186
+ */
187
+ export const refractTag = (value, options = {}) => refract(value, {
188
+ ...options,
189
+ element: 'tag'
190
+ });
191
+
192
+ /**
193
+ * Refracts a value into a ReferenceElement.
194
+ * @public
195
+ */
196
+ export const refractReference = (value, options = {}) => refract(value, {
197
+ ...options,
198
+ element: 'reference'
199
+ });
200
+
201
+ /**
202
+ * Refracts a value into a SchemaElement.
203
+ * @public
204
+ */
205
+ export const refractSchema = (value, options = {}) => refract(value, {
206
+ ...options,
207
+ element: 'schema'
208
+ });
209
+
210
+ /**
211
+ * Refracts a value into an XmlElement.
212
+ * @public
213
+ */
214
+ export const refractXml = (value, options = {}) => refract(value, {
215
+ ...options,
216
+ element: 'xml'
217
+ });
218
+
219
+ /**
220
+ * Refracts a value into a DefinitionsElement.
221
+ * @public
222
+ */
223
+ export const refractDefinitions = (value, options = {}) => refract(value, {
224
+ ...options,
225
+ element: 'definitions'
226
+ });
227
+
228
+ /**
229
+ * Refracts a value into a ParametersDefinitionsElement.
230
+ * @public
231
+ */
232
+ export const refractParametersDefinitions = (value, options = {}) => refract(value, {
233
+ ...options,
234
+ element: 'parametersDefinitions'
235
+ });
236
+
237
+ /**
238
+ * Refracts a value into a ResponsesDefinitionsElement.
239
+ * @public
240
+ */
241
+ export const refractResponsesDefinitions = (value, options = {}) => refract(value, {
242
+ ...options,
243
+ element: 'responsesDefinitions'
244
+ });
245
+
246
+ /**
247
+ * Refracts a value into a SecurityDefinitionsElement.
248
+ * @public
249
+ */
250
+ export const refractSecurityDefinitions = (value, options = {}) => refract(value, {
251
+ ...options,
252
+ element: 'securityDefinitions'
253
+ });
254
+
255
+ /**
256
+ * Refracts a value into a SecuritySchemeElement.
257
+ * @public
258
+ */
259
+ export const refractSecurityScheme = (value, options = {}) => refract(value, {
260
+ ...options,
261
+ element: 'securityScheme'
262
+ });
263
+
264
+ /**
265
+ * Refracts a value into a ScopesElement.
266
+ * @public
267
+ */
268
+ export const refractScopes = (value, options = {}) => refract(value, {
269
+ ...options,
270
+ element: 'scopes'
271
+ });
272
+
273
+ /**
274
+ * Refracts a value into a SecurityRequirementElement.
40
275
  * @public
41
276
  */
42
- export const createRefractor = specPath => (value, options = {}) => refract(value, {
43
- specPath,
44
- ...options
277
+ export const refractSecurityRequirement = (value, options = {}) => refract(value, {
278
+ ...options,
279
+ element: 'securityRequirement'
45
280
  });
46
281
  export default refract;
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4
+ exports.__esModule = true;
5
+ var _apidomCore = require("@speclynx/apidom-core");
6
+ var _ramdaAdjunct = require("ramda-adjunct");
7
+ var _Swagger = _interopRequireDefault(require("../elements/Swagger.cjs"));
8
+ exports.SwaggerElement = _Swagger.default;
9
+ var _SwaggerVersion = _interopRequireDefault(require("../elements/SwaggerVersion.cjs"));
10
+ exports.SwaggerVersionElement = _SwaggerVersion.default;
11
+ var _Info = _interopRequireDefault(require("../elements/Info.cjs"));
12
+ exports.InfoElement = _Info.default;
13
+ var _Contact = _interopRequireDefault(require("../elements/Contact.cjs"));
14
+ exports.ContactElement = _Contact.default;
15
+ var _License = _interopRequireDefault(require("../elements/License.cjs"));
16
+ exports.LicenseElement = _License.default;
17
+ var _Paths = _interopRequireDefault(require("../elements/Paths.cjs"));
18
+ exports.PathsElement = _Paths.default;
19
+ var _PathItem = _interopRequireDefault(require("../elements/PathItem.cjs"));
20
+ exports.PathItemElement = _PathItem.default;
21
+ var _Operation = _interopRequireDefault(require("../elements/Operation.cjs"));
22
+ exports.OperationElement = _Operation.default;
23
+ var _ExternalDocumentation = _interopRequireDefault(require("../elements/ExternalDocumentation.cjs"));
24
+ exports.ExternalDocumentationElement = _ExternalDocumentation.default;
25
+ var _Parameter = _interopRequireDefault(require("../elements/Parameter.cjs"));
26
+ exports.ParameterElement = _Parameter.default;
27
+ var _Items = _interopRequireDefault(require("../elements/Items.cjs"));
28
+ exports.ItemsElement = _Items.default;
29
+ var _Responses = _interopRequireDefault(require("../elements/Responses.cjs"));
30
+ exports.ResponsesElement = _Responses.default;
31
+ var _Response = _interopRequireDefault(require("../elements/Response.cjs"));
32
+ exports.ResponseElement = _Response.default;
33
+ var _Headers = _interopRequireDefault(require("../elements/Headers.cjs"));
34
+ exports.HeadersElement = _Headers.default;
35
+ var _Example = _interopRequireDefault(require("../elements/Example.cjs"));
36
+ exports.ExampleElement = _Example.default;
37
+ var _Header = _interopRequireDefault(require("../elements/Header.cjs"));
38
+ exports.HeaderElement = _Header.default;
39
+ var _Tag = _interopRequireDefault(require("../elements/Tag.cjs"));
40
+ exports.TagElement = _Tag.default;
41
+ var _Reference = _interopRequireDefault(require("../elements/Reference.cjs"));
42
+ exports.ReferenceElement = _Reference.default;
43
+ var _Schema = _interopRequireDefault(require("../elements/Schema.cjs"));
44
+ exports.SchemaElement = _Schema.default;
45
+ var _Xml = _interopRequireDefault(require("../elements/Xml.cjs"));
46
+ exports.XmlElement = _Xml.default;
47
+ var _Definitions = _interopRequireDefault(require("../elements/Definitions.cjs"));
48
+ exports.DefinitionsElement = _Definitions.default;
49
+ var _ParametersDefinitions = _interopRequireDefault(require("../elements/ParametersDefinitions.cjs"));
50
+ exports.ParametersDefinitionsElement = _ParametersDefinitions.default;
51
+ var _ResponsesDefinitions = _interopRequireDefault(require("../elements/ResponsesDefinitions.cjs"));
52
+ exports.ResponsesDefinitionsElement = _ResponsesDefinitions.default;
53
+ var _SecurityDefinitions = _interopRequireDefault(require("../elements/SecurityDefinitions.cjs"));
54
+ exports.SecurityDefinitionsElement = _SecurityDefinitions.default;
55
+ var _SecurityScheme = _interopRequireDefault(require("../elements/SecurityScheme.cjs"));
56
+ exports.SecuritySchemeElement = _SecurityScheme.default;
57
+ var _Scopes = _interopRequireDefault(require("../elements/Scopes.cjs"));
58
+ exports.ScopesElement = _Scopes.default;
59
+ var _SecurityRequirement = _interopRequireDefault(require("../elements/SecurityRequirement.cjs"));
60
+ exports.SecurityRequirementElement = _SecurityRequirement.default;
61
+ var _specification = _interopRequireDefault(require("./specification.cjs"));
62
+ /**
63
+ * OpenAPI 2.0 specification elements.
64
+ */
65
+
66
+ /**
67
+ * @public
68
+ */
69
+
70
+ // Resolve specification to dereference $ref pointers
71
+ const resolvedSpec = (0, _apidomCore.resolveSpecification)(_specification.default);
72
+
73
+ // Extract fixed fields as list of { name, alias?, $visitor }
74
+ const getFixedFields = fixedFieldsSpec => {
75
+ return Object.entries(fixedFieldsSpec).map(([name, fieldSpec]) => {
76
+ if ((0, _ramdaAdjunct.isPlainObject)(fieldSpec)) {
77
+ return {
78
+ name,
79
+ ...fieldSpec
80
+ };
81
+ }
82
+ return {
83
+ name,
84
+ $visitor: fieldSpec
85
+ };
86
+ });
87
+ };
88
+
89
+ // OpenAPI 2.0 specification elements
90
+ Object.defineProperty(_Swagger.default, 'fixedFields', {
91
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Swagger.fixedFields),
92
+ enumerable: true
93
+ });
94
+ Object.defineProperty(_Info.default, 'fixedFields', {
95
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Info.fixedFields),
96
+ enumerable: true
97
+ });
98
+ Object.defineProperty(_Contact.default, 'fixedFields', {
99
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Contact.fixedFields),
100
+ enumerable: true
101
+ });
102
+ Object.defineProperty(_License.default, 'fixedFields', {
103
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.License.fixedFields),
104
+ enumerable: true
105
+ });
106
+ Object.defineProperty(_PathItem.default, 'fixedFields', {
107
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.PathItem.fixedFields),
108
+ enumerable: true
109
+ });
110
+ Object.defineProperty(_Operation.default, 'fixedFields', {
111
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Operation.fixedFields),
112
+ enumerable: true
113
+ });
114
+ Object.defineProperty(_ExternalDocumentation.default, 'fixedFields', {
115
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.ExternalDocumentation.fixedFields),
116
+ enumerable: true
117
+ });
118
+ Object.defineProperty(_Parameter.default, 'fixedFields', {
119
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Parameter.fixedFields),
120
+ enumerable: true
121
+ });
122
+ Object.defineProperty(_Items.default, 'fixedFields', {
123
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Items.fixedFields),
124
+ enumerable: true
125
+ });
126
+ Object.defineProperty(_Responses.default, 'fixedFields', {
127
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Responses.fixedFields),
128
+ enumerable: true
129
+ });
130
+ Object.defineProperty(_Response.default, 'fixedFields', {
131
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Response.fixedFields),
132
+ enumerable: true
133
+ });
134
+ Object.defineProperty(_Header.default, 'fixedFields', {
135
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Header.fixedFields),
136
+ enumerable: true
137
+ });
138
+ Object.defineProperty(_Tag.default, 'fixedFields', {
139
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Tag.fixedFields),
140
+ enumerable: true
141
+ });
142
+ Object.defineProperty(_Reference.default, 'fixedFields', {
143
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Reference.fixedFields),
144
+ enumerable: true
145
+ });
146
+ Object.defineProperty(_Schema.default, 'fixedFields', {
147
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Schema.fixedFields),
148
+ enumerable: true
149
+ });
150
+ Object.defineProperty(_Xml.default, 'fixedFields', {
151
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.XML.fixedFields),
152
+ enumerable: true
153
+ });
154
+ Object.defineProperty(_SecurityScheme.default, 'fixedFields', {
155
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.SecurityScheme.fixedFields),
156
+ enumerable: true
157
+ });
@@ -0,0 +1,126 @@
1
+ import { resolveSpecification } from '@speclynx/apidom-core';
2
+ import { isPlainObject } from 'ramda-adjunct';
3
+
4
+ /**
5
+ * OpenAPI 2.0 specification elements.
6
+ */
7
+ import SwaggerElement from "../elements/Swagger.mjs";
8
+ import SwaggerVersionElement from "../elements/SwaggerVersion.mjs";
9
+ import InfoElement from "../elements/Info.mjs";
10
+ import ContactElement from "../elements/Contact.mjs";
11
+ import LicenseElement from "../elements/License.mjs";
12
+ import PathsElement from "../elements/Paths.mjs";
13
+ import PathItemElement from "../elements/PathItem.mjs";
14
+ import OperationElement from "../elements/Operation.mjs";
15
+ import ExternalDocumentationElement from "../elements/ExternalDocumentation.mjs";
16
+ import ParameterElement from "../elements/Parameter.mjs";
17
+ import ItemsElement from "../elements/Items.mjs";
18
+ import ResponsesElement from "../elements/Responses.mjs";
19
+ import ResponseElement from "../elements/Response.mjs";
20
+ import HeadersElement from "../elements/Headers.mjs";
21
+ import ExampleElement from "../elements/Example.mjs";
22
+ import HeaderElement from "../elements/Header.mjs";
23
+ import TagElement from "../elements/Tag.mjs";
24
+ import ReferenceElement from "../elements/Reference.mjs";
25
+ import SchemaElement from "../elements/Schema.mjs";
26
+ import XmlElement from "../elements/Xml.mjs";
27
+ import DefinitionsElement from "../elements/Definitions.mjs";
28
+ import ParametersDefinitionsElement from "../elements/ParametersDefinitions.mjs";
29
+ import ResponsesDefinitionsElement from "../elements/ResponsesDefinitions.mjs";
30
+ import SecurityDefinitionsElement from "../elements/SecurityDefinitions.mjs";
31
+ import SecuritySchemeElement from "../elements/SecurityScheme.mjs";
32
+ import ScopesElement from "../elements/Scopes.mjs";
33
+ import SecurityRequirementElement from "../elements/SecurityRequirement.mjs";
34
+ import specification from "./specification.mjs";
35
+ /**
36
+ * @public
37
+ */
38
+ // Resolve specification to dereference $ref pointers
39
+ const resolvedSpec = resolveSpecification(specification);
40
+
41
+ // Extract fixed fields as list of { name, alias?, $visitor }
42
+ const getFixedFields = fixedFieldsSpec => {
43
+ return Object.entries(fixedFieldsSpec).map(([name, fieldSpec]) => {
44
+ if (isPlainObject(fieldSpec)) {
45
+ return {
46
+ name,
47
+ ...fieldSpec
48
+ };
49
+ }
50
+ return {
51
+ name,
52
+ $visitor: fieldSpec
53
+ };
54
+ });
55
+ };
56
+
57
+ // OpenAPI 2.0 specification elements
58
+ Object.defineProperty(SwaggerElement, 'fixedFields', {
59
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Swagger.fixedFields),
60
+ enumerable: true
61
+ });
62
+ Object.defineProperty(InfoElement, 'fixedFields', {
63
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Info.fixedFields),
64
+ enumerable: true
65
+ });
66
+ Object.defineProperty(ContactElement, 'fixedFields', {
67
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Contact.fixedFields),
68
+ enumerable: true
69
+ });
70
+ Object.defineProperty(LicenseElement, 'fixedFields', {
71
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.License.fixedFields),
72
+ enumerable: true
73
+ });
74
+ Object.defineProperty(PathItemElement, 'fixedFields', {
75
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.PathItem.fixedFields),
76
+ enumerable: true
77
+ });
78
+ Object.defineProperty(OperationElement, 'fixedFields', {
79
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Operation.fixedFields),
80
+ enumerable: true
81
+ });
82
+ Object.defineProperty(ExternalDocumentationElement, 'fixedFields', {
83
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.ExternalDocumentation.fixedFields),
84
+ enumerable: true
85
+ });
86
+ Object.defineProperty(ParameterElement, 'fixedFields', {
87
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Parameter.fixedFields),
88
+ enumerable: true
89
+ });
90
+ Object.defineProperty(ItemsElement, 'fixedFields', {
91
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Items.fixedFields),
92
+ enumerable: true
93
+ });
94
+ Object.defineProperty(ResponsesElement, 'fixedFields', {
95
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Responses.fixedFields),
96
+ enumerable: true
97
+ });
98
+ Object.defineProperty(ResponseElement, 'fixedFields', {
99
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Response.fixedFields),
100
+ enumerable: true
101
+ });
102
+ Object.defineProperty(HeaderElement, 'fixedFields', {
103
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Header.fixedFields),
104
+ enumerable: true
105
+ });
106
+ Object.defineProperty(TagElement, 'fixedFields', {
107
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Tag.fixedFields),
108
+ enumerable: true
109
+ });
110
+ Object.defineProperty(ReferenceElement, 'fixedFields', {
111
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Reference.fixedFields),
112
+ enumerable: true
113
+ });
114
+ Object.defineProperty(SchemaElement, 'fixedFields', {
115
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Schema.fixedFields),
116
+ enumerable: true
117
+ });
118
+ Object.defineProperty(XmlElement, 'fixedFields', {
119
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.XML.fixedFields),
120
+ enumerable: true
121
+ });
122
+ Object.defineProperty(SecuritySchemeElement, 'fixedFields', {
123
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.SecurityScheme.fixedFields),
124
+ enumerable: true
125
+ });
126
+ 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 };
@@ -3,7 +3,9 @@
3
3
  var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4
4
  exports.__esModule = true;
5
5
  exports.default = void 0;
6
+ var _apidomDatamodel = require("@speclynx/apidom-datamodel");
6
7
  var _apidomCore = require("@speclynx/apidom-core");
8
+ var _apidomTraverse = require("@speclynx/apidom-traverse");
7
9
  var _Info = _interopRequireDefault(require("../../elements/Info.cjs"));
8
10
  var _Contact = _interopRequireDefault(require("../../elements/Contact.cjs"));
9
11
  var _License = _interopRequireDefault(require("../../elements/License.cjs"));
@@ -40,7 +42,6 @@ var _SwaggerConsumes = _interopRequireDefault(require("../../elements/nces/Swagg
40
42
  var _SwaggerProduces = _interopRequireDefault(require("../../elements/nces/SwaggerProduces.cjs"));
41
43
  var _SwaggerSecurity = _interopRequireDefault(require("../../elements/nces/SwaggerSecurity.cjs"));
42
44
  var _SwaggerTags = _interopRequireDefault(require("../../elements/nces/SwaggerTags.cjs"));
43
- var _visitor = require("../../traversal/visitor.cjs");
44
45
  /**
45
46
  * OpenAPI 2.0 specification elements.
46
47
  */
@@ -81,7 +82,7 @@ var _visitor = require("../../traversal/visitor.cjs");
81
82
  * (InfoElement))
82
83
  */
83
84
 
84
- const isEmptyElement = element => (0, _apidomCore.isStringElement)(element) && (0, _apidomCore.includesClasses)(['yaml-e-node', 'yaml-e-scalar'], element);
85
+ const isEmptyElement = element => (0, _apidomDatamodel.isStringElement)(element) && (0, _apidomDatamodel.includesClasses)(element, ['yaml-e-node', 'yaml-e-scalar']);
85
86
  const schema = {
86
87
  // concrete types handling (CTs)
87
88
  SwaggerElement: {
@@ -236,12 +237,12 @@ const schema = {
236
237
  return new _Schema.default(...args);
237
238
  },
238
239
  allOf(...args) {
239
- const element = new _apidomCore.ArrayElement(...args);
240
+ const element = new _apidomDatamodel.ArrayElement(...args);
240
241
  element.classes.push('json-schema-allOf');
241
242
  return element;
242
243
  },
243
244
  properties(...args) {
244
- const element = new _apidomCore.ObjectElement(...args);
245
+ const element = new _apidomDatamodel.ObjectElement(...args);
245
246
  element.classes.push('json-schema-properties');
246
247
  return element;
247
248
  },
@@ -282,7 +283,7 @@ const schema = {
282
283
  },
283
284
  SecurityRequirementElement: {
284
285
  '[key: *]': function key(...args) {
285
- return new _apidomCore.ArrayElement(...args);
286
+ return new _apidomDatamodel.ArrayElement(...args);
286
287
  }
287
288
  },
288
289
  // non-concrete types handling (NCEs)
@@ -323,7 +324,7 @@ const schema = {
323
324
  }
324
325
  };
325
326
  const findElementFactory = (ancestor, keyName) => {
326
- const elementType = (0, _visitor.getNodeType)(ancestor); // @ts-ignore
327
+ const elementType = (0, _apidomTraverse.getNodeType)(ancestor); // @ts-ignore
327
328
  const keyMapping = schema[elementType] || schema[(0, _apidomCore.toValue)(ancestor.classes.first)];
328
329
  return typeof keyMapping === 'undefined' ? undefined : Object.hasOwn(keyMapping, '[key: *]') ? keyMapping['[key: *]'] : keyMapping[keyName];
329
330
  };
@@ -333,25 +334,30 @@ const findElementFactory = (ancestor, keyName) => {
333
334
  */
334
335
  const plugin = () => () => ({
335
336
  visitor: {
336
- StringElement(element, key, parent, path, ancestors) {
337
- if (!isEmptyElement(element)) return undefined;
338
- const lineage = [...ancestors, parent].filter(_apidomCore.isElement);
337
+ StringElement(path) {
338
+ const element = path.node;
339
+ if (!isEmptyElement(element)) return;
340
+
341
+ // getAncestorNodes() returns [parent, grandparent, ..., root], so reverse to get [root, ..., parent]
342
+ const lineage = path.getAncestorNodes().reverse().filter(_apidomDatamodel.isElement);
339
343
  const parentElement = lineage.at(-1);
340
344
  let elementFactory;
341
345
  let context;
342
- if ((0, _apidomCore.isArrayElement)(parentElement)) {
346
+ if ((0, _apidomDatamodel.isArrayElement)(parentElement)) {
343
347
  context = element;
344
348
  elementFactory = findElementFactory(parentElement, '<*>');
345
- } else if ((0, _apidomCore.isMemberElement)(parentElement)) {
349
+ } else if ((0, _apidomDatamodel.isMemberElement)(parentElement)) {
346
350
  context = lineage.at(-2);
347
351
  elementFactory = findElementFactory(context, (0, _apidomCore.toValue)(parentElement.key));
348
352
  }
349
353
 
350
354
  // no element factory found
351
- if (typeof elementFactory !== 'function') return undefined;
352
- return elementFactory.call({
355
+ if (typeof elementFactory !== 'function') return;
356
+ const replacement = elementFactory.call({
353
357
  context
354
- }, undefined, (0, _apidomCore.cloneDeep)(element.meta), (0, _apidomCore.cloneDeep)(element.attributes));
358
+ }, undefined, (0, _apidomDatamodel.cloneDeep)(element.meta), (0, _apidomDatamodel.cloneDeep)(element.attributes));
359
+ _apidomDatamodel.SourceMapElement.transfer(element, replacement);
360
+ path.replaceWith(replacement);
355
361
  }
356
362
  }
357
363
  });