@speclynx/apidom-ns-openapi-3-1 1.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. package/CHANGELOG.md +87 -0
  2. package/LICENSE +202 -0
  3. package/LICENSES/AFL-3.0.txt +182 -0
  4. package/LICENSES/Apache-2.0.txt +202 -0
  5. package/LICENSES/BSD-3-Clause.txt +26 -0
  6. package/LICENSES/MIT.txt +9 -0
  7. package/NOTICE +65 -0
  8. package/README.md +472 -0
  9. package/dist/apidom-ns-openapi-3-1.browser.js +36144 -0
  10. package/dist/apidom-ns-openapi-3-1.browser.min.js +1 -0
  11. package/package.json +70 -0
  12. package/src/elements/Callback.cjs +10 -0
  13. package/src/elements/Callback.mjs +7 -0
  14. package/src/elements/Components.cjs +17 -0
  15. package/src/elements/Components.mjs +14 -0
  16. package/src/elements/Contact.cjs +10 -0
  17. package/src/elements/Contact.mjs +7 -0
  18. package/src/elements/Discriminator.cjs +10 -0
  19. package/src/elements/Discriminator.mjs +7 -0
  20. package/src/elements/Encoding.cjs +10 -0
  21. package/src/elements/Encoding.mjs +7 -0
  22. package/src/elements/Example.cjs +10 -0
  23. package/src/elements/Example.mjs +7 -0
  24. package/src/elements/ExternalDocumentation.cjs +10 -0
  25. package/src/elements/ExternalDocumentation.mjs +7 -0
  26. package/src/elements/Header.cjs +17 -0
  27. package/src/elements/Header.mjs +13 -0
  28. package/src/elements/Info.cjs +23 -0
  29. package/src/elements/Info.mjs +19 -0
  30. package/src/elements/JsonSchemaDialect.cjs +16 -0
  31. package/src/elements/JsonSchemaDialect.mjs +13 -0
  32. package/src/elements/License.cjs +17 -0
  33. package/src/elements/License.mjs +14 -0
  34. package/src/elements/Link.cjs +10 -0
  35. package/src/elements/Link.mjs +7 -0
  36. package/src/elements/MediaType.cjs +17 -0
  37. package/src/elements/MediaType.mjs +13 -0
  38. package/src/elements/OAuthFlow.cjs +10 -0
  39. package/src/elements/OAuthFlow.mjs +7 -0
  40. package/src/elements/OAuthFlows.cjs +10 -0
  41. package/src/elements/OAuthFlows.mjs +7 -0
  42. package/src/elements/OpenApi3-1.cjs +77 -0
  43. package/src/elements/OpenApi3-1.mjs +73 -0
  44. package/src/elements/Openapi.cjs +10 -0
  45. package/src/elements/Openapi.mjs +7 -0
  46. package/src/elements/Operation.cjs +17 -0
  47. package/src/elements/Operation.mjs +13 -0
  48. package/src/elements/Parameter.cjs +17 -0
  49. package/src/elements/Parameter.mjs +13 -0
  50. package/src/elements/PathItem.cjs +59 -0
  51. package/src/elements/PathItem.mjs +55 -0
  52. package/src/elements/Paths.cjs +10 -0
  53. package/src/elements/Paths.mjs +7 -0
  54. package/src/elements/Reference.cjs +28 -0
  55. package/src/elements/Reference.mjs +25 -0
  56. package/src/elements/RequestBody.cjs +10 -0
  57. package/src/elements/RequestBody.mjs +7 -0
  58. package/src/elements/Response.cjs +10 -0
  59. package/src/elements/Response.mjs +7 -0
  60. package/src/elements/Responses.cjs +10 -0
  61. package/src/elements/Responses.mjs +7 -0
  62. package/src/elements/Schema.cjs +50 -0
  63. package/src/elements/Schema.mjs +46 -0
  64. package/src/elements/SecurityRequirement.cjs +10 -0
  65. package/src/elements/SecurityRequirement.mjs +7 -0
  66. package/src/elements/SecurityScheme.cjs +10 -0
  67. package/src/elements/SecurityScheme.mjs +7 -0
  68. package/src/elements/Server.cjs +10 -0
  69. package/src/elements/Server.mjs +7 -0
  70. package/src/elements/ServerVariable.cjs +10 -0
  71. package/src/elements/ServerVariable.mjs +7 -0
  72. package/src/elements/Tag.cjs +10 -0
  73. package/src/elements/Tag.mjs +7 -0
  74. package/src/elements/Xml.cjs +10 -0
  75. package/src/elements/Xml.mjs +7 -0
  76. package/src/elements/nces/ComponentsPathItems.cjs +16 -0
  77. package/src/elements/nces/ComponentsPathItems.mjs +13 -0
  78. package/src/elements/nces/Webhooks.cjs +16 -0
  79. package/src/elements/nces/Webhooks.mjs +13 -0
  80. package/src/index.cjs +158 -0
  81. package/src/index.mjs +28 -0
  82. package/src/media-types.cjs +34 -0
  83. package/src/media-types.mjs +30 -0
  84. package/src/namespace.cjs +82 -0
  85. package/src/namespace.mjs +76 -0
  86. package/src/predicates.cjs +365 -0
  87. package/src/predicates.mjs +357 -0
  88. package/src/refractor/index.cjs +45 -0
  89. package/src/refractor/index.mjs +39 -0
  90. package/src/refractor/plugins/normalize-header-examples/NormalizeStorage.cjs +38 -0
  91. package/src/refractor/plugins/normalize-header-examples/NormalizeStorage.mjs +34 -0
  92. package/src/refractor/plugins/normalize-header-examples/index.cjs +105 -0
  93. package/src/refractor/plugins/normalize-header-examples/index.mjs +99 -0
  94. package/src/refractor/plugins/normalize-operation-ids.cjs +159 -0
  95. package/src/refractor/plugins/normalize-operation-ids.mjs +154 -0
  96. package/src/refractor/plugins/normalize-parameter-examples.cjs +105 -0
  97. package/src/refractor/plugins/normalize-parameter-examples.mjs +99 -0
  98. package/src/refractor/plugins/normalize-parameters.cjs +103 -0
  99. package/src/refractor/plugins/normalize-parameters.mjs +97 -0
  100. package/src/refractor/plugins/normalize-security-requirements.cjs +71 -0
  101. package/src/refractor/plugins/normalize-security-requirements.mjs +65 -0
  102. package/src/refractor/plugins/normalize-servers.cjs +118 -0
  103. package/src/refractor/plugins/normalize-servers.mjs +112 -0
  104. package/src/refractor/plugins/replace-empty-element.cjs +665 -0
  105. package/src/refractor/plugins/replace-empty-element.mjs +658 -0
  106. package/src/refractor/registration.cjs +102 -0
  107. package/src/refractor/registration.mjs +66 -0
  108. package/src/refractor/specification.cjs +492 -0
  109. package/src/refractor/specification.mjs +487 -0
  110. package/src/refractor/toolbox.cjs +70 -0
  111. package/src/refractor/toolbox.mjs +60 -0
  112. package/src/refractor/visitors/open-api-3-1/JsonSchemaDialectVisitor.cjs +25 -0
  113. package/src/refractor/visitors/open-api-3-1/JsonSchemaDialectVisitor.mjs +19 -0
  114. package/src/refractor/visitors/open-api-3-1/WebhooksVisitor.cjs +44 -0
  115. package/src/refractor/visitors/open-api-3-1/WebhooksVisitor.mjs +38 -0
  116. package/src/refractor/visitors/open-api-3-1/callback/index.cjs +37 -0
  117. package/src/refractor/visitors/open-api-3-1/callback/index.mjs +32 -0
  118. package/src/refractor/visitors/open-api-3-1/components/PathItemsVisitor.cjs +34 -0
  119. package/src/refractor/visitors/open-api-3-1/components/PathItemsVisitor.mjs +28 -0
  120. package/src/refractor/visitors/open-api-3-1/components/SchemasVisitor.cjs +22 -0
  121. package/src/refractor/visitors/open-api-3-1/components/SchemasVisitor.mjs +19 -0
  122. package/src/refractor/visitors/open-api-3-1/components/index.cjs +21 -0
  123. package/src/refractor/visitors/open-api-3-1/components/index.mjs +16 -0
  124. package/src/refractor/visitors/open-api-3-1/contact/index.cjs +21 -0
  125. package/src/refractor/visitors/open-api-3-1/contact/index.mjs +16 -0
  126. package/src/refractor/visitors/open-api-3-1/distriminator/index.cjs +22 -0
  127. package/src/refractor/visitors/open-api-3-1/distriminator/index.mjs +17 -0
  128. package/src/refractor/visitors/open-api-3-1/encoding/index.cjs +21 -0
  129. package/src/refractor/visitors/open-api-3-1/encoding/index.mjs +16 -0
  130. package/src/refractor/visitors/open-api-3-1/example/index.cjs +21 -0
  131. package/src/refractor/visitors/open-api-3-1/example/index.mjs +16 -0
  132. package/src/refractor/visitors/open-api-3-1/external-documentation/index.cjs +21 -0
  133. package/src/refractor/visitors/open-api-3-1/external-documentation/index.mjs +16 -0
  134. package/src/refractor/visitors/open-api-3-1/header/index.cjs +21 -0
  135. package/src/refractor/visitors/open-api-3-1/header/index.mjs +16 -0
  136. package/src/refractor/visitors/open-api-3-1/index.cjs +31 -0
  137. package/src/refractor/visitors/open-api-3-1/index.mjs +25 -0
  138. package/src/refractor/visitors/open-api-3-1/info/index.cjs +21 -0
  139. package/src/refractor/visitors/open-api-3-1/info/index.mjs +16 -0
  140. package/src/refractor/visitors/open-api-3-1/license/index.cjs +21 -0
  141. package/src/refractor/visitors/open-api-3-1/license/index.mjs +16 -0
  142. package/src/refractor/visitors/open-api-3-1/link/index.cjs +21 -0
  143. package/src/refractor/visitors/open-api-3-1/link/index.mjs +16 -0
  144. package/src/refractor/visitors/open-api-3-1/media-type/index.cjs +21 -0
  145. package/src/refractor/visitors/open-api-3-1/media-type/index.mjs +16 -0
  146. package/src/refractor/visitors/open-api-3-1/oauth-flow/index.cjs +21 -0
  147. package/src/refractor/visitors/open-api-3-1/oauth-flow/index.mjs +16 -0
  148. package/src/refractor/visitors/open-api-3-1/oauth-flows/index.cjs +21 -0
  149. package/src/refractor/visitors/open-api-3-1/oauth-flows/index.mjs +16 -0
  150. package/src/refractor/visitors/open-api-3-1/operation/index.cjs +21 -0
  151. package/src/refractor/visitors/open-api-3-1/operation/index.mjs +16 -0
  152. package/src/refractor/visitors/open-api-3-1/parameter/index.cjs +21 -0
  153. package/src/refractor/visitors/open-api-3-1/parameter/index.mjs +16 -0
  154. package/src/refractor/visitors/open-api-3-1/path-item/index.cjs +21 -0
  155. package/src/refractor/visitors/open-api-3-1/path-item/index.mjs +16 -0
  156. package/src/refractor/visitors/open-api-3-1/paths/index.cjs +21 -0
  157. package/src/refractor/visitors/open-api-3-1/paths/index.mjs +16 -0
  158. package/src/refractor/visitors/open-api-3-1/reference/index.cjs +21 -0
  159. package/src/refractor/visitors/open-api-3-1/reference/index.mjs +16 -0
  160. package/src/refractor/visitors/open-api-3-1/request-body/index.cjs +21 -0
  161. package/src/refractor/visitors/open-api-3-1/request-body/index.mjs +16 -0
  162. package/src/refractor/visitors/open-api-3-1/response/index.cjs +21 -0
  163. package/src/refractor/visitors/open-api-3-1/response/index.mjs +16 -0
  164. package/src/refractor/visitors/open-api-3-1/responses/index.cjs +21 -0
  165. package/src/refractor/visitors/open-api-3-1/responses/index.mjs +16 -0
  166. package/src/refractor/visitors/open-api-3-1/schema/$defsVisitor.cjs +19 -0
  167. package/src/refractor/visitors/open-api-3-1/schema/$defsVisitor.mjs +16 -0
  168. package/src/refractor/visitors/open-api-3-1/schema/AllOfVisitor.cjs +15 -0
  169. package/src/refractor/visitors/open-api-3-1/schema/AllOfVisitor.mjs +11 -0
  170. package/src/refractor/visitors/open-api-3-1/schema/AnyOfVisitor.cjs +15 -0
  171. package/src/refractor/visitors/open-api-3-1/schema/AnyOfVisitor.mjs +11 -0
  172. package/src/refractor/visitors/open-api-3-1/schema/DependentSchemasVisitor.cjs +15 -0
  173. package/src/refractor/visitors/open-api-3-1/schema/DependentSchemasVisitor.mjs +11 -0
  174. package/src/refractor/visitors/open-api-3-1/schema/OneOfVisitor.cjs +15 -0
  175. package/src/refractor/visitors/open-api-3-1/schema/OneOfVisitor.mjs +11 -0
  176. package/src/refractor/visitors/open-api-3-1/schema/PatternPropertiesVisitor.cjs +15 -0
  177. package/src/refractor/visitors/open-api-3-1/schema/PatternPropertiesVisitor.mjs +11 -0
  178. package/src/refractor/visitors/open-api-3-1/schema/PrefixItemsVisitor.cjs +15 -0
  179. package/src/refractor/visitors/open-api-3-1/schema/PrefixItemsVisitor.mjs +11 -0
  180. package/src/refractor/visitors/open-api-3-1/schema/PropertiesVisitor.cjs +15 -0
  181. package/src/refractor/visitors/open-api-3-1/schema/PropertiesVisitor.mjs +11 -0
  182. package/src/refractor/visitors/open-api-3-1/schema/index.cjs +75 -0
  183. package/src/refractor/visitors/open-api-3-1/schema/index.mjs +69 -0
  184. package/src/refractor/visitors/open-api-3-1/security-requirement/index.cjs +21 -0
  185. package/src/refractor/visitors/open-api-3-1/security-requirement/index.mjs +16 -0
  186. package/src/refractor/visitors/open-api-3-1/security-scheme/index.cjs +21 -0
  187. package/src/refractor/visitors/open-api-3-1/security-scheme/index.mjs +16 -0
  188. package/src/refractor/visitors/open-api-3-1/server/index.cjs +21 -0
  189. package/src/refractor/visitors/open-api-3-1/server/index.mjs +16 -0
  190. package/src/refractor/visitors/open-api-3-1/server-variable/index.cjs +21 -0
  191. package/src/refractor/visitors/open-api-3-1/server-variable/index.mjs +16 -0
  192. package/src/refractor/visitors/open-api-3-1/tag/index.cjs +21 -0
  193. package/src/refractor/visitors/open-api-3-1/tag/index.mjs +16 -0
  194. package/src/refractor/visitors/open-api-3-1/xml/index.cjs +21 -0
  195. package/src/refractor/visitors/open-api-3-1/xml/index.mjs +16 -0
  196. package/src/traversal/visitor.cjs +57 -0
  197. package/src/traversal/visitor.mjs +54 -0
  198. package/types/apidom-ns-openapi-3-1.d.ts +2745 -0
