@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
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ConfigTypes = exports.createConfigTypes = void 0;
3
+ exports.ConfigTypes = void 0;
4
+ exports.createConfigTypes = createConfigTypes;
4
5
  const config_1 = require("@redocly/config");
5
6
  const _1 = require(".");
6
7
  const utils_1 = require("../utils");
@@ -13,6 +14,7 @@ const builtInCommonOASRules = [
13
14
  'tag-description',
14
15
  'tags-alphabetical',
15
16
  'info-license-url',
17
+ 'info-license-strict',
16
18
  'info-license',
17
19
  'no-ambiguous-paths',
18
20
  'no-enum-type-mismatch',
@@ -74,18 +76,30 @@ const builtInOAS3Rules = [
74
76
  const builtInAsync2Rules = [
75
77
  'spec',
76
78
  'info-contact',
79
+ 'info-license-strict',
77
80
  'operation-operationId',
78
81
  'tag-description',
79
82
  'tags-alphabetical',
80
83
  'channels-kebab-case',
81
84
  'no-channel-trailing-slash',
82
85
  ];
83
- const builtInArazzoRules = ['spec'];
86
+ const builtInAsync3Rules = [
87
+ 'spec',
88
+ 'info-contact',
89
+ 'info-license-strict',
90
+ 'operation-operationId',
91
+ 'tag-description',
92
+ 'tags-alphabetical',
93
+ 'channels-kebab-case',
94
+ 'no-channel-trailing-slash',
95
+ ];
96
+ const builtInArazzoRules = ['spec', 'parameters-no-body-inside-in'];
84
97
  const builtInRules = [
85
98
  ...builtInCommonOASRules,
86
99
  ...builtInOAS2Rules,
87
100
  ...builtInOAS3Rules,
88
101
  ...builtInAsync2Rules,
102
+ ...builtInAsync3Rules,
89
103
  ...builtInArazzoRules,
90
104
  ];
91
105
  const oas2NodeTypesList = [
@@ -195,6 +209,7 @@ const oas3_1NodeTypesList = [
195
209
  'Root',
196
210
  'Schema',
197
211
  'SchemaProperties',
212
+ 'PatternProperties',
198
213
  'Info',
199
214
  'License',
200
215
  'Components',
@@ -231,35 +246,56 @@ const ConfigStyleguide = {
231
246
  arazzoDecorators: { type: 'object' },
232
247
  },
233
248
  };
234
- const createConfigRoot = (nodeTypes) => (Object.assign(Object.assign({}, nodeTypes.rootRedoclyConfigSchema), { properties: Object.assign(Object.assign(Object.assign({}, nodeTypes.rootRedoclyConfigSchema.properties), ConfigStyleguide.properties), { apis: 'ConfigApis', 'features.openapi': 'ConfigReferenceDocs', 'features.mockServer': 'ConfigMockServer', organization: { type: 'string' }, region: { enum: ['us', 'eu'] }, telemetry: { enum: ['on', 'off'] }, resolve: {
249
+ const createConfigRoot = (nodeTypes) => ({
250
+ ...nodeTypes.rootRedoclyConfigSchema,
251
+ properties: {
252
+ ...nodeTypes.rootRedoclyConfigSchema.properties,
253
+ ...ConfigStyleguide.properties,
254
+ apis: 'ConfigApis', // Override apis with internal format
255
+ 'features.openapi': 'ConfigReferenceDocs', // deprecated
256
+ 'features.mockServer': 'ConfigMockServer', // deprecated
257
+ organization: { type: 'string' },
258
+ region: { enum: ['us', 'eu'] },
259
+ telemetry: { enum: ['on', 'off'] },
260
+ resolve: {
235
261
  properties: {
236
262
  http: 'ConfigHTTP',
237
263
  doNotResolveExamples: { type: 'boolean' },
238
264
  },
239
- }, files: {
265
+ },
266
+ files: {
240
267
  type: 'array',
241
268
  items: {
242
269
  type: 'string',
243
270
  },
244
- } }) }));
271
+ },
272
+ },
273
+ });
245
274
  const ConfigApis = {
246
275
  properties: {},
247
276
  additionalProperties: 'ConfigApisProperties',
248
277
  };
249
- const createConfigApisProperties = (nodeTypes) => {
250
- var _a;
251
- return (Object.assign(Object.assign({}, nodeTypes['rootRedoclyConfigSchema.apis_additionalProperties']), { properties: Object.assign(Object.assign(Object.assign(Object.assign({}, (_a = nodeTypes['rootRedoclyConfigSchema.apis_additionalProperties']) === null || _a === void 0 ? void 0 : _a.properties), { labels: {
252
- type: 'array',
253
- items: {
254
- type: 'string',
255
- },
256
- } }), ConfigStyleguide.properties), { 'features.openapi': 'ConfigReferenceDocs', 'features.mockServer': 'ConfigMockServer', files: {
257
- type: 'array',
258
- items: {
259
- type: 'string',
260
- },
261
- } }) }));
262
- };
278
+ const createConfigApisProperties = (nodeTypes) => ({
279
+ ...nodeTypes['rootRedoclyConfigSchema.apis_additionalProperties'],
280
+ properties: {
281
+ ...nodeTypes['rootRedoclyConfigSchema.apis_additionalProperties']?.properties,
282
+ labels: {
283
+ type: 'array',
284
+ items: {
285
+ type: 'string',
286
+ },
287
+ },
288
+ ...ConfigStyleguide.properties,
289
+ 'features.openapi': 'ConfigReferenceDocs', // deprecated
290
+ 'features.mockServer': 'ConfigMockServer', // deprecated
291
+ files: {
292
+ type: 'array',
293
+ items: {
294
+ type: 'string',
295
+ },
296
+ },
297
+ },
298
+ });
263
299
  const ConfigHTTP = {
264
300
  properties: {
265
301
  headers: {
@@ -539,7 +575,14 @@ const FontConfig = {
539
575
  },
540
576
  };
541
577
  const ButtonsConfig = {
542
- properties: Object.assign(Object.assign({}, (0, utils_1.omitObjectProps)(FontConfig.properties, ['fontSize', 'lineHeight'])), { borderRadius: { type: 'string' }, hoverStyle: { type: 'string' }, boxShadow: { type: 'string' }, hoverBoxShadow: { type: 'string' }, sizes: 'Sizes' }),
578
+ properties: {
579
+ ...(0, utils_1.omitObjectProps)(FontConfig.properties, ['fontSize', 'lineHeight']),
580
+ borderRadius: { type: 'string' },
581
+ hoverStyle: { type: 'string' },
582
+ boxShadow: { type: 'string' },
583
+ hoverBoxShadow: { type: 'string' },
584
+ sizes: 'Sizes',
585
+ },
543
586
  };
544
587
  const BadgeFontConfig = {
545
588
  properties: (0, utils_1.pickObjectProps)(FontConfig.properties, ['fontSize', 'lineHeight']),
@@ -551,7 +594,12 @@ const BadgeSizes = {
551
594
  },
552
595
  };
553
596
  const HttpBadgesConfig = {
554
- properties: Object.assign(Object.assign({}, (0, utils_1.omitObjectProps)(FontConfig.properties, ['fontSize', 'lineHeight'])), { borderRadius: { type: 'string' }, color: { type: 'string' }, sizes: 'BadgeSizes' }),
597
+ properties: {
598
+ ...(0, utils_1.omitObjectProps)(FontConfig.properties, ['fontSize', 'lineHeight']),
599
+ borderRadius: { type: 'string' },
600
+ color: { type: 'string' },
601
+ sizes: 'BadgeSizes',
602
+ },
555
603
  };
556
604
  const LabelControls = {
557
605
  properties: {
@@ -650,13 +698,38 @@ const SpacingConfig = {
650
698
  },
651
699
  };
652
700
  const Sidebar = {
653
- properties: Object.assign(Object.assign({}, (0, utils_1.omitObjectProps)(FontConfig.properties, ['fontWeight', 'lineHeight'])), { activeBgColor: { type: 'string' }, activeTextColor: { type: 'string' }, backgroundColor: { type: 'string' }, borderRadius: { type: 'string' }, breakPath: { type: 'boolean' }, caretColor: { type: 'string' }, caretSize: { type: 'string' }, groupItems: 'GroupItemsConfig', level1items: 'Level1Items', rightLineColor: { type: 'string' }, separatorLabelColor: { type: 'string' }, showAtBreakpoint: { type: 'string' }, spacing: 'SpacingConfig', textColor: { type: 'string' }, width: { type: 'string' } }),
701
+ properties: {
702
+ ...(0, utils_1.omitObjectProps)(FontConfig.properties, ['fontWeight', 'lineHeight']),
703
+ activeBgColor: { type: 'string' },
704
+ activeTextColor: { type: 'string' },
705
+ backgroundColor: { type: 'string' },
706
+ borderRadius: { type: 'string' },
707
+ breakPath: { type: 'boolean' },
708
+ caretColor: { type: 'string' },
709
+ caretSize: { type: 'string' },
710
+ groupItems: 'GroupItemsConfig',
711
+ level1items: 'Level1Items',
712
+ rightLineColor: { type: 'string' },
713
+ separatorLabelColor: { type: 'string' },
714
+ showAtBreakpoint: { type: 'string' },
715
+ spacing: 'SpacingConfig',
716
+ textColor: { type: 'string' },
717
+ width: { type: 'string' },
718
+ },
654
719
  };
655
720
  const Heading = {
656
- properties: Object.assign(Object.assign({}, FontConfig.properties), { color: { type: 'string' }, transform: { type: 'string' } }),
721
+ properties: {
722
+ ...FontConfig.properties,
723
+ color: { type: 'string' },
724
+ transform: { type: 'string' },
725
+ },
657
726
  };
658
727
  const CodeConfig = {
659
- properties: Object.assign(Object.assign({}, FontConfig.properties), { backgroundColor: { type: 'string' }, color: { type: 'string' }, wordBreak: {
728
+ properties: {
729
+ ...FontConfig.properties,
730
+ backgroundColor: { type: 'string' },
731
+ color: { type: 'string' },
732
+ wordBreak: {
660
733
  enum: [
661
734
  'break-all',
662
735
  'break-word',
@@ -667,7 +740,9 @@ const CodeConfig = {
667
740
  'inherit',
668
741
  'initial',
669
742
  ],
670
- }, wrap: { type: 'boolean' } }),
743
+ },
744
+ wrap: { type: 'boolean' },
745
+ },
671
746
  };
672
747
  const HeadingsConfig = {
673
748
  properties: (0, utils_1.omitObjectProps)(FontConfig.properties, ['fontSize']),
@@ -682,10 +757,29 @@ const LinksConfig = {
682
757
  },
683
758
  };
684
759
  const Typography = {
685
- properties: Object.assign(Object.assign({ code: 'CodeConfig', fieldName: 'FontConfig' }, (0, utils_1.pickObjectProps)(FontConfig.properties, ['fontSize', 'fontFamily'])), { fontWeightBold: { type: 'string' }, fontWeightLight: { type: 'string' }, fontWeightRegular: { type: 'string' }, heading1: 'Heading', heading2: 'Heading', heading3: 'Heading', headings: 'HeadingsConfig', lineHeight: { type: 'string' }, links: 'LinksConfig', optimizeSpeed: { type: 'boolean' }, rightPanelHeading: 'Heading', smoothing: { enum: ['auto', 'none', 'antialiased', 'subpixel-antialiased', 'grayscale'] } }),
760
+ properties: {
761
+ code: 'CodeConfig',
762
+ fieldName: 'FontConfig',
763
+ ...(0, utils_1.pickObjectProps)(FontConfig.properties, ['fontSize', 'fontFamily']),
764
+ fontWeightBold: { type: 'string' },
765
+ fontWeightLight: { type: 'string' },
766
+ fontWeightRegular: { type: 'string' },
767
+ heading1: 'Heading',
768
+ heading2: 'Heading',
769
+ heading3: 'Heading',
770
+ headings: 'HeadingsConfig',
771
+ lineHeight: { type: 'string' },
772
+ links: 'LinksConfig',
773
+ optimizeSpeed: { type: 'boolean' },
774
+ rightPanelHeading: 'Heading',
775
+ smoothing: { enum: ['auto', 'none', 'antialiased', 'subpixel-antialiased', 'grayscale'] },
776
+ },
686
777
  };
687
778
  const TokenProps = {
688
- properties: Object.assign({ color: { type: 'string' } }, (0, utils_1.omitObjectProps)(FontConfig.properties, ['fontWeight'])),
779
+ properties: {
780
+ color: { type: 'string' },
781
+ ...(0, utils_1.omitObjectProps)(FontConfig.properties, ['fontWeight']),
782
+ },
689
783
  };
690
784
  const CodeBlock = {
691
785
  properties: {
@@ -754,7 +848,7 @@ const ConfigTheme = {
754
848
  sidebar: 'Sidebar',
755
849
  spacing: 'ThemeSpacing',
756
850
  typography: 'Typography',
757
- links: { properties: { color: { type: 'string' } } },
851
+ links: { properties: { color: { type: 'string' } } }, // deprecated
758
852
  codeSample: { properties: { backgroundColor: { type: 'string' } } }, // deprecated
759
853
  },
760
854
  };
@@ -812,7 +906,7 @@ const ConfigReferenceDocs = {
812
906
  maxDisplayedEnumValues: { type: 'number' },
813
907
  menuToggle: { type: 'boolean' },
814
908
  nativeScrollbars: { type: 'boolean' },
815
- noAutoAuth: { type: 'boolean' },
909
+ noAutoAuth: { type: 'boolean' }, // deprecated
816
910
  oAuth2RedirectURI: { type: 'string' },
817
911
  onDeepLinkClick: { type: 'object' },
818
912
  onlyRequiredInSamples: { type: 'boolean' },
@@ -822,7 +916,7 @@ const ConfigReferenceDocs = {
822
916
  requestInterceptor: { type: 'object' },
823
917
  requiredPropsFirst: { type: 'boolean' },
824
918
  routingBasePath: { type: 'string' },
825
- routingStrategy: { type: 'string' },
919
+ routingStrategy: { type: 'string' }, // deprecated
826
920
  samplesTabsMaxCount: { type: 'number' },
827
921
  schemaExpansionLevel: (value) => {
828
922
  if (typeof value === 'number') {
@@ -851,7 +945,7 @@ const ConfigReferenceDocs = {
851
945
  searchTagTitleBoost: { type: 'number' },
852
946
  sendXUserAgentInTryIt: { type: 'boolean' },
853
947
  showChangeLayoutButton: { type: 'boolean' },
854
- showConsole: { type: 'boolean' },
948
+ showConsole: { type: 'boolean' }, // deprecated
855
949
  showExtensions: (value) => {
856
950
  if (typeof value === 'boolean') {
857
951
  return { type: 'boolean' };
@@ -878,8 +972,8 @@ const ConfigReferenceDocs = {
878
972
  sortOperationsAlphabetically: { type: 'boolean' },
879
973
  sortPropsAlphabetically: { type: 'boolean' },
880
974
  sortTagsAlphabetically: { type: 'boolean' },
881
- suppressWarnings: { type: 'boolean' },
882
- unstable_externalDescription: { type: 'boolean' },
975
+ suppressWarnings: { type: 'boolean' }, // deprecated
976
+ unstable_externalDescription: { type: 'boolean' }, // deprecated
883
977
  unstable_ignoreMimeParameters: { type: 'boolean' },
884
978
  untrustedDefinition: { type: 'boolean' },
885
979
  mockServer: {
@@ -903,16 +997,21 @@ const ConfigMockServer = {
903
997
  };
904
998
  function createConfigTypes(extraSchemas, config) {
905
999
  const nodeNames = Object.values(oas_types_1.SpecVersion).flatMap((version) => {
906
- const types = (config === null || config === void 0 ? void 0 : config.styleguide)
1000
+ const types = config?.styleguide
907
1001
  ? config.styleguide.extendTypes((0, oas_types_1.getTypes)(version), version)
908
1002
  : (0, oas_types_1.getTypes)(version);
909
1003
  return Object.keys(types);
910
1004
  });
911
1005
  // Create types based on external schemas
912
1006
  const nodeTypes = (0, json_schema_adapter_1.getNodeTypesFromJSONSchema)('rootRedoclyConfigSchema', extraSchemas);
913
- return Object.assign(Object.assign(Object.assign({}, CoreConfigTypes), { ConfigRoot: createConfigRoot(nodeTypes), ConfigApisProperties: createConfigApisProperties(nodeTypes), AssertionDefinitionSubject: createAssertionDefinitionSubject(nodeNames) }), nodeTypes);
1007
+ return {
1008
+ ...CoreConfigTypes,
1009
+ ConfigRoot: createConfigRoot(nodeTypes), // This is the REAL config root type
1010
+ ConfigApisProperties: createConfigApisProperties(nodeTypes),
1011
+ AssertionDefinitionSubject: createAssertionDefinitionSubject(nodeNames),
1012
+ ...nodeTypes,
1013
+ };
914
1014
  }
915
- exports.createConfigTypes = createConfigTypes;
916
1015
  const CoreConfigTypes = {
917
1016
  Assert,
918
1017
  ConfigApis,
@@ -1,30 +1,148 @@
1
- import type { FromSchema } from 'json-schema-to-ts';
2
- import type { arazzoSchema, parameter, operationMethod, expectSchema, sourceDescriptionSchema, infoObject, requestBody, replacement, inherit, criteriaObject, step, workflow } from '../types/arazzo';
3
- export type ArazzoDefinition = FromSchema<typeof arazzoSchema>;
4
- export type OperationMethod = FromSchema<typeof operationMethod>;
5
- export type ResponseContext = {
6
- statusCode: number;
7
- body: any;
8
- headers: Headers;
9
- mimeType: string;
10
- } & Record<string, any>;
11
- export type Expect = FromSchema<typeof expectSchema>;
12
- export type SourceDescription = FromSchema<typeof sourceDescriptionSchema>;
13
- export type Parameter = FromSchema<typeof parameter>;
14
- export type InfoObject = FromSchema<typeof infoObject>;
15
- export type RequestBody = FromSchema<typeof requestBody>;
16
- export type Replacement = FromSchema<typeof replacement>;
17
- export type Inherit = FromSchema<typeof inherit>;
18
- export type CriteriaObject = FromSchema<typeof criteriaObject>;
19
- export type VerboseLog = {
20
- method: OperationMethod;
1
+ export interface InfoObject {
2
+ title: string;
3
+ description?: string;
4
+ summary?: string;
5
+ version: string;
6
+ }
7
+ export interface OpenAPISourceDescription {
8
+ name: string;
9
+ type: 'openapi';
10
+ url: string;
11
+ 'x-serverUrl'?: string;
12
+ }
13
+ export interface NoneSourceDescription {
14
+ name: string;
15
+ type: 'none';
16
+ 'x-serverUrl': string;
17
+ }
18
+ export interface ArazzoSourceDescription {
19
+ name: string;
20
+ type: 'arazzo';
21
+ url: string;
22
+ }
23
+ export type SourceDescription = OpenAPISourceDescription | NoneSourceDescription | ArazzoSourceDescription;
24
+ export interface Parameter {
25
+ in?: 'header' | 'query' | 'path' | 'cookie' | 'body';
26
+ name: string;
27
+ value: string | number | boolean;
28
+ reference?: string;
29
+ }
30
+ export interface ExtendedOperation {
21
31
  path: string;
22
- host: string;
23
- body?: any;
24
- headerParams?: Record<string, string>;
32
+ method: 'get' | 'post' | 'put' | 'delete' | 'patch';
33
+ sourceDescriptionName?: string;
34
+ serverUrl?: string;
35
+ }
36
+ export interface ExpectSchema {
25
37
  statusCode?: number;
26
- };
27
- export type Step = FromSchema<typeof step>;
28
- export type Workflow = FromSchema<typeof workflow> & {
38
+ mimeType?: string;
39
+ body?: any;
40
+ schema?: {
41
+ [key: string]: any;
42
+ };
43
+ }
44
+ export interface Replacement {
45
+ target: string;
46
+ value: string | object | any[];
47
+ }
48
+ export interface RequestBody {
49
+ contentType?: string;
50
+ payload: string | object | any[];
51
+ encoding?: string;
52
+ replacements?: Replacement[];
53
+ }
54
+ export interface CriteriaObject {
55
+ condition: string;
56
+ context?: string;
57
+ type?: 'regex' | 'jsonpath' | 'simple' | 'xpath' | {
58
+ type: 'jsonpath';
59
+ version: 'draft-goessner-dispatch-jsonpath-00';
60
+ } | {
61
+ type: 'xpath';
62
+ version: 'xpath-30' | 'xpath-20' | 'xpath-10';
63
+ };
64
+ }
65
+ export interface OnSuccessObject {
66
+ name: string;
67
+ type: 'goto' | 'end';
68
+ stepId?: string;
69
+ workflowId?: string;
70
+ criteria?: CriteriaObject[];
71
+ }
72
+ export interface OnFailureObject {
73
+ name: string;
74
+ type: 'goto' | 'retry' | 'end';
75
+ workflowId?: string;
76
+ stepId?: string;
77
+ retryAfter?: number;
78
+ retryLimit?: number;
79
+ criteria?: CriteriaObject[];
80
+ }
81
+ export interface Step {
82
+ stepId: string;
83
+ description?: string;
84
+ operationId?: string;
85
+ operationPath?: string;
86
+ workflowId?: string;
87
+ parameters?: Parameter[];
88
+ successCriteria?: CriteriaObject[];
89
+ onSuccess?: OnSuccessObject[];
90
+ onFailure?: OnFailureObject[];
91
+ outputs?: {
92
+ [key: string]: string | object | any[] | boolean | number;
93
+ };
94
+ 'x-inherit'?: 'auto' | 'none';
95
+ 'x-expect'?: ExpectSchema;
96
+ 'x-assert'?: string;
97
+ 'x-operation'?: ExtendedOperation;
98
+ requestBody?: RequestBody;
99
+ }
100
+ export interface Workflow {
101
+ workflowId: string;
102
+ summary?: string;
103
+ description?: string;
104
+ parameters?: Parameter[];
105
+ dependsOn?: string[];
106
+ inputs?: {
107
+ type: 'object' | 'array' | 'string' | 'number' | 'integer' | 'boolean' | 'null';
108
+ properties?: {
109
+ [key: string]: any;
110
+ };
111
+ required?: string[];
112
+ items?: {
113
+ [key: string]: any;
114
+ };
115
+ };
116
+ outputs?: {
117
+ [key: string]: string;
118
+ };
29
119
  steps: Step[];
30
- };
120
+ successActions?: OnSuccessObject[];
121
+ failureActions?: OnFailureObject[];
122
+ }
123
+ export interface ArazzoDefinition {
124
+ arazzo: '1.0.0';
125
+ info: InfoObject;
126
+ sourceDescriptions: SourceDescription[];
127
+ 'x-parameters'?: Parameter[];
128
+ workflows: Workflow[];
129
+ components?: {
130
+ inputs?: {
131
+ [key: string]: {
132
+ type: string;
133
+ properties?: {
134
+ [key: string]: any;
135
+ };
136
+ };
137
+ };
138
+ parameters?: {
139
+ [key: string]: Parameter;
140
+ };
141
+ successActions?: {
142
+ [key: string]: OnSuccessObject;
143
+ };
144
+ failureActions?: {
145
+ [key: string]: OnFailureObject;
146
+ };
147
+ };
148
+ }
@@ -0,0 +1,53 @@
1
+ export interface Async3Definition {
2
+ asyncapi: string;
3
+ servers?: Record<string, any>;
4
+ info: Async3Info;
5
+ channels?: Record<string, Channel>;
6
+ components?: Record<string, any>;
7
+ operations?: Record<string, any>;
8
+ defaultContentType?: string;
9
+ }
10
+ export interface Async3Info {
11
+ title: string;
12
+ version: string;
13
+ description?: string;
14
+ termsOfService?: string;
15
+ contact?: Async3Contact;
16
+ license?: Async3License;
17
+ tags?: Tag[];
18
+ externalDocs?: ExternalDoc;
19
+ }
20
+ export interface Async3Contact {
21
+ name?: string;
22
+ url?: string;
23
+ email?: string;
24
+ }
25
+ export interface Async3License {
26
+ name: string;
27
+ url?: string;
28
+ }
29
+ export interface Tag {
30
+ name: string;
31
+ description?: string;
32
+ externalDocs?: ExternalDoc;
33
+ }
34
+ export interface ExternalDoc {
35
+ url: string;
36
+ description?: string;
37
+ }
38
+ export interface Channel {
39
+ address?: string | null;
40
+ messages?: Record<string, any>;
41
+ title?: string;
42
+ summary?: string;
43
+ description?: string;
44
+ servers?: Record<string, any>[];
45
+ parameters?: Record<string, any>;
46
+ tags?: Record<string, any>;
47
+ externalDocs?: ExternalDocumentation;
48
+ bindings?: Record<string, any>;
49
+ }
50
+ export interface ExternalDocumentation {
51
+ url: string;
52
+ description?: string;
53
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -4,5 +4,5 @@ export interface StatsRow {
4
4
  color: 'red' | 'yellow' | 'green' | 'white' | 'magenta' | 'cyan';
5
5
  items?: Set<string>;
6
6
  }
7
- export type StatsName = 'operations' | 'refs' | 'tags' | 'externalDocs' | 'pathItems' | 'links' | 'schemas' | 'parameters';
7
+ export type StatsName = 'operations' | 'refs' | 'tags' | 'externalDocs' | 'pathItems' | 'links' | 'schemas' | 'webhooks' | 'parameters';
8
8
  export type StatsAccumulator = Record<StatsName, StatsRow>;
@@ -1,5 +1,5 @@
1
- import { Referenced } from './openapi';
2
- import { Schema } from 'js-yaml';
1
+ import type { Schema } from 'js-yaml';
2
+ import type { Referenced } from './openapi';
3
3
  export interface Oas2Definition {
4
4
  swagger: '2.0';
5
5
  info?: Oas2Info;
package/lib/utils.d.ts CHANGED
@@ -16,9 +16,9 @@ export declare function popStack<T, P extends Stack<T>>(head: P): StackFrame<T>
16
16
  export type BundleOutputFormat = 'json' | 'yml' | 'yaml';
17
17
  export declare function loadYaml<T>(filename: string): Promise<T>;
18
18
  export declare function isDefined<T>(x: T | undefined): x is T;
19
- export declare function isPlainObject(value: any): value is Record<string, unknown>;
20
- export declare function isEmptyObject(value: any): value is Record<string, unknown>;
21
- export declare function isEmptyArray(value: any): boolean;
19
+ export declare function isPlainObject(value: unknown): value is Record<string, unknown>;
20
+ export declare function isEmptyObject(value: unknown): value is Record<string, unknown>;
21
+ export declare function isEmptyArray(value: unknown): boolean;
22
22
  export declare function readFileFromUrl(url: string, config: HttpResolveConfig): Promise<{
23
23
  body: any;
24
24
  mimeType: any;
@@ -57,3 +57,4 @@ export declare function getProxyAgent(): HttpsProxyAgent<string> | undefined;
57
57
  * Borrowed the source code from https://github.com/lukeed/dequal.
58
58
  */
59
59
  export declare function dequal(foo: any, bar: any): boolean;
60
+ export type CollectFn = (value: unknown) => void;