@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
package/lib/types/oas3.js CHANGED
@@ -4,27 +4,40 @@ exports.Oas3Types = void 0;
4
4
  const _1 = require(".");
5
5
  const ref_utils_1 = require("../ref-utils");
6
6
  const responseCodeRegexp = /^[0-9][0-9Xx]{2}$/;
7
- const DefinitionRoot = {
7
+ const Root = {
8
8
  properties: {
9
9
  openapi: null,
10
10
  info: 'Info',
11
- servers: _1.listOf('Server'),
12
- security: _1.listOf('SecurityRequirement'),
13
- tags: _1.listOf('Tag'),
11
+ servers: 'ServerList',
12
+ security: 'SecurityRequirementList',
13
+ tags: 'TagList',
14
14
  externalDocs: 'ExternalDocs',
15
- paths: 'PathMap',
15
+ paths: 'Paths',
16
16
  components: 'Components',
17
17
  'x-webhooks': 'WebhooksMap',
18
+ 'x-tagGroups': 'TagGroups',
19
+ 'x-ignoredHeaderParameters': { type: 'array', items: { type: 'string' } },
18
20
  },
19
21
  required: ['openapi', 'paths', 'info'],
22
+ extensionsPrefix: 'x-',
20
23
  };
21
24
  const Tag = {
22
25
  properties: {
23
26
  name: { type: 'string' },
24
27
  description: { type: 'string' },
25
28
  externalDocs: 'ExternalDocs',
29
+ 'x-traitTag': { type: 'boolean' },
30
+ 'x-displayName': { type: 'string' },
26
31
  },
27
32
  required: ['name'],
33
+ extensionsPrefix: 'x-',
34
+ };
35
+ const TagGroup = {
36
+ properties: {
37
+ name: { type: 'string' },
38
+ tags: { type: 'array', items: { type: 'string' } },
39
+ },
40
+ extensionsPrefix: 'x-',
28
41
  };
29
42
  const ExternalDocs = {
30
43
  properties: {
@@ -32,14 +45,16 @@ const ExternalDocs = {
32
45
  url: { type: 'string' },
33
46
  },
34
47
  required: ['url'],
48
+ extensionsPrefix: 'x-',
35
49
  };
36
50
  const Server = {
37
51
  properties: {
38
52
  url: { type: 'string' },
39
53
  description: { type: 'string' },
40
- variables: _1.mapOf('ServerVariable'),
54
+ variables: 'ServerVariablesMap',
41
55
  },
42
56
  required: ['url'],
57
+ extensionsPrefix: 'x-',
43
58
  };
44
59
  const ServerVariable = {
45
60
  properties: {
@@ -48,9 +63,10 @@ const ServerVariable = {
48
63
  items: { type: 'string' },
49
64
  },
50
65
  default: { type: 'string' },
51
- description: null,
66
+ description: { type: 'string' },
52
67
  },
53
68
  required: ['default'],
69
+ extensionsPrefix: 'x-',
54
70
  };
55
71
  const SecurityRequirement = {
56
72
  properties: {},
@@ -64,8 +80,18 @@ const Info = {
64
80
  termsOfService: { type: 'string' },
65
81
  contact: 'Contact',
66
82
  license: 'License',
83
+ 'x-logo': 'Logo',
67
84
  },
68
85
  required: ['title', 'version'],
86
+ extensionsPrefix: 'x-',
87
+ };
88
+ const Logo = {
89
+ properties: {
90
+ url: { type: 'string' },
91
+ altText: { type: 'string' },
92
+ backgroundColor: { type: 'string' },
93
+ href: { type: 'string' },
94
+ },
69
95
  };
70
96
  const Contact = {
71
97
  properties: {
@@ -73,6 +99,7 @@ const Contact = {
73
99
  url: { type: 'string' },
74
100
  email: { type: 'string' },
75
101
  },
102
+ extensionsPrefix: 'x-',
76
103
  };
77
104
  const License = {
78
105
  properties: {
@@ -80,8 +107,9 @@ const License = {
80
107
  url: { type: 'string' },
81
108
  },
82
109
  required: ['name'],
110
+ extensionsPrefix: 'x-',
83
111
  };
84
- const PathMap = {
112
+ const Paths = {
85
113
  properties: {},
86
114
  additionalProperties: (_value, key) => key.startsWith('/') ? 'PathItem' : undefined,
87
115
  };
@@ -92,8 +120,8 @@ const WebhooksMap = {
92
120
  const PathItem = {
93
121
  properties: {
94
122
  $ref: { type: 'string' },
95
- servers: _1.listOf('Server'),
96
- parameters: _1.listOf('Parameter'),
123
+ servers: 'ServerList',
124
+ parameters: 'ParameterList',
97
125
  summary: { type: 'string' },
98
126
  description: { type: 'string' },
99
127
  get: 'Operation',
@@ -105,6 +133,7 @@ const PathItem = {
105
133
  patch: 'Operation',
106
134
  trace: 'Operation',
107
135
  },
136
+ extensionsPrefix: 'x-',
108
137
  };
109
138
  const Parameter = {
110
139
  properties: {
@@ -121,15 +150,12 @@ const Parameter = {
121
150
  allowReserved: { type: 'boolean' },
122
151
  schema: 'Schema',
123
152
  example: { isExample: true },
124
- examples: _1.mapOf('Example'),
125
- content: 'MediaTypeMap',
153
+ examples: 'ExamplesMap',
154
+ content: 'MediaTypesMap',
126
155
  },
127
156
  required: ['name', 'in'],
128
157
  requiredOneOf: ['schema', 'content'],
129
- };
130
- const Callback = {
131
- properties: {},
132
- additionalProperties: 'PathItem',
158
+ extensionsPrefix: 'x-',
133
159
  };
134
160
  const Operation = {
135
161
  properties: {
@@ -141,18 +167,19 @@ const Operation = {
141
167
  description: { type: 'string' },
142
168
  externalDocs: 'ExternalDocs',
143
169
  operationId: { type: 'string' },
144
- parameters: _1.listOf('Parameter'),
145
- security: _1.listOf('SecurityRequirement'),
146
- servers: _1.listOf('Server'),
170
+ parameters: 'ParameterList',
171
+ security: 'SecurityRequirementList',
172
+ servers: 'ServerList',
147
173
  requestBody: 'RequestBody',
148
- responses: 'ResponsesMap',
174
+ responses: 'Responses',
149
175
  deprecated: { type: 'boolean' },
150
- callbacks: _1.mapOf('Callback'),
151
- 'x-codeSamples': _1.listOf('XCodeSample'),
152
- 'x-code-samples': _1.listOf('XCodeSample'),
176
+ callbacks: 'CallbacksMap',
177
+ 'x-codeSamples': 'XCodeSampleList',
178
+ 'x-code-samples': 'XCodeSampleList',
153
179
  'x-hideTryItPanel': { type: 'boolean' },
154
180
  },
155
181
  required: ['responses'],
182
+ extensionsPrefix: 'x-',
156
183
  };
157
184
  const XCodeSample = {
158
185
  properties: {
@@ -165,11 +192,12 @@ const RequestBody = {
165
192
  properties: {
166
193
  description: { type: 'string' },
167
194
  required: { type: 'boolean' },
168
- content: 'MediaTypeMap',
195
+ content: 'MediaTypesMap',
169
196
  },
170
197
  required: ['content'],
198
+ extensionsPrefix: 'x-',
171
199
  };
172
- const MediaTypeMap = {
200
+ const MediaTypesMap = {
173
201
  properties: {},
174
202
  additionalProperties: 'MediaType',
175
203
  };
@@ -177,9 +205,10 @@ const MediaType = {
177
205
  properties: {
178
206
  schema: 'Schema',
179
207
  example: { isExample: true },
180
- examples: _1.mapOf('Example'),
181
- encoding: _1.mapOf('Encoding'),
208
+ examples: 'ExamplesMap',
209
+ encoding: 'EncodingMap',
182
210
  },
211
+ extensionsPrefix: 'x-',
183
212
  };
184
213
  const Example = {
185
214
  properties: {
@@ -188,17 +217,23 @@ const Example = {
188
217
  description: { type: 'string' },
189
218
  externalValue: { type: 'string' },
190
219
  },
220
+ extensionsPrefix: 'x-',
191
221
  };
192
222
  const Encoding = {
193
223
  properties: {
194
224
  contentType: { type: 'string' },
195
- headers: _1.mapOf('Header'),
225
+ headers: 'HeadersMap',
196
226
  style: {
197
227
  enum: ['form', 'simple', 'label', 'matrix', 'spaceDelimited', 'pipeDelimited', 'deepObject'],
198
228
  },
199
229
  explode: { type: 'boolean' },
200
230
  allowReserved: { type: 'boolean' },
201
231
  },
232
+ extensionsPrefix: 'x-',
233
+ };
234
+ const EnumDescriptions = {
235
+ properties: {},
236
+ additionalProperties: { type: 'string' },
202
237
  };
203
238
  const Header = {
204
239
  properties: {
@@ -213,22 +248,26 @@ const Header = {
213
248
  allowReserved: { type: 'boolean' },
214
249
  schema: 'Schema',
215
250
  example: { isExample: true },
216
- examples: _1.mapOf('Example'),
217
- content: 'MediaTypeMap',
251
+ examples: 'ExamplesMap',
252
+ content: 'MediaTypesMap',
218
253
  },
254
+ requiredOneOf: ['schema', 'content'],
255
+ extensionsPrefix: 'x-',
219
256
  };
220
- const ResponsesMap = {
257
+ const Responses = {
221
258
  properties: { default: 'Response' },
222
259
  additionalProperties: (_v, key) => responseCodeRegexp.test(key) ? 'Response' : undefined,
223
260
  };
224
261
  const Response = {
225
262
  properties: {
226
263
  description: { type: 'string' },
227
- headers: _1.mapOf('Header'),
228
- content: 'MediaTypeMap',
229
- links: _1.mapOf('Link'),
264
+ headers: 'HeadersMap',
265
+ content: 'MediaTypesMap',
266
+ links: 'LinksMap',
267
+ 'x-summary': { type: 'string' },
230
268
  },
231
269
  required: ['description'],
270
+ extensionsPrefix: 'x-',
232
271
  };
233
272
  const Link = {
234
273
  properties: {
@@ -239,6 +278,7 @@ const Link = {
239
278
  description: { type: 'string' },
240
279
  server: 'Server',
241
280
  },
281
+ extensionsPrefix: 'x-',
242
282
  };
243
283
  const Schema = {
244
284
  properties: {
@@ -250,14 +290,14 @@ const Schema = {
250
290
  minimum: { type: 'number' },
251
291
  exclusiveMaximum: { type: 'boolean' },
252
292
  exclusiveMinimum: { type: 'boolean' },
253
- maxLength: { type: 'number', minimum: 0 },
254
- minLength: { type: 'number', minimum: 0 },
293
+ maxLength: { type: 'integer', minimum: 0 },
294
+ minLength: { type: 'integer', minimum: 0 },
255
295
  pattern: { type: 'string' },
256
- maxItems: { type: 'number', minimum: 0 },
257
- minItems: { type: 'number', minimum: 0 },
296
+ maxItems: { type: 'integer', minimum: 0 },
297
+ minItems: { type: 'integer', minimum: 0 },
258
298
  uniqueItems: { type: 'boolean' },
259
- maxProperties: { type: 'number', minimum: 0 },
260
- minProperties: { type: 'number', minimum: 0 },
299
+ maxProperties: { type: 'integer', minimum: 0 },
300
+ minProperties: { type: 'integer', minimum: 0 },
261
301
  required: { type: 'array', items: { type: 'string' } },
262
302
  enum: { type: 'array' },
263
303
  type: {
@@ -276,6 +316,14 @@ const Schema = {
276
316
  return 'Schema';
277
317
  }
278
318
  },
319
+ additionalItems: (value) => {
320
+ if (typeof value === 'boolean') {
321
+ return { type: 'boolean' };
322
+ }
323
+ else {
324
+ return 'Schema';
325
+ }
326
+ },
279
327
  additionalProperties: (value) => {
280
328
  if (typeof value === 'boolean') {
281
329
  return { type: 'boolean' };
@@ -294,7 +342,10 @@ const Schema = {
294
342
  example: { isExample: true },
295
343
  deprecated: { type: 'boolean' },
296
344
  'x-tags': { type: 'array', items: { type: 'string' } },
345
+ 'x-additionalPropertiesName': { type: 'string' },
346
+ 'x-explicitMappingOnly': { type: 'boolean' },
297
347
  },
348
+ extensionsPrefix: 'x-',
298
349
  };
299
350
  const Xml = {
300
351
  properties: {
@@ -304,6 +355,7 @@ const Xml = {
304
355
  attribute: { type: 'boolean' },
305
356
  wrapped: { type: 'boolean' },
306
357
  },
358
+ extensionsPrefix: 'x-',
307
359
  };
308
360
  const SchemaProperties = {
309
361
  properties: {},
@@ -326,6 +378,7 @@ const Discriminator = {
326
378
  mapping: 'DiscriminatorMapping',
327
379
  },
328
380
  required: ['propertyName'],
381
+ extensionsPrefix: 'x-',
329
382
  };
330
383
  const Components = {
331
384
  properties: {
@@ -339,6 +392,7 @@ const Components = {
339
392
  links: 'NamedLinks',
340
393
  callbacks: 'NamedCallbacks',
341
394
  },
395
+ extensionsPrefix: 'x-',
342
396
  };
343
397
  const ImplicitFlow = {
344
398
  properties: {
@@ -347,6 +401,7 @@ const ImplicitFlow = {
347
401
  authorizationUrl: { type: 'string' },
348
402
  },
349
403
  required: ['authorizationUrl', 'scopes'],
404
+ extensionsPrefix: 'x-',
350
405
  };
351
406
  const PasswordFlow = {
352
407
  properties: {
@@ -355,6 +410,7 @@ const PasswordFlow = {
355
410
  tokenUrl: { type: 'string' },
356
411
  },
357
412
  required: ['tokenUrl', 'scopes'],
413
+ extensionsPrefix: 'x-',
358
414
  };
359
415
  const ClientCredentials = {
360
416
  properties: {
@@ -363,6 +419,7 @@ const ClientCredentials = {
363
419
  tokenUrl: { type: 'string' },
364
420
  },
365
421
  required: ['tokenUrl', 'scopes'],
422
+ extensionsPrefix: 'x-',
366
423
  };
367
424
  const AuthorizationCode = {
368
425
  properties: {
@@ -370,16 +427,26 @@ const AuthorizationCode = {
370
427
  authorizationUrl: { type: 'string' },
371
428
  scopes: { type: 'object', additionalProperties: { type: 'string' } },
372
429
  tokenUrl: { type: 'string' },
430
+ 'x-usePkce': (value) => {
431
+ if (typeof value === 'boolean') {
432
+ return { type: 'boolean' };
433
+ }
434
+ else {
435
+ return 'XUsePkce';
436
+ }
437
+ },
373
438
  },
374
439
  required: ['authorizationUrl', 'tokenUrl', 'scopes'],
440
+ extensionsPrefix: 'x-',
375
441
  };
376
- const SecuritySchemeFlows = {
442
+ const OAuth2Flows = {
377
443
  properties: {
378
444
  implicit: 'ImplicitFlow',
379
445
  password: 'PasswordFlow',
380
446
  clientCredentials: 'ClientCredentials',
381
447
  authorizationCode: 'AuthorizationCode',
382
448
  },
449
+ extensionsPrefix: 'x-',
383
450
  };
384
451
  const SecurityScheme = {
385
452
  properties: {
@@ -389,8 +456,9 @@ const SecurityScheme = {
389
456
  in: { type: 'string', enum: ['query', 'header', 'cookie'] },
390
457
  scheme: { type: 'string' },
391
458
  bearerFormat: { type: 'string' },
392
- flows: 'SecuritySchemeFlows',
459
+ flows: 'OAuth2Flows',
393
460
  openIdConnectUrl: { type: 'string' },
461
+ 'x-defaultClientId': { type: 'string' },
394
462
  },
395
463
  required(value) {
396
464
  switch (value === null || value === void 0 ? void 0 : value.type) {
@@ -422,36 +490,56 @@ const SecurityScheme = {
422
490
  },
423
491
  extensionsPrefix: 'x-',
424
492
  };
493
+ const XUsePkce = {
494
+ properties: {
495
+ disableManualConfiguration: { type: 'boolean' },
496
+ hideClientSecretInput: { type: 'boolean' },
497
+ },
498
+ };
425
499
  exports.Oas3Types = {
426
- DefinitionRoot,
500
+ Root,
427
501
  Tag,
502
+ TagList: _1.listOf('Tag'),
503
+ TagGroups: _1.listOf('TagGroup'),
504
+ TagGroup,
428
505
  ExternalDocs,
429
506
  Server,
507
+ ServerList: _1.listOf('Server'),
430
508
  ServerVariable,
509
+ ServerVariablesMap: _1.mapOf('ServerVariable'),
431
510
  SecurityRequirement,
511
+ SecurityRequirementList: _1.listOf('SecurityRequirement'),
432
512
  Info,
433
513
  Contact,
434
514
  License,
435
- PathMap,
515
+ Paths,
436
516
  PathItem,
437
517
  Parameter,
518
+ ParameterList: _1.listOf('Parameter'),
438
519
  Operation,
439
- Callback,
520
+ Callback: _1.mapOf('PathItem'),
521
+ CallbacksMap: _1.mapOf('Callback'),
440
522
  RequestBody,
441
- MediaTypeMap,
523
+ MediaTypesMap,
442
524
  MediaType,
443
525
  Example,
526
+ ExamplesMap: _1.mapOf('Example'),
444
527
  Encoding,
528
+ EncodingMap: _1.mapOf('Encoding'),
529
+ EnumDescriptions,
445
530
  Header,
446
- ResponsesMap,
531
+ HeadersMap: _1.mapOf('Header'),
532
+ Responses,
447
533
  Response,
448
534
  Link,
535
+ Logo,
449
536
  Schema,
450
537
  Xml,
451
538
  SchemaProperties,
452
539
  DiscriminatorMapping,
453
540
  Discriminator,
454
541
  Components,
542
+ LinksMap: _1.mapOf('Link'),
455
543
  NamedSchemas: _1.mapOf('Schema'),
456
544
  NamedResponses: _1.mapOf('Response'),
457
545
  NamedParameters: _1.mapOf('Parameter'),
@@ -460,13 +548,15 @@ exports.Oas3Types = {
460
548
  NamedHeaders: _1.mapOf('Header'),
461
549
  NamedSecuritySchemes: _1.mapOf('SecurityScheme'),
462
550
  NamedLinks: _1.mapOf('Link'),
463
- NamedCallbacks: _1.mapOf('PathItem'),
551
+ NamedCallbacks: _1.mapOf('Callback'),
464
552
  ImplicitFlow,
465
553
  PasswordFlow,
466
554
  ClientCredentials,
467
555
  AuthorizationCode,
468
- SecuritySchemeFlows,
556
+ OAuth2Flows,
469
557
  SecurityScheme,
470
558
  XCodeSample,
559
+ XCodeSampleList: _1.listOf('XCodeSample'),
560
+ XUsePkce,
471
561
  WebhooksMap,
472
562
  };
@@ -3,21 +3,22 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Oas3_1Types = void 0;
4
4
  const _1 = require(".");
5
5
  const oas3_1 = require("./oas3");
6
- const DefinitionRoot = {
6
+ const Root = {
7
7
  properties: {
8
8
  openapi: null,
9
9
  info: 'Info',
10
- servers: _1.listOf('Server'),
11
- security: _1.listOf('SecurityRequirement'),
12
- tags: _1.listOf('Tag'),
10
+ servers: 'ServerList',
11
+ security: 'SecurityRequirementList',
12
+ tags: 'TagList',
13
13
  externalDocs: 'ExternalDocs',
14
- paths: 'PathMap',
14
+ paths: 'Paths',
15
15
  webhooks: 'WebhooksMap',
16
16
  components: 'Components',
17
17
  jsonSchemaDialect: { type: 'string' },
18
18
  },
19
19
  required: ['openapi', 'info'],
20
20
  requiredOneOf: ['paths', 'components', 'webhooks'],
21
+ extensionsPrefix: 'x-',
21
22
  };
22
23
  const License = {
23
24
  properties: {
@@ -26,6 +27,7 @@ const License = {
26
27
  identifier: { type: 'string' },
27
28
  },
28
29
  required: ['name'],
30
+ extensionsPrefix: 'x-',
29
31
  };
30
32
  const Info = {
31
33
  properties: {
@@ -36,8 +38,10 @@ const Info = {
36
38
  summary: { type: 'string' },
37
39
  contact: 'Contact',
38
40
  license: 'License',
41
+ 'x-logo': 'Logo',
39
42
  },
40
43
  required: ['title', 'version'],
44
+ extensionsPrefix: 'x-',
41
45
  };
42
46
  const Components = {
43
47
  properties: {
@@ -52,6 +56,7 @@ const Components = {
52
56
  callbacks: 'NamedCallbacks',
53
57
  pathItems: 'NamedPathItems',
54
58
  },
59
+ extensionsPrefix: 'x-',
55
60
  };
56
61
  const Operation = {
57
62
  properties: {
@@ -63,21 +68,23 @@ const Operation = {
63
68
  description: { type: 'string' },
64
69
  externalDocs: 'ExternalDocs',
65
70
  operationId: { type: 'string' },
66
- parameters: _1.listOf('Parameter'),
67
- security: _1.listOf('SecurityRequirement'),
68
- servers: _1.listOf('Server'),
71
+ parameters: 'ParameterList',
72
+ security: 'SecurityRequirementList',
73
+ servers: 'ServerList',
69
74
  requestBody: 'RequestBody',
70
- responses: 'ResponsesMap',
75
+ responses: 'Responses',
71
76
  deprecated: { type: 'boolean' },
72
- callbacks: _1.mapOf('Callback'),
73
- 'x-codeSamples': _1.listOf('XCodeSample'),
74
- 'x-code-samples': _1.listOf('XCodeSample'),
77
+ callbacks: 'CallbacksMap',
78
+ 'x-codeSamples': 'XCodeSampleList',
79
+ 'x-code-samples': 'XCodeSampleList',
75
80
  'x-hideTryItPanel': { type: 'boolean' },
76
81
  },
82
+ extensionsPrefix: 'x-',
77
83
  };
78
84
  const Schema = {
79
85
  properties: {
80
86
  $id: { type: 'string' },
87
+ $anchor: { type: 'string' },
81
88
  id: { type: 'string' },
82
89
  $schema: { type: 'string' },
83
90
  definitions: 'NamedSchemas',
@@ -85,21 +92,20 @@ const Schema = {
85
92
  $vocabulary: { type: 'string' },
86
93
  externalDocs: 'ExternalDocs',
87
94
  discriminator: 'Discriminator',
88
- myArbitraryKeyword: { type: 'boolean' },
89
95
  title: { type: 'string' },
90
- multipleOf: { type: 'number' },
96
+ multipleOf: { type: 'number', minimum: 0 },
91
97
  maximum: { type: 'number' },
92
98
  minimum: { type: 'number' },
93
99
  exclusiveMaximum: { type: 'number' },
94
100
  exclusiveMinimum: { type: 'number' },
95
- maxLength: { type: 'number' },
96
- minLength: { type: 'number' },
101
+ maxLength: { type: 'integer', minimum: 0 },
102
+ minLength: { type: 'integer', minimum: 0 },
97
103
  pattern: { type: 'string' },
98
- maxItems: { type: 'number' },
99
- minItems: { type: 'number' },
104
+ maxItems: { type: 'integer', minimum: 0 },
105
+ minItems: { type: 'integer', minimum: 0 },
100
106
  uniqueItems: { type: 'boolean' },
101
- maxProperties: { type: 'number' },
102
- minProperties: { type: 'number' },
107
+ maxProperties: { type: 'integer', minimum: 0 },
108
+ minProperties: { type: 'integer', minimum: 0 },
103
109
  required: { type: 'array', items: { type: 'string' } },
104
110
  enum: { type: 'array' },
105
111
  type: (value) => {
@@ -125,6 +131,8 @@ const Schema = {
125
131
  dependentSchemas: _1.listOf('Schema'),
126
132
  prefixItems: _1.listOf('Schema'),
127
133
  contains: 'Schema',
134
+ minContains: { type: 'integer', minimum: 0 },
135
+ maxContains: { type: 'integer', minimum: 0 },
128
136
  patternProperties: { type: 'object' },
129
137
  propertyNames: 'Schema',
130
138
  unevaluatedItems: 'Schema',
@@ -139,10 +147,7 @@ const Schema = {
139
147
  summary: { type: 'string' },
140
148
  properties: 'SchemaProperties',
141
149
  items: (value) => {
142
- if (Array.isArray(value)) {
143
- return _1.listOf('Schema');
144
- }
145
- else if (typeof value === 'boolean') {
150
+ if (typeof value === 'boolean') {
146
151
  return { type: 'boolean' };
147
152
  }
148
153
  else {
@@ -167,6 +172,7 @@ const Schema = {
167
172
  $comment: { type: 'string' },
168
173
  'x-tags': { type: 'array', items: { type: 'string' } },
169
174
  },
175
+ extensionsPrefix: 'x-',
170
176
  };
171
177
  const SecurityScheme = {
172
178
  properties: {
@@ -176,7 +182,7 @@ const SecurityScheme = {
176
182
  in: { type: 'string', enum: ['query', 'header', 'cookie'] },
177
183
  scheme: { type: 'string' },
178
184
  bearerFormat: { type: 'string' },
179
- flows: 'SecuritySchemeFlows',
185
+ flows: 'OAuth2Flows',
180
186
  openIdConnectUrl: { type: 'string' },
181
187
  },
182
188
  required(value) {
@@ -238,7 +244,7 @@ const SecurityScheme = {
238
244
  extensionsPrefix: 'x-',
239
245
  };
240
246
  exports.Oas3_1Types = Object.assign(Object.assign({}, oas3_1.Oas3Types), { Info,
241
- DefinitionRoot,
247
+ Root,
242
248
  Schema,
243
249
  License,
244
250
  Components, NamedPathItems: _1.mapOf('PathItem'), SecurityScheme,