@redocly/openapi-core 1.19.0 → 1.20.1

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 (338) hide show
  1. package/CHANGELOG.md +14 -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 +5 -1
  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 +5 -1
  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 +5 -1
  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 +17 -13
  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 +16 -12
  13. package/lib/benchmark/utils.d.ts +3 -3
  14. package/lib/benchmark/utils.js +3 -3
  15. package/lib/config/all.js +4 -1
  16. package/lib/config/builtIn.js +15 -20
  17. package/lib/config/config-resolvers.d.ts +1 -1
  18. package/lib/config/config-resolvers.js +67 -28
  19. package/lib/config/config.d.ts +3 -2
  20. package/lib/config/load.d.ts +1 -1
  21. package/lib/config/minimal.js +4 -0
  22. package/lib/config/recommended-strict.js +5 -1
  23. package/lib/config/recommended.js +5 -1
  24. package/lib/config/types.d.ts +9 -2
  25. package/lib/config/utils.d.ts +3 -1
  26. package/lib/config/utils.js +8 -0
  27. package/lib/decorators/common/filters/filter-helper.d.ts +1 -1
  28. package/lib/decorators/common/filters/filter-in.d.ts +1 -1
  29. package/lib/decorators/common/filters/filter-out.d.ts +1 -1
  30. package/lib/decorators/common/info-description-override.d.ts +1 -1
  31. package/lib/decorators/common/info-override.d.ts +1 -1
  32. package/lib/decorators/common/media-type-examples-override.d.ts +1 -1
  33. package/lib/decorators/common/operation-description-override.d.ts +1 -1
  34. package/lib/decorators/common/registry-dependencies.d.ts +1 -1
  35. package/lib/decorators/common/remove-x-internal.d.ts +1 -1
  36. package/lib/decorators/common/tag-description-override.d.ts +1 -1
  37. package/lib/decorators/oas2/index.d.ts +1 -1
  38. package/lib/decorators/oas3/index.d.ts +1 -1
  39. package/lib/format/codeframes.d.ts +1 -1
  40. package/lib/format/format.d.ts +1 -1
  41. package/lib/format/format.js +1 -1
  42. package/lib/js-yaml/index.d.ts +1 -1
  43. package/lib/lint.d.ts +1 -1
  44. package/lib/logger.js +2 -2
  45. package/lib/oas-types.d.ts +2 -2
  46. package/lib/redocly/domains.d.ts +1 -1
  47. package/lib/redocly/index.d.ts +1 -1
  48. package/lib/ref-utils.d.ts +2 -2
  49. package/lib/ref-utils.js +1 -0
  50. package/lib/resolve.d.ts +2 -2
  51. package/lib/rules/ajv.d.ts +1 -1
  52. package/lib/rules/arazzo/index.js +2 -0
  53. package/lib/rules/async2/channels-kebab-case.d.ts +1 -1
  54. package/lib/rules/async2/index.js +2 -0
  55. package/lib/rules/async2/no-channel-trailing-slash.d.ts +1 -1
  56. package/lib/rules/async3/channels-kebab-case.d.ts +1 -1
  57. package/lib/rules/async3/index.js +2 -0
  58. package/lib/rules/async3/no-channel-trailing-slash.d.ts +1 -1
  59. package/lib/rules/common/assertions/asserts.d.ts +2 -2
  60. package/lib/rules/common/assertions/index.d.ts +1 -2
  61. package/lib/rules/common/assertions/utils.d.ts +1 -1
  62. package/lib/rules/common/info-contact.d.ts +1 -1
  63. package/lib/rules/common/info-license-strict.d.ts +2 -0
  64. package/lib/rules/common/info-license-strict.js +26 -0
  65. package/lib/rules/common/info-license-url.d.ts +1 -1
  66. package/lib/rules/common/info-license.d.ts +1 -1
  67. package/lib/rules/common/no-ambiguous-paths.d.ts +1 -1
  68. package/lib/rules/common/no-enum-type-mismatch.d.ts +1 -1
  69. package/lib/rules/common/no-http-verbs-in-paths.d.ts +1 -1
  70. package/lib/rules/common/no-identical-paths.d.ts +1 -1
  71. package/lib/rules/common/no-path-trailing-slash.d.ts +1 -1
  72. package/lib/rules/common/no-required-schema-properties-undefined.d.ts +1 -1
  73. package/lib/rules/common/operation-2xx-response.d.ts +1 -1
  74. package/lib/rules/common/operation-4xx-response.d.ts +1 -1
  75. package/lib/rules/common/operation-description.d.ts +1 -1
  76. package/lib/rules/common/operation-operationId-unique.d.ts +1 -1
  77. package/lib/rules/common/operation-operationId-url-safe.d.ts +1 -1
  78. package/lib/rules/common/operation-operationId-url-safe.js +1 -0
  79. package/lib/rules/common/operation-operationId.d.ts +1 -1
  80. package/lib/rules/common/operation-parameters-unique.d.ts +1 -1
  81. package/lib/rules/common/operation-singular-tag.d.ts +1 -1
  82. package/lib/rules/common/operation-summary.d.ts +1 -1
  83. package/lib/rules/common/operation-tag-defined.d.ts +1 -1
  84. package/lib/rules/common/parameter-description.d.ts +1 -1
  85. package/lib/rules/common/path-declaration-must-exist.d.ts +1 -1
  86. package/lib/rules/common/path-excludes-patterns.d.ts +1 -1
  87. package/lib/rules/common/path-http-verbs-order.d.ts +1 -1
  88. package/lib/rules/common/path-not-include-query.d.ts +1 -1
  89. package/lib/rules/common/path-params-defined.d.ts +1 -1
  90. package/lib/rules/common/path-segment-plural.d.ts +1 -1
  91. package/lib/rules/common/paths-kebab-case.d.ts +1 -1
  92. package/lib/rules/common/required-string-property-missing-min-length.d.ts +1 -1
  93. package/lib/rules/common/response-contains-header.d.ts +1 -1
  94. package/lib/rules/common/security-defined.d.ts +1 -1
  95. package/lib/rules/common/spec-strict-refs.d.ts +1 -1
  96. package/lib/rules/common/tag-description.d.ts +1 -1
  97. package/lib/rules/common/tags-alphabetical.d.ts +1 -1
  98. package/lib/rules/no-unresolved-refs.d.ts +3 -3
  99. package/lib/rules/oas2/boolean-parameter-prefixes.d.ts +1 -1
  100. package/lib/rules/oas2/index.d.ts +1 -1
  101. package/lib/rules/oas2/index.js +2 -0
  102. package/lib/rules/oas2/response-contains-property.d.ts +1 -1
  103. package/lib/rules/oas3/array-parameter-serialization.d.ts +1 -1
  104. package/lib/rules/oas3/boolean-parameter-prefixes.d.ts +1 -1
  105. package/lib/rules/oas3/component-name-unique.d.ts +1 -1
  106. package/lib/rules/oas3/index.d.ts +1 -1
  107. package/lib/rules/oas3/index.js +2 -0
  108. package/lib/rules/oas3/no-empty-servers.d.ts +1 -1
  109. package/lib/rules/oas3/no-example-value-and-externalValue.d.ts +1 -1
  110. package/lib/rules/oas3/no-invalid-media-type-examples.d.ts +1 -1
  111. package/lib/rules/oas3/no-server-example.com.d.ts +1 -1
  112. package/lib/rules/oas3/no-server-example.com.js +1 -0
  113. package/lib/rules/oas3/no-server-trailing-slash.d.ts +1 -1
  114. package/lib/rules/oas3/no-server-variables-empty-enum.d.ts +1 -1
  115. package/lib/rules/oas3/no-undefined-server-variable.d.ts +1 -1
  116. package/lib/rules/oas3/no-unused-components.d.ts +1 -1
  117. package/lib/rules/oas3/response-contains-property.d.ts +1 -1
  118. package/lib/rules/oas3/spec-components-invalid-map-name.d.ts +1 -1
  119. package/lib/rules/other/stats.d.ts +3 -3
  120. package/lib/rules/other/stats.js +5 -3
  121. package/lib/rules/spot/parameters-no-body-inside-in.d.ts +2 -0
  122. package/lib/rules/spot/parameters-no-body-inside-in.js +18 -0
  123. package/lib/rules/utils.d.ts +4 -2
  124. package/lib/rules/utils.js +27 -1
  125. package/lib/types/arazzo.d.ts +1 -2275
  126. package/lib/types/arazzo.js +246 -309
  127. package/lib/types/asyncapi2.d.ts +1 -1
  128. package/lib/types/asyncapi2.js +3 -1
  129. package/lib/types/asyncapi3.d.ts +1 -1
  130. package/lib/types/json-schema-adapter.d.ts +1 -1
  131. package/lib/types/oas3.d.ts +4 -0
  132. package/lib/types/oas3.js +9 -9
  133. package/lib/types/oas3_1.d.ts +3 -0
  134. package/lib/types/oas3_1.js +8 -8
  135. package/lib/types/redocly-yaml.d.ts +6 -6
  136. package/lib/types/redocly-yaml.js +4 -1
  137. package/lib/typings/arazzo.d.ts +145 -27
  138. package/lib/typings/common.d.ts +1 -1
  139. package/lib/typings/swagger.d.ts +2 -2
  140. package/lib/visitors.d.ts +18 -1
  141. package/lib/walk.d.ts +3 -3
  142. package/package.json +2 -2
  143. package/src/__tests__/bundle.test.ts +4 -4
  144. package/src/__tests__/lint.test.ts +29 -21
  145. package/src/__tests__/walk.test.ts +25 -25
  146. package/src/benchmark/benches/lint-with-many-rules.bench.ts +7 -1
  147. package/src/benchmark/benches/lint-with-nested-rule.bench.ts +7 -1
  148. package/src/benchmark/benches/lint-with-no-rules.bench.ts +8 -1
  149. package/src/benchmark/benches/lint-with-top-level-rule-report.bench.ts +18 -13
  150. package/src/benchmark/benches/lint-with-top-level-rule.bench.ts +17 -11
  151. package/src/benchmark/fork.js +4 -0
  152. package/src/benchmark/utils.ts +6 -5
  153. package/src/bundle.ts +2 -1
  154. package/src/config/__tests__/__snapshots__/config-resolvers.test.ts.snap +10 -2
  155. package/src/config/__tests__/config-resolvers.test.ts +82 -0
  156. package/src/config/__tests__/fixtures/resolve-config/local-config-with-commonjs-export-function.yaml +2 -0
  157. package/src/config/__tests__/fixtures/resolve-config/local-config-with-esm.yaml +2 -0
  158. package/src/config/__tests__/fixtures/resolve-config/plugin-esm.mjs +10 -0
  159. package/src/config/__tests__/fixtures/resolve-config/plugin-with-export-function.cjs +10 -0
  160. package/src/config/__tests__/resolve-plugins.test.ts +4 -1
  161. package/src/config/all.ts +4 -1
  162. package/src/config/builtIn.ts +5 -10
  163. package/src/config/config-resolvers.ts +78 -23
  164. package/src/config/config.ts +7 -8
  165. package/src/config/load.ts +2 -2
  166. package/src/config/minimal.ts +4 -0
  167. package/src/config/recommended-strict.ts +5 -1
  168. package/src/config/recommended.ts +5 -1
  169. package/src/config/types.ts +19 -3
  170. package/src/config/utils.ts +13 -2
  171. package/src/decorators/__tests__/filter-in.test.ts +29 -26
  172. package/src/decorators/__tests__/filter-out.test.ts +32 -23
  173. package/src/decorators/__tests__/media-type-examples-override.test.ts +45 -45
  174. package/src/decorators/__tests__/remove-x-internal.test.ts +8 -5
  175. package/src/decorators/common/filters/filter-helper.ts +2 -1
  176. package/src/decorators/common/filters/filter-in.ts +2 -1
  177. package/src/decorators/common/filters/filter-out.ts +2 -1
  178. package/src/decorators/common/info-description-override.ts +3 -2
  179. package/src/decorators/common/info-override.ts +1 -1
  180. package/src/decorators/common/media-type-examples-override.ts +4 -3
  181. package/src/decorators/common/operation-description-override.ts +5 -4
  182. package/src/decorators/common/registry-dependencies.ts +2 -2
  183. package/src/decorators/common/remove-x-internal.ts +3 -2
  184. package/src/decorators/common/tag-description-override.ts +3 -2
  185. package/src/decorators/oas2/__tests__/remove-unused-components.test.ts +3 -3
  186. package/src/decorators/oas2/index.ts +2 -1
  187. package/src/decorators/oas2/remove-unused-components.ts +1 -1
  188. package/src/decorators/oas3/__tests__/remove-unused-components.test.ts +4 -4
  189. package/src/decorators/oas3/index.ts +2 -1
  190. package/src/decorators/oas3/remove-unused-components.ts +1 -1
  191. package/src/format/codeframes.ts +2 -1
  192. package/src/format/format.ts +9 -4
  193. package/src/js-yaml/index.ts +3 -1
  194. package/src/lint.ts +2 -1
  195. package/src/logger.ts +2 -2
  196. package/src/oas-types.ts +14 -13
  197. package/src/redocly/domains.ts +1 -1
  198. package/src/redocly/index.ts +3 -3
  199. package/src/redocly/registry-api.ts +5 -3
  200. package/src/ref-utils.ts +4 -2
  201. package/src/resolve.ts +6 -4
  202. package/src/rules/__tests__/no-unresolved-refs.test.ts +21 -7
  203. package/src/rules/ajv.ts +2 -1
  204. package/src/rules/arazzo/__tests__/parameters-no-body-inside-in.test.ts +76 -0
  205. package/src/rules/arazzo/index.ts +5 -2
  206. package/src/rules/async2/__tests__/channels-kebab-case.test.ts +9 -5
  207. package/src/rules/async2/__tests__/no-channel-trailing-slash.test.ts +3 -3
  208. package/src/rules/async2/channels-kebab-case.ts +2 -2
  209. package/src/rules/async2/index.ts +4 -1
  210. package/src/rules/async2/no-channel-trailing-slash.ts +2 -2
  211. package/src/rules/async3/__tests__/channels-kebab-case.test.ts +9 -5
  212. package/src/rules/async3/__tests__/no-channel-trailing-slash.test.ts +3 -3
  213. package/src/rules/async3/channels-kebab-case.ts +3 -3
  214. package/src/rules/async3/index.ts +4 -1
  215. package/src/rules/async3/no-channel-trailing-slash.ts +3 -3
  216. package/src/rules/common/__tests__/info-license-strict.test.ts +141 -0
  217. package/src/rules/common/__tests__/info-license.test.ts +2 -2
  218. package/src/rules/common/__tests__/license-url.test.ts +2 -2
  219. package/src/rules/common/__tests__/no-ambiguous-paths.test.ts +1 -1
  220. package/src/rules/common/__tests__/no-enum-type-mismatch.test.ts +5 -5
  221. package/src/rules/common/__tests__/no-identical-paths.test.ts +1 -1
  222. package/src/rules/common/__tests__/no-invalid-parameter-examples.test.ts +1 -1
  223. package/src/rules/common/__tests__/no-invalid-schema-examples.test.ts +1 -1
  224. package/src/rules/common/__tests__/no-path-trailing-slash.test.ts +4 -4
  225. package/src/rules/common/__tests__/no-required-schema-properties-undefined.test.ts +11 -11
  226. package/src/rules/common/__tests__/operation-2xx-response.test.ts +8 -6
  227. package/src/rules/common/__tests__/operation-4xx-response.test.ts +9 -7
  228. package/src/rules/common/__tests__/operation-operationId-unique.test.ts +2 -2
  229. package/src/rules/common/__tests__/operation-operationId-url-safe.test.ts +1 -1
  230. package/src/rules/common/__tests__/operation-parameters-unique.test.ts +4 -4
  231. package/src/rules/common/__tests__/operation-singular-tag.test.ts +2 -2
  232. package/src/rules/common/__tests__/path-http-verbs-order.test.ts +2 -2
  233. package/src/rules/common/__tests__/path-not-include-query.test.ts +2 -2
  234. package/src/rules/common/__tests__/path-params-defined.test.ts +5 -5
  235. package/src/rules/common/__tests__/paths-kebab-case.test.ts +6 -4
  236. package/src/rules/common/__tests__/scalar-property-missing-example.test.ts +8 -8
  237. package/src/rules/common/__tests__/security-defined.test.ts +14 -8
  238. package/src/rules/common/__tests__/spec-strict-refs.test.ts +1 -1
  239. package/src/rules/common/__tests__/spec.test.ts +10 -10
  240. package/src/rules/common/__tests__/tag-description.test.ts +2 -2
  241. package/src/rules/common/__tests__/tags-alphabetical.test.ts +6 -4
  242. package/src/rules/common/assertions/asserts.ts +5 -9
  243. package/src/rules/common/assertions/index.ts +1 -2
  244. package/src/rules/common/assertions/utils.ts +4 -2
  245. package/src/rules/common/info-contact.ts +2 -1
  246. package/src/rules/common/info-license-strict.ts +24 -0
  247. package/src/rules/common/info-license-url.ts +2 -1
  248. package/src/rules/common/info-license.ts +2 -1
  249. package/src/rules/common/no-ambiguous-paths.ts +4 -4
  250. package/src/rules/common/no-enum-type-mismatch.ts +5 -4
  251. package/src/rules/common/no-http-verbs-in-paths.ts +5 -4
  252. package/src/rules/common/no-identical-paths.ts +4 -4
  253. package/src/rules/common/no-invalid-parameter-examples.ts +3 -2
  254. package/src/rules/common/no-path-trailing-slash.ts +2 -2
  255. package/src/rules/common/no-required-schema-properties-undefined.ts +5 -4
  256. package/src/rules/common/operation-2xx-response.ts +3 -2
  257. package/src/rules/common/operation-4xx-response.ts +3 -2
  258. package/src/rules/common/operation-description.ts +5 -4
  259. package/src/rules/common/operation-operationId-unique.ts +4 -4
  260. package/src/rules/common/operation-operationId-url-safe.ts +5 -4
  261. package/src/rules/common/operation-operationId.ts +5 -4
  262. package/src/rules/common/operation-parameters-unique.ts +4 -4
  263. package/src/rules/common/operation-singular-tag.ts +4 -4
  264. package/src/rules/common/operation-summary.ts +5 -4
  265. package/src/rules/common/operation-tag-defined.ts +4 -4
  266. package/src/rules/common/parameter-description.ts +4 -4
  267. package/src/rules/common/path-declaration-must-exist.ts +2 -2
  268. package/src/rules/common/path-excludes-patterns.ts +4 -4
  269. package/src/rules/common/path-http-verbs-order.ts +4 -4
  270. package/src/rules/common/path-not-include-query.ts +2 -2
  271. package/src/rules/common/path-params-defined.ts +4 -4
  272. package/src/rules/common/path-segment-plural.ts +3 -2
  273. package/src/rules/common/paths-kebab-case.ts +2 -2
  274. package/src/rules/common/required-string-property-missing-min-length.ts +4 -4
  275. package/src/rules/common/response-contains-header.ts +5 -4
  276. package/src/rules/common/scalar-property-missing-example.ts +2 -1
  277. package/src/rules/common/security-defined.ts +5 -5
  278. package/src/rules/common/spec-strict-refs.ts +2 -1
  279. package/src/rules/common/spec.ts +3 -2
  280. package/src/rules/common/tag-description.ts +2 -1
  281. package/src/rules/common/tags-alphabetical.ts +4 -4
  282. package/src/rules/no-unresolved-refs.ts +4 -3
  283. package/src/rules/oas2/__tests__/boolean-parameter-prefixes.test.ts +7 -5
  284. package/src/rules/oas2/__tests__/response-contains-header.test.ts +14 -8
  285. package/src/rules/oas2/__tests__/response-contains-property.test.ts +14 -8
  286. package/src/rules/oas2/__tests__/spec/referenceableScalars.test.ts +3 -1
  287. package/src/rules/oas2/boolean-parameter-prefixes.ts +1 -1
  288. package/src/rules/oas2/index.ts +4 -2
  289. package/src/rules/oas2/request-mime-type.ts +2 -1
  290. package/src/rules/oas2/response-contains-property.ts +3 -2
  291. package/src/rules/oas2/response-mime-type.ts +2 -1
  292. package/src/rules/oas3/__tests__/array-parameter-serialization.test.ts +18 -6
  293. package/src/rules/oas3/__tests__/boolean-parameter-prefixes.test.ts +7 -5
  294. package/src/rules/oas3/__tests__/no-empty-enum-servers.com.test.ts +6 -6
  295. package/src/rules/oas3/__tests__/no-example-value-and-externalValue.test.ts +2 -2
  296. package/src/rules/oas3/__tests__/no-invalid-media-type-examples.test.ts +34 -24
  297. package/src/rules/oas3/__tests__/no-server-example.com.test.ts +3 -3
  298. package/src/rules/oas3/__tests__/no-server-trailing-slash.test.ts +3 -3
  299. package/src/rules/oas3/__tests__/no-unused-components.test.ts +1 -1
  300. package/src/rules/oas3/__tests__/operation-4xx-problem-details-rfc7807.test.ts +3 -3
  301. package/src/rules/oas3/__tests__/response-contains-header.test.ts +34 -22
  302. package/src/rules/oas3/__tests__/response-contains-property.test.ts +34 -20
  303. package/src/rules/oas3/__tests__/spec/spec.test.ts +12 -3
  304. package/src/rules/oas3/__tests__/spec-components-invalid-map-name.test.ts +9 -3
  305. package/src/rules/oas3/__tests__/utils/lint-document-for-test.ts +1 -1
  306. package/src/rules/oas3/array-parameter-serialization.ts +3 -2
  307. package/src/rules/oas3/boolean-parameter-prefixes.ts +1 -1
  308. package/src/rules/oas3/component-name-unique.ts +3 -3
  309. package/src/rules/oas3/index.ts +3 -1
  310. package/src/rules/oas3/no-empty-servers.ts +1 -1
  311. package/src/rules/oas3/no-example-value-and-externalValue.ts +1 -1
  312. package/src/rules/oas3/no-invalid-media-type-examples.ts +6 -4
  313. package/src/rules/oas3/no-server-example.com.ts +2 -1
  314. package/src/rules/oas3/no-server-trailing-slash.ts +1 -1
  315. package/src/rules/oas3/no-server-variables-empty-enum.ts +2 -2
  316. package/src/rules/oas3/no-undefined-server-variable.ts +1 -1
  317. package/src/rules/oas3/no-unused-components.ts +2 -2
  318. package/src/rules/oas3/operation-4xx-problem-details-rfc7807.ts +2 -1
  319. package/src/rules/oas3/request-mime-type.ts +2 -1
  320. package/src/rules/oas3/response-contains-property.ts +3 -2
  321. package/src/rules/oas3/response-mime-type.ts +2 -1
  322. package/src/rules/oas3/spec-components-invalid-map-name.ts +3 -3
  323. package/src/rules/other/stats.ts +8 -6
  324. package/src/rules/spot/parameters-no-body-inside-in.ts +17 -0
  325. package/src/rules/utils.ts +41 -4
  326. package/src/types/arazzo.ts +257 -334
  327. package/src/types/asyncapi2.ts +4 -1
  328. package/src/types/asyncapi3.ts +3 -1
  329. package/src/types/json-schema-adapter.ts +2 -2
  330. package/src/types/oas3.ts +4 -4
  331. package/src/types/oas3_1.ts +3 -3
  332. package/src/types/redocly-yaml.ts +7 -4
  333. package/src/typings/arazzo.ts +169 -41
  334. package/src/typings/common.ts +1 -0
  335. package/src/typings/swagger.ts +2 -2
  336. package/src/visitors.ts +40 -1
  337. package/src/walk.ts +3 -3
  338. package/tsconfig.tsbuildinfo +1 -1
