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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (382) hide show
  1. package/README.md +6 -6
  2. package/lib/benchmark/benches/lint-with-top-level-rule-report.bench.js +0 -1
  3. package/lib/benchmark/benches/recommended-oas3.bench.js +1 -1
  4. package/lib/benchmark/benches/resolve-with-no-external.bench.js +1 -1
  5. package/lib/benchmark/utils.d.ts +2 -2
  6. package/lib/benchmark/utils.js +2 -2
  7. package/lib/bundle.d.ts +10 -15
  8. package/lib/bundle.js +32 -12
  9. package/lib/config/all.d.ts +2 -2
  10. package/lib/config/all.js +16 -6
  11. package/lib/config/builtIn.d.ts +2 -2
  12. package/lib/config/builtIn.js +2 -2
  13. package/lib/config/config-resolvers.d.ts +5 -5
  14. package/lib/config/config-resolvers.js +121 -66
  15. package/lib/config/config.d.ts +12 -18
  16. package/lib/config/config.js +42 -26
  17. package/lib/config/load.d.ts +16 -3
  18. package/lib/config/load.js +36 -14
  19. package/lib/config/minimal.d.ts +2 -2
  20. package/lib/config/minimal.js +10 -6
  21. package/lib/config/recommended.d.ts +2 -2
  22. package/lib/config/recommended.js +10 -6
  23. package/lib/config/rules.d.ts +7 -4
  24. package/lib/config/rules.js +5 -4
  25. package/lib/config/types.d.ts +72 -23
  26. package/lib/config/types.js +13 -0
  27. package/lib/config/utils.d.ts +6 -5
  28. package/lib/config/utils.js +110 -32
  29. package/lib/decorators/common/filters/filter-helper.d.ts +3 -0
  30. package/lib/decorators/common/filters/filter-helper.js +67 -0
  31. package/lib/decorators/common/filters/filter-in.d.ts +2 -0
  32. package/lib/decorators/common/filters/filter-in.js +17 -0
  33. package/lib/decorators/common/filters/filter-out.d.ts +2 -0
  34. package/lib/decorators/common/filters/filter-out.js +17 -0
  35. package/lib/decorators/common/info-override.d.ts +2 -0
  36. package/lib/decorators/common/info-override.js +28 -0
  37. package/lib/decorators/common/media-type-examples-override.d.ts +2 -0
  38. package/lib/decorators/common/media-type-examples-override.js +53 -0
  39. package/lib/decorators/common/registry-dependencies.js +2 -2
  40. package/lib/decorators/common/remove-x-internal.js +2 -2
  41. package/lib/decorators/oas2/index.d.ts +3 -0
  42. package/lib/decorators/oas2/index.js +7 -1
  43. package/lib/decorators/oas3/index.d.ts +4 -0
  44. package/lib/decorators/oas3/index.js +9 -1
  45. package/lib/env.d.ts +3 -0
  46. package/lib/env.js +8 -0
  47. package/lib/format/codeframes.js +16 -10
  48. package/lib/format/format.d.ts +1 -1
  49. package/lib/format/format.js +64 -32
  50. package/lib/index.d.ts +6 -6
  51. package/lib/index.js +7 -2
  52. package/lib/js-yaml/index.js +2 -6
  53. package/lib/lint.d.ts +4 -2
  54. package/lib/lint.js +36 -11
  55. package/lib/logger.d.ts +10 -0
  56. package/lib/logger.js +31 -0
  57. package/lib/output.d.ts +3 -0
  58. package/lib/output.js +9 -0
  59. package/lib/redocly/index.js +10 -9
  60. package/lib/redocly/registry-api-types.d.ts +28 -28
  61. package/lib/redocly/registry-api.d.ts +3 -3
  62. package/lib/redocly/registry-api.js +10 -2
  63. package/lib/ref-utils.d.ts +1 -0
  64. package/lib/ref-utils.js +7 -2
  65. package/lib/resolve.d.ts +1 -1
  66. package/lib/resolve.js +33 -3
  67. package/lib/rules/ajv.d.ts +2 -2
  68. package/lib/rules/ajv.js +12 -12
  69. package/lib/rules/common/assertions/asserts.d.ts +29 -4
  70. package/lib/rules/common/assertions/asserts.js +227 -97
  71. package/lib/rules/common/assertions/index.d.ts +27 -2
  72. package/lib/rules/common/assertions/index.js +9 -37
  73. package/lib/rules/common/assertions/utils.d.ts +16 -8
  74. package/lib/rules/common/assertions/utils.js +160 -76
  75. package/lib/rules/common/info-license-url.d.ts +1 -1
  76. package/lib/rules/common/info-license-url.js +5 -10
  77. package/lib/rules/common/info-license.d.ts +2 -0
  78. package/lib/rules/common/info-license.js +17 -0
  79. package/lib/rules/common/no-ambiguous-paths.js +1 -1
  80. package/lib/rules/common/no-enum-type-mismatch.js +1 -3
  81. package/lib/rules/common/no-identical-paths.js +4 -4
  82. package/lib/rules/common/no-invalid-parameter-examples.js +3 -3
  83. package/lib/rules/common/no-invalid-schema-examples.js +3 -3
  84. package/lib/rules/common/operation-2xx-response.js +15 -9
  85. package/lib/rules/common/operation-4xx-response.js +15 -9
  86. package/lib/rules/common/operation-operationId.js +2 -2
  87. package/lib/rules/common/operation-tag-defined.js +1 -1
  88. package/lib/rules/common/path-not-include-query.js +2 -2
  89. package/lib/rules/common/path-params-defined.js +7 -2
  90. package/lib/rules/common/paths-kebab-case.js +4 -1
  91. package/lib/rules/common/required-string-property-missing-min-length.d.ts +2 -0
  92. package/lib/rules/common/required-string-property-missing-min-length.js +37 -0
  93. package/lib/rules/common/response-contains-header.js +2 -2
  94. package/lib/rules/common/scalar-property-missing-example.js +2 -1
  95. package/lib/rules/common/security-defined.d.ts +2 -0
  96. package/lib/rules/common/{operation-security-defined.js → security-defined.js} +25 -6
  97. package/lib/rules/common/spec-strict-refs.d.ts +2 -0
  98. package/lib/rules/common/spec-strict-refs.js +30 -0
  99. package/lib/rules/common/spec.js +41 -18
  100. package/lib/rules/common/tags-alphabetical.js +1 -1
  101. package/lib/rules/oas2/index.d.ts +3 -2
  102. package/lib/rules/oas2/index.js +10 -8
  103. package/lib/rules/oas2/remove-unused-components.js +6 -6
  104. package/lib/rules/oas2/request-mime-type.d.ts +1 -1
  105. package/lib/rules/oas2/request-mime-type.js +1 -1
  106. package/lib/rules/oas2/response-mime-type.d.ts +1 -1
  107. package/lib/rules/oas2/response-mime-type.js +1 -1
  108. package/lib/rules/oas3/component-name-unique.d.ts +2 -0
  109. package/lib/rules/oas3/component-name-unique.js +124 -0
  110. package/lib/rules/oas3/index.js +18 -10
  111. package/lib/rules/oas3/no-empty-servers.js +2 -2
  112. package/lib/rules/oas3/no-invalid-media-type-examples.js +2 -2
  113. package/lib/rules/oas3/no-server-variables-empty-enum.d.ts +2 -0
  114. package/lib/rules/oas3/{no-servers-empty-enum.js → no-server-variables-empty-enum.js} +5 -5
  115. package/lib/rules/oas3/no-unused-components.js +2 -2
  116. package/lib/rules/oas3/operation-4xx-problem-details-rfc7807.d.ts +5 -0
  117. package/lib/rules/oas3/operation-4xx-problem-details-rfc7807.js +36 -0
  118. package/lib/rules/oas3/remove-unused-components.js +6 -6
  119. package/lib/rules/oas3/request-mime-type.d.ts +1 -1
  120. package/lib/rules/oas3/request-mime-type.js +1 -1
  121. package/lib/rules/oas3/response-mime-type.d.ts +1 -1
  122. package/lib/rules/oas3/response-mime-type.js +1 -1
  123. package/lib/rules/oas3/spec-components-invalid-map-name.d.ts +2 -0
  124. package/lib/rules/oas3/spec-components-invalid-map-name.js +62 -0
  125. package/lib/rules/other/stats.d.ts +2 -2
  126. package/lib/rules/other/stats.js +45 -16
  127. package/lib/rules/utils.d.ts +5 -2
  128. package/lib/rules/utils.js +54 -6
  129. package/lib/types/config-external-schemas.d.ts +2193 -0
  130. package/lib/types/config-external-schemas.js +805 -0
  131. package/lib/types/index.d.ts +3 -2
  132. package/lib/types/index.js +9 -1
  133. package/lib/types/oas2.js +91 -15
  134. package/lib/types/oas3.js +125 -46
  135. package/lib/types/oas3_1.js +23 -19
  136. package/lib/types/redocly-yaml.js +406 -60
  137. package/lib/utils.d.ts +15 -4
  138. package/lib/utils.js +72 -8
  139. package/lib/visitors.d.ts +20 -16
  140. package/lib/visitors.js +28 -3
  141. package/lib/walk.d.ts +11 -19
  142. package/lib/walk.js +74 -53
  143. package/package.json +5 -6
  144. package/__tests__/utils.ts +0 -86
  145. package/lib/rules/common/info-description.d.ts +0 -2
  146. package/lib/rules/common/info-description.js +0 -12
  147. package/lib/rules/common/license-url.d.ts +0 -2
  148. package/lib/rules/common/license-url.js +0 -12
  149. package/lib/rules/common/operation-security-defined.d.ts +0 -2
  150. package/lib/rules/oas3/no-servers-empty-enum.d.ts +0 -2
  151. package/src/__tests__/__snapshots__/bundle.test.ts.snap +0 -255
  152. package/src/__tests__/bundle.test.ts +0 -156
  153. package/src/__tests__/codeframes.test.ts +0 -531
  154. package/src/__tests__/fixtures/extension.js +0 -24
  155. package/src/__tests__/fixtures/refs/definitions.yaml +0 -3
  156. package/src/__tests__/fixtures/refs/examples.yaml +0 -8
  157. package/src/__tests__/fixtures/refs/external-request-body.yaml +0 -13
  158. package/src/__tests__/fixtures/refs/externalref.yaml +0 -35
  159. package/src/__tests__/fixtures/refs/hosted.yaml +0 -35
  160. package/src/__tests__/fixtures/refs/openapi-with-external-refs-conflicting-names.yaml +0 -21
  161. package/src/__tests__/fixtures/refs/openapi-with-external-refs.yaml +0 -33
  162. package/src/__tests__/fixtures/refs/openapi-with-url-refs.yaml +0 -18
  163. package/src/__tests__/fixtures/refs/param-b.yaml +0 -1
  164. package/src/__tests__/fixtures/refs/param-c.yaml +0 -1
  165. package/src/__tests__/fixtures/refs/rename.yaml +0 -1
  166. package/src/__tests__/fixtures/refs/requestBody.yaml +0 -9
  167. package/src/__tests__/fixtures/refs/schema-a.yaml +0 -1
  168. package/src/__tests__/fixtures/refs/simple.yaml +0 -1
  169. package/src/__tests__/fixtures/refs/vendor.schema.yaml +0 -20
  170. package/src/__tests__/fixtures/resolve/External.yaml +0 -10
  171. package/src/__tests__/fixtures/resolve/External2.yaml +0 -4
  172. package/src/__tests__/fixtures/resolve/description.md +0 -3
  173. package/src/__tests__/fixtures/resolve/externalInfo.yaml +0 -4
  174. package/src/__tests__/fixtures/resolve/externalLicense.yaml +0 -1
  175. package/src/__tests__/fixtures/resolve/openapi-with-back.yaml +0 -13
  176. package/src/__tests__/fixtures/resolve/openapi-with-md-description.yaml +0 -5
  177. package/src/__tests__/fixtures/resolve/openapi.yaml +0 -28
  178. package/src/__tests__/fixtures/resolve/schemas/type-a.yaml +0 -10
  179. package/src/__tests__/fixtures/resolve/schemas/type-b.yaml +0 -6
  180. package/src/__tests__/fixtures/resolve/transitive/a.yaml +0 -1
  181. package/src/__tests__/fixtures/resolve/transitive/components.yaml +0 -5
  182. package/src/__tests__/fixtures/resolve/transitive/schemas.yaml +0 -3
  183. package/src/__tests__/js-yaml.test.ts +0 -71
  184. package/src/__tests__/lint.test.ts +0 -195
  185. package/src/__tests__/login.test.ts +0 -17
  186. package/src/__tests__/normalizeVisitors.test.ts +0 -151
  187. package/src/__tests__/ref-utils.test.ts +0 -120
  188. package/src/__tests__/resolve-http.test.ts +0 -77
  189. package/src/__tests__/resolve.test.ts +0 -405
  190. package/src/__tests__/utils.test.ts +0 -85
  191. package/src/__tests__/walk.test.ts +0 -1485
  192. package/src/benchmark/benches/lint-with-many-rules.bench.ts +0 -35
  193. package/src/benchmark/benches/lint-with-nested-rule.bench.ts +0 -39
  194. package/src/benchmark/benches/lint-with-no-rules.bench.ts +0 -20
  195. package/src/benchmark/benches/lint-with-top-level-rule-report.bench.ts +0 -36
  196. package/src/benchmark/benches/lint-with-top-level-rule.bench.ts +0 -32
  197. package/src/benchmark/benches/rebilly.yaml +0 -32267
  198. package/src/benchmark/benches/recommended-oas3.bench.ts +0 -22
  199. package/src/benchmark/benches/resolve-with-no-external.bench.ts +0 -23
  200. package/src/benchmark/benchmark.js +0 -307
  201. package/src/benchmark/colors.js +0 -29
  202. package/src/benchmark/fork.js +0 -83
  203. package/src/benchmark/utils.ts +0 -36
  204. package/src/bundle.ts +0 -386
  205. package/src/config/__tests__/__snapshots__/config-resolvers.test.ts.snap +0 -157
  206. package/src/config/__tests__/config-resolvers.test.ts +0 -429
  207. package/src/config/__tests__/config.test.ts +0 -244
  208. package/src/config/__tests__/fixtures/plugin-config.yaml +0 -3
  209. package/src/config/__tests__/fixtures/plugin.js +0 -56
  210. package/src/config/__tests__/fixtures/resolve-config/api/nested-config.yaml +0 -12
  211. package/src/config/__tests__/fixtures/resolve-config/api/plugin.js +0 -67
  212. package/src/config/__tests__/fixtures/resolve-config/local-config-with-circular.yaml +0 -8
  213. package/src/config/__tests__/fixtures/resolve-config/local-config-with-file.yaml +0 -19
  214. package/src/config/__tests__/fixtures/resolve-config/local-config.yaml +0 -10
  215. package/src/config/__tests__/fixtures/resolve-config/plugin.js +0 -66
  216. package/src/config/__tests__/fixtures/resolve-remote-configs/nested-remote-config.yaml +0 -4
  217. package/src/config/__tests__/fixtures/resolve-remote-configs/remote-config.yaml +0 -5
  218. package/src/config/__tests__/load.test.ts +0 -83
  219. package/src/config/__tests__/resolve-plugins.test.ts +0 -27
  220. package/src/config/all.ts +0 -66
  221. package/src/config/builtIn.ts +0 -37
  222. package/src/config/config-resolvers.ts +0 -359
  223. package/src/config/config.ts +0 -312
  224. package/src/config/index.ts +0 -7
  225. package/src/config/load.ts +0 -84
  226. package/src/config/minimal.ts +0 -58
  227. package/src/config/recommended.ts +0 -58
  228. package/src/config/rules.ts +0 -46
  229. package/src/config/types.ts +0 -168
  230. package/src/config/utils.ts +0 -208
  231. package/src/decorators/__tests__/remove-x-internal.test.ts +0 -316
  232. package/src/decorators/common/info-description-override.ts +0 -24
  233. package/src/decorators/common/operation-description-override.ts +0 -30
  234. package/src/decorators/common/registry-dependencies.ts +0 -25
  235. package/src/decorators/common/remove-x-internal.ts +0 -59
  236. package/src/decorators/common/tag-description-override.ts +0 -25
  237. package/src/decorators/oas2/index.ts +0 -14
  238. package/src/decorators/oas3/index.ts +0 -14
  239. package/src/format/codeframes.ts +0 -210
  240. package/src/format/format.ts +0 -339
  241. package/src/index.ts +0 -68
  242. package/src/js-yaml/index.ts +0 -18
  243. package/src/lint.ts +0 -125
  244. package/src/oas-types.ts +0 -62
  245. package/src/redocly/__tests__/redocly-client.test.ts +0 -140
  246. package/src/redocly/index.ts +0 -182
  247. package/src/redocly/redocly-client-types.ts +0 -10
  248. package/src/redocly/registry-api-types.ts +0 -32
  249. package/src/redocly/registry-api.ts +0 -134
  250. package/src/ref-utils.ts +0 -80
  251. package/src/resolve.ts +0 -378
  252. package/src/rules/__tests__/fixtures/invalid-yaml.yaml +0 -1
  253. package/src/rules/__tests__/fixtures/ref.yaml +0 -1
  254. package/src/rules/__tests__/no-unresolved-refs.test.ts +0 -168
  255. package/src/rules/ajv.ts +0 -103
  256. package/src/rules/common/__tests__/info-description.test.ts +0 -102
  257. package/src/rules/common/__tests__/info-license.test.ts +0 -62
  258. package/src/rules/common/__tests__/license-url.test.ts +0 -63
  259. package/src/rules/common/__tests__/no-ambiguous-paths.test.ts +0 -96
  260. package/src/rules/common/__tests__/no-enum-type-mismatch.test.ts +0 -209
  261. package/src/rules/common/__tests__/no-identical-paths.test.ts +0 -58
  262. package/src/rules/common/__tests__/no-path-trailing-slash.test.ts +0 -85
  263. package/src/rules/common/__tests__/operation-2xx-response.test.ts +0 -91
  264. package/src/rules/common/__tests__/operation-4xx-response.test.ts +0 -107
  265. package/src/rules/common/__tests__/operation-operationId-unique.test.ts +0 -76
  266. package/src/rules/common/__tests__/operation-operationId-url-safe.test.ts +0 -45
  267. package/src/rules/common/__tests__/operation-parameters-unique.test.ts +0 -167
  268. package/src/rules/common/__tests__/operation-security-defined.test.ts +0 -69
  269. package/src/rules/common/__tests__/operation-singular-tag.test.ts +0 -72
  270. package/src/rules/common/__tests__/path-http-verbs-order.test.ts +0 -95
  271. package/src/rules/common/__tests__/path-not-include-query.test.ts +0 -64
  272. package/src/rules/common/__tests__/path-params-defined.test.ts +0 -133
  273. package/src/rules/common/__tests__/paths-kebab-case.test.ts +0 -108
  274. package/src/rules/common/__tests__/scalar-property-missing-example.test.ts +0 -207
  275. package/src/rules/common/__tests__/spec.test.ts +0 -62
  276. package/src/rules/common/__tests__/tag-description.test.ts +0 -65
  277. package/src/rules/common/__tests__/tags-alphabetical.test.ts +0 -64
  278. package/src/rules/common/assertions/__tests__/asserts.test.ts +0 -231
  279. package/src/rules/common/assertions/__tests__/index.test.ts +0 -65
  280. package/src/rules/common/assertions/__tests__/utils.test.ts +0 -89
  281. package/src/rules/common/assertions/asserts.ts +0 -137
  282. package/src/rules/common/assertions/index.ts +0 -75
  283. package/src/rules/common/assertions/utils.ts +0 -167
  284. package/src/rules/common/info-contact.ts +0 -15
  285. package/src/rules/common/info-description.ts +0 -10
  286. package/src/rules/common/info-license-url.ts +0 -15
  287. package/src/rules/common/license-url.ts +0 -10
  288. package/src/rules/common/no-ambiguous-paths.ts +0 -50
  289. package/src/rules/common/no-enum-type-mismatch.ts +0 -49
  290. package/src/rules/common/no-http-verbs-in-paths.ts +0 -36
  291. package/src/rules/common/no-identical-paths.ts +0 -24
  292. package/src/rules/common/no-invalid-parameter-examples.ts +0 -36
  293. package/src/rules/common/no-invalid-schema-examples.ts +0 -27
  294. package/src/rules/common/no-path-trailing-slash.ts +0 -15
  295. package/src/rules/common/operation-2xx-response.ts +0 -16
  296. package/src/rules/common/operation-4xx-response.ts +0 -17
  297. package/src/rules/common/operation-description.ts +0 -13
  298. package/src/rules/common/operation-operationId-unique.ts +0 -21
  299. package/src/rules/common/operation-operationId-url-safe.ts +0 -19
  300. package/src/rules/common/operation-operationId.ts +0 -17
  301. package/src/rules/common/operation-parameters-unique.ts +0 -48
  302. package/src/rules/common/operation-security-defined.ts +0 -45
  303. package/src/rules/common/operation-singular-tag.ts +0 -17
  304. package/src/rules/common/operation-summary.ts +0 -13
  305. package/src/rules/common/operation-tag-defined.ts +0 -26
  306. package/src/rules/common/parameter-description.ts +0 -22
  307. package/src/rules/common/path-declaration-must-exist.ts +0 -15
  308. package/src/rules/common/path-excludes-patterns.ts +0 -23
  309. package/src/rules/common/path-http-verbs-order.ts +0 -30
  310. package/src/rules/common/path-not-include-query.ts +0 -17
  311. package/src/rules/common/path-params-defined.ts +0 -58
  312. package/src/rules/common/path-segment-plural.ts +0 -31
  313. package/src/rules/common/paths-kebab-case.ts +0 -16
  314. package/src/rules/common/response-contains-header.ts +0 -30
  315. package/src/rules/common/scalar-property-missing-example.ts +0 -55
  316. package/src/rules/common/spec.ts +0 -143
  317. package/src/rules/common/tag-description.ts +0 -10
  318. package/src/rules/common/tags-alphabetical.ts +0 -20
  319. package/src/rules/no-unresolved-refs.ts +0 -51
  320. package/src/rules/oas2/__tests__/boolean-parameter-prefixes.test.ts +0 -110
  321. package/src/rules/oas2/__tests__/response-contains-header.test.ts +0 -174
  322. package/src/rules/oas2/__tests__/response-contains-property.test.ts +0 -155
  323. package/src/rules/oas2/__tests__/spec/fixtures/description.md +0 -1
  324. package/src/rules/oas2/__tests__/spec/info.test.ts +0 -355
  325. package/src/rules/oas2/__tests__/spec/operation.test.ts +0 -123
  326. package/src/rules/oas2/__tests__/spec/paths.test.ts +0 -245
  327. package/src/rules/oas2/__tests__/spec/referenceableScalars.test.ts +0 -31
  328. package/src/rules/oas2/__tests__/spec/utils.ts +0 -32
  329. package/src/rules/oas2/boolean-parameter-prefixes.ts +0 -26
  330. package/src/rules/oas2/index.ts +0 -89
  331. package/src/rules/oas2/remove-unused-components.ts +0 -76
  332. package/src/rules/oas2/request-mime-type.ts +0 -17
  333. package/src/rules/oas2/response-contains-property.ts +0 -36
  334. package/src/rules/oas2/response-mime-type.ts +0 -17
  335. package/src/rules/oas3/__tests__/boolean-parameter-prefixes.test.ts +0 -111
  336. package/src/rules/oas3/__tests__/fixtures/common.yaml +0 -11
  337. package/src/rules/oas3/__tests__/no-empty-enum-servers.com.test.ts +0 -205
  338. package/src/rules/oas3/__tests__/no-example-value-and-externalValue.test.ts +0 -65
  339. package/src/rules/oas3/__tests__/no-invalid-media-type-examples.test.ts +0 -392
  340. package/src/rules/oas3/__tests__/no-server-example.com.test.ts +0 -60
  341. package/src/rules/oas3/__tests__/no-server-trailing-slash.test.ts +0 -79
  342. package/src/rules/oas3/__tests__/no-unused-components.test.ts +0 -131
  343. package/src/rules/oas3/__tests__/response-contains-header.test.ts +0 -273
  344. package/src/rules/oas3/__tests__/response-contains-property.test.ts +0 -403
  345. package/src/rules/oas3/__tests__/spec/callbacks.test.ts +0 -41
  346. package/src/rules/oas3/__tests__/spec/fixtures/description.md +0 -1
  347. package/src/rules/oas3/__tests__/spec/info.test.ts +0 -391
  348. package/src/rules/oas3/__tests__/spec/operation.test.ts +0 -253
  349. package/src/rules/oas3/__tests__/spec/paths.test.ts +0 -284
  350. package/src/rules/oas3/__tests__/spec/referenceableScalars.test.ts +0 -77
  351. package/src/rules/oas3/__tests__/spec/servers.test.ts +0 -499
  352. package/src/rules/oas3/__tests__/spec/spec.test.ts +0 -288
  353. package/src/rules/oas3/__tests__/spec/utils.ts +0 -32
  354. package/src/rules/oas3/boolean-parameter-prefixes.ts +0 -28
  355. package/src/rules/oas3/index.ts +0 -105
  356. package/src/rules/oas3/no-empty-servers.ts +0 -22
  357. package/src/rules/oas3/no-example-value-and-externalValue.ts +0 -14
  358. package/src/rules/oas3/no-invalid-media-type-examples.ts +0 -41
  359. package/src/rules/oas3/no-server-example.com.ts +0 -14
  360. package/src/rules/oas3/no-server-trailing-slash.ts +0 -15
  361. package/src/rules/oas3/no-servers-empty-enum.ts +0 -67
  362. package/src/rules/oas3/no-undefined-server-variable.ts +0 -30
  363. package/src/rules/oas3/no-unused-components.ts +0 -75
  364. package/src/rules/oas3/remove-unused-components.ts +0 -84
  365. package/src/rules/oas3/request-mime-type.ts +0 -31
  366. package/src/rules/oas3/response-contains-property.ts +0 -38
  367. package/src/rules/oas3/response-mime-type.ts +0 -31
  368. package/src/rules/other/stats.ts +0 -44
  369. package/src/rules/utils.ts +0 -123
  370. package/src/types/index.ts +0 -138
  371. package/src/types/oas2.ts +0 -397
  372. package/src/types/oas3.ts +0 -515
  373. package/src/types/oas3_1.ts +0 -253
  374. package/src/types/redocly-yaml.ts +0 -647
  375. package/src/typings/common.ts +0 -9
  376. package/src/typings/openapi.ts +0 -298
  377. package/src/typings/swagger.ts +0 -236
  378. package/src/utils.ts +0 -193
  379. package/src/visitors.ts +0 -448
  380. package/src/walk.ts +0 -416
  381. package/tsconfig.json +0 -8
  382. package/tsconfig.tsbuildinfo +0 -1
