@redocly/openapi-core 1.19.0 → 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 (338) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/__tests__/utils.ts +14 -7
  3. package/lib/benchmark/benches/lint-with-many-rules.bench.d.ts +1 -0
  4. package/lib/benchmark/benches/lint-with-many-rules.bench.js +5 -1
  5. package/lib/benchmark/benches/lint-with-nested-rule.bench.d.ts +1 -0
  6. package/lib/benchmark/benches/lint-with-nested-rule.bench.js +5 -1
  7. package/lib/benchmark/benches/lint-with-no-rules.bench.d.ts +1 -0
  8. package/lib/benchmark/benches/lint-with-no-rules.bench.js +5 -1
  9. package/lib/benchmark/benches/lint-with-top-level-rule-report.bench.d.ts +1 -0
  10. package/lib/benchmark/benches/lint-with-top-level-rule-report.bench.js +17 -13
  11. package/lib/benchmark/benches/lint-with-top-level-rule.bench.d.ts +1 -0
  12. package/lib/benchmark/benches/lint-with-top-level-rule.bench.js +16 -12
  13. package/lib/benchmark/utils.d.ts +3 -3
  14. package/lib/benchmark/utils.js +3 -3
  15. package/lib/config/all.js +4 -1
  16. package/lib/config/builtIn.js +15 -20
  17. package/lib/config/config-resolvers.d.ts +1 -1
  18. package/lib/config/config-resolvers.js +66 -24
  19. package/lib/config/config.d.ts +3 -2
  20. package/lib/config/load.d.ts +1 -1
  21. package/lib/config/minimal.js +4 -0
  22. package/lib/config/recommended-strict.js +5 -1
  23. package/lib/config/recommended.js +5 -1
  24. package/lib/config/types.d.ts +9 -2
  25. package/lib/config/utils.d.ts +3 -1
  26. package/lib/config/utils.js +8 -0
  27. package/lib/decorators/common/filters/filter-helper.d.ts +1 -1
  28. package/lib/decorators/common/filters/filter-in.d.ts +1 -1
  29. package/lib/decorators/common/filters/filter-out.d.ts +1 -1
  30. package/lib/decorators/common/info-description-override.d.ts +1 -1
  31. package/lib/decorators/common/info-override.d.ts +1 -1
  32. package/lib/decorators/common/media-type-examples-override.d.ts +1 -1
  33. package/lib/decorators/common/operation-description-override.d.ts +1 -1
  34. package/lib/decorators/common/registry-dependencies.d.ts +1 -1
  35. package/lib/decorators/common/remove-x-internal.d.ts +1 -1
  36. package/lib/decorators/common/tag-description-override.d.ts +1 -1
  37. package/lib/decorators/oas2/index.d.ts +1 -1
  38. package/lib/decorators/oas3/index.d.ts +1 -1
  39. package/lib/format/codeframes.d.ts +1 -1
  40. package/lib/format/format.d.ts +1 -1
  41. package/lib/format/format.js +1 -1
  42. package/lib/js-yaml/index.d.ts +1 -1
  43. package/lib/lint.d.ts +1 -1
  44. package/lib/logger.js +2 -2
  45. package/lib/oas-types.d.ts +2 -2
  46. package/lib/redocly/domains.d.ts +1 -1
  47. package/lib/redocly/index.d.ts +1 -1
  48. package/lib/ref-utils.d.ts +2 -2
  49. package/lib/ref-utils.js +1 -0
  50. package/lib/resolve.d.ts +2 -2
  51. package/lib/rules/ajv.d.ts +1 -1
  52. package/lib/rules/arazzo/index.js +2 -0
  53. package/lib/rules/async2/channels-kebab-case.d.ts +1 -1
  54. package/lib/rules/async2/index.js +2 -0
  55. package/lib/rules/async2/no-channel-trailing-slash.d.ts +1 -1
  56. package/lib/rules/async3/channels-kebab-case.d.ts +1 -1
  57. package/lib/rules/async3/index.js +2 -0
  58. package/lib/rules/async3/no-channel-trailing-slash.d.ts +1 -1
  59. package/lib/rules/common/assertions/asserts.d.ts +2 -2
  60. package/lib/rules/common/assertions/index.d.ts +1 -2
  61. package/lib/rules/common/assertions/utils.d.ts +1 -1
  62. package/lib/rules/common/info-contact.d.ts +1 -1
  63. package/lib/rules/common/info-license-strict.d.ts +2 -0
  64. package/lib/rules/common/info-license-strict.js +26 -0
  65. package/lib/rules/common/info-license-url.d.ts +1 -1
  66. package/lib/rules/common/info-license.d.ts +1 -1
  67. package/lib/rules/common/no-ambiguous-paths.d.ts +1 -1
  68. package/lib/rules/common/no-enum-type-mismatch.d.ts +1 -1
  69. package/lib/rules/common/no-http-verbs-in-paths.d.ts +1 -1
  70. package/lib/rules/common/no-identical-paths.d.ts +1 -1
  71. package/lib/rules/common/no-path-trailing-slash.d.ts +1 -1
  72. package/lib/rules/common/no-required-schema-properties-undefined.d.ts +1 -1
  73. package/lib/rules/common/operation-2xx-response.d.ts +1 -1
  74. package/lib/rules/common/operation-4xx-response.d.ts +1 -1
  75. package/lib/rules/common/operation-description.d.ts +1 -1
  76. package/lib/rules/common/operation-operationId-unique.d.ts +1 -1
  77. package/lib/rules/common/operation-operationId-url-safe.d.ts +1 -1
  78. package/lib/rules/common/operation-operationId-url-safe.js +1 -0
  79. package/lib/rules/common/operation-operationId.d.ts +1 -1
  80. package/lib/rules/common/operation-parameters-unique.d.ts +1 -1
  81. package/lib/rules/common/operation-singular-tag.d.ts +1 -1
  82. package/lib/rules/common/operation-summary.d.ts +1 -1
  83. package/lib/rules/common/operation-tag-defined.d.ts +1 -1
  84. package/lib/rules/common/parameter-description.d.ts +1 -1
  85. package/lib/rules/common/path-declaration-must-exist.d.ts +1 -1
  86. package/lib/rules/common/path-excludes-patterns.d.ts +1 -1
  87. package/lib/rules/common/path-http-verbs-order.d.ts +1 -1
  88. package/lib/rules/common/path-not-include-query.d.ts +1 -1
  89. package/lib/rules/common/path-params-defined.d.ts +1 -1
  90. package/lib/rules/common/path-segment-plural.d.ts +1 -1
  91. package/lib/rules/common/paths-kebab-case.d.ts +1 -1
  92. package/lib/rules/common/required-string-property-missing-min-length.d.ts +1 -1
  93. package/lib/rules/common/response-contains-header.d.ts +1 -1
  94. package/lib/rules/common/security-defined.d.ts +1 -1
  95. package/lib/rules/common/spec-strict-refs.d.ts +1 -1
  96. package/lib/rules/common/tag-description.d.ts +1 -1
  97. package/lib/rules/common/tags-alphabetical.d.ts +1 -1
  98. package/lib/rules/no-unresolved-refs.d.ts +3 -3
  99. package/lib/rules/oas2/boolean-parameter-prefixes.d.ts +1 -1
  100. package/lib/rules/oas2/index.d.ts +1 -1
  101. package/lib/rules/oas2/index.js +2 -0
  102. package/lib/rules/oas2/response-contains-property.d.ts +1 -1
  103. package/lib/rules/oas3/array-parameter-serialization.d.ts +1 -1
  104. package/lib/rules/oas3/boolean-parameter-prefixes.d.ts +1 -1
  105. package/lib/rules/oas3/component-name-unique.d.ts +1 -1
  106. package/lib/rules/oas3/index.d.ts +1 -1
  107. package/lib/rules/oas3/index.js +2 -0
  108. package/lib/rules/oas3/no-empty-servers.d.ts +1 -1
  109. package/lib/rules/oas3/no-example-value-and-externalValue.d.ts +1 -1
  110. package/lib/rules/oas3/no-invalid-media-type-examples.d.ts +1 -1
  111. package/lib/rules/oas3/no-server-example.com.d.ts +1 -1
  112. package/lib/rules/oas3/no-server-example.com.js +1 -0
  113. package/lib/rules/oas3/no-server-trailing-slash.d.ts +1 -1
  114. package/lib/rules/oas3/no-server-variables-empty-enum.d.ts +1 -1
  115. package/lib/rules/oas3/no-undefined-server-variable.d.ts +1 -1
  116. package/lib/rules/oas3/no-unused-components.d.ts +1 -1
  117. package/lib/rules/oas3/response-contains-property.d.ts +1 -1
  118. package/lib/rules/oas3/spec-components-invalid-map-name.d.ts +1 -1
  119. package/lib/rules/other/stats.d.ts +3 -3
  120. package/lib/rules/other/stats.js +5 -3
  121. package/lib/rules/spot/parameters-no-body-inside-in.d.ts +2 -0
  122. package/lib/rules/spot/parameters-no-body-inside-in.js +18 -0
  123. package/lib/rules/utils.d.ts +4 -2
  124. package/lib/rules/utils.js +27 -1
  125. package/lib/types/arazzo.d.ts +1 -2275
  126. package/lib/types/arazzo.js +246 -309
  127. package/lib/types/asyncapi2.d.ts +1 -1
  128. package/lib/types/asyncapi2.js +3 -1
  129. package/lib/types/asyncapi3.d.ts +1 -1
  130. package/lib/types/json-schema-adapter.d.ts +1 -1
  131. package/lib/types/oas3.d.ts +4 -0
  132. package/lib/types/oas3.js +9 -9
  133. package/lib/types/oas3_1.d.ts +3 -0
  134. package/lib/types/oas3_1.js +8 -8
  135. package/lib/types/redocly-yaml.d.ts +6 -6
  136. package/lib/types/redocly-yaml.js +4 -1
  137. package/lib/typings/arazzo.d.ts +145 -27
  138. package/lib/typings/common.d.ts +1 -1
  139. package/lib/typings/swagger.d.ts +2 -2
  140. package/lib/visitors.d.ts +18 -1
  141. package/lib/walk.d.ts +3 -3
  142. package/package.json +2 -2
  143. package/src/__tests__/bundle.test.ts +4 -4
  144. package/src/__tests__/lint.test.ts +29 -21
  145. package/src/__tests__/walk.test.ts +25 -25
  146. package/src/benchmark/benches/lint-with-many-rules.bench.ts +7 -1
  147. package/src/benchmark/benches/lint-with-nested-rule.bench.ts +7 -1
  148. package/src/benchmark/benches/lint-with-no-rules.bench.ts +8 -1
  149. package/src/benchmark/benches/lint-with-top-level-rule-report.bench.ts +18 -13
  150. package/src/benchmark/benches/lint-with-top-level-rule.bench.ts +17 -11
  151. package/src/benchmark/fork.js +4 -0
  152. package/src/benchmark/utils.ts +6 -5
  153. package/src/bundle.ts +2 -1
  154. package/src/config/__tests__/__snapshots__/config-resolvers.test.ts.snap +10 -2
  155. package/src/config/__tests__/config-resolvers.test.ts +82 -0
  156. package/src/config/__tests__/fixtures/resolve-config/local-config-with-commonjs-export-function.yaml +2 -0
  157. package/src/config/__tests__/fixtures/resolve-config/local-config-with-esm.yaml +2 -0
  158. package/src/config/__tests__/fixtures/resolve-config/plugin-esm.mjs +10 -0
  159. package/src/config/__tests__/fixtures/resolve-config/plugin-with-export-function.cjs +10 -0
  160. package/src/config/__tests__/resolve-plugins.test.ts +4 -1
  161. package/src/config/all.ts +4 -1
  162. package/src/config/builtIn.ts +5 -10
  163. package/src/config/config-resolvers.ts +77 -19
  164. package/src/config/config.ts +7 -8
  165. package/src/config/load.ts +2 -2
  166. package/src/config/minimal.ts +4 -0
  167. package/src/config/recommended-strict.ts +5 -1
  168. package/src/config/recommended.ts +5 -1
  169. package/src/config/types.ts +19 -3
  170. package/src/config/utils.ts +13 -2
  171. package/src/decorators/__tests__/filter-in.test.ts +29 -26
  172. package/src/decorators/__tests__/filter-out.test.ts +32 -23
  173. package/src/decorators/__tests__/media-type-examples-override.test.ts +45 -45
  174. package/src/decorators/__tests__/remove-x-internal.test.ts +8 -5
  175. package/src/decorators/common/filters/filter-helper.ts +2 -1
  176. package/src/decorators/common/filters/filter-in.ts +2 -1
  177. package/src/decorators/common/filters/filter-out.ts +2 -1
  178. package/src/decorators/common/info-description-override.ts +3 -2
  179. package/src/decorators/common/info-override.ts +1 -1
  180. package/src/decorators/common/media-type-examples-override.ts +4 -3
  181. package/src/decorators/common/operation-description-override.ts +5 -4
  182. package/src/decorators/common/registry-dependencies.ts +2 -2
  183. package/src/decorators/common/remove-x-internal.ts +3 -2
  184. package/src/decorators/common/tag-description-override.ts +3 -2
  185. package/src/decorators/oas2/__tests__/remove-unused-components.test.ts +3 -3
  186. package/src/decorators/oas2/index.ts +2 -1
  187. package/src/decorators/oas2/remove-unused-components.ts +1 -1
  188. package/src/decorators/oas3/__tests__/remove-unused-components.test.ts +4 -4
  189. package/src/decorators/oas3/index.ts +2 -1
  190. package/src/decorators/oas3/remove-unused-components.ts +1 -1
  191. package/src/format/codeframes.ts +2 -1
  192. package/src/format/format.ts +9 -4
  193. package/src/js-yaml/index.ts +3 -1
  194. package/src/lint.ts +2 -1
  195. package/src/logger.ts +2 -2
  196. package/src/oas-types.ts +14 -13
  197. package/src/redocly/domains.ts +1 -1
  198. package/src/redocly/index.ts +3 -3
  199. package/src/redocly/registry-api.ts +5 -3
  200. package/src/ref-utils.ts +4 -2
  201. package/src/resolve.ts +6 -4
  202. package/src/rules/__tests__/no-unresolved-refs.test.ts +21 -7
  203. package/src/rules/ajv.ts +2 -1
  204. package/src/rules/arazzo/__tests__/parameters-no-body-inside-in.test.ts +76 -0
  205. package/src/rules/arazzo/index.ts +5 -2
  206. package/src/rules/async2/__tests__/channels-kebab-case.test.ts +9 -5
  207. package/src/rules/async2/__tests__/no-channel-trailing-slash.test.ts +3 -3
  208. package/src/rules/async2/channels-kebab-case.ts +2 -2
  209. package/src/rules/async2/index.ts +4 -1
  210. package/src/rules/async2/no-channel-trailing-slash.ts +2 -2
  211. package/src/rules/async3/__tests__/channels-kebab-case.test.ts +9 -5
  212. package/src/rules/async3/__tests__/no-channel-trailing-slash.test.ts +3 -3
  213. package/src/rules/async3/channels-kebab-case.ts +3 -3
  214. package/src/rules/async3/index.ts +4 -1
  215. package/src/rules/async3/no-channel-trailing-slash.ts +3 -3
  216. package/src/rules/common/__tests__/info-license-strict.test.ts +141 -0
  217. package/src/rules/common/__tests__/info-license.test.ts +2 -2
  218. package/src/rules/common/__tests__/license-url.test.ts +2 -2
  219. package/src/rules/common/__tests__/no-ambiguous-paths.test.ts +1 -1
  220. package/src/rules/common/__tests__/no-enum-type-mismatch.test.ts +5 -5
  221. package/src/rules/common/__tests__/no-identical-paths.test.ts +1 -1
  222. package/src/rules/common/__tests__/no-invalid-parameter-examples.test.ts +1 -1
  223. package/src/rules/common/__tests__/no-invalid-schema-examples.test.ts +1 -1
  224. package/src/rules/common/__tests__/no-path-trailing-slash.test.ts +4 -4
  225. package/src/rules/common/__tests__/no-required-schema-properties-undefined.test.ts +11 -11
  226. package/src/rules/common/__tests__/operation-2xx-response.test.ts +8 -6
  227. package/src/rules/common/__tests__/operation-4xx-response.test.ts +9 -7
  228. package/src/rules/common/__tests__/operation-operationId-unique.test.ts +2 -2
  229. package/src/rules/common/__tests__/operation-operationId-url-safe.test.ts +1 -1
  230. package/src/rules/common/__tests__/operation-parameters-unique.test.ts +4 -4
  231. package/src/rules/common/__tests__/operation-singular-tag.test.ts +2 -2
  232. package/src/rules/common/__tests__/path-http-verbs-order.test.ts +2 -2
  233. package/src/rules/common/__tests__/path-not-include-query.test.ts +2 -2
  234. package/src/rules/common/__tests__/path-params-defined.test.ts +5 -5
  235. package/src/rules/common/__tests__/paths-kebab-case.test.ts +6 -4
  236. package/src/rules/common/__tests__/scalar-property-missing-example.test.ts +8 -8
  237. package/src/rules/common/__tests__/security-defined.test.ts +14 -8
  238. package/src/rules/common/__tests__/spec-strict-refs.test.ts +1 -1
  239. package/src/rules/common/__tests__/spec.test.ts +10 -10
  240. package/src/rules/common/__tests__/tag-description.test.ts +2 -2
  241. package/src/rules/common/__tests__/tags-alphabetical.test.ts +6 -4
  242. package/src/rules/common/assertions/asserts.ts +5 -9
  243. package/src/rules/common/assertions/index.ts +1 -2
  244. package/src/rules/common/assertions/utils.ts +4 -2
  245. package/src/rules/common/info-contact.ts +2 -1
  246. package/src/rules/common/info-license-strict.ts +24 -0
  247. package/src/rules/common/info-license-url.ts +2 -1
  248. package/src/rules/common/info-license.ts +2 -1
  249. package/src/rules/common/no-ambiguous-paths.ts +4 -4
  250. package/src/rules/common/no-enum-type-mismatch.ts +5 -4
  251. package/src/rules/common/no-http-verbs-in-paths.ts +5 -4
  252. package/src/rules/common/no-identical-paths.ts +4 -4
  253. package/src/rules/common/no-invalid-parameter-examples.ts +3 -2
  254. package/src/rules/common/no-path-trailing-slash.ts +2 -2
  255. package/src/rules/common/no-required-schema-properties-undefined.ts +5 -4
  256. package/src/rules/common/operation-2xx-response.ts +3 -2
  257. package/src/rules/common/operation-4xx-response.ts +3 -2
  258. package/src/rules/common/operation-description.ts +5 -4
  259. package/src/rules/common/operation-operationId-unique.ts +4 -4
  260. package/src/rules/common/operation-operationId-url-safe.ts +5 -4
  261. package/src/rules/common/operation-operationId.ts +5 -4
  262. package/src/rules/common/operation-parameters-unique.ts +4 -4
  263. package/src/rules/common/operation-singular-tag.ts +4 -4
  264. package/src/rules/common/operation-summary.ts +5 -4
  265. package/src/rules/common/operation-tag-defined.ts +4 -4
  266. package/src/rules/common/parameter-description.ts +4 -4
  267. package/src/rules/common/path-declaration-must-exist.ts +2 -2
  268. package/src/rules/common/path-excludes-patterns.ts +4 -4
  269. package/src/rules/common/path-http-verbs-order.ts +4 -4
  270. package/src/rules/common/path-not-include-query.ts +2 -2
  271. package/src/rules/common/path-params-defined.ts +4 -4
  272. package/src/rules/common/path-segment-plural.ts +3 -2
  273. package/src/rules/common/paths-kebab-case.ts +2 -2
  274. package/src/rules/common/required-string-property-missing-min-length.ts +4 -4
  275. package/src/rules/common/response-contains-header.ts +5 -4
  276. package/src/rules/common/scalar-property-missing-example.ts +2 -1
  277. package/src/rules/common/security-defined.ts +5 -5
  278. package/src/rules/common/spec-strict-refs.ts +2 -1
  279. package/src/rules/common/spec.ts +3 -2
  280. package/src/rules/common/tag-description.ts +2 -1
  281. package/src/rules/common/tags-alphabetical.ts +4 -4
  282. package/src/rules/no-unresolved-refs.ts +4 -3
  283. package/src/rules/oas2/__tests__/boolean-parameter-prefixes.test.ts +7 -5
  284. package/src/rules/oas2/__tests__/response-contains-header.test.ts +14 -8
  285. package/src/rules/oas2/__tests__/response-contains-property.test.ts +14 -8
  286. package/src/rules/oas2/__tests__/spec/referenceableScalars.test.ts +3 -1
  287. package/src/rules/oas2/boolean-parameter-prefixes.ts +1 -1
  288. package/src/rules/oas2/index.ts +4 -2
  289. package/src/rules/oas2/request-mime-type.ts +2 -1
  290. package/src/rules/oas2/response-contains-property.ts +3 -2
  291. package/src/rules/oas2/response-mime-type.ts +2 -1
  292. package/src/rules/oas3/__tests__/array-parameter-serialization.test.ts +18 -6
  293. package/src/rules/oas3/__tests__/boolean-parameter-prefixes.test.ts +7 -5
  294. package/src/rules/oas3/__tests__/no-empty-enum-servers.com.test.ts +6 -6
  295. package/src/rules/oas3/__tests__/no-example-value-and-externalValue.test.ts +2 -2
  296. package/src/rules/oas3/__tests__/no-invalid-media-type-examples.test.ts +34 -24
  297. package/src/rules/oas3/__tests__/no-server-example.com.test.ts +3 -3
  298. package/src/rules/oas3/__tests__/no-server-trailing-slash.test.ts +3 -3
  299. package/src/rules/oas3/__tests__/no-unused-components.test.ts +1 -1
  300. package/src/rules/oas3/__tests__/operation-4xx-problem-details-rfc7807.test.ts +3 -3
  301. package/src/rules/oas3/__tests__/response-contains-header.test.ts +34 -22
  302. package/src/rules/oas3/__tests__/response-contains-property.test.ts +34 -20
  303. package/src/rules/oas3/__tests__/spec/spec.test.ts +12 -3
  304. package/src/rules/oas3/__tests__/spec-components-invalid-map-name.test.ts +9 -3
  305. package/src/rules/oas3/__tests__/utils/lint-document-for-test.ts +1 -1
  306. package/src/rules/oas3/array-parameter-serialization.ts +3 -2
  307. package/src/rules/oas3/boolean-parameter-prefixes.ts +1 -1
  308. package/src/rules/oas3/component-name-unique.ts +3 -3
  309. package/src/rules/oas3/index.ts +3 -1
  310. package/src/rules/oas3/no-empty-servers.ts +1 -1
  311. package/src/rules/oas3/no-example-value-and-externalValue.ts +1 -1
  312. package/src/rules/oas3/no-invalid-media-type-examples.ts +6 -4
  313. package/src/rules/oas3/no-server-example.com.ts +2 -1
  314. package/src/rules/oas3/no-server-trailing-slash.ts +1 -1
  315. package/src/rules/oas3/no-server-variables-empty-enum.ts +2 -2
  316. package/src/rules/oas3/no-undefined-server-variable.ts +1 -1
  317. package/src/rules/oas3/no-unused-components.ts +2 -2
  318. package/src/rules/oas3/operation-4xx-problem-details-rfc7807.ts +2 -1
  319. package/src/rules/oas3/request-mime-type.ts +2 -1
  320. package/src/rules/oas3/response-contains-property.ts +3 -2
  321. package/src/rules/oas3/response-mime-type.ts +2 -1
  322. package/src/rules/oas3/spec-components-invalid-map-name.ts +3 -3
  323. package/src/rules/other/stats.ts +8 -6
  324. package/src/rules/spot/parameters-no-body-inside-in.ts +17 -0
  325. package/src/rules/utils.ts +41 -4
  326. package/src/types/arazzo.ts +257 -334
  327. package/src/types/asyncapi2.ts +4 -1
  328. package/src/types/asyncapi3.ts +3 -1
  329. package/src/types/json-schema-adapter.ts +2 -2
  330. package/src/types/oas3.ts +4 -4
  331. package/src/types/oas3_1.ts +3 -3
  332. package/src/types/redocly-yaml.ts +7 -4
  333. package/src/typings/arazzo.ts +169 -41
  334. package/src/typings/common.ts +1 -0
  335. package/src/typings/swagger.ts +2 -2
  336. package/src/visitors.ts +40 -1
  337. package/src/walk.ts +3 -3
  338. package/tsconfig.tsbuildinfo +1 -1