@@ -0,0 +1,658 @@
1
+ import { ArrayElement, ObjectElement, cloneDeep, toValue } from '@speclynx/apidom-core';
2
+ import { ServersElement, SecurityElement, TagsElement, ServerVariablesElement, ComponentsSchemasElement, ComponentsResponsesElement, ComponentsParametersElement, ComponentsExamplesElement, ComponentsRequestBodiesElement, ComponentsHeadersElement, ComponentsSecuritySchemesElement, ComponentsLinksElement, ComponentsCallbacksElement, PathItemServersElement, PathItemParametersElement, OperationParametersElement, ParameterExamplesElement, ParameterContentElement, HeaderExamplesElement, HeaderContentElement, OperationTagsElement, OperationCallbacksElement, OperationSecurityElement, OperationServersElement, RequestBodyContentElement, MediaTypeExamplesElement, MediaTypeEncodingElement, EncodingHeadersElement, ResponseHeadersElement, ResponseContentElement, ResponseLinksElement, DiscriminatorMappingElement, OAuthFlowScopesElement } from '@speclynx/apidom-ns-openapi-3-0';
3
+
4
+ /**
5
+ * OpenAPI 3.1.2 specification elements.
6
+ */
7
+ import InfoElement from "../../elements/Info.mjs";
8
+ import ContactElement from "../../elements/Contact.mjs";
9
+ import LicenseElement from "../../elements/License.mjs";
10
+ import PathsElement from "../../elements/Paths.mjs";
11
+ import PathItemElement from "../../elements/PathItem.mjs";
12
+ import ComponentsElement from "../../elements/Components.mjs";
13
+ import ExternalDocumentationElement from "../../elements/ExternalDocumentation.mjs";
14
+ import OperationElement from "../../elements/Operation.mjs";
15
+ import SchemaElement from "../../elements/Schema.mjs";
16
+ import RequestBodyElement from "../../elements/RequestBody.mjs";
17
+ import ResponsesElement from "../../elements/Responses.mjs";
18
+ import ResponseElement from "../../elements/Response.mjs";
19
+ import ServerElement from "../../elements/Server.mjs";
20
+ import DiscriminatorElement from "../../elements/Discriminator.mjs";
21
+ import XmlElement from "../../elements/Xml.mjs";
22
+ import OAuthFlowsElement from "../../elements/OAuthFlows.mjs";
23
+ import OAuthFlowElement from "../../elements/OAuthFlow.mjs";
24
+ import ServerVariableElement from "../../elements/ServerVariable.mjs";
25
+ import ParameterElement from "../../elements/Parameter.mjs";
26
+ import ExampleElement from "../../elements/Example.mjs";
27
+ import HeaderElement from "../../elements/Header.mjs";
28
+ import SecuritySchemeElement from "../../elements/SecurityScheme.mjs";
29
+ import LinkElement from "../../elements/Link.mjs";
30
+ import CallbackElement from "../../elements/Callback.mjs";
31
+ import MediaTypeElement from "../../elements/MediaType.mjs";
32
+ import EncodingElement from "../../elements/Encoding.mjs";
33
+ import SecurityRequirementElement from "../../elements/SecurityRequirement.mjs";
34
+ import TagElement from "../../elements/Tag.mjs"; // non-concrete Elements (NCEs)
35
+ import ComponentsPathItemsElement from "../../elements/nces/ComponentsPathItems.mjs";
36
+ import WebhooksElement from "../../elements/nces/Webhooks.mjs";
37
+ import { getNodeType } from "../../traversal/visitor.mjs";
38
+ /**
39
+ * This plugin is specific to YAML 1.2 format, which allows defining key-value pairs
40
+ * with empty key, empty value, or both. If the value is not provided in YAML format,
41
+ * this plugin compensates for this missing value with the most appropriate semantic element type.
42
+ *
43
+ * https://yaml.org/spec/1.2.2/#72-empty-nodes
44
+ *
45
+ * @example
46
+ *
47
+ * ```yaml
48
+ * openapi: 3.1.2
49
+ * info:
50
+ * ```
51
+ * Refracting result without this plugin:
52
+ *
53
+ * (OpenApi3_1Element
54
+ * (MemberElement
55
+ * (StringElement)
56
+ * (OpenapiElement))
57
+ * (MemberElement
58
+ * (StringElement)
59
+ * (StringElement))
60
+ *
61
+ * Refracting result with this plugin:
62
+ *
63
+ * (OpenApi3_1Element
64
+ * (MemberElement
65
+ * (StringElement)
66
+ * (OpenapiElement))
67
+ * (MemberElement
68
+ * (StringElement)
69
+ * (InfoElement))
70
+ */
71
+
72
+ const schema = {
73
+ // concrete types handling (CTs)
74
+ OpenApi3_1Element: {
75
+ info(...args) {
76
+ return new InfoElement(...args);
77
+ },
78
+ servers(...args) {
79
+ return new ServersElement(...args);
80
+ },
81
+ paths(...args) {
82
+ return new PathsElement(...args);
83
+ },
84
+ webhooks(...args) {
85
+ return new WebhooksElement(...args);
86
+ },
87
+ components(...args) {
88
+ return new ComponentsElement(...args);
89
+ },
90
+ security(...args) {
91
+ return new SecurityElement(...args);
92
+ },
93
+ tags(...args) {
94
+ return new TagsElement(...args);
95
+ },
96
+ externalDocs(...args) {
97
+ return new ExternalDocumentationElement(...args);
98
+ }
99
+ },
100
+ InfoElement: {
101
+ contact(...args) {
102
+ return new ContactElement(...args);
103
+ },
104
+ license(...args) {
105
+ return new LicenseElement(...args);
106
+ }
107
+ },
108
+ ServerElement: {
109
+ variables(...args) {
110
+ return new ServerVariablesElement(...args);
111
+ }
112
+ },
113
+ ServerVariableElement: {
114
+ enum(...args) {
115
+ return new ArrayElement(...args);
116
+ }
117
+ },
118
+ PathsElement: {
119
+ '[key: *]': function key(...args) {
120
+ return new PathItemElement(...args);
121
+ }
122
+ },
123
+ PathItemElement: {
124
+ get(...args) {
125
+ return new OperationElement(...args);
126
+ },
127
+ put(...args) {
128
+ return new OperationElement(...args);
129
+ },
130
+ post(...args) {
131
+ return new OperationElement(...args);
132
+ },
133
+ delete(...args) {
134
+ return new OperationElement(...args);
135
+ },
136
+ options(...args) {
137
+ return new OperationElement(...args);
138
+ },
139
+ head(...args) {
140
+ return new OperationElement(...args);
141
+ },
142
+ patch(...args) {
143
+ return new OperationElement(...args);
144
+ },
145
+ trace(...args) {
146
+ return new OperationElement(...args);
147
+ },
148
+ servers(...args) {
149
+ return new PathItemServersElement(...args);
150
+ },
151
+ parameters(...args) {
152
+ return new PathItemParametersElement(...args);
153
+ }
154
+ },
155
+ OperationElement: {
156
+ tags(...args) {
157
+ return new OperationTagsElement(...args);
158
+ },
159
+ externalDocs(...args) {
160
+ return new ExternalDocumentationElement(...args);
161
+ },
162
+ parameters(...args) {
163
+ return new OperationParametersElement(...args);
164
+ },
165
+ requestBody(...args) {
166
+ return new RequestBodyElement(...args);
167
+ },
168
+ responses(...args) {
169
+ return new ResponsesElement(...args);
170
+ },
171
+ callbacks(...args) {
172
+ return new OperationCallbacksElement(...args);
173
+ },
174
+ security(...args) {
175
+ return new OperationSecurityElement(...args);
176
+ },
177
+ servers(...args) {
178
+ return new OperationServersElement(...args);
179
+ }
180
+ },
181
+ ParameterElement: {
182
+ schema(...args) {
183
+ return new SchemaElement(...args);
184
+ },
185
+ examples(...args) {
186
+ return new ParameterExamplesElement(...args);
187
+ },
188
+ content(...args) {
189
+ return new ParameterContentElement(...args);
190
+ }
191
+ },
192
+ RequestBodyElement: {
193
+ content(...args) {
194
+ return new RequestBodyContentElement(...args);
195
+ }
196
+ },
197
+ MediaTypeElement: {
198
+ schema(...args) {
199
+ return new SchemaElement(...args);
200
+ },
201
+ examples(...args) {
202
+ return new MediaTypeExamplesElement(...args);
203
+ },
204
+ encoding(...args) {
205
+ return new MediaTypeEncodingElement(...args);
206
+ }
207
+ },
208
+ EncodingElement: {
209
+ headers(...args) {
210
+ return new EncodingHeadersElement(...args);
211
+ }
212
+ },
213
+ ResponsesElement: {
214
+ '[key: *]': function key(...args) {
215
+ return new ResponseElement(...args);
216
+ }
217
+ },
218
+ ResponseElement: {
219
+ headers(...args) {
220
+ return new ResponseHeadersElement(...args);
221
+ },
222
+ content(...args) {
223
+ return new ResponseContentElement(...args);
224
+ },
225
+ links(...args) {
226
+ return new ResponseLinksElement(...args);
227
+ }
228
+ },
229
+ CallbackElement: {
230
+ '[key: *]': function key(...args) {
231
+ return new PathItemElement(...args);
232
+ }
233
+ },
234
+ LinkElement: {
235
+ server(...args) {
236
+ return new ServerElement(...args);
237
+ }
238
+ },
239
+ HeaderElement: {
240
+ schema(...args) {
241
+ return new SchemaElement(...args);
242
+ },
243
+ examples(...args) {
244
+ return new HeaderExamplesElement(...args);
245
+ },
246
+ content(...args) {
247
+ return new HeaderContentElement(...args);
248
+ }
249
+ },
250
+ ComponentsElement: {
251
+ schemas(...args) {
252
+ return new ComponentsSchemasElement(...args);
253
+ },
254
+ responses(...args) {
255
+ return new ComponentsResponsesElement(...args);
256
+ },
257
+ parameters(...args) {
258
+ return new ComponentsParametersElement(...args);
259
+ },
260
+ examples(...args) {
261
+ return new ComponentsExamplesElement(...args);
262
+ },
263
+ requestBodies(...args) {
264
+ return new ComponentsRequestBodiesElement(...args);
265
+ },
266
+ headers(...args) {
267
+ return new ComponentsHeadersElement(...args);
268
+ },
269
+ securitySchemes(...args) {
270
+ return new ComponentsSecuritySchemesElement(...args);
271
+ },
272
+ links(...args) {
273
+ return new ComponentsLinksElement(...args);
274
+ },
275
+ callbacks(...args) {
276
+ return new ComponentsCallbacksElement(...args);
277
+ },
278
+ pathItems(...args) {
279
+ return new ComponentsPathItemsElement(...args);
280
+ }
281
+ },
282
+ SecurityRequirementElement: {
283
+ '[key: *]': function key(...args) {
284
+ return new ArrayElement(...args);
285
+ }
286
+ },
287
+ TagElement: {
288
+ externalDocs(...args) {
289
+ return new ExternalDocumentationElement(...args);
290
+ }
291
+ },
292
+ SchemaElement: {
293
+ $vocabulary(...args) {
294
+ const element = new ObjectElement(...args);
295
+ element.classes.push('json-schema-$vocabulary');
296
+ return element;
297
+ },
298
+ $defs(...args) {
299
+ const element = new ObjectElement(...args);
300
+ element.classes.push('json-schema-$defs');
301
+ return element;
302
+ },
303
+ allOf(...args) {
304
+ const element = new ArrayElement(...args);
305
+ element.classes.push('json-schema-allOf');
306
+ return element;
307
+ },
308
+ anyOf(...args) {
309
+ const element = new ArrayElement(...args);
310
+ element.classes.push('json-schema-anyOf');
311
+ return element;
312
+ },
313
+ oneOf(...args) {
314
+ const element = new ArrayElement(...args);
315
+ element.classes.push('json-schema-oneOf');
316
+ return element;
317
+ },
318
+ not(...args) {
319
+ return new SchemaElement(...args);
320
+ },
321
+ if(...args) {
322
+ return new SchemaElement(...args);
323
+ },
324
+ then(...args) {
325
+ return new SchemaElement(...args);
326
+ },
327
+ else(...args) {
328
+ return new SchemaElement(...args);
329
+ },
330
+ dependentSchemas(...args) {
331
+ const element = new ObjectElement(...args);
332
+ element.classes.push('json-schema-dependentSchemas');
333
+ return element;
334
+ },
335
+ prefixItems(...args) {
336
+ const element = new ArrayElement(...args);
337
+ element.classes.push('json-schema-prefixItems');
338
+ return element;
339
+ },
340
+ items(...args) {
341
+ return new SchemaElement(...args);
342
+ },
343
+ contains(...args) {
344
+ return new SchemaElement(...args);
345
+ },
346
+ properties(...args) {
347
+ const element = new ObjectElement(...args);
348
+ element.classes.push('json-schema-properties');
349
+ return element;
350
+ },
351
+ patternProperties(...args) {
352
+ const element = new ObjectElement(...args);
353
+ element.classes.push('json-schema-patternProperties');
354
+ return element;
355
+ },
356
+ additionalProperties(...args) {
357
+ return new SchemaElement(...args);
358
+ },
359
+ propertyNames(...args) {
360
+ return new SchemaElement(...args);
361
+ },
362
+ unevaluatedItems(...args) {
363
+ return new SchemaElement(...args);
364
+ },
365
+ unevaluatedProperties(...args) {
366
+ return new SchemaElement(...args);
367
+ },
368
+ type(...args) {
369
+ const element = new ArrayElement(...args);
370
+ element.classes.push('json-schema-type');
371
+ return element;
372
+ },
373
+ enum(...args) {
374
+ const element = new ArrayElement(...args);
375
+ element.classes.push('json-schema-enum');
376
+ return element;
377
+ },
378
+ required(...args) {
379
+ const element = new ArrayElement(...args);
380
+ element.classes.push('json-schema-required');
381
+ return element;
382
+ },
383
+ dependentRequired(...args) {
384
+ const element = new ObjectElement(...args);
385
+ element.classes.push('json-schema-dependentRequired');
386
+ return element;
387
+ },
388
+ examples(...args) {
389
+ const element = new ArrayElement(...args);
390
+ element.classes.push('json-schema-examples');
391
+ return element;
392
+ },
393
+ contentSchema(...args) {
394
+ return new SchemaElement(...args);
395
+ },
396
+ discriminator(...args) {
397
+ return new DiscriminatorElement(...args);
398
+ },
399
+ xml(...args) {
400
+ return new XmlElement(...args);
401
+ },
402
+ externalDocs(...args) {
403
+ return new ExternalDocumentationElement(...args);
404
+ }
405
+ },
406
+ DiscriminatorElement: {
407
+ mapping(...args) {
408
+ return new DiscriminatorMappingElement(...args);
409
+ }
410
+ },
411
+ SecuritySchemeElement: {
412
+ flows(...args) {
413
+ return new OAuthFlowsElement(...args);
414
+ }
415
+ },
416
+ OAuthFlowsElement: {
417
+ implicit(...args) {
418
+ return new OAuthFlowElement(...args);
419
+ },
420
+ password(...args) {
421
+ return new OAuthFlowElement(...args);
422
+ },
423
+ clientCredentials(...args) {
424
+ return new OAuthFlowElement(...args);
425
+ },
426
+ authorizationCode(...args) {
427
+ return new OAuthFlowElement(...args);
428
+ }
429
+ },
430
+ OAuthFlowElement: {
431
+ scopes(...args) {
432
+ return new OAuthFlowScopesElement(...args);
433
+ }
434
+ },
435
+ // non-concrete types handling (NCEs)
436
+ [WebhooksElement.primaryClass]: {
437
+ '[key: *]': function key(...args) {
438
+ return new PathItemElement(...args);
439
+ }
440
+ },
441
+ [ServerVariablesElement.primaryClass]: {
442
+ '[key: *]': function key(...args) {
443
+ return new ServerVariableElement(...args);
444
+ }
445
+ },
446
+ [ComponentsSchemasElement.primaryClass]: {
447
+ '[key: *]': function key(...args) {
448
+ return new SchemaElement(...args);
449
+ }
450
+ },
451
+ [ComponentsResponsesElement.primaryClass]: {
452
+ '[key: *]': function key(...args) {
453
+ return new ResponseElement(...args);
454
+ }
455
+ },
456
+ [ComponentsParametersElement.primaryClass]: {
457
+ '[key: *]': function key(...args) {
458
+ return new ParameterElement(...args);
459
+ }
460
+ },
461
+ [ComponentsExamplesElement.primaryClass]: {
462
+ '[key: *]': function key(...args) {
463
+ return new ExampleElement(...args);
464
+ }
465
+ },
466
+ [ComponentsRequestBodiesElement.primaryClass]: {
467
+ '[key: *]': function key(...args) {
468
+ return new RequestBodyElement(...args);
469
+ }
470
+ },
471
+ [ComponentsHeadersElement.primaryClass]: {
472
+ '[key: *]': function key(...args) {
473
+ return new HeaderElement(...args);
474
+ }
475
+ },
476
+ [ComponentsSecuritySchemesElement.primaryClass]: {
477
+ '[key: *]': function key(...args) {
478
+ return new SecuritySchemeElement(...args);
479
+ }
480
+ },
481
+ [ComponentsLinksElement.primaryClass]: {
482
+ '[key: *]': function key(...args) {
483
+ return new LinkElement(...args);
484
+ }
485
+ },
486
+ [ComponentsCallbacksElement.primaryClass]: {
487
+ '[key: *]': function key(...args) {
488
+ return new CallbackElement(...args);
489
+ }
490
+ },
491
+ [ComponentsPathItemsElement.primaryClass]: {
492
+ '[key: *]': function key(...args) {
493
+ return new PathItemElement(...args);
494
+ }
495
+ },
496
+ [OperationCallbacksElement.primaryClass]: {
497
+ '[key: *]': function key(...args) {
498
+ return new CallbackElement(...args);
499
+ }
500
+ },
501
+ [ParameterExamplesElement.primaryClass]: {
502
+ '[key: *]': function key(...args) {
503
+ return new ExampleElement(...args);
504
+ }
505
+ },
506
+ [ParameterContentElement.primaryClass]: {
507
+ '[key: *]': function key(...args) {
508
+ return new MediaTypeElement(...args);
509
+ }
510
+ },
511
+ [RequestBodyContentElement.primaryClass]: {
512
+ '[key: *]': function key(...args) {
513
+ return new MediaTypeElement(...args);
514
+ }
515
+ },
516
+ [MediaTypeExamplesElement.primaryClass]: {
517
+ '[key: *]': function key(...args) {
518
+ return new ExampleElement(...args);
519
+ }
520
+ },
521
+ [MediaTypeEncodingElement.primaryClass]: {
522
+ '[key: *]': function key(...args) {
523
+ return new EncodingElement(...args);
524
+ }
525
+ },
526
+ [EncodingHeadersElement.primaryClass]: {
527
+ '[key: *]': function key(...args) {
528
+ return new HeaderElement(...args);
529
+ }
530
+ },
531
+ [ResponseHeadersElement.primaryClass]: {
532
+ '[key: *]': function key(...args) {
533
+ return new HeaderElement(...args);
534
+ }
535
+ },
536
+ [ResponseContentElement.primaryClass]: {
537
+ '[key: *]': function key(...args) {
538
+ return new MediaTypeElement(...args);
539
+ }
540
+ },
541
+ [ResponseLinksElement.primaryClass]: {
542
+ '[key: *]': function key(...args) {
543
+ return new LinkElement(...args);
544
+ }
545
+ },
546
+ 'json-schema-$defs': {
547
+ '[key: *]': function key(...args) {
548
+ return new SchemaElement(...args);
549
+ }
550
+ },
551
+ 'json-schema-dependentSchemas': {
552
+ '[key: *]': function key(...args) {
553
+ return new SchemaElement(...args);
554
+ }
555
+ },
556
+ 'json-schema-properties': {
557
+ '[key: *]': function key(...args) {
558
+ return new SchemaElement(...args);
559
+ }
560
+ },
561
+ [ServersElement.primaryClass]: {
562
+ '<*>': (...args) => new ServerElement(...args)
563
+ },
564
+ [SecurityElement.primaryClass]: {
565
+ '<*>': function asterisk(...args) {
566
+ return new SecurityRequirementElement(...args);
567
+ }
568
+ },
569
+ [TagsElement.primaryClass]: {
570
+ '<*>': function asterisk(...args) {
571
+ return new TagElement(...args);
572
+ }
573
+ },
574
+ [PathItemServersElement.primaryClass]: {
575
+ '<*>': function asterisk(...args) {
576
+ return new ServerElement(...args);
577
+ }
578
+ },
579
+ [PathItemParametersElement.primaryClass]: {
580
+ '<*>': function asterisk(...args) {
581
+ return new ParameterElement(...args);
582
+ }
583
+ },
584
+ [OperationParametersElement.primaryClass]: {
585
+ '<*>': function asterisk(...args) {
586
+ return new ParameterElement(...args);
587
+ }
588
+ },
589
+ [OperationSecurityElement.primaryClass]: {
590
+ '<*>': function asterisk(...args) {
591
+ return new SecurityRequirementElement(...args);
592
+ }
593
+ },
594
+ [OperationServersElement.primaryClass]: {
595
+ '<*>': function asterisk(...args) {
596
+ return new ServerElement(...args);
597
+ }
598
+ },
599
+ 'json-schema-allOf': {
600
+ '<*>': function asterisk(...args) {
601
+ return new SchemaElement(...args);
602
+ }
603
+ },
604
+ 'json-schema-anyOf': {
605
+ '<*>': function asterisk(...args) {
606
+ return new SchemaElement(...args);
607
+ }
608
+ },
609
+ 'json-schema-oneOf': {
610
+ '<*>': function asterisk(...args) {
611
+ return new SchemaElement(...args);
612
+ }
613
+ },
614
+ 'json-schema-prefixItems': {
615
+ '<*>': function asterisk(...args) {
616
+ return new SchemaElement(...args);
617
+ }
618
+ }
619
+ };
620
+ const findElementFactory = (ancestor, keyName) => {
621
+ const elementType = getNodeType(ancestor); // @ts-ignore
622
+ const keyMapping = schema[elementType] || schema[toValue(ancestor.classes.first)];
623
+ return typeof keyMapping === 'undefined' ? undefined : Object.hasOwn(keyMapping, '[key: *]') ? keyMapping['[key: *]'] : keyMapping[keyName];
624
+ };
625
+
626
+ /**
627
+ * @public
628
+ */
629
+ const plugin = () => ({
630
+ predicates
631
+ }) => {
632
+ const isEmptyElement = element => predicates.isStringElement(element) && predicates.includesClasses(['yaml-e-node', 'yaml-e-scalar'], element);
633
+ return {
634
+ visitor: {
635
+ StringElement(element, key, parent, path, ancestors) {
636
+ if (!isEmptyElement(element)) return undefined;
637
+ const lineage = [...ancestors, parent].filter(predicates.isElement);
638
+ const parentElement = lineage.at(-1);
639
+ let elementFactory;
640
+ let context;
641
+ if (predicates.isArrayElement(parentElement)) {
642
+ context = element;
643
+ elementFactory = findElementFactory(parentElement, '<*>');
644
+ } else if (predicates.isMemberElement(parentElement)) {
645
+ context = lineage.at(-2);
646
+ elementFactory = findElementFactory(context, toValue(parentElement.key));
647
+ }
648
+
649
+ // no element factory found
650
+ if (typeof elementFactory !== 'function') return undefined;
651
+ return elementFactory.call({
652
+ context
653
+ }, undefined, cloneDeep(element.meta), cloneDeep(element.attributes));
654
+ }
655
+ }
656
+ };
657
+ };
658
+ export default plugin;