@@ -4,7 +4,7 @@ exports.OperationTagDefined = void 0;
4
4
  const OperationTagDefined = () => {
5
5
  let definedTags;
6
6
  return {
7
- DefinitionRoot(root) {
7
+ Root(root) {
8
8
  var _a;
9
9
  definedTags = new Set(((_a = root.tags) !== null && _a !== void 0 ? _a : []).map((t) => t.name));
10
10
  },
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PathNotIncludeQuery = void 0;
4
4
  const PathNotIncludeQuery = () => {
5
5
  return {
6
- PathMap: {
6
+ Paths: {
7
7
  PathItem(_operation, { report, key }) {
8
8
  if (key.toString().includes('?')) {
9
9
  report({
@@ -12,7 +12,7 @@ const PathNotIncludeQuery = () => {
12
12
  });
13
13
  }
14
14
  },
15
- }
15
+ },
16
16
  };
17
17
  };
18
18
  exports.PathNotIncludeQuery = PathNotIncludeQuery;
@@ -6,6 +6,7 @@ const PathParamsDefined = () => {
6
6
  let pathTemplateParams;
7
7
  let definedPathParams;
8
8
  let currentPath;
9
+ let definedOperationParams;
9
10
  return {
10
11
  PathItem: {
11
12
  enter(_, { key }) {
@@ -25,9 +26,13 @@ const PathParamsDefined = () => {
25
26
  }
26
27
  },
27
28
  Operation: {
29
+ enter() {
30
+ definedOperationParams = new Set();
31
+ },
28
32
  leave(_op, { report, location }) {
29
33
  for (const templateParam of Array.from(pathTemplateParams.keys())) {
30
- if (!definedPathParams.has(templateParam)) {
34
+ if (!definedOperationParams.has(templateParam) &&
35
+ !definedPathParams.has(templateParam)) {
31
36
  report({
32
37
  message: `The operation does not define the path parameter \`{${templateParam}}\` expected by path \`${currentPath}\`.`,
33
38
  location: location.child(['parameters']).key(), // report on operation
@@ -37,7 +42,7 @@ const PathParamsDefined = () => {
37
42
  },
38
43
  Parameter(parameter, { report, location }) {
39
44
  if (parameter.in === 'path' && parameter.name) {
40
- definedPathParams.add(parameter.name);
45
+ definedOperationParams.add(parameter.name);
41
46
  if (!pathTemplateParams.has(parameter.name)) {
42
47
  report({
43
48
  message: `Path parameter \`${parameter.name}\` is not used in the path \`${currentPath}\`.`,
@@ -4,7 +4,10 @@ exports.PathsKebabCase = void 0;
4
4
  const PathsKebabCase = () => {
5
5
  return {
6
6
  PathItem(_path, { report, key }) {
7
- const segments = key.substr(1).split('/').filter(s => s !== ''); // filter out empty segments
7
+ const segments = key
8
+ .substr(1)
9
+ .split('/')
10
+ .filter((s) => s !== ''); // filter out empty segments
8
11
  if (!segments.every((segment) => /^{.+}$/.test(segment) || /^[a-z0-9-.]+$/.test(segment))) {
9
12
  report({
10
13
  message: `\`${key}\` does not use kebab-case.`,
@@ -0,0 +1,2 @@
1
+ import { Oas3Rule } from 'core/src/visitors';
2
+ export declare const RequiredStringPropertyMissingMinLength: Oas3Rule;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RequiredStringPropertyMissingMinLength = void 0;
4
+ const RequiredStringPropertyMissingMinLength = () => {
5
+ let skipSchemaProperties;
6
+ let requiredPropertiesSet;
7
+ return {
8
+ Schema: {
9
+ enter(schema) {
10
+ if (!(schema === null || schema === void 0 ? void 0 : schema.required)) {
11
+ skipSchemaProperties = true;
12
+ return;
13
+ }
14
+ requiredPropertiesSet = new Set(schema.required);
15
+ skipSchemaProperties = false;
16
+ },
17
+ SchemaProperties: {
18
+ skip() {
19
+ return skipSchemaProperties;
20
+ },
21
+ Schema: {
22
+ enter(schema, { key, location, report }) {
23
+ if (requiredPropertiesSet.has(key) && schema.type === 'string') {
24
+ if (!(schema === null || schema === void 0 ? void 0 : schema.minLength)) {
25
+ report({
26
+ message: 'Property minLength is required.',
27
+ location: location.key(),
28
+ });
29
+ }
30
+ }
31
+ },
32
+ },
33
+ },
34
+ },
35
+ };
36
+ };
37
+ exports.RequiredStringPropertyMissingMinLength = RequiredStringPropertyMissingMinLength;
@@ -8,13 +8,13 @@ const ResponseContainsHeader = (options) => {
8
8
  Operation: {
9
9
  Response: {
10
10
  enter: (response, { report, location, key }) => {
11
- var _a;
12
11
  const expectedHeaders = names[key] ||
13
12
  names[utils_1.getMatchingStatusCodeRange(key)] ||
14
13
  names[utils_1.getMatchingStatusCodeRange(key).toLowerCase()] ||
15
14
  [];
16
15
  for (const expectedHeader of expectedHeaders) {
17
- if (!((_a = response.headers) === null || _a === void 0 ? void 0 : _a[expectedHeader])) {
16
+ if (!(response === null || response === void 0 ? void 0 : response.headers) ||
17
+ !Object.keys(response === null || response === void 0 ? void 0 : response.headers).some((header) => header.toLowerCase() === expectedHeader.toLowerCase())) {
18
18
  report({
19
19
  message: `Response object must contain a "${expectedHeader}" header.`,
20
20
  location: location.child('headers').key(),
@@ -11,7 +11,8 @@ const ScalarPropertyMissingExample = () => {
11
11
  if (!propSchema || !isScalarSchema(propSchema)) {
12
12
  continue;
13
13
  }
14
- if (!propSchema.example && !propSchema.examples) {
14
+ if (propSchema.example === undefined &&
15
+ propSchema.examples === undefined) {
15
16
  report({
16
17
  message: `Scalar property should have "example"${oasVersion === oas_types_1.OasVersion.Version3_1 ? ' or "examples"' : ''} defined.`,
17
18
  location: location.child(propName).key(),
@@ -0,0 +1,2 @@
1
+ import { Oas3Rule, Oas2Rule } from '../../visitors';
2
+ export declare const SecurityDefined: Oas3Rule | Oas2Rule;
@@ -1,11 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OperationSecurityDefined = void 0;
4
- const OperationSecurityDefined = () => {
5
- let referencedSchemes = new Map();
3
+ exports.SecurityDefined = void 0;
4
+ const SecurityDefined = () => {
5
+ const referencedSchemes = new Map();
6
+ const operationsWithoutSecurity = [];
7
+ let eachOperationHasSecurity = true;
6
8
  return {
7
- DefinitionRoot: {
8
- leave(_, { report }) {
9
+ Root: {
10
+ leave(root, { report }) {
9
11
  for (const [name, scheme] of referencedSchemes.entries()) {
10
12
  if (scheme.defined)
11
13
  continue;
@@ -16,6 +18,17 @@ const OperationSecurityDefined = () => {
16
18
  });
17
19
  }
18
20
  }
21
+ if (root.security || eachOperationHasSecurity) {
22
+ return;
23
+ }
24
+ else {
25
+ for (const operationLocation of operationsWithoutSecurity) {
26
+ report({
27
+ message: `Every operation should have security defined on it or on the root level.`,
28
+ location: operationLocation.key(),
29
+ });
30
+ }
31
+ }
19
32
  },
20
33
  },
21
34
  SecurityScheme(_securityScheme, { key }) {
@@ -33,6 +46,12 @@ const OperationSecurityDefined = () => {
33
46
  }
34
47
  }
35
48
  },
49
+ Operation(operation, { location }) {
50
+ if (!(operation === null || operation === void 0 ? void 0 : operation.security)) {
51
+ eachOperationHasSecurity = false;
52
+ operationsWithoutSecurity.push(location);
53
+ }
54
+ },
36
55
  };
37
56
  };
38
- exports.OperationSecurityDefined = OperationSecurityDefined;
57
+ exports.SecurityDefined = SecurityDefined;
@@ -0,0 +1,2 @@
1
+ import { Oas2Rule, Oas3Rule } from '../../visitors';
2
+ export declare const SpecStrictRefs: Oas3Rule | Oas2Rule;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SpecStrictRefs = void 0;
4
+ const ref_utils_1 = require("../../ref-utils");
5
+ const SpecStrictRefs = () => {
6
+ const nodesToSkip = [
7
+ 'Schema',
8
+ 'Response',
9
+ 'Parameter',
10
+ 'RequestBody',
11
+ 'Example',
12
+ 'Header',
13
+ 'SecurityScheme',
14
+ 'Link',
15
+ 'Callback',
16
+ 'PathItem',
17
+ ];
18
+ return {
19
+ any(_node, { report, rawNode, rawLocation, type }) {
20
+ const shouldCheck = !nodesToSkip.includes(type.name);
21
+ if (shouldCheck && ref_utils_1.isRef(rawNode)) {
22
+ report({
23
+ message: 'Field $ref is not expected here.',
24
+ location: rawLocation.child('$ref').key(),
25
+ });
26
+ }
27
+ },
28
+ };
29
+ };
30
+ exports.SpecStrictRefs = SpecStrictRefs;
@@ -7,30 +7,37 @@ const ref_utils_1 = require("../../ref-utils");
7
7
  const utils_2 = require("../../utils");
8
8
  const OasSpec = () => {
9
9
  return {
10
- any(node, { report, type, location, key, resolve, ignoreNextVisitorsOnNode }) {
11
- var _a, _b, _c, _d;
10
+ any(node, { report, type, location, rawLocation, key, resolve, ignoreNextVisitorsOnNode }) {
11
+ var _a, _b, _c, _d, _e, _f;
12
12
  const nodeType = utils_1.oasTypeOf(node);
13
+ const refLocation = rawLocation !== location ? rawLocation : undefined;
13
14
  if (type.items) {
14
15
  if (nodeType !== 'array') {
15
16
  report({
16
17
  message: `Expected type \`${type.name}\` (array) but got \`${nodeType}\``,
18
+ from: refLocation,
17
19
  });
18
20
  ignoreNextVisitorsOnNode();
19
21
  }
20
22
  return;
21
23
  }
22
24
  else if (nodeType !== 'object') {
23
- report({
24
- message: `Expected type \`${type.name}\` (object) but got \`${nodeType}\``,
25
- });
25
+ if (type !== types_1.SpecExtension) {
26
+ // do not validate unknown extensions structure
27
+ report({
28
+ message: `Expected type \`${type.name}\` (object) but got \`${nodeType}\``,
29
+ from: refLocation,
30
+ });
31
+ }
26
32
  ignoreNextVisitorsOnNode();
27
33
  return;
28
34
  }
29
35
  const required = typeof type.required === 'function' ? type.required(node, key) : type.required;
30
- for (let propName of required || []) {
36
+ for (const propName of required || []) {
31
37
  if (!node.hasOwnProperty(propName)) {
32
38
  report({
33
39
  message: `The field \`${propName}\` must be present on this level.`,
40
+ from: refLocation,
34
41
  location: [{ reportOnKey: true }],
35
42
  });
36
43
  }
@@ -45,14 +52,15 @@ const OasSpec = () => {
45
52
  }
46
53
  report({
47
54
  message: `The field \`${propName}\` is not allowed here.`,
48
- location: location.child([propName]).key()
55
+ from: refLocation,
56
+ location: location.child([propName]).key(),
49
57
  });
50
58
  }
51
59
  }
52
60
  const requiredOneOf = type.requiredOneOf || null;
53
61
  if (requiredOneOf) {
54
62
  let hasProperty = false;
55
- for (let propName of requiredOneOf || []) {
63
+ for (const propName of requiredOneOf || []) {
56
64
  if (node.hasOwnProperty(propName)) {
57
65
  hasProperty = true;
58
66
  }
@@ -60,6 +68,7 @@ const OasSpec = () => {
60
68
  if (!hasProperty)
61
69
  report({
62
70
  message: `Must contain at least one of the following fields: ${(_b = type.requiredOneOf) === null || _b === void 0 ? void 0 : _b.join(', ')}.`,
71
+ from: refLocation,
63
72
  location: [{ reportOnKey: true }],
64
73
  });
65
74
  }
@@ -82,6 +91,7 @@ const OasSpec = () => {
82
91
  report({
83
92
  message: `Property \`${propName}\` is not expected here.`,
84
93
  suggest: utils_1.getSuggest(propName, Object.keys(type.properties)),
94
+ from: refLocation,
85
95
  location: propLocation.key(),
86
96
  });
87
97
  continue;
@@ -92,30 +102,36 @@ const OasSpec = () => {
92
102
  if (propSchema.resolvable !== false && ref_utils_1.isRef(propValue)) {
93
103
  propValue = resolve(propValue).node;
94
104
  }
95
- if (propSchema.enum) {
96
- if (!propSchema.enum.includes(propValue)) {
97
- report({
98
- location: propLocation,
99
- message: `\`${propName}\` can be one of the following only: ${propSchema.enum
100
- .map((i) => `"${i}"`)
101
- .join(', ')}.`,
102
- suggest: utils_1.getSuggest(propValue, propSchema.enum),
105
+ if (propSchema.items && ((_c = propSchema.items) === null || _c === void 0 ? void 0 : _c.enum) && Array.isArray(propValue)) {
106
+ for (let i = 0; i < propValue.length; i++) {
107
+ utils_1.validateSchemaEnumType((_d = propSchema.items) === null || _d === void 0 ? void 0 : _d.enum, propValue[i], propName, refLocation, {
108
+ report,
109
+ location: location.child([propName, i]),
103
110
  });
104
111
  }
105
112
  }
113
+ if (propSchema.enum) {
114
+ utils_1.validateSchemaEnumType(propSchema.enum, propValue, propName, refLocation, {
115
+ report,
116
+ location: location.child([propName]),
117
+ });
118
+ }
106
119
  else if (propSchema.type && !utils_1.matchesJsonSchemaType(propValue, propSchema.type, false)) {
107
120
  report({
108
121
  message: `Expected type \`${propSchema.type}\` but got \`${propValueType}\`.`,
122
+ from: refLocation,
109
123
  location: propLocation,
110
124
  });
125
+ ignoreNextVisitorsOnNode();
111
126
  }
112
- else if (propValueType === 'array' && ((_c = propSchema.items) === null || _c === void 0 ? void 0 : _c.type)) {
113
- const itemsType = (_d = propSchema.items) === null || _d === void 0 ? void 0 : _d.type;
127
+ else if (propValueType === 'array' && ((_e = propSchema.items) === null || _e === void 0 ? void 0 : _e.type)) {
128
+ const itemsType = (_f = propSchema.items) === null || _f === void 0 ? void 0 : _f.type;
114
129
  for (let i = 0; i < propValue.length; i++) {
115
130
  const item = propValue[i];
116
131
  if (!utils_1.matchesJsonSchemaType(item, itemsType, false)) {
117
132
  report({
118
133
  message: `Expected type \`${itemsType}\` but got \`${utils_1.oasTypeOf(item)}\`.`,
134
+ from: refLocation,
119
135
  location: propLocation.child([i]),
120
136
  });
121
137
  }
@@ -125,10 +141,17 @@ const OasSpec = () => {
125
141
  if (propSchema.minimum > node[propName]) {
126
142
  report({
127
143
  message: `The value of the ${propName} field must be greater than or equal to ${propSchema.minimum}`,
144
+ from: refLocation,
128
145
  location: location.child([propName]),
129
146
  });
130
147
  }
131
148
  }
149
+ if (propName === 'nullable' && !node.type) {
150
+ report({
151
+ message: 'The `type` field must be defined when the `nullable` field is used.',
152
+ location: location.child([propName]),
153
+ });
154
+ }
132
155
  }
133
156
  },
134
157
  };
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TagsAlphabetical = void 0;
4
4
  const TagsAlphabetical = () => {
5
5
  return {
6
- DefinitionRoot(root, { report, location }) {
6
+ Root(root, { report, location }) {
7
7
  if (!root.tags)
8
8
  return;
9
9
  for (let i = 0; i < root.tags.length - 1; i++) {
@@ -3,7 +3,6 @@ export declare const rules: {
3
3
  spec: Oas2Rule;
4
4
  'no-invalid-schema-examples': any;
5
5
  'no-invalid-parameter-examples': any;
6
- 'info-description': Oas2Rule;
7
6
  'info-contact': Oas2Rule;
8
7
  'info-license': Oas2Rule;
9
8
  'info-license-url': Oas2Rule;
@@ -29,7 +28,7 @@ export declare const rules: {
29
28
  'path-params-defined': Oas2Rule;
30
29
  'parameter-description': Oas2Rule;
31
30
  'operation-singular-tag': Oas2Rule;
32
- 'operation-security-defined': Oas2Rule;
31
+ 'security-defined': Oas2Rule;
33
32
  'no-unresolved-refs': Oas2Rule;
34
33
  'no-identical-paths': Oas2Rule;
35
34
  'no-ambiguous-paths': Oas2Rule;
@@ -42,5 +41,7 @@ export declare const rules: {
42
41
  'response-contains-header': Oas2Rule;
43
42
  'response-contains-property': Oas2Rule;
44
43
  'scalar-property-missing-example': import("../../visitors").Oas3Rule | Oas2Rule;
44
+ 'required-string-property-missing-min-length': import("../../visitors").Oas3Rule;
45
+ 'spec-strict-refs': import("../../visitors").Oas3Rule | Oas2Rule;
45
46
  };
46
47
  export declare const preprocessors: {};
@@ -4,10 +4,9 @@ exports.preprocessors = exports.rules = void 0;
4
4
  const spec_1 = require("../common/spec");
5
5
  const no_invalid_schema_examples_1 = require("../common/no-invalid-schema-examples");
6
6
  const no_invalid_parameter_examples_1 = require("../common/no-invalid-parameter-examples");
7
- const info_description_1 = require("../common/info-description");
8
7
  const info_contact_1 = require("../common/info-contact");
8
+ const info_license_1 = require("../common/info-license");
9
9
  const info_license_url_1 = require("../common/info-license-url");
10
- const license_url_1 = require("../common/license-url");
11
10
  const boolean_parameter_prefixes_1 = require("./boolean-parameter-prefixes");
12
11
  const tag_description_1 = require("../common/tag-description");
13
12
  const tags_alphabetical_1 = require("../common/tags-alphabetical");
@@ -27,7 +26,7 @@ const operation_description_1 = require("../common/operation-description");
27
26
  const path_not_include_query_1 = require("../common/path-not-include-query");
28
27
  const parameter_description_1 = require("../common/parameter-description");
29
28
  const operation_singular_tag_1 = require("../common/operation-singular-tag");
30
- const operation_security_defined_1 = require("../common/operation-security-defined");
29
+ const security_defined_1 = require("../common/security-defined");
31
30
  const no_unresolved_refs_1 = require("../no-unresolved-refs");
32
31
  const path_http_verbs_order_1 = require("../common/path-http-verbs-order");
33
32
  const no_identical_paths_1 = require("../common/no-identical-paths");
@@ -42,14 +41,15 @@ const path_segment_plural_1 = require("../common/path-segment-plural");
42
41
  const response_contains_header_1 = require("../common/response-contains-header");
43
42
  const response_contains_property_1 = require("./response-contains-property");
44
43
  const scalar_property_missing_example_1 = require("../common/scalar-property-missing-example");
44
+ const required_string_property_missing_min_length_1 = require("../common/required-string-property-missing-min-length");
45
+ const spec_strict_refs_1 = require("../common/spec-strict-refs");
45
46
  exports.rules = {
46
47
  spec: spec_1.OasSpec,
47
48
  'no-invalid-schema-examples': no_invalid_schema_examples_1.NoInvalidSchemaExamples,
48
49
  'no-invalid-parameter-examples': no_invalid_parameter_examples_1.NoInvalidParameterExamples,
49
- 'info-description': info_description_1.InfoDescription,
50
50
  'info-contact': info_contact_1.InfoContact,
51
- 'info-license': info_license_url_1.InfoLicense,
52
- 'info-license-url': license_url_1.InfoLicenseUrl,
51
+ 'info-license': info_license_1.InfoLicense,
52
+ 'info-license-url': info_license_url_1.InfoLicenseUrl,
53
53
  'tag-description': tag_description_1.TagDescription,
54
54
  'tags-alphabetical': tags_alphabetical_1.TagsAlphabetical,
55
55
  'paths-kebab-case': paths_kebab_case_1.PathsKebabCase,
@@ -58,7 +58,7 @@ exports.rules = {
58
58
  'no-path-trailing-slash': no_path_trailing_slash_1.NoPathTrailingSlash,
59
59
  'operation-2xx-response': operation_2xx_response_1.Operation2xxResponse,
60
60
  'operation-4xx-response': operation_4xx_response_1.Operation4xxResponse,
61
- 'assertions': assertions_1.Assertions,
61
+ assertions: assertions_1.Assertions,
62
62
  'operation-operationId-unique': operation_operationId_unique_1.OperationIdUnique,
63
63
  'operation-parameters-unique': operation_parameters_unique_1.OperationParametersUnique,
64
64
  'path-parameters-defined': path_params_defined_1.PathParamsDefined,
@@ -72,7 +72,7 @@ exports.rules = {
72
72
  'path-params-defined': path_params_defined_1.PathParamsDefined,
73
73
  'parameter-description': parameter_description_1.ParameterDescription,
74
74
  'operation-singular-tag': operation_singular_tag_1.OperationSingularTag,
75
- 'operation-security-defined': operation_security_defined_1.OperationSecurityDefined,
75
+ 'security-defined': security_defined_1.SecurityDefined,
76
76
  'no-unresolved-refs': no_unresolved_refs_1.NoUnresolvedRefs,
77
77
  'no-identical-paths': no_identical_paths_1.NoIdenticalPaths,
78
78
  'no-ambiguous-paths': no_ambiguous_paths_1.NoAmbiguousPaths,
@@ -85,5 +85,7 @@ exports.rules = {
85
85
  'response-contains-header': response_contains_header_1.ResponseContainsHeader,
86
86
  'response-contains-property': response_contains_property_1.ResponseContainsProperty,
87
87
  'scalar-property-missing-example': scalar_property_missing_example_1.ScalarPropertyMissingExample,
88
+ 'required-string-property-missing-min-length': required_string_property_missing_min_length_1.RequiredStringPropertyMissingMinLength,
89
+ 'spec-strict-refs': spec_strict_refs_1.SpecStrictRefs,
88
90
  };
89
91
  exports.preprocessors = {};
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RemoveUnusedComponents = void 0;
4
4
  const utils_1 = require("../../utils");
5
5
  const RemoveUnusedComponents = () => {
6
- let components = new Map();
6
+ const components = new Map();
7
7
  function registerComponent(location, componentType, name) {
8
8
  var _a;
9
9
  components.set(location.absolutePointer, {
@@ -24,14 +24,14 @@ const RemoveUnusedComponents = () => {
24
24
  name: key.toString(),
25
25
  });
26
26
  }
27
- }
27
+ },
28
28
  },
29
- DefinitionRoot: {
29
+ Root: {
30
30
  leave(root, ctx) {
31
31
  const data = ctx.getVisitorData();
32
32
  data.removedCount = 0;
33
- let rootComponents = new Set();
34
- components.forEach(usageInfo => {
33
+ const rootComponents = new Set();
34
+ components.forEach((usageInfo) => {
35
35
  const { used, name, componentType } = usageInfo;
36
36
  if (!used && componentType) {
37
37
  rootComponents.add(componentType);
@@ -67,7 +67,7 @@ const RemoveUnusedComponents = () => {
67
67
  SecurityScheme(_securityScheme, { location, key }) {
68
68
  registerComponent(location, 'securityDefinitions', key.toString());
69
69
  },
70
- }
70
+ },
71
71
  };
72
72
  };
73
73
  exports.RemoveUnusedComponents = RemoveUnusedComponents;
@@ -1,2 +1,2 @@
1
- import { Oas2Rule } from '../../visitors';
1
+ import type { Oas2Rule } from '../../visitors';
2
2
  export declare const RequestMimeType: Oas2Rule;
@@ -4,7 +4,7 @@ exports.RequestMimeType = void 0;
4
4
  const utils_1 = require("../../utils");
5
5
  const RequestMimeType = ({ allowedValues }) => {
6
6
  return {
7
- DefinitionRoot(root, ctx) {
7
+ Root(root, ctx) {
8
8
  utils_1.validateMimeType({ type: 'consumes', value: root }, ctx, allowedValues);
9
9
  },
10
10
  Operation: {
@@ -1,2 +1,2 @@
1
- import { Oas2Rule } from '../../visitors';
1
+ import type { Oas2Rule } from '../../visitors';
2
2
  export declare const ResponseMimeType: Oas2Rule;
@@ -4,7 +4,7 @@ exports.ResponseMimeType = void 0;
4
4
  const utils_1 = require("../../utils");
5
5
  const ResponseMimeType = ({ allowedValues }) => {
6
6
  return {
7
- DefinitionRoot(root, ctx) {
7
+ Root(root, ctx) {
8
8
  utils_1.validateMimeType({ type: 'produces', value: root }, ctx, allowedValues);
9
9
  },
10
10
  Operation: {
@@ -0,0 +1,2 @@
1
+ import { Oas2Rule, Oas3Rule } from '../../visitors';
2
+ export declare const ComponentNameUnique: Oas3Rule | Oas2Rule;