@redocly/openapi-core 1.18.1 → 1.20.0

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 (411) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/__tests__/utils.ts +14 -7
  3. package/lib/benchmark/benches/lint-with-many-rules.bench.d.ts +1 -0
  4. package/lib/benchmark/benches/lint-with-many-rules.bench.js +7 -3
  5. package/lib/benchmark/benches/lint-with-nested-rule.bench.d.ts +1 -0
  6. package/lib/benchmark/benches/lint-with-nested-rule.bench.js +7 -3
  7. package/lib/benchmark/benches/lint-with-no-rules.bench.d.ts +1 -0
  8. package/lib/benchmark/benches/lint-with-no-rules.bench.js +7 -3
  9. package/lib/benchmark/benches/lint-with-top-level-rule-report.bench.d.ts +1 -0
  10. package/lib/benchmark/benches/lint-with-top-level-rule-report.bench.js +19 -15
  11. package/lib/benchmark/benches/lint-with-top-level-rule.bench.d.ts +1 -0
  12. package/lib/benchmark/benches/lint-with-top-level-rule.bench.js +18 -14
  13. package/lib/benchmark/benches/recommended-oas3.bench.js +2 -2
  14. package/lib/benchmark/benches/resolve-with-no-external.bench.js +2 -2
  15. package/lib/benchmark/utils.d.ts +3 -3
  16. package/lib/benchmark/utils.js +10 -7
  17. package/lib/bundle.d.ts +2 -2
  18. package/lib/bundle.js +127 -120
  19. package/lib/config/all.js +13 -1
  20. package/lib/config/builtIn.js +18 -17
  21. package/lib/config/config-resolvers.d.ts +1 -1
  22. package/lib/config/config-resolvers.js +241 -158
  23. package/lib/config/config.d.ts +4 -3
  24. package/lib/config/config.js +53 -34
  25. package/lib/config/load.d.ts +1 -1
  26. package/lib/config/load.js +105 -117
  27. package/lib/config/minimal.js +13 -0
  28. package/lib/config/recommended-strict.js +14 -1
  29. package/lib/config/recommended.js +14 -1
  30. package/lib/config/rules.d.ts +3 -3
  31. package/lib/config/rules.js +1 -2
  32. package/lib/config/types.d.ts +17 -4
  33. package/lib/config/utils.d.ts +3 -1
  34. package/lib/config/utils.js +78 -49
  35. package/lib/decorators/async3/index.d.ts +1 -0
  36. package/lib/decorators/async3/index.js +4 -0
  37. package/lib/decorators/common/filters/filter-helper.d.ts +1 -1
  38. package/lib/decorators/common/filters/filter-helper.js +2 -3
  39. package/lib/decorators/common/filters/filter-in.d.ts +1 -1
  40. package/lib/decorators/common/filters/filter-in.js +1 -1
  41. package/lib/decorators/common/filters/filter-out.d.ts +1 -1
  42. package/lib/decorators/common/filters/filter-out.js +1 -1
  43. package/lib/decorators/common/info-description-override.d.ts +1 -1
  44. package/lib/decorators/common/info-override.d.ts +1 -1
  45. package/lib/decorators/common/info-override.js +1 -12
  46. package/lib/decorators/common/media-type-examples-override.d.ts +1 -1
  47. package/lib/decorators/common/media-type-examples-override.js +8 -2
  48. package/lib/decorators/common/operation-description-override.d.ts +1 -1
  49. package/lib/decorators/common/registry-dependencies.d.ts +1 -1
  50. package/lib/decorators/common/remove-x-internal.d.ts +1 -1
  51. package/lib/decorators/common/remove-x-internal.js +4 -5
  52. package/lib/decorators/common/tag-description-override.d.ts +1 -1
  53. package/lib/decorators/oas2/index.d.ts +1 -1
  54. package/lib/decorators/oas2/remove-unused-components.js +1 -2
  55. package/lib/decorators/oas3/index.d.ts +1 -1
  56. package/lib/decorators/oas3/remove-unused-components.js +1 -2
  57. package/lib/env.d.ts +0 -1
  58. package/lib/env.js +1 -1
  59. package/lib/format/codeframes.d.ts +1 -1
  60. package/lib/format/codeframes.js +10 -8
  61. package/lib/format/format.d.ts +1 -1
  62. package/lib/format/format.js +24 -16
  63. package/lib/index.d.ts +2 -1
  64. package/lib/index.js +6 -4
  65. package/lib/js-yaml/index.d.ts +1 -1
  66. package/lib/js-yaml/index.js +1 -1
  67. package/lib/lint.d.ts +3 -1
  68. package/lib/lint.js +92 -99
  69. package/lib/logger.js +2 -2
  70. package/lib/oas-types.d.ts +9 -5
  71. package/lib/oas-types.js +22 -12
  72. package/lib/redocly/domains.d.ts +1 -1
  73. package/lib/redocly/domains.js +6 -6
  74. package/lib/redocly/index.d.ts +1 -1
  75. package/lib/redocly/index.js +60 -73
  76. package/lib/redocly/registry-api.js +64 -82
  77. package/lib/ref-utils.d.ts +2 -2
  78. package/lib/ref-utils.js +14 -13
  79. package/lib/resolve.d.ts +2 -2
  80. package/lib/resolve.js +186 -205
  81. package/lib/rules/ajv.d.ts +1 -1
  82. package/lib/rules/ajv.js +10 -8
  83. package/lib/rules/arazzo/index.js +2 -0
  84. package/lib/rules/async2/channels-kebab-case.d.ts +1 -1
  85. package/lib/rules/async2/index.js +2 -0
  86. package/lib/rules/async2/no-channel-trailing-slash.d.ts +1 -1
  87. package/lib/rules/async3/channels-kebab-case.d.ts +2 -0
  88. package/lib/rules/async3/channels-kebab-case.js +19 -0
  89. package/lib/rules/async3/index.d.ts +3 -0
  90. package/lib/rules/async3/index.js +24 -0
  91. package/lib/rules/async3/no-channel-trailing-slash.d.ts +2 -0
  92. package/lib/rules/async3/no-channel-trailing-slash.js +16 -0
  93. package/lib/rules/common/assertions/asserts.d.ts +2 -2
  94. package/lib/rules/common/assertions/asserts.js +5 -5
  95. package/lib/rules/common/assertions/index.d.ts +4 -4
  96. package/lib/rules/common/assertions/utils.d.ts +1 -1
  97. package/lib/rules/common/assertions/utils.js +43 -28
  98. package/lib/rules/common/info-contact.d.ts +1 -1
  99. package/lib/rules/common/info-license-strict.d.ts +2 -0
  100. package/lib/rules/common/info-license-strict.js +26 -0
  101. package/lib/rules/common/info-license-url.d.ts +1 -1
  102. package/lib/rules/common/info-license.d.ts +1 -1
  103. package/lib/rules/common/no-ambiguous-paths.d.ts +1 -1
  104. package/lib/rules/common/no-enum-type-mismatch.d.ts +1 -1
  105. package/lib/rules/common/no-http-verbs-in-paths.d.ts +1 -1
  106. package/lib/rules/common/no-identical-paths.d.ts +1 -1
  107. package/lib/rules/common/no-invalid-parameter-examples.js +1 -2
  108. package/lib/rules/common/no-invalid-schema-examples.js +1 -2
  109. package/lib/rules/common/no-path-trailing-slash.d.ts +1 -1
  110. package/lib/rules/common/no-required-schema-properties-undefined.d.ts +1 -1
  111. package/lib/rules/common/no-required-schema-properties-undefined.js +1 -2
  112. package/lib/rules/common/operation-2xx-response.d.ts +1 -1
  113. package/lib/rules/common/operation-4xx-response.d.ts +1 -1
  114. package/lib/rules/common/operation-description.d.ts +1 -1
  115. package/lib/rules/common/operation-operationId-unique.d.ts +1 -1
  116. package/lib/rules/common/operation-operationId-url-safe.d.ts +1 -1
  117. package/lib/rules/common/operation-operationId-url-safe.js +1 -0
  118. package/lib/rules/common/operation-operationId.d.ts +1 -1
  119. package/lib/rules/common/operation-parameters-unique.d.ts +1 -1
  120. package/lib/rules/common/operation-singular-tag.d.ts +1 -1
  121. package/lib/rules/common/operation-summary.d.ts +1 -1
  122. package/lib/rules/common/operation-tag-defined.d.ts +1 -1
  123. package/lib/rules/common/operation-tag-defined.js +1 -2
  124. package/lib/rules/common/parameter-description.d.ts +1 -1
  125. package/lib/rules/common/path-declaration-must-exist.d.ts +1 -1
  126. package/lib/rules/common/path-excludes-patterns.d.ts +1 -1
  127. package/lib/rules/common/path-http-verbs-order.d.ts +1 -1
  128. package/lib/rules/common/path-http-verbs-order.js +1 -1
  129. package/lib/rules/common/path-not-include-query.d.ts +1 -1
  130. package/lib/rules/common/path-params-defined.d.ts +1 -1
  131. package/lib/rules/common/path-segment-plural.d.ts +1 -1
  132. package/lib/rules/common/paths-kebab-case.d.ts +1 -1
  133. package/lib/rules/common/required-string-property-missing-min-length.d.ts +1 -1
  134. package/lib/rules/common/required-string-property-missing-min-length.js +2 -2
  135. package/lib/rules/common/response-contains-header.d.ts +1 -1
  136. package/lib/rules/common/response-contains-header.js +2 -2
  137. package/lib/rules/common/security-defined.d.ts +1 -1
  138. package/lib/rules/common/security-defined.js +3 -7
  139. package/lib/rules/common/spec-strict-refs.d.ts +1 -1
  140. package/lib/rules/common/spec.d.ts +2 -2
  141. package/lib/rules/common/spec.js +6 -7
  142. package/lib/rules/common/tag-description.d.ts +1 -1
  143. package/lib/rules/common/tags-alphabetical.d.ts +1 -1
  144. package/lib/rules/no-unresolved-refs.d.ts +3 -3
  145. package/lib/rules/no-unresolved-refs.js +3 -4
  146. package/lib/rules/oas2/boolean-parameter-prefixes.d.ts +1 -1
  147. package/lib/rules/oas2/index.d.ts +1 -1
  148. package/lib/rules/oas2/index.js +2 -0
  149. package/lib/rules/oas2/response-contains-property.d.ts +1 -1
  150. package/lib/rules/oas2/response-contains-property.js +1 -2
  151. package/lib/rules/oas3/array-parameter-serialization.d.ts +1 -1
  152. package/lib/rules/oas3/array-parameter-serialization.js +1 -2
  153. package/lib/rules/oas3/boolean-parameter-prefixes.d.ts +1 -1
  154. package/lib/rules/oas3/component-name-unique.d.ts +1 -1
  155. package/lib/rules/oas3/component-name-unique.js +2 -4
  156. package/lib/rules/oas3/index.d.ts +1 -1
  157. package/lib/rules/oas3/index.js +2 -0
  158. package/lib/rules/oas3/no-empty-servers.d.ts +1 -1
  159. package/lib/rules/oas3/no-example-value-and-externalValue.d.ts +1 -1
  160. package/lib/rules/oas3/no-invalid-media-type-examples.d.ts +1 -1
  161. package/lib/rules/oas3/no-invalid-media-type-examples.js +1 -2
  162. package/lib/rules/oas3/no-server-example.com.d.ts +1 -1
  163. package/lib/rules/oas3/no-server-example.com.js +1 -0
  164. package/lib/rules/oas3/no-server-trailing-slash.d.ts +1 -1
  165. package/lib/rules/oas3/no-server-variables-empty-enum.d.ts +1 -1
  166. package/lib/rules/oas3/no-server-variables-empty-enum.js +1 -2
  167. package/lib/rules/oas3/no-undefined-server-variable.d.ts +1 -1
  168. package/lib/rules/oas3/no-undefined-server-variable.js +2 -3
  169. package/lib/rules/oas3/no-unused-components.d.ts +1 -1
  170. package/lib/rules/oas3/no-unused-components.js +1 -2
  171. package/lib/rules/oas3/response-contains-property.d.ts +1 -1
  172. package/lib/rules/oas3/response-contains-property.js +1 -2
  173. package/lib/rules/oas3/spec-components-invalid-map-name.d.ts +1 -1
  174. package/lib/rules/other/stats.d.ts +3 -3
  175. package/lib/rules/other/stats.js +5 -3
  176. package/lib/rules/spot/parameters-no-body-inside-in.d.ts +2 -0
  177. package/lib/rules/spot/parameters-no-body-inside-in.js +18 -0
  178. package/lib/rules/utils.d.ts +4 -2
  179. package/lib/rules/utils.js +41 -13
  180. package/lib/types/arazzo.d.ts +1 -2275
  181. package/lib/types/arazzo.js +246 -309
  182. package/lib/types/asyncapi2.d.ts +17 -0
  183. package/lib/types/{asyncapi.js → asyncapi2.js} +59 -53
  184. package/lib/types/asyncapi3.d.ts +2 -0
  185. package/lib/types/asyncapi3.js +347 -0
  186. package/lib/types/index.js +19 -10
  187. package/lib/types/json-schema-adapter.d.ts +1 -1
  188. package/lib/types/json-schema-adapter.js +4 -18
  189. package/lib/types/oas2.js +6 -6
  190. package/lib/types/oas3.d.ts +4 -0
  191. package/lib/types/oas3.js +19 -19
  192. package/lib/types/oas3_1.d.ts +3 -0
  193. package/lib/types/oas3_1.js +20 -14
  194. package/lib/types/redocly-yaml.d.ts +8 -6
  195. package/lib/types/redocly-yaml.js +135 -36
  196. package/lib/typings/arazzo.d.ts +145 -27
  197. package/lib/typings/asyncapi3.d.ts +53 -0
  198. package/lib/typings/asyncapi3.js +2 -0
  199. package/lib/typings/common.d.ts +1 -1
  200. package/lib/typings/swagger.d.ts +2 -2
  201. package/lib/utils.d.ts +4 -3
  202. package/lib/utils.js +55 -72
  203. package/lib/visitors.d.ts +29 -1
  204. package/lib/visitors.js +21 -8
  205. package/lib/walk.d.ts +3 -3
  206. package/lib/walk.js +30 -23
  207. package/package.json +3 -3
  208. package/src/__tests__/bundle.test.ts +144 -2
  209. package/src/__tests__/lint.test.ts +29 -21
  210. package/src/__tests__/walk.test.ts +25 -25
  211. package/src/benchmark/benches/lint-with-many-rules.bench.ts +7 -1
  212. package/src/benchmark/benches/lint-with-nested-rule.bench.ts +7 -1
  213. package/src/benchmark/benches/lint-with-no-rules.bench.ts +8 -1
  214. package/src/benchmark/benches/lint-with-top-level-rule-report.bench.ts +18 -13
  215. package/src/benchmark/benches/lint-with-top-level-rule.bench.ts +17 -11
  216. package/src/benchmark/fork.js +4 -0
  217. package/src/benchmark/utils.ts +6 -5
  218. package/src/bundle.ts +19 -4
  219. package/src/config/__tests__/__snapshots__/config-resolvers.test.ts.snap +32 -2
  220. package/src/config/__tests__/__snapshots__/config.test.ts.snap +24 -0
  221. package/src/config/__tests__/config-resolvers.test.ts +82 -0
  222. package/src/config/__tests__/config.test.ts +11 -0
  223. package/src/config/__tests__/fixtures/resolve-config/local-config-with-commonjs-export-function.yaml +2 -0
  224. package/src/config/__tests__/fixtures/resolve-config/local-config-with-esm.yaml +2 -0
  225. package/src/config/__tests__/fixtures/resolve-config/plugin-esm.mjs +10 -0
  226. package/src/config/__tests__/fixtures/resolve-config/plugin-with-export-function.cjs +10 -0
  227. package/src/config/__tests__/resolve-plugins.test.ts +4 -1
  228. package/src/config/all.ts +13 -1
  229. package/src/config/builtIn.ts +9 -8
  230. package/src/config/config-resolvers.ts +92 -21
  231. package/src/config/config.ts +31 -13
  232. package/src/config/load.ts +2 -2
  233. package/src/config/minimal.ts +13 -0
  234. package/src/config/recommended-strict.ts +14 -1
  235. package/src/config/recommended.ts +14 -1
  236. package/src/config/rules.ts +12 -4
  237. package/src/config/types.ts +34 -5
  238. package/src/config/utils.ts +28 -2
  239. package/src/decorators/__tests__/filter-in.test.ts +29 -26
  240. package/src/decorators/__tests__/filter-out.test.ts +32 -23
  241. package/src/decorators/__tests__/media-type-examples-override.test.ts +45 -45
  242. package/src/decorators/__tests__/remove-x-internal.test.ts +8 -5
  243. package/src/decorators/async3/index.ts +1 -0
  244. package/src/decorators/common/filters/filter-helper.ts +2 -1
  245. package/src/decorators/common/filters/filter-in.ts +2 -1
  246. package/src/decorators/common/filters/filter-out.ts +2 -1
  247. package/src/decorators/common/info-description-override.ts +3 -2
  248. package/src/decorators/common/info-override.ts +1 -1
  249. package/src/decorators/common/media-type-examples-override.ts +4 -3
  250. package/src/decorators/common/operation-description-override.ts +5 -4
  251. package/src/decorators/common/registry-dependencies.ts +2 -2
  252. package/src/decorators/common/remove-x-internal.ts +5 -4
  253. package/src/decorators/common/tag-description-override.ts +3 -2
  254. package/src/decorators/oas2/__tests__/remove-unused-components.test.ts +3 -3
  255. package/src/decorators/oas2/index.ts +2 -1
  256. package/src/decorators/oas2/remove-unused-components.ts +1 -1
  257. package/src/decorators/oas3/__tests__/remove-unused-components.test.ts +4 -4
  258. package/src/decorators/oas3/index.ts +2 -1
  259. package/src/decorators/oas3/remove-unused-components.ts +1 -1
  260. package/src/format/codeframes.ts +2 -1
  261. package/src/format/format.ts +9 -4
  262. package/src/index.ts +2 -1
  263. package/src/js-yaml/index.ts +3 -1
  264. package/src/lint.ts +28 -4
  265. package/src/logger.ts +2 -2
  266. package/src/oas-types.ts +41 -22
  267. package/src/redocly/domains.ts +1 -1
  268. package/src/redocly/index.ts +3 -3
  269. package/src/redocly/registry-api.ts +5 -3
  270. package/src/ref-utils.ts +4 -2
  271. package/src/resolve.ts +6 -4
  272. package/src/rules/__tests__/no-unresolved-refs.test.ts +21 -7
  273. package/src/rules/ajv.ts +2 -1
  274. package/src/rules/arazzo/__tests__/parameters-no-body-inside-in.test.ts +76 -0
  275. package/src/rules/arazzo/index.ts +6 -3
  276. package/src/rules/async2/__tests__/channels-kebab-case.test.ts +9 -5
  277. package/src/rules/async2/__tests__/no-channel-trailing-slash.test.ts +3 -3
  278. package/src/rules/async2/channels-kebab-case.ts +2 -2
  279. package/src/rules/async2/index.ts +9 -6
  280. package/src/rules/async2/no-channel-trailing-slash.ts +2 -2
  281. package/src/rules/async3/__tests__/channels-kebab-case.test.ts +145 -0
  282. package/src/rules/async3/__tests__/no-channel-trailing-slash.test.ts +96 -0
  283. package/src/rules/async3/channels-kebab-case.ts +19 -0
  284. package/src/rules/async3/index.ts +26 -0
  285. package/src/rules/async3/no-channel-trailing-slash.ts +16 -0
  286. package/src/rules/common/__tests__/info-license-strict.test.ts +141 -0
  287. package/src/rules/common/__tests__/info-license.test.ts +2 -2
  288. package/src/rules/common/__tests__/license-url.test.ts +2 -2
  289. package/src/rules/common/__tests__/no-ambiguous-paths.test.ts +1 -1
  290. package/src/rules/common/__tests__/no-enum-type-mismatch.test.ts +5 -5
  291. package/src/rules/common/__tests__/no-identical-paths.test.ts +1 -1
  292. package/src/rules/common/__tests__/no-invalid-parameter-examples.test.ts +1 -1
  293. package/src/rules/common/__tests__/no-invalid-schema-examples.test.ts +1 -1
  294. package/src/rules/common/__tests__/no-path-trailing-slash.test.ts +4 -4
  295. package/src/rules/common/__tests__/no-required-schema-properties-undefined.test.ts +11 -11
  296. package/src/rules/common/__tests__/operation-2xx-response.test.ts +8 -6
  297. package/src/rules/common/__tests__/operation-4xx-response.test.ts +9 -7
  298. package/src/rules/common/__tests__/operation-operationId-unique.test.ts +2 -2
  299. package/src/rules/common/__tests__/operation-operationId-url-safe.test.ts +1 -1
  300. package/src/rules/common/__tests__/operation-parameters-unique.test.ts +4 -4
  301. package/src/rules/common/__tests__/operation-singular-tag.test.ts +2 -2
  302. package/src/rules/common/__tests__/path-http-verbs-order.test.ts +2 -2
  303. package/src/rules/common/__tests__/path-not-include-query.test.ts +2 -2
  304. package/src/rules/common/__tests__/path-params-defined.test.ts +5 -5
  305. package/src/rules/common/__tests__/paths-kebab-case.test.ts +6 -4
  306. package/src/rules/common/__tests__/scalar-property-missing-example.test.ts +8 -8
  307. package/src/rules/common/__tests__/security-defined.test.ts +14 -8
  308. package/src/rules/common/__tests__/spec-strict-refs.test.ts +1 -1
  309. package/src/rules/common/__tests__/spec.test.ts +10 -10
  310. package/src/rules/common/__tests__/tag-description.test.ts +2 -2
  311. package/src/rules/common/__tests__/tags-alphabetical.test.ts +6 -4
  312. package/src/rules/common/assertions/asserts.ts +5 -9
  313. package/src/rules/common/assertions/index.ts +12 -4
  314. package/src/rules/common/assertions/utils.ts +4 -2
  315. package/src/rules/common/info-contact.ts +2 -1
  316. package/src/rules/common/info-license-strict.ts +24 -0
  317. package/src/rules/common/info-license-url.ts +2 -1
  318. package/src/rules/common/info-license.ts +2 -1
  319. package/src/rules/common/no-ambiguous-paths.ts +4 -4
  320. package/src/rules/common/no-enum-type-mismatch.ts +5 -4
  321. package/src/rules/common/no-http-verbs-in-paths.ts +5 -4
  322. package/src/rules/common/no-identical-paths.ts +4 -4
  323. package/src/rules/common/no-invalid-parameter-examples.ts +3 -2
  324. package/src/rules/common/no-path-trailing-slash.ts +2 -2
  325. package/src/rules/common/no-required-schema-properties-undefined.ts +5 -4
  326. package/src/rules/common/operation-2xx-response.ts +3 -2
  327. package/src/rules/common/operation-4xx-response.ts +3 -2
  328. package/src/rules/common/operation-description.ts +5 -4
  329. package/src/rules/common/operation-operationId-unique.ts +4 -4
  330. package/src/rules/common/operation-operationId-url-safe.ts +5 -4
  331. package/src/rules/common/operation-operationId.ts +5 -4
  332. package/src/rules/common/operation-parameters-unique.ts +4 -4
  333. package/src/rules/common/operation-singular-tag.ts +4 -4
  334. package/src/rules/common/operation-summary.ts +5 -4
  335. package/src/rules/common/operation-tag-defined.ts +4 -4
  336. package/src/rules/common/parameter-description.ts +4 -4
  337. package/src/rules/common/path-declaration-must-exist.ts +2 -2
  338. package/src/rules/common/path-excludes-patterns.ts +4 -4
  339. package/src/rules/common/path-http-verbs-order.ts +4 -4
  340. package/src/rules/common/path-not-include-query.ts +2 -2
  341. package/src/rules/common/path-params-defined.ts +4 -4
  342. package/src/rules/common/path-segment-plural.ts +3 -2
  343. package/src/rules/common/paths-kebab-case.ts +2 -2
  344. package/src/rules/common/required-string-property-missing-min-length.ts +4 -4
  345. package/src/rules/common/response-contains-header.ts +5 -4
  346. package/src/rules/common/scalar-property-missing-example.ts +2 -1
  347. package/src/rules/common/security-defined.ts +5 -5
  348. package/src/rules/common/spec-strict-refs.ts +2 -1
  349. package/src/rules/common/spec.ts +4 -3
  350. package/src/rules/common/tag-description.ts +2 -1
  351. package/src/rules/common/tags-alphabetical.ts +4 -4
  352. package/src/rules/no-unresolved-refs.ts +4 -3
  353. package/src/rules/oas2/__tests__/boolean-parameter-prefixes.test.ts +7 -5
  354. package/src/rules/oas2/__tests__/response-contains-header.test.ts +14 -8
  355. package/src/rules/oas2/__tests__/response-contains-property.test.ts +14 -8
  356. package/src/rules/oas2/__tests__/spec/referenceableScalars.test.ts +3 -1
  357. package/src/rules/oas2/boolean-parameter-prefixes.ts +1 -1
  358. package/src/rules/oas2/index.ts +8 -6
  359. package/src/rules/oas2/request-mime-type.ts +2 -1
  360. package/src/rules/oas2/response-contains-property.ts +3 -2
  361. package/src/rules/oas2/response-mime-type.ts +2 -1
  362. package/src/rules/oas3/__tests__/array-parameter-serialization.test.ts +18 -6
  363. package/src/rules/oas3/__tests__/boolean-parameter-prefixes.test.ts +7 -5
  364. package/src/rules/oas3/__tests__/no-empty-enum-servers.com.test.ts +6 -6
  365. package/src/rules/oas3/__tests__/no-example-value-and-externalValue.test.ts +2 -2
  366. package/src/rules/oas3/__tests__/no-invalid-media-type-examples.test.ts +34 -24
  367. package/src/rules/oas3/__tests__/no-server-example.com.test.ts +3 -3
  368. package/src/rules/oas3/__tests__/no-server-trailing-slash.test.ts +3 -3
  369. package/src/rules/oas3/__tests__/no-unused-components.test.ts +1 -1
  370. package/src/rules/oas3/__tests__/operation-4xx-problem-details-rfc7807.test.ts +3 -3
  371. package/src/rules/oas3/__tests__/response-contains-header.test.ts +34 -22
  372. package/src/rules/oas3/__tests__/response-contains-property.test.ts +34 -20
  373. package/src/rules/oas3/__tests__/spec/spec.test.ts +12 -3
  374. package/src/rules/oas3/__tests__/spec-components-invalid-map-name.test.ts +9 -3
  375. package/src/rules/oas3/__tests__/utils/lint-document-for-test.ts +1 -1
  376. package/src/rules/oas3/array-parameter-serialization.ts +3 -2
  377. package/src/rules/oas3/boolean-parameter-prefixes.ts +1 -1
  378. package/src/rules/oas3/component-name-unique.ts +3 -3
  379. package/src/rules/oas3/index.ts +42 -38
  380. package/src/rules/oas3/no-empty-servers.ts +1 -1
  381. package/src/rules/oas3/no-example-value-and-externalValue.ts +1 -1
  382. package/src/rules/oas3/no-invalid-media-type-examples.ts +6 -4
  383. package/src/rules/oas3/no-server-example.com.ts +2 -1
  384. package/src/rules/oas3/no-server-trailing-slash.ts +1 -1
  385. package/src/rules/oas3/no-server-variables-empty-enum.ts +2 -2
  386. package/src/rules/oas3/no-undefined-server-variable.ts +1 -1
  387. package/src/rules/oas3/no-unused-components.ts +2 -2
  388. package/src/rules/oas3/operation-4xx-problem-details-rfc7807.ts +2 -1
  389. package/src/rules/oas3/request-mime-type.ts +2 -1
  390. package/src/rules/oas3/response-contains-property.ts +3 -2
  391. package/src/rules/oas3/response-mime-type.ts +2 -1
  392. package/src/rules/oas3/spec-components-invalid-map-name.ts +3 -3
  393. package/src/rules/other/stats.ts +8 -6
  394. package/src/rules/spot/parameters-no-body-inside-in.ts +17 -0
  395. package/src/rules/utils.ts +41 -4
  396. package/src/types/arazzo.ts +257 -334
  397. package/src/types/{asyncapi.ts → asyncapi2.ts} +41 -35
  398. package/src/types/asyncapi3.ts +383 -0
  399. package/src/types/json-schema-adapter.ts +2 -2
  400. package/src/types/oas3.ts +4 -4
  401. package/src/types/oas3_1.ts +5 -4
  402. package/src/types/redocly-yaml.ts +21 -4
  403. package/src/typings/arazzo.ts +169 -41
  404. package/src/typings/asyncapi3.ts +61 -0
  405. package/src/typings/common.ts +1 -0
  406. package/src/typings/swagger.ts +2 -2
  407. package/src/utils.ts +5 -3
  408. package/src/visitors.ts +58 -1
  409. package/src/walk.ts +3 -3
  410. package/tsconfig.tsbuildinfo +1 -1
  411. package/lib/types/asyncapi.d.ts +0 -2
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AsyncApi2Types = void 0;
3
+ exports.AsyncApi2Types = exports.AsyncApi2Bindings = exports.Dependencies = exports.SecuritySchemeFlows = exports.Discriminator = exports.DiscriminatorMapping = exports.SchemaProperties = exports.Schema = exports.MessageExample = exports.CorrelationId = exports.License = exports.Contact = exports.ServerVariable = exports.ServerMap = exports.ExternalDocs = exports.Tag = void 0;
4
4
  const _1 = require(".");
