@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
@@ -6,13 +6,15 @@ import {
6
6
  showWarningForDeprecatedField,
7
7
  } from '../utils';
8
8
  import { Config } from './config';
9
+ import { logger, colorize } from '../logger';
10
+
9
11
  import type {
10
12
  Api,
11
13
  DeprecatedInApi,
12
14
  DeprecatedInRawConfig,
15
+ ImportedPlugin,
13
16
  FlatApi,
14
17
  FlatRawConfig,
15
- Plugin,
16
18
  RawConfig,
17
19
  RawResolveConfig,
18
20
  ResolveConfig,
@@ -20,8 +22,9 @@ import type {
20
22
  RulesFields,
21
23
  StyleguideRawConfig,
22
24
  ThemeConfig,
25
+ Plugin,
26
+ PluginCreator,
23
27
  } from './types';
24
- import { logger, colorize } from '../logger';
25
28
 
26
29
  export function parsePresetName(presetName: string): { pluginId: string; configName: string } {
27
30
  if (presetName.indexOf('/') > -1) {
@@ -56,6 +59,7 @@ function extractFlatConfig<
56
59
  oas3_0Rules,
57
60
  oas3_1Rules,
58
61
  async2Rules,
62
+ async3Rules,
59
63
  arazzoRules,
60
64
 
61
65
  preprocessors,
@@ -63,6 +67,7 @@ function extractFlatConfig<
63
67
  oas3_0Preprocessors,
64
68
  oas3_1Preprocessors,
65
69
  async2Preprocessors,
70
+ async3Preprocessors,
66
71
  arazzoPreprocessors,
67
72
 
68
73
  decorators,
@@ -70,6 +75,7 @@ function extractFlatConfig<
70
75
  oas3_0Decorators,
71
76
  oas3_1Decorators,
72
77
  async2Decorators,
78
+ async3Decorators,
73
79
  arazzoDecorators,
74
80
 
75
81
  ...rawConfigRest
@@ -86,6 +92,7 @@ function extractFlatConfig<
86
92
  oas3_0Rules,
87
93
  oas3_1Rules,
88
94
  async2Rules,
95
+ async3Rules,
89
96
  arazzoRules,
90
97
 
91
98
  preprocessors,
@@ -93,6 +100,7 @@ function extractFlatConfig<
93
100
  oas3_0Preprocessors,
94
101
  oas3_1Preprocessors,
95
102
  async2Preprocessors,
103
+ async3Preprocessors,
96
104
  arazzoPreprocessors,
97
105
 
98
106
  decorators,
@@ -100,6 +108,7 @@ function extractFlatConfig<
100
108
  oas3_0Decorators,
101
109
  oas3_1Decorators,
102
110
  async2Decorators,
111
+ async3Decorators,
103
112
  arazzoDecorators,
104
113
 
105
114
  doNotResolveExamples: rawConfigRest.resolve?.doNotResolveExamples,
@@ -158,6 +167,7 @@ export function mergeExtends(rulesConfList: ResolvedStyleguideConfig[]) {
158
167
  oas3_0Rules: {},
159
168
  oas3_1Rules: {},
160
169
  async2Rules: {},
170
+ async3Rules: {},
161
171
  arazzoRules: {},
162
172
 
163
173
  preprocessors: {},
@@ -165,6 +175,7 @@ export function mergeExtends(rulesConfList: ResolvedStyleguideConfig[]) {
165
175
  oas3_0Preprocessors: {},
166
176
  oas3_1Preprocessors: {},
167
177
  async2Preprocessors: {},
178
+ async3Preprocessors: {},
168
179
  arazzoPreprocessors: {},
169
180
 
170
181
  decorators: {},
@@ -172,6 +183,7 @@ export function mergeExtends(rulesConfList: ResolvedStyleguideConfig[]) {
172
183
  oas3_0Decorators: {},
173
184
  oas3_1Decorators: {},
174
185
  async2Decorators: {},
186
+ async3Decorators: {},
175
187
  arazzoDecorators: {},
176
188
 
177
189
  plugins: [],
@@ -195,6 +207,8 @@ export function mergeExtends(rulesConfList: ResolvedStyleguideConfig[]) {
195
207
  assignExisting(result.oas3_1Rules, rulesConf.rules || {});
196
208
  Object.assign(result.async2Rules, rulesConf.async2Rules);
197
209
  assignExisting(result.async2Rules, rulesConf.rules || {});
210
+ Object.assign(result.async3Rules, rulesConf.async3Rules);
211
+ assignExisting(result.async3Rules, rulesConf.rules || {});
198
212
  Object.assign(result.arazzoRules, rulesConf.arazzoRules);
199
213
  assignExisting(result.arazzoRules, rulesConf.rules || {});
200
214
 
@@ -207,6 +221,8 @@ export function mergeExtends(rulesConfList: ResolvedStyleguideConfig[]) {
207
221
  assignExisting(result.oas3_1Preprocessors, rulesConf.preprocessors || {});
208
222
  Object.assign(result.async2Preprocessors, rulesConf.async2Preprocessors);
209
223
  assignExisting(result.async2Preprocessors, rulesConf.preprocessors || {});
224
+ Object.assign(result.async3Preprocessors, rulesConf.async3Preprocessors);
225
+ assignExisting(result.async3Preprocessors, rulesConf.preprocessors || {});
210
226
  Object.assign(result.arazzoPreprocessors, rulesConf.arazzoPreprocessors);
211
227
  assignExisting(result.arazzoPreprocessors, rulesConf.preprocessors || {});
212
228
 
@@ -219,6 +235,8 @@ export function mergeExtends(rulesConfList: ResolvedStyleguideConfig[]) {
219
235
  assignExisting(result.oas3_1Decorators, rulesConf.decorators || {});
220
236
  Object.assign(result.async2Decorators, rulesConf.async2Decorators);
221
237
  assignExisting(result.async2Decorators, rulesConf.decorators || {});
238
+ Object.assign(result.async3Decorators, rulesConf.async3Decorators);
239
+ assignExisting(result.async3Decorators, rulesConf.decorators || {});
222
240
  Object.assign(result.arazzoDecorators, rulesConf.arazzoDecorators);
223
241
  assignExisting(result.arazzoDecorators, rulesConf.decorators || {});
224
242
 
@@ -383,3 +401,11 @@ export class ConfigValidationError extends Error {}
383
401
  export function deepCloneMapWithJSON<K, V>(originalMap: Map<K, V>): Map<K, V> {
384
402
  return new Map(JSON.parse(JSON.stringify([...originalMap])));
385
403
  }
404
+
405
+ export function isDeprecatedPluginFormat(plugin: ImportedPlugin | undefined): plugin is Plugin {
406
+ return plugin !== undefined && typeof plugin === 'object' && 'id' in plugin;
407
+ }
408
+
409
+ export function isCommonJsPlugin(plugin: ImportedPlugin | undefined): plugin is PluginCreator {
410
+ return typeof plugin === 'function';
411
+ }
@@ -56,7 +56,10 @@ describe('oas3 filter-in', () => {
56
56
  const { bundle: res } = await bundleDocument({
57
57
  document: testDocument,
58
58
  externalRefResolver: new BaseResolver(),
59
- config: await makeConfig({}, { 'filter-in': { value: 'public', property: 'x-access' } }),
59
+ config: await makeConfig({
60
+ rules: {},
61
+ decorators: { 'filter-in': { value: 'public', property: 'x-access' } },
62
+ }),
60
63
  });
61
64
  expect(res.parsed).toMatchInlineSnapshot(`
62
65
  openapi: 3.0.0
@@ -76,16 +79,16 @@ describe('oas3 filter-in', () => {
76
79
  const { bundle: res } = await bundleDocument({
77
80
  document: inputDoc,
78
81
  externalRefResolver: new BaseResolver(),
79
- config: await makeConfig(
80
- {},
81
- {
82
+ config: await makeConfig({
83
+ rules: {},
84
+ decorators: {
82
85
  'filter-in': {
83
86
  property: 'x-audience',
84
87
  value: ['Public', 'Protected'],
85
88
  matchStrategy: 'all',
86
89
  },
87
- }
88
- ),
90
+ },
91
+ }),
89
92
  });
90
93
  expect(res.parsed).toMatchInlineSnapshot(`
91
94
  openapi: 3.0.0
@@ -130,16 +133,16 @@ describe('oas3 filter-in', () => {
130
133
  const { bundle: res } = await bundleDocument({
131
134
  document: testDoc,
132
135
  externalRefResolver: new BaseResolver(),
133
- config: await makeConfig(
134
- {},
135
- {
136
+ config: await makeConfig({
137
+ rules: {},
138
+ decorators: {
136
139
  'filter-in': {
137
140
  property: 'x-audience',
138
141
  value: ['Public', 'Global'],
139
142
  matchStrategy: 'any',
140
143
  },
141
- }
142
- ),
144
+ },
145
+ }),
143
146
  });
144
147
  expect(res.parsed).toMatchInlineSnapshot(`
145
148
  openapi: 3.0.0
@@ -171,16 +174,16 @@ describe('oas3 filter-in', () => {
171
174
  const { bundle: res } = await bundleDocument({
172
175
  document: inputDoc,
173
176
  externalRefResolver: new BaseResolver(),
174
- config: await makeConfig(
175
- {},
176
- {
177
+ config: await makeConfig({
178
+ rules: {},
179
+ decorators: {
177
180
  'filter-in': {
178
181
  property: 'x-audience',
179
182
  value: 'non-existing-audience',
180
183
  matchStrategy: 'any',
181
184
  },
182
- }
183
- ),
185
+ },
186
+ }),
184
187
  });
185
188
  expect(res.parsed).toMatchInlineSnapshot(`
186
189
  openapi: 3.0.0
@@ -220,16 +223,16 @@ describe('oas3 filter-in', () => {
220
223
  const { bundle: res } = await bundleDocument({
221
224
  document: testDoc,
222
225
  externalRefResolver: new BaseResolver(),
223
- config: await makeConfig(
224
- {},
225
- {
226
+ config: await makeConfig({
227
+ rules: {},
228
+ decorators: {
226
229
  'filter-in': {
227
230
  property: 'x-audience',
228
231
  value: ['Public', 'Global'],
229
232
  matchStrategy: 'any',
230
233
  },
231
- }
232
- ),
234
+ },
235
+ }),
233
236
  });
234
237
  expect(res.parsed).toMatchInlineSnapshot(`
235
238
  openapi: 3.0.0
@@ -279,16 +282,16 @@ describe('oas2 filter-in', () => {
279
282
  const { bundle: res } = await bundleDocument({
280
283
  document: testDoc,
281
284
  externalRefResolver: new BaseResolver(),
282
- config: await makeConfig(
283
- {},
284
- {
285
+ config: await makeConfig({
286
+ rules: {},
287
+ decorators: {
285
288
  'filter-in': {
286
289
  property: 'x-access',
287
290
  value: ['public', 'global'],
288
291
  matchStrategy: 'any',
289
292
  },
290
- }
291
- ),
293
+ },
294
+ }),
292
295
  });
293
296
  expect(res.parsed).toMatchInlineSnapshot(`
294
297
  swagger: '2.0'
@@ -52,7 +52,10 @@ describe('oas3 filter-out', () => {
52
52
  const { bundle: res } = await bundleDocument({
53
53
  document: testDocument,
54
54
  externalRefResolver: new BaseResolver(),
55
- config: await makeConfig({}, { 'filter-out': { property: 'x-access', value: 'private' } }),
55
+ config: await makeConfig({
56
+ rules: {},
57
+ decorators: { 'filter-out': { property: 'x-access', value: 'private' } },
58
+ }),
56
59
  });
57
60
  expect(res.parsed).toMatchInlineSnapshot(`
58
61
  openapi: 3.0.0
@@ -68,16 +71,16 @@ describe('oas3 filter-out', () => {
68
71
  const { bundle: res } = await bundleDocument({
69
72
  document: inputDoc,
70
73
  externalRefResolver: new BaseResolver(),
71
- config: await makeConfig(
72
- {},
73
- {
74
+ config: await makeConfig({
75
+ rules: {},
76
+ decorators: {
74
77
  'filter-out': {
75
78
  property: 'x-audience',
76
79
  value: ['Private', 'Protected'],
77
80
  matchStrategy: 'all',
78
81
  },
79
- }
80
- ),
82
+ },
83
+ }),
81
84
  });
82
85
  expect(res.parsed).toMatchInlineSnapshot(`
83
86
  openapi: 3.0.0
@@ -99,16 +102,16 @@ describe('oas3 filter-out', () => {
99
102
  const { bundle: res } = await bundleDocument({
100
103
  document: inputDoc,
101
104
  externalRefResolver: new BaseResolver(),
102
- config: await makeConfig(
103
- {},
104
- {
105
+ config: await makeConfig({
106
+ rules: {},
107
+ decorators: {
105
108
  'filter-out': {
106
109
  property: 'x-audience',
107
110
  value: ['Private', 'Protected'],
108
111
  matchStrategy: 'any',
109
112
  },
110
- }
111
- ),
113
+ },
114
+ }),
112
115
  });
113
116
  expect(res.parsed).toMatchInlineSnapshot(`
114
117
  openapi: 3.0.0
@@ -138,16 +141,16 @@ describe('oas3 filter-out', () => {
138
141
  const { bundle: res } = await bundleDocument({
139
142
  document: testDoc,
140
143
  externalRefResolver: new BaseResolver(),
141
- config: await makeConfig(
142
- {},
143
- {
144
+ config: await makeConfig({
145
+ rules: {},
146
+ decorators: {
144
147
  'filter-out': {
145
148
  property: 'x-access',
146
149
  value: 'private',
147
150
  matchStrategy: 'any',
148
151
  },
149
- }
150
- ),
152
+ },
153
+ }),
151
154
  });
152
155
  expect(res.parsed).toMatchInlineSnapshot(`
153
156
  openapi: 3.0.0
@@ -192,7 +195,10 @@ describe('oas3 filter-out', () => {
192
195
  const { bundle: res } = await bundleDocument({
193
196
  document: testDocument,
194
197
  externalRefResolver: new BaseResolver(),
195
- config: await makeConfig({}, { 'filter-out': { property: 'x-prop', value: false } }),
198
+ config: await makeConfig({
199
+ rules: {},
200
+ decorators: { 'filter-out': { property: 'x-prop', value: false } },
201
+ }),
196
202
  });
197
203
  expect(res.parsed).toMatchInlineSnapshot(`
198
204
  openapi: 3.0.0
@@ -244,7 +250,10 @@ describe('oas3 filter-out', () => {
244
250
  const { bundle: res } = await bundleDocument({
245
251
  document: testDocument,
246
252
  externalRefResolver: new BaseResolver(),
247
- config: await makeConfig({}, { 'filter-out': { property: 'x-prop', value: null } }),
253
+ config: await makeConfig({
254
+ rules: {},
255
+ decorators: { 'filter-out': { property: 'x-prop', value: null } },
256
+ }),
248
257
  });
249
258
  expect(res.parsed).toMatchInlineSnapshot(`
250
259
  openapi: 3.0.0
@@ -305,16 +314,16 @@ describe('oas2 filter-out', () => {
305
314
  const { bundle: res } = await bundleDocument({
306
315
  document: testDoc,
307
316
  externalRefResolver: new BaseResolver(),
308
- config: await makeConfig(
309
- {},
310
- {
317
+ config: await makeConfig({
318
+ rules: {},
319
+ decorators: {
311
320
  'filter-out': {
312
321
  property: 'x-access',
313
322
  value: ['private', 'protected'],
314
323
  matchStrategy: 'any',
315
324
  },
316
- }
317
- ),
325
+ },
326
+ }),
318
327
  });
319
328
  expect(res.parsed).toMatchInlineSnapshot(`
320
329
  swagger: '2.0'
@@ -28,9 +28,9 @@ describe('oas3 media-type-examples-override', () => {
28
28
  const { bundle: res } = await bundleDocument({
29
29
  document: testDocument,
30
30
  externalRefResolver: new BaseResolver(),
31
- config: await makeConfig(
32
- {},
33
- {
31
+ config: await makeConfig({
32
+ rules: {},
33
+ decorators: {
34
34
  'media-type-examples-override': {
35
35
  operationIds: {
36
36
  getUserById: {
@@ -43,8 +43,8 @@ describe('oas3 media-type-examples-override', () => {
43
43
  },
44
44
  },
45
45
  },
46
- }
47
- ),
46
+ },
47
+ }),
48
48
  });
49
49
 
50
50
  expect(res.parsed).toMatchInlineSnapshot(`
@@ -88,9 +88,9 @@ describe('oas3 media-type-examples-override', () => {
88
88
  const { bundle: res } = await bundleDocument({
89
89
  document: testDocument,
90
90
  externalRefResolver: new BaseResolver(),
91
- config: await makeConfig(
92
- {},
93
- {
91
+ config: await makeConfig({
92
+ rules: {},
93
+ decorators: {
94
94
  'media-type-examples-override': {
95
95
  operationIds: {
96
96
  getUserById: {
@@ -101,8 +101,8 @@ describe('oas3 media-type-examples-override', () => {
101
101
  },
102
102
  },
103
103
  },
104
- }
105
- ),
104
+ },
105
+ }),
106
106
  });
107
107
 
108
108
  expect(res.parsed).toMatchInlineSnapshot(`
@@ -153,9 +153,9 @@ describe('oas3 media-type-examples-override', () => {
153
153
  const { bundle: res } = await bundleDocument({
154
154
  document: testDocument,
155
155
  externalRefResolver: new BaseResolver(),
156
- config: await makeConfig(
157
- {},
158
- {
156
+ config: await makeConfig({
157
+ rules: {},
158
+ decorators: {
159
159
  'media-type-examples-override': {
160
160
  operationIds: {
161
161
  getUserById: {
@@ -176,8 +176,8 @@ describe('oas3 media-type-examples-override', () => {
176
176
  },
177
177
  },
178
178
  },
179
- }
180
- ),
179
+ },
180
+ }),
181
181
  });
182
182
 
183
183
  expect(res.parsed).toMatchInlineSnapshot(`
@@ -245,9 +245,9 @@ describe('oas3 media-type-examples-override', () => {
245
245
  const { bundle: res } = await bundleDocument({
246
246
  document: testDocument,
247
247
  externalRefResolver: new BaseResolver(),
248
- config: await makeConfig(
249
- {},
250
- {
248
+ config: await makeConfig({
249
+ rules: {},
250
+ decorators: {
251
251
  'media-type-examples-override': {
252
252
  operationIds: {
253
253
  getUserById: {
@@ -264,8 +264,8 @@ describe('oas3 media-type-examples-override', () => {
264
264
  },
265
265
  },
266
266
  },
267
- }
268
- ),
267
+ },
268
+ }),
269
269
  });
270
270
 
271
271
  expect(res.parsed).toMatchInlineSnapshot(`
@@ -345,9 +345,9 @@ describe('oas3 media-type-examples-override', () => {
345
345
  const { bundle: res } = await bundleDocument({
346
346
  document: testDocument,
347
347
  externalRefResolver: new BaseResolver(),
348
- config: await makeConfig(
349
- {},
350
- {
348
+ config: await makeConfig({
349
+ rules: {},
350
+ decorators: {
351
351
  'media-type-examples-override': {
352
352
  operationIds: {
353
353
  getUserById: {
@@ -364,8 +364,8 @@ describe('oas3 media-type-examples-override', () => {
364
364
  },
365
365
  },
366
366
  },
367
- }
368
- ),
367
+ },
368
+ }),
369
369
  });
370
370
 
371
371
  expect(res.parsed).toMatchInlineSnapshot(`
@@ -417,9 +417,9 @@ describe('oas3 media-type-examples-override', () => {
417
417
  const { bundle: res } = await bundleDocument({
418
418
  document: testDocument,
419
419
  externalRefResolver: new BaseResolver(),
420
- config: await makeConfig(
421
- {},
422
- {
420
+ config: await makeConfig({
421
+ rules: {},
422
+ decorators: {
423
423
  'media-type-examples-override': {
424
424
  operationIds: {
425
425
  getUserById: {
@@ -436,8 +436,8 @@ describe('oas3 media-type-examples-override', () => {
436
436
  },
437
437
  },
438
438
  },
439
- }
440
- ),
439
+ },
440
+ }),
441
441
  });
442
442
 
443
443
  expect(res.parsed).toMatchInlineSnapshot(`
@@ -489,9 +489,9 @@ describe('oas3 media-type-examples-override', () => {
489
489
  const { bundle: res } = await bundleDocument({
490
490
  document: testDocument,
491
491
  externalRefResolver: new BaseResolver(),
492
- config: await makeConfig(
493
- {},
494
- {
492
+ config: await makeConfig({
493
+ rules: {},
494
+ decorators: {
495
495
  'media-type-examples-override': {
496
496
  operationIds: {
497
497
  getUserById: {
@@ -504,8 +504,8 @@ describe('oas3 media-type-examples-override', () => {
504
504
  },
505
505
  },
506
506
  },
507
- }
508
- ),
507
+ },
508
+ }),
509
509
  });
510
510
 
511
511
  expect(res.parsed).toMatchInlineSnapshot(`
@@ -550,9 +550,9 @@ describe('oas3 media-type-examples-override', () => {
550
550
  const { bundle: res } = await bundleDocument({
551
551
  document: testDocument,
552
552
  externalRefResolver: new BaseResolver(),
553
- config: await makeConfig(
554
- {},
555
- {
553
+ config: await makeConfig({
554
+ rules: {},
555
+ decorators: {
556
556
  'media-type-examples-override': {
557
557
  operationIds: {
558
558
  getUserById: {
@@ -565,8 +565,8 @@ describe('oas3 media-type-examples-override', () => {
565
565
  },
566
566
  },
567
567
  },
568
- }
569
- ),
568
+ },
569
+ }),
570
570
  });
571
571
 
572
572
  expect(res.parsed).toMatchInlineSnapshot(`
@@ -618,9 +618,9 @@ describe('oas3 media-type-examples-override', () => {
618
618
  const { bundle: res } = await bundleDocument({
619
619
  document: testDocument,
620
620
  externalRefResolver: new BaseResolver(),
621
- config: await makeConfig(
622
- {},
623
- {
621
+ config: await makeConfig({
622
+ rules: {},
623
+ decorators: {
624
624
  'media-type-examples-override': {
625
625
  operationIds: {
626
626
  getUserById: {
@@ -633,8 +633,8 @@ describe('oas3 media-type-examples-override', () => {
633
633
  },
634
634
  },
635
635
  },
636
- }
637
- ),
636
+ },
637
+ }),
638
638
  });
639
639
 
640
640
  expect(res.parsed).toMatchInlineSnapshot(`
@@ -25,7 +25,10 @@ describe('oas3 remove-x-internal', () => {
25
25
  const { bundle: res } = await bundleDocument({
26
26
  document: testDocument,
27
27
  externalRefResolver: new BaseResolver(),
28
- config: await makeConfig({}, { 'remove-x-internal': { internalFlagProperty: 'removeit' } }),
28
+ config: await makeConfig({
29
+ rules: {},
30
+ decorators: { 'remove-x-internal': { internalFlagProperty: 'removeit' } },
31
+ }),
29
32
  });
30
33
  expect(res.parsed).toMatchInlineSnapshot(`
31
34
  openapi: 3.0.0
@@ -92,7 +95,7 @@ describe('oas3 remove-x-internal', () => {
92
95
  const { bundle: res } = await bundleDocument({
93
96
  document: testDoc,
94
97
  externalRefResolver: new BaseResolver(),
95
- config: await makeConfig({}, { 'remove-x-internal': 'on' }),
98
+ config: await makeConfig({ rules: {}, decorators: { 'remove-x-internal': 'on' } }),
96
99
  });
97
100
  expect(res.parsed).toMatchInlineSnapshot(`
98
101
  openapi: 3.1.0
@@ -165,7 +168,7 @@ describe('oas3 remove-x-internal', () => {
165
168
  const { bundle: res } = await bundleDocument({
166
169
  document: testDoc,
167
170
  externalRefResolver: new BaseResolver(),
168
- config: await makeConfig({}, { 'remove-x-internal': 'on' }),
171
+ config: await makeConfig({ rules: {}, decorators: { 'remove-x-internal': 'on' } }),
169
172
  });
170
173
 
171
174
  expect(res.parsed).toMatchInlineSnapshot(`
@@ -239,7 +242,7 @@ describe('oas3 remove-x-internal', () => {
239
242
  const { bundle: res } = await bundleDocument({
240
243
  document: testDoc,
241
244
  externalRefResolver: new BaseResolver(),
242
- config: await makeConfig({}, { 'remove-x-internal': 'on' }),
245
+ config: await makeConfig({ rules: {}, decorators: { 'remove-x-internal': 'on' } }),
243
246
  });
244
247
  expect(res.parsed).toMatchInlineSnapshot(`
245
248
  openapi: 3.0.1
@@ -302,7 +305,7 @@ describe('oas2 remove-x-internal', () => {
302
305
  const { bundle: res } = await bundleDocument({
303
306
  document: testDoc,
304
307
  externalRefResolver: new BaseResolver(),
305
- config: await makeConfig({}, { 'remove-x-internal': 'on' }),
308
+ config: await makeConfig({ rules: {}, decorators: { 'remove-x-internal': 'on' } }),
306
309
  });
307
310
  expect(res.parsed).toMatchInlineSnapshot(`
308
311
  swagger: '2.0'
@@ -0,0 +1 @@
1
+ export const decorators = {};
@@ -1,7 +1,8 @@
1
- import { UserContext } from '../../../walk';
2
1
  import { isRef } from '../../../ref-utils';
3
2
  import { isEmptyArray, isEmptyObject, isPlainObject } from '../../../utils';
4
3
 
4
+ import type { UserContext } from '../../../walk';
5
+
5
6
  export function filter(node: any, ctx: UserContext, criteria: (item: any) => boolean) {
6
7
  const { parent, key } = ctx;
7
8
  let didDelete = false;
@@ -1,6 +1,7 @@
1
- import { Oas2Decorator, Oas3Decorator } from '../../../visitors';
2
1
  import { checkIfMatchByStrategy, filter } from './filter-helper';
3
2
 
3
+ import type { Oas2Decorator, Oas3Decorator } from '../../../visitors';
4
+
4
5
  const DEFAULT_STRATEGY = 'any';
5
6
 
6
7
  export const FilterIn: Oas3Decorator | Oas2Decorator = ({ property, value, matchStrategy }) => {
@@ -1,6 +1,7 @@
1
- import { Oas2Decorator, Oas3Decorator } from '../../../visitors';
2
1
  import { checkIfMatchByStrategy, filter } from './filter-helper';
3
2
 
3
+ import type { Oas2Decorator, Oas3Decorator } from '../../../visitors';
4
+
4
5
  const DEFAULT_STRATEGY = 'any';
5
6
 
6
7
  export const FilterOut: Oas3Decorator | Oas2Decorator = ({ property, value, matchStrategy }) => {
@@ -1,6 +1,7 @@
1
- import { Oas3Decorator, Oas2Decorator } from '../../visitors';
2
1
  import { readFileAsStringSync } from '../../utils';
3
- import { UserContext } from '../../walk';
2
+
3
+ import type { Oas3Decorator, Oas2Decorator } from '../../visitors';
4
+ import type { UserContext } from '../../walk';
4
5
 
5
6
  export const InfoDescriptionOverride: Oas3Decorator | Oas2Decorator = ({ filePath }) => {
6
7
  return {
@@ -1,4 +1,4 @@
1
- import { Oas3Decorator, Oas2Decorator } from '../../visitors';
1
+ import type { Oas3Decorator, Oas2Decorator } from '../../visitors';
2
2
 
3
3
  export const InfoOverride: Oas3Decorator | Oas2Decorator = (newInfo) => {
4
4
  return {