@speclynx/apidom-ns-openapi-3-1 4.0.2 → 4.0.3

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 (287) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/package.json +9 -10
  3. package/src/elements/Callback.cjs +10 -0
  4. package/src/elements/Callback.mjs +7 -0
  5. package/src/elements/Callback.ts +8 -0
  6. package/src/elements/Components.cjs +17 -0
  7. package/src/elements/Components.mjs +14 -0
  8. package/src/elements/Components.ts +17 -0
  9. package/src/elements/Contact.cjs +10 -0
  10. package/src/elements/Contact.mjs +7 -0
  11. package/src/elements/Contact.ts +8 -0
  12. package/src/elements/Discriminator.cjs +10 -0
  13. package/src/elements/Discriminator.mjs +7 -0
  14. package/src/elements/Discriminator.ts +8 -0
  15. package/src/elements/Encoding.cjs +10 -0
  16. package/src/elements/Encoding.mjs +7 -0
  17. package/src/elements/Encoding.ts +8 -0
  18. package/src/elements/Example.cjs +10 -0
  19. package/src/elements/Example.mjs +7 -0
  20. package/src/elements/Example.ts +8 -0
  21. package/src/elements/ExternalDocumentation.cjs +10 -0
  22. package/src/elements/ExternalDocumentation.mjs +7 -0
  23. package/src/elements/ExternalDocumentation.ts +8 -0
  24. package/src/elements/Header.cjs +17 -0
  25. package/src/elements/Header.mjs +13 -0
  26. package/src/elements/Header.ts +18 -0
  27. package/src/elements/Info.cjs +23 -0
  28. package/src/elements/Info.mjs +19 -0
  29. package/src/elements/Info.ts +27 -0
  30. package/src/elements/JsonSchemaDialect.cjs +16 -0
  31. package/src/elements/JsonSchemaDialect.mjs +13 -0
  32. package/src/elements/JsonSchemaDialect.ts +15 -0
  33. package/src/elements/License.cjs +17 -0
  34. package/src/elements/License.mjs +14 -0
  35. package/src/elements/License.ts +17 -0
  36. package/src/elements/Link.cjs +10 -0
  37. package/src/elements/Link.mjs +7 -0
  38. package/src/elements/Link.ts +8 -0
  39. package/src/elements/MediaType.cjs +17 -0
  40. package/src/elements/MediaType.mjs +13 -0
  41. package/src/elements/MediaType.ts +18 -0
  42. package/src/elements/OAuthFlow.cjs +10 -0
  43. package/src/elements/OAuthFlow.mjs +7 -0
  44. package/src/elements/OAuthFlow.ts +8 -0
  45. package/src/elements/OAuthFlows.cjs +10 -0
  46. package/src/elements/OAuthFlows.mjs +7 -0
  47. package/src/elements/OAuthFlows.ts +8 -0
  48. package/src/elements/OpenApi3-1.cjs +77 -0
  49. package/src/elements/OpenApi3-1.mjs +73 -0
  50. package/src/elements/OpenApi3-1.ts +107 -0
  51. package/src/elements/Openapi.cjs +10 -0
  52. package/src/elements/Openapi.mjs +7 -0
  53. package/src/elements/Openapi.ts +8 -0
  54. package/src/elements/Operation.cjs +17 -0
  55. package/src/elements/Operation.mjs +13 -0
  56. package/src/elements/Operation.ts +19 -0
  57. package/src/elements/Parameter.cjs +17 -0
  58. package/src/elements/Parameter.mjs +13 -0
  59. package/src/elements/Parameter.ts +18 -0
  60. package/src/elements/PathItem.cjs +59 -0
  61. package/src/elements/PathItem.mjs +55 -0
  62. package/src/elements/PathItem.ts +74 -0
  63. package/src/elements/Paths.cjs +10 -0
  64. package/src/elements/Paths.mjs +7 -0
  65. package/src/elements/Paths.ts +8 -0
  66. package/src/elements/Reference.cjs +28 -0
  67. package/src/elements/Reference.mjs +25 -0
  68. package/src/elements/Reference.ts +29 -0
  69. package/src/elements/RequestBody.cjs +10 -0
  70. package/src/elements/RequestBody.mjs +7 -0
  71. package/src/elements/RequestBody.ts +8 -0
  72. package/src/elements/Response.cjs +10 -0
  73. package/src/elements/Response.mjs +7 -0
  74. package/src/elements/Response.ts +8 -0
  75. package/src/elements/Responses.cjs +10 -0
  76. package/src/elements/Responses.mjs +7 -0
  77. package/src/elements/Responses.ts +8 -0
  78. package/src/elements/Schema.cjs +50 -0
  79. package/src/elements/Schema.mjs +46 -0
  80. package/src/elements/Schema.ts +59 -0
  81. package/src/elements/SecurityRequirement.cjs +10 -0
  82. package/src/elements/SecurityRequirement.mjs +7 -0
  83. package/src/elements/SecurityRequirement.ts +8 -0
  84. package/src/elements/SecurityScheme.cjs +10 -0
  85. package/src/elements/SecurityScheme.mjs +7 -0
  86. package/src/elements/SecurityScheme.ts +8 -0
  87. package/src/elements/Server.cjs +10 -0
  88. package/src/elements/Server.mjs +7 -0
  89. package/src/elements/Server.ts +8 -0
  90. package/src/elements/ServerVariable.cjs +10 -0
  91. package/src/elements/ServerVariable.mjs +7 -0
  92. package/src/elements/ServerVariable.ts +8 -0
  93. package/src/elements/Tag.cjs +10 -0
  94. package/src/elements/Tag.mjs +7 -0
  95. package/src/elements/Tag.ts +8 -0
  96. package/src/elements/Xml.cjs +10 -0
  97. package/src/elements/Xml.mjs +7 -0
  98. package/src/elements/Xml.ts +8 -0
  99. package/src/elements/nces/ComponentsPathItems.cjs +16 -0
  100. package/src/elements/nces/ComponentsPathItems.mjs +13 -0
  101. package/src/elements/nces/ComponentsPathItems.ts +15 -0
  102. package/src/elements/nces/Webhooks.cjs +16 -0
  103. package/src/elements/nces/Webhooks.mjs +13 -0
  104. package/src/elements/nces/Webhooks.ts +15 -0
  105. package/src/index.cjs +182 -0
  106. package/src/index.mjs +31 -0
  107. package/src/index.ts +592 -0
  108. package/src/media-types.cjs +34 -0
  109. package/src/media-types.mjs +30 -0
  110. package/src/media-types.ts +46 -0
  111. package/src/namespace.cjs +81 -0
  112. package/src/namespace.mjs +76 -0
  113. package/src/namespace.ts +80 -0
  114. package/src/predicates.cjs +228 -0
  115. package/src/predicates.mjs +195 -0
  116. package/src/predicates.ts +229 -0
  117. package/src/refractor/index.cjs +368 -0
  118. package/src/refractor/index.mjs +330 -0
  119. package/src/refractor/index.ts +380 -0
  120. package/src/refractor/inspect.cjs +207 -0
  121. package/src/refractor/inspect.mjs +171 -0
  122. package/src/refractor/inspect.ts +241 -0
  123. package/src/refractor/plugins/normalize-header-examples/NormalizeStorage.cjs +38 -0
  124. package/src/refractor/plugins/normalize-header-examples/NormalizeStorage.mjs +34 -0
  125. package/src/refractor/plugins/normalize-header-examples/NormalizeStorage.ts +53 -0
  126. package/src/refractor/plugins/normalize-header-examples/index.cjs +109 -0
  127. package/src/refractor/plugins/normalize-header-examples/index.mjs +103 -0
  128. package/src/refractor/plugins/normalize-header-examples/index.ts +125 -0
  129. package/src/refractor/plugins/normalize-operation-ids.cjs +166 -0
  130. package/src/refractor/plugins/normalize-operation-ids.mjs +161 -0
  131. package/src/refractor/plugins/normalize-operation-ids.ts +198 -0
  132. package/src/refractor/plugins/normalize-parameter-examples.cjs +109 -0
  133. package/src/refractor/plugins/normalize-parameter-examples.mjs +103 -0
  134. package/src/refractor/plugins/normalize-parameter-examples.ts +128 -0
  135. package/src/refractor/plugins/normalize-parameters.cjs +109 -0
  136. package/src/refractor/plugins/normalize-parameters.mjs +103 -0
  137. package/src/refractor/plugins/normalize-parameters.ts +136 -0
  138. package/src/refractor/plugins/normalize-security-requirements.cjs +75 -0
  139. package/src/refractor/plugins/normalize-security-requirements.mjs +69 -0
  140. package/src/refractor/plugins/normalize-security-requirements.ts +87 -0
  141. package/src/refractor/plugins/normalize-servers.cjs +124 -0
  142. package/src/refractor/plugins/normalize-servers.mjs +118 -0
  143. package/src/refractor/plugins/normalize-servers.ts +144 -0
  144. package/src/refractor/plugins/replace-empty-element.cjs +669 -0
  145. package/src/refractor/plugins/replace-empty-element.mjs +661 -0
  146. package/src/refractor/plugins/replace-empty-element.ts +726 -0
  147. package/src/refractor/predicates.cjs +36 -0
  148. package/src/refractor/predicates.mjs +31 -0
  149. package/src/refractor/predicates.ts +39 -0
  150. package/src/refractor/specification.cjs +531 -0
  151. package/src/refractor/specification.mjs +526 -0
  152. package/src/refractor/specification.ts +594 -0
  153. package/src/refractor/toolbox.cjs +61 -0
  154. package/src/refractor/toolbox.mjs +53 -0
  155. package/src/refractor/toolbox.ts +70 -0
  156. package/src/refractor/visitors/open-api-3-1/JsonSchemaDialectVisitor.cjs +25 -0
  157. package/src/refractor/visitors/open-api-3-1/JsonSchemaDialectVisitor.mjs +19 -0
  158. package/src/refractor/visitors/open-api-3-1/JsonSchemaDialectVisitor.ts +32 -0
  159. package/src/refractor/visitors/open-api-3-1/OpenapiVisitor.cjs +25 -0
  160. package/src/refractor/visitors/open-api-3-1/OpenapiVisitor.mjs +19 -0
  161. package/src/refractor/visitors/open-api-3-1/OpenapiVisitor.ts +30 -0
  162. package/src/refractor/visitors/open-api-3-1/WebhooksVisitor.cjs +43 -0
  163. package/src/refractor/visitors/open-api-3-1/WebhooksVisitor.mjs +37 -0
  164. package/src/refractor/visitors/open-api-3-1/WebhooksVisitor.ts +57 -0
  165. package/src/refractor/visitors/open-api-3-1/bases.cjs +46 -0
  166. package/src/refractor/visitors/open-api-3-1/bases.mjs +43 -0
  167. package/src/refractor/visitors/open-api-3-1/bases.ts +66 -0
  168. package/src/refractor/visitors/open-api-3-1/callback/index.cjs +36 -0
  169. package/src/refractor/visitors/open-api-3-1/callback/index.mjs +31 -0
  170. package/src/refractor/visitors/open-api-3-1/callback/index.ts +56 -0
  171. package/src/refractor/visitors/open-api-3-1/components/PathItemsVisitor.cjs +33 -0
  172. package/src/refractor/visitors/open-api-3-1/components/PathItemsVisitor.mjs +27 -0
  173. package/src/refractor/visitors/open-api-3-1/components/PathItemsVisitor.ts +45 -0
  174. package/src/refractor/visitors/open-api-3-1/components/SchemasVisitor.cjs +22 -0
  175. package/src/refractor/visitors/open-api-3-1/components/SchemasVisitor.mjs +17 -0
  176. package/src/refractor/visitors/open-api-3-1/components/SchemasVisitor.ts +26 -0
  177. package/src/refractor/visitors/open-api-3-1/components/index.cjs +21 -0
  178. package/src/refractor/visitors/open-api-3-1/components/index.mjs +16 -0
  179. package/src/refractor/visitors/open-api-3-1/components/index.ts +29 -0
  180. package/src/refractor/visitors/open-api-3-1/contact/index.cjs +21 -0
  181. package/src/refractor/visitors/open-api-3-1/contact/index.mjs +16 -0
  182. package/src/refractor/visitors/open-api-3-1/contact/index.ts +29 -0
  183. package/src/refractor/visitors/open-api-3-1/distriminator/index.cjs +22 -0
  184. package/src/refractor/visitors/open-api-3-1/distriminator/index.mjs +17 -0
  185. package/src/refractor/visitors/open-api-3-1/distriminator/index.ts +32 -0
  186. package/src/refractor/visitors/open-api-3-1/encoding/index.cjs +21 -0
  187. package/src/refractor/visitors/open-api-3-1/encoding/index.mjs +16 -0
  188. package/src/refractor/visitors/open-api-3-1/encoding/index.ts +29 -0
  189. package/src/refractor/visitors/open-api-3-1/example/index.cjs +21 -0
  190. package/src/refractor/visitors/open-api-3-1/example/index.mjs +16 -0
  191. package/src/refractor/visitors/open-api-3-1/example/index.ts +29 -0
  192. package/src/refractor/visitors/open-api-3-1/external-documentation/index.cjs +21 -0
  193. package/src/refractor/visitors/open-api-3-1/external-documentation/index.mjs +16 -0
  194. package/src/refractor/visitors/open-api-3-1/external-documentation/index.ts +29 -0
  195. package/src/refractor/visitors/open-api-3-1/header/index.cjs +21 -0
  196. package/src/refractor/visitors/open-api-3-1/header/index.mjs +16 -0
  197. package/src/refractor/visitors/open-api-3-1/header/index.ts +29 -0
  198. package/src/refractor/visitors/open-api-3-1/index.cjs +41 -0
  199. package/src/refractor/visitors/open-api-3-1/index.mjs +35 -0
  200. package/src/refractor/visitors/open-api-3-1/index.ts +52 -0
  201. package/src/refractor/visitors/open-api-3-1/info/index.cjs +21 -0
  202. package/src/refractor/visitors/open-api-3-1/info/index.mjs +16 -0
  203. package/src/refractor/visitors/open-api-3-1/info/index.ts +29 -0
  204. package/src/refractor/visitors/open-api-3-1/license/index.cjs +21 -0
  205. package/src/refractor/visitors/open-api-3-1/license/index.mjs +16 -0
  206. package/src/refractor/visitors/open-api-3-1/license/index.ts +29 -0
  207. package/src/refractor/visitors/open-api-3-1/link/index.cjs +21 -0
  208. package/src/refractor/visitors/open-api-3-1/link/index.mjs +16 -0
  209. package/src/refractor/visitors/open-api-3-1/link/index.ts +29 -0
  210. package/src/refractor/visitors/open-api-3-1/media-type/index.cjs +21 -0
  211. package/src/refractor/visitors/open-api-3-1/media-type/index.mjs +16 -0
  212. package/src/refractor/visitors/open-api-3-1/media-type/index.ts +29 -0
  213. package/src/refractor/visitors/open-api-3-1/oauth-flow/index.cjs +21 -0
  214. package/src/refractor/visitors/open-api-3-1/oauth-flow/index.mjs +16 -0
  215. package/src/refractor/visitors/open-api-3-1/oauth-flow/index.ts +29 -0
  216. package/src/refractor/visitors/open-api-3-1/oauth-flows/index.cjs +21 -0
  217. package/src/refractor/visitors/open-api-3-1/oauth-flows/index.mjs +16 -0
  218. package/src/refractor/visitors/open-api-3-1/oauth-flows/index.ts +29 -0
  219. package/src/refractor/visitors/open-api-3-1/operation/index.cjs +21 -0
  220. package/src/refractor/visitors/open-api-3-1/operation/index.mjs +16 -0
  221. package/src/refractor/visitors/open-api-3-1/operation/index.ts +29 -0
  222. package/src/refractor/visitors/open-api-3-1/parameter/index.cjs +21 -0
  223. package/src/refractor/visitors/open-api-3-1/parameter/index.mjs +16 -0
  224. package/src/refractor/visitors/open-api-3-1/parameter/index.ts +29 -0
  225. package/src/refractor/visitors/open-api-3-1/path-item/index.cjs +21 -0
  226. package/src/refractor/visitors/open-api-3-1/path-item/index.mjs +16 -0
  227. package/src/refractor/visitors/open-api-3-1/path-item/index.ts +29 -0
  228. package/src/refractor/visitors/open-api-3-1/paths/index.cjs +21 -0
  229. package/src/refractor/visitors/open-api-3-1/paths/index.mjs +16 -0
  230. package/src/refractor/visitors/open-api-3-1/paths/index.ts +29 -0
  231. package/src/refractor/visitors/open-api-3-1/reference/index.cjs +21 -0
  232. package/src/refractor/visitors/open-api-3-1/reference/index.mjs +16 -0
  233. package/src/refractor/visitors/open-api-3-1/reference/index.ts +29 -0
  234. package/src/refractor/visitors/open-api-3-1/request-body/index.cjs +21 -0
  235. package/src/refractor/visitors/open-api-3-1/request-body/index.mjs +16 -0
  236. package/src/refractor/visitors/open-api-3-1/request-body/index.ts +29 -0
  237. package/src/refractor/visitors/open-api-3-1/response/index.cjs +21 -0
  238. package/src/refractor/visitors/open-api-3-1/response/index.mjs +16 -0
  239. package/src/refractor/visitors/open-api-3-1/response/index.ts +29 -0
  240. package/src/refractor/visitors/open-api-3-1/responses/index.cjs +21 -0
  241. package/src/refractor/visitors/open-api-3-1/responses/index.mjs +16 -0
  242. package/src/refractor/visitors/open-api-3-1/responses/index.ts +29 -0
  243. package/src/refractor/visitors/open-api-3-1/schema/$defsVisitor.cjs +19 -0
  244. package/src/refractor/visitors/open-api-3-1/schema/$defsVisitor.mjs +16 -0
  245. package/src/refractor/visitors/open-api-3-1/schema/$defsVisitor.ts +21 -0
  246. package/src/refractor/visitors/open-api-3-1/schema/AllOfVisitor.cjs +15 -0
  247. package/src/refractor/visitors/open-api-3-1/schema/AllOfVisitor.mjs +11 -0
  248. package/src/refractor/visitors/open-api-3-1/schema/AllOfVisitor.ts +18 -0
  249. package/src/refractor/visitors/open-api-3-1/schema/AnyOfVisitor.cjs +15 -0
  250. package/src/refractor/visitors/open-api-3-1/schema/AnyOfVisitor.mjs +11 -0
  251. package/src/refractor/visitors/open-api-3-1/schema/AnyOfVisitor.ts +18 -0
  252. package/src/refractor/visitors/open-api-3-1/schema/DependentSchemasVisitor.cjs +15 -0
  253. package/src/refractor/visitors/open-api-3-1/schema/DependentSchemasVisitor.mjs +11 -0
  254. package/src/refractor/visitors/open-api-3-1/schema/DependentSchemasVisitor.ts +18 -0
  255. package/src/refractor/visitors/open-api-3-1/schema/OneOfVisitor.cjs +15 -0
  256. package/src/refractor/visitors/open-api-3-1/schema/OneOfVisitor.mjs +11 -0
  257. package/src/refractor/visitors/open-api-3-1/schema/OneOfVisitor.ts +18 -0
  258. package/src/refractor/visitors/open-api-3-1/schema/PatternPropertiesVisitor.cjs +15 -0
  259. package/src/refractor/visitors/open-api-3-1/schema/PatternPropertiesVisitor.mjs +11 -0
  260. package/src/refractor/visitors/open-api-3-1/schema/PatternPropertiesVisitor.ts +18 -0
  261. package/src/refractor/visitors/open-api-3-1/schema/PrefixItemsVisitor.cjs +15 -0
  262. package/src/refractor/visitors/open-api-3-1/schema/PrefixItemsVisitor.mjs +11 -0
  263. package/src/refractor/visitors/open-api-3-1/schema/PrefixItemsVisitor.ts +18 -0
  264. package/src/refractor/visitors/open-api-3-1/schema/PropertiesVisitor.cjs +15 -0
  265. package/src/refractor/visitors/open-api-3-1/schema/PropertiesVisitor.mjs +11 -0
  266. package/src/refractor/visitors/open-api-3-1/schema/PropertiesVisitor.ts +18 -0
  267. package/src/refractor/visitors/open-api-3-1/schema/index.cjs +76 -0
  268. package/src/refractor/visitors/open-api-3-1/schema/index.mjs +70 -0
  269. package/src/refractor/visitors/open-api-3-1/schema/index.ts +88 -0
  270. package/src/refractor/visitors/open-api-3-1/security-requirement/index.cjs +21 -0
  271. package/src/refractor/visitors/open-api-3-1/security-requirement/index.mjs +16 -0
  272. package/src/refractor/visitors/open-api-3-1/security-requirement/index.ts +29 -0
  273. package/src/refractor/visitors/open-api-3-1/security-scheme/index.cjs +21 -0
  274. package/src/refractor/visitors/open-api-3-1/security-scheme/index.mjs +16 -0
  275. package/src/refractor/visitors/open-api-3-1/security-scheme/index.ts +29 -0
  276. package/src/refractor/visitors/open-api-3-1/server/index.cjs +21 -0
  277. package/src/refractor/visitors/open-api-3-1/server/index.mjs +16 -0
  278. package/src/refractor/visitors/open-api-3-1/server/index.ts +29 -0
  279. package/src/refractor/visitors/open-api-3-1/server-variable/index.cjs +21 -0
  280. package/src/refractor/visitors/open-api-3-1/server-variable/index.mjs +16 -0
  281. package/src/refractor/visitors/open-api-3-1/server-variable/index.ts +29 -0
  282. package/src/refractor/visitors/open-api-3-1/tag/index.cjs +21 -0
  283. package/src/refractor/visitors/open-api-3-1/tag/index.mjs +16 -0
  284. package/src/refractor/visitors/open-api-3-1/tag/index.ts +29 -0
  285. package/src/refractor/visitors/open-api-3-1/xml/index.cjs +21 -0
  286. package/src/refractor/visitors/open-api-3-1/xml/index.mjs +16 -0
  287. package/src/refractor/visitors/open-api-3-1/xml/index.ts +29 -0