5
5
  const ref_utils_1 = require("../ref-utils");
6
6
  const Root = {
7
7
  properties: {
8
- asyncapi: null,
8
+ asyncapi: null, // TODO: validate semver format and supported version
9
9
  info: 'Info',
10
10
  id: { type: 'string' },
11
11
  servers: 'ServerMap',
@@ -59,7 +59,7 @@ const ChannelBindings = {
59
59
  },
60
60
  additionalProperties: { type: 'object' },
61
61
  };
62
- const Tag = {
62
+ exports.Tag = {
63
63
  properties: {
64
64
  name: { type: 'string' },
65
65
  description: { type: 'string' },
@@ -67,7 +67,7 @@ const Tag = {
67
67
  },
68
68
  required: ['name'],
69
69
  };
70
- const ExternalDocs = {
70
+ exports.ExternalDocs = {
71
71
  properties: {
72
72
  description: { type: 'string' },
73
73
  url: { type: 'string' },
@@ -119,11 +119,13 @@ const Server = {
119
119
  },
120
120
  required: ['url', 'protocol'],
121
121
  };
122
- const ServerMap = {
122
+ exports.ServerMap = {
123
123
  properties: {},
124
- additionalProperties: (_value, key) => key.match(/^[A-Za-z0-9_\-]+$/) ? 'Server' : undefined,
124
+ additionalProperties: (_value, key) =>
125
+ // eslint-disable-next-line no-useless-escape
126
+ key.match(/^[A-Za-z0-9_\-]+$/) ? 'Server' : undefined,
125
127
  };
126
- const ServerVariable = {
128
+ exports.ServerVariable = {
127
129
  properties: {
128
130
  enum: {
129
131
  type: 'array',
@@ -149,14 +151,14 @@ const Info = {
149
151
  },
150
152
  required: ['title', 'version'],
151
153
  };
152
- const Contact = {
154
+ exports.Contact = {
153
155
  properties: {
154
156
  name: { type: 'string' },
155
157
  url: { type: 'string' },
156
158
  email: { type: 'string' },
157
159
  },
158
160
  };
159
- const License = {
161
+ exports.License = {
160
162
  properties: {
161
163
  name: { type: 'string' },
162
164
  url: { type: 'string' },
@@ -170,7 +172,7 @@ const Parameter = {
170
172
  location: { type: 'string' },
171
173
  },
172
174
  };
173
- const CorrelationId = {
175
+ exports.CorrelationId = {
174
176
  properties: {
175
177
  description: { type: 'string' },
176
178
  location: { type: 'string' },
@@ -181,9 +183,9 @@ const Message = {
181
183
  properties: {
182
184
  messageId: { type: 'string' },
183
185
  headers: 'Schema',
184
- payload: 'Schema',
186
+ payload: 'Schema', // TODO: strictly this does not cover all cases
185
187
  correlationId: 'CorrelationId',
186
- schemaFormat: { type: 'string' },
188
+ schemaFormat: { type: 'string' }, // TODO: support official list of schema formats and custom values
187
189
  contentType: { type: 'string' },
188
190
  name: { type: 'string' },
189
191
  title: { type: 'string' },
@@ -192,7 +194,7 @@ const Message = {
192
194
  tags: 'TagList',
193
195
  externalDocs: 'ExternalDocs',
194
196
  bindings: 'MessageBindings',
195
- // examples: 'MessageExampleList', // TODO: add support for message examples
197
+ examples: 'MessageExampleList',
196
198
  traits: 'MessageTraitList',
197
199
  },
198
200
  additionalProperties: {},
@@ -279,7 +281,7 @@ const MessageTrait = {
279
281
  tags: 'TagList',
280
282
  externalDocs: 'ExternalDocs',
281
283
  bindings: 'MessageBindings',
282
- // examples: 'MessageExampleList', // TODO: support examples for message traits
284
+ examples: 'MessageExampleList',
283
285
  },
284
286
  additionalProperties: {},
285
287
  };
@@ -297,7 +299,7 @@ const Operation = {
297
299
  },
298
300
  required: [],
299
301
  };
300
- const MessageExample = {
302
+ exports.MessageExample = {
301
303
  properties: {
302
304
  payload: { isExample: true },
303
305
  summary: { type: 'string' },
@@ -305,7 +307,7 @@ const MessageExample = {
305
307
  headers: { type: 'object' },
306
308
  },
307
309
  };
308
- const Schema = {
310
+ exports.Schema = {
309
311
  properties: {
310
312
  $id: { type: 'string' },
311
313
  $schema: { type: 'string' },
@@ -374,13 +376,13 @@ const Schema = {
374
376
  dependencies: 'Dependencies',
375
377
  },
376
378
  };
377
- const SchemaProperties = {
379
+ exports.SchemaProperties = {
378
380
  properties: {},
379
381
  additionalProperties: (value) => {
380
382
  return typeof value === 'boolean' ? { type: 'boolean' } : 'Schema';
381
383
  },
382
384
  };
383
- const DiscriminatorMapping = {
385
+ exports.DiscriminatorMapping = {
384
386
  properties: {},
385
387
  additionalProperties: (value) => {
386
388
  if ((0, ref_utils_1.isMappingRef)(value)) {
@@ -391,7 +393,7 @@ const DiscriminatorMapping = {
391
393
  }
392
394
  },
393
395
  };
394
- const Discriminator = {
396
+ exports.Discriminator = {
395
397
  properties: {
396
398
  propertyName: { type: 'string' },
397
399
  mapping: 'DiscriminatorMapping',
@@ -406,7 +408,6 @@ const Components = {
406
408
  correlationIds: 'NamedCorrelationIds',
407
409
  messageTraits: 'NamedMessageTraits',
408
410
  operationTraits: 'NamedOperationTraits',
409
- streamHeaders: 'NamedStreamHeaders',
410
411
  securitySchemes: 'NamedSecuritySchemes',
411
412
  servers: 'ServerMap',
412
413
  serverVariables: 'ServerVariablesMap',
@@ -420,7 +421,7 @@ const Components = {
420
421
  const ImplicitFlow = {
421
422
  properties: {
422
423
  refreshUrl: { type: 'string' },
423
- scopes: { type: 'object', additionalProperties: { type: 'string' } },
424
+ scopes: { type: 'object', additionalProperties: { type: 'string' } }, // TODO: validate scopes
424
425
  authorizationUrl: { type: 'string' },
425
426
  },
426
427
  required: ['authorizationUrl', 'scopes'],
@@ -428,7 +429,7 @@ const ImplicitFlow = {
428
429
  const PasswordFlow = {
429
430
  properties: {
430
431
  refreshUrl: { type: 'string' },
431
- scopes: { type: 'object', additionalProperties: { type: 'string' } },
432
+ scopes: { type: 'object', additionalProperties: { type: 'string' } }, // TODO: validate scopes
432
433
  tokenUrl: { type: 'string' },
433
434
  },
434
435
  required: ['tokenUrl', 'scopes'],
@@ -436,7 +437,7 @@ const PasswordFlow = {
436
437
  const ClientCredentials = {
437
438
  properties: {
438
439
  refreshUrl: { type: 'string' },
439
- scopes: { type: 'object', additionalProperties: { type: 'string' } },
440
+ scopes: { type: 'object', additionalProperties: { type: 'string' } }, // TODO: validate scopes
440
441
  tokenUrl: { type: 'string' },
441
442
  },
442
443
  required: ['tokenUrl', 'scopes'],
@@ -445,12 +446,12 @@ const AuthorizationCode = {
445
446
  properties: {
446
447
  refreshUrl: { type: 'string' },
447
448
  authorizationUrl: { type: 'string' },
448
- scopes: { type: 'object', additionalProperties: { type: 'string' } },
449
+ scopes: { type: 'object', additionalProperties: { type: 'string' } }, // TODO: validate scopes
449
450
  tokenUrl: { type: 'string' },
450
451
  },
451
452
  required: ['authorizationUrl', 'tokenUrl', 'scopes'],
452
453
  };
453
- const SecuritySchemeFlows = {
454
+ exports.SecuritySchemeFlows = {
454
455
  properties: {
455
456
  implicit: 'ImplicitFlow',
456
457
  password: 'PasswordFlow',
@@ -486,7 +487,7 @@ const SecurityScheme = {
486
487
  openIdConnectUrl: { type: 'string' },
487
488
  },
488
489
  required(value) {
489
- switch (value === null || value === void 0 ? void 0 : value.type) {
490
+ switch (value?.type) {
490
491
  case 'apiKey':
491
492
  return ['type', 'in'];
492
493
  case 'httpApiKey':
@@ -502,7 +503,7 @@ const SecurityScheme = {
502
503
  }
503
504
  },
504
505
  allowed(value) {
505
- switch (value === null || value === void 0 ? void 0 : value.type) {
506
+ switch (value?.type) {
506
507
  case 'apiKey':
507
508
  return ['type', 'in', 'description'];
508
509
  case 'httpApiKey':
@@ -519,7 +520,7 @@ const SecurityScheme = {
519
520
  },
520
521
  extensionsPrefix: 'x-',
521
522
  };
522
- const Dependencies = {
523
+ exports.Dependencies = {
523
524
  properties: {},
524
525
  additionalProperties: (value) => {
525
526
  return Array.isArray(value) ? { type: 'array', items: { type: 'string' } } : 'Schema';
@@ -602,7 +603,7 @@ const KafkaServerBinding = {
602
603
  ServerBindings.properties.kafka = KafkaServerBinding;
603
604
  const KafkaMessageBinding = {
604
605
  properties: {
605
- key: 'Schema',
606
+ key: 'Schema', // TODO: add avro support
606
607
  schemaIdLocation: { type: 'string' },
607
608
  schemaIdPayloadEncoding: { type: 'string' },
608
609
  schemaLookupStrategy: { type: 'string' },
@@ -666,7 +667,7 @@ const AmqpOperationBinding = {
666
667
  userId: { type: 'string' },
667
668
  cc: { type: 'array', items: { type: 'string' } },
668
669
  priority: { type: 'integer' },
669
- deliveryMode: { type: 'integer' },
670
+ deliveryMode: { type: 'integer' }, // TODO: enum: [1, 2]
670
671
  mandatory: { type: 'boolean' },
671
672
  bcc: { type: 'array', items: { type: 'string' } },
672
673
  replyTo: { type: 'string' },
@@ -890,20 +891,7 @@ OperationBindings.properties.mercure = MercureOperationBinding;
890
891
  // googlepubsub
891
892
  // pulsar
892
893
  // --- End per-protocol node types
893
- exports.AsyncApi2Types = {
894
- Root,
895
- Tag,
896
- TagList: (0, _1.listOf)('Tag'),
897
- ServerMap,
898
- ExternalDocs,
899
- Server,
900
- ServerVariable,
901
- ServerVariablesMap: (0, _1.mapOf)('ServerVariable'),
902
- SecurityRequirement,
903
- SecurityRequirementList: (0, _1.listOf)('SecurityRequirement'),
904
- Info,
905
- Contact,
906
- License,
894
+ exports.AsyncApi2Bindings = {
907
895
  HttpServerBinding,
908
896
  HttpChannelBinding,
909
897
  HttpMessageBinding,
@@ -965,16 +953,34 @@ exports.AsyncApi2Types = {
965
953
  MercureOperationBinding,
966
954
  ServerBindings,
967
955
  ChannelBindings,
956
+ MessageBindings,
957
+ OperationBindings,
958
+ };
959
+ exports.AsyncApi2Types = {
960
+ ...exports.AsyncApi2Bindings,
961
+ Root,
962
+ Tag: exports.Tag,
963
+ TagList: (0, _1.listOf)('Tag'),
964
+ ServerMap: exports.ServerMap,
965
+ ExternalDocs: exports.ExternalDocs,
966
+ Server,
967
+ ServerVariable: exports.ServerVariable,
968
+ ServerVariablesMap: (0, _1.mapOf)('ServerVariable'),
969
+ SecurityRequirement,
970
+ SecurityRequirementList: (0, _1.listOf)('SecurityRequirement'),
971
+ Info,
972
+ Contact: exports.Contact,
973
+ License: exports.License,
968
974
  ChannelMap,
969
975
  Channel,
970
976
  Parameter,
971
977
  ParametersMap: (0, _1.mapOf)('Parameter'),
972
978
  Operation,
973
- Schema,
974
- MessageExample,
975
- SchemaProperties,
976
- DiscriminatorMapping,
977
- Discriminator,
979
+ Schema: exports.Schema,
980
+ MessageExample: exports.MessageExample,
981
+ SchemaProperties: exports.SchemaProperties,
982
+ DiscriminatorMapping: exports.DiscriminatorMapping,
983
+ Discriminator: exports.Discriminator,
978
984
  Components,
979
985
  NamedSchemas: (0, _1.mapOf)('Schema'),
980
986
  NamedMessages: (0, _1.mapOf)('Message'),
@@ -983,12 +989,11 @@ exports.AsyncApi2Types = {
983
989
  NamedParameters: (0, _1.mapOf)('Parameter'),
984
990
  NamedSecuritySchemes: (0, _1.mapOf)('SecurityScheme'),
985
991
  NamedCorrelationIds: (0, _1.mapOf)('CorrelationId'),
986
- NamedStreamHeaders: (0, _1.mapOf)('StreamHeader'),
987
992
  ImplicitFlow,
988
993
  PasswordFlow,
989
994
  ClientCredentials,
990
995
  AuthorizationCode,
991
- SecuritySchemeFlows,
996
+ SecuritySchemeFlows: exports.SecuritySchemeFlows,
992
997
  SecurityScheme,
993
998
  Message,
994
999
  MessageBindings,
@@ -997,6 +1002,7 @@ exports.AsyncApi2Types = {
997
1002
  OperationTraitList: (0, _1.listOf)('OperationTrait'),
998
1003
  MessageTrait,
999
1004
  MessageTraitList: (0, _1.listOf)('MessageTrait'),
1000
- CorrelationId,
1001
- Dependencies,
1005
+ MessageExampleList: (0, _1.listOf)('MessageExample'),
1006
+ CorrelationId: exports.CorrelationId,
1007
+ Dependencies: exports.Dependencies,
1002
1008
  };
@@ -0,0 +1,2 @@
1
+ import type { NodeType } from '.';
2
+ export declare const AsyncApi3Types: Record<string, NodeType>;
@@ -0,0 +1,347 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AsyncApi3Types = void 0;
4
+ const _1 = require(".");
5
+ const asyncapi2_1 = require("./asyncapi2");
6
+ const Root = {
7
+ properties: {
8
+ asyncapi: { type: 'string', enum: ['3.0.0'] },
9
+ info: 'Info',
10
+ id: { type: 'string' },
11
+ servers: 'ServerMap',
12
+ channels: 'NamedChannels',
13
+ components: 'Components',
14
+ operations: 'NamedOperations',
15
+ defaultContentType: { type: 'string' },
16
+ },
17
+ required: ['asyncapi', 'info'],
18
+ };
19
+ const Channel = {
20
+ properties: {
21
+ address: { type: 'string' },
22
+ messages: 'NamedMessages',
23
+ title: { type: 'string' },
24
+ summary: { type: 'string' },
25
+ description: { type: 'string' },
26
+ servers: 'ServerList',
27
+ parameters: 'ParametersMap',
28
+ bindings: 'ChannelBindings',
29
+ tags: 'TagList',
30
+ externalDocs: 'ExternalDocs',
31
+ },
32
+ };
33
+ const Server = {
34
+ properties: {
35
+ host: { type: 'string' },
36
+ pathname: { type: 'string' },
37
+ protocol: { type: 'string' },
38
+ protocolVersion: { type: 'string' },
39
+ description: { type: 'string' },
40
+ variables: 'ServerVariablesMap',
41
+ security: 'SecuritySchemeList',
42
+ bindings: 'ServerBindings',
43
+ externalDocs: 'ExternalDocs',
44
+ tags: 'TagList',
45
+ },
46
+ required: ['host', 'protocol'],
47
+ };
48
+ const Info = {
49
+ properties: {
50
+ title: { type: 'string' },
51
+ version: { type: 'string' },
52
+ description: { type: 'string' },
53
+ termsOfService: { type: 'string' },
54
+ contact: 'Contact',
55
+ license: 'License',
56
+ tags: 'TagList',
57
+ externalDocs: 'ExternalDocs',
58
+ },
59
+ required: ['title', 'version'],
60
+ };
61
+ const Parameter = {
62
+ properties: {
63
+ description: { type: 'string' },
64
+ enum: { type: 'array', items: { type: 'string' } },
65
+ default: { type: 'string' },
66
+ examples: { type: 'array', items: { type: 'string' } },
67
+ location: { type: 'string' },
68
+ },
69
+ };
70
+ const Message = {
71
+ properties: {
72
+ headers: 'Schema',
73
+ payload: (value) => {
74
+ if (!!value && value?.['schemaFormat']) {
75
+ return {
76
+ properties: {
77
+ schema: 'Schema',
78
+ schemaFormat: { type: 'string' },
79
+ },
80
+ required: ['schema', 'schemaFormat'],
81
+ };
82
+ }
83
+ else {
84
+ return 'Schema';
85
+ }
86
+ },
87
+ correlationId: 'CorrelationId',
88
+ contentType: { type: 'string' },
89
+ name: { type: 'string' },
90
+ title: { type: 'string' },
91
+ summary: { type: 'string' },
92
+ description: { type: 'string' },
93
+ tags: 'TagList',
94
+ externalDocs: 'ExternalDocs',
95
+ bindings: 'MessageBindings',
96
+ examples: 'MessageExampleList',
97
+ traits: 'MessageTraitList',
98
+ },
99
+ additionalProperties: {},
100
+ };
101
+ const OperationTrait = {
102
+ properties: {
103
+ tags: 'TagList',
104
+ title: { type: 'string' },
105
+ summary: { type: 'string' },
106
+ description: { type: 'string' },
107
+ externalDocs: 'ExternalDocs',
108
+ security: 'SecuritySchemeList',
109
+ bindings: 'OperationBindings',
110
+ },
111
+ required: [],
112
+ };
113
+ const MessageTrait = {
114
+ properties: {
115
+ headers: (value) => {
116
+ if (typeof value === 'function' || (typeof value === 'object' && !!value)) {
117
+ return {
118
+ properties: {
119
+ schema: 'Schema',
120
+ schemaFormat: { type: 'string' },
121
+ },
122
+ };
123
+ }
124
+ else {
125
+ return 'Schema';
126
+ }
127
+ },
128
+ correlationId: 'CorrelationId',
129
+ contentType: { type: 'string' },
130
+ name: { type: 'string' },
131
+ title: { type: 'string' },
132
+ summary: { type: 'string' },
133
+ description: { type: 'string' },
134
+ tags: 'TagList',
135
+ externalDocs: 'ExternalDocs',
136
+ bindings: 'MessageBindings',
137
+ examples: 'MessageExampleList',
138
+ },
139
+ additionalProperties: {},
140
+ };
141
+ const Operation = {
142
+ properties: {
143
+ action: { type: 'string', enum: ['send', 'receive'] },
144
+ channel: 'Channel',
145
+ title: { type: 'string' },
146
+ tags: 'TagList',
147
+ summary: { type: 'string' },
148
+ description: { type: 'string' },
149
+ externalDocs: 'ExternalDocs',
150
+ operationId: { type: 'string' },
151
+ security: 'SecuritySchemeList',
152
+ bindings: 'OperationBindings',
153
+ traits: 'OperationTraitList',
154
+ messages: 'MessageList',
155
+ reply: 'OperationReply',
156
+ },
157
+ required: ['action', 'channel'],
158
+ };
159
+ const OperationReply = {
160
+ properties: {
161
+ channel: 'Channel',
162
+ messages: 'MessageList',
163
+ address: 'OperationReplyAddress',
164
+ },
165
+ };
166
+ const OperationReplyAddress = {
167
+ properties: {
168
+ location: { type: 'string' },
169
+ description: { type: 'string' },
170
+ },
171
+ required: ['location'],
172
+ };
173
+ const Components = {
174
+ properties: {
175
+ messages: 'NamedMessages',
176
+ parameters: 'NamedParameters',
177
+ schemas: 'NamedSchemas',
178
+ replies: 'NamedOperationReplies',
179
+ replyAddresses: 'NamedOperationRelyAddresses',
180
+ correlationIds: 'NamedCorrelationIds',
181
+ messageTraits: 'NamedMessageTraits',
182
+ operationTraits: 'NamedOperationTraits',
183
+ tags: 'NamedTags',
184
+ externalDocs: 'NamedExternalDocs',
185
+ securitySchemes: 'NamedSecuritySchemes',
186
+ servers: 'ServerMap',
187
+ serverVariables: 'ServerVariablesMap',
188
+ channels: 'NamedChannels',
189
+ operations: 'NamedOperations',
190
+ serverBindings: 'ServerBindings',
191
+ channelBindings: 'ChannelBindings',
192
+ operationBindings: 'OperationBindings',
193
+ messageBindings: 'MessageBindings',
194
+ },
195
+ };
196
+ const ImplicitFlow = {
197
+ properties: {
198
+ refreshUrl: { type: 'string' },
199
+ availableScopes: { type: 'object', additionalProperties: { type: 'string' } },
200
+ authorizationUrl: { type: 'string' },
201
+ },
202
+ required: ['authorizationUrl', 'availableScopes'],
203
+ };
204
+ const PasswordFlow = {
205
+ properties: {
206
+ refreshUrl: { type: 'string' },
207
+ availableScopes: { type: 'object', additionalProperties: { type: 'string' } },
208
+ tokenUrl: { type: 'string' },
209
+ },
210
+ required: ['tokenUrl', 'availableScopes'],
211
+ };
212
+ const ClientCredentials = {
213
+ properties: {
214
+ refreshUrl: { type: 'string' },
215
+ availableScopes: { type: 'object', additionalProperties: { type: 'string' } },
216
+ tokenUrl: { type: 'string' },
217
+ },
218
+ required: ['tokenUrl', 'availableScopes'],
219
+ };
220
+ const AuthorizationCode = {
221
+ properties: {
222
+ refreshUrl: { type: 'string' },
223
+ authorizationUrl: { type: 'string' },
224
+ availableScopes: { type: 'object', additionalProperties: { type: 'string' } },
225
+ tokenUrl: { type: 'string' },
226
+ },
227
+ required: ['authorizationUrl', 'tokenUrl', 'availableScopes'],
228
+ };
229
+ const SecurityScheme = {
230
+ properties: {
231
+ type: {
232
+ enum: [
233
+ 'userPassword',
234
+ 'apiKey',
235
+ 'X509',
236
+ 'symmetricEncryption',
237
+ 'asymmetricEncryption',
238
+ 'httpApiKey',
239
+ 'http',
240
+ 'oauth2',
241
+ 'openIdConnect',
242
+ 'plain',
243
+ 'scramSha256',
244
+ 'scramSha512',
245
+ 'gssapi',
246
+ ],
247
+ },
248
+ description: { type: 'string' },
249
+ name: { type: 'string' },
250
+ in: { type: 'string', enum: ['query', 'header', 'cookie', 'user', 'password'] },
251
+ scheme: { type: 'string' },
252
+ bearerFormat: { type: 'string' },
253
+ flows: 'SecuritySchemeFlows',
254
+ openIdConnectUrl: { type: 'string' },
255
+ scopes: { type: 'array', items: { type: 'string' } },
256
+ },
257
+ required(value) {
258
+ switch (value?.type) {
259
+ case 'apiKey':
260
+ return ['type', 'in'];
261
+ case 'httpApiKey':
262
+ return ['type', 'name', 'in'];
263
+ case 'http':
264
+ return ['type', 'scheme'];
265
+ case 'oauth2':
266
+ return ['type', 'flows'];
267
+ case 'openIdConnect':
268
+ return ['type', 'openIdConnectUrl'];
269
+ default:
270
+ return ['type'];
271
+ }
272
+ },
273
+ allowed(value) {
274
+ switch (value?.type) {
275
+ case 'apiKey':
276
+ return ['type', 'in', 'description'];
277
+ case 'httpApiKey':
278
+ return ['type', 'name', 'in', 'description'];
279
+ case 'http':
280
+ return ['type', 'scheme', 'bearerFormat', 'description'];
281
+ case 'oauth2':
282
+ return ['type', 'flows', 'description', 'scopes'];
283
+ case 'openIdConnect':
284
+ return ['type', 'openIdConnectUrl', 'description', 'scopes'];
285
+ default:
286
+ return ['type', 'description'];
287
+ }
288
+ },
289
+ extensionsPrefix: 'x-',
290
+ };
291
+ exports.AsyncApi3Types = {
292
+ // from asyncapi2
293
+ ...asyncapi2_1.AsyncApi2Bindings,
294
+ CorrelationId: asyncapi2_1.CorrelationId,
295
+ SecuritySchemeFlows: asyncapi2_1.SecuritySchemeFlows,
296
+ ServerVariable: asyncapi2_1.ServerVariable,
297
+ Contact: asyncapi2_1.Contact,
298
+ License: asyncapi2_1.License,
299
+ MessageExample: asyncapi2_1.MessageExample,
300
+ Tag: asyncapi2_1.Tag,
301
+ Dependencies: asyncapi2_1.Dependencies,
302
+ Schema: asyncapi2_1.Schema,
303
+ Discriminator: asyncapi2_1.Discriminator,
304
+ DiscriminatorMapping: asyncapi2_1.DiscriminatorMapping,
305
+ SchemaProperties: asyncapi2_1.SchemaProperties,
306
+ ServerMap: asyncapi2_1.ServerMap,
307
+ ExternalDocs: asyncapi2_1.ExternalDocs,
308
+ Root,
309
+ Channel,
310
+ Parameter,
311
+ Info,
312
+ Server,
313
+ MessageTrait,
314
+ Operation,
315
+ OperationReply,
316
+ OperationReplyAddress,
317
+ Components,
318
+ ImplicitFlow,
319
+ PasswordFlow,
320
+ ClientCredentials,
321
+ AuthorizationCode,
322
+ SecurityScheme,
323
+ Message,
324
+ OperationTrait,
325
+ ServerVariablesMap: (0, _1.mapOf)('ServerVariable'),
326
+ NamedTags: (0, _1.mapOf)('Tag'),
327
+ NamedExternalDocs: (0, _1.mapOf)('ExternalDocs'),
328
+ NamedChannels: (0, _1.mapOf)('Channel'),
329
+ ParametersMap: (0, _1.mapOf)('Parameter'),
330
+ NamedOperations: (0, _1.mapOf)('Operation'),
331
+ NamedOperationReplies: (0, _1.mapOf)('OperationReply'),
332
+ NamedOperationRelyAddresses: (0, _1.mapOf)('OperationReplyAddress'),
333
+ NamedSchemas: (0, _1.mapOf)('Schema'),
334
+ NamedMessages: (0, _1.mapOf)('Message'),
335
+ NamedMessageTraits: (0, _1.mapOf)('MessageTrait'),
336
+ NamedOperationTraits: (0, _1.mapOf)('OperationTrait'),
337
+ NamedParameters: (0, _1.mapOf)('Parameter'),
338
+ NamedSecuritySchemes: (0, _1.mapOf)('SecurityScheme'),
339
+ NamedCorrelationIds: (0, _1.mapOf)('CorrelationId'),
340
+ ServerList: (0, _1.listOf)('Server'),
341
+ SecuritySchemeList: (0, _1.listOf)('SecurityScheme'),
342
+ MessageList: (0, _1.listOf)('Message'),
343
+ OperationTraitList: (0, _1.listOf)('OperationTrait'),
344
+ MessageTraitList: (0, _1.listOf)('MessageTrait'),
345
+ MessageExampleList: (0, _1.listOf)('MessageExample'),
346
+ TagList: (0, _1.listOf)('Tag'),
347
+ };