@redocly/openapi-core 1.0.0-beta.99 → 1.0.0-rc.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 (382) hide show
  1. package/README.md +6 -6
  2. package/lib/benchmark/benches/lint-with-top-level-rule-report.bench.js +0 -1
  3. package/lib/benchmark/benches/recommended-oas3.bench.js +1 -1
  4. package/lib/benchmark/benches/resolve-with-no-external.bench.js +1 -1
  5. package/lib/benchmark/utils.d.ts +2 -2
  6. package/lib/benchmark/utils.js +2 -2
  7. package/lib/bundle.d.ts +10 -15
  8. package/lib/bundle.js +32 -12
  9. package/lib/config/all.d.ts +2 -2
  10. package/lib/config/all.js +16 -6
  11. package/lib/config/builtIn.d.ts +2 -2
  12. package/lib/config/builtIn.js +2 -2
  13. package/lib/config/config-resolvers.d.ts +5 -5
  14. package/lib/config/config-resolvers.js +121 -66
  15. package/lib/config/config.d.ts +12 -18
  16. package/lib/config/config.js +42 -26
  17. package/lib/config/load.d.ts +16 -3
  18. package/lib/config/load.js +36 -14
  19. package/lib/config/minimal.d.ts +2 -2
  20. package/lib/config/minimal.js +10 -6
  21. package/lib/config/recommended.d.ts +2 -2
  22. package/lib/config/recommended.js +10 -6
  23. package/lib/config/rules.d.ts +7 -4
  24. package/lib/config/rules.js +5 -4
  25. package/lib/config/types.d.ts +72 -23
  26. package/lib/config/types.js +13 -0
  27. package/lib/config/utils.d.ts +6 -5
  28. package/lib/config/utils.js +110 -32
  29. package/lib/decorators/common/filters/filter-helper.d.ts +3 -0
  30. package/lib/decorators/common/filters/filter-helper.js +67 -0
  31. package/lib/decorators/common/filters/filter-in.d.ts +2 -0
  32. package/lib/decorators/common/filters/filter-in.js +17 -0
  33. package/lib/decorators/common/filters/filter-out.d.ts +2 -0
  34. package/lib/decorators/common/filters/filter-out.js +17 -0
  35. package/lib/decorators/common/info-override.d.ts +2 -0
  36. package/lib/decorators/common/info-override.js +28 -0
  37. package/lib/decorators/common/media-type-examples-override.d.ts +2 -0
  38. package/lib/decorators/common/media-type-examples-override.js +53 -0
  39. package/lib/decorators/common/registry-dependencies.js +2 -2
  40. package/lib/decorators/common/remove-x-internal.js +2 -2
  41. package/lib/decorators/oas2/index.d.ts +3 -0
  42. package/lib/decorators/oas2/index.js +7 -1
  43. package/lib/decorators/oas3/index.d.ts +4 -0
  44. package/lib/decorators/oas3/index.js +9 -1
  45. package/lib/env.d.ts +3 -0
  46. package/lib/env.js +8 -0
  47. package/lib/format/codeframes.js +16 -10
  48. package/lib/format/format.d.ts +1 -1
  49. package/lib/format/format.js +64 -32
  50. package/lib/index.d.ts +6 -6
  51. package/lib/index.js +7 -2
  52. package/lib/js-yaml/index.js +2 -6
  53. package/lib/lint.d.ts +4 -2
  54. package/lib/lint.js +36 -11
  55. package/lib/logger.d.ts +10 -0
  56. package/lib/logger.js +31 -0
  57. package/lib/output.d.ts +3 -0
  58. package/lib/output.js +9 -0
  59. package/lib/redocly/index.js +10 -9
  60. package/lib/redocly/registry-api-types.d.ts +28 -28
  61. package/lib/redocly/registry-api.d.ts +3 -3
  62. package/lib/redocly/registry-api.js +10 -2
  63. package/lib/ref-utils.d.ts +1 -0
  64. package/lib/ref-utils.js +7 -2
  65. package/lib/resolve.d.ts +1 -1
  66. package/lib/resolve.js +33 -3
  67. package/lib/rules/ajv.d.ts +2 -2
  68. package/lib/rules/ajv.js +12 -12
  69. package/lib/rules/common/assertions/asserts.d.ts +29 -4
  70. package/lib/rules/common/assertions/asserts.js +227 -97
  71. package/lib/rules/common/assertions/index.d.ts +27 -2
  72. package/lib/rules/common/assertions/index.js +9 -37
  73. package/lib/rules/common/assertions/utils.d.ts +16 -8
  74. package/lib/rules/common/assertions/utils.js +160 -76
  75. package/lib/rules/common/info-license-url.d.ts +1 -1
  76. package/lib/rules/common/info-license-url.js +5 -10
  77. package/lib/rules/common/info-license.d.ts +2 -0
  78. package/lib/rules/common/info-license.js +17 -0
  79. package/lib/rules/common/no-ambiguous-paths.js +1 -1
  80. package/lib/rules/common/no-enum-type-mismatch.js +1 -3
  81. package/lib/rules/common/no-identical-paths.js +4 -4
  82. package/lib/rules/common/no-invalid-parameter-examples.js +3 -3
  83. package/lib/rules/common/no-invalid-schema-examples.js +3 -3
  84. package/lib/rules/common/operation-2xx-response.js +15 -9
  85. package/lib/rules/common/operation-4xx-response.js +15 -9
  86. package/lib/rules/common/operation-operationId.js +2 -2
  87. package/lib/rules/common/operation-tag-defined.js +1 -1
  88. package/lib/rules/common/path-not-include-query.js +2 -2
  89. package/lib/rules/common/path-params-defined.js +7 -2
  90. package/lib/rules/common/paths-kebab-case.js +4 -1
  91. package/lib/rules/common/required-string-property-missing-min-length.d.ts +2 -0
  92. package/lib/rules/common/required-string-property-missing-min-length.js +37 -0
  93. package/lib/rules/common/response-contains-header.js +2 -2
  94. package/lib/rules/common/scalar-property-missing-example.js +2 -1
  95. package/lib/rules/common/security-defined.d.ts +2 -0
  96. package/lib/rules/common/{operation-security-defined.js → security-defined.js} +25 -6
  97. package/lib/rules/common/spec-strict-refs.d.ts +2 -0
  98. package/lib/rules/common/spec-strict-refs.js +30 -0
  99. package/lib/rules/common/spec.js +41 -18
  100. package/lib/rules/common/tags-alphabetical.js +1 -1
  101. package/lib/rules/oas2/index.d.ts +3 -2
  102. package/lib/rules/oas2/index.js +10 -8
  103. package/lib/rules/oas2/remove-unused-components.js +6 -6
  104. package/lib/rules/oas2/request-mime-type.d.ts +1 -1
  105. package/lib/rules/oas2/request-mime-type.js +1 -1
  106. package/lib/rules/oas2/response-mime-type.d.ts +1 -1
  107. package/lib/rules/oas2/response-mime-type.js +1 -1
  108. package/lib/rules/oas3/component-name-unique.d.ts +2 -0
  109. package/lib/rules/oas3/component-name-unique.js +124 -0
  110. package/lib/rules/oas3/index.js +18 -10
  111. package/lib/rules/oas3/no-empty-servers.js +2 -2
  112. package/lib/rules/oas3/no-invalid-media-type-examples.js +2 -2
  113. package/lib/rules/oas3/no-server-variables-empty-enum.d.ts +2 -0
  114. package/lib/rules/oas3/{no-servers-empty-enum.js → no-server-variables-empty-enum.js} +5 -5
  115. package/lib/rules/oas3/no-unused-components.js +2 -2
  116. package/lib/rules/oas3/operation-4xx-problem-details-rfc7807.d.ts +5 -0
  117. package/lib/rules/oas3/operation-4xx-problem-details-rfc7807.js +36 -0
  118. package/lib/rules/oas3/remove-unused-components.js +6 -6
  119. package/lib/rules/oas3/request-mime-type.d.ts +1 -1
  120. package/lib/rules/oas3/request-mime-type.js +1 -1
  121. package/lib/rules/oas3/response-mime-type.d.ts +1 -1
  122. package/lib/rules/oas3/response-mime-type.js +1 -1
  123. package/lib/rules/oas3/spec-components-invalid-map-name.d.ts +2 -0
  124. package/lib/rules/oas3/spec-components-invalid-map-name.js +62 -0
  125. package/lib/rules/other/stats.d.ts +2 -2
  126. package/lib/rules/other/stats.js +45 -16
  127. package/lib/rules/utils.d.ts +5 -2
  128. package/lib/rules/utils.js +54 -6
  129. package/lib/types/config-external-schemas.d.ts +2193 -0
  130. package/lib/types/config-external-schemas.js +805 -0
  131. package/lib/types/index.d.ts +3 -2
  132. package/lib/types/index.js +9 -1
  133. package/lib/types/oas2.js +91 -15
  134. package/lib/types/oas3.js +125 -46
  135. package/lib/types/oas3_1.js +23 -19
  136. package/lib/types/redocly-yaml.js +406 -60
  137. package/lib/utils.d.ts +15 -4
  138. package/lib/utils.js +72 -8
  139. package/lib/visitors.d.ts +20 -16
  140. package/lib/visitors.js +28 -3
  141. package/lib/walk.d.ts +11 -19
  142. package/lib/walk.js +74 -53
  143. package/package.json +5 -6
  144. package/__tests__/utils.ts +0 -86
  145. package/lib/rules/common/info-description.d.ts +0 -2
  146. package/lib/rules/common/info-description.js +0 -12
  147. package/lib/rules/common/license-url.d.ts +0 -2
  148. package/lib/rules/common/license-url.js +0 -12
  149. package/lib/rules/common/operation-security-defined.d.ts +0 -2
  150. package/lib/rules/oas3/no-servers-empty-enum.d.ts +0 -2
  151. package/src/__tests__/__snapshots__/bundle.test.ts.snap +0 -255
  152. package/src/__tests__/bundle.test.ts +0 -156
  153. package/src/__tests__/codeframes.test.ts +0 -531
  154. package/src/__tests__/fixtures/extension.js +0 -24
  155. package/src/__tests__/fixtures/refs/definitions.yaml +0 -3
  156. package/src/__tests__/fixtures/refs/examples.yaml +0 -8
  157. package/src/__tests__/fixtures/refs/external-request-body.yaml +0 -13
  158. package/src/__tests__/fixtures/refs/externalref.yaml +0 -35
  159. package/src/__tests__/fixtures/refs/hosted.yaml +0 -35
  160. package/src/__tests__/fixtures/refs/openapi-with-external-refs-conflicting-names.yaml +0 -21
  161. package/src/__tests__/fixtures/refs/openapi-with-external-refs.yaml +0 -33
  162. package/src/__tests__/fixtures/refs/openapi-with-url-refs.yaml +0 -18
  163. package/src/__tests__/fixtures/refs/param-b.yaml +0 -1
  164. package/src/__tests__/fixtures/refs/param-c.yaml +0 -1
  165. package/src/__tests__/fixtures/refs/rename.yaml +0 -1
  166. package/src/__tests__/fixtures/refs/requestBody.yaml +0 -9
  167. package/src/__tests__/fixtures/refs/schema-a.yaml +0 -1
  168. package/src/__tests__/fixtures/refs/simple.yaml +0 -1
  169. package/src/__tests__/fixtures/refs/vendor.schema.yaml +0 -20
  170. package/src/__tests__/fixtures/resolve/External.yaml +0 -10
  171. package/src/__tests__/fixtures/resolve/External2.yaml +0 -4
  172. package/src/__tests__/fixtures/resolve/description.md +0 -3
  173. package/src/__tests__/fixtures/resolve/externalInfo.yaml +0 -4
  174. package/src/__tests__/fixtures/resolve/externalLicense.yaml +0 -1
  175. package/src/__tests__/fixtures/resolve/openapi-with-back.yaml +0 -13
  176. package/src/__tests__/fixtures/resolve/openapi-with-md-description.yaml +0 -5
  177. package/src/__tests__/fixtures/resolve/openapi.yaml +0 -28
  178. package/src/__tests__/fixtures/resolve/schemas/type-a.yaml +0 -10
  179. package/src/__tests__/fixtures/resolve/schemas/type-b.yaml +0 -6
  180. package/src/__tests__/fixtures/resolve/transitive/a.yaml +0 -1
  181. package/src/__tests__/fixtures/resolve/transitive/components.yaml +0 -5
  182. package/src/__tests__/fixtures/resolve/transitive/schemas.yaml +0 -3
  183. package/src/__tests__/js-yaml.test.ts +0 -71
  184. package/src/__tests__/lint.test.ts +0 -195
  185. package/src/__tests__/login.test.ts +0 -17
  186. package/src/__tests__/normalizeVisitors.test.ts +0 -151
  187. package/src/__tests__/ref-utils.test.ts +0 -120
  188. package/src/__tests__/resolve-http.test.ts +0 -77
  189. package/src/__tests__/resolve.test.ts +0 -405
  190. package/src/__tests__/utils.test.ts +0 -85
  191. package/src/__tests__/walk.test.ts +0 -1485
  192. package/src/benchmark/benches/lint-with-many-rules.bench.ts +0 -35
  193. package/src/benchmark/benches/lint-with-nested-rule.bench.ts +0 -39
  194. package/src/benchmark/benches/lint-with-no-rules.bench.ts +0 -20
  195. package/src/benchmark/benches/lint-with-top-level-rule-report.bench.ts +0 -36
  196. package/src/benchmark/benches/lint-with-top-level-rule.bench.ts +0 -32
  197. package/src/benchmark/benches/rebilly.yaml +0 -32267
  198. package/src/benchmark/benches/recommended-oas3.bench.ts +0 -22
  199. package/src/benchmark/benches/resolve-with-no-external.bench.ts +0 -23
  200. package/src/benchmark/benchmark.js +0 -307
  201. package/src/benchmark/colors.js +0 -29
  202. package/src/benchmark/fork.js +0 -83
  203. package/src/benchmark/utils.ts +0 -36
  204. package/src/bundle.ts +0 -386
  205. package/src/config/__tests__/__snapshots__/config-resolvers.test.ts.snap +0 -157
  206. package/src/config/__tests__/config-resolvers.test.ts +0 -429
  207. package/src/config/__tests__/config.test.ts +0 -244
  208. package/src/config/__tests__/fixtures/plugin-config.yaml +0 -3
  209. package/src/config/__tests__/fixtures/plugin.js +0 -56
  210. package/src/config/__tests__/fixtures/resolve-config/api/nested-config.yaml +0 -12
  211. package/src/config/__tests__/fixtures/resolve-config/api/plugin.js +0 -67
  212. package/src/config/__tests__/fixtures/resolve-config/local-config-with-circular.yaml +0 -8
  213. package/src/config/__tests__/fixtures/resolve-config/local-config-with-file.yaml +0 -19
  214. package/src/config/__tests__/fixtures/resolve-config/local-config.yaml +0 -10
  215. package/src/config/__tests__/fixtures/resolve-config/plugin.js +0 -66
  216. package/src/config/__tests__/fixtures/resolve-remote-configs/nested-remote-config.yaml +0 -4
  217. package/src/config/__tests__/fixtures/resolve-remote-configs/remote-config.yaml +0 -5
  218. package/src/config/__tests__/load.test.ts +0 -83
  219. package/src/config/__tests__/resolve-plugins.test.ts +0 -27
  220. package/src/config/all.ts +0 -66
  221. package/src/config/builtIn.ts +0 -37
  222. package/src/config/config-resolvers.ts +0 -359
  223. package/src/config/config.ts +0 -312
  224. package/src/config/index.ts +0 -7
  225. package/src/config/load.ts +0 -84
  226. package/src/config/minimal.ts +0 -58
  227. package/src/config/recommended.ts +0 -58
  228. package/src/config/rules.ts +0 -46
  229. package/src/config/types.ts +0 -168
  230. package/src/config/utils.ts +0 -208
  231. package/src/decorators/__tests__/remove-x-internal.test.ts +0 -316
  232. package/src/decorators/common/info-description-override.ts +0 -24
  233. package/src/decorators/common/operation-description-override.ts +0 -30
  234. package/src/decorators/common/registry-dependencies.ts +0 -25
  235. package/src/decorators/common/remove-x-internal.ts +0 -59
  236. package/src/decorators/common/tag-description-override.ts +0 -25
  237. package/src/decorators/oas2/index.ts +0 -14
  238. package/src/decorators/oas3/index.ts +0 -14
  239. package/src/format/codeframes.ts +0 -210
  240. package/src/format/format.ts +0 -339
  241. package/src/index.ts +0 -68
  242. package/src/js-yaml/index.ts +0 -18
  243. package/src/lint.ts +0 -125
  244. package/src/oas-types.ts +0 -62
  245. package/src/redocly/__tests__/redocly-client.test.ts +0 -140
  246. package/src/redocly/index.ts +0 -182
  247. package/src/redocly/redocly-client-types.ts +0 -10
  248. package/src/redocly/registry-api-types.ts +0 -32
  249. package/src/redocly/registry-api.ts +0 -134
  250. package/src/ref-utils.ts +0 -80
  251. package/src/resolve.ts +0 -378
  252. package/src/rules/__tests__/fixtures/invalid-yaml.yaml +0 -1
  253. package/src/rules/__tests__/fixtures/ref.yaml +0 -1
  254. package/src/rules/__tests__/no-unresolved-refs.test.ts +0 -168
  255. package/src/rules/ajv.ts +0 -103
  256. package/src/rules/common/__tests__/info-description.test.ts +0 -102
  257. package/src/rules/common/__tests__/info-license.test.ts +0 -62
  258. package/src/rules/common/__tests__/license-url.test.ts +0 -63
  259. package/src/rules/common/__tests__/no-ambiguous-paths.test.ts +0 -96
  260. package/src/rules/common/__tests__/no-enum-type-mismatch.test.ts +0 -209
  261. package/src/rules/common/__tests__/no-identical-paths.test.ts +0 -58
  262. package/src/rules/common/__tests__/no-path-trailing-slash.test.ts +0 -85
  263. package/src/rules/common/__tests__/operation-2xx-response.test.ts +0 -91
  264. package/src/rules/common/__tests__/operation-4xx-response.test.ts +0 -107
  265. package/src/rules/common/__tests__/operation-operationId-unique.test.ts +0 -76
  266. package/src/rules/common/__tests__/operation-operationId-url-safe.test.ts +0 -45
  267. package/src/rules/common/__tests__/operation-parameters-unique.test.ts +0 -167
  268. package/src/rules/common/__tests__/operation-security-defined.test.ts +0 -69
  269. package/src/rules/common/__tests__/operation-singular-tag.test.ts +0 -72
  270. package/src/rules/common/__tests__/path-http-verbs-order.test.ts +0 -95
  271. package/src/rules/common/__tests__/path-not-include-query.test.ts +0 -64
  272. package/src/rules/common/__tests__/path-params-defined.test.ts +0 -133
  273. package/src/rules/common/__tests__/paths-kebab-case.test.ts +0 -108
  274. package/src/rules/common/__tests__/scalar-property-missing-example.test.ts +0 -207
  275. package/src/rules/common/__tests__/spec.test.ts +0 -62
  276. package/src/rules/common/__tests__/tag-description.test.ts +0 -65
  277. package/src/rules/common/__tests__/tags-alphabetical.test.ts +0 -64
  278. package/src/rules/common/assertions/__tests__/asserts.test.ts +0 -231
  279. package/src/rules/common/assertions/__tests__/index.test.ts +0 -65
  280. package/src/rules/common/assertions/__tests__/utils.test.ts +0 -89
  281. package/src/rules/common/assertions/asserts.ts +0 -137
  282. package/src/rules/common/assertions/index.ts +0 -75
  283. package/src/rules/common/assertions/utils.ts +0 -167
  284. package/src/rules/common/info-contact.ts +0 -15
  285. package/src/rules/common/info-description.ts +0 -10
  286. package/src/rules/common/info-license-url.ts +0 -15
  287. package/src/rules/common/license-url.ts +0 -10
  288. package/src/rules/common/no-ambiguous-paths.ts +0 -50
  289. package/src/rules/common/no-enum-type-mismatch.ts +0 -49
  290. package/src/rules/common/no-http-verbs-in-paths.ts +0 -36
  291. package/src/rules/common/no-identical-paths.ts +0 -24
  292. package/src/rules/common/no-invalid-parameter-examples.ts +0 -36
  293. package/src/rules/common/no-invalid-schema-examples.ts +0 -27
  294. package/src/rules/common/no-path-trailing-slash.ts +0 -15
  295. package/src/rules/common/operation-2xx-response.ts +0 -16
  296. package/src/rules/common/operation-4xx-response.ts +0 -17
  297. package/src/rules/common/operation-description.ts +0 -13
  298. package/src/rules/common/operation-operationId-unique.ts +0 -21
  299. package/src/rules/common/operation-operationId-url-safe.ts +0 -19
  300. package/src/rules/common/operation-operationId.ts +0 -17
  301. package/src/rules/common/operation-parameters-unique.ts +0 -48
  302. package/src/rules/common/operation-security-defined.ts +0 -45
  303. package/src/rules/common/operation-singular-tag.ts +0 -17
  304. package/src/rules/common/operation-summary.ts +0 -13
  305. package/src/rules/common/operation-tag-defined.ts +0 -26
  306. package/src/rules/common/parameter-description.ts +0 -22
  307. package/src/rules/common/path-declaration-must-exist.ts +0 -15
  308. package/src/rules/common/path-excludes-patterns.ts +0 -23
  309. package/src/rules/common/path-http-verbs-order.ts +0 -30
  310. package/src/rules/common/path-not-include-query.ts +0 -17
  311. package/src/rules/common/path-params-defined.ts +0 -58
  312. package/src/rules/common/path-segment-plural.ts +0 -31
  313. package/src/rules/common/paths-kebab-case.ts +0 -16
  314. package/src/rules/common/response-contains-header.ts +0 -30
  315. package/src/rules/common/scalar-property-missing-example.ts +0 -55
  316. package/src/rules/common/spec.ts +0 -143
  317. package/src/rules/common/tag-description.ts +0 -10
  318. package/src/rules/common/tags-alphabetical.ts +0 -20
  319. package/src/rules/no-unresolved-refs.ts +0 -51
  320. package/src/rules/oas2/__tests__/boolean-parameter-prefixes.test.ts +0 -110
  321. package/src/rules/oas2/__tests__/response-contains-header.test.ts +0 -174
  322. package/src/rules/oas2/__tests__/response-contains-property.test.ts +0 -155
  323. package/src/rules/oas2/__tests__/spec/fixtures/description.md +0 -1
  324. package/src/rules/oas2/__tests__/spec/info.test.ts +0 -355
  325. package/src/rules/oas2/__tests__/spec/operation.test.ts +0 -123
  326. package/src/rules/oas2/__tests__/spec/paths.test.ts +0 -245
  327. package/src/rules/oas2/__tests__/spec/referenceableScalars.test.ts +0 -31
  328. package/src/rules/oas2/__tests__/spec/utils.ts +0 -32
  329. package/src/rules/oas2/boolean-parameter-prefixes.ts +0 -26
  330. package/src/rules/oas2/index.ts +0 -89
  331. package/src/rules/oas2/remove-unused-components.ts +0 -76
  332. package/src/rules/oas2/request-mime-type.ts +0 -17
  333. package/src/rules/oas2/response-contains-property.ts +0 -36
  334. package/src/rules/oas2/response-mime-type.ts +0 -17
  335. package/src/rules/oas3/__tests__/boolean-parameter-prefixes.test.ts +0 -111
  336. package/src/rules/oas3/__tests__/fixtures/common.yaml +0 -11
  337. package/src/rules/oas3/__tests__/no-empty-enum-servers.com.test.ts +0 -205
  338. package/src/rules/oas3/__tests__/no-example-value-and-externalValue.test.ts +0 -65
  339. package/src/rules/oas3/__tests__/no-invalid-media-type-examples.test.ts +0 -392
  340. package/src/rules/oas3/__tests__/no-server-example.com.test.ts +0 -60
  341. package/src/rules/oas3/__tests__/no-server-trailing-slash.test.ts +0 -79
  342. package/src/rules/oas3/__tests__/no-unused-components.test.ts +0 -131
  343. package/src/rules/oas3/__tests__/response-contains-header.test.ts +0 -273
  344. package/src/rules/oas3/__tests__/response-contains-property.test.ts +0 -403
  345. package/src/rules/oas3/__tests__/spec/callbacks.test.ts +0 -41
  346. package/src/rules/oas3/__tests__/spec/fixtures/description.md +0 -1
  347. package/src/rules/oas3/__tests__/spec/info.test.ts +0 -391
  348. package/src/rules/oas3/__tests__/spec/operation.test.ts +0 -253
  349. package/src/rules/oas3/__tests__/spec/paths.test.ts +0 -284
  350. package/src/rules/oas3/__tests__/spec/referenceableScalars.test.ts +0 -77
  351. package/src/rules/oas3/__tests__/spec/servers.test.ts +0 -499
  352. package/src/rules/oas3/__tests__/spec/spec.test.ts +0 -288
  353. package/src/rules/oas3/__tests__/spec/utils.ts +0 -32
  354. package/src/rules/oas3/boolean-parameter-prefixes.ts +0 -28
  355. package/src/rules/oas3/index.ts +0 -105
  356. package/src/rules/oas3/no-empty-servers.ts +0 -22
  357. package/src/rules/oas3/no-example-value-and-externalValue.ts +0 -14
  358. package/src/rules/oas3/no-invalid-media-type-examples.ts +0 -41
  359. package/src/rules/oas3/no-server-example.com.ts +0 -14
  360. package/src/rules/oas3/no-server-trailing-slash.ts +0 -15
  361. package/src/rules/oas3/no-servers-empty-enum.ts +0 -67
  362. package/src/rules/oas3/no-undefined-server-variable.ts +0 -30
  363. package/src/rules/oas3/no-unused-components.ts +0 -75
  364. package/src/rules/oas3/remove-unused-components.ts +0 -84
  365. package/src/rules/oas3/request-mime-type.ts +0 -31
  366. package/src/rules/oas3/response-contains-property.ts +0 -38
  367. package/src/rules/oas3/response-mime-type.ts +0 -31
  368. package/src/rules/other/stats.ts +0 -44
  369. package/src/rules/utils.ts +0 -123
  370. package/src/types/index.ts +0 -138
  371. package/src/types/oas2.ts +0 -397
  372. package/src/types/oas3.ts +0 -515
  373. package/src/types/oas3_1.ts +0 -253
  374. package/src/types/redocly-yaml.ts +0 -647
  375. package/src/typings/common.ts +0 -9
  376. package/src/typings/openapi.ts +0 -298
  377. package/src/typings/swagger.ts +0 -236
  378. package/src/utils.ts +0 -193
  379. package/src/visitors.ts +0 -448
  380. package/src/walk.ts +0 -416
  381. package/tsconfig.json +0 -8
  382. package/tsconfig.tsbuildinfo +0 -1
