@redocly/openapi-core 1.0.0-beta.99 → 1.0.0-rc.2

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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redocly/openapi-core",
3
- "version": "1.0.0-beta.99",
3
+ "version": "1.0.0-rc.2",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "engines": {
@@ -16,7 +16,8 @@
16
16
  "fs": false,
17
17
  "path": "path-browserify",
18
18
  "os": false,
19
- "node-fetch": false
19
+ "node-fetch": false,
20
+ "colorette": false
20
21
  },
21
22
  "homepage": "https://github.com/Redocly/redocly-cli",
22
23
  "keywords": [
@@ -28,12 +29,10 @@
28
29
  "oas"
29
30
  ],
30
31
  "contributors": [
31
- "Sergey Dubovyk <serhii@redoc.ly> (https://redoc.ly/)",
32
- "Roman Hotsiy <roman@redoc.ly> (https://redoc.ly/)",
33
- "Andriy Leliv <andriy@redoc.ly> (https://redoc.ly/)"
32
+ "Roman Hotsiy <roman@redoc.ly> (https://redoc.ly/)"
34
33
  ],
35
34
  "dependencies": {
36
- "@redocly/ajv": "^8.6.4",
35
+ "@redocly/ajv": "^8.11.0",
37
36
  "@types/node": "^14.11.8",
38
37
  "colorette": "^1.2.0",
39
38
  "js-levenshtein": "^1.1.6",
@@ -1,86 +0,0 @@
1
- import * as path from 'path';
2
-
3
- import { Document, Source, NormalizedProblem, parseYaml, stringifyYaml } from '../src';
4
- import { LintConfig, resolveLint, resolvePlugins } from '../src/config';
5
- import { Oas3RuleSet } from '../src/oas-types';
6
-
7
- import type { RuleConfig, Plugin, DecoratorConfig } from '../src/config';
8
-
9
- export function parseYamlToDocument(body: string, absoluteRef: string = ''): Document {
10
- return {
11
- source: new Source(absoluteRef, body),
12
- parsed: parseYaml(body, { filename: absoluteRef }),
13
- };
14
- }
15
-
16
- export function replaceSourceWithRef(results: NormalizedProblem[], cwd?: string) {
17
- const cwdRegexp = cwd ? new RegExp(cwd + path.sep, 'g') : /$^/;
18
- return results.map((r) => {
19
- const mapped = {
20
- ...r,
21
- message: r.message.replace(cwdRegexp, ''),
22
- location: r.location.map((l) => ({
23
- ...l,
24
- source: cwd ? path.relative(cwd, l.source.absoluteRef) : l.source.absoluteRef,
25
- })),
26
- };
27
- if (mapped.from) {
28
- mapped.from = {
29
- ...mapped.from,
30
- source: cwd
31
- ? path.relative(cwd, mapped.from.source.absoluteRef)
32
- : (mapped.from.source.absoluteRef as any),
33
- };
34
- }
35
- return mapped;
36
- });
37
- }
38
-
39
- export const yamlSerializer = {
40
- test: () => {
41
- return true;
42
- },
43
- print: (val: any) => {
44
- return stringifyYaml(val);
45
- },
46
- };
47
-
48
- export function makeConfigForRuleset(
49
- rules: Oas3RuleSet,
50
- plugin?: Partial<Plugin>,
51
- version: string = 'oas3',
52
- ) {
53
- const rulesConf: Record<string, RuleConfig> = {};
54
- const ruleId = 'test';
55
- Object.keys(rules).forEach((name) => {
56
- rulesConf[`${ruleId}/${name}`] = 'error';
57
- });
58
- const plugins = resolvePlugins([
59
- {
60
- ...plugin,
61
- id: ruleId,
62
- rules: { [version]: rules },
63
- },
64
- ]);
65
-
66
- return new LintConfig({
67
- plugins,
68
- rules: rulesConf,
69
- });
70
- }
71
-
72
- export async function makeConfig(
73
- rules: Record<string, RuleConfig>,
74
- decorators?: Record<string, DecoratorConfig>,
75
- ) {
76
- return new LintConfig(
77
- await resolveLint({
78
- lintConfig: {
79
- plugins: [],
80
- extends: [],
81
- rules,
82
- decorators,
83
- },
84
- }),
85
- );
86
- }
@@ -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,255 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`bundle should bundle external refs 1`] = `
4
- openapi: 3.0.0
5
- paths:
6
- /pet:
7
- parameters:
8
- - $ref: '#/components/parameters/path-param'
9
- put:
10
- parameters:
11
- - $ref: '#/components/parameters/param-a'
12
- - $ref: '#/components/parameters/param-b'
13
- - name: test
14
- get:
15
- parameters:
16
- - $ref: '#/components/parameters/param-a'
17
- - $ref: '#/components/parameters/param-c'
18
- post:
19
- parameters:
20
- - $ref: '#/paths/~1pet/put/parameters/2'
21
- components:
22
- parameters:
23
- param-a:
24
- name: param_a
25
- schema:
26
- $ref: '#/components/schemas/schema-a'
27
- examples:
28
- first:
29
- $ref: '#/components/examples/param-a-first'
30
- second:
31
- $ref: '#/components/examples/second'
32
- path-param:
33
- name: path_param
34
- examples:
35
- first:
36
- $ref: '#/components/examples/first'
37
- param-c:
38
- name: param_c
39
- param-b:
40
- name: param_b
41
- examples:
42
- first:
43
- value: b1
44
- param-a-first:
45
- value: a1
46
- second:
47
- value: a2
48
- schemas:
49
- schema-a:
50
- type: string
51
-
52
- `;
53
-
54
- exports[`bundle should bundle external refs and warn for conflicting names 1`] = `
55
- openapi: 3.0.0
56
- paths:
57
- /pet:
58
- parameters:
59
- - $ref: '#/components/parameters/path-param'
60
- put:
61
- parameters:
62
- - $ref: '#/components/parameters/param-b'
63
- - $ref: '#/components/parameters/param-b-2'
64
- get:
65
- parameters:
66
- - $ref: '#/components/parameters/param-a'
67
- - $ref: '#/components/parameters/param-c'
68
- components:
69
- parameters:
70
- param-a:
71
- name: test
72
- param-b:
73
- name: param_b_alt
74
- path-param:
75
- name: path_param
76
- param-c:
77
- name: param_c
78
- param-b-2:
79
- name: param_b
80
-
81
- `;
82
-
83
- exports[`bundle should dereferenced correctly when used with dereference 1`] = `
84
- openapi: 3.0.0
85
- paths:
86
- /pet:
87
- get:
88
- operationId: get
89
- parameters:
90
- - name: shared-a
91
- - name: get_b
92
- post:
93
- operationId: post
94
- parameters:
95
- - name: shared-a
96
- components:
97
- parameters:
98
- shared_a:
99
- name: shared-a
100
-
101
- `;
102
-
103
- exports[`bundle should not bundle url refs if used with keepUrlRefs 1`] = `
104
- openapi: 3.0.0
105
- paths:
106
- /pet:
107
- parameters:
108
- - $ref: '#/components/parameters/path-param'
109
- put:
110
- parameters:
111
- - $ref: https://someexternal.schema
112
- - $ref: '#/components/parameters/param-b'
113
- - name: test
114
- get:
115
- parameters:
116
- - $ref: http://someexternal.schema
117
- - $ref: '#/components/parameters/param-c'
118
- components:
119
- parameters:
120
- path-param:
121
- name: path_param
122
- param-c:
123
- name: param_c
124
- param-b:
125
- name: param_b
126
-
127
- `;
128
-
129
- exports[`bundle should not place referened schema inline when component in question is not of type "schemas" 1`] = `
130
- openapi: 3.0.0
131
- paths:
132
- /pet:
133
- post:
134
- requestBody:
135
- content:
136
- application/json:
137
- schema:
138
- $ref: '#/components/schemas/requestBody'
139
- components:
140
- schemas:
141
- requestBody:
142
- content:
143
- application/json:
144
- schema:
145
- type: object
146
- properties:
147
- a:
148
- type: string
149
- b:
150
- type: number
151
-
152
- `;
153
-
154
- exports[`bundle should place referenced schema inline when referenced schema name resolves to original schema name 1`] = `
155
- openapi: 3.1.0
156
- info:
157
- title: My API
158
- description: It ain't so wonderful, but at least it's mine.
159
- version: '1.0'
160
- contact:
161
- email: me@theintenet.com
162
- name: me
163
- paths:
164
- /test:
165
- get:
166
- summary: test
167
- responses:
168
- '200':
169
- description: test
170
- content:
171
- application/json:
172
- schema:
173
- $ref: '#/components/schemas/vendor.schema'
174
- components:
175
- schemas:
176
- vendor:
177
- $ref: '#/components/schemas/vendor.schema'
178
- myvendor:
179
- $ref: '#/components/schemas/vendor.schema'
180
- simple:
181
- type: string
182
- A:
183
- type: string
184
- test:
185
- $ref: '#/components/schemas/rename-2'
186
- rename:
187
- type: string
188
- rename-2:
189
- type: number
190
- vendor.schema:
191
- title: vendor
192
- type: object
193
- description: Vendors
194
- properties:
195
- key:
196
- type: string
197
- description: System-assigned key for the vendor.
198
- readOnly: true
199
- id:
200
- type: string
201
- description: >
202
- Unique identifier of the vendor.
203
-
204
- You must specify a unique vendor ID when creating a vendor unless
205
- document sequencing is configured, in which case the ID is
206
- auto-generated.
207
- name:
208
- type: string
209
- description: Name of the vendor.
210
- isOneTimeUse:
211
- type: boolean
212
- description: One-time use
213
- default: false
214
-
215
- `;
216
-
217
- exports[`bundle should pull hosted schema 1`] = `
218
- openapi: 3.0.3
219
- info:
220
- title: bugtest
221
- version: '1.0'
222
- description: Demo
223
- license:
224
- name: DEMO
225
- url: https://demo.com
226
- servers:
227
- - url: http://demo.com/api
228
- paths:
229
- /customer:
230
- summary: Customer scope
231
- get:
232
- summary: Get demo no refs
233
- operationId: GetCustomer
234
- description: Returns Demo No Refs
235
- responses:
236
- '200':
237
- description: Demo No Refs
238
- content:
239
- application/json:
240
- schema:
241
- $ref: '#/components/schemas/Customer'
242
- components:
243
- schemas:
244
- Customer:
245
- type: object
246
- properties:
247
- customerName:
248
- type: string
249
- accounts:
250
- type: array
251
- items:
252
- $ref: '#/components/schemas/someexternal'
253
- someexternal: External schema content
254
-
255
- `;
@@ -1,156 +0,0 @@
1
- import outdent from 'outdent';
2
- import * as path from 'path';
3
-
4
- import { bundleDocument, bundle } from '../bundle';
5
- import { parseYamlToDocument, yamlSerializer } from '../../__tests__/utils';
6
- import { LintConfig, Config, ResolvedConfig } from '../config';
7
- import { BaseResolver } from '../resolve';
8
-
9
- describe('bundle', () => {
10
- expect.addSnapshotSerializer(yamlSerializer);
11
-
12
- const testDocument = parseYamlToDocument(
13
- outdent`
14
- openapi: 3.0.0
15
- paths:
16
- /pet:
17
- get:
18
- operationId: get
19
- parameters:
20
- - $ref: '#/components/parameters/shared_a'
21
- - name: get_b
22
- post:
23
- operationId: post
24
- parameters:
25
- - $ref: '#/components/parameters/shared_a'
26
- components:
27
- parameters:
28
- shared_a:
29
- name: shared-a
30
- `,
31
- '',
32
- );
33
-
34
- it('change nothing with only internal refs', async () => {
35
- const { bundle, problems } = await bundleDocument({
36
- document: testDocument,
37
- externalRefResolver: new BaseResolver(),
38
- config: new LintConfig({}),
39
- });
40
-
41
- const origCopy = JSON.parse(JSON.stringify(testDocument.parsed));
42
-
43
- expect(problems).toHaveLength(0);
44
- expect(bundle.parsed).toEqual(origCopy);
45
- });
46
-
47
- it('should bundle external refs', async () => {
48
- const { bundle: res, problems } = await bundle({
49
- config: new Config({} as ResolvedConfig),
50
- ref: path.join(__dirname, 'fixtures/refs/openapi-with-external-refs.yaml'),
51
- });
52
- expect(problems).toHaveLength(0);
53
- expect(res.parsed).toMatchSnapshot();
54
- });
55
-
56
- it('should bundle external refs and warn for conflicting names', async () => {
57
- const { bundle: res, problems } = await bundle({
58
- config: new Config({} as ResolvedConfig),
59
- ref: path.join(__dirname, 'fixtures/refs/openapi-with-external-refs-conflicting-names.yaml'),
60
- });
61
- expect(problems).toHaveLength(1);
62
- expect(problems[0].message).toEqual(
63
- `Two schemas are referenced with the same name but different content. Renamed param-b to param-b-2.`,
64
- );
65
- expect(res.parsed).toMatchSnapshot();
66
- });
67
-
68
- it('should dereferenced correctly when used with dereference', async () => {
69
- const { bundle: res, problems } = await bundleDocument({
70
- externalRefResolver: new BaseResolver(),
71
- config: new LintConfig({}),
72
- document: testDocument,
73
- dereference: true,
74
- });
75
-
76
- expect(problems).toHaveLength(0);
77
- expect(res.parsed).toMatchSnapshot();
78
- });
79
-
80
- it('should place referenced schema inline when referenced schema name resolves to original schema name', async () => {
81
- const { bundle: res, problems } = await bundle({
82
- config: new Config({} as ResolvedConfig),
83
- ref: path.join(__dirname, 'fixtures/refs/externalref.yaml'),
84
- });
85
-
86
- expect(problems).toHaveLength(0);
87
- expect(res.parsed).toMatchSnapshot();
88
- });
89
-
90
- it('should not place referened schema inline when component in question is not of type "schemas"', async () => {
91
- const { bundle: res, problems } = await bundle({
92
- config: new Config({} as ResolvedConfig),
93
- ref: path.join(__dirname, 'fixtures/refs/external-request-body.yaml'),
94
- });
95
-
96
- expect(problems).toHaveLength(0);
97
- expect(res.parsed).toMatchSnapshot();
98
- });
99
-
100
- it('should pull hosted schema', async () => {
101
- const fetchMock = jest.fn(
102
- () => Promise.resolve({
103
- ok: true,
104
- text: () => 'External schema content',
105
- headers: {
106
- get: () => ''
107
- }
108
- })
109
- );
110
-
111
- const { bundle: res, problems } = await bundle({
112
- config: new Config({} as ResolvedConfig),
113
- externalRefResolver: new BaseResolver({
114
- http: {
115
- customFetch: fetchMock,
116
- headers: []
117
- }
118
- }),
119
- ref: path.join(__dirname, 'fixtures/refs/hosted.yaml')
120
- });
121
-
122
- expect(problems).toHaveLength(0);
123
- expect(fetchMock).toHaveBeenCalledWith(
124
- "https://someexternal.schema",
125
- {
126
- headers: {}
127
- }
128
- );
129
- expect(res.parsed).toMatchSnapshot();
130
- });
131
-
132
- it('should not bundle url refs if used with keepUrlRefs', async () => {
133
- const fetchMock = jest.fn(() =>
134
- Promise.resolve({
135
- ok: true,
136
- text: () => 'External schema content',
137
- headers: {
138
- get: () => '',
139
- },
140
- }),
141
- );
142
- const { bundle: res, problems } = await bundle({
143
- config: new Config({} as ResolvedConfig),
144
- externalRefResolver: new BaseResolver({
145
- http: {
146
- customFetch: fetchMock,
147
- headers: [],
148
- },
149
- }),
150
- ref: path.join(__dirname, 'fixtures/refs/openapi-with-url-refs.yaml'),
151
- keepUrlRefs: true,
152
- });
153
- expect(problems).toHaveLength(0);
154
- expect(res.parsed).toMatchSnapshot();
155
- });
156
- });