@@ -24,7 +24,7 @@ describe('Oas3 path-params-defined', () => {
24
24
  const results = await lintDocument({
25
25
  externalRefResolver: new BaseResolver(),
26
26
  document,
27
- config: await makeConfig({ 'path-params-defined': 'error' }),
27
+ config: await makeConfig({ rules: { 'path-params-defined': 'error' } }),
28
28
  });
29
29
 
30
30
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
@@ -52,7 +52,7 @@ describe('Oas3 path-params-defined', () => {
52
52
  const results = await lintDocument({
53
53
  externalRefResolver: new BaseResolver(),
54
54
  document,
55
- config: await makeConfig({ 'path-params-defined': 'error' }),
55
+ config: await makeConfig({ rules: { 'path-params-defined': 'error' } }),
56
56
  });
57
57
 
58
58
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
@@ -96,7 +96,7 @@ describe('Oas3 path-params-defined', () => {
96
96
  const results = await lintDocument({
97
97
  externalRefResolver: new BaseResolver(),
98
98
  document,
99
- config: await makeConfig({ 'path-params-defined': 'error' }),
99
+ config: await makeConfig({ rules: { 'path-params-defined': 'error' } }),
100
100
  });
101
101
 
102
102
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
@@ -150,7 +150,7 @@ describe('Oas3 path-params-defined', () => {
150
150
  const results = await lintDocument({
151
151
  externalRefResolver: new BaseResolver(),
152
152
  document,
153
- config: await makeConfig({ 'path-params-defined': 'error' }),
153
+ config: await makeConfig({ rules: { 'path-params-defined': 'error' } }),
154
154
  });
155
155
 
156
156
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
@@ -194,7 +194,7 @@ describe('Oas3 path-params-defined', () => {
194
194
  const results = await lintDocument({
195
195
  externalRefResolver: new BaseResolver(),
196
196
  document,
197
- config: await makeConfig({ 'path-params-defined': 'error' }),
197
+ config: await makeConfig({ rules: { 'path-params-defined': 'error' } }),
198
198
  });
199
199
 
200
200
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
@@ -22,7 +22,7 @@ describe('Oas3 paths-kebab-case', () => {
22
22
  const results = await lintDocument({
23
23
  externalRefResolver: new BaseResolver(),
24
24
  document,
25
- config: await makeConfig({ 'paths-kebab-case': 'error' }),
25
+ config: await makeConfig({ rules: { 'paths-kebab-case': 'error' } }),
26
26
  });
27
27
 
28
28
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
@@ -61,7 +61,7 @@ describe('Oas3 paths-kebab-case', () => {
61
61
  const results = await lintDocument({
62
62
  externalRefResolver: new BaseResolver(),
63
63
  document,
64
- config: await makeConfig({ 'paths-kebab-case': 'error' }),
64
+ config: await makeConfig({ rules: { 'paths-kebab-case': 'error' } }),
65
65
  });
66
66
 
67
67
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
@@ -99,8 +99,10 @@ describe('Oas3 paths-kebab-case', () => {
99
99
  externalRefResolver: new BaseResolver(),
100
100
  document,
101
101
  config: await makeConfig({
102
- 'paths-kebab-case': 'error',
103
- 'no-path-trailing-slash': 'off',
102
+ rules: {
103
+ 'paths-kebab-case': 'error',
104
+ 'no-path-trailing-slash': 'off',
105
+ },
104
106
  }),
105
107
  });
106
108
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
@@ -24,7 +24,7 @@ describe('Oas3 scalar-property-missing-example', () => {
24
24
  const results = await lintDocument({
25
25
  externalRefResolver: new BaseResolver(),
26
26
  document,
27
- config: await makeConfig({ 'scalar-property-missing-example': 'error' }),
27
+ config: await makeConfig({ rules: { 'scalar-property-missing-example': 'error' } }),
28
28
  });
29
29
 
30
30
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
@@ -68,7 +68,7 @@ describe('Oas3.1 scalar-property-missing-example', () => {
68
68
  const results = await lintDocument({
69
69
  externalRefResolver: new BaseResolver(),
70
70
  document,
71
- config: await makeConfig({ 'scalar-property-missing-example': 'error' }),
71
+ config: await makeConfig({ rules: { 'scalar-property-missing-example': 'error' } }),
72
72
  });
73
73
 
74
74
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
@@ -111,7 +111,7 @@ describe('Oas3.1 scalar-property-missing-example', () => {
111
111
  const results = await lintDocument({
112
112
  externalRefResolver: new BaseResolver(),
113
113
  document,
114
- config: await makeConfig({ 'scalar-property-missing-example': 'error' }),
114
+ config: await makeConfig({ rules: { 'scalar-property-missing-example': 'error' } }),
115
115
  });
116
116
 
117
117
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
@@ -140,7 +140,7 @@ describe('Oas3.1 scalar-property-missing-example', () => {
140
140
  const results = await lintDocument({
141
141
  externalRefResolver: new BaseResolver(),
142
142
  document,
143
- config: await makeConfig({ 'scalar-property-missing-example': 'error' }),
143
+ config: await makeConfig({ rules: { 'scalar-property-missing-example': 'error' } }),
144
144
  });
145
145
 
146
146
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
@@ -174,7 +174,7 @@ describe('Oas3.1 scalar-property-missing-example', () => {
174
174
  const results = await lintDocument({
175
175
  externalRefResolver: new BaseResolver(),
176
176
  document,
177
- config: await makeConfig({ 'scalar-property-missing-example': 'error' }),
177
+ config: await makeConfig({ rules: { 'scalar-property-missing-example': 'error' } }),
178
178
  });
179
179
 
180
180
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
@@ -199,7 +199,7 @@ describe('Oas3.1 scalar-property-missing-example', () => {
199
199
  const results = await lintDocument({
200
200
  externalRefResolver: new BaseResolver(),
201
201
  document,
202
- config: await makeConfig({ 'scalar-property-missing-example': 'error' }),
202
+ config: await makeConfig({ rules: { 'scalar-property-missing-example': 'error' } }),
203
203
  });
204
204
 
205
205
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
@@ -230,7 +230,7 @@ describe('Oas3.1 scalar-property-missing-example', () => {
230
230
  const results = await lintDocument({
231
231
  externalRefResolver: new BaseResolver(),
232
232
  document,
233
- config: await makeConfig({ 'scalar-property-missing-example': 'error' }),
233
+ config: await makeConfig({ rules: { 'scalar-property-missing-example': 'error' } }),
234
234
  });
235
235
 
236
236
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
@@ -256,7 +256,7 @@ describe('Oas3.1 scalar-property-missing-example', () => {
256
256
  const results = await lintDocument({
257
257
  externalRefResolver: new BaseResolver(),
258
258
  document,
259
- config: await makeConfig({ 'scalar-property-missing-example': 'error' }),
259
+ config: await makeConfig({ rules: { 'scalar-property-missing-example': 'error' } }),
260
260
  });
261
261
 
262
262
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
@@ -19,7 +19,7 @@ describe('Oas3 security-defined', () => {
19
19
  const results = await lintDocument({
20
20
  externalRefResolver: new BaseResolver(),
21
21
  document,
22
- config: await makeConfig({ 'security-defined': 'error' }),
22
+ config: await makeConfig({ rules: { 'security-defined': 'error' } }),
23
23
  });
24
24
 
25
25
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
@@ -53,7 +53,7 @@ describe('Oas3 security-defined', () => {
53
53
  const results = await lintDocument({
54
54
  externalRefResolver: new BaseResolver(),
55
55
  document,
56
- config: await makeConfig({ 'security-defined': 'error' }),
56
+ config: await makeConfig({ rules: { 'security-defined': 'error' } }),
57
57
  });
58
58
 
59
59
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
@@ -73,7 +73,7 @@ describe('Oas3 security-defined', () => {
73
73
  const results = await lintDocument({
74
74
  externalRefResolver: new BaseResolver(),
75
75
  document,
76
- config: await makeConfig({ 'security-defined': 'error' }),
76
+ config: await makeConfig({ rules: { 'security-defined': 'error' } }),
77
77
  });
78
78
 
79
79
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
@@ -112,7 +112,7 @@ describe('Oas3 security-defined', () => {
112
112
  const results = await lintDocument({
113
113
  externalRefResolver: new BaseResolver(),
114
114
  document,
115
- config: await makeConfig({ 'security-defined': 'error' }),
115
+ config: await makeConfig({ rules: { 'security-defined': 'error' } }),
116
116
  });
117
117
 
118
118
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
@@ -167,7 +167,7 @@ describe('Oas3 security-defined', () => {
167
167
  const results = await lintDocument({
168
168
  externalRefResolver: new BaseResolver(),
169
169
  document,
170
- config: await makeConfig({ 'security-defined': 'error' }),
170
+ config: await makeConfig({ rules: { 'security-defined': 'error' } }),
171
171
  });
172
172
 
173
173
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
@@ -190,7 +190,9 @@ describe('Oas3 security-defined', () => {
190
190
  externalRefResolver: new BaseResolver(),
191
191
  document,
192
192
  config: await makeConfig({
193
- 'security-defined': { exceptions: [{ path: '/excluded' }] },
193
+ rules: {
194
+ 'security-defined': { exceptions: [{ path: '/excluded' }] },
195
+ },
194
196
  }),
195
197
  });
196
198
 
@@ -217,7 +219,9 @@ describe('Oas3 security-defined', () => {
217
219
  externalRefResolver: new BaseResolver(),
218
220
  document,
219
221
  config: await makeConfig({
220
- 'security-defined': { exceptions: [{ path: '/partially-excluded', methods: ['GET'] }] },
222
+ rules: {
223
+ 'security-defined': { exceptions: [{ path: '/partially-excluded', methods: ['GET'] }] },
224
+ },
221
225
  }),
222
226
  });
223
227
 
@@ -254,7 +258,9 @@ describe('Oas3 security-defined', () => {
254
258
  const results = await lintDocument({
255
259
  externalRefResolver: new BaseResolver(),
256
260
  document,
257
- config: await makeConfig({ 'security-defined': { exceptions: [{ path: '/excluded' }] } }),
261
+ config: await makeConfig({
262
+ rules: { 'security-defined': { exceptions: [{ path: '/excluded' }] } },
263
+ }),
258
264
  });
259
265
 
260
266
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
@@ -33,7 +33,7 @@ describe('Oas3 spec-strict-refs', () => {
33
33
  const results = await lintDocument({
34
34
  externalRefResolver: new BaseResolver(),
35
35
  document,
36
- config: await makeConfig({ 'spec-strict-refs': 'error' }),
36
+ config: await makeConfig({ rules: { 'spec-strict-refs': 'error' } }),
37
37
  });
38
38
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
39
39
  [
@@ -25,7 +25,7 @@ describe('Oas3 spec', () => {
25
25
  const results = await lintDocument({
26
26
  externalRefResolver: new BaseResolver(),
27
27
  document,
28
- config: await makeConfig({ spec: 'error' }),
28
+ config: await makeConfig({ rules: { spec: 'error' } }),
29
29
  });
30
30
 
31
31
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
@@ -85,7 +85,7 @@ describe('Oas3 spec', () => {
85
85
  const results = await lintDocument({
86
86
  externalRefResolver: new BaseResolver(),
87
87
  document,
88
- config: await makeConfig({ spec: 'error' }),
88
+ config: await makeConfig({ rules: { spec: 'error' } }),
89
89
  });
90
90
 
91
91
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
@@ -157,7 +157,7 @@ describe('Oas3 spec', () => {
157
157
  const results = await lintDocument({
158
158
  externalRefResolver: new BaseResolver(),
159
159
  document,
160
- config: await makeConfig({ spec: 'error' }),
160
+ config: await makeConfig({ rules: { spec: 'error' } }),
161
161
  });
162
162
 
163
163
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
@@ -231,7 +231,7 @@ describe('Oas3 spec', () => {
231
231
  const results = await lintDocument({
232
232
  externalRefResolver: new BaseResolver(),
233
233
  document,
234
- config: await makeConfig({ spec: 'error' }),
234
+ config: await makeConfig({ rules: { spec: 'error' } }),
235
235
  });
236
236
 
237
237
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
@@ -322,7 +322,7 @@ describe('Oas3 spec', () => {
322
322
  const results = await lintDocument({
323
323
  externalRefResolver: new BaseResolver(),
324
324
  document,
325
- config: await makeConfig({ spec: 'error' }),
325
+ config: await makeConfig({ rules: { spec: 'error' } }),
326
326
  });
327
327
 
328
328
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
@@ -384,7 +384,7 @@ describe('Oas3.1 spec', () => {
384
384
  const results = await lintDocument({
385
385
  externalRefResolver: new BaseResolver(),
386
386
  document,
387
- config: await makeConfig({ spec: 'error' }),
387
+ config: await makeConfig({ rules: { spec: 'error' } }),
388
388
  });
389
389
 
390
390
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
@@ -432,7 +432,7 @@ describe('Oas3.1 spec', () => {
432
432
  const results = await lintDocument({
433
433
  externalRefResolver: new BaseResolver(),
434
434
  document,
435
- config: await makeConfig({ spec: 'error' }),
435
+ config: await makeConfig({ rules: { spec: 'error' } }),
436
436
  });
437
437
 
438
438
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
@@ -486,7 +486,7 @@ describe('Oas3.1 spec', () => {
486
486
  const results = await lintDocument({
487
487
  externalRefResolver: new BaseResolver(),
488
488
  document,
489
- config: await makeConfig({ spec: 'error' }),
489
+ config: await makeConfig({ rules: { spec: 'error' } }),
490
490
  });
491
491
 
492
492
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
@@ -557,7 +557,7 @@ describe('Oas3.1 spec', () => {
557
557
  const results = await lintDocument({
558
558
  externalRefResolver: new BaseResolver(),
559
559
  document,
560
- config: await makeConfig({ spec: 'error' }),
560
+ config: await makeConfig({ rules: { spec: 'error' } }),
561
561
  });
562
562
 
563
563
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
@@ -632,7 +632,7 @@ describe('Oas3.1 spec', () => {
632
632
  const results = await lintDocument({
633
633
  externalRefResolver: new BaseResolver(),
634
634
  document,
635
- config: await makeConfig({ spec: 'error' }),
635
+ config: await makeConfig({ rules: { spec: 'error' } }),
636
636
  });
637
637
 
638
638
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
@@ -19,7 +19,7 @@ describe('Oas3 tag-description', () => {
19
19
  const results = await lintDocument({
20
20
  externalRefResolver: new BaseResolver(),
21
21
  document,
22
- config: await makeConfig({ 'tag-description': 'error' }),
22
+ config: await makeConfig({ rules: { 'tag-description': 'error' } }),
23
23
  });
24
24
 
25
25
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
@@ -57,7 +57,7 @@ describe('Oas3 tag-description', () => {
57
57
  const results = await lintDocument({
58
58
  externalRefResolver: new BaseResolver(),
59
59
  document,
60
- config: await makeConfig({ 'tag-description': 'error' }),
60
+ config: await makeConfig({ rules: { 'tag-description': 'error' } }),
61
61
  });
62
62
 
63
63
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
@@ -19,7 +19,7 @@ describe('Oas3 tags-alphabetical', () => {
19
19
  const results = await lintDocument({
20
20
  externalRefResolver: new BaseResolver(),
21
21
  document,
22
- config: await makeConfig({ 'tags-alphabetical': 'error' }),
22
+ config: await makeConfig({ rules: { 'tags-alphabetical': 'error' } }),
23
23
  });
24
24
 
25
25
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
@@ -56,7 +56,7 @@ describe('Oas3 tags-alphabetical', () => {
56
56
  const results = await lintDocument({
57
57
  externalRefResolver: new BaseResolver(),
58
58
  document,
59
- config: await makeConfig({ 'tags-alphabetical': 'error' }),
59
+ config: await makeConfig({ rules: { 'tags-alphabetical': 'error' } }),
60
60
  });
61
61
 
62
62
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
@@ -77,7 +77,7 @@ describe('Oas3 tags-alphabetical', () => {
77
77
  const results = await lintDocument({
78
78
  externalRefResolver: new BaseResolver(),
79
79
  document,
80
- config: await makeConfig({ 'tags-alphabetical': 'error' }),
80
+ config: await makeConfig({ rules: { 'tags-alphabetical': 'error' } }),
81
81
  });
82
82
 
83
83
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
@@ -114,7 +114,9 @@ describe('Oas3 tags-alphabetical', () => {
114
114
  const results = await lintDocument({
115
115
  externalRefResolver: new BaseResolver(),
116
116
  document,
117
- config: await makeConfig({ 'tags-alphabetical': { severity: 'error', ignoreCase: true } }),
117
+ config: await makeConfig({
118
+ rules: { 'tags-alphabetical': { severity: 'error', ignoreCase: true } },
119
+ }),
118
120
  });
119
121
 
120
122
  expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
@@ -1,13 +1,9 @@
1
- import { AssertionContext, AssertResult, CustomFunction } from 'core/src/config/types';
2
- import { Location } from '../../../ref-utils';
3
1
  import { isPlainObject, isString as runOnValue, isTruthy } from '../../../utils';
4
- import {
5
- OrderOptions,
6
- OrderDirection,
7
- isOrdered,
8
- getIntersectionLength,
9
- regexFromString,
10
- } from './utils';
2
+ import { isOrdered, getIntersectionLength, regexFromString } from './utils';
3
+
4
+ import type { AssertionContext, AssertResult, CustomFunction } from '../../../config/types';
5
+ import type { Location } from '../../../ref-utils';
6
+ import type { OrderOptions, OrderDirection } from './utils';
11
7
 
12
8
  export type AssertionFnContext = AssertionContext & { baseLocation: Location; rawValue?: any };
13
9
 
@@ -1,8 +1,7 @@
1
- import { asserts } from './asserts';
2
1
  import { buildSubjectVisitor, buildVisitorObject } from './utils';
3
2
  import { isString } from '../../../utils';
4
3
 
5
- import type { AssertionFn } from './asserts';
4
+ import type { asserts, AssertionFn } from './asserts';
6
5
  import type {
7
6
  ArazzoVisitor,
8
7
  Async2Visitor,
@@ -1,7 +1,10 @@
1
- import { asserts, runOnKeysSet, runOnValuesSet, Asserts } from './asserts';
1
+ import { asserts, runOnKeysSet, runOnValuesSet } from './asserts';
2
2
  import { colorize } from '../../../logger';
3
3
  import { isRef } from '../../../ref-utils';
4
4
  import { isTruthy, keysOf, isString } from '../../../utils';
5
+
6
+ import type { UserContext } from 'core/src/walk';
7
+ import type { Asserts } from './asserts';
5
8
  import type { AssertionContext, AssertResult } from '../../../config';
6
9
  import type { Assertion, AssertionDefinition, AssertionLocators } from '.';
7
10
  import type {
@@ -10,7 +13,6 @@ import type {
10
13
  SkipFunctionContext,
11
14
  VisitFunction,
12
15
  } from '../../../visitors';
13
- import { UserContext } from 'core/src/walk';
14
16
 
15
17
  export type OrderDirection = 'asc' | 'desc';
16
18
 
@@ -1,6 +1,7 @@
1
- import { Oas3Rule, Oas2Rule } from '../../visitors';
2
1
  import { missingRequiredField } from '../utils';
3
2
 
3
+ import type { Oas3Rule, Oas2Rule } from '../../visitors';
4
+
4
5
  export const InfoContact: Oas3Rule | Oas2Rule = () => {
5
6
  return {
6
7
  Info(info, { report, location }) {
@@ -0,0 +1,24 @@
1
+ import { detectSpec } from '../../oas-types';
2
+ import { validateDefinedAndNonEmpty, validateOneOfDefinedAndNonEmpty } from '../utils';
3
+
4
+ import type { Oas3Rule, Oas2Rule, Async2Rule, Async3Rule } from '../../visitors';
5
+
6
+ export const InfoLicenseStrict: Oas2Rule | Oas3Rule | Async2Rule | Async3Rule = () => {
7
+ let specVersion: string | undefined;
8
+ return {
9
+ Root: {
10
+ enter(root: any) {
11
+ specVersion = detectSpec(root);
12
+ },
13
+ License: {
14
+ leave(license, ctx) {
15
+ if (specVersion === 'oas3_1') {
16
+ validateOneOfDefinedAndNonEmpty(['url', 'identifier'], license, ctx);
17
+ } else {
18
+ validateDefinedAndNonEmpty('url', license, ctx);
19
+ }
20
+ },
21
+ },
22
+ },
23
+ };
24
+ };
@@ -1,6 +1,7 @@
1
- import { Oas3Rule, Oas2Rule } from '../../visitors';
2
1
  import { validateDefinedAndNonEmpty } from '../utils';
3
2
 
3
+ import type { Oas3Rule, Oas2Rule } from '../../visitors';
4
+
4
5
  export const InfoLicenseUrl: Oas3Rule | Oas2Rule = () => {
5
6
  return {
6
7
  License(license, ctx) {
@@ -1,6 +1,7 @@
1
- import { Oas3Rule, Oas2Rule } from '../../visitors';
2
1
  import { missingRequiredField } from '../utils';
3
2
 
3
+ import type { Oas3Rule, Oas2Rule } from '../../visitors';
4
+
4
5
  export const InfoLicense: Oas3Rule | Oas2Rule = () => {
5
6
  return {
6
7
  Info(info, { report }) {
@@ -1,7 +1,7 @@
1
- import { Oas3Rule, Oas2Rule } from '../../visitors';
2
- import { UserContext } from '../../walk';
3
- import { Oas3Paths } from '../../typings/openapi';
4
- import { Oas2Paths } from '../../typings/swagger';
1
+ import type { Oas3Rule, Oas2Rule } from '../../visitors';
2
+ import type { UserContext } from '../../walk';
3
+ import type { Oas3Paths } from '../../typings/openapi';
4
+ import type { Oas2Paths } from '../../typings/swagger';
5
5
 
6
6
  export const NoAmbiguousPaths: Oas3Rule | Oas2Rule = () => {
7
7
  return {
@@ -1,8 +1,9 @@
1
- import { Oas3Rule, Oas2Rule } from '../../visitors';
2
1
  import { matchesJsonSchemaType, oasTypeOf } from '../utils';
3
- import { Oas2Schema } from '../../typings/swagger';
4
- import { Oas3Schema } from '../../typings/openapi';
5
- import { UserContext } from '../../walk';
2
+
3
+ import type { Oas3Rule, Oas2Rule } from '../../visitors';
4
+ import type { Oas2Schema } from '../../typings/swagger';
5
+ import type { Oas3Schema } from '../../typings/openapi';
6
+ import type { UserContext } from '../../walk';
6
7
 
7
8
  export const NoEnumTypeMismatch: Oas3Rule | Oas2Rule = () => {
8
9
  return {
@@ -1,9 +1,10 @@
1
- import { Oas3Rule, Oas2Rule } from '../../visitors';
2
- import { Oas2PathItem } from '../../typings/swagger';
3
- import { Oas3PathItem } from '../../typings/openapi';
4
- import { UserContext } from '../../walk';
5
1
  import { isPathParameter, splitCamelCaseIntoWords } from '../../utils';
6
2
 
3
+ import type { Oas3Rule, Oas2Rule } from '../../visitors';
4
+ import type { Oas2PathItem } from '../../typings/swagger';
5
+ import type { Oas3PathItem } from '../../typings/openapi';
6
+ import type { UserContext } from '../../walk';
7
+
7
8
  const httpMethods = ['get', 'head', 'post', 'put', 'patch', 'delete', 'options', 'trace'];
8
9
 
9
10
  export const NoHttpVerbsInPaths: Oas3Rule | Oas2Rule = ({ splitIntoWords }) => {
@@ -1,7 +1,7 @@
1
- import { Oas3Rule, Oas2Rule } from '../../visitors';
2
- import { UserContext } from '../../walk';
3
- import { Oas3Paths } from '../../typings/openapi';
4
- import { Oas2Paths } from '../../typings/swagger';
1
+ import type { Oas3Rule, Oas2Rule } from '../../visitors';
2
+ import type { UserContext } from '../../walk';
3
+ import type { Oas3Paths } from '../../typings/openapi';
4
+ import type { Oas2Paths } from '../../typings/swagger';
5
5
 
6
6
  export const NoIdenticalPaths: Oas3Rule | Oas2Rule = () => {
7
7
  return {
@@ -1,7 +1,8 @@
1
- import { UserContext } from '../../walk';
2
- import { Oas3Parameter } from '../../typings/openapi';
3
1
  import { getAdditionalPropertiesOption, validateExample } from '../utils';
4
2
 
3
+ import type { UserContext } from '../../walk';
4
+ import type { Oas3Parameter } from '../../typings/openapi';
5
+
5
6
  export const NoInvalidParameterExamples: any = (opts: any) => {
6
7
  const allowAdditionalProperties = getAdditionalPropertiesOption(opts) ?? false;
7
8
  return {
@@ -1,5 +1,5 @@
1
- import { Oas3Rule, Oas2Rule } from '../../visitors';
2
- import { UserContext } from '../../walk';
1
+ import type { Oas3Rule, Oas2Rule } from '../../visitors';
2
+ import type { UserContext } from '../../walk';
3
3
 
4
4
  export const NoPathTrailingSlash: Oas3Rule | Oas2Rule = () => {
5
5
  return {
@@ -1,9 +1,10 @@
1
- import { Oas2Rule, Oas3Rule } from '../../visitors';
2
- import { Oas3Schema, Oas3_1Schema } from '../../typings/openapi';
3
- import { Oas2Schema } from 'core/src/typings/swagger';
4
- import { UserContext } from 'core/src/walk';
5
1
  import { isRef } from '../../ref-utils';
6
2
 
3
+ import type { Oas2Rule, Oas3Rule } from '../../visitors';
4
+ import type { Oas3Schema, Oas3_1Schema } from '../../typings/openapi';
5
+ import type { Oas2Schema } from 'core/src/typings/swagger';
6
+ import type { UserContext } from 'core/src/walk';
7
+
7
8
  export const NoRequiredSchemaPropertiesUndefined: Oas3Rule | Oas2Rule = () => {
8
9
  return {
9
10
  Schema: {
@@ -1,7 +1,8 @@
1
- import { Oas3Rule, Oas2Rule } from '../../visitors';
2
- import { UserContext } from '../../walk';
3
1
  import { validateResponseCodes } from '../utils';
4
2
 
3
+ import type { Oas3Rule, Oas2Rule } from '../../visitors';
4
+ import type { UserContext } from '../../walk';
5
+
5
6
  export const Operation2xxResponse: Oas3Rule | Oas2Rule = ({ validateWebhooks }) => {
6
7
  return {
7
8
  Paths: {
@@ -1,7 +1,8 @@
1
- import { Oas3Rule, Oas2Rule } from '../../visitors';
2
- import { UserContext } from '../../walk';
3
1
  import { validateResponseCodes } from '../utils';
4
2
 
3
+ import type { Oas3Rule, Oas2Rule } from '../../visitors';
4
+ import type { UserContext } from '../../walk';
5
+
5
6
  export const Operation4xxResponse: Oas3Rule | Oas2Rule = ({ validateWebhooks }) => {
6
7
  return {
7
8
  Paths: {
@@ -1,8 +1,9 @@
1
- import { Oas3Rule, Oas2Rule } from '../../visitors';
2
1
  import { validateDefinedAndNonEmpty } from '../utils';
3
- import { UserContext } from '../../walk';
4
- import { Oas2Operation } from '../../typings/swagger';
5
- import { Oas3Operation } from '../../typings/openapi';
2
+
3
+ import type { Oas3Rule, Oas2Rule } from '../../visitors';
4
+ import type { UserContext } from '../../walk';
5
+ import type { Oas2Operation } from '../../typings/swagger';
6
+ import type { Oas3Operation } from '../../typings/openapi';
6
7
 
7
8
  export const OperationDescription: Oas3Rule | Oas2Rule = () => {
8
9
  return {
@@ -1,7 +1,7 @@
1
- import { Oas3Rule, Oas2Rule } from '../../visitors';
2
- import { Oas2Operation } from '../../typings/swagger';
3
- import { Oas3Operation } from '../../typings/openapi';
4
- import { UserContext } from '../../walk';
1
+ import type { Oas3Rule, Oas2Rule } from '../../visitors';
2
+ import type { Oas2Operation } from '../../typings/swagger';
3
+ import type { Oas3Operation } from '../../typings/openapi';
4
+ import type { UserContext } from '../../walk';
5
5
 
6
6
  export const OperationIdUnique: Oas3Rule | Oas2Rule = () => {
7
7
  const seenOperations = new Set();
@@ -1,8 +1,9 @@
1
- import { Oas3Rule, Oas2Rule } from '../../visitors';
2
- import { Oas2Operation } from '../../typings/swagger';
3
- import { Oas3Operation } from '../../typings/openapi';
4
- import { UserContext } from '../../walk';
1
+ import type { Oas3Rule, Oas2Rule } from '../../visitors';
2
+ import type { Oas2Operation } from '../../typings/swagger';
3
+ import type { Oas3Operation } from '../../typings/openapi';
4
+ import type { UserContext } from '../../walk';
5
5
 
6
+ // eslint-disable-next-line no-useless-escape
6
7
  const validUrlSymbols = /^[A-Za-z0-9-._~:/?#\[\]@!\$&'()*+,;=]*$/;
7
8
 
8
9
  export const OperationIdUrlSafe: Oas3Rule | Oas2Rule = () => {