@speclynx/apidom-ns-openapi-3-1 4.0.2 → 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 (194) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/apidom-ns-openapi-3-1.browser.js +6 -6
  3. package/dist/apidom-ns-openapi-3-1.browser.min.js +1 -1
  4. package/package.json +8 -8
  5. package/src/elements/Callback.cjs +10 -0
  6. package/src/elements/Callback.mjs +7 -0
  7. package/src/elements/Components.cjs +17 -0
  8. package/src/elements/Components.mjs +14 -0
  9. package/src/elements/Contact.cjs +10 -0
  10. package/src/elements/Contact.mjs +7 -0
  11. package/src/elements/Discriminator.cjs +10 -0
  12. package/src/elements/Discriminator.mjs +7 -0
  13. package/src/elements/Encoding.cjs +10 -0
  14. package/src/elements/Encoding.mjs +7 -0
  15. package/src/elements/Example.cjs +10 -0
  16. package/src/elements/Example.mjs +7 -0
  17. package/src/elements/ExternalDocumentation.cjs +10 -0
  18. package/src/elements/ExternalDocumentation.mjs +7 -0
  19. package/src/elements/Header.cjs +17 -0
  20. package/src/elements/Header.mjs +13 -0
  21. package/src/elements/Info.cjs +23 -0
  22. package/src/elements/Info.mjs +19 -0
  23. package/src/elements/JsonSchemaDialect.cjs +16 -0
  24. package/src/elements/JsonSchemaDialect.mjs +13 -0
  25. package/src/elements/License.cjs +17 -0
  26. package/src/elements/License.mjs +14 -0
  27. package/src/elements/Link.cjs +10 -0
  28. package/src/elements/Link.mjs +7 -0
  29. package/src/elements/MediaType.cjs +17 -0
  30. package/src/elements/MediaType.mjs +13 -0
  31. package/src/elements/OAuthFlow.cjs +10 -0
  32. package/src/elements/OAuthFlow.mjs +7 -0
  33. package/src/elements/OAuthFlows.cjs +10 -0
  34. package/src/elements/OAuthFlows.mjs +7 -0
  35. package/src/elements/OpenApi3-1.cjs +77 -0
  36. package/src/elements/OpenApi3-1.mjs +73 -0
  37. package/src/elements/Openapi.cjs +10 -0
  38. package/src/elements/Openapi.mjs +7 -0
  39. package/src/elements/Operation.cjs +17 -0
  40. package/src/elements/Operation.mjs +13 -0
  41. package/src/elements/Parameter.cjs +17 -0
  42. package/src/elements/Parameter.mjs +13 -0
  43. package/src/elements/PathItem.cjs +59 -0
  44. package/src/elements/PathItem.mjs +55 -0
  45. package/src/elements/Paths.cjs +10 -0
  46. package/src/elements/Paths.mjs +7 -0
  47. package/src/elements/Reference.cjs +28 -0
  48. package/src/elements/Reference.mjs +25 -0
  49. package/src/elements/RequestBody.cjs +10 -0
  50. package/src/elements/RequestBody.mjs +7 -0
  51. package/src/elements/Response.cjs +10 -0
  52. package/src/elements/Response.mjs +7 -0
  53. package/src/elements/Responses.cjs +10 -0
  54. package/src/elements/Responses.mjs +7 -0
  55. package/src/elements/Schema.cjs +50 -0
  56. package/src/elements/Schema.mjs +46 -0
  57. package/src/elements/SecurityRequirement.cjs +10 -0
  58. package/src/elements/SecurityRequirement.mjs +7 -0
  59. package/src/elements/SecurityScheme.cjs +10 -0
  60. package/src/elements/SecurityScheme.mjs +7 -0
  61. package/src/elements/Server.cjs +10 -0
  62. package/src/elements/Server.mjs +7 -0
  63. package/src/elements/ServerVariable.cjs +10 -0
  64. package/src/elements/ServerVariable.mjs +7 -0
  65. package/src/elements/Tag.cjs +10 -0
  66. package/src/elements/Tag.mjs +7 -0
  67. package/src/elements/Xml.cjs +10 -0
  68. package/src/elements/Xml.mjs +7 -0
  69. package/src/elements/nces/ComponentsPathItems.cjs +16 -0
  70. package/src/elements/nces/ComponentsPathItems.mjs +13 -0
  71. package/src/elements/nces/Webhooks.cjs +16 -0
  72. package/src/elements/nces/Webhooks.mjs +13 -0
  73. package/src/index.cjs +182 -0
  74. package/src/index.mjs +31 -0
  75. package/src/media-types.cjs +34 -0
  76. package/src/media-types.mjs +30 -0
  77. package/src/namespace.cjs +81 -0
  78. package/src/namespace.mjs +76 -0
  79. package/src/predicates.cjs +228 -0
  80. package/src/predicates.mjs +195 -0
  81. package/src/refractor/index.cjs +368 -0
  82. package/src/refractor/index.mjs +330 -0
  83. package/src/refractor/inspect.cjs +207 -0
  84. package/src/refractor/inspect.mjs +171 -0
  85. package/src/refractor/plugins/normalize-header-examples/NormalizeStorage.cjs +38 -0
  86. package/src/refractor/plugins/normalize-header-examples/NormalizeStorage.mjs +34 -0
  87. package/src/refractor/plugins/normalize-header-examples/index.cjs +109 -0
  88. package/src/refractor/plugins/normalize-header-examples/index.mjs +103 -0
  89. package/src/refractor/plugins/normalize-operation-ids.cjs +166 -0
  90. package/src/refractor/plugins/normalize-operation-ids.mjs +161 -0
  91. package/src/refractor/plugins/normalize-parameter-examples.cjs +109 -0
  92. package/src/refractor/plugins/normalize-parameter-examples.mjs +103 -0
  93. package/src/refractor/plugins/normalize-parameters.cjs +109 -0
  94. package/src/refractor/plugins/normalize-parameters.mjs +103 -0
  95. package/src/refractor/plugins/normalize-security-requirements.cjs +75 -0
  96. package/src/refractor/plugins/normalize-security-requirements.mjs +69 -0
  97. package/src/refractor/plugins/normalize-servers.cjs +124 -0
  98. package/src/refractor/plugins/normalize-servers.mjs +118 -0
  99. package/src/refractor/plugins/replace-empty-element.cjs +669 -0
  100. package/src/refractor/plugins/replace-empty-element.mjs +661 -0
  101. package/src/refractor/predicates.cjs +36 -0
  102. package/src/refractor/predicates.mjs +31 -0
  103. package/src/refractor/specification.cjs +531 -0
  104. package/src/refractor/specification.mjs +526 -0
  105. package/src/refractor/toolbox.cjs +61 -0
  106. package/src/refractor/toolbox.mjs +53 -0
  107. package/src/refractor/visitors/open-api-3-1/JsonSchemaDialectVisitor.cjs +25 -0
  108. package/src/refractor/visitors/open-api-3-1/JsonSchemaDialectVisitor.mjs +19 -0
  109. package/src/refractor/visitors/open-api-3-1/OpenapiVisitor.cjs +25 -0
  110. package/src/refractor/visitors/open-api-3-1/OpenapiVisitor.mjs +19 -0
  111. package/src/refractor/visitors/open-api-3-1/WebhooksVisitor.cjs +43 -0
  112. package/src/refractor/visitors/open-api-3-1/WebhooksVisitor.mjs +37 -0
  113. package/src/refractor/visitors/open-api-3-1/bases.cjs +46 -0
  114. package/src/refractor/visitors/open-api-3-1/bases.mjs +43 -0
  115. package/src/refractor/visitors/open-api-3-1/callback/index.cjs +36 -0
  116. package/src/refractor/visitors/open-api-3-1/callback/index.mjs +31 -0
  117. package/src/refractor/visitors/open-api-3-1/components/PathItemsVisitor.cjs +33 -0
  118. package/src/refractor/visitors/open-api-3-1/components/PathItemsVisitor.mjs +27 -0
  119. package/src/refractor/visitors/open-api-3-1/components/SchemasVisitor.cjs +22 -0
  120. package/src/refractor/visitors/open-api-3-1/components/SchemasVisitor.mjs +17 -0
  121. package/src/refractor/visitors/open-api-3-1/components/index.cjs +21 -0
  122. package/src/refractor/visitors/open-api-3-1/components/index.mjs +16 -0
  123. package/src/refractor/visitors/open-api-3-1/contact/index.cjs +21 -0
  124. package/src/refractor/visitors/open-api-3-1/contact/index.mjs +16 -0
  125. package/src/refractor/visitors/open-api-3-1/distriminator/index.cjs +22 -0
  126. package/src/refractor/visitors/open-api-3-1/distriminator/index.mjs +17 -0
  127. package/src/refractor/visitors/open-api-3-1/encoding/index.cjs +21 -0
  128. package/src/refractor/visitors/open-api-3-1/encoding/index.mjs +16 -0
  129. package/src/refractor/visitors/open-api-3-1/example/index.cjs +21 -0
  130. package/src/refractor/visitors/open-api-3-1/example/index.mjs +16 -0
  131. package/src/refractor/visitors/open-api-3-1/external-documentation/index.cjs +21 -0
  132. package/src/refractor/visitors/open-api-3-1/external-documentation/index.mjs +16 -0
  133. package/src/refractor/visitors/open-api-3-1/header/index.cjs +21 -0
  134. package/src/refractor/visitors/open-api-3-1/header/index.mjs +16 -0
  135. package/src/refractor/visitors/open-api-3-1/index.cjs +41 -0
  136. package/src/refractor/visitors/open-api-3-1/index.mjs +35 -0
  137. package/src/refractor/visitors/open-api-3-1/info/index.cjs +21 -0
  138. package/src/refractor/visitors/open-api-3-1/info/index.mjs +16 -0
  139. package/src/refractor/visitors/open-api-3-1/license/index.cjs +21 -0
  140. package/src/refractor/visitors/open-api-3-1/license/index.mjs +16 -0
  141. package/src/refractor/visitors/open-api-3-1/link/index.cjs +21 -0
  142. package/src/refractor/visitors/open-api-3-1/link/index.mjs +16 -0
  143. package/src/refractor/visitors/open-api-3-1/media-type/index.cjs +21 -0
  144. package/src/refractor/visitors/open-api-3-1/media-type/index.mjs +16 -0
  145. package/src/refractor/visitors/open-api-3-1/oauth-flow/index.cjs +21 -0
  146. package/src/refractor/visitors/open-api-3-1/oauth-flow/index.mjs +16 -0
  147. package/src/refractor/visitors/open-api-3-1/oauth-flows/index.cjs +21 -0
  148. package/src/refractor/visitors/open-api-3-1/oauth-flows/index.mjs +16 -0
  149. package/src/refractor/visitors/open-api-3-1/operation/index.cjs +21 -0
  150. package/src/refractor/visitors/open-api-3-1/operation/index.mjs +16 -0
  151. package/src/refractor/visitors/open-api-3-1/parameter/index.cjs +21 -0
  152. package/src/refractor/visitors/open-api-3-1/parameter/index.mjs +16 -0
  153. package/src/refractor/visitors/open-api-3-1/path-item/index.cjs +21 -0
  154. package/src/refractor/visitors/open-api-3-1/path-item/index.mjs +16 -0
  155. package/src/refractor/visitors/open-api-3-1/paths/index.cjs +21 -0
  156. package/src/refractor/visitors/open-api-3-1/paths/index.mjs +16 -0
  157. package/src/refractor/visitors/open-api-3-1/reference/index.cjs +21 -0
  158. package/src/refractor/visitors/open-api-3-1/reference/index.mjs +16 -0
  159. package/src/refractor/visitors/open-api-3-1/request-body/index.cjs +21 -0
  160. package/src/refractor/visitors/open-api-3-1/request-body/index.mjs +16 -0
  161. package/src/refractor/visitors/open-api-3-1/response/index.cjs +21 -0
  162. package/src/refractor/visitors/open-api-3-1/response/index.mjs +16 -0
  163. package/src/refractor/visitors/open-api-3-1/responses/index.cjs +21 -0
  164. package/src/refractor/visitors/open-api-3-1/responses/index.mjs +16 -0
  165. package/src/refractor/visitors/open-api-3-1/schema/$defsVisitor.cjs +19 -0
  166. package/src/refractor/visitors/open-api-3-1/schema/$defsVisitor.mjs +16 -0
  167. package/src/refractor/visitors/open-api-3-1/schema/AllOfVisitor.cjs +15 -0
  168. package/src/refractor/visitors/open-api-3-1/schema/AllOfVisitor.mjs +11 -0
  169. package/src/refractor/visitors/open-api-3-1/schema/AnyOfVisitor.cjs +15 -0
  170. package/src/refractor/visitors/open-api-3-1/schema/AnyOfVisitor.mjs +11 -0
  171. package/src/refractor/visitors/open-api-3-1/schema/DependentSchemasVisitor.cjs +15 -0
  172. package/src/refractor/visitors/open-api-3-1/schema/DependentSchemasVisitor.mjs +11 -0
  173. package/src/refractor/visitors/open-api-3-1/schema/OneOfVisitor.cjs +15 -0
  174. package/src/refractor/visitors/open-api-3-1/schema/OneOfVisitor.mjs +11 -0
  175. package/src/refractor/visitors/open-api-3-1/schema/PatternPropertiesVisitor.cjs +15 -0
  176. package/src/refractor/visitors/open-api-3-1/schema/PatternPropertiesVisitor.mjs +11 -0
  177. package/src/refractor/visitors/open-api-3-1/schema/PrefixItemsVisitor.cjs +15 -0
  178. package/src/refractor/visitors/open-api-3-1/schema/PrefixItemsVisitor.mjs +11 -0
  179. package/src/refractor/visitors/open-api-3-1/schema/PropertiesVisitor.cjs +15 -0
  180. package/src/refractor/visitors/open-api-3-1/schema/PropertiesVisitor.mjs +11 -0
  181. package/src/refractor/visitors/open-api-3-1/schema/index.cjs +76 -0
  182. package/src/refractor/visitors/open-api-3-1/schema/index.mjs +70 -0
  183. package/src/refractor/visitors/open-api-3-1/security-requirement/index.cjs +21 -0
  184. package/src/refractor/visitors/open-api-3-1/security-requirement/index.mjs +16 -0
  185. package/src/refractor/visitors/open-api-3-1/security-scheme/index.cjs +21 -0
  186. package/src/refractor/visitors/open-api-3-1/security-scheme/index.mjs +16 -0
  187. package/src/refractor/visitors/open-api-3-1/server/index.cjs +21 -0
  188. package/src/refractor/visitors/open-api-3-1/server/index.mjs +16 -0
  189. package/src/refractor/visitors/open-api-3-1/server-variable/index.cjs +21 -0
  190. package/src/refractor/visitors/open-api-3-1/server-variable/index.mjs +16 -0
  191. package/src/refractor/visitors/open-api-3-1/tag/index.cjs +21 -0
  192. package/src/refractor/visitors/open-api-3-1/tag/index.mjs +16 -0
  193. package/src/refractor/visitors/open-api-3-1/xml/index.cjs +21 -0
  194. package/src/refractor/visitors/open-api-3-1/xml/index.mjs +16 -0
