@redocly/openapi-core 1.19.0 → 1.20.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (338) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/__tests__/utils.ts +14 -7
  3. package/lib/benchmark/benches/lint-with-many-rules.bench.d.ts +1 -0
  4. package/lib/benchmark/benches/lint-with-many-rules.bench.js +5 -1
  5. package/lib/benchmark/benches/lint-with-nested-rule.bench.d.ts +1 -0
  6. package/lib/benchmark/benches/lint-with-nested-rule.bench.js +5 -1
  7. package/lib/benchmark/benches/lint-with-no-rules.bench.d.ts +1 -0
  8. package/lib/benchmark/benches/lint-with-no-rules.bench.js +5 -1
  9. package/lib/benchmark/benches/lint-with-top-level-rule-report.bench.d.ts +1 -0
  10. package/lib/benchmark/benches/lint-with-top-level-rule-report.bench.js +17 -13
  11. package/lib/benchmark/benches/lint-with-top-level-rule.bench.d.ts +1 -0
  12. package/lib/benchmark/benches/lint-with-top-level-rule.bench.js +16 -12
  13. package/lib/benchmark/utils.d.ts +3 -3
  14. package/lib/benchmark/utils.js +3 -3
  15. package/lib/config/all.js +4 -1
  16. package/lib/config/builtIn.js +15 -20
  17. package/lib/config/config-resolvers.d.ts +1 -1
  18. package/lib/config/config-resolvers.js +67 -28
  19. package/lib/config/config.d.ts +3 -2
  20. package/lib/config/load.d.ts +1 -1
  21. package/lib/config/minimal.js +4 -0
  22. package/lib/config/recommended-strict.js +5 -1
  23. package/lib/config/recommended.js +5 -1
  24. package/lib/config/types.d.ts +9 -2
  25. package/lib/config/utils.d.ts +3 -1
  26. package/lib/config/utils.js +8 -0
  27. package/lib/decorators/common/filters/filter-helper.d.ts +1 -1
  28. package/lib/decorators/common/filters/filter-in.d.ts +1 -1
  29. package/lib/decorators/common/filters/filter-out.d.ts +1 -1
  30. package/lib/decorators/common/info-description-override.d.ts +1 -1
  31. package/lib/decorators/common/info-override.d.ts +1 -1
  32. package/lib/decorators/common/media-type-examples-override.d.ts +1 -1
  33. package/lib/decorators/common/operation-description-override.d.ts +1 -1
  34. package/lib/decorators/common/registry-dependencies.d.ts +1 -1
  35. package/lib/decorators/common/remove-x-internal.d.ts +1 -1
  36. package/lib/decorators/common/tag-description-override.d.ts +1 -1
  37. package/lib/decorators/oas2/index.d.ts +1 -1
  38. package/lib/decorators/oas3/index.d.ts +1 -1
  39. package/lib/format/codeframes.d.ts +1 -1
  40. package/lib/format/format.d.ts +1 -1
  41. package/lib/format/format.js +1 -1
  42. package/lib/js-yaml/index.d.ts +1 -1
  43. package/lib/lint.d.ts +1 -1
  44. package/lib/logger.js +2 -2
  45. package/lib/oas-types.d.ts +2 -2
  46. package/lib/redocly/domains.d.ts +1 -1
  47. package/lib/redocly/index.d.ts +1 -1
  48. package/lib/ref-utils.d.ts +2 -2
  49. package/lib/ref-utils.js +1 -0
  50. package/lib/resolve.d.ts +2 -2
  51. package/lib/rules/ajv.d.ts +1 -1
  52. package/lib/rules/arazzo/index.js +2 -0
  53. package/lib/rules/async2/channels-kebab-case.d.ts +1 -1
  54. package/lib/rules/async2/index.js +2 -0
  55. package/lib/rules/async2/no-channel-trailing-slash.d.ts +1 -1
  56. package/lib/rules/async3/channels-kebab-case.d.ts +1 -1
  57. package/lib/rules/async3/index.js +2 -0
  58. package/lib/rules/async3/no-channel-trailing-slash.d.ts +1 -1
  59. package/lib/rules/common/assertions/asserts.d.ts +2 -2
  60. package/lib/rules/common/assertions/index.d.ts +1 -2
  61. package/lib/rules/common/assertions/utils.d.ts +1 -1
  62. package/lib/rules/common/info-contact.d.ts +1 -1
  63. package/lib/rules/common/info-license-strict.d.ts +2 -0
  64. package/lib/rules/common/info-license-strict.js +26 -0
  65. package/lib/rules/common/info-license-url.d.ts +1 -1
  66. package/lib/rules/common/info-license.d.ts +1 -1
  67. package/lib/rules/common/no-ambiguous-paths.d.ts +1 -1
  68. package/lib/rules/common/no-enum-type-mismatch.d.ts +1 -1
  69. package/lib/rules/common/no-http-verbs-in-paths.d.ts +1 -1
  70. package/lib/rules/common/no-identical-paths.d.ts +1 -1
  71. package/lib/rules/common/no-path-trailing-slash.d.ts +1 -1
  72. package/lib/rules/common/no-required-schema-properties-undefined.d.ts +1 -1
  73. package/lib/rules/common/operation-2xx-response.d.ts +1 -1
  74. package/lib/rules/common/operation-4xx-response.d.ts +1 -1
  75. package/lib/rules/common/operation-description.d.ts +1 -1
  76. package/lib/rules/common/operation-operationId-unique.d.ts +1 -1
  77. package/lib/rules/common/operation-operationId-url-safe.d.ts +1 -1
  78. package/lib/rules/common/operation-operationId-url-safe.js +1 -0
  79. package/lib/rules/common/operation-operationId.d.ts +1 -1
  80. package/lib/rules/common/operation-parameters-unique.d.ts +1 -1
  81. package/lib/rules/common/operation-singular-tag.d.ts +1 -1
  82. package/lib/rules/common/operation-summary.d.ts +1 -1
  83. package/lib/rules/common/operation-tag-defined.d.ts +1 -1
  84. package/lib/rules/common/parameter-description.d.ts +1 -1
  85. package/lib/rules/common/path-declaration-must-exist.d.ts +1 -1
  86. package/lib/rules/common/path-excludes-patterns.d.ts +1 -1
  87. package/lib/rules/common/path-http-verbs-order.d.ts +1 -1
  88. package/lib/rules/common/path-not-include-query.d.ts +1 -1
  89. package/lib/rules/common/path-params-defined.d.ts +1 -1
  90. package/lib/rules/common/path-segment-plural.d.ts +1 -1
  91. package/lib/rules/common/paths-kebab-case.d.ts +1 -1
  92. package/lib/rules/common/required-string-property-missing-min-length.d.ts +1 -1
  93. package/lib/rules/common/response-contains-header.d.ts +1 -1
  94. package/lib/rules/common/security-defined.d.ts +1 -1
  95. package/lib/rules/common/spec-strict-refs.d.ts +1 -1
  96. package/lib/rules/common/tag-description.d.ts +1 -1
  97. package/lib/rules/common/tags-alphabetical.d.ts +1 -1
  98. package/lib/rules/no-unresolved-refs.d.ts +3 -3
  99. package/lib/rules/oas2/boolean-parameter-prefixes.d.ts +1 -1
  100. package/lib/rules/oas2/index.d.ts +1 -1
  101. package/lib/rules/oas2/index.js +2 -0
  102. package/lib/rules/oas2/response-contains-property.d.ts +1 -1
  103. package/lib/rules/oas3/array-parameter-serialization.d.ts +1 -1
  104. package/lib/rules/oas3/boolean-parameter-prefixes.d.ts +1 -1
  105. package/lib/rules/oas3/component-name-unique.d.ts +1 -1
  106. package/lib/rules/oas3/index.d.ts +1 -1
  107. package/lib/rules/oas3/index.js +2 -0
  108. package/lib/rules/oas3/no-empty-servers.d.ts +1 -1
  109. package/lib/rules/oas3/no-example-value-and-externalValue.d.ts +1 -1
  110. package/lib/rules/oas3/no-invalid-media-type-examples.d.ts +1 -1
  111. package/lib/rules/oas3/no-server-example.com.d.ts +1 -1
  112. package/lib/rules/oas3/no-server-example.com.js +1 -0
  113. package/lib/rules/oas3/no-server-trailing-slash.d.ts +1 -1
  114. package/lib/rules/oas3/no-server-variables-empty-enum.d.ts +1 -1
  115. package/lib/rules/oas3/no-undefined-server-variable.d.ts +1 -1
  116. package/lib/rules/oas3/no-unused-components.d.ts +1 -1
  117. package/lib/rules/oas3/response-contains-property.d.ts +1 -1
  118. package/lib/rules/oas3/spec-components-invalid-map-name.d.ts +1 -1
  119. package/lib/rules/other/stats.d.ts +3 -3
  120. package/lib/rules/other/stats.js +5 -3
  121. package/lib/rules/spot/parameters-no-body-inside-in.d.ts +2 -0
  122. package/lib/rules/spot/parameters-no-body-inside-in.js +18 -0
  123. package/lib/rules/utils.d.ts +4 -2
  124. package/lib/rules/utils.js +27 -1
  125. package/lib/types/arazzo.d.ts +1 -2275
  126. package/lib/types/arazzo.js +246 -309
  127. package/lib/types/asyncapi2.d.ts +1 -1
  128. package/lib/types/asyncapi2.js +3 -1
  129. package/lib/types/asyncapi3.d.ts +1 -1
  130. package/lib/types/json-schema-adapter.d.ts +1 -1
  131. package/lib/types/oas3.d.ts +4 -0
  132. package/lib/types/oas3.js +9 -9
  133. package/lib/types/oas3_1.d.ts +3 -0
  134. package/lib/types/oas3_1.js +8 -8
  135. package/lib/types/redocly-yaml.d.ts +6 -6
  136. package/lib/types/redocly-yaml.js +4 -1
  137. package/lib/typings/arazzo.d.ts +145 -27
  138. package/lib/typings/common.d.ts +1 -1
  139. package/lib/typings/swagger.d.ts +2 -2
  140. package/lib/visitors.d.ts +18 -1
  141. package/lib/walk.d.ts +3 -3
  142. package/package.json +2 -2
  143. package/src/__tests__/bundle.test.ts +4 -4
  144. package/src/__tests__/lint.test.ts +29 -21
  145. package/src/__tests__/walk.test.ts +25 -25
  146. package/src/benchmark/benches/lint-with-many-rules.bench.ts +7 -1
  147. package/src/benchmark/benches/lint-with-nested-rule.bench.ts +7 -1
  148. package/src/benchmark/benches/lint-with-no-rules.bench.ts +8 -1
  149. package/src/benchmark/benches/lint-with-top-level-rule-report.bench.ts +18 -13
  150. package/src/benchmark/benches/lint-with-top-level-rule.bench.ts +17 -11
  151. package/src/benchmark/fork.js +4 -0
  152. package/src/benchmark/utils.ts +6 -5
  153. package/src/bundle.ts +2 -1
  154. package/src/config/__tests__/__snapshots__/config-resolvers.test.ts.snap +10 -2
  155. package/src/config/__tests__/config-resolvers.test.ts +82 -0
  156. package/src/config/__tests__/fixtures/resolve-config/local-config-with-commonjs-export-function.yaml +2 -0
  157. package/src/config/__tests__/fixtures/resolve-config/local-config-with-esm.yaml +2 -0
  158. package/src/config/__tests__/fixtures/resolve-config/plugin-esm.mjs +10 -0
  159. package/src/config/__tests__/fixtures/resolve-config/plugin-with-export-function.cjs +10 -0
  160. package/src/config/__tests__/resolve-plugins.test.ts +4 -1
  161. package/src/config/all.ts +4 -1
  162. package/src/config/builtIn.ts +5 -10
  163. package/src/config/config-resolvers.ts +78 -23
  164. package/src/config/config.ts +7 -8
  165. package/src/config/load.ts +2 -2
  166. package/src/config/minimal.ts +4 -0
  167. package/src/config/recommended-strict.ts +5 -1
  168. package/src/config/recommended.ts +5 -1
  169. package/src/config/types.ts +19 -3
  170. package/src/config/utils.ts +13 -2
  171. package/src/decorators/__tests__/filter-in.test.ts +29 -26
  172. package/src/decorators/__tests__/filter-out.test.ts +32 -23
  173. package/src/decorators/__tests__/media-type-examples-override.test.ts +45 -45
  174. package/src/decorators/__tests__/remove-x-internal.test.ts +8 -5
  175. package/src/decorators/common/filters/filter-helper.ts +2 -1
  176. package/src/decorators/common/filters/filter-in.ts +2 -1
  177. package/src/decorators/common/filters/filter-out.ts +2 -1
  178. package/src/decorators/common/info-description-override.ts +3 -2
  179. package/src/decorators/common/info-override.ts +1 -1
  180. package/src/decorators/common/media-type-examples-override.ts +4 -3
  181. package/src/decorators/common/operation-description-override.ts +5 -4
  182. package/src/decorators/common/registry-dependencies.ts +2 -2
  183. package/src/decorators/common/remove-x-internal.ts +3 -2
  184. package/src/decorators/common/tag-description-override.ts +3 -2
  185. package/src/decorators/oas2/__tests__/remove-unused-components.test.ts +3 -3
  186. package/src/decorators/oas2/index.ts +2 -1
  187. package/src/decorators/oas2/remove-unused-components.ts +1 -1
  188. package/src/decorators/oas3/__tests__/remove-unused-components.test.ts +4 -4
  189. package/src/decorators/oas3/index.ts +2 -1
  190. package/src/decorators/oas3/remove-unused-components.ts +1 -1
  191. package/src/format/codeframes.ts +2 -1
  192. package/src/format/format.ts +9 -4
  193. package/src/js-yaml/index.ts +3 -1
  194. package/src/lint.ts +2 -1
  195. package/src/logger.ts +2 -2
  196. package/src/oas-types.ts +14 -13
  197. package/src/redocly/domains.ts +1 -1
  198. package/src/redocly/index.ts +3 -3
  199. package/src/redocly/registry-api.ts +5 -3
  200. package/src/ref-utils.ts +4 -2
  201. package/src/resolve.ts +6 -4
  202. package/src/rules/__tests__/no-unresolved-refs.test.ts +21 -7
  203. package/src/rules/ajv.ts +2 -1
  204. package/src/rules/arazzo/__tests__/parameters-no-body-inside-in.test.ts +76 -0
  205. package/src/rules/arazzo/index.ts +5 -2
  206. package/src/rules/async2/__tests__/channels-kebab-case.test.ts +9 -5
  207. package/src/rules/async2/__tests__/no-channel-trailing-slash.test.ts +3 -3
  208. package/src/rules/async2/channels-kebab-case.ts +2 -2
  209. package/src/rules/async2/index.ts +4 -1
  210. package/src/rules/async2/no-channel-trailing-slash.ts +2 -2
  211. package/src/rules/async3/__tests__/channels-kebab-case.test.ts +9 -5
  212. package/src/rules/async3/__tests__/no-channel-trailing-slash.test.ts +3 -3
  213. package/src/rules/async3/channels-kebab-case.ts +3 -3
  214. package/src/rules/async3/index.ts +4 -1
  215. package/src/rules/async3/no-channel-trailing-slash.ts +3 -3
  216. package/src/rules/common/__tests__/info-license-strict.test.ts +141 -0
  217. package/src/rules/common/__tests__/info-license.test.ts +2 -2
  218. package/src/rules/common/__tests__/license-url.test.ts +2 -2
  219. package/src/rules/common/__tests__/no-ambiguous-paths.test.ts +1 -1
  220. package/src/rules/common/__tests__/no-enum-type-mismatch.test.ts +5 -5
  221. package/src/rules/common/__tests__/no-identical-paths.test.ts +1 -1
  222. package/src/rules/common/__tests__/no-invalid-parameter-examples.test.ts +1 -1
  223. package/src/rules/common/__tests__/no-invalid-schema-examples.test.ts +1 -1
  224. package/src/rules/common/__tests__/no-path-trailing-slash.test.ts +4 -4
  225. package/src/rules/common/__tests__/no-required-schema-properties-undefined.test.ts +11 -11
  226. package/src/rules/common/__tests__/operation-2xx-response.test.ts +8 -6
  227. package/src/rules/common/__tests__/operation-4xx-response.test.ts +9 -7
  228. package/src/rules/common/__tests__/operation-operationId-unique.test.ts +2 -2
  229. package/src/rules/common/__tests__/operation-operationId-url-safe.test.ts +1 -1
  230. package/src/rules/common/__tests__/operation-parameters-unique.test.ts +4 -4
  231. package/src/rules/common/__tests__/operation-singular-tag.test.ts +2 -2
  232. package/src/rules/common/__tests__/path-http-verbs-order.test.ts +2 -2
  233. package/src/rules/common/__tests__/path-not-include-query.test.ts +2 -2
  234. package/src/rules/common/__tests__/path-params-defined.test.ts +5 -5
  235. package/src/rules/common/__tests__/paths-kebab-case.test.ts +6 -4
  236. package/src/rules/common/__tests__/scalar-property-missing-example.test.ts +8 -8
  237. package/src/rules/common/__tests__/security-defined.test.ts +14 -8
  238. package/src/rules/common/__tests__/spec-strict-refs.test.ts +1 -1
  239. package/src/rules/common/__tests__/spec.test.ts +10 -10
  240. package/src/rules/common/__tests__/tag-description.test.ts +2 -2
  241. package/src/rules/common/__tests__/tags-alphabetical.test.ts +6 -4
  242. package/src/rules/common/assertions/asserts.ts +5 -9
  243. package/src/rules/common/assertions/index.ts +1 -2
  244. package/src/rules/common/assertions/utils.ts +4 -2
  245. package/src/rules/common/info-contact.ts +2 -1
  246. package/src/rules/common/info-license-strict.ts +24 -0
  247. package/src/rules/common/info-license-url.ts +2 -1
  248. package/src/rules/common/info-license.ts +2 -1
  249. package/src/rules/common/no-ambiguous-paths.ts +4 -4
  250. package/src/rules/common/no-enum-type-mismatch.ts +5 -4
  251. package/src/rules/common/no-http-verbs-in-paths.ts +5 -4
  252. package/src/rules/common/no-identical-paths.ts +4 -4
  253. package/src/rules/common/no-invalid-parameter-examples.ts +3 -2
  254. package/src/rules/common/no-path-trailing-slash.ts +2 -2
  255. package/src/rules/common/no-required-schema-properties-undefined.ts +5 -4
  256. package/src/rules/common/operation-2xx-response.ts +3 -2
  257. package/src/rules/common/operation-4xx-response.ts +3 -2
  258. package/src/rules/common/operation-description.ts +5 -4
  259. package/src/rules/common/operation-operationId-unique.ts +4 -4
  260. package/src/rules/common/operation-operationId-url-safe.ts +5 -4
  261. package/src/rules/common/operation-operationId.ts +5 -4
  262. package/src/rules/common/operation-parameters-unique.ts +4 -4
  263. package/src/rules/common/operation-singular-tag.ts +4 -4
  264. package/src/rules/common/operation-summary.ts +5 -4
  265. package/src/rules/common/operation-tag-defined.ts +4 -4
  266. package/src/rules/common/parameter-description.ts +4 -4
  267. package/src/rules/common/path-declaration-must-exist.ts +2 -2
  268. package/src/rules/common/path-excludes-patterns.ts +4 -4
  269. package/src/rules/common/path-http-verbs-order.ts +4 -4
  270. package/src/rules/common/path-not-include-query.ts +2 -2
  271. package/src/rules/common/path-params-defined.ts +4 -4
  272. package/src/rules/common/path-segment-plural.ts +3 -2
  273. package/src/rules/common/paths-kebab-case.ts +2 -2
  274. package/src/rules/common/required-string-property-missing-min-length.ts +4 -4
  275. package/src/rules/common/response-contains-header.ts +5 -4
  276. package/src/rules/common/scalar-property-missing-example.ts +2 -1
  277. package/src/rules/common/security-defined.ts +5 -5
  278. package/src/rules/common/spec-strict-refs.ts +2 -1
  279. package/src/rules/common/spec.ts +3 -2
  280. package/src/rules/common/tag-description.ts +2 -1
  281. package/src/rules/common/tags-alphabetical.ts +4 -4
  282. package/src/rules/no-unresolved-refs.ts +4 -3
  283. package/src/rules/oas2/__tests__/boolean-parameter-prefixes.test.ts +7 -5
  284. package/src/rules/oas2/__tests__/response-contains-header.test.ts +14 -8
  285. package/src/rules/oas2/__tests__/response-contains-property.test.ts +14 -8
  286. package/src/rules/oas2/__tests__/spec/referenceableScalars.test.ts +3 -1
  287. package/src/rules/oas2/boolean-parameter-prefixes.ts +1 -1
  288. package/src/rules/oas2/index.ts +4 -2
  289. package/src/rules/oas2/request-mime-type.ts +2 -1
  290. package/src/rules/oas2/response-contains-property.ts +3 -2
  291. package/src/rules/oas2/response-mime-type.ts +2 -1
  292. package/src/rules/oas3/__tests__/array-parameter-serialization.test.ts +18 -6
  293. package/src/rules/oas3/__tests__/boolean-parameter-prefixes.test.ts +7 -5
  294. package/src/rules/oas3/__tests__/no-empty-enum-servers.com.test.ts +6 -6
  295. package/src/rules/oas3/__tests__/no-example-value-and-externalValue.test.ts +2 -2
  296. package/src/rules/oas3/__tests__/no-invalid-media-type-examples.test.ts +34 -24
  297. package/src/rules/oas3/__tests__/no-server-example.com.test.ts +3 -3
  298. package/src/rules/oas3/__tests__/no-server-trailing-slash.test.ts +3 -3
  299. package/src/rules/oas3/__tests__/no-unused-components.test.ts +1 -1
  300. package/src/rules/oas3/__tests__/operation-4xx-problem-details-rfc7807.test.ts +3 -3
  301. package/src/rules/oas3/__tests__/response-contains-header.test.ts +34 -22
  302. package/src/rules/oas3/__tests__/response-contains-property.test.ts +34 -20
  303. package/src/rules/oas3/__tests__/spec/spec.test.ts +12 -3
  304. package/src/rules/oas3/__tests__/spec-components-invalid-map-name.test.ts +9 -3
  305. package/src/rules/oas3/__tests__/utils/lint-document-for-test.ts +1 -1
  306. package/src/rules/oas3/array-parameter-serialization.ts +3 -2
  307. package/src/rules/oas3/boolean-parameter-prefixes.ts +1 -1
  308. package/src/rules/oas3/component-name-unique.ts +3 -3
  309. package/src/rules/oas3/index.ts +3 -1
  310. package/src/rules/oas3/no-empty-servers.ts +1 -1
  311. package/src/rules/oas3/no-example-value-and-externalValue.ts +1 -1
  312. package/src/rules/oas3/no-invalid-media-type-examples.ts +6 -4
  313. package/src/rules/oas3/no-server-example.com.ts +2 -1
  314. package/src/rules/oas3/no-server-trailing-slash.ts +1 -1
  315. package/src/rules/oas3/no-server-variables-empty-enum.ts +2 -2
  316. package/src/rules/oas3/no-undefined-server-variable.ts +1 -1
  317. package/src/rules/oas3/no-unused-components.ts +2 -2
  318. package/src/rules/oas3/operation-4xx-problem-details-rfc7807.ts +2 -1
  319. package/src/rules/oas3/request-mime-type.ts +2 -1
  320. package/src/rules/oas3/response-contains-property.ts +3 -2
  321. package/src/rules/oas3/response-mime-type.ts +2 -1
  322. package/src/rules/oas3/spec-components-invalid-map-name.ts +3 -3
  323. package/src/rules/other/stats.ts +8 -6
  324. package/src/rules/spot/parameters-no-body-inside-in.ts +17 -0
  325. package/src/rules/utils.ts +41 -4
  326. package/src/types/arazzo.ts +257 -334
  327. package/src/types/asyncapi2.ts +4 -1
  328. package/src/types/asyncapi3.ts +3 -1
  329. package/src/types/json-schema-adapter.ts +2 -2
  330. package/src/types/oas3.ts +4 -4
  331. package/src/types/oas3_1.ts +3 -3
  332. package/src/types/redocly-yaml.ts +7 -4
  333. package/src/typings/arazzo.ts +169 -41
  334. package/src/typings/common.ts +1 -0
  335. package/src/typings/swagger.ts +2 -2
  336. package/src/visitors.ts +40 -1
  337. package/src/walk.ts +3 -3
  338. package/tsconfig.tsbuildinfo +1 -1