@@ -1,72 +0,0 @@
1
- import { outdent } from 'outdent';
2
- import { lintDocument } from '../../../lint';
3
- import { parseYamlToDocument, replaceSourceWithRef, makeConfig } from '../../../../__tests__/utils';
4
- import { BaseResolver } from '../../../resolve';
5
-
6
- describe('Oas3 operation-singular-tag', () => {
7
- it('should report on operation object if more than one tag', async () => {
8
- const document = parseYamlToDocument(
9
- outdent`
10
- openapi: 3.0.0
11
- tags:
12
- - name: a
13
- - name: b
14
- paths:
15
- /some:
16
- get:
17
- tags:
18
- - a
19
- - b
20
- `,
21
- 'foobar.yaml',
22
- );
23
-
24
- const results = await lintDocument({
25
- externalRefResolver: new BaseResolver(),
26
- document,
27
- config: await makeConfig({ 'operation-singular-tag': 'error' }),
28
- });
29
-
30
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
31
- Array [
32
- Object {
33
- "location": Array [
34
- Object {
35
- "pointer": "#/paths/~1some/get/tags",
36
- "reportOnKey": true,
37
- "source": "foobar.yaml",
38
- },
39
- ],
40
- "message": "Operation \`tags\` object should have only one tag.",
41
- "ruleId": "operation-singular-tag",
42
- "severity": "error",
43
- "suggest": Array [],
44
- },
45
- ]
46
- `);
47
- });
48
-
49
- it('should not report on operation object if only one tag', async () => {
50
- const document = parseYamlToDocument(
51
- outdent`
52
- openapi: 3.0.0
53
- tags:
54
- - name: a
55
- paths:
56
- /some:
57
- get:
58
- tags:
59
- - a
60
- `,
61
- 'foobar.yaml',
62
- );
63
-
64
- const results = await lintDocument({
65
- externalRefResolver: new BaseResolver(),
66
- document,
67
- config: await makeConfig({ 'operation-singular-tag': 'error' }),
68
- });
69
-
70
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`Array []`);
71
- });
72
- });
@@ -1,95 +0,0 @@
1
- import { outdent } from 'outdent';
2
- import { lintDocument } from '../../../lint';
3
- import { parseYamlToDocument, replaceSourceWithRef, makeConfig } from '../../../../__tests__/utils';
4
- import { BaseResolver } from '../../../resolve';
5
-
6
- describe('Common path-http-verbs-order', () => {
7
- it('should report on invalid order', async () => {
8
- const document = parseYamlToDocument(
9
- outdent`
10
- openapi: 3.0.0
11
- paths:
12
- /some:
13
- put:
14
- summary: put
15
- post:
16
- summary: post
17
- get:
18
- summary: post
19
- `,
20
- 'foobar.yaml',
21
- );
22
-
23
- const results = await lintDocument({
24
- externalRefResolver: new BaseResolver(),
25
- document,
26
- config: await makeConfig({ 'path-http-verbs-order': 'error' }),
27
- });
28
-
29
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
30
- Array [
31
- Object {
32
- "location": Array [
33
- Object {
34
- "pointer": "#/paths/~1some/post",
35
- "reportOnKey": true,
36
- "source": "foobar.yaml",
37
- },
38
- ],
39
- "message": "Operation http verbs must be ordered.",
40
- "ruleId": "path-http-verbs-order",
41
- "severity": "error",
42
- "suggest": Array [],
43
- },
44
- Object {
45
- "location": Array [
46
- Object {
47
- "pointer": "#/paths/~1some/get",
48
- "reportOnKey": true,
49
- "source": "foobar.yaml",
50
- },
51
- ],
52
- "message": "Operation http verbs must be ordered.",
53
- "ruleId": "path-http-verbs-order",
54
- "severity": "error",
55
- "suggest": Array [],
56
- },
57
- ]
58
- `);
59
- });
60
-
61
- it('should not report valid order', async () => {
62
- const document = parseYamlToDocument(
63
- outdent`
64
- openapi: 3.0.0
65
- paths:
66
- /some:
67
- get:
68
- summary: get
69
- head:
70
- summary: head
71
- post:
72
- summary: post
73
- put:
74
- summary: put
75
- patch:
76
- summary: patch
77
- delete:
78
- summary: delete
79
- options:
80
- summary: options
81
- trace:
82
- summary: trace
83
- `,
84
- 'foobar.yaml',
85
- );
86
-
87
- const results = await lintDocument({
88
- externalRefResolver: new BaseResolver(),
89
- document,
90
- config: await makeConfig({ 'path-http-verbs-order': 'error' }),
91
- });
92
-
93
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`Array []`);
94
- });
95
- });
@@ -1,64 +0,0 @@
1
- import { outdent } from 'outdent';
2
- import { lintDocument } from '../../../lint';
3
- import { parseYamlToDocument, replaceSourceWithRef, makeConfig } from '../../../../__tests__/utils';
4
- import { BaseResolver } from '../../../resolve';
5
-
6
- describe('Oas3 path-not-include-query', () => {
7
- it('should report on path object if query params in pathitem', async () => {
8
- const document = parseYamlToDocument(
9
- outdent`
10
- openapi: 3.0.0
11
- paths:
12
- /some?input:
13
- get:
14
- summary: List all pets
15
- `,
16
- 'foobar.yaml',
17
- );
18
-
19
- const results = await lintDocument({
20
- externalRefResolver: new BaseResolver(),
21
- document,
22
- config: await makeConfig({ 'path-not-include-query': 'error' }),
23
- });
24
-
25
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
26
- Array [
27
- Object {
28
- "location": Array [
29
- Object {
30
- "pointer": "#/paths/~1some?input",
31
- "reportOnKey": true,
32
- "source": "foobar.yaml",
33
- },
34
- ],
35
- "message": "Don't put query string items in the path, they belong in parameters with \`in: query\`.",
36
- "ruleId": "path-not-include-query",
37
- "severity": "error",
38
- "suggest": Array [],
39
- },
40
- ]
41
- `);
42
- });
43
-
44
- it('should not report on path object if no query params in pathitem', async () => {
45
- const document = parseYamlToDocument(
46
- outdent`
47
- openapi: 3.0.0
48
- paths:
49
- /some:
50
- get:
51
- summary: List all pets
52
- `,
53
- 'foobar.yaml',
54
- );
55
-
56
- const results = await lintDocument({
57
- externalRefResolver: new BaseResolver(),
58
- document,
59
- config: await makeConfig({ 'path-not-include-query': 'error' }),
60
- });
61
-
62
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`Array []`);
63
- });
64
- });
@@ -1,133 +0,0 @@
1
- import { outdent } from 'outdent';
2
- import { lintDocument } from '../../../lint';
3
- import { parseYamlToDocument, replaceSourceWithRef, makeConfig } from '../../../../__tests__/utils';
4
- import { BaseResolver } from '../../../resolve';
5
-
6
- describe('Oas3 path-params-defined', () => {
7
- it('should not report on defined params', async () => {
8
- const document = parseYamlToDocument(
9
- outdent`
10
- openapi: 3.0.0
11
- paths:
12
- /pets/{a}/{b}:
13
- parameters:
14
- - name: a
15
- in: path
16
- get:
17
- parameters:
18
- - name: b
19
- in: path
20
- `,
21
- 'foobar.yaml',
22
- );
23
-
24
- const results = await lintDocument({
25
- externalRefResolver: new BaseResolver(),
26
- document,
27
- config: await makeConfig({ 'path-params-defined': 'error' }),
28
- });
29
-
30
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`Array []`);
31
- });
32
-
33
- it('should report on undefined param params', async () => {
34
- const document = parseYamlToDocument(
35
- outdent`
36
- openapi: 3.0.0
37
- paths:
38
- /pets/{a}/{b}:
39
- parameters:
40
- - name: a
41
- in: path
42
- - name: b
43
- in: header
44
- get:
45
- parameters:
46
- - name: b
47
- in: query
48
- `,
49
- 'foobar.yaml',
50
- );
51
-
52
- const results = await lintDocument({
53
- externalRefResolver: new BaseResolver(),
54
- document,
55
- config: await makeConfig({ 'path-params-defined': 'error' }),
56
- });
57
-
58
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
59
- Array [
60
- Object {
61
- "location": Array [
62
- Object {
63
- "pointer": "#/paths/~1pets~1{a}~1{b}/get/parameters",
64
- "reportOnKey": true,
65
- "source": "foobar.yaml",
66
- },
67
- ],
68
- "message": "The operation does not define the path parameter \`{b}\` expected by path \`/pets/{a}/{b}\`.",
69
- "ruleId": "path-params-defined",
70
- "severity": "error",
71
- "suggest": Array [],
72
- },
73
- ]
74
- `);
75
- });
76
-
77
- it('should report on undeclared param', async () => {
78
- const document = parseYamlToDocument(
79
- outdent`
80
- openapi: 3.0.0
81
- paths:
82
- /pets/{a}:
83
- parameters:
84
- - name: a
85
- in: path
86
- - name: d
87
- in: path
88
- get:
89
- parameters:
90
- - name: c
91
- in: path
92
- `,
93
- 'foobar.yaml',
94
- );
95
-
96
- const results = await lintDocument({
97
- externalRefResolver: new BaseResolver(),
98
- document,
99
- config: await makeConfig({ 'path-params-defined': 'error' }),
100
- });
101
-
102
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
103
- Array [
104
- Object {
105
- "location": Array [
106
- Object {
107
- "pointer": "#/paths/~1pets~1{a}/parameters/1/name",
108
- "reportOnKey": false,
109
- "source": "foobar.yaml",
110
- },
111
- ],
112
- "message": "Path parameter \`d\` is not used in the path \`/pets/{a}\`.",
113
- "ruleId": "path-params-defined",
114
- "severity": "error",
115
- "suggest": Array [],
116
- },
117
- Object {
118
- "location": Array [
119
- Object {
120
- "pointer": "#/paths/~1pets~1{a}/get/parameters/0/name",
121
- "reportOnKey": false,
122
- "source": "foobar.yaml",
123
- },
124
- ],
125
- "message": "Path parameter \`c\` is not used in the path \`/pets/{a}\`.",
126
- "ruleId": "path-params-defined",
127
- "severity": "error",
128
- "suggest": Array [],
129
- },
130
- ]
131
- `);
132
- });
133
- });
@@ -1,108 +0,0 @@
1
- import { outdent } from 'outdent';
2
- import { lintDocument } from '../../../lint';
3
- import { parseYamlToDocument, replaceSourceWithRef, makeConfig } from '../../../../__tests__/utils';
4
- import { BaseResolver } from '../../../resolve';
5
-
6
- describe('Oas3 paths-kebab-case', () => {
7
- it('should report on no kebab-case path', async () => {
8
- const document = parseYamlToDocument(
9
- outdent`
10
- openapi: 3.0.0
11
- paths:
12
- /someTest:
13
- get:
14
- summary: List all pets
15
- /test-123:
16
- get:
17
- summary: Test
18
- `,
19
- 'foobar.yaml',
20
- );
21
-
22
- const results = await lintDocument({
23
- externalRefResolver: new BaseResolver(),
24
- document,
25
- config: await makeConfig({ 'paths-kebab-case': 'error' }),
26
- });
27
-
28
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
29
- Array [
30
- Object {
31
- "location": Array [
32
- Object {
33
- "pointer": "#/paths/~1someTest",
34
- "reportOnKey": true,
35
- "source": "foobar.yaml",
36
- },
37
- ],
38
- "message": "\`/someTest\` does not use kebab-case.",
39
- "ruleId": "paths-kebab-case",
40
- "severity": "error",
41
- "suggest": Array [],
42
- },
43
- ]
44
- `);
45
- });
46
- it('should report when snake_case is used', async () => {
47
- const document = parseYamlToDocument(
48
- outdent`
49
- openapi: 3.0.0
50
- paths:
51
- /some_test:
52
- get:
53
- summary: List all pets
54
- /test-123:
55
- get:
56
- summary: Test
57
- `,
58
- 'foobar.yaml',
59
- );
60
-
61
- const results = await lintDocument({
62
- externalRefResolver: new BaseResolver(),
63
- document,
64
- config: await makeConfig({ 'paths-kebab-case': 'error' }),
65
- });
66
-
67
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
68
- Array [
69
- Object {
70
- "location": Array [
71
- Object {
72
- "pointer": "#/paths/~1some_test",
73
- "reportOnKey": true,
74
- "source": "foobar.yaml",
75
- },
76
- ],
77
- "message": "\`/some_test\` does not use kebab-case.",
78
- "ruleId": "paths-kebab-case",
79
- "severity": "error",
80
- "suggest": Array [],
81
- },
82
- ]
83
- `);
84
- });
85
-
86
- it('should allow trailing slash in path with "paths-kebab-case" rule', async () => {
87
- const document = parseYamlToDocument(
88
- outdent`
89
- openapi: 3.0.0
90
- paths:
91
- /some/:
92
- get:
93
- summary: List all pets
94
- `,
95
- 'foobar.yaml',
96
- );
97
-
98
- const results = await lintDocument({
99
- externalRefResolver: new BaseResolver(),
100
- document,
101
- config: await makeConfig({
102
- 'paths-kebab-case': 'error',
103
- 'no-path-trailing-slash': 'off',
104
- }),
105
- });
106
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`Array []`);
107
- });
108
- });
@@ -1,207 +0,0 @@
1
- import { outdent } from 'outdent';
2
- import { lintDocument } from '../../../lint';
3
- import { parseYamlToDocument, replaceSourceWithRef, makeConfig } from '../../../../__tests__/utils';
4
- import { BaseResolver } from '../../../resolve';
5
-
6
- describe('Oas3 scalar-property-missing-example', () => {
7
- it('should report on a scalar property missing example', async () => {
8
- const document = parseYamlToDocument(
9
- outdent`
10
- openapi: 3.0.0
11
- components:
12
- schemas:
13
- User:
14
- type: object
15
- properties:
16
- email:
17
- description: User email address
18
- type: string
19
- format: email
20
- `,
21
- 'foobar.yaml',
22
- );
23
-
24
- const results = await lintDocument({
25
- externalRefResolver: new BaseResolver(),
26
- document,
27
- config: await makeConfig({ 'scalar-property-missing-example': 'error' }),
28
- });
29
-
30
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
31
- Array [
32
- Object {
33
- "location": Array [
34
- Object {
35
- "pointer": "#/components/schemas/User/properties/email",
36
- "reportOnKey": true,
37
- "source": "foobar.yaml",
38
- },
39
- ],
40
- "message": "Scalar property should have \\"example\\" defined.",
41
- "ruleId": "scalar-property-missing-example",
42
- "severity": "error",
43
- "suggest": Array [],
44
- },
45
- ]
46
- `);
47
- });
48
- });
49
-
50
- describe('Oas3.1 scalar-property-missing-example', () => {
51
- it('should report on a scalar property missing example', async () => {
52
- const document = parseYamlToDocument(
53
- outdent`
54
- openapi: 3.1.0
55
- components:
56
- schemas:
57
- User:
58
- type: object
59
- properties:
60
- email:
61
- description: User email address
62
- type: string
63
- format: email
64
- `,
65
- 'foobar.yaml',
66
- );
67
-
68
- const results = await lintDocument({
69
- externalRefResolver: new BaseResolver(),
70
- document,
71
- config: await makeConfig({ 'scalar-property-missing-example': 'error' }),
72
- });
73
-
74
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
75
- Array [
76
- Object {
77
- "location": Array [
78
- Object {
79
- "pointer": "#/components/schemas/User/properties/email",
80
- "reportOnKey": true,
81
- "source": "foobar.yaml",
82
- },
83
- ],
84
- "message": "Scalar property should have \\"example\\" or \\"examples\\" defined.",
85
- "ruleId": "scalar-property-missing-example",
86
- "severity": "error",
87
- "suggest": Array [],
88
- },
89
- ]
90
- `);
91
- });
92
-
93
- it('should not report on a scalar property with an example', async () => {
94
- const document = parseYamlToDocument(
95
- outdent`
96
- openapi: 3.1.0
97
- components:
98
- schemas:
99
- User:
100
- type: object
101
- properties:
102
- email:
103
- description: User email address
104
- type: string
105
- format: email
106
- example: john.smith@example.com
107
- `,
108
- 'foobar.yaml',
109
- );
110
-
111
- const results = await lintDocument({
112
- externalRefResolver: new BaseResolver(),
113
- document,
114
- config: await makeConfig({ 'scalar-property-missing-example': 'error' }),
115
- });
116
-
117
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`Array []`);
118
- });
119
-
120
- it('should not report on a scalar property with an examples', async () => {
121
- const document = parseYamlToDocument(
122
- outdent`
123
- openapi: 3.1.0
124
- components:
125
- schemas:
126
- User:
127
- type: object
128
- properties:
129
- email:
130
- description: User email address
131
- type: string
132
- format: email
133
- examples:
134
- - john.smith@example.com
135
- - other@example.com
136
- `,
137
- 'foobar.yaml',
138
- );
139
-
140
- const results = await lintDocument({
141
- externalRefResolver: new BaseResolver(),
142
- document,
143
- config: await makeConfig({ 'scalar-property-missing-example': 'error' }),
144
- });
145
-
146
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`Array []`);
147
- });
148
-
149
- it('should not report on a non-scalar property missing an example', async () => {
150
- const document = parseYamlToDocument(
151
- outdent`
152
- openapi: 3.1.0
153
- components:
154
- schemas:
155
- Pet:
156
- type: object
157
- required:
158
- - photoUrls
159
- properties:
160
- photoUrls:
161
- description: The list of URL to a cute photos featuring pet
162
- type: array
163
- maxItems: 20
164
- xml:
165
- name: photoUrl
166
- wrapped: true
167
- items:
168
- type: string
169
- format: url
170
- `,
171
- 'foobar.yaml',
172
- );
173
-
174
- const results = await lintDocument({
175
- externalRefResolver: new BaseResolver(),
176
- document,
177
- config: await makeConfig({ 'scalar-property-missing-example': 'error' }),
178
- });
179
-
180
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`Array []`);
181
- });
182
-
183
- it('should not report on a scalar property of binary format missing an example', async () => {
184
- const document = parseYamlToDocument(
185
- outdent`
186
- openapi: 3.1.0
187
- components:
188
- schemas:
189
- User:
190
- type: object
191
- properties:
192
- responses:
193
- type: string
194
- format: binary
195
- `,
196
- 'foobar.yaml',
197
- );
198
-
199
- const results = await lintDocument({
200
- externalRefResolver: new BaseResolver(),
201
- document,
202
- config: await makeConfig({ 'scalar-property-missing-example': 'error' }),
203
- });
204
-
205
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`Array []`);
206
- });
207
- });