@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
@@ -33,7 +33,7 @@ describe('no-invalid-media-type-examples', () => {
33
33
  const results = await lintDocument({
34
34
  externalRefResolver: new BaseResolver(),
35
35
  document,
36
- config: await makeConfig({ 'no-invalid-media-type-examples': 'error' }),
36
+ config: await makeConfig({ rules: { 'no-invalid-media-type-examples': 'error' } }),
37
37
  });
38
38
 
39
39
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
@@ -107,9 +107,11 @@ describe('no-invalid-media-type-examples', () => {
107
107
  externalRefResolver: new BaseResolver(),
108
108
  document,
109
109
  config: await makeConfig({
110
- 'no-invalid-media-type-examples': {
111
- severity: 'error',
112
- allowAdditionalProperties: false,
110
+ rules: {
111
+ 'no-invalid-media-type-examples': {
112
+ severity: 'error',
113
+ allowAdditionalProperties: false,
114
+ },
113
115
  },
114
116
  }),
115
117
  });
@@ -159,9 +161,11 @@ describe('no-invalid-media-type-examples', () => {
159
161
  externalRefResolver: new BaseResolver(),
160
162
  document,
161
163
  config: await makeConfig({
162
- 'no-invalid-media-type-examples': {
163
- severity: 'error',
164
- allowAdditionalProperties: false,
164
+ rules: {
165
+ 'no-invalid-media-type-examples': {
166
+ severity: 'error',
167
+ allowAdditionalProperties: false,
168
+ },
165
169
  },
166
170
  }),
167
171
  });
@@ -219,9 +223,11 @@ describe('no-invalid-media-type-examples', () => {
219
223
  externalRefResolver: new BaseResolver(),
220
224
  document,
221
225
  config: await makeConfig({
222
- 'no-invalid-media-type-examples': {
223
- severity: 'error',
224
- allowAdditionalProperties: false,
226
+ rules: {
227
+ 'no-invalid-media-type-examples': {
228
+ severity: 'error',
229
+ allowAdditionalProperties: false,
230
+ },
225
231
  },
226
232
  }),
227
233
  });
@@ -268,9 +274,11 @@ describe('no-invalid-media-type-examples', () => {
268
274
  externalRefResolver: new BaseResolver(),
269
275
  document,
270
276
  config: await makeConfig({
271
- 'no-invalid-media-type-examples': {
272
- severity: 'error',
273
- allowAdditionalProperties: false,
277
+ rules: {
278
+ 'no-invalid-media-type-examples': {
279
+ severity: 'error',
280
+ allowAdditionalProperties: false,
281
+ },
274
282
  },
275
283
  }),
276
284
  });
@@ -318,9 +326,11 @@ describe('no-invalid-media-type-examples', () => {
318
326
  externalRefResolver: new BaseResolver(),
319
327
  document,
320
328
  config: await makeConfig({
321
- 'no-invalid-media-type-examples': {
322
- severity: 'error',
323
- allowAdditionalProperties: false,
329
+ rules: {
330
+ 'no-invalid-media-type-examples': {
331
+ severity: 'error',
332
+ allowAdditionalProperties: false,
333
+ },
324
334
  },
325
335
  }),
326
336
  });
@@ -370,7 +380,7 @@ describe('no-invalid-media-type-examples', () => {
370
380
  const results = await lintDocument({
371
381
  externalRefResolver: new BaseResolver(),
372
382
  document,
373
- config: await makeConfig({ 'no-invalid-media-type-examples': 'error' }),
383
+ config: await makeConfig({ rules: { 'no-invalid-media-type-examples': 'error' } }),
374
384
  });
375
385
 
376
386
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
@@ -402,7 +412,7 @@ describe('no-invalid-media-type-examples', () => {
402
412
  const results = await lintDocument({
403
413
  externalRefResolver: new BaseResolver(),
404
414
  document,
405
- config: await makeConfig({ 'no-invalid-media-type-examples': 'error' }),
415
+ config: await makeConfig({ rules: { 'no-invalid-media-type-examples': 'error' } }),
406
416
  });
407
417
 
408
418
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
@@ -437,7 +447,7 @@ describe('no-invalid-media-type-examples', () => {
437
447
  const results = await lintDocument({
438
448
  externalRefResolver: new BaseResolver(),
439
449
  document,
440
- config: await makeConfig({ 'no-invalid-media-type-examples': 'error' }),
450
+ config: await makeConfig({ rules: { 'no-invalid-media-type-examples': 'error' } }),
441
451
  });
442
452
 
443
453
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
@@ -465,7 +475,7 @@ describe('no-invalid-media-type-examples', () => {
465
475
  const results = await lintDocument({
466
476
  externalRefResolver: new BaseResolver(),
467
477
  document,
468
- config: await makeConfig({ 'no-invalid-media-type-examples': 'error' }),
478
+ config: await makeConfig({ rules: { 'no-invalid-media-type-examples': 'error' } }),
469
479
  });
470
480
 
471
481
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
@@ -517,7 +527,7 @@ describe('no-invalid-media-type-examples', () => {
517
527
  const results = await lintDocument({
518
528
  externalRefResolver: new BaseResolver(),
519
529
  document,
520
- config: await makeConfig({ 'no-invalid-media-type-examples': 'error' }),
530
+ config: await makeConfig({ rules: { 'no-invalid-media-type-examples': 'error' } }),
521
531
  });
522
532
 
523
533
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
@@ -551,7 +561,7 @@ describe('no-invalid-media-type-examples', () => {
551
561
  const results = await lintDocument({
552
562
  externalRefResolver: new BaseResolver(),
553
563
  document,
554
- config: await makeConfig({ 'no-invalid-media-type-examples': 'error' }),
564
+ config: await makeConfig({ rules: { 'no-invalid-media-type-examples': 'error' } }),
555
565
  });
556
566
 
557
567
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
@@ -588,7 +598,7 @@ describe('no-invalid-media-type-examples', () => {
588
598
  const results = await lintDocument({
589
599
  externalRefResolver: new BaseResolver(),
590
600
  document,
591
- config: await makeConfig({ 'no-invalid-media-type-examples': 'error' }),
601
+ config: await makeConfig({ rules: { 'no-invalid-media-type-examples': 'error' } }),
592
602
  });
593
603
 
594
604
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
@@ -625,7 +635,7 @@ describe('no-invalid-media-type-examples', () => {
625
635
  const results = await lintDocument({
626
636
  externalRefResolver: new BaseResolver(),
627
637
  document,
628
- config: await makeConfig({ 'no-invalid-media-type-examples': 'error' }),
638
+ config: await makeConfig({ rules: { 'no-invalid-media-type-examples': 'error' } }),
629
639
  });
630
640
 
631
641
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
@@ -17,7 +17,7 @@ describe('Oas3 oas3-no-server-example.com', () => {
17
17
  const results = await lintDocument({
18
18
  externalRefResolver: new BaseResolver(),
19
19
  document,
20
- config: await makeConfig({ 'no-server-example.com': 'error' }),
20
+ config: await makeConfig({ rules: { 'no-server-example.com': 'error' } }),
21
21
  });
22
22
 
23
23
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
@@ -52,7 +52,7 @@ describe('Oas3 oas3-no-server-example.com', () => {
52
52
  const results = await lintDocument({
53
53
  externalRefResolver: new BaseResolver(),
54
54
  document,
55
- config: await makeConfig({ 'no-server-example.com': 'error' }),
55
+ config: await makeConfig({ rules: { 'no-server-example.com': 'error' } }),
56
56
  });
57
57
 
58
58
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
@@ -71,7 +71,7 @@ describe('Oas3 oas3-no-server-example.com', () => {
71
71
  const results = await lintDocument({
72
72
  externalRefResolver: new BaseResolver(),
73
73
  document,
74
- config: await makeConfig({ 'no-server-example.com': 'error' }),
74
+ config: await makeConfig({ rules: { 'no-server-example.com': 'error' } }),
75
75
  });
76
76
 
77
77
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
@@ -17,7 +17,7 @@ describe('Oas3 oas3-no-server-trailing-slash', () => {
17
17
  const results = await lintDocument({
18
18
  externalRefResolver: new BaseResolver(),
19
19
  document,
20
- config: await makeConfig({ 'no-server-trailing-slash': 'error' }),
20
+ config: await makeConfig({ rules: { 'no-server-trailing-slash': 'error' } }),
21
21
  });
22
22
 
23
23
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
@@ -52,7 +52,7 @@ describe('Oas3 oas3-no-server-trailing-slash', () => {
52
52
  const results = await lintDocument({
53
53
  externalRefResolver: new BaseResolver(),
54
54
  document,
55
- config: await makeConfig({ 'no-server-trailing-slash': 'error' }),
55
+ config: await makeConfig({ rules: { 'no-server-trailing-slash': 'error' } }),
56
56
  });
57
57
 
58
58
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
@@ -71,7 +71,7 @@ describe('Oas3 oas3-no-server-trailing-slash', () => {
71
71
  const results = await lintDocument({
72
72
  externalRefResolver: new BaseResolver(),
73
73
  document,
74
- config: await makeConfig({ 'no-server-trailing-slash': 'error' }),
74
+ config: await makeConfig({ rules: { 'no-server-trailing-slash': 'error' } }),
75
75
  });
76
76
 
77
77
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
@@ -42,7 +42,7 @@ describe('Oas3 no-unused-components', () => {
42
42
  const results = await lintDocument({
43
43
  externalRefResolver: new BaseResolver(),
44
44
  document,
45
- config: await makeConfig({ 'no-unused-components': 'error' }),
45
+ config: await makeConfig({ rules: { 'no-unused-components': 'error' } }),
46
46
  });
47
47
 
48
48
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
@@ -32,7 +32,7 @@ describe('Oas3 operation-4xx-problem-details-rfc7807', () => {
32
32
  const results = await lintDocument({
33
33
  externalRefResolver: new BaseResolver(),
34
34
  document,
35
- config: await makeConfig({ 'operation-4xx-problem-details-rfc7807': 'error' }),
35
+ config: await makeConfig({ rules: { 'operation-4xx-problem-details-rfc7807': 'error' } }),
36
36
  });
37
37
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
38
38
  [
@@ -79,7 +79,7 @@ describe('Oas3 operation-4xx-problem-details-rfc7807', () => {
79
79
  const results = await lintDocument({
80
80
  externalRefResolver: new BaseResolver(),
81
81
  document,
82
- config: await makeConfig({ 'operation-4xx-problem-details-rfc7807': 'error' }),
82
+ config: await makeConfig({ rules: { 'operation-4xx-problem-details-rfc7807': 'error' } }),
83
83
  });
84
84
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
85
85
  [
@@ -122,7 +122,7 @@ describe('Oas3 operation-4xx-problem-details-rfc7807', () => {
122
122
  const results = await lintDocument({
123
123
  externalRefResolver: new BaseResolver(),
124
124
  document,
125
- config: await makeConfig({ 'operation-4xx-problem-details-rfc7807': 'error' }),
125
+ config: await makeConfig({ rules: { 'operation-4xx-problem-details-rfc7807': 'error' } }),
126
126
  });
127
127
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
128
128
  [
@@ -27,9 +27,11 @@ describe('Oas3 response-contains-header', () => {
27
27
  externalRefResolver: new BaseResolver(),
28
28
  document,
29
29
  config: await makeConfig({
30
- 'response-contains-header': {
31
- severity: 'error',
32
- names: { '200': ['Content-Length'] },
30
+ rules: {
31
+ 'response-contains-header': {
32
+ severity: 'error',
33
+ names: { '200': ['Content-Length'] },
34
+ },
33
35
  },
34
36
  }),
35
37
  });
@@ -107,11 +109,13 @@ describe('Oas3 response-contains-header', () => {
107
109
  externalRefResolver: new BaseResolver(),
108
110
  document,
109
111
  config: await makeConfig({
110
- 'response-contains-header': {
111
- severity: 'error',
112
- names: {
113
- '2XX': ['x-request-id'],
114
- '400': ['Content-Length'],
112
+ rules: {
113
+ 'response-contains-header': {
114
+ severity: 'error',
115
+ names: {
116
+ '2XX': ['x-request-id'],
117
+ '400': ['Content-Length'],
118
+ },
115
119
  },
116
120
  },
117
121
  }),
@@ -259,11 +263,13 @@ describe('Oas3 response-contains-header', () => {
259
263
  externalRefResolver: new BaseResolver(),
260
264
  document,
261
265
  config: await makeConfig({
262
- 'response-contains-header': {
263
- severity: 'error',
264
- names: {
265
- '2xx': ['x-request-id'],
266
- '400': ['Content-Length'],
266
+ rules: {
267
+ 'response-contains-header': {
268
+ severity: 'error',
269
+ names: {
270
+ '2xx': ['x-request-id'],
271
+ '400': ['Content-Length'],
272
+ },
267
273
  },
268
274
  },
269
275
  }),
@@ -294,9 +300,11 @@ describe('Oas3 response-contains-header', () => {
294
300
  externalRefResolver: new BaseResolver(),
295
301
  document,
296
302
  config: await makeConfig({
297
- 'response-contains-header': {
298
- severity: 'error',
299
- names: { '2XX': ['x-test-header'] },
303
+ rules: {
304
+ 'response-contains-header': {
305
+ severity: 'error',
306
+ names: { '2XX': ['x-test-header'] },
307
+ },
300
308
  },
301
309
  }),
302
310
  });
@@ -326,9 +334,11 @@ describe('Oas3 response-contains-header', () => {
326
334
  externalRefResolver: new BaseResolver(),
327
335
  document,
328
336
  config: await makeConfig({
329
- 'response-contains-header': {
330
- severity: 'error',
331
- names: { '2XX': ['X-Test-Header'] },
337
+ rules: {
338
+ 'response-contains-header': {
339
+ severity: 'error',
340
+ names: { '2XX': ['X-Test-Header'] },
341
+ },
332
342
  },
333
343
  }),
334
344
  });
@@ -352,9 +362,11 @@ describe('Oas3 response-contains-header', () => {
352
362
  externalRefResolver: new BaseResolver(),
353
363
  document,
354
364
  config: await makeConfig({
355
- 'response-contains-header': {
356
- severity: 'error',
357
- names: { '2XX': ['X-Test-Header'] },
365
+ rules: {
366
+ 'response-contains-header': {
367
+ severity: 'error',
368
+ names: { '2XX': ['X-Test-Header'] },
369
+ },
358
370
  },
359
371
  }),
360
372
  });
@@ -27,9 +27,11 @@ describe('Oas3 response-contains-property', () => {
27
27
  externalRefResolver: new BaseResolver(),
28
28
  document,
29
29
  config: await makeConfig({
30
- 'response-contains-property': {
31
- severity: 'error',
32
- names: { 201: ['id'] },
30
+ rules: {
31
+ 'response-contains-property': {
32
+ severity: 'error',
33
+ names: { 201: ['id'] },
34
+ },
33
35
  },
34
36
  }),
35
37
  });
@@ -103,9 +105,11 @@ describe('Oas3 response-contains-property', () => {
103
105
  externalRefResolver: new BaseResolver(),
104
106
  document,
105
107
  config: await makeConfig({
106
- 'response-contains-property': {
107
- severity: 'error',
108
- names: { '2xx': ['id'], '400': ['error'] },
108
+ rules: {
109
+ 'response-contains-property': {
110
+ severity: 'error',
111
+ names: { '2xx': ['id'], '400': ['error'] },
112
+ },
109
113
  },
110
114
  }),
111
115
  });
@@ -231,9 +235,11 @@ describe('Oas3 response-contains-property', () => {
231
235
  externalRefResolver: new BaseResolver(),
232
236
  document,
233
237
  config: await makeConfig({
234
- 'response-contains-property': {
235
- severity: 'error',
236
- names: { '2xx': ['id'], '400': ['error'] },
238
+ rules: {
239
+ 'response-contains-property': {
240
+ severity: 'error',
241
+ names: { '2xx': ['id'], '400': ['error'] },
242
+ },
237
243
  },
238
244
  }),
239
245
  });
@@ -259,9 +265,11 @@ describe('Oas3 response-contains-property', () => {
259
265
  externalRefResolver: new BaseResolver(),
260
266
  document,
261
267
  config: await makeConfig({
262
- 'response-contains-property': {
263
- severity: 'error',
264
- names: { 201: ['id'] },
268
+ rules: {
269
+ 'response-contains-property': {
270
+ severity: 'error',
271
+ names: { 201: ['id'] },
272
+ },
265
273
  },
266
274
  }),
267
275
  });
@@ -300,8 +308,10 @@ describe('Oas3 response-contains-property', () => {
300
308
  externalRefResolver: new BaseResolver(),
301
309
  document,
302
310
  config: await makeConfig({
303
- 'response-contains-property': {
304
- severity: 'error',
311
+ rules: {
312
+ 'response-contains-property': {
313
+ severity: 'error',
314
+ },
305
315
  },
306
316
  }),
307
317
  });
@@ -331,9 +341,11 @@ describe('Oas3 response-contains-property', () => {
331
341
  externalRefResolver: new BaseResolver(),
332
342
  document,
333
343
  config: await makeConfig({
334
- 'response-contains-property': {
335
- severity: 'error',
336
- names: { '2xx': ['id'] },
344
+ rules: {
345
+ 'response-contains-property': {
346
+ severity: 'error',
347
+ names: { '2xx': ['id'] },
348
+ },
337
349
  },
338
350
  }),
339
351
  });
@@ -360,9 +372,11 @@ describe('Oas3 response-contains-property', () => {
360
372
  externalRefResolver: new BaseResolver(),
361
373
  document,
362
374
  config: await makeConfig({
363
- 'response-contains-property': {
364
- severity: 'error',
365
- names: { '2xx': ['id'] },
375
+ rules: {
376
+ 'response-contains-property': {
377
+ severity: 'error',
378
+ names: { '2xx': ['id'] },
379
+ },
366
380
  },
367
381
  }),
368
382
  });
@@ -5,10 +5,19 @@ import { StyleguideConfig, defaultPlugin, resolvePlugins, resolvePreset } from '
5
5
 
6
6
  import { BaseResolver } from '../../../../resolve';
7
7
 
8
- const plugins = resolvePlugins([defaultPlugin]);
9
- const pressets = resolvePreset('all', plugins);
10
- const allConfig = new StyleguideConfig({ ...pressets, plugins });
8
+ import type { Plugin, ResolvedStyleguideConfig } from '../../../../config';
9
+
11
10
  describe('Oas3 Structural visitor basic', () => {
11
+ let plugins: Plugin[];
12
+ let presets: ResolvedStyleguideConfig;
13
+ let allConfig: StyleguideConfig;
14
+
15
+ beforeAll(async () => {
16
+ plugins = await resolvePlugins([defaultPlugin]);
17
+ presets = resolvePreset('all', plugins);
18
+ allConfig = new StyleguideConfig({ ...presets, plugins });
19
+ });
20
+
12
21
  it('should report wrong types', async () => {
13
22
  const document = parseYamlToDocument(
14
23
  outdent`
@@ -31,7 +31,9 @@ describe('Oas3 spec-components-invalid-map-name', () => {
31
31
  externalRefResolver: new BaseResolver(),
32
32
  document,
33
33
  config: await makeConfig({
34
- 'spec-components-invalid-map-name': 'error',
34
+ rules: {
35
+ 'spec-components-invalid-map-name': 'error',
36
+ },
35
37
  }),
36
38
  });
37
39
 
@@ -208,7 +210,9 @@ describe('Oas3 spec-components-invalid-map-name', () => {
208
210
  externalRefResolver: new BaseResolver(),
209
211
  document,
210
212
  config: await makeConfig({
211
- 'spec-components-invalid-map-name': 'error',
213
+ rules: {
214
+ 'spec-components-invalid-map-name': 'error',
215
+ },
212
216
  }),
213
217
  });
214
218
 
@@ -235,7 +239,9 @@ describe('Oas3 spec-components-invalid-map-name', () => {
235
239
  externalRefResolver: new BaseResolver(),
236
240
  document,
237
241
  config: await makeConfig({
238
- 'spec-components-invalid-map-name': 'error',
242
+ rules: {
243
+ 'spec-components-invalid-map-name': 'error',
244
+ },
239
245
  }),
240
246
  });
241
247
 
@@ -18,6 +18,6 @@ export async function lintDocumentForTest(
18
18
  return await lintDocument({
19
19
  externalRefResolver: baseResolver,
20
20
  document,
21
- config: await makeConfig(rules),
21
+ config: await makeConfig({ rules }),
22
22
  });
23
23
  }
@@ -1,6 +1,7 @@
1
- import { Oas3Rule, Oas3Visitor } from '../../visitors';
2
1
  import { isRef } from '../../ref-utils';
3
- import { Oas3_1Schema, Oas3Parameter } from '../../typings/openapi';
2
+
3
+ import type { Oas3Rule, Oas3Visitor } from '../../visitors';
4
+ import type { Oas3_1Schema, Oas3Parameter } from '../../typings/openapi';
4
5
 
5
6
  export type ArrayParameterSerializationOptions = {
6
7
  in?: string[];
@@ -1,4 +1,4 @@
1
- import { Oas3Rule } from '../../visitors';
1
+ import type { Oas3Rule } from '../../visitors';
2
2
 
3
3
  export type BooleanParameterPrefixesOptions = {
4
4
  prefixes?: string[];
@@ -1,6 +1,6 @@
1
- import { Problem, UserContext } from '../../walk';
2
- import { Oas2Rule, Oas3Rule, Oas3Visitor } from '../../visitors';
3
- import {
1
+ import type { Problem, UserContext } from '../../walk';
2
+ import type { Oas2Rule, Oas3Rule, Oas3Visitor } from '../../visitors';
3
+ import type {
4
4
  Oas3Definition,
5
5
  Oas3Parameter,
6
6
  Oas3RequestBody,
@@ -1,4 +1,3 @@
1
- import { Oas3RuleSet } from '../../oas-types';
2
1
  import { Spec } from '../common/spec';
3
2
  import { Operation2xxResponse } from '../common/operation-2xx-response';
4
3
  import { Operation4xxResponse } from '../common/operation-4xx-response';
@@ -19,6 +18,7 @@ import { TagDescription } from '../common/tag-description';
19
18
  import { InfoContact } from '../common/info-contact';
20
19
  import { InfoLicense } from '../common/info-license';
21
20
  import { InfoLicenseUrl } from '../common/info-license-url';
21
+ import { InfoLicenseStrict } from '../common/info-license-strict';
22
22
  import { OperationDescription } from '../common/operation-description';
23
23
  import { NoUnusedComponents } from './no-unused-components';
24
24
  import { PathNotIncludeQuery } from '../common/path-not-include-query';
@@ -55,63 +55,67 @@ import { ComponentNameUnique } from './component-name-unique';
55
55
  import { ArrayParameterSerialization } from './array-parameter-serialization';
56
56
  import { NoRequiredSchemaPropertiesUndefined } from '../common/no-required-schema-properties-undefined';
57
57
 
58
+ import type { Oas3RuleSet } from '../../oas-types';
59
+ import type { Oas3Rule } from '../../visitors';
60
+
58
61
  export const rules: Oas3RuleSet<'built-in'> = {
59
- spec: Spec,
60
- 'info-contact': InfoContact,
61
- 'info-license': InfoLicense,
62
- 'info-license-url': InfoLicenseUrl,
63
- 'operation-2xx-response': Operation2xxResponse,
64
- 'operation-4xx-response': Operation4xxResponse,
62
+ spec: Spec as Oas3Rule,
63
+ 'info-contact': InfoContact as Oas3Rule,
64
+ 'info-license': InfoLicense as Oas3Rule,
65
+ 'info-license-url': InfoLicenseUrl as Oas3Rule,
66
+ 'info-license-strict': InfoLicenseStrict as Oas3Rule,
67
+ 'operation-2xx-response': Operation2xxResponse as Oas3Rule,
68
+ 'operation-4xx-response': Operation4xxResponse as Oas3Rule,
65
69
  'operation-4xx-problem-details-rfc7807': Operation4xxProblemDetailsRfc7807,
66
- assertions: Assertions,
67
- 'operation-operationId-unique': OperationIdUnique,
68
- 'operation-parameters-unique': OperationParametersUnique,
69
- 'operation-tag-defined': OperationTagDefined,
70
+ assertions: Assertions as Oas3Rule,
71
+ 'operation-operationId-unique': OperationIdUnique as Oas3Rule,
72
+ 'operation-parameters-unique': OperationParametersUnique as Oas3Rule,
73
+ 'operation-tag-defined': OperationTagDefined as Oas3Rule,
70
74
  'no-example-value-and-externalValue': NoExampleValueAndExternalValue,
71
- 'no-enum-type-mismatch': NoEnumTypeMismatch,
72
- 'no-path-trailing-slash': NoPathTrailingSlash,
75
+ 'no-enum-type-mismatch': NoEnumTypeMismatch as Oas3Rule,
76
+ 'no-path-trailing-slash': NoPathTrailingSlash as Oas3Rule,
73
77
  'no-empty-servers': NoEmptyServers,
74
- 'path-declaration-must-exist': PathDeclarationMustExist,
75
- 'operation-operationId-url-safe': OperationIdUrlSafe,
76
- 'operation-operationId': OperationOperationId,
77
- 'operation-summary': OperationSummary,
78
- 'tags-alphabetical': TagsAlphabetical,
78
+ 'path-declaration-must-exist': PathDeclarationMustExist as Oas3Rule,
79
+ 'operation-operationId-url-safe': OperationIdUrlSafe as Oas3Rule,
80
+ 'operation-operationId': OperationOperationId as Oas3Rule,
81
+ 'operation-summary': OperationSummary as Oas3Rule,
82
+ 'tags-alphabetical': TagsAlphabetical as Oas3Rule,
79
83
  'no-server-example.com': NoServerExample,
80
84
  'no-server-trailing-slash': NoServerTrailingSlash,
81
- 'tag-description': TagDescription,
82
- 'operation-description': OperationDescription,
85
+ 'tag-description': TagDescription as Oas3Rule,
86
+ 'operation-description': OperationDescription as Oas3Rule,
83
87
  'no-unused-components': NoUnusedComponents,
84
- 'path-not-include-query': PathNotIncludeQuery,
85
- 'path-parameters-defined': PathParamsDefined,
86
- 'path-params-defined': PathParamsDefined,
87
- 'parameter-description': ParameterDescription,
88
- 'operation-singular-tag': OperationSingularTag,
89
- 'security-defined': SecurityDefined,
88
+ 'path-not-include-query': PathNotIncludeQuery as Oas3Rule,
89
+ 'path-parameters-defined': PathParamsDefined as Oas3Rule,
90
+ 'path-params-defined': PathParamsDefined as Oas3Rule,
91
+ 'parameter-description': ParameterDescription as Oas3Rule,
92
+ 'operation-singular-tag': OperationSingularTag as Oas3Rule,
93
+ 'security-defined': SecurityDefined as Oas3Rule,
90
94
  'no-unresolved-refs': NoUnresolvedRefs,
91
- 'paths-kebab-case': PathsKebabCase,
95
+ 'paths-kebab-case': PathsKebabCase as Oas3Rule,
92
96
  'boolean-parameter-prefixes': BooleanParameterPrefixes,
93
- 'path-http-verbs-order': PathHttpVerbsOrder,
97
+ 'path-http-verbs-order': PathHttpVerbsOrder as Oas3Rule,
94
98
  'no-invalid-media-type-examples': ValidContentExamples,
95
- 'no-identical-paths': NoIdenticalPaths,
96
- 'no-ambiguous-paths': NoAmbiguousPaths,
99
+ 'no-identical-paths': NoIdenticalPaths as Oas3Rule,
100
+ 'no-ambiguous-paths': NoAmbiguousPaths as Oas3Rule,
97
101
  'no-undefined-server-variable': NoUndefinedServerVariable,
98
102
  'no-server-variables-empty-enum': NoServerVariablesEmptyEnum,
99
- 'no-http-verbs-in-paths': NoHttpVerbsInPaths,
100
- 'path-excludes-patterns': PathExcludesPatterns,
103
+ 'no-http-verbs-in-paths': NoHttpVerbsInPaths as Oas3Rule,
104
+ 'path-excludes-patterns': PathExcludesPatterns as Oas3Rule,
101
105
  'request-mime-type': RequestMimeType,
102
106
  'response-mime-type': ResponseMimeType,
103
- 'path-segment-plural': PathSegmentPlural,
107
+ 'path-segment-plural': PathSegmentPlural as Oas3Rule,
104
108
  'no-invalid-schema-examples': NoInvalidSchemaExamples,
105
109
  'no-invalid-parameter-examples': NoInvalidParameterExamples,
106
- 'response-contains-header': ResponseContainsHeader,
110
+ 'response-contains-header': ResponseContainsHeader as Oas3Rule,
107
111
  'response-contains-property': ResponseContainsProperty,
108
- 'scalar-property-missing-example': ScalarPropertyMissingExample,
112
+ 'scalar-property-missing-example': ScalarPropertyMissingExample as Oas3Rule,
109
113
  'spec-components-invalid-map-name': SpecComponentsInvalidMapName,
110
114
  'required-string-property-missing-min-length': RequiredStringPropertyMissingMinLength,
111
- 'spec-strict-refs': SpecStrictRefs,
112
- 'component-name-unique': ComponentNameUnique,
115
+ 'spec-strict-refs': SpecStrictRefs as Oas3Rule,
116
+ 'component-name-unique': ComponentNameUnique as Oas3Rule,
113
117
  'array-parameter-serialization': ArrayParameterSerialization,
114
- 'no-required-schema-properties-undefined': NoRequiredSchemaPropertiesUndefined,
118
+ 'no-required-schema-properties-undefined': NoRequiredSchemaPropertiesUndefined as Oas3Rule,
115
119
  };
116
120
 
117
121
  export const preprocessors = {};