@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
@@ -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,18 @@ export type BuiltInOAS3RuleId = typeof builtInOAS3Rules[number];
85
86
  const builtInAsync2Rules = [
86
87
  'spec',
87
88
  'info-contact',
89
+ 'info-license-strict',
90
+ 'operation-operationId',
91
+ 'tag-description',
92
+ 'tags-alphabetical',
93
+ 'channels-kebab-case',
94
+ 'no-channel-trailing-slash',
95
+ ] as const;
96
+
97
+ const builtInAsync3Rules = [
98
+ 'spec',
99
+ 'info-contact',
100
+ 'info-license-strict',
88
101
  'operation-operationId',
89
102
  'tag-description',
90
103
  'tags-alphabetical',
@@ -94,7 +107,9 @@ const builtInAsync2Rules = [
94
107
 
95
108
  export type BuiltInAsync2RuleId = typeof builtInAsync2Rules[number];
96
109
 
97
- const builtInArazzoRules = ['spec'] as const;
110
+ export type BuiltInAsync3RuleId = typeof builtInAsync3Rules[number];
111
+
112
+ const builtInArazzoRules = ['spec', 'parameters-no-body-inside-in'] as const;
98
113
 
99
114
  export type BuiltInArazzoRuleId = typeof builtInArazzoRules[number];
100
115
 
@@ -103,6 +118,7 @@ const builtInRules = [
103
118
  ...builtInOAS2Rules,
104
119
  ...builtInOAS3Rules,
105
120
  ...builtInAsync2Rules,
121
+ ...builtInAsync3Rules,
106
122
  ...builtInArazzoRules,
107
123
  ] as const;
108
124
 
@@ -221,6 +237,7 @@ const oas3_1NodeTypesList = [
221
237
  'Root',
222
238
  'Schema',
223
239
  'SchemaProperties',
240
+ 'PatternProperties',
224
241
  'Info',
225
242
  'License',
226
243
  'Components',
@@ -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
+ }
@@ -0,0 +1,61 @@
1
+ export interface Async3Definition {
2
+ asyncapi: string;
3
+ servers?: Record<string, any>;
4
+ info: Async3Info;
5
+ channels?: Record<string, Channel>;
6
+ components?: Record<string, any>;
7
+ operations?: Record<string, any>;
8
+ defaultContentType?: string;
9
+ }
10
+
11
+ export interface Async3Info {
12
+ title: string;
13
+ version: string;
14
+
15
+ description?: string;
16
+ termsOfService?: string;
17
+ contact?: Async3Contact;
18
+ license?: Async3License;
19
+ tags?: Tag[];
20
+ externalDocs?: ExternalDoc;
21
+ }
22
+
23
+ export interface Async3Contact {
24
+ name?: string;
25
+ url?: string;
26
+ email?: string;
27
+ }
28
+
29
+ export interface Async3License {
30
+ name: string;
31
+ url?: string;
32
+ }
33
+
34
+ export interface Tag {
35
+ name: string;
36
+ description?: string;
37
+ externalDocs?: ExternalDoc;
38
+ }
39
+
40
+ export interface ExternalDoc {
41
+ url: string;
42
+ description?: string;
43
+ }
44
+
45
+ export interface Channel {
46
+ address?: string | null;
47
+ messages?: Record<string, any>;
48
+ title?: string;
49
+ summary?: string;
50
+ description?: string;
51
+ servers?: Record<string, any>[];
52
+ parameters?: Record<string, any>;
53
+ tags?: Record<string, any>;
54
+ externalDocs?: ExternalDocumentation;
55
+ bindings?: Record<string, any>;
56
+ }
57
+
58
+ export interface ExternalDocumentation {
59
+ url: string;
60
+ description?: string;
61
+ }
@@ -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/utils.ts CHANGED
@@ -38,15 +38,15 @@ export function isDefined<T>(x: T | undefined): x is T {
38
38
  return x !== undefined;
39
39
  }
40
40
 
41
- export function isPlainObject(value: any): value is Record<string, unknown> {
41
+ export function isPlainObject(value: unknown): value is Record<string, unknown> {
42
42
  return value !== null && typeof value === 'object' && !Array.isArray(value);
43
43
  }
44
44
 
45
- export function isEmptyObject(value: any): value is Record<string, unknown> {
45
+ export function isEmptyObject(value: unknown): value is Record<string, unknown> {
46
46
  return isPlainObject(value) && Object.keys(value).length === 0;
47
47
  }
48
48
 
49
- export function isEmptyArray(value: any) {
49
+ export function isEmptyArray(value: unknown) {
50
50
  return Array.isArray(value) && value.length === 0;
51
51
  }
52
52
 
@@ -317,3 +317,5 @@ export function dequal(foo: any, bar: any): boolean {
317
317
 
318
318
  return foo !== foo && bar !== bar;
319
319
  }
320
+
321
+ export type CollectFn = (value: unknown) => void;
package/src/visitors.ts CHANGED
@@ -50,7 +50,25 @@ import type {
50
50
  Oas2SecurityScheme,
51
51
  } from './typings/swagger';
52
52
  import type { Async2Definition } from './typings/asyncapi';
53
- import type { ArazzoDefinition } from './typings/arazzo';
53
+ import type { Async3Definition } from './typings/asyncapi3';
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';
54
72
 
55
73
  export type SkipFunctionContext = Pick<
56
74
  UserContext,
@@ -213,8 +231,29 @@ type Async2FlatVisitor = {
213
231
  Root?: VisitFunctionOrObject<Async2Definition>;
214
232
  };
215
233
 
234
+ type Async3FlatVisitor = {
235
+ Root?: VisitFunctionOrObject<Async3Definition>;
236
+ };
237
+
216
238
  type ArazzoFlatVisitor = {
217
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[]>;
218
257
  };
219
258
 
220
259
  const legacyTypesMap = {
@@ -232,24 +271,35 @@ const legacyTypesMap = {
232
271
  };
233
272
 
234
273
  type Oas3NestedVisitor = {
274
+ // eslint-disable-next-line @typescript-eslint/ban-types
235
275
  [T in keyof Oas3FlatVisitor]: Oas3FlatVisitor[T] extends Function
236
276
  ? Oas3FlatVisitor[T]
237
277
  : Oas3FlatVisitor[T] & NestedVisitor<Oas3NestedVisitor>;
238
278
  };
239
279
 
240
280
  type Oas2NestedVisitor = {
281
+ // eslint-disable-next-line @typescript-eslint/ban-types
241
282
  [T in keyof Oas2FlatVisitor]: Oas2FlatVisitor[T] extends Function
242
283
  ? Oas2FlatVisitor[T]
243
284
  : Oas2FlatVisitor[T] & NestedVisitor<Oas2NestedVisitor>;
244
285
  };
245
286
 
246
287
  type Async2NestedVisitor = {
288
+ // eslint-disable-next-line @typescript-eslint/ban-types
247
289
  [T in keyof Async2FlatVisitor]: Async2FlatVisitor[T] extends Function
248
290
  ? Async2FlatVisitor[T]
249
291
  : Async2FlatVisitor[T] & NestedVisitor<Async2NestedVisitor>;
250
292
  };
251
293
 
294
+ type Async3NestedVisitor = {
295
+ // eslint-disable-next-line @typescript-eslint/ban-types
296
+ [T in keyof Async3FlatVisitor]: Async3FlatVisitor[T] extends Function
297
+ ? Async3FlatVisitor[T]
298
+ : Async3FlatVisitor[T] & NestedVisitor<Async3NestedVisitor>;
299
+ };
300
+
252
301
  type ArazzoNestedVisitor = {
302
+ // eslint-disable-next-line @typescript-eslint/ban-types
253
303
  [T in keyof ArazzoFlatVisitor]: ArazzoFlatVisitor[T] extends Function
254
304
  ? ArazzoFlatVisitor[T]
255
305
  : ArazzoFlatVisitor[T] & NestedVisitor<ArazzoNestedVisitor>;
@@ -267,6 +317,10 @@ export type Async2Visitor = BaseVisitor &
267
317
  Async2NestedVisitor &
268
318
  Record<string, VisitFunction<any> | NestedVisitObject<any, Async2NestedVisitor>>;
269
319
 
320
+ export type Async3Visitor = BaseVisitor &
321
+ Async3NestedVisitor &
322
+ Record<string, VisitFunction<any> | NestedVisitObject<any, Async3NestedVisitor>>;
323
+
270
324
  export type ArazzoVisitor = BaseVisitor &
271
325
  ArazzoNestedVisitor &
272
326
  Record<string, VisitFunction<any> | NestedVisitObject<any, ArazzoNestedVisitor>>;
@@ -293,14 +347,17 @@ export type NormalizedOasVisitors<T extends BaseVisitor> = {
293
347
  export type Oas3Rule = (options: Record<string, any>) => Oas3Visitor | Oas3Visitor[];
294
348
  export type Oas2Rule = (options: Record<string, any>) => Oas2Visitor | Oas2Visitor[];
295
349
  export type Async2Rule = (options: Record<string, any>) => Async2Visitor | Async2Visitor[];
350
+ export type Async3Rule = (options: Record<string, any>) => Async3Visitor | Async3Visitor[];
296
351
  export type ArazzoRule = (options: Record<string, any>) => ArazzoVisitor | ArazzoVisitor[];
297
352
  export type Oas3Preprocessor = (options: Record<string, any>) => Oas3Visitor;
298
353
  export type Oas2Preprocessor = (options: Record<string, any>) => Oas2Visitor;
299
354
  export type Async2Preprocessor = (options: Record<string, any>) => Async2Visitor;
355
+ export type Async3Preprocessor = (options: Record<string, any>) => Async3Visitor;
300
356
  export type ArazzoPreprocessor = (options: Record<string, any>) => ArazzoVisitor;
301
357
  export type Oas3Decorator = (options: Record<string, any>) => Oas3Visitor;
302
358
  export type Oas2Decorator = (options: Record<string, any>) => Oas2Visitor;
303
359
  export type Async2Decorator = (options: Record<string, any>) => Async2Visitor;
360
+ export type Async3Decorator = (options: Record<string, any>) => Async3Visitor;
304
361
  export type ArazzoDecorator = (options: Record<string, any>) => ArazzoVisitor;
305
362
 
306
363
  // alias for the latest version supported
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