@speclynx/apidom-ns-openapi-2 4.0.3 → 4.0.4

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