@redocly/openapi-core 1.0.0-beta.98 → 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 (380) 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 +12 -15
  8. package/lib/bundle.js +38 -15
  9. package/lib/config/all.d.ts +2 -2
  10. package/lib/config/all.js +17 -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 +8 -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.d.ts +2 -0
  94. package/lib/rules/common/response-contains-header.js +29 -0
  95. package/lib/rules/common/scalar-property-missing-example.d.ts +2 -0
  96. package/lib/rules/common/scalar-property-missing-example.js +42 -0
  97. package/lib/rules/common/security-defined.d.ts +2 -0
  98. package/lib/rules/common/{operation-security-defined.js → security-defined.js} +25 -6
  99. package/lib/rules/common/spec-strict-refs.d.ts +2 -0
  100. package/lib/rules/common/spec-strict-refs.js +30 -0
  101. package/lib/rules/common/spec.js +41 -18
  102. package/lib/rules/common/tags-alphabetical.js +1 -1
  103. package/lib/rules/oas2/index.d.ts +6 -2
  104. package/lib/rules/oas2/index.js +16 -8
  105. package/lib/rules/oas2/remove-unused-components.js +6 -6
  106. package/lib/rules/oas2/request-mime-type.d.ts +1 -1
  107. package/lib/rules/oas2/request-mime-type.js +1 -1
  108. package/lib/rules/oas2/response-contains-property.d.ts +2 -0
  109. package/lib/rules/oas2/response-contains-property.js +38 -0
  110. package/lib/rules/oas2/response-mime-type.d.ts +1 -1
  111. package/lib/rules/oas2/response-mime-type.js +1 -1
  112. package/lib/rules/oas3/component-name-unique.d.ts +2 -0
  113. package/lib/rules/oas3/component-name-unique.js +124 -0
  114. package/lib/rules/oas3/index.js +24 -10
  115. package/lib/rules/oas3/no-empty-servers.js +2 -2
  116. package/lib/rules/oas3/no-invalid-media-type-examples.js +2 -2
  117. package/lib/rules/oas3/no-server-variables-empty-enum.d.ts +2 -0
  118. package/lib/rules/oas3/{no-servers-empty-enum.js → no-server-variables-empty-enum.js} +5 -5
  119. package/lib/rules/oas3/no-unused-components.js +2 -2
  120. package/lib/rules/oas3/operation-4xx-problem-details-rfc7807.d.ts +5 -0
  121. package/lib/rules/oas3/operation-4xx-problem-details-rfc7807.js +36 -0
  122. package/lib/rules/oas3/remove-unused-components.js +6 -6
  123. package/lib/rules/oas3/request-mime-type.d.ts +1 -1
  124. package/lib/rules/oas3/request-mime-type.js +1 -1
  125. package/lib/rules/oas3/response-contains-property.d.ts +2 -0
  126. package/lib/rules/oas3/response-contains-property.js +40 -0
  127. package/lib/rules/oas3/response-mime-type.d.ts +1 -1
  128. package/lib/rules/oas3/response-mime-type.js +1 -1
  129. package/lib/rules/oas3/spec-components-invalid-map-name.d.ts +2 -0
  130. package/lib/rules/oas3/spec-components-invalid-map-name.js +62 -0
  131. package/lib/rules/other/stats.d.ts +2 -2
  132. package/lib/rules/other/stats.js +45 -16
  133. package/lib/rules/utils.d.ts +5 -2
  134. package/lib/rules/utils.js +54 -6
  135. package/lib/types/config-external-schemas.d.ts +2193 -0
  136. package/lib/types/config-external-schemas.js +805 -0
  137. package/lib/types/index.d.ts +3 -2
  138. package/lib/types/index.js +9 -1
  139. package/lib/types/oas2.js +91 -15
  140. package/lib/types/oas3.js +139 -49
  141. package/lib/types/oas3_1.js +32 -26
  142. package/lib/types/redocly-yaml.js +414 -58
  143. package/lib/typings/openapi.d.ts +3 -2
  144. package/lib/utils.d.ts +15 -3
  145. package/lib/utils.js +73 -7
  146. package/lib/visitors.d.ts +20 -16
  147. package/lib/visitors.js +28 -3
  148. package/lib/walk.d.ts +11 -19
  149. package/lib/walk.js +74 -53
  150. package/package.json +5 -6
  151. package/__tests__/__snapshots__/bundle.test.ts.snap +0 -229
  152. package/__tests__/bundle.test.ts +0 -132
  153. package/__tests__/codeframes.test.ts +0 -531
  154. package/__tests__/fixtures/extension.js +0 -24
  155. package/__tests__/fixtures/refs/definitions.yaml +0 -3
  156. package/__tests__/fixtures/refs/examples.yaml +0 -8
  157. package/__tests__/fixtures/refs/external-request-body.yaml +0 -13
  158. package/__tests__/fixtures/refs/externalref.yaml +0 -35
  159. package/__tests__/fixtures/refs/hosted.yaml +0 -35
  160. package/__tests__/fixtures/refs/openapi-with-external-refs-conflicting-names.yaml +0 -21
  161. package/__tests__/fixtures/refs/openapi-with-external-refs.yaml +0 -33
  162. package/__tests__/fixtures/refs/param-b.yaml +0 -1
  163. package/__tests__/fixtures/refs/param-c.yaml +0 -1
  164. package/__tests__/fixtures/refs/rename.yaml +0 -1
  165. package/__tests__/fixtures/refs/requestBody.yaml +0 -9
  166. package/__tests__/fixtures/refs/schema-a.yaml +0 -1
  167. package/__tests__/fixtures/refs/simple.yaml +0 -1
  168. package/__tests__/fixtures/refs/vendor.schema.yaml +0 -20
  169. package/__tests__/fixtures/resolve/External.yaml +0 -10
  170. package/__tests__/fixtures/resolve/External2.yaml +0 -4
  171. package/__tests__/fixtures/resolve/description.md +0 -3
  172. package/__tests__/fixtures/resolve/externalInfo.yaml +0 -4
  173. package/__tests__/fixtures/resolve/externalLicense.yaml +0 -1
  174. package/__tests__/fixtures/resolve/openapi-with-back.yaml +0 -13
  175. package/__tests__/fixtures/resolve/openapi-with-md-description.yaml +0 -5
  176. package/__tests__/fixtures/resolve/openapi.yaml +0 -28
  177. package/__tests__/fixtures/resolve/schemas/type-a.yaml +0 -10
  178. package/__tests__/fixtures/resolve/schemas/type-b.yaml +0 -6
  179. package/__tests__/fixtures/resolve/transitive/a.yaml +0 -1
  180. package/__tests__/fixtures/resolve/transitive/components.yaml +0 -5
  181. package/__tests__/fixtures/resolve/transitive/schemas.yaml +0 -3
  182. package/__tests__/lint.test.ts +0 -17
  183. package/__tests__/login.test.ts +0 -17
  184. package/__tests__/normalizeVisitors.test.ts +0 -151
  185. package/__tests__/ref-utils.test.ts +0 -120
  186. package/__tests__/resolve-http.test.ts +0 -77
  187. package/__tests__/resolve.test.ts +0 -405
  188. package/__tests__/utils.ts +0 -86
  189. package/__tests__/walk.test.ts +0 -1485
  190. package/lib/rules/common/info-description.d.ts +0 -2
  191. package/lib/rules/common/info-description.js +0 -12
  192. package/lib/rules/common/license-url.d.ts +0 -2
  193. package/lib/rules/common/license-url.js +0 -12
  194. package/lib/rules/common/operation-security-defined.d.ts +0 -2
  195. package/lib/rules/oas3/no-servers-empty-enum.d.ts +0 -2
  196. package/src/__tests__/js-yaml.test.ts +0 -71
  197. package/src/__tests__/lint.test.ts +0 -182
  198. package/src/__tests__/utils.test.ts +0 -74
  199. package/src/benchmark/benches/lint-with-many-rules.bench.ts +0 -35
  200. package/src/benchmark/benches/lint-with-nested-rule.bench.ts +0 -39
  201. package/src/benchmark/benches/lint-with-no-rules.bench.ts +0 -20
  202. package/src/benchmark/benches/lint-with-top-level-rule-report.bench.ts +0 -36
  203. package/src/benchmark/benches/lint-with-top-level-rule.bench.ts +0 -32
  204. package/src/benchmark/benches/rebilly.yaml +0 -32267
  205. package/src/benchmark/benches/recommended-oas3.bench.ts +0 -22
  206. package/src/benchmark/benches/resolve-with-no-external.bench.ts +0 -23
  207. package/src/benchmark/benchmark.js +0 -307
  208. package/src/benchmark/colors.js +0 -29
  209. package/src/benchmark/fork.js +0 -83
  210. package/src/benchmark/utils.ts +0 -36
  211. package/src/bundle.ts +0 -371
  212. package/src/config/__tests__/__snapshots__/config-resolvers.test.ts.snap +0 -157
  213. package/src/config/__tests__/config-resolvers.test.ts +0 -429
  214. package/src/config/__tests__/config.test.ts +0 -244
  215. package/src/config/__tests__/fixtures/plugin-config.yaml +0 -3
  216. package/src/config/__tests__/fixtures/plugin.js +0 -56
  217. package/src/config/__tests__/fixtures/resolve-config/api/nested-config.yaml +0 -12
  218. package/src/config/__tests__/fixtures/resolve-config/api/plugin.js +0 -67
  219. package/src/config/__tests__/fixtures/resolve-config/local-config-with-circular.yaml +0 -8
  220. package/src/config/__tests__/fixtures/resolve-config/local-config-with-file.yaml +0 -19
  221. package/src/config/__tests__/fixtures/resolve-config/local-config.yaml +0 -10
  222. package/src/config/__tests__/fixtures/resolve-config/plugin.js +0 -66
  223. package/src/config/__tests__/fixtures/resolve-remote-configs/nested-remote-config.yaml +0 -4
  224. package/src/config/__tests__/fixtures/resolve-remote-configs/remote-config.yaml +0 -5
  225. package/src/config/__tests__/load.test.ts +0 -83
  226. package/src/config/__tests__/resolve-plugins.test.ts +0 -27
  227. package/src/config/all.ts +0 -65
  228. package/src/config/builtIn.ts +0 -37
  229. package/src/config/config-resolvers.ts +0 -359
  230. package/src/config/config.ts +0 -312
  231. package/src/config/index.ts +0 -7
  232. package/src/config/load.ts +0 -84
  233. package/src/config/minimal.ts +0 -58
  234. package/src/config/recommended.ts +0 -58
  235. package/src/config/rules.ts +0 -46
  236. package/src/config/types.ts +0 -168
  237. package/src/config/utils.ts +0 -208
  238. package/src/decorators/__tests__/remove-x-internal.test.ts +0 -316
  239. package/src/decorators/common/info-description-override.ts +0 -24
  240. package/src/decorators/common/operation-description-override.ts +0 -30
  241. package/src/decorators/common/registry-dependencies.ts +0 -25
  242. package/src/decorators/common/remove-x-internal.ts +0 -59
  243. package/src/decorators/common/tag-description-override.ts +0 -25
  244. package/src/decorators/oas2/index.ts +0 -14
  245. package/src/decorators/oas3/index.ts +0 -14
  246. package/src/format/codeframes.ts +0 -210
  247. package/src/format/format.ts +0 -339
  248. package/src/index.ts +0 -68
  249. package/src/js-yaml/index.ts +0 -18
  250. package/src/lint.ts +0 -125
  251. package/src/oas-types.ts +0 -62
  252. package/src/redocly/__tests__/redocly-client.test.ts +0 -140
  253. package/src/redocly/index.ts +0 -182
  254. package/src/redocly/redocly-client-types.ts +0 -10
  255. package/src/redocly/registry-api-types.ts +0 -32
  256. package/src/redocly/registry-api.ts +0 -134
  257. package/src/ref-utils.ts +0 -79
  258. package/src/resolve.ts +0 -378
  259. package/src/rules/__tests__/fixtures/invalid-yaml.yaml +0 -1
  260. package/src/rules/__tests__/fixtures/ref.yaml +0 -1
  261. package/src/rules/__tests__/no-unresolved-refs.test.ts +0 -168
  262. package/src/rules/ajv.ts +0 -103
  263. package/src/rules/common/__tests__/info-description.test.ts +0 -102
  264. package/src/rules/common/__tests__/info-license.test.ts +0 -62
  265. package/src/rules/common/__tests__/license-url.test.ts +0 -63
  266. package/src/rules/common/__tests__/no-ambiguous-paths.test.ts +0 -96
  267. package/src/rules/common/__tests__/no-enum-type-mismatch.test.ts +0 -209
  268. package/src/rules/common/__tests__/no-identical-paths.test.ts +0 -58
  269. package/src/rules/common/__tests__/no-path-trailing-slash.test.ts +0 -85
  270. package/src/rules/common/__tests__/operation-2xx-response.test.ts +0 -91
  271. package/src/rules/common/__tests__/operation-4xx-response.test.ts +0 -107
  272. package/src/rules/common/__tests__/operation-operationId-unique.test.ts +0 -76
  273. package/src/rules/common/__tests__/operation-operationId-url-safe.test.ts +0 -45
  274. package/src/rules/common/__tests__/operation-parameters-unique.test.ts +0 -167
  275. package/src/rules/common/__tests__/operation-security-defined.test.ts +0 -69
  276. package/src/rules/common/__tests__/operation-singular-tag.test.ts +0 -72
  277. package/src/rules/common/__tests__/path-http-verbs-order.test.ts +0 -95
  278. package/src/rules/common/__tests__/path-not-include-query.test.ts +0 -64
  279. package/src/rules/common/__tests__/path-params-defined.test.ts +0 -133
  280. package/src/rules/common/__tests__/paths-kebab-case.test.ts +0 -108
  281. package/src/rules/common/__tests__/spec.test.ts +0 -62
  282. package/src/rules/common/__tests__/tag-description.test.ts +0 -65
  283. package/src/rules/common/__tests__/tags-alphabetical.test.ts +0 -64
  284. package/src/rules/common/assertions/__tests__/asserts.test.ts +0 -231
  285. package/src/rules/common/assertions/__tests__/index.test.ts +0 -65
  286. package/src/rules/common/assertions/__tests__/utils.test.ts +0 -89
  287. package/src/rules/common/assertions/asserts.ts +0 -137
  288. package/src/rules/common/assertions/index.ts +0 -75
  289. package/src/rules/common/assertions/utils.ts +0 -167
  290. package/src/rules/common/info-contact.ts +0 -15
  291. package/src/rules/common/info-description.ts +0 -10
  292. package/src/rules/common/info-license-url.ts +0 -15
  293. package/src/rules/common/license-url.ts +0 -10
  294. package/src/rules/common/no-ambiguous-paths.ts +0 -50
  295. package/src/rules/common/no-enum-type-mismatch.ts +0 -49
  296. package/src/rules/common/no-http-verbs-in-paths.ts +0 -36
  297. package/src/rules/common/no-identical-paths.ts +0 -24
  298. package/src/rules/common/no-invalid-parameter-examples.ts +0 -36
  299. package/src/rules/common/no-invalid-schema-examples.ts +0 -27
  300. package/src/rules/common/no-path-trailing-slash.ts +0 -15
  301. package/src/rules/common/operation-2xx-response.ts +0 -16
  302. package/src/rules/common/operation-4xx-response.ts +0 -17
  303. package/src/rules/common/operation-description.ts +0 -13
  304. package/src/rules/common/operation-operationId-unique.ts +0 -21
  305. package/src/rules/common/operation-operationId-url-safe.ts +0 -19
  306. package/src/rules/common/operation-operationId.ts +0 -17
  307. package/src/rules/common/operation-parameters-unique.ts +0 -48
  308. package/src/rules/common/operation-security-defined.ts +0 -45
  309. package/src/rules/common/operation-singular-tag.ts +0 -17
  310. package/src/rules/common/operation-summary.ts +0 -13
  311. package/src/rules/common/operation-tag-defined.ts +0 -26
  312. package/src/rules/common/parameter-description.ts +0 -22
  313. package/src/rules/common/path-declaration-must-exist.ts +0 -15
  314. package/src/rules/common/path-excludes-patterns.ts +0 -23
  315. package/src/rules/common/path-http-verbs-order.ts +0 -30
  316. package/src/rules/common/path-not-include-query.ts +0 -17
  317. package/src/rules/common/path-params-defined.ts +0 -58
  318. package/src/rules/common/path-segment-plural.ts +0 -31
  319. package/src/rules/common/paths-kebab-case.ts +0 -16
  320. package/src/rules/common/spec.ts +0 -143
  321. package/src/rules/common/tag-description.ts +0 -10
  322. package/src/rules/common/tags-alphabetical.ts +0 -20
  323. package/src/rules/no-unresolved-refs.ts +0 -51
  324. package/src/rules/oas2/__tests__/boolean-parameter-prefixes.test.ts +0 -110
  325. package/src/rules/oas2/__tests__/spec/fixtures/description.md +0 -1
  326. package/src/rules/oas2/__tests__/spec/info.test.ts +0 -355
  327. package/src/rules/oas2/__tests__/spec/operation.test.ts +0 -123
  328. package/src/rules/oas2/__tests__/spec/paths.test.ts +0 -245
  329. package/src/rules/oas2/__tests__/spec/referenceableScalars.test.ts +0 -31
  330. package/src/rules/oas2/__tests__/spec/utils.ts +0 -32
  331. package/src/rules/oas2/boolean-parameter-prefixes.ts +0 -26
  332. package/src/rules/oas2/index.ts +0 -83
  333. package/src/rules/oas2/remove-unused-components.ts +0 -76
  334. package/src/rules/oas2/request-mime-type.ts +0 -17
  335. package/src/rules/oas2/response-mime-type.ts +0 -17
  336. package/src/rules/oas3/__tests__/boolean-parameter-prefixes.test.ts +0 -111
  337. package/src/rules/oas3/__tests__/fixtures/common.yaml +0 -11
  338. package/src/rules/oas3/__tests__/no-empty-enum-servers.com.test.ts +0 -205
  339. package/src/rules/oas3/__tests__/no-example-value-and-externalValue.test.ts +0 -65
  340. package/src/rules/oas3/__tests__/no-invalid-media-type-examples.test.ts +0 -392
  341. package/src/rules/oas3/__tests__/no-server-example.com.test.ts +0 -60
  342. package/src/rules/oas3/__tests__/no-server-trailing-slash.test.ts +0 -79
  343. package/src/rules/oas3/__tests__/no-unused-components.test.ts +0 -131
  344. package/src/rules/oas3/__tests__/spec/callbacks.test.ts +0 -41
  345. package/src/rules/oas3/__tests__/spec/fixtures/description.md +0 -1
  346. package/src/rules/oas3/__tests__/spec/info.test.ts +0 -391
  347. package/src/rules/oas3/__tests__/spec/operation.test.ts +0 -253
  348. package/src/rules/oas3/__tests__/spec/paths.test.ts +0 -284
  349. package/src/rules/oas3/__tests__/spec/referenceableScalars.test.ts +0 -77
  350. package/src/rules/oas3/__tests__/spec/servers.test.ts +0 -499
  351. package/src/rules/oas3/__tests__/spec/spec.test.ts +0 -288
  352. package/src/rules/oas3/__tests__/spec/utils.ts +0 -32
  353. package/src/rules/oas3/boolean-parameter-prefixes.ts +0 -28
  354. package/src/rules/oas3/index.ts +0 -99
  355. package/src/rules/oas3/no-empty-servers.ts +0 -22
  356. package/src/rules/oas3/no-example-value-and-externalValue.ts +0 -14
  357. package/src/rules/oas3/no-invalid-media-type-examples.ts +0 -41
  358. package/src/rules/oas3/no-server-example.com.ts +0 -14
  359. package/src/rules/oas3/no-server-trailing-slash.ts +0 -15
  360. package/src/rules/oas3/no-servers-empty-enum.ts +0 -67
  361. package/src/rules/oas3/no-undefined-server-variable.ts +0 -30
  362. package/src/rules/oas3/no-unused-components.ts +0 -75
  363. package/src/rules/oas3/remove-unused-components.ts +0 -84
  364. package/src/rules/oas3/request-mime-type.ts +0 -31
  365. package/src/rules/oas3/response-mime-type.ts +0 -31
  366. package/src/rules/other/stats.ts +0 -44
  367. package/src/rules/utils.ts +0 -123
  368. package/src/types/index.ts +0 -138
  369. package/src/types/oas2.ts +0 -397
  370. package/src/types/oas3.ts +0 -506
  371. package/src/types/oas3_1.ts +0 -251
  372. package/src/types/redocly-yaml.ts +0 -637
  373. package/src/typings/common.ts +0 -9
  374. package/src/typings/openapi.ts +0 -297
  375. package/src/typings/swagger.ts +0 -236
  376. package/src/utils.ts +0 -190
  377. package/src/visitors.ts +0 -448
  378. package/src/walk.ts +0 -416
  379. package/tsconfig.json +0 -8
  380. package/tsconfig.tsbuildinfo +0 -1