@@ -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,241 @@
1
+ import { resolveSpecification, type ResolvedSpecification } 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.ts';
8
+ import ComponentsElement from '../elements/Components.ts';
9
+ import ContactElement from '../elements/Contact.ts';
10
+ import DiscriminatorElement from '../elements/Discriminator.ts';
11
+ import EncodingElement from '../elements/Encoding.ts';
12
+ import ExampleElement from '../elements/Example.ts';
13
+ import ExternalDocumentationElement from '../elements/ExternalDocumentation.ts';
14
+ import HeaderElement from '../elements/Header.ts';
15
+ import InfoElement from '../elements/Info.ts';
16
+ import JsonSchemaDialectElement from '../elements/JsonSchemaDialect.ts';
17
+ import LicenseElement from '../elements/License.ts';
18
+ import LinkElement from '../elements/Link.ts';
19
+ import MediaTypeElement from '../elements/MediaType.ts';
20
+ import OAuthFlowElement from '../elements/OAuthFlow.ts';
21
+ import OAuthFlowsElement from '../elements/OAuthFlows.ts';
22
+ import OpenapiElement from '../elements/Openapi.ts';
23
+ import OpenApi3_1Element from '../elements/OpenApi3-1.ts';
24
+ import OperationElement from '../elements/Operation.ts';
25
+ import ParameterElement from '../elements/Parameter.ts';
26
+ import PathItemElement from '../elements/PathItem.ts';
27
+ import PathsElement from '../elements/Paths.ts';
28
+ import ReferenceElement from '../elements/Reference.ts';
29
+ import RequestBodyElement from '../elements/RequestBody.ts';
30
+ import ResponseElement from '../elements/Response.ts';
31
+ import ResponsesElement from '../elements/Responses.ts';
32
+ import SchemaElement from '../elements/Schema.ts';
33
+ import SecurityRequirementElement from '../elements/SecurityRequirement.ts';
34
+ import SecuritySchemeElement from '../elements/SecurityScheme.ts';
35
+ import ServerElement from '../elements/Server.ts';
36
+ import ServerVariableElement from '../elements/ServerVariable.ts';
37
+ import TagElement from '../elements/Tag.ts';
38
+ import XmlElement from '../elements/Xml.ts';
39
+ import specification from './specification.ts';
40
+
41
+ /**
42
+ * @public
43
+ */
44
+ export interface FixedField {
45
+ name: string;
46
+ alias?: string;
47
+ $visitor: unknown;
48
+ }
49
+
50
+ interface ResolvedSpec extends ResolvedSpecification {
51
+ visitors: {
52
+ document: {
53
+ objects: Record<string, { fixedFields: Record<string, unknown> }>;
54
+ };
55
+ };
56
+ }
57
+
58
+ // Resolve specification to dereference $ref pointers
59
+ const resolvedSpec = resolveSpecification<ResolvedSpec>(specification);
60
+
61
+ // Extract fixed fields as list of { name, alias?, $visitor }
62
+ const getFixedFields = (fixedFieldsSpec: Record<string, unknown>): FixedField[] => {
63
+ return Object.entries(fixedFieldsSpec).map(([name, fieldSpec]) => {
64
+ if (isPlainObject(fieldSpec)) {
65
+ return { name, ...fieldSpec } as FixedField;
66
+ }
67
+ return { name, $visitor: fieldSpec };
68
+ });
69
+ };
70
+
71
+ // OpenAPI 3.1 specification elements
72
+ Object.defineProperty(OpenApi3_1Element, 'fixedFields', {
73
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.OpenApi.fixedFields),
74
+ enumerable: true,
75
+ });
76
+
77
+ Object.defineProperty(InfoElement, 'fixedFields', {
78
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Info.fixedFields),
79
+ enumerable: true,
80
+ });
81
+
82
+ Object.defineProperty(ContactElement, 'fixedFields', {
83
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Contact.fixedFields),
84
+ enumerable: true,
85
+ });
86
+
87
+ Object.defineProperty(LicenseElement, 'fixedFields', {
88
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.License.fixedFields),
89
+ enumerable: true,
90
+ });
91
+
92
+ Object.defineProperty(ServerElement, 'fixedFields', {
93
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Server.fixedFields),
94
+ enumerable: true,
95
+ });
96
+
97
+ Object.defineProperty(ServerVariableElement, 'fixedFields', {
98
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.ServerVariable.fixedFields),
99
+ enumerable: true,
100
+ });
101
+
102
+ Object.defineProperty(ComponentsElement, 'fixedFields', {
103
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Components.fixedFields),
104
+ enumerable: true,
105
+ });
106
+
107
+ Object.defineProperty(PathItemElement, 'fixedFields', {
108
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.PathItem.fixedFields),
109
+ enumerable: true,
110
+ });
111
+
112
+ Object.defineProperty(OperationElement, 'fixedFields', {
113
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Operation.fixedFields),
114
+ enumerable: true,
115
+ });
116
+
117
+ Object.defineProperty(ExternalDocumentationElement, 'fixedFields', {
118
+ get: () =>
119
+ getFixedFields(resolvedSpec.visitors.document.objects.ExternalDocumentation.fixedFields),
120
+ enumerable: true,
121
+ });
122
+
123
+ Object.defineProperty(ParameterElement, 'fixedFields', {
124
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Parameter.fixedFields),
125
+ enumerable: true,
126
+ });
127
+
128
+ Object.defineProperty(RequestBodyElement, 'fixedFields', {
129
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.RequestBody.fixedFields),
130
+ enumerable: true,
131
+ });
132
+
133
+ Object.defineProperty(MediaTypeElement, 'fixedFields', {
134
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.MediaType.fixedFields),
135
+ enumerable: true,
136
+ });
137
+
138
+ Object.defineProperty(EncodingElement, 'fixedFields', {
139
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Encoding.fixedFields),
140
+ enumerable: true,
141
+ });
142
+
143
+ Object.defineProperty(ResponsesElement, 'fixedFields', {
144
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Responses.fixedFields),
145
+ enumerable: true,
146
+ });
147
+
148
+ Object.defineProperty(ResponseElement, 'fixedFields', {
149
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Response.fixedFields),
150
+ enumerable: true,
151
+ });
152
+
153
+ Object.defineProperty(ExampleElement, 'fixedFields', {
154
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Example.fixedFields),
155
+ enumerable: true,
156
+ });
157
+
158
+ Object.defineProperty(LinkElement, 'fixedFields', {
159
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Link.fixedFields),
160
+ enumerable: true,
161
+ });
162
+
163
+ Object.defineProperty(HeaderElement, 'fixedFields', {
164
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Header.fixedFields),
165
+ enumerable: true,
166
+ });
167
+
168
+ Object.defineProperty(TagElement, 'fixedFields', {
169
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Tag.fixedFields),
170
+ enumerable: true,
171
+ });
172
+
173
+ Object.defineProperty(ReferenceElement, 'fixedFields', {
174
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Reference.fixedFields),
175
+ enumerable: true,
176
+ });
177
+
178
+ Object.defineProperty(SchemaElement, 'fixedFields', {
179
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Schema.fixedFields),
180
+ enumerable: true,
181
+ });
182
+
183
+ Object.defineProperty(DiscriminatorElement, 'fixedFields', {
184
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.Discriminator.fixedFields),
185
+ enumerable: true,
186
+ });
187
+
188
+ Object.defineProperty(XmlElement, 'fixedFields', {
189
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.XML.fixedFields),
190
+ enumerable: true,
191
+ });
192
+
193
+ Object.defineProperty(SecuritySchemeElement, 'fixedFields', {
194
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.SecurityScheme.fixedFields),
195
+ enumerable: true,
196
+ });
197
+
198
+ Object.defineProperty(OAuthFlowsElement, 'fixedFields', {
199
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.OAuthFlows.fixedFields),
200
+ enumerable: true,
201
+ });
202
+
203
+ Object.defineProperty(OAuthFlowElement, 'fixedFields', {
204
+ get: () => getFixedFields(resolvedSpec.visitors.document.objects.OAuthFlow.fixedFields),
205
+ enumerable: true,
206
+ });
207
+
208
+ export {
209
+ CallbackElement,
210
+ ComponentsElement,
211
+ ContactElement,
212
+ DiscriminatorElement,
213
+ EncodingElement,
214
+ ExampleElement,
215
+ ExternalDocumentationElement,
216
+ HeaderElement,
217
+ InfoElement,
218
+ JsonSchemaDialectElement,
219
+ LicenseElement,
220
+ LinkElement,
221
+ MediaTypeElement,
222
+ OAuthFlowElement,
223
+ OAuthFlowsElement,
224
+ OpenapiElement,
225
+ OpenApi3_1Element,
226
+ OperationElement,
227
+ ParameterElement,
228
+ PathItemElement,
229
+ PathsElement,
230
+ ReferenceElement,
231
+ RequestBodyElement,
232
+ ResponseElement,
233
+ ResponsesElement,
234
+ SchemaElement,
235
+ SecurityRequirementElement,
236
+ SecuritySchemeElement,
237
+ ServerElement,
238
+ ServerVariableElement,
239
+ TagElement,
240
+ XmlElement,
241
+ };
@@ -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,53 @@
1
+ import {
2
+ ArrayElement,
3
+ ObjectElement,
4
+ isObjectElement,
5
+ isArrayElement,
6
+ } from '@speclynx/apidom-datamodel';
7
+
8
+ import OpenApi3_1Element from '../../../elements/OpenApi3-1.ts';
9
+
10
+ type JSONPointer = string;
11
+
12
+ class NormalizeStorage {
13
+ private internalStore!: ArrayElement;
14
+
15
+ constructor(
16
+ protected storageElement: OpenApi3_1Element | undefined,
17
+ protected storageField: string,
18
+ protected storageSubField: string,
19
+ ) {}
20
+
21
+ protected get store() {
22
+ if (!this.internalStore) {
23
+ let rootStore: ObjectElement = this.storageElement!.get(this.storageField) as ObjectElement;
24
+
25
+ if (!isObjectElement(rootStore)) {
26
+ rootStore = new ObjectElement();
27
+ this.storageElement!.set(this.storageField, rootStore);
28
+ }
29
+
30
+ let store: ArrayElement = rootStore.get(this.storageSubField) as ArrayElement;
31
+ if (!isArrayElement(store)) {
32
+ store = new ArrayElement();
33
+ rootStore.set(this.storageSubField, store);
34
+ }
35
+
36
+ this.internalStore = store;
37
+ }
38
+
39
+ return this.internalStore;
40
+ }
41
+
42
+ public append(pointer: JSONPointer) {
43
+ if (!this.includes(pointer)) {
44
+ this.store.push(pointer);
45
+ }
46
+ }
47
+
48
+ public includes(pointer: JSONPointer) {
49
+ return this.store.includes(pointer);
50
+ }
51
+ }
52
+
53
+ 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;