package/src/types/oas3.ts CHANGED
@@ -44,7 +44,7 @@ const TagGroup: NodeType = {
44
44
  extensionsPrefix: 'x-',
45
45
  };
46
46
 
47
- const ExternalDocs: NodeType = {
47
+ export const ExternalDocs: NodeType = {
48
48
  properties: {
49
49
  description: { type: 'string' },
50
50
  url: { type: 'string' },
@@ -369,7 +369,7 @@ const Schema: NodeType = {
369
369
  extensionsPrefix: 'x-',
370
370
  };
371
371
 
372
- const Xml: NodeType = {
372
+ export const Xml: NodeType = {
373
373
  properties: {
374
374
  name: { type: 'string' },
375
375
  namespace: { type: 'string' },
@@ -385,7 +385,7 @@ const SchemaProperties: NodeType = {
385
385
  additionalProperties: 'Schema',
386
386
  };
387
387
 
388
- const DiscriminatorMapping: NodeType = {
388
+ export const DiscriminatorMapping: NodeType = {
389
389
  properties: {},
390
390
  additionalProperties: (value: any) => {
391
391
  if (isMappingRef(value)) {
@@ -396,7 +396,7 @@ const DiscriminatorMapping: NodeType = {
396
396
  },
397
397
  };
398
398
 
399
- const Discriminator: NodeType = {
399
+ export const Discriminator: NodeType = {
400
400
  properties: {
401
401
  propertyName: { type: 'string' },
402
402
  mapping: 'DiscriminatorMapping',
@@ -87,7 +87,7 @@ const Operation: NodeType = {
87
87
  extensionsPrefix: 'x-',
88
88
  };
89
89
 
90
- const Schema: NodeType = {
90
+ export const Schema: NodeType = {
91
91
  properties: {
92
92
  $id: { type: 'string' },
93
93
  $anchor: { type: 'string' },
@@ -186,7 +186,7 @@ const Schema: NodeType = {
186
186
  extensionsPrefix: 'x-',
187
187
  };
188
188
 
189
- const SchemaProperties: NodeType = {
189
+ export const SchemaProperties: NodeType = {
190
190
  properties: {},
191
191
  additionalProperties: (value: any) => {
192
192
  if (typeof value === 'boolean') {
@@ -267,7 +267,7 @@ const SecurityScheme: NodeType = {
267
267
  extensionsPrefix: 'x-',
268
268
  };
269
269
 
270
- const DependentRequired: NodeType = {
270
+ export const DependentRequired: NodeType = {
271
271
  properties: {},
272
272
  additionalProperties: { type: 'array', items: { type: 'string' } },
273
273
  };
@@ -2,11 +2,11 @@ import { rootRedoclyConfigSchema } from '@redocly/config';
2
2
  import { listOf } from '.';
3
3
  import { omitObjectProps, pickObjectProps, isCustomRuleId } from '../utils';
4
4
  import { getNodeTypesFromJSONSchema } from './json-schema-adapter';
5
+ import { SpecVersion, getTypes } from '../oas-types';
5
6
 
6
- import type { NodeType } from '.';
7
7
  import type { JSONSchema } from 'json-schema-to-ts';
8
- import { SpecVersion, getTypes } from '../oas-types';
9
- import { Config } from '../config';
8
+ import type { NodeType } from '.';
9
+ import type { Config } from '../config';
10
10
 
11
11
  const builtInCommonOASRules = [
12
12
  'spec',
@@ -15,6 +15,7 @@ const builtInCommonOASRules = [
15
15
  'tag-description',
16
16
  'tags-alphabetical',
17
17
  'info-license-url',
18
+ 'info-license-strict',
18
19
  'info-license',
19
20
  'no-ambiguous-paths',
20
21
  'no-enum-type-mismatch',
@@ -85,6 +86,7 @@ export type BuiltInOAS3RuleId = typeof builtInOAS3Rules[number];
85
86
  const builtInAsync2Rules = [
86
87
  'spec',
87
88
  'info-contact',
89
+ 'info-license-strict',
88
90
  'operation-operationId',
89
91
  'tag-description',
90
92
  'tags-alphabetical',
@@ -95,6 +97,7 @@ const builtInAsync2Rules = [
95
97
  const builtInAsync3Rules = [
96
98
  'spec',
97
99
  'info-contact',
100
+ 'info-license-strict',
98
101
  'operation-operationId',
99
102
  'tag-description',
100
103
  'tags-alphabetical',
@@ -106,7 +109,7 @@ export type BuiltInAsync2RuleId = typeof builtInAsync2Rules[number];
106
109
 
107
110
  export type BuiltInAsync3RuleId = typeof builtInAsync3Rules[number];
108
111
 
109
- const builtInArazzoRules = ['spec'] as const;
112
+ const builtInArazzoRules = ['spec', 'parameters-no-body-inside-in'] as const;
110
113
 
111
114
  export type BuiltInArazzoRuleId = typeof builtInArazzoRules[number];
112
115
 
@@ -1,44 +1,172 @@
1
- import type { FromSchema } from 'json-schema-to-ts';
2
- import type {
3
- arazzoSchema,
4
- parameter,
5
- operationMethod,
6
- expectSchema,
7
- sourceDescriptionSchema,
8
- infoObject,
9
- requestBody,
10
- replacement,
11
- inherit,
12
- criteriaObject,
13
- step,
14
- workflow,
15
- } from '../types/arazzo';
16
-
17
- export type ArazzoDefinition = FromSchema<typeof arazzoSchema>;
18
- export type OperationMethod = FromSchema<typeof operationMethod>;
19
- export type ResponseContext = {
20
- statusCode: number;
21
- body: any;
22
- headers: Headers;
23
- mimeType: string;
24
- } & Record<string, any>;
25
- export type Expect = FromSchema<typeof expectSchema>;
26
- export type SourceDescription = FromSchema<typeof sourceDescriptionSchema>;
27
- export type Parameter = FromSchema<typeof parameter>;
28
- export type InfoObject = FromSchema<typeof infoObject>;
29
- export type RequestBody = FromSchema<typeof requestBody>;
30
- export type Replacement = FromSchema<typeof replacement>;
31
- export type Inherit = FromSchema<typeof inherit>;
32
- export type CriteriaObject = FromSchema<typeof criteriaObject>;
33
- export type VerboseLog = {
34
- method: OperationMethod;
1
+ export interface InfoObject {
2
+ title: string;
3
+ description?: string;
4
+ summary?: string;
5
+ version: string;
6
+ }
7
+
8
+ export interface OpenAPISourceDescription {
9
+ name: string;
10
+ type: 'openapi';
11
+ url: string;
12
+ 'x-serverUrl'?: string;
13
+ }
14
+
15
+ export interface NoneSourceDescription {
16
+ name: string;
17
+ type: 'none';
18
+ 'x-serverUrl': string;
19
+ }
20
+
21
+ export interface ArazzoSourceDescription {
22
+ name: string;
23
+ type: 'arazzo';
24
+ url: string;
25
+ }
26
+
27
+ export type SourceDescription =
28
+ | OpenAPISourceDescription
29
+ | NoneSourceDescription
30
+ | ArazzoSourceDescription;
31
+
32
+ export interface Parameter {
33
+ in?: 'header' | 'query' | 'path' | 'cookie' | 'body';
34
+ name: string;
35
+ value: string | number | boolean;
36
+ reference?: string;
37
+ }
38
+
39
+ export interface ExtendedOperation {
35
40
  path: string;
36
- host: string;
37
- body?: any;
38
- headerParams?: Record<string, string>;
41
+ method: 'get' | 'post' | 'put' | 'delete' | 'patch';
42
+ sourceDescriptionName?: string;
43
+ serverUrl?: string;
44
+ }
45
+
46
+ export interface ExpectSchema {
39
47
  statusCode?: number;
40
- };
41
- export type Step = FromSchema<typeof step>;
42
- export type Workflow = FromSchema<typeof workflow> & {
48
+ mimeType?: string;
49
+ body?: any;
50
+ schema?: {
51
+ [key: string]: any;
52
+ };
53
+ }
54
+
55
+ export interface Replacement {
56
+ target: string;
57
+ value: string | object | any[];
58
+ }
59
+
60
+ export interface RequestBody {
61
+ contentType?: string;
62
+ payload: string | object | any[];
63
+ encoding?: string;
64
+ replacements?: Replacement[];
65
+ }
66
+
67
+ export interface CriteriaObject {
68
+ condition: string;
69
+ context?: string;
70
+ type?:
71
+ | 'regex'
72
+ | 'jsonpath'
73
+ | 'simple'
74
+ | 'xpath'
75
+ | {
76
+ type: 'jsonpath';
77
+ version: 'draft-goessner-dispatch-jsonpath-00';
78
+ }
79
+ | {
80
+ type: 'xpath';
81
+ version: 'xpath-30' | 'xpath-20' | 'xpath-10';
82
+ };
83
+ }
84
+
85
+ export interface OnSuccessObject {
86
+ name: string;
87
+ type: 'goto' | 'end';
88
+ stepId?: string;
89
+ workflowId?: string;
90
+ criteria?: CriteriaObject[];
91
+ }
92
+
93
+ export interface OnFailureObject {
94
+ name: string;
95
+ type: 'goto' | 'retry' | 'end';
96
+ workflowId?: string;
97
+ stepId?: string;
98
+ retryAfter?: number;
99
+ retryLimit?: number;
100
+ criteria?: CriteriaObject[];
101
+ }
102
+
103
+ export interface Step {
104
+ stepId: string;
105
+ description?: string;
106
+ operationId?: string;
107
+ operationPath?: string;
108
+ workflowId?: string;
109
+ parameters?: Parameter[];
110
+ successCriteria?: CriteriaObject[];
111
+ onSuccess?: OnSuccessObject[];
112
+ onFailure?: OnFailureObject[];
113
+ outputs?: {
114
+ [key: string]: string | object | any[] | boolean | number;
115
+ };
116
+ 'x-inherit'?: 'auto' | 'none';
117
+ 'x-expect'?: ExpectSchema;
118
+ 'x-assert'?: string;
119
+ 'x-operation'?: ExtendedOperation;
120
+ requestBody?: RequestBody;
121
+ }
122
+
123
+ export interface Workflow {
124
+ workflowId: string;
125
+ summary?: string;
126
+ description?: string;
127
+ parameters?: Parameter[];
128
+ dependsOn?: string[];
129
+ inputs?: {
130
+ type: 'object' | 'array' | 'string' | 'number' | 'integer' | 'boolean' | 'null';
131
+ properties?: {
132
+ [key: string]: any;
133
+ };
134
+ required?: string[];
135
+ items?: {
136
+ [key: string]: any;
137
+ };
138
+ };
139
+ outputs?: {
140
+ [key: string]: string;
141
+ };
43
142
  steps: Step[];
44
- };
143
+ successActions?: OnSuccessObject[];
144
+ failureActions?: OnFailureObject[];
145
+ }
146
+
147
+ export interface ArazzoDefinition {
148
+ arazzo: '1.0.0';
149
+ info: InfoObject;
150
+ sourceDescriptions: SourceDescription[];
151
+ 'x-parameters'?: Parameter[];
152
+ workflows: Workflow[];
153
+ components?: {
154
+ inputs?: {
155
+ [key: string]: {
156
+ type: string;
157
+ properties?: {
158
+ [key: string]: any;
159
+ };
160
+ };
161
+ };
162
+ parameters?: {
163
+ [key: string]: Parameter;
164
+ };
165
+ successActions?: {
166
+ [key: string]: OnSuccessObject;
167
+ };
168
+ failureActions?: {
169
+ [key: string]: OnFailureObject;
170
+ };
171
+ };
172
+ }
@@ -13,5 +13,6 @@ export type StatsName =
13
13
  | 'pathItems'
14
14
  | 'links'
15
15
  | 'schemas'
16
+ | 'webhooks'
16
17
  | 'parameters';
17
18
  export type StatsAccumulator = Record<StatsName, StatsRow>;
@@ -1,5 +1,5 @@
1
- import { Referenced } from './openapi';
2
- import { Schema } from 'js-yaml';
1
+ import type { Schema } from 'js-yaml';
2
+ import type { Referenced } from './openapi';
3
3
 
4
4
  export interface Oas2Definition {
5
5
  swagger: '2.0';
package/src/visitors.ts CHANGED
@@ -51,7 +51,24 @@ import type {
51
51
  } from './typings/swagger';
52
52
  import type { Async2Definition } from './typings/asyncapi';
53
53
  import type { Async3Definition } from './typings/asyncapi3';
54
- import type { ArazzoDefinition } from './typings/arazzo';
54
+ import type {
55
+ ArazzoDefinition,
56
+ ArazzoSourceDescription,
57
+ CriteriaObject,
58
+ ExpectSchema,
59
+ ExtendedOperation,
60
+ InfoObject,
61
+ NoneSourceDescription,
62
+ OnFailureObject,
63
+ OnSuccessObject,
64
+ OpenAPISourceDescription,
65
+ Parameter,
66
+ Replacement,
67
+ RequestBody,
68
+ SourceDescription,
69
+ Step,
70
+ Workflow,
71
+ } from './typings/arazzo';
55
72
 
56
73
  export type SkipFunctionContext = Pick<
57
74
  UserContext,
@@ -220,6 +237,23 @@ type Async3FlatVisitor = {
220
237
 
221
238
  type ArazzoFlatVisitor = {
222
239
  Root?: VisitFunctionOrObject<ArazzoDefinition>;
240
+ ParameterObject?: VisitFunctionOrObject<Parameter>;
241
+ InfoObject?: VisitFunctionOrObject<InfoObject>;
242
+ OpenAPISourceDescription?: VisitFunctionOrObject<OpenAPISourceDescription>;
243
+ NoneSourceDescription?: VisitFunctionOrObject<NoneSourceDescription>;
244
+ ArazzoSourceDescription?: VisitFunctionOrObject<ArazzoSourceDescription>;
245
+ SourceDescription?: VisitFunctionOrObject<SourceDescription>;
246
+ ExtendedOperation?: VisitFunctionOrObject<ExtendedOperation>;
247
+ ExpectSchema?: VisitFunctionOrObject<ExpectSchema>;
248
+ Replacement?: VisitFunctionOrObject<Replacement>;
249
+ RequestBody?: VisitFunctionOrObject<RequestBody>;
250
+ CriteriaObject?: VisitFunctionOrObject<CriteriaObject>;
251
+ OnSuccessObject?: VisitFunctionOrObject<OnSuccessObject>;
252
+ OnFailureObject?: VisitFunctionOrObject<OnFailureObject>;
253
+ Step?: VisitFunctionOrObject<Step>;
254
+ Steps?: VisitFunctionOrObject<Step[]>;
255
+ Workflow?: VisitFunctionOrObject<Workflow>;
256
+ Workflows?: VisitFunctionOrObject<Workflow[]>;
223
257
  };
224
258
 
225
259
  const legacyTypesMap = {
@@ -237,30 +271,35 @@ const legacyTypesMap = {
237
271
  };
238
272
 
239
273
  type Oas3NestedVisitor = {
274
+ // eslint-disable-next-line @typescript-eslint/ban-types
240
275
  [T in keyof Oas3FlatVisitor]: Oas3FlatVisitor[T] extends Function
241
276
  ? Oas3FlatVisitor[T]
242
277
  : Oas3FlatVisitor[T] & NestedVisitor<Oas3NestedVisitor>;
243
278
  };
244
279
 
245
280
  type Oas2NestedVisitor = {
281
+ // eslint-disable-next-line @typescript-eslint/ban-types
246
282
  [T in keyof Oas2FlatVisitor]: Oas2FlatVisitor[T] extends Function
247
283
  ? Oas2FlatVisitor[T]
248
284
  : Oas2FlatVisitor[T] & NestedVisitor<Oas2NestedVisitor>;
249
285
  };
250
286
 
251
287
  type Async2NestedVisitor = {
288
+ // eslint-disable-next-line @typescript-eslint/ban-types
252
289
  [T in keyof Async2FlatVisitor]: Async2FlatVisitor[T] extends Function
253
290
  ? Async2FlatVisitor[T]
254
291
  : Async2FlatVisitor[T] & NestedVisitor<Async2NestedVisitor>;
255
292
  };
256
293
 
257
294
  type Async3NestedVisitor = {
295
+ // eslint-disable-next-line @typescript-eslint/ban-types
258
296
  [T in keyof Async3FlatVisitor]: Async3FlatVisitor[T] extends Function
259
297
  ? Async3FlatVisitor[T]
260
298
  : Async3FlatVisitor[T] & NestedVisitor<Async3NestedVisitor>;
261
299
  };
262
300
 
263
301
  type ArazzoNestedVisitor = {
302
+ // eslint-disable-next-line @typescript-eslint/ban-types
264
303
  [T in keyof ArazzoFlatVisitor]: ArazzoFlatVisitor[T] extends Function
265
304
  ? ArazzoFlatVisitor[T]
266
305
  : ArazzoFlatVisitor[T] & NestedVisitor<ArazzoNestedVisitor>;
package/src/walk.ts CHANGED
@@ -1,9 +1,10 @@
1
1
  import { Location, isRef } from './ref-utils';
2
2
  import { pushStack, popStack } from './utils';
3
- import { ResolveError, YamlParseError, Source, makeRefId } from './resolve';
4
- import { SpecVersion } from './oas-types';
3
+ import { YamlParseError, makeRefId } from './resolve';
5
4
  import { isNamedType, SpecExtension } from './types';
6
5
 
6
+ import type { SpecVersion } from './oas-types';
7
+ import type { ResolveError, Source, ResolvedRefMap, Document } from './resolve';
7
8
  import type { Referenced } from './typings/openapi';
8
9
  import type {
9
10
  VisitorLevelContext,
@@ -14,7 +15,6 @@ import type {
14
15
  NormalizeVisitor,
15
16
  VisitorNode,
16
17
  } from './visitors';
17
- import type { ResolvedRefMap, Document } from './resolve';
18
18
  import type { NormalizedNodeType } from './types';
19
19
  import type { RuleSeverity } from './config';
20
20