@@ -1,2 +0,0 @@
1
- import { Oas3Rule, Oas2Rule } from '../../visitors';
2
- export declare const InfoDescription: Oas3Rule | Oas2Rule;
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.InfoDescription = void 0;
4
- const utils_1 = require("../utils");
5
- const InfoDescription = () => {
6
- return {
7
- Info(info, ctx) {
8
- utils_1.validateDefinedAndNonEmpty('description', info, ctx);
9
- },
10
- };
11
- };
12
- exports.InfoDescription = InfoDescription;
@@ -1,2 +0,0 @@
1
- import { Oas3Rule, Oas2Rule } from '../../visitors';
2
- export declare const InfoLicenseUrl: Oas3Rule | Oas2Rule;
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.InfoLicenseUrl = void 0;
4
- const utils_1 = require("../utils");
5
- const InfoLicenseUrl = () => {
6
- return {
7
- License(license, ctx) {
8
- utils_1.validateDefinedAndNonEmpty('url', license, ctx);
9
- },
10
- };
11
- };
12
- exports.InfoLicenseUrl = InfoLicenseUrl;
@@ -1,2 +0,0 @@
1
- import { Oas3Rule, Oas2Rule } from '../../visitors';
2
- export declare const OperationSecurityDefined: Oas3Rule | Oas2Rule;
@@ -1,2 +0,0 @@
1
- import { Oas3Rule } from '../../visitors';
2
- export declare const NoEmptyEnumServers: Oas3Rule;
@@ -1,71 +0,0 @@
1
- import { outdent } from 'outdent';
2
- import { parseYaml, stringifyYaml } from '../js-yaml';
3
-
4
- const yaml = `
5
- emptyValue:
6
- spaces in keys: spaces in keys
7
- numberString: '0123456789'
8
- number: 1000
9
- decimal: 12.34
10
- boolean: true
11
- dateWithoutQuotes: 2020-01-01
12
- dateWithQuotes: '2020-01-01'
13
- array:
14
- - 1
15
- - 2
16
- object:
17
- key1: 1
18
- key2: 2
19
- `;
20
-
21
- const yamlToDump = outdent`
22
- date: '2022-01-21T11:29:56.694Z'
23
- dateWithoutQuotes: 2020-01-01
24
- dateWithQuotes: '2020-01-01'
25
- dateImplicit: !!str 2020-01-01
26
- string: test
27
- stringWithQuotes: 'test'
28
- stringWithDoubleQuotes: "test"
29
- `;
30
-
31
- const jsObject = {
32
- emptyValue: null,
33
- 'spaces in keys': 'spaces in keys',
34
- numberString: '0123456789',
35
- number: 1000,
36
- decimal: 12.34,
37
- boolean: true,
38
- dateWithoutQuotes: '2020-01-01',
39
- dateWithQuotes: '2020-01-01',
40
- array: [1, 2],
41
- object: { key1: 1, key2: 2 },
42
- };
43
-
44
- describe('js-yaml', () => {
45
- test('parseYaml', () => {
46
- expect(parseYaml(yaml)).toEqual(jsObject);
47
- });
48
-
49
- test('should correctly dump date and string', () => {
50
- expect(stringifyYaml(parseYaml(yamlToDump))).toMatchInlineSnapshot(
51
- `
52
- "date: '2022-01-21T11:29:56.694Z'
53
- dateWithoutQuotes: '2020-01-01'
54
- dateWithQuotes: '2020-01-01'
55
- dateImplicit: '2020-01-01'
56
- string: test
57
- stringWithQuotes: test
58
- stringWithDoubleQuotes: test
59
- "
60
- `);
61
- });
62
-
63
- test('parse and stringify', () => {
64
- expect(parseYaml(stringifyYaml(jsObject))).toEqual(jsObject);
65
- });
66
-
67
- test('should throw an error for unsupported types', () => {
68
- expect(() => stringifyYaml({ foo: () => {} }))
69
- .toThrow('unacceptable kind of an object to dump [object Function]');
70
- });
71
- });
@@ -1,182 +0,0 @@
1
- import { outdent } from 'outdent';
2
-
3
- import { lintFromString, lintConfig, lintDocument } from '../lint';
4
- import { BaseResolver } from '../resolve';
5
- import { loadConfig } from '../config/load';
6
- import { parseYamlToDocument, replaceSourceWithRef, makeConfig } from '../../__tests__/utils';
7
-
8
- describe('lint', () => {
9
- it('lintFromString should work', async () => {
10
- const results = await lintFromString({
11
- absoluteRef: '/test/spec.yaml',
12
- source: outdent`
13
- openapi: 3.0.0
14
- info:
15
- title: Test API
16
- version: "1.0"
17
- description: Test
18
- license: Fail
19
-
20
- servers:
21
- - url: http://example.com
22
- paths: {}
23
- `,
24
- config: await loadConfig(),
25
- });
26
-
27
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
28
- Array [
29
- Object {
30
- "location": Array [
31
- Object {
32
- "pointer": "#/info/license",
33
- "reportOnKey": false,
34
- "source": "/test/spec.yaml",
35
- },
36
- ],
37
- "message": "Expected type \`License\` (object) but got \`string\`",
38
- "ruleId": "spec",
39
- "severity": "error",
40
- "suggest": Array [],
41
- },
42
- ]
43
- `);
44
- });
45
-
46
- it('lintConfig should work', async () => {
47
- const document = parseYamlToDocument(
48
- outdent`
49
- apis: error string
50
- lint:
51
- plugins:
52
- - './local-plugin.js'
53
- extends:
54
- - recommended
55
- - local/all
56
- rules:
57
- operation-2xx-response: warn
58
- no-invalid-media-type-examples: error
59
- path-http-verbs-order: error
60
- boolean-parameter-prefixes: off
61
- features.openapi:
62
- showConsole: true
63
- layout:
64
- scope: section
65
- routingStrategy: browser
66
- theme:
67
- rightPanel:
68
- backgroundColor: '#263238'
69
- links:
70
- color: '#6CC496'
71
- `,
72
- '',
73
- );
74
- const results = await lintConfig({ document });
75
-
76
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
77
- Array [
78
- Object {
79
- "location": Array [
80
- Object {
81
- "pointer": "#/apis",
82
- "reportOnKey": false,
83
- "source": "",
84
- },
85
- ],
86
- "message": "Expected type \`ConfigApis\` (object) but got \`string\`",
87
- "ruleId": "spec",
88
- "severity": "error",
89
- "suggest": Array [],
90
- },
91
- Object {
92
- "location": Array [
93
- Object {
94
- "pointer": "#/features.openapi/layout",
95
- "reportOnKey": false,
96
- "source": "",
97
- },
98
- ],
99
- "message": "Expected type \`string\` but got \`object\`.",
100
- "ruleId": "spec",
101
- "severity": "error",
102
- "suggest": Array [],
103
- },
104
- ]
105
- `);
106
- });
107
-
108
- it("'plugins' shouldn't be allowed in 'apis' -> 'lint' field", async () => {
109
- const document = parseYamlToDocument(
110
- outdent`
111
- apis:
112
- lint:
113
- plugins:
114
- - './local-plugin.js'
115
- lint:
116
- plugins:
117
- - './local-plugin.js'
118
- `,
119
- '',
120
- );
121
- const results = await lintConfig({ document });
122
-
123
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
124
- Array [
125
- Object {
126
- "location": Array [
127
- Object {
128
- "pointer": "#/apis/lint/plugins",
129
- "reportOnKey": true,
130
- "source": "",
131
- },
132
- ],
133
- "message": "Property \`plugins\` is not expected here.",
134
- "ruleId": "spec",
135
- "severity": "error",
136
- "suggest": Array [],
137
- },
138
- ]
139
- `);
140
- });
141
-
142
- it("'const' can have any type", async () => {
143
- const document = parseYamlToDocument(
144
- outdent`
145
- openapi: "3.1.0"
146
- info:
147
- version: 1.0.0
148
- title: Swagger Petstore
149
- description: Information about Petstore
150
- license:
151
- name: MIT
152
- url: https://opensource.org/licenses/MIT
153
- servers:
154
- - url: http://petstore.swagger.io/v1
155
- paths:
156
- /pets:
157
- get:
158
- summary: List all pets
159
- operationId: listPets
160
- tags:
161
- - pets
162
- responses:
163
- 200:
164
- description: An paged array of pets
165
- content:
166
- application/json:
167
- schema:
168
- type: string
169
- const: ABC
170
- `,
171
- 'foobar.yaml',
172
- );
173
-
174
- const results = await lintDocument({
175
- externalRefResolver: new BaseResolver(),
176
- document,
177
- config: await makeConfig({ spec: 'error' }),
178
- });
179
-
180
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`Array []`);
181
- });
182
- });
@@ -1,74 +0,0 @@
1
- import { pickObjectProps, omitObjectProps, slash } from '../utils';
2
-
3
- describe('utils', () => {
4
- const testObject = {
5
- a: 'value a',
6
- b: 'value b',
7
- c: 'value c',
8
- d: 'value d',
9
- e: 'value e',
10
- };
11
-
12
- describe('pickObjectProps', () => {
13
- it('returns correct object result', () => {
14
- expect(pickObjectProps(testObject, ['a', 'b'])).toStrictEqual({ a: 'value a', b: 'value b' });
15
- });
16
-
17
- it('returns correct object if passed non existing key', () => {
18
- expect(pickObjectProps(testObject, ['a', 'b', 'nonExisting'])).toStrictEqual({
19
- a: 'value a',
20
- b: 'value b',
21
- });
22
- });
23
-
24
- it('returns an empty object if no keys are passed', () => {
25
- expect(pickObjectProps(testObject, [])).toStrictEqual({});
26
- });
27
-
28
- it('returns an empty object if empty target obj passed', () => {
29
- expect(pickObjectProps({}, ['d', 'e'])).toStrictEqual({});
30
- });
31
- });
32
-
33
- describe('omitObjectProps', () => {
34
- it('returns correct object result', () => {
35
- expect(omitObjectProps(testObject, ['a', 'b', 'c'])).toStrictEqual({
36
- d: 'value d',
37
- e: 'value e',
38
- });
39
- });
40
-
41
- it('returns correct object if passed non existing key', () => {
42
- expect(omitObjectProps(testObject, ['a', 'b', 'c', 'nonExisting'])).toStrictEqual({
43
- d: 'value d',
44
- e: 'value e',
45
- });
46
- });
47
-
48
- it('returns full object if no keys are passed', () => {
49
- expect(omitObjectProps(testObject, [])).toStrictEqual(testObject);
50
- });
51
-
52
- it('returns an empty object if empty target obj passed', () => {
53
- expect(omitObjectProps({}, ['d', 'e'])).toStrictEqual({});
54
- });
55
- });
56
-
57
- describe('slash path', () => {
58
- it('can correctly slash path', () => {
59
- [
60
- ['foo\\bar', 'foo/bar'],
61
- ['foo/bar', 'foo/bar'],
62
- ['foo\\中文', 'foo/中文'],
63
- ['foo/中文', 'foo/中文'],
64
- ].forEach(([path, expectRes]) => {
65
- expect(slash(path)).toBe(expectRes);
66
- });
67
- });
68
-
69
- it('does not modify extended length paths', () => {
70
- const extended = '\\\\?\\some\\path';
71
- expect(slash(extended)).toBe(extended);
72
- });
73
- });
74
- });
@@ -1,35 +0,0 @@
1
- import { readFileSync } from 'fs';
2
- import { join as pathJoin, resolve as pathResolve } from 'path';
3
- import { lintDocument } from '../../lint';
4
- import { BaseResolver } from '../../resolve';
5
- import { parseYamlToDocument, makeConfigForRuleset } from '../utils';
6
-
7
- export const name = 'Validate with 50 top-level rules';
8
- export const count = 10;
9
- const rebillyDefinitionRef = pathResolve(pathJoin(__dirname, 'rebilly.yaml'));
10
- const rebillyDocument = parseYamlToDocument(
11
- readFileSync(rebillyDefinitionRef, 'utf-8'),
12
- rebillyDefinitionRef,
13
- );
14
-
15
- const ruleset: any = {};
16
- for (let i = 0; i < 50; i++) {
17
- ruleset['rule-' + i] = () => {
18
- let count = 0;
19
- return {
20
- Schema() {
21
- count++;
22
- if (count === -1) throw new Error('Disable optimization');
23
- },
24
- };
25
- };
26
- }
27
-
28
- const config = makeConfigForRuleset(ruleset);
29
- export function measureAsync() {
30
- return lintDocument({
31
- externalRefResolver: new BaseResolver(),
32
- document: rebillyDocument,
33
- config,
34
- });
35
- }
@@ -1,39 +0,0 @@
1
- import { readFileSync } from 'fs';
2
- import { join as pathJoin, resolve as pathResolve } from 'path';
3
- import { lintDocument } from '../../lint';
4
- import { BaseResolver } from '../../resolve';
5
- import { parseYamlToDocument, makeConfigForRuleset } from '../utils';
6
-
7
- export const name = 'Validate with single nested rule';
8
- export const count = 10;
9
- const rebillyDefinitionRef = pathResolve(pathJoin(__dirname, 'rebilly.yaml'));
10
- const rebillyDocument = parseYamlToDocument(
11
- readFileSync(rebillyDefinitionRef, 'utf-8'),
12
- rebillyDefinitionRef,
13
- );
14
- const visitor = {
15
- test: () => {
16
- let count = 0;
17
- return {
18
- PathItem: {
19
- Parameter() {
20
- count++;
21
- },
22
- Operation: {
23
- Parameter() {
24
- count++;
25
- if (count === -1) throw new Error('Disable optimization');
26
- },
27
- },
28
- },
29
- };
30
- },
31
- };
32
- const config = makeConfigForRuleset(visitor);
33
- export function measureAsync() {
34
- return lintDocument({
35
- externalRefResolver: new BaseResolver(),
36
- document: rebillyDocument,
37
- config,
38
- });
39
- }
@@ -1,20 +0,0 @@
1
- import { readFileSync } from 'fs';
2
- import { join as pathJoin, resolve as pathResolve } from 'path';
3
- import { lintDocument } from '../../lint';
4
- import { BaseResolver } from '../../resolve';
5
- import { parseYamlToDocument, makeConfigForRuleset } from '../utils';
6
- export const name = 'Validate with no rules';
7
- export const count = 10;
8
- const rebillyDefinitionRef = pathResolve(pathJoin(__dirname, 'rebilly.yaml'));
9
- const rebillyDocument = parseYamlToDocument(
10
- readFileSync(rebillyDefinitionRef, 'utf-8'),
11
- rebillyDefinitionRef,
12
- );
13
- const config = makeConfigForRuleset({});
14
- export function measureAsync() {
15
- return lintDocument({
16
- externalRefResolver: new BaseResolver(),
17
- document: rebillyDocument,
18
- config,
19
- });
20
- }
@@ -1,36 +0,0 @@
1
- import { readFileSync } from 'fs';
2
- import { join as pathJoin, resolve as pathResolve } from 'path';
3
- import { lintDocument } from '../../lint';
4
- import { BaseResolver } from '../../resolve';
5
- import { parseYamlToDocument, makeConfigForRuleset } from '../utils';
6
-
7
- export const name = 'Validate with single top-level rule and report';
8
- export const count = 10;
9
- const rebillyDefinitionRef = pathResolve(pathJoin(__dirname, 'rebilly.yaml'));
10
- const rebillyDocument = parseYamlToDocument(
11
- readFileSync(rebillyDefinitionRef, 'utf-8'),
12
- rebillyDefinitionRef,
13
- );
14
-
15
- const config = makeConfigForRuleset({
16
- test: () => {
17
- return {
18
- // @ts-ignore
19
- Schema(schema, ctx) {
20
- if (schema.type === 'number') {
21
- ctx.report({
22
- message: 'type number is not allowed',
23
- });
24
- }
25
- },
26
- };
27
- },
28
- });
29
-
30
- export function measureAsync() {
31
- return lintDocument({
32
- externalRefResolver: new BaseResolver(),
33
- document: rebillyDocument,
34
- config,
35
- });
36
- }
@@ -1,32 +0,0 @@
1
- import { readFileSync } from 'fs';
2
- import { join as pathJoin, resolve as pathResolve } from 'path';
3
- import { lintDocument } from '../../lint';
4
- import { BaseResolver } from '../../resolve';
5
- import { parseYamlToDocument, makeConfigForRuleset } from '../utils';
6
- export const name = 'Validate with single top-level rule';
7
- export const count = 10;
8
- const rebillyDefinitionRef = pathResolve(pathJoin(__dirname, 'rebilly.yaml'));
9
- const rebillyDocument = parseYamlToDocument(
10
- readFileSync(rebillyDefinitionRef, 'utf-8'),
11
- rebillyDefinitionRef,
12
- );
13
-
14
- const config = makeConfigForRuleset({
15
- test: () => {
16
- let count = 0;
17
- return {
18
- Schema() {
19
- count++;
20
- if (count === -1) throw new Error('Disable optimization');
21
- },
22
- };
23
- },
24
- });
25
-
26
- export function measureAsync() {
27
- return lintDocument({
28
- externalRefResolver: new BaseResolver(),
29
- document: rebillyDocument,
30
- config,
31
- });
32
- }