@@ -1,2 +1,2 @@
1
- import { Oas3Rule, Oas2Rule } from '../../visitors';
1
+ import type { Oas3Rule, Oas2Rule } from '../../visitors';
2
2
  export declare const TagDescription: Oas3Rule | Oas2Rule;
@@ -1,2 +1,2 @@
1
- import { Oas3Rule, Oas2Rule } from '../../visitors';
1
+ import type { Oas3Rule, Oas2Rule } from '../../visitors';
2
2
  export declare const TagsAlphabetical: Oas3Rule | Oas2Rule;
@@ -1,5 +1,5 @@
1
- import { Oas3Rule } from '../visitors';
2
- import { ResolveResult, Problem } from '../walk';
3
- import { Location } from '../ref-utils';
1
+ import type { Oas3Rule } from '../visitors';
2
+ import type { ResolveResult, Problem } from '../walk';
3
+ import type { Location } from '../ref-utils';
4
4
  export declare const NoUnresolvedRefs: Oas3Rule;
5
5
  export declare function reportUnresolvedRef(resolved: ResolveResult<any>, report: (m: Problem) => void, location: Location): void;
@@ -1,4 +1,4 @@
1
- import { Oas2Rule } from '../../visitors';
1
+ import type { Oas2Rule } from '../../visitors';
2
2
  export type BooleanParameterPrefixesOptions = {
3
3
  prefixes?: string[];
4
4
  };
