@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,53 @@
1
+ import { Namespace, isStringElement, isArrayElement, isObjectElement, isMemberElement } from '@speclynx/apidom-datamodel';
2
+ import { toValue } from '@speclynx/apidom-core';
3
+ import { compile as compileJSONPointerTokens } from '@speclynx/apidom-json-pointer';
4
+ import * as openApi3_1Predicates from "../predicates.mjs";
5
+ import * as refractorPredicates from "./predicates.mjs";
6
+ import openApi3_1Namespace from "../namespace.mjs";
7
+ /**
8
+ * @public
9
+ */
10
+ /**
11
+ * Translates visitor ancestor lineage to a JSON Pointer tokens.
12
+ * Ancestor lineage is constructed of following visitor method arguments:
13
+ *
14
+ * - ancestors
15
+ * - parent
16
+ * - element
17
+ * @public
18
+ */
19
+ export const ancestorLineageToJSONPointer = elementPath => {
20
+ const jsonPointerTokens = elementPath.reduce((path, element, index) => {
21
+ if (isMemberElement(element)) {
22
+ const token = String(toValue(element.key));
23
+ path.push(token);
24
+ } else if (isArrayElement(elementPath[index - 2])) {
25
+ const arrayElement = elementPath[index - 2];
26
+ const token = String(arrayElement.content?.indexOf(element) ?? -1);
27
+ path.push(token);
28
+ }
29
+ return path;
30
+ }, []);
31
+ return compileJSONPointerTokens(jsonPointerTokens);
32
+ };
33
+
34
+ /**
35
+ * @public
36
+ */
37
+ const createToolbox = () => {
38
+ const namespace = new Namespace();
39
+ const predicates = {
40
+ ...refractorPredicates,
41
+ ...openApi3_1Predicates,
42
+ isStringElement,
43
+ isArrayElement,
44
+ isObjectElement
45
+ };
46
+ namespace.use(openApi3_1Namespace);
47
+ return {
48
+ predicates,
49
+ ancestorLineageToJSONPointer,
50
+ namespace
51
+ };
52
+ };
53
+ export default createToolbox;
@@ -0,0 +1,70 @@
1
+ import {
2
+ Element,
3
+ Namespace,
4
+ ArrayElement,
5
+ isStringElement,
6
+ isArrayElement,
7
+ isObjectElement,
8
+ isMemberElement,
9
+ } from '@speclynx/apidom-datamodel';
10
+ import { toValue } from '@speclynx/apidom-core';
11
+ import { compile as compileJSONPointerTokens } from '@speclynx/apidom-json-pointer';
12
+
13
+ import * as openApi3_1Predicates from '../predicates.ts';
14
+ import * as refractorPredicates from './predicates.ts';
15
+ import openApi3_1Namespace from '../namespace.ts';
16
+
17
+ /**
18
+ * @public
19
+ */
20
+ export interface Toolbox {
21
+ predicates: Record<string, (...args: any[]) => boolean>;
22
+ ancestorLineageToJSONPointer: typeof ancestorLineageToJSONPointer;
23
+ namespace: Namespace;
24
+ }
25
+
26
+ /**
27
+ * Translates visitor ancestor lineage to a JSON Pointer tokens.
28
+ * Ancestor lineage is constructed of following visitor method arguments:
29
+ *
30
+ * - ancestors
31
+ * - parent
32
+ * - element
33
+ * @public
34
+ */
35
+ export const ancestorLineageToJSONPointer = <T extends (Element | Element[])[]>(elementPath: T) => {
36
+ const jsonPointerTokens = elementPath.reduce((path, element, index) => {
37
+ if (isMemberElement(element)) {
38
+ const token = String(toValue(element.key));
39
+ path.push(token);
40
+ } else if (isArrayElement(elementPath[index - 2])) {
41
+ const arrayElement = elementPath[index - 2] as ArrayElement;
42
+ const token = String((arrayElement.content as Element[])?.indexOf(element as Element) ?? -1);
43
+ path.push(token);
44
+ }
45
+
46
+ return path;
47
+ }, [] as string[]);
48
+
49
+ return compileJSONPointerTokens(jsonPointerTokens);
50
+ };
51
+
52
+ /**
53
+ * @public
54
+ */
55
+ const createToolbox = (): Toolbox => {
56
+ const namespace = new Namespace();
57
+ const predicates = {
58
+ ...refractorPredicates,
59
+ ...openApi3_1Predicates,
60
+ isStringElement,
61
+ isArrayElement,
62
+ isObjectElement,
63
+ };
64
+
65
+ namespace.use(openApi3_1Namespace);
66
+
67
+ return { predicates, ancestorLineageToJSONPointer, namespace };
68
+ };
69
+
70
+ export default createToolbox;
@@ -0,0 +1,25 @@
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 _apidomCore = require("@speclynx/apidom-core");
7
+ var _JsonSchemaDialect = _interopRequireDefault(require("../../../elements/JsonSchemaDialect.cjs"));
8
+ var _bases = require("./bases.cjs");
9
+ /**
10
+ * @public
11
+ */
12
+
13
+ /**
14
+ * @public
15
+ */
16
+ class JsonSchemaDialectVisitor extends _bases.BaseSpecificationVisitor {
17
+ StringElement(path) {
18
+ const stringElement = path.node;
19
+ const jsonSchemaDialectElement = new _JsonSchemaDialect.default((0, _apidomCore.toValue)(stringElement));
20
+ this.copyMetaAndAttributes(stringElement, jsonSchemaDialectElement);
21
+ this.element = jsonSchemaDialectElement;
22
+ path.stop();
23
+ }
24
+ }
25
+ var _default = exports.default = JsonSchemaDialectVisitor;
@@ -0,0 +1,19 @@
1
+ import { toValue } from '@speclynx/apidom-core';
2
+ import JsonSchemaDialectElement from "../../../elements/JsonSchemaDialect.mjs";
3
+ import { BaseSpecificationVisitor } from "./bases.mjs";
4
+ /**
5
+ * @public
6
+ */
7
+ /**
8
+ * @public
9
+ */
10
+ class JsonSchemaDialectVisitor extends BaseSpecificationVisitor {
11
+ StringElement(path) {
12
+ const stringElement = path.node;
13
+ const jsonSchemaDialectElement = new JsonSchemaDialectElement(toValue(stringElement));
14
+ this.copyMetaAndAttributes(stringElement, jsonSchemaDialectElement);
15
+ this.element = jsonSchemaDialectElement;
16
+ path.stop();
17
+ }
18
+ }
19
+ export default JsonSchemaDialectVisitor;
@@ -0,0 +1,32 @@
1
+ import { StringElement } from '@speclynx/apidom-datamodel';
2
+ import { toValue } from '@speclynx/apidom-core';
3
+ import { Path } from '@speclynx/apidom-traverse';
4
+
5
+ import JsonSchemaDialectElement from '../../../elements/JsonSchemaDialect.ts';
6
+ import { BaseSpecificationVisitor, BaseSpecificationVisitorOptions } from './bases.ts';
7
+
8
+ /**
9
+ * @public
10
+ */
11
+ export interface JsonSchemaDialectVisitorOptions extends BaseSpecificationVisitorOptions {}
12
+
13
+ /**
14
+ * @public
15
+ */
16
+ class JsonSchemaDialectVisitor extends BaseSpecificationVisitor {
17
+ declare public element: JsonSchemaDialectElement;
18
+
19
+ StringElement(path: Path<StringElement>) {
20
+ const stringElement = path.node;
21
+ const jsonSchemaDialectElement = new JsonSchemaDialectElement(
22
+ toValue(stringElement) as string | undefined,
23
+ );
24
+
25
+ this.copyMetaAndAttributes(stringElement, jsonSchemaDialectElement);
26
+
27
+ this.element = jsonSchemaDialectElement;
28
+ path.stop();
29
+ }
30
+ }
31
+
32
+ export default JsonSchemaDialectVisitor;
@@ -0,0 +1,25 @@
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 _apidomCore = require("@speclynx/apidom-core");
7
+ var _bases = require("./bases.cjs");
8
+ var _Openapi = _interopRequireDefault(require("../../../elements/Openapi.cjs"));
9
+ /**
10
+ * @public
11
+ */
12
+
13
+ /**
14
+ * @public
15
+ */
16
+ class OpenapiVisitor extends _bases.BaseSpecificationVisitor {
17
+ StringElement(path) {
18
+ const stringElement = path.node;
19
+ const openapiElement = new _Openapi.default((0, _apidomCore.toValue)(stringElement));
20
+ this.copyMetaAndAttributes(stringElement, openapiElement);
21
+ this.element = openapiElement;
22
+ path.stop();
23
+ }
24
+ }
25
+ var _default = exports.default = OpenapiVisitor;
@@ -0,0 +1,19 @@
1
+ import { toValue } from '@speclynx/apidom-core';
2
+ import { BaseSpecificationVisitor } from "./bases.mjs";
3
+ import OpenapiElement from "../../../elements/Openapi.mjs";
4
+ /**
5
+ * @public
6
+ */
7
+ /**
8
+ * @public
9
+ */
10
+ class OpenapiVisitor extends BaseSpecificationVisitor {
11
+ StringElement(path) {
12
+ const stringElement = path.node;
13
+ const openapiElement = new OpenapiElement(toValue(stringElement));
14
+ this.copyMetaAndAttributes(stringElement, openapiElement);
15
+ this.element = openapiElement;
16
+ path.stop();
17
+ }
18
+ }
19
+ export default OpenapiVisitor;
@@ -0,0 +1,30 @@
1
+ import { StringElement } from '@speclynx/apidom-datamodel';
2
+ import { toValue } from '@speclynx/apidom-core';
3
+ import { Path } from '@speclynx/apidom-traverse';
4
+
5
+ import { BaseSpecificationVisitor, BaseSpecificationVisitorOptions } from './bases.ts';
6
+ import OpenapiElement from '../../../elements/Openapi.ts';
7
+
8
+ /**
9
+ * @public
10
+ */
11
+ export type { BaseSpecificationVisitorOptions as OpenapiVisitorOptions };
12
+
13
+ /**
14
+ * @public
15
+ */
16
+ class OpenapiVisitor extends BaseSpecificationVisitor {
17
+ declare public element: OpenapiElement;
18
+
19
+ StringElement(path: Path<StringElement>) {
20
+ const stringElement = path.node;
21
+ const openapiElement = new OpenapiElement(toValue(stringElement) as string | undefined);
22
+
23
+ this.copyMetaAndAttributes(stringElement, openapiElement);
24
+
25
+ this.element = openapiElement;
26
+ path.stop();
27
+ }
28
+ }
29
+
30
+ export default OpenapiVisitor;
@@ -0,0 +1,43 @@
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 _apidomCore = require("@speclynx/apidom-core");
7
+ var _apidomNsOpenapi = require("@speclynx/apidom-ns-openapi-3-0");
8
+ var _Webhooks = _interopRequireDefault(require("../../../elements/nces/Webhooks.cjs"));
9
+ var _predicates = require("../../../predicates.cjs");
10
+ var _bases = require("./bases.cjs");
11
+ /**
12
+ * @public
13
+ */
14
+
15
+ /**
16
+ * @public
17
+ */
18
+ class WebhooksVisitor extends _bases.BaseMapVisitor {
19
+ constructor(options) {
20
+ super(options);
21
+ this.element = new _Webhooks.default();
22
+ this.specPath = element => (0, _apidomNsOpenapi.isReferenceLikeElement)(element) ? ['document', 'objects', 'Reference'] : ['document', 'objects', 'PathItem'];
23
+ }
24
+ ObjectElement(path) {
25
+ _apidomNsOpenapi.MapVisitor.prototype.ObjectElement.call(this, path);
26
+
27
+ // decorate every ReferenceElement with metadata about their referencing type
28
+ // @ts-ignore
29
+ this.element.filter(_predicates.isReferenceElement).forEach(referenceElement => {
30
+ // @ts-ignore
31
+ referenceElement.setMetaProperty('referenced-element', 'pathItem');
32
+ });
33
+
34
+ // decorate every PathItemElement with Webhook name metadata
35
+ this.element.filter(_predicates.isPathItemElement)
36
+ // @ts-ignore
37
+ .forEach((pathItemElement, key) => {
38
+ // @ts-ignore
39
+ pathItemElement.setMetaProperty('webhook-name', (0, _apidomCore.toValue)(key));
40
+ });
41
+ }
42
+ }
43
+ var _default = exports.default = WebhooksVisitor;
@@ -0,0 +1,37 @@
1
+ import { toValue } from '@speclynx/apidom-core';
2
+ import { isReferenceLikeElement, MapVisitor } from '@speclynx/apidom-ns-openapi-3-0';
3
+ import WebhooksElement from "../../../elements/nces/Webhooks.mjs";
4
+ import { isPathItemElement, isReferenceElement } from "../../../predicates.mjs";
5
+ import { BaseMapVisitor } from "./bases.mjs";
6
+ /**
7
+ * @public
8
+ */
9
+ /**
10
+ * @public
11
+ */
12
+ class WebhooksVisitor extends BaseMapVisitor {
13
+ constructor(options) {
14
+ super(options);
15
+ this.element = new WebhooksElement();
16
+ this.specPath = element => isReferenceLikeElement(element) ? ['document', 'objects', 'Reference'] : ['document', 'objects', 'PathItem'];
17
+ }
18
+ ObjectElement(path) {
19
+ MapVisitor.prototype.ObjectElement.call(this, path);
20
+
21
+ // decorate every ReferenceElement with metadata about their referencing type
22
+ // @ts-ignore
23
+ this.element.filter(isReferenceElement).forEach(referenceElement => {
24
+ // @ts-ignore
25
+ referenceElement.setMetaProperty('referenced-element', 'pathItem');
26
+ });
27
+
28
+ // decorate every PathItemElement with Webhook name metadata
29
+ this.element.filter(isPathItemElement)
30
+ // @ts-ignore
31
+ .forEach((pathItemElement, key) => {
32
+ // @ts-ignore
33
+ pathItemElement.setMetaProperty('webhook-name', toValue(key));
34
+ });
35
+ }
36
+ }
37
+ export default WebhooksVisitor;
@@ -0,0 +1,57 @@
1
+ import { ObjectElement, StringElement } from '@speclynx/apidom-datamodel';
2
+ import { toValue } from '@speclynx/apidom-core';
3
+ import { Path } from '@speclynx/apidom-traverse';
4
+ import { isReferenceLikeElement, MapVisitor, SpecPath } from '@speclynx/apidom-ns-openapi-3-0';
5
+
6
+ import ReferenceElement from '../../../elements/Reference.ts';
7
+ import PathItemElement from '../../../elements/PathItem.ts';
8
+ import WebhooksElement from '../../../elements/nces/Webhooks.ts';
9
+ import { isPathItemElement, isReferenceElement } from '../../../predicates.ts';
10
+ import { BaseMapVisitor, BaseMapVisitorOptions } from './bases.ts';
11
+
12
+ /**
13
+ * @public
14
+ */
15
+ export interface WebhooksVisitorOptions extends BaseMapVisitorOptions {}
16
+
17
+ /**
18
+ * @public
19
+ */
20
+ class WebhooksVisitor extends BaseMapVisitor {
21
+ declare public readonly element: WebhooksElement;
22
+
23
+ declare protected readonly specPath: SpecPath<
24
+ ['document', 'objects', 'Reference'] | ['document', 'objects', 'PathItem']
25
+ >;
26
+
27
+ constructor(options: WebhooksVisitorOptions) {
28
+ super(options);
29
+ this.element = new WebhooksElement();
30
+ this.specPath = (element: unknown) =>
31
+ isReferenceLikeElement(element)
32
+ ? ['document', 'objects', 'Reference']
33
+ : ['document', 'objects', 'PathItem'];
34
+ }
35
+
36
+ ObjectElement(path: Path<ObjectElement>) {
37
+ MapVisitor.prototype.ObjectElement.call(this, path);
38
+
39
+ // decorate every ReferenceElement with metadata about their referencing type
40
+ // @ts-ignore
41
+ this.element.filter(isReferenceElement).forEach((referenceElement: ReferenceElement) => {
42
+ // @ts-ignore
43
+ referenceElement.setMetaProperty('referenced-element', 'pathItem');
44
+ });
45
+
46
+ // decorate every PathItemElement with Webhook name metadata
47
+ this.element
48
+ .filter(isPathItemElement)
49
+ // @ts-ignore
50
+ .forEach((pathItemElement: PathItemElement, key: StringElement) => {
51
+ // @ts-ignore
52
+ pathItemElement.setMetaProperty('webhook-name', toValue(key));
53
+ });
54
+ }
55
+ }
56
+
57
+ export default WebhooksVisitor;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.BaseSpecificationVisitor = exports.BaseSchemaVisitor = exports.BaseMapVisitor = exports.BaseFixedFieldsVisitor = void 0;
5
+ var _tsMixer = require("ts-mixer");
6
+ var _apidomNsOpenapi = require("@speclynx/apidom-ns-openapi-3-0");
7
+ var _apidomNsJsonSchema = require("@speclynx/apidom-ns-json-schema-2020-12");
8
+ /**
9
+ * Base class for visitors using Mixin(SpecificationVisitor, FallbackVisitor)
10
+ * @public
11
+ */
12
+ const BaseSpecificationVisitor = exports.BaseSpecificationVisitor = (0, _tsMixer.Mixin)(_apidomNsOpenapi.SpecificationVisitor, _apidomNsOpenapi.FallbackVisitor);
13
+
14
+ /**
15
+ * @public
16
+ */
17
+
18
+ /**
19
+ * Base class for visitors using Mixin(FixedFieldsVisitor, FallbackVisitor)
20
+ * @public
21
+ */
22
+ const BaseFixedFieldsVisitor = exports.BaseFixedFieldsVisitor = (0, _tsMixer.Mixin)(_apidomNsOpenapi.FixedFieldsVisitor, _apidomNsOpenapi.FallbackVisitor);
23
+
24
+ /**
25
+ * @public
26
+ */
27
+
28
+ /**
29
+ * Base class for visitors using Mixin(MapVisitor, FallbackVisitor)
30
+ * @public
31
+ */
32
+ const BaseMapVisitor = exports.BaseMapVisitor = (0, _tsMixer.Mixin)(_apidomNsOpenapi.MapVisitor, _apidomNsOpenapi.FallbackVisitor);
33
+
34
+ /**
35
+ * @public
36
+ */
37
+
38
+ /**
39
+ * Base class for visitors using Mixin(FixedFieldsVisitor, ParentSchemaAwareVisitor, FallbackVisitor)
40
+ * @public
41
+ */
42
+ const BaseSchemaVisitor = exports.BaseSchemaVisitor = (0, _tsMixer.Mixin)(_apidomNsOpenapi.FixedFieldsVisitor, _apidomNsJsonSchema.ParentSchemaAwareVisitor, _apidomNsOpenapi.FallbackVisitor);
43
+
44
+ /**
45
+ * @public
46
+ */
@@ -0,0 +1,43 @@
1
+ import { Mixin } from 'ts-mixer';
2
+ import { SpecificationVisitor, FallbackVisitor, FixedFieldsVisitor, MapVisitor } from '@speclynx/apidom-ns-openapi-3-0';
3
+ import { ParentSchemaAwareVisitor } from '@speclynx/apidom-ns-json-schema-2020-12';
4
+
5
+ /**
6
+ * Base class for visitors using Mixin(SpecificationVisitor, FallbackVisitor)
7
+ * @public
8
+ */
9
+ export const BaseSpecificationVisitor = Mixin(SpecificationVisitor, FallbackVisitor);
10
+
11
+ /**
12
+ * @public
13
+ */
14
+
15
+ /**
16
+ * Base class for visitors using Mixin(FixedFieldsVisitor, FallbackVisitor)
17
+ * @public
18
+ */
19
+ export const BaseFixedFieldsVisitor = Mixin(FixedFieldsVisitor, FallbackVisitor);
20
+
21
+ /**
22
+ * @public
23
+ */
24
+
25
+ /**
26
+ * Base class for visitors using Mixin(MapVisitor, FallbackVisitor)
27
+ * @public
28
+ */
29
+ export const BaseMapVisitor = Mixin(MapVisitor, FallbackVisitor);
30
+
31
+ /**
32
+ * @public
33
+ */
34
+
35
+ /**
36
+ * Base class for visitors using Mixin(FixedFieldsVisitor, ParentSchemaAwareVisitor, FallbackVisitor)
37
+ * @public
38
+ */
39
+ export const BaseSchemaVisitor = Mixin(FixedFieldsVisitor, ParentSchemaAwareVisitor, FallbackVisitor);
40
+
41
+ /**
42
+ * @public
43
+ */
@@ -0,0 +1,66 @@
1
+ import { Mixin } from 'ts-mixer';
2
+ import {
3
+ SpecificationVisitor,
4
+ SpecificationVisitorOptions,
5
+ FallbackVisitor,
6
+ FallbackVisitorOptions,
7
+ FixedFieldsVisitor,
8
+ FixedFieldsVisitorOptions,
9
+ MapVisitor,
10
+ MapVisitorOptions,
11
+ } from '@speclynx/apidom-ns-openapi-3-0';
12
+ import {
13
+ ParentSchemaAwareVisitor,
14
+ ParentSchemaAwareVisitorOptions,
15
+ } from '@speclynx/apidom-ns-json-schema-2020-12';
16
+
17
+ /**
18
+ * Base class for visitors using Mixin(SpecificationVisitor, FallbackVisitor)
19
+ * @public
20
+ */
21
+ export const BaseSpecificationVisitor = Mixin(SpecificationVisitor, FallbackVisitor);
22
+
23
+ /**
24
+ * @public
25
+ */
26
+ export interface BaseSpecificationVisitorOptions
27
+ extends SpecificationVisitorOptions, FallbackVisitorOptions {}
28
+
29
+ /**
30
+ * Base class for visitors using Mixin(FixedFieldsVisitor, FallbackVisitor)
31
+ * @public
32
+ */
33
+ export const BaseFixedFieldsVisitor = Mixin(FixedFieldsVisitor, FallbackVisitor);
34
+
35
+ /**
36
+ * @public
37
+ */
38
+ export interface BaseFixedFieldsVisitorOptions
39
+ extends FixedFieldsVisitorOptions, FallbackVisitorOptions {}
40
+
41
+ /**
42
+ * Base class for visitors using Mixin(MapVisitor, FallbackVisitor)
43
+ * @public
44
+ */
45
+ export const BaseMapVisitor = Mixin(MapVisitor, FallbackVisitor);
46
+
47
+ /**
48
+ * @public
49
+ */
50
+ export interface BaseMapVisitorOptions extends MapVisitorOptions, FallbackVisitorOptions {}
51
+
52
+ /**
53
+ * Base class for visitors using Mixin(FixedFieldsVisitor, ParentSchemaAwareVisitor, FallbackVisitor)
54
+ * @public
55
+ */
56
+ export const BaseSchemaVisitor = Mixin(
57
+ FixedFieldsVisitor,
58
+ ParentSchemaAwareVisitor,
59
+ FallbackVisitor,
60
+ );
61
+
62
+ /**
63
+ * @public
64
+ */
65
+ export interface BaseSchemaVisitorOptions
66
+ extends FixedFieldsVisitorOptions, ParentSchemaAwareVisitorOptions, FallbackVisitorOptions {}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4
+ exports.__esModule = true;
5
+ exports.default = exports.BaseCallbackVisitor = void 0;
6
+ var _apidomNsOpenapi = require("@speclynx/apidom-ns-openapi-3-0");
7
+ var _Callback = _interopRequireDefault(require("../../../../elements/Callback.cjs"));
8
+ var _predicates = require("../../../../predicates.cjs");
9
+ /**
10
+ * @public
11
+ */
12
+ const BaseCallbackVisitor = exports.BaseCallbackVisitor = _apidomNsOpenapi.specificationObj.visitors.document.objects.Callback.$visitor;
13
+ /**
14
+ * @public
15
+ */
16
+ class CallbackVisitor extends BaseCallbackVisitor {
17
+ constructor(options) {
18
+ super(options);
19
+ this.element = new _Callback.default();
20
+ this.specPath = element => {
21
+ // @ts-ignore
22
+ return (0, _apidomNsOpenapi.isReferenceLikeElement)(element) ? ['document', 'objects', 'Reference'] : ['document', 'objects', 'PathItem'];
23
+ };
24
+ }
25
+ ObjectElement(path) {
26
+ BaseCallbackVisitor.prototype.ObjectElement.call(this, path);
27
+
28
+ // decorate every ReferenceElement with metadata about their referencing type
29
+ // @ts-ignore
30
+ this.element.filter(_predicates.isReferenceElement).forEach(referenceElement => {
31
+ // @ts-ignore
32
+ referenceElement.setMetaProperty('referenced-element', 'pathItem');
33
+ });
34
+ }
35
+ }
36
+ var _default = exports.default = CallbackVisitor;
@@ -0,0 +1,31 @@
1
+ import { isReferenceLikeElement, specificationObj as OpenApi3_1Specification } from '@speclynx/apidom-ns-openapi-3-0';
2
+ import CallbackElement from "../../../../elements/Callback.mjs";
3
+ import { isReferenceElement } from "../../../../predicates.mjs";
4
+ /**
5
+ * @public
6
+ */
7
+ export const BaseCallbackVisitor = OpenApi3_1Specification.visitors.document.objects.Callback.$visitor;
8
+ /**
9
+ * @public
10
+ */
11
+ class CallbackVisitor extends BaseCallbackVisitor {
12
+ constructor(options) {
13
+ super(options);
14
+ this.element = new CallbackElement();
15
+ this.specPath = element => {
16
+ // @ts-ignore
17
+ return isReferenceLikeElement(element) ? ['document', 'objects', 'Reference'] : ['document', 'objects', 'PathItem'];
18
+ };
19
+ }
20
+ ObjectElement(path) {
21
+ BaseCallbackVisitor.prototype.ObjectElement.call(this, path);
22
+
23
+ // decorate every ReferenceElement with metadata about their referencing type
24
+ // @ts-ignore
25
+ this.element.filter(isReferenceElement).forEach(referenceElement => {
26
+ // @ts-ignore
27
+ referenceElement.setMetaProperty('referenced-element', 'pathItem');
28
+ });
29
+ }
30
+ }
31
+ export default CallbackVisitor;