@@ -0,0 +1,207 @@
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 _Callback = _interopRequireDefault(require("../elements/Callback.cjs"));
8
+ exports.CallbackElement = _Callback.default;
9
+ var _Components = _interopRequireDefault(require("../elements/Components.cjs"));
10
+ exports.ComponentsElement = _Components.default;
11
+ var _Contact = _interopRequireDefault(require("../elements/Contact.cjs"));
12
+ exports.ContactElement = _Contact.default;
13
+ var _Discriminator = _interopRequireDefault(require("../elements/Discriminator.cjs"));
14
+ exports.DiscriminatorElement = _Discriminator.default;
15
+ var _Encoding = _interopRequireDefault(require("../elements/Encoding.cjs"));
16
+ exports.EncodingElement = _Encoding.default;
17
+ var _Example = _interopRequireDefault(require("../elements/Example.cjs"));
18
+ exports.ExampleElement = _Example.default;
19
+ var _ExternalDocumentation = _interopRequireDefault(require("../elements/ExternalDocumentation.cjs"));
20
+ exports.ExternalDocumentationElement = _ExternalDocumentation.default;
21
+ var _Header = _interopRequireDefault(require("../elements/Header.cjs"));
22
+ exports.HeaderElement = _Header.default;
23
+ var _Info = _interopRequireDefault(require("../elements/Info.cjs"));
24
+ exports.InfoElement = _Info.default;
25
+ var _JsonSchemaDialect = _interopRequireDefault(require("../elements/JsonSchemaDialect.cjs"));
26
+ exports.JsonSchemaDialectElement = _JsonSchemaDialect.default;
27
+ var _License = _interopRequireDefault(require("../elements/License.cjs"));
28
+ exports.LicenseElement = _License.default;
29
+ var _Link = _interopRequireDefault(require("../elements/Link.cjs"));
30
+ exports.LinkElement = _Link.default;
31
+ var _MediaType = _interopRequireDefault(require("../elements/MediaType.cjs"));
32
+ exports.MediaTypeElement = _MediaType.default;
33
+ var _OAuthFlow = _interopRequireDefault(require("../elements/OAuthFlow.cjs"));
34
+ exports.OAuthFlowElement = _OAuthFlow.default;
35
+ var _OAuthFlows = _interopRequireDefault(require("../elements/OAuthFlows.cjs"));
36
+ exports.OAuthFlowsElement = _OAuthFlows.default;
37
+ var _Openapi = _interopRequireDefault(require("../elements/Openapi.cjs"));
38
+ exports.OpenapiElement = _Openapi.default;
39
+ var _OpenApi = _interopRequireDefault(require("../elements/OpenApi3-1.cjs"));
40
+ exports.OpenApi3_1Element = _OpenApi.default;
41
+ var _Operation = _interopRequireDefault(require("../elements/Operation.cjs"));
42
+ exports.OperationElement = _Operation.default;
43
+ var _Parameter = _interopRequireDefault(require("../elements/Parameter.cjs"));
44
+ exports.ParameterElement = _Parameter.default;
45
+ var _PathItem = _interopRequireDefault(require("../elements/PathItem.cjs"));
46
+ exports.PathItemElement = _PathItem.default;
47
+ var _Paths = _interopRequireDefault(require("../elements/Paths.cjs"));
48
+ exports.PathsElement = _Paths.default;
49
+ var _Reference = _interopRequireDefault(require("../elements/Reference.cjs"));
50
+ exports.ReferenceElement = _Reference.default;
51
+ var _RequestBody = _interopRequireDefault(require("../elements/RequestBody.cjs"));
52
+ exports.RequestBodyElement = _RequestBody.default;
53
+ var _Response = _interopRequireDefault(require("../elements/Response.cjs"));
54
+ exports.ResponseElement = _Response.default;
55
+ var _Responses = _interopRequireDefault(require("../elements/Responses.cjs"));
56
+ exports.ResponsesElement = _Responses.default;
57
+ var _Schema = _interopRequireDefault(require("../elements/Schema.cjs"));
58
+ exports.SchemaElement = _Schema.default;
59
+ var _SecurityRequirement = _interopRequireDefault(require("../elements/SecurityRequirement.cjs"));
60
+ exports.SecurityRequirementElement = _SecurityRequirement.default;
61
+ var _SecurityScheme = _interopRequireDefault(require("../elements/SecurityScheme.cjs"));
62
+ exports.SecuritySchemeElement = _SecurityScheme.default;
63
+ var _Server = _interopRequireDefault(require("../elements/Server.cjs"));
64
+ exports.ServerElement = _Server.default;
65
+ var _ServerVariable = _interopRequireDefault(require("../elements/ServerVariable.cjs"));
66
+ exports.ServerVariableElement = _ServerVariable.default;
67
+ var _Tag = _interopRequireDefault(require("../elements/Tag.cjs"));
68
+ exports.TagElement = _Tag.default;
69
+ var _Xml = _interopRequireDefault(require("../elements/Xml.cjs"));
70
+ exports.XmlElement = _Xml.default;
71
+ var _specification = _interopRequireDefault(require("./specification.cjs"));
72
+ /**
73
+ * OpenAPI 3.1 specification elements.
74
+ */
75
+
76
+ /**
77
+ * @public
78
+ */
79
+
80
+ // Resolve specification to dereference $ref pointers
81
+ const resolvedSpec = (0, _apidomCore.resolveSpecification)(_specification.default);
82
+
83
+ // Extract fixed fields as list of { name, alias?, $visitor }
84
+ const getFixedFields = fixedFieldsSpec => {
85
+ return Object.entries(fixedFieldsSpec).map(([name, fieldSpec]) => {
86
+ if ((0, _ramdaAdjunct.isPlainObject)(fieldSpec)) {
87
+ return {
88
+ name,
89
+ ...fieldSpec
90
+ };
91
+ }
92
+ return {
93
+ name,
94
+ $visitor: fieldSpec
95
+ };
96
+ });
97
+ };
98
+
99
+ // OpenAPI 3.1 specification elements
100
+ Object.defineProperty(_OpenApi.default, 'fixedFields', {
101
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.OpenApi.fixedFields),
102
+ enumerable: true
103
+ });
104
+ Object.defineProperty(_Info.default, 'fixedFields', {
105
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Info.fixedFields),
106
+ enumerable: true
107
+ });
108
+ Object.defineProperty(_Contact.default, 'fixedFields', {
109
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Contact.fixedFields),
110
+ enumerable: true
111
+ });
112
+ Object.defineProperty(_License.default, 'fixedFields', {
113
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.License.fixedFields),
114
+ enumerable: true
115
+ });
116
+ Object.defineProperty(_Server.default, 'fixedFields', {
117
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Server.fixedFields),
118
+ enumerable: true
119
+ });
120
+ Object.defineProperty(_ServerVariable.default, 'fixedFields', {
121
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.ServerVariable.fixedFields),
122
+ enumerable: true
123
+ });
124
+ Object.defineProperty(_Components.default, 'fixedFields', {
125
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Components.fixedFields),
126
+ enumerable: true
127
+ });
128
+ Object.defineProperty(_PathItem.default, 'fixedFields', {
129
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.PathItem.fixedFields),
130
+ enumerable: true
131
+ });
132
+ Object.defineProperty(_Operation.default, 'fixedFields', {
133
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Operation.fixedFields),
134
+ enumerable: true
135
+ });
136
+ Object.defineProperty(_ExternalDocumentation.default, 'fixedFields', {
137
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.ExternalDocumentation.fixedFields),
138
+ enumerable: true
139
+ });
140
+ Object.defineProperty(_Parameter.default, 'fixedFields', {
141
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Parameter.fixedFields),
142
+ enumerable: true
143
+ });
144
+ Object.defineProperty(_RequestBody.default, 'fixedFields', {
145
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.RequestBody.fixedFields),
146
+ enumerable: true
147
+ });
148
+ Object.defineProperty(_MediaType.default, 'fixedFields', {
149
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.MediaType.fixedFields),
150
+ enumerable: true
151
+ });
152
+ Object.defineProperty(_Encoding.default, 'fixedFields', {
153
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Encoding.fixedFields),
154
+ enumerable: true
155
+ });
156
+ Object.defineProperty(_Responses.default, 'fixedFields', {
157
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Responses.fixedFields),
158
+ enumerable: true
159
+ });
160
+ Object.defineProperty(_Response.default, 'fixedFields', {
161
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Response.fixedFields),
162
+ enumerable: true
163
+ });
164
+ Object.defineProperty(_Example.default, 'fixedFields', {
165
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Example.fixedFields),
166
+ enumerable: true
167
+ });
168
+ Object.defineProperty(_Link.default, 'fixedFields', {
169
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Link.fixedFields),
170
+ enumerable: true
171
+ });
172
+ Object.defineProperty(_Header.default, 'fixedFields', {
173
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Header.fixedFields),
174
+ enumerable: true
175
+ });
176
+ Object.defineProperty(_Tag.default, 'fixedFields', {
177
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Tag.fixedFields),
178
+ enumerable: true
179
+ });
180
+ Object.defineProperty(_Reference.default, 'fixedFields', {
181
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Reference.fixedFields),
182
+ enumerable: true
183
+ });
184
+ Object.defineProperty(_Schema.default, 'fixedFields', {
185
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Schema.fixedFields),
186
+ enumerable: true
187
+ });
188
+ Object.defineProperty(_Discriminator.default, 'fixedFields', {
189
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Discriminator.fixedFields),
190
+ enumerable: true
191
+ });
192
+ Object.defineProperty(_Xml.default, 'fixedFields', {
193
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.XML.fixedFields),
194
+ enumerable: true
195
+ });
196
+ Object.defineProperty(_SecurityScheme.default, 'fixedFields', {
197
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.SecurityScheme.fixedFields),
198
+ enumerable: true
199
+ });
200
+ Object.defineProperty(_OAuthFlows.default, 'fixedFields', {
201
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.OAuthFlows.fixedFields),
202
+ enumerable: true
203
+ });
204
+ Object.defineProperty(_OAuthFlow.default, 'fixedFields', {
205
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.OAuthFlow.fixedFields),
206
+ enumerable: true
207
+ });
@@ -0,0 +1,171 @@
1
+ import { resolveSpecification } from '@speclynx/apidom-core';
2
+ import { isPlainObject } from 'ramda-adjunct';
3
+
4
+ /**
5
+ * OpenAPI 3.1 specification elements.
6
+ */
7
+ import CallbackElement from "../elements/Callback.mjs";
8
+ import ComponentsElement from "../elements/Components.mjs";
9
+ import ContactElement from "../elements/Contact.mjs";
10
+ import DiscriminatorElement from "../elements/Discriminator.mjs";
11
+ import EncodingElement from "../elements/Encoding.mjs";
12
+ import ExampleElement from "../elements/Example.mjs";
13
+ import ExternalDocumentationElement from "../elements/ExternalDocumentation.mjs";
14
+ import HeaderElement from "../elements/Header.mjs";
15
+ import InfoElement from "../elements/Info.mjs";
16
+ import JsonSchemaDialectElement from "../elements/JsonSchemaDialect.mjs";
17
+ import LicenseElement from "../elements/License.mjs";
18
+ import LinkElement from "../elements/Link.mjs";
19
+ import MediaTypeElement from "../elements/MediaType.mjs";
20
+ import OAuthFlowElement from "../elements/OAuthFlow.mjs";
21
+ import OAuthFlowsElement from "../elements/OAuthFlows.mjs";
22
+ import OpenapiElement from "../elements/Openapi.mjs";
23
+ import OpenApi3_1Element from "../elements/OpenApi3-1.mjs";
24
+ import OperationElement from "../elements/Operation.mjs";
25
+ import ParameterElement from "../elements/Parameter.mjs";
26
+ import PathItemElement from "../elements/PathItem.mjs";
27
+ import PathsElement from "../elements/Paths.mjs";
28
+ import ReferenceElement from "../elements/Reference.mjs";
29
+ import RequestBodyElement from "../elements/RequestBody.mjs";
30
+ import ResponseElement from "../elements/Response.mjs";
31
+ import ResponsesElement from "../elements/Responses.mjs";
32
+ import SchemaElement from "../elements/Schema.mjs";
33
+ import SecurityRequirementElement from "../elements/SecurityRequirement.mjs";
34
+ import SecuritySchemeElement from "../elements/SecurityScheme.mjs";
35
+ import ServerElement from "../elements/Server.mjs";
36
+ import ServerVariableElement from "../elements/ServerVariable.mjs";
37
+ import TagElement from "../elements/Tag.mjs";
38
+ import XmlElement from "../elements/Xml.mjs";
39
+ import specification from "./specification.mjs";
40
+ /**
41
+ * @public
42
+ */
43
+ // Resolve specification to dereference $ref pointers
44
+ const resolvedSpec = resolveSpecification(specification);
45
+
46
+ // Extract fixed fields as list of { name, alias?, $visitor }
47
+ const getFixedFields = fixedFieldsSpec => {
48
+ return Object.entries(fixedFieldsSpec).map(([name, fieldSpec]) => {
49
+ if (isPlainObject(fieldSpec)) {
50
+ return {
51
+ name,
52
+ ...fieldSpec
53
+ };
54
+ }
55
+ return {
56
+ name,
57
+ $visitor: fieldSpec
58
+ };
59
+ });
60
+ };
61
+
62
+ // OpenAPI 3.1 specification elements
63
+ Object.defineProperty(OpenApi3_1Element, 'fixedFields', {
64
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.OpenApi.fixedFields),
65
+ enumerable: true
66
+ });
67
+ Object.defineProperty(InfoElement, 'fixedFields', {
68
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Info.fixedFields),
69
+ enumerable: true
70
+ });
71
+ Object.defineProperty(ContactElement, 'fixedFields', {
72
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Contact.fixedFields),
73
+ enumerable: true
74
+ });
75
+ Object.defineProperty(LicenseElement, 'fixedFields', {
76
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.License.fixedFields),
77
+ enumerable: true
78
+ });
79
+ Object.defineProperty(ServerElement, 'fixedFields', {
80
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Server.fixedFields),
81
+ enumerable: true
82
+ });
83
+ Object.defineProperty(ServerVariableElement, 'fixedFields', {
84
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.ServerVariable.fixedFields),
85
+ enumerable: true
86
+ });
87
+ Object.defineProperty(ComponentsElement, 'fixedFields', {
88
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Components.fixedFields),
89
+ enumerable: true
90
+ });
91
+ Object.defineProperty(PathItemElement, 'fixedFields', {
92
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.PathItem.fixedFields),
93
+ enumerable: true
94
+ });
95
+ Object.defineProperty(OperationElement, 'fixedFields', {
96
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Operation.fixedFields),
97
+ enumerable: true
98
+ });
99
+ Object.defineProperty(ExternalDocumentationElement, 'fixedFields', {
100
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.ExternalDocumentation.fixedFields),
101
+ enumerable: true
102
+ });
103
+ Object.defineProperty(ParameterElement, 'fixedFields', {
104
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Parameter.fixedFields),
105
+ enumerable: true
106
+ });
107
+ Object.defineProperty(RequestBodyElement, 'fixedFields', {
108
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.RequestBody.fixedFields),
109
+ enumerable: true
110
+ });
111
+ Object.defineProperty(MediaTypeElement, 'fixedFields', {
112
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.MediaType.fixedFields),
113
+ enumerable: true
114
+ });
115
+ Object.defineProperty(EncodingElement, 'fixedFields', {
116
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Encoding.fixedFields),
117
+ enumerable: true
118
+ });
119
+ Object.defineProperty(ResponsesElement, 'fixedFields', {
120
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Responses.fixedFields),
121
+ enumerable: true
122
+ });
123
+ Object.defineProperty(ResponseElement, 'fixedFields', {
124
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Response.fixedFields),
125
+ enumerable: true
126
+ });
127
+ Object.defineProperty(ExampleElement, 'fixedFields', {
128
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Example.fixedFields),
129
+ enumerable: true
130
+ });
131
+ Object.defineProperty(LinkElement, 'fixedFields', {
132
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Link.fixedFields),
133
+ enumerable: true
134
+ });
135
+ Object.defineProperty(HeaderElement, 'fixedFields', {
136
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Header.fixedFields),
137
+ enumerable: true
138
+ });
139
+ Object.defineProperty(TagElement, 'fixedFields', {
140
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Tag.fixedFields),
141
+ enumerable: true
142
+ });
143
+ Object.defineProperty(ReferenceElement, 'fixedFields', {
144
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Reference.fixedFields),
145
+ enumerable: true
146
+ });
147
+ Object.defineProperty(SchemaElement, 'fixedFields', {
148
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Schema.fixedFields),
149
+ enumerable: true
150
+ });
151
+ Object.defineProperty(DiscriminatorElement, 'fixedFields', {
152
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Discriminator.fixedFields),
153
+ enumerable: true
154
+ });
155
+ Object.defineProperty(XmlElement, 'fixedFields', {
156
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.XML.fixedFields),
157
+ enumerable: true
158
+ });
159
+ Object.defineProperty(SecuritySchemeElement, 'fixedFields', {
160
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.SecurityScheme.fixedFields),
161
+ enumerable: true
162
+ });
163
+ Object.defineProperty(OAuthFlowsElement, 'fixedFields', {
164
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.OAuthFlows.fixedFields),
165
+ enumerable: true
166
+ });
167
+ Object.defineProperty(OAuthFlowElement, 'fixedFields', {
168
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.OAuthFlow.fixedFields),
169
+ enumerable: true
170
+ });
171
+ export { CallbackElement, ComponentsElement, ContactElement, DiscriminatorElement, EncodingElement, ExampleElement, ExternalDocumentationElement, HeaderElement, InfoElement, JsonSchemaDialectElement, LicenseElement, LinkElement, MediaTypeElement, OAuthFlowElement, OAuthFlowsElement, OpenapiElement, OpenApi3_1Element, OperationElement, ParameterElement, PathItemElement, PathsElement, ReferenceElement, RequestBodyElement, ResponseElement, ResponsesElement, SchemaElement, SecurityRequirementElement, SecuritySchemeElement, ServerElement, ServerVariableElement, TagElement, XmlElement };
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.default = void 0;
5
+ var _apidomDatamodel = require("@speclynx/apidom-datamodel");
6
+ class NormalizeStorage {
7
+ internalStore;
8
+ constructor(storageElement, storageField, storageSubField) {
9
+ this.storageElement = storageElement;
10
+ this.storageField = storageField;
11
+ this.storageSubField = storageSubField;
12
+ }
13
+ get store() {
14
+ if (!this.internalStore) {
15
+ let rootStore = this.storageElement.get(this.storageField);
16
+ if (!(0, _apidomDatamodel.isObjectElement)(rootStore)) {
17
+ rootStore = new _apidomDatamodel.ObjectElement();
18
+ this.storageElement.set(this.storageField, rootStore);
19
+ }
20
+ let store = rootStore.get(this.storageSubField);
21
+ if (!(0, _apidomDatamodel.isArrayElement)(store)) {
22
+ store = new _apidomDatamodel.ArrayElement();
23
+ rootStore.set(this.storageSubField, store);
24
+ }
25
+ this.internalStore = store;
26
+ }
27
+ return this.internalStore;
28
+ }
29
+ append(pointer) {
30
+ if (!this.includes(pointer)) {
31
+ this.store.push(pointer);
32
+ }
33
+ }
34
+ includes(pointer) {
35
+ return this.store.includes(pointer);
36
+ }
37
+ }
38
+ var _default = exports.default = NormalizeStorage;
@@ -0,0 +1,34 @@
1
+ import { ArrayElement, ObjectElement, isObjectElement, isArrayElement } from '@speclynx/apidom-datamodel';
2
+ class NormalizeStorage {
3
+ internalStore;
4
+ constructor(storageElement, storageField, storageSubField) {
5
+ this.storageElement = storageElement;
6
+ this.storageField = storageField;
7
+ this.storageSubField = storageSubField;
8
+ }
9
+ get store() {
10
+ if (!this.internalStore) {
11
+ let rootStore = this.storageElement.get(this.storageField);
12
+ if (!isObjectElement(rootStore)) {
13
+ rootStore = new ObjectElement();
14
+ this.storageElement.set(this.storageField, rootStore);
15
+ }
16
+ let store = rootStore.get(this.storageSubField);
17
+ if (!isArrayElement(store)) {
18
+ store = new ArrayElement();
19
+ rootStore.set(this.storageSubField, store);
20
+ }
21
+ this.internalStore = store;
22
+ }
23
+ return this.internalStore;
24
+ }
25
+ append(pointer) {
26
+ if (!this.includes(pointer)) {
27
+ this.store.push(pointer);
28
+ }
29
+ }
30
+ includes(pointer) {
31
+ return this.store.includes(pointer);
32
+ }
33
+ }
34
+ export default NormalizeStorage;
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4
+ exports.__esModule = true;
5
+ exports.default = void 0;
6
+ var _apidomDatamodel = require("@speclynx/apidom-datamodel");
7
+ var _NormalizeStorage = _interopRequireDefault(require("./NormalizeStorage.cjs"));
8
+ /**
9
+ * Override of Schema.example and Schema.examples field inside the Header Objects.
10
+ *
11
+ * Header Object has two fixed fields:
12
+ * - `example` of type `Any`
13
+ * - `examples` of type `Map[string, Example Object | Reference Object]`
14
+ *
15
+ * OpenAPI 3.1 specification excerpt that defines the override behavior:
16
+ *
17
+ * The example value SHALL override the example provided by the schema.
18
+ * Furthermore, if referencing a schema that contains an example, the examples value SHALL override the example provided by the schema.
19
+ *
20
+ * NOTE: this plugin is idempotent
21
+ * @public
22
+ */
23
+
24
+ /**
25
+ * @public
26
+ */
27
+ const plugin = ({
28
+ storageField = 'x-normalized'
29
+ } = {}) => toolbox => {
30
+ const {
31
+ predicates,
32
+ ancestorLineageToJSONPointer
33
+ } = toolbox;
34
+ let storage;
35
+ return {
36
+ visitor: {
37
+ OpenApi3_1Element: {
38
+ enter(path) {
39
+ const element = path.node;
40
+ storage = new _NormalizeStorage.default(element, storageField, 'header-examples');
41
+ },
42
+ leave() {
43
+ storage = undefined;
44
+ }
45
+ },
46
+ HeaderElement: {
47
+ leave(path) {
48
+ const headerElement = path.node;
49
+ const ancestors = path.getAncestorNodes().reverse(); // root to parent order
50
+
51
+ // skip visiting this Header Object
52
+ if (ancestors.some(predicates.isComponentsElement)) {
53
+ return;
54
+ }
55
+
56
+ // no Header.schema field present
57
+ if (typeof headerElement.schema === 'undefined' || !predicates.isSchemaElement(headerElement.schema)) {
58
+ return;
59
+ }
60
+ // Schema contains no example
61
+ if (typeof headerElement.schema?.example === 'undefined' && typeof headerElement.schema?.examples === 'undefined') {
62
+ return;
63
+ }
64
+ const headerJSONPointer = ancestorLineageToJSONPointer([...ancestors, headerElement]);
65
+
66
+ // skip visiting this Header Object if it's already normalized
67
+ if (storage.includes(headerJSONPointer)) {
68
+ return;
69
+ }
70
+
71
+ /**
72
+ * Header.examples and Schema.examples have preferences over the older
73
+ * and deprected `example` field.
74
+ */
75
+ if (typeof headerElement.examples !== 'undefined' && predicates.isObjectElement(headerElement.examples)) {
76
+ // @ts-ignore
77
+ const examples = headerElement.examples.map(example => {
78
+ return _apidomDatamodel.cloneDeep.safe(example.value);
79
+ });
80
+ if (typeof headerElement.schema.examples !== 'undefined') {
81
+ headerElement.schema.set('examples', examples);
82
+ storage.append(headerJSONPointer);
83
+ }
84
+ if (typeof headerElement.schema.example !== 'undefined') {
85
+ headerElement.schema.set('example', examples[0]);
86
+ storage.append(headerJSONPointer);
87
+ }
88
+ return;
89
+ }
90
+
91
+ /**
92
+ * Handle deprecated `example` field.
93
+ */
94
+ if (typeof headerElement.example !== 'undefined') {
95
+ if (typeof headerElement.schema.examples !== 'undefined') {
96
+ headerElement.schema.set('examples', [(0, _apidomDatamodel.cloneDeep)(headerElement.example)]);
97
+ storage.append(headerJSONPointer);
98
+ }
99
+ if (typeof headerElement.schema.example !== 'undefined') {
100
+ headerElement.schema.set('example', (0, _apidomDatamodel.cloneDeep)(headerElement.example));
101
+ storage.append(headerJSONPointer);
102
+ }
103
+ }
104
+ }
105
+ }
106
+ }
107
+ };
108
+ };
109
+ var _default = exports.default = plugin;
@@ -0,0 +1,103 @@
1
+ import { cloneDeep } from '@speclynx/apidom-datamodel';
2
+ import NormalizeStorage from "./NormalizeStorage.mjs";
3
+ /**
4
+ * Override of Schema.example and Schema.examples field inside the Header Objects.
5
+ *
6
+ * Header Object has two fixed fields:
7
+ * - `example` of type `Any`
8
+ * - `examples` of type `Map[string, Example Object | Reference Object]`
9
+ *
10
+ * OpenAPI 3.1 specification excerpt that defines the override behavior:
11
+ *
12
+ * The example value SHALL override the example provided by the schema.
13
+ * Furthermore, if referencing a schema that contains an example, the examples value SHALL override the example provided by the schema.
14
+ *
15
+ * NOTE: this plugin is idempotent
16
+ * @public
17
+ */
18
+ /**
19
+ * @public
20
+ */
21
+ const plugin = ({
22
+ storageField = 'x-normalized'
23
+ } = {}) => toolbox => {
24
+ const {
25
+ predicates,
26
+ ancestorLineageToJSONPointer
27
+ } = toolbox;
28
+ let storage;
29
+ return {
30
+ visitor: {
31
+ OpenApi3_1Element: {
32
+ enter(path) {
33
+ const element = path.node;
34
+ storage = new NormalizeStorage(element, storageField, 'header-examples');
35
+ },
36
+ leave() {
37
+ storage = undefined;
38
+ }
39
+ },
40
+ HeaderElement: {
41
+ leave(path) {
42
+ const headerElement = path.node;
43
+ const ancestors = path.getAncestorNodes().reverse(); // root to parent order
44
+
45
+ // skip visiting this Header Object
46
+ if (ancestors.some(predicates.isComponentsElement)) {
47
+ return;
48
+ }
49
+
50
+ // no Header.schema field present
51
+ if (typeof headerElement.schema === 'undefined' || !predicates.isSchemaElement(headerElement.schema)) {
52
+ return;
53
+ }
54
+ // Schema contains no example
55
+ if (typeof headerElement.schema?.example === 'undefined' && typeof headerElement.schema?.examples === 'undefined') {
56
+ return;
57
+ }
58
+ const headerJSONPointer = ancestorLineageToJSONPointer([...ancestors, headerElement]);
59
+
60
+ // skip visiting this Header Object if it's already normalized
61
+ if (storage.includes(headerJSONPointer)) {
62
+ return;
63
+ }
64
+
65
+ /**
66
+ * Header.examples and Schema.examples have preferences over the older
67
+ * and deprected `example` field.
68
+ */
69
+ if (typeof headerElement.examples !== 'undefined' && predicates.isObjectElement(headerElement.examples)) {
70
+ // @ts-ignore
71
+ const examples = headerElement.examples.map(example => {
72
+ return cloneDeep.safe(example.value);
73
+ });
74
+ if (typeof headerElement.schema.examples !== 'undefined') {
75
+ headerElement.schema.set('examples', examples);
76
+ storage.append(headerJSONPointer);
77
+ }
78
+ if (typeof headerElement.schema.example !== 'undefined') {
79
+ headerElement.schema.set('example', examples[0]);
80
+ storage.append(headerJSONPointer);
81
+ }
82
+ return;
83
+ }
84
+
85
+ /**
86
+ * Handle deprecated `example` field.
87
+ */
88
+ if (typeof headerElement.example !== 'undefined') {
89
+ if (typeof headerElement.schema.examples !== 'undefined') {
90
+ headerElement.schema.set('examples', [cloneDeep(headerElement.example)]);
91
+ storage.append(headerJSONPointer);
92
+ }
93
+ if (typeof headerElement.schema.example !== 'undefined') {
94
+ headerElement.schema.set('example', cloneDeep(headerElement.example));
95
+ storage.append(headerJSONPointer);
96
+ }
97
+ }
98
+ }
99
+ }
100
+ }
101
+ };
102
+ };
103
+ export default plugin;