@@ -1,3 +1,3 @@
1
- import type { Oas2RuleSet } from 'core/src/oas-types';
1
+ import type { Oas2RuleSet } from '../../oas-types';
2
2
  export declare const rules: Oas2RuleSet<'built-in'>;
3
3
  export declare const preprocessors: {};
@@ -7,6 +7,7 @@ const no_invalid_parameter_examples_1 = require("../common/no-invalid-parameter-
7
7
  const info_contact_1 = require("../common/info-contact");
8
8
  const info_license_1 = require("../common/info-license");
9
9
  const info_license_url_1 = require("../common/info-license-url");
10
+ const info_license_strict_1 = require("../common/info-license-strict");
10
11
  const boolean_parameter_prefixes_1 = require("./boolean-parameter-prefixes");
11
12
  const tag_description_1 = require("../common/tag-description");
12
13
  const tags_alphabetical_1 = require("../common/tags-alphabetical");
@@ -51,6 +52,7 @@ exports.rules = {
51
52
  'info-contact': info_contact_1.InfoContact,
52
53
  'info-license': info_license_1.InfoLicense,
53
54
  'info-license-url': info_license_url_1.InfoLicenseUrl,
55
+ 'info-license-strict': info_license_strict_1.InfoLicenseStrict,
54
56
  'tag-description': tag_description_1.TagDescription,
55
57
  'tags-alphabetical': tags_alphabetical_1.TagsAlphabetical,
56
58
  'paths-kebab-case': paths_kebab_case_1.PathsKebabCase,
@@ -1,2 +1,2 @@
1
- import { Oas2Rule } from '../../visitors';
1
+ import type { Oas2Rule } from '../../visitors';
2
2
  export declare const ResponseContainsProperty: Oas2Rule;
@@ -1,4 +1,4 @@
1
- import { Oas3Rule } from '../../visitors';
1
+ import type { Oas3Rule } from '../../visitors';
2
2
  export type ArrayParameterSerializationOptions = {
3
3
  in?: string[];
4
4
  };
@@ -1,4 +1,4 @@
1
- import { Oas3Rule } from '../../visitors';
1
+ import type { Oas3Rule } from '../../visitors';
2
2
  export type BooleanParameterPrefixesOptions = {
3
3
  prefixes?: string[];
4
4
  };
@@ -1,2 +1,2 @@
1
- import { Oas2Rule, Oas3Rule } from '../../visitors';
1
+ import type { Oas2Rule, Oas3Rule } from '../../visitors';
2
2
  export declare const ComponentNameUnique: Oas3Rule | Oas2Rule;
@@ -1,3 +1,3 @@
1
- import { Oas3RuleSet } from '../../oas-types';
1
+ import type { Oas3RuleSet } from '../../oas-types';
2
2
  export declare const rules: Oas3RuleSet<'built-in'>;
3
3
  export declare const preprocessors: {};
@@ -21,6 +21,7 @@ const tag_description_1 = require("../common/tag-description");
21
21
  const info_contact_1 = require("../common/info-contact");
22
22
  const info_license_1 = require("../common/info-license");
23
23
  const info_license_url_1 = require("../common/info-license-url");
24
+ const info_license_strict_1 = require("../common/info-license-strict");
24
25
  const operation_description_1 = require("../common/operation-description");
25
26
  const no_unused_components_1 = require("./no-unused-components");
26
27
  const path_not_include_query_1 = require("../common/path-not-include-query");
@@ -61,6 +62,7 @@ exports.rules = {
61
62
  'info-contact': info_contact_1.InfoContact,
62
63
  'info-license': info_license_1.InfoLicense,
63
64
  'info-license-url': info_license_url_1.InfoLicenseUrl,
65
+ 'info-license-strict': info_license_strict_1.InfoLicenseStrict,
64
66
  'operation-2xx-response': operation_2xx_response_1.Operation2xxResponse,
65
67
  'operation-4xx-response': operation_4xx_response_1.Operation4xxResponse,
66
68
  'operation-4xx-problem-details-rfc7807': operation_4xx_problem_details_rfc7807_1.Operation4xxProblemDetailsRfc7807,
@@ -1,2 +1,2 @@
1
- import { Oas3Rule } from '../../visitors';
1
+ import type { Oas3Rule } from '../../visitors';
2
2
  export declare const NoEmptyServers: Oas3Rule;
@@ -1,2 +1,2 @@
1
- import { Oas3Rule } from '../../visitors';
1
+ import type { Oas3Rule } from '../../visitors';
2
2
  export declare const NoExampleValueAndExternalValue: Oas3Rule;
@@ -1,2 +1,2 @@
1
- import { Oas3Rule } from '../../visitors';
1
+ import type { Oas3Rule } from '../../visitors';
2
2
  export declare const ValidContentExamples: Oas3Rule;
@@ -1,2 +1,2 @@
1
- import { Oas3Rule } from '../../visitors';
1
+ import type { Oas3Rule } from '../../visitors';
2
2
  export declare const NoServerExample: Oas3Rule;
@@ -4,6 +4,7 @@ exports.NoServerExample = void 0;
4
4
  const NoServerExample = () => {
5
5
  return {
6
6
  Server(server, { report, location }) {
7
+ // eslint-disable-next-line no-useless-escape
7
8
  const pattern = /^(.*[\/.])?(example\.com|localhost)([\/:?].*|$)/;
8
9
  if (server.url && pattern.test(server.url)) {
9
10
  report({
@@ -1,2 +1,2 @@
1
- import { Oas3Rule } from '../../visitors';
1
+ import type { Oas3Rule } from '../../visitors';
2
2
  export declare const NoServerTrailingSlash: Oas3Rule;
@@ -1,2 +1,2 @@
1
- import { Oas3Rule } from '../../visitors';
1
+ import type { Oas3Rule } from '../../visitors';
2
2
  export declare const NoServerVariablesEmptyEnum: Oas3Rule;
@@ -1,2 +1,2 @@
1
- import { Oas3Rule } from '../../visitors';
1
+ import type { Oas3Rule } from '../../visitors';
2
2
  export declare const NoUndefinedServerVariable: Oas3Rule;
@@ -1,2 +1,2 @@
1
- import { Oas3Rule } from '../../visitors';
1
+ import type { Oas3Rule } from '../../visitors';
2
2
  export declare const NoUnusedComponents: Oas3Rule;
@@ -1,2 +1,2 @@
1
- import { Oas3Rule } from '../../visitors';
1
+ import type { Oas3Rule } from '../../visitors';
2
2
  export declare const ResponseContainsProperty: Oas3Rule;
@@ -1,2 +1,2 @@
1
- import { Oas3Rule } from '../../visitors';
1
+ import type { Oas3Rule } from '../../visitors';
2
2
  export declare const SpecComponentsInvalidMapName: Oas3Rule;
@@ -1,6 +1,6 @@
1
- import { Oas3Parameter, OasRef, Oas3Tag } from '../../typings/openapi';
2
- import { Oas2Parameter } from '../../typings/swagger';
3
- import { StatsAccumulator } from '../../typings/common';
1
+ import type { Oas3Parameter, OasRef, Oas3Tag } from '../../typings/openapi';
2
+ import type { Oas2Parameter } from '../../typings/swagger';
3
+ import type { StatsAccumulator } from '../../typings/common';
4
4
  export declare const Stats: (statsAccumulator: StatsAccumulator) => {
5
5
  ExternalDocs: {
6
6
  leave(): void;
@@ -34,9 +34,11 @@ const Stats = (statsAccumulator) => {
34
34
  WebhooksMap: {
35
35
  Operation: {
36
36
  leave(operation) {
37
- operation.tags.forEach((tag) => {
38
- statsAccumulator.tags.items.add(tag);
39
- });
37
+ statsAccumulator.webhooks.total++;
38
+ operation.tags &&
39
+ operation.tags.forEach((tag) => {
40
+ statsAccumulator.tags.items.add(tag);
41
+ });
40
42
  },
41
43
  },
42
44
  },
@@ -0,0 +1,2 @@
1
+ import type { ArazzoRule } from '../../visitors';
2
+ export declare const ParametersNoBodyInsideIn: ArazzoRule;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ParametersNoBodyInsideIn = void 0;
4
+ const ParametersNoBodyInsideIn = () => {
5
+ return {
6
+ Parameter: {
7
+ enter(parameter, { report, location }) {
8
+ if (parameter.in === 'body') {
9
+ report({
10
+ message: 'The `body` value of the `in` property is not supported by Spot.',
11
+ location: location.child(['in']),
12
+ });
13
+ }
14
+ },
15
+ },
16
+ };
17
+ };
18
+ exports.ParametersNoBodyInsideIn = ParametersNoBodyInsideIn;
@@ -1,6 +1,6 @@
1
- import { UserContext } from '../walk';
2
1
  import { Location } from '../ref-utils';
3
- import { Oas3Schema, Oas3_1Schema, Referenced } from '../typings/openapi';
2
+ import type { Oas3Schema, Oas3_1Schema, Referenced } from '../typings/openapi';
3
+ import type { UserContext } from '../walk';
4
4
  export declare function oasTypeOf(value: unknown): "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" | "integer" | "array" | "null";
5
5
  /**
6
6
  * Checks if value matches specified JSON schema type
@@ -11,8 +11,10 @@ export declare function oasTypeOf(value: unknown): "string" | "number" | "bigint
11
11
  */
12
12
  export declare function matchesJsonSchemaType(value: unknown, type: string, nullable: boolean): boolean;
13
13
  export declare function missingRequiredField(type: string, field: string): string;
14
+ export declare function missingRequiredOneOfFields(type: string, fields: string[]): string;
14
15
  export declare function fieldNonEmpty(type: string, field: string): string;
15
16
  export declare function validateDefinedAndNonEmpty(fieldName: string, value: any, ctx: UserContext): void;
17
+ export declare function validateOneOfDefinedAndNonEmpty(fieldNames: string[], value: any, ctx: UserContext): void;
16
18
  export declare function getSuggest(given: string, variants: string[]): string[];
17
19
  export declare function validateExample(example: any, schema: Referenced<Oas3Schema | Oas3_1Schema>, dataLoc: Location, { resolve, location, report }: UserContext, allowAdditionalProperties: boolean): void;
18
20
  export declare function getAdditionalPropertiesOption(opts: Record<string, any>): boolean;
@@ -3,8 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.oasTypeOf = oasTypeOf;
4
4
  exports.matchesJsonSchemaType = matchesJsonSchemaType;
5
5
  exports.missingRequiredField = missingRequiredField;
6
+ exports.missingRequiredOneOfFields = missingRequiredOneOfFields;
6
7
  exports.fieldNonEmpty = fieldNonEmpty;
7
8
  exports.validateDefinedAndNonEmpty = validateDefinedAndNonEmpty;
9
+ exports.validateOneOfDefinedAndNonEmpty = validateOneOfDefinedAndNonEmpty;
8
10
  exports.getSuggest = getSuggest;
9
11
  exports.validateExample = validateExample;
10
12
  exports.getAdditionalPropertiesOption = getAdditionalPropertiesOption;
@@ -55,11 +57,16 @@ function matchesJsonSchemaType(value, type, nullable) {
55
57
  function missingRequiredField(type, field) {
56
58
  return `${type} object should contain \`${field}\` field.`;
57
59
  }
60
+ function missingRequiredOneOfFields(type, fields) {
61
+ return `${type} object should contain one of the fields: ${fields
62
+ .map((field) => `\`${field}\``)
63
+ .join(', ')}.`;
64
+ }
58
65
  function fieldNonEmpty(type, field) {
59
66
  return `${type} object \`${field}\` must be non-empty string.`;
60
67
  }
61
68
  function validateDefinedAndNonEmpty(fieldName, value, ctx) {
62
- if (typeof value !== 'object') {
69
+ if (!(0, utils_1.isPlainObject)(value)) {
63
70
  return;
64
71
  }
65
72
  if (value[fieldName] === undefined) {
@@ -75,6 +82,25 @@ function validateDefinedAndNonEmpty(fieldName, value, ctx) {
75
82
  });
76
83
  }
77
84
  }
85
+ function validateOneOfDefinedAndNonEmpty(fieldNames, value, ctx) {
86
+ if (!(0, utils_1.isPlainObject)(value)) {
87
+ return;
88
+ }
89
+ if (!fieldNames.some((fieldName) => value.hasOwnProperty(fieldName))) {
90
+ ctx.report({
91
+ message: missingRequiredOneOfFields(ctx.type.name, fieldNames),
92
+ location: ctx.location.key(),
93
+ });
94
+ }
95
+ for (const fieldName of fieldNames) {
96
+ if (value.hasOwnProperty(fieldName) && !value[fieldName]) {
97
+ ctx.report({
98
+ message: fieldNonEmpty(ctx.type.name, fieldName),
99
+ location: ctx.location.child([fieldName]).key(),
100
+ });
101
+ }
102
+ }
103
+ }
78
104
  function getSuggest(given, variants) {
79
105
  if (given === null)
80
106
  return variants;