@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
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ComponentNameUnique = void 0;
4
+ const TYPE_NAME_SCHEMA = 'Schema';
5
+ const TYPE_NAME_PARAMETER = 'Parameter';
6
+ const TYPE_NAME_RESPONSE = 'Response';
7
+ const TYPE_NAME_REQUEST_BODY = 'RequestBody';
8
+ const TYPE_NAME_TO_OPTION_COMPONENT_NAME = {
9
+ [TYPE_NAME_SCHEMA]: 'schemas',
10
+ [TYPE_NAME_PARAMETER]: 'parameters',
11
+ [TYPE_NAME_RESPONSE]: 'responses',
12
+ [TYPE_NAME_REQUEST_BODY]: 'requestBodies',
13
+ };
14
+ const ComponentNameUnique = (options) => {
15
+ const components = new Map();
16
+ const typeNames = [];
17
+ if (options.schemas !== 'off') {
18
+ typeNames.push(TYPE_NAME_SCHEMA);
19
+ }
20
+ if (options.parameters !== 'off') {
21
+ typeNames.push(TYPE_NAME_PARAMETER);
22
+ }
23
+ if (options.responses !== 'off') {
24
+ typeNames.push(TYPE_NAME_RESPONSE);
25
+ }
26
+ if (options.requestBodies !== 'off') {
27
+ typeNames.push(TYPE_NAME_REQUEST_BODY);
28
+ }
29
+ const rule = {
30
+ ref: {
31
+ leave(ref, { type, resolve }) {
32
+ const typeName = type.name;
33
+ if (typeNames.includes(typeName)) {
34
+ const resolvedRef = resolve(ref);
35
+ if (!resolvedRef.location)
36
+ return;
37
+ addComponentFromAbsoluteLocation(typeName, resolvedRef.location.absolutePointer.toString());
38
+ }
39
+ },
40
+ },
41
+ Root: {
42
+ leave(root, ctx) {
43
+ components.forEach((value, key, _) => {
44
+ if (value.size > 1) {
45
+ const component = getComponentFromKey(key);
46
+ const optionComponentName = getOptionComponentNameForTypeName(component.typeName);
47
+ const definitions = Array.from(value)
48
+ .map((v) => `- ${v}`)
49
+ .join('\n');
50
+ const problem = {
51
+ message: `Component '${optionComponentName}/${component.componentName}' is not unique. It is defined at:\n${definitions}`,
52
+ };
53
+ const componentSeverity = optionComponentName ? options[optionComponentName] : null;
54
+ if (componentSeverity) {
55
+ problem.forceSeverity = componentSeverity;
56
+ }
57
+ ctx.report(problem);
58
+ }
59
+ });
60
+ },
61
+ },
62
+ };
63
+ if (options.schemas != 'off') {
64
+ rule.NamedSchemas = {
65
+ Schema(_, { location }) {
66
+ addComponentFromAbsoluteLocation(TYPE_NAME_SCHEMA, location.absolutePointer.toString());
67
+ },
68
+ };
69
+ }
70
+ if (options.responses != 'off') {
71
+ rule.NamedResponses = {
72
+ Response(_, { location }) {
73
+ addComponentFromAbsoluteLocation(TYPE_NAME_RESPONSE, location.absolutePointer.toString());
74
+ },
75
+ };
76
+ }
77
+ if (options.parameters != 'off') {
78
+ rule.NamedParameters = {
79
+ Parameter(_, { location }) {
80
+ addComponentFromAbsoluteLocation(TYPE_NAME_PARAMETER, location.absolutePointer.toString());
81
+ },
82
+ };
83
+ }
84
+ if (options.requestBodies != 'off') {
85
+ rule.NamedRequestBodies = {
86
+ RequestBody(_, { location }) {
87
+ addComponentFromAbsoluteLocation(TYPE_NAME_REQUEST_BODY, location.absolutePointer.toString());
88
+ },
89
+ };
90
+ }
91
+ return rule;
92
+ function getComponentNameFromAbsoluteLocation(absoluteLocation) {
93
+ const componentName = absoluteLocation.split('/').slice(-1)[0];
94
+ if (componentName.endsWith('.yml') ||
95
+ componentName.endsWith('.yaml') ||
96
+ componentName.endsWith('.json')) {
97
+ return componentName.slice(0, componentName.lastIndexOf('.'));
98
+ }
99
+ return componentName;
100
+ }
101
+ function addFoundComponent(typeName, componentName, absoluteLocation) {
102
+ var _a;
103
+ const key = getKeyForComponent(typeName, componentName);
104
+ const locations = (_a = components.get(key)) !== null && _a !== void 0 ? _a : new Set();
105
+ locations.add(absoluteLocation);
106
+ components.set(key, locations);
107
+ }
108
+ function addComponentFromAbsoluteLocation(typeName, absoluteLocation) {
109
+ const componentName = getComponentNameFromAbsoluteLocation(absoluteLocation);
110
+ addFoundComponent(typeName, componentName, absoluteLocation);
111
+ }
112
+ };
113
+ exports.ComponentNameUnique = ComponentNameUnique;
114
+ function getOptionComponentNameForTypeName(typeName) {
115
+ var _a;
116
+ return (_a = TYPE_NAME_TO_OPTION_COMPONENT_NAME[typeName]) !== null && _a !== void 0 ? _a : null;
117
+ }
118
+ function getKeyForComponent(typeName, componentName) {
119
+ return `${typeName}/${componentName}`;
120
+ }
121
+ function getComponentFromKey(key) {
122
+ const [typeName, componentName] = key.split('/');
123
+ return { typeName, componentName };
124
+ }
@@ -17,17 +17,16 @@ const operation_operationId_url_safe_1 = require("../common/operation-operationI
17
17
  const tags_alphabetical_1 = require("../common/tags-alphabetical");
18
18
  const no_server_example_com_1 = require("./no-server-example.com");
19
19
  const no_server_trailing_slash_1 = require("./no-server-trailing-slash");
20
- const info_description_1 = require("../common/info-description");
21
20
  const tag_description_1 = require("../common/tag-description");
22
21
  const info_contact_1 = require("../common/info-contact");
22
+ const info_license_1 = require("../common/info-license");
23
23
  const info_license_url_1 = require("../common/info-license-url");
24
24
  const operation_description_1 = require("../common/operation-description");
25
25
  const no_unused_components_1 = require("./no-unused-components");
26
26
  const path_not_include_query_1 = require("../common/path-not-include-query");
27
27
  const parameter_description_1 = require("../common/parameter-description");
28
28
  const operation_singular_tag_1 = require("../common/operation-singular-tag");
29
- const license_url_1 = require("../common/license-url");
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 boolean_parameter_prefixes_1 = require("./boolean-parameter-prefixes");
33
32
  const paths_kebab_case_1 = require("../common/paths-kebab-case");
@@ -39,7 +38,7 @@ const no_undefined_server_variable_1 = require("./no-undefined-server-variable")
39
38
  const operation_operationId_1 = require("../common/operation-operationId");
40
39
  const operation_summary_1 = require("../common/operation-summary");
41
40
  const no_ambiguous_paths_1 = require("../common/no-ambiguous-paths");
42
- const no_servers_empty_enum_1 = require("./no-servers-empty-enum");
41
+ const no_server_variables_empty_enum_1 = require("./no-server-variables-empty-enum");
43
42
  const no_http_verbs_in_paths_1 = require("../common/no-http-verbs-in-paths");
44
43
  const request_mime_type_1 = require("./request-mime-type");
45
44
  const response_mime_type_1 = require("./response-mime-type");
@@ -50,15 +49,20 @@ const no_invalid_parameter_examples_1 = require("../common/no-invalid-parameter-
50
49
  const response_contains_header_1 = require("../common/response-contains-header");
51
50
  const response_contains_property_1 = require("./response-contains-property");
52
51
  const scalar_property_missing_example_1 = require("../common/scalar-property-missing-example");
52
+ const spec_components_invalid_map_name_1 = require("./spec-components-invalid-map-name");
53
+ const operation_4xx_problem_details_rfc7807_1 = require("./operation-4xx-problem-details-rfc7807");
54
+ const required_string_property_missing_min_length_1 = require("../common/required-string-property-missing-min-length");
55
+ const spec_strict_refs_1 = require("../common/spec-strict-refs");
56
+ const component_name_unique_1 = require("./component-name-unique");
53
57
  exports.rules = {
54
58
  spec: spec_1.OasSpec,
55
- 'info-description': info_description_1.InfoDescription,
56
59
  'info-contact': info_contact_1.InfoContact,
57
- 'info-license': info_license_url_1.InfoLicense,
58
- 'info-license-url': license_url_1.InfoLicenseUrl,
60
+ 'info-license': info_license_1.InfoLicense,
61
+ 'info-license-url': info_license_url_1.InfoLicenseUrl,
59
62
  'operation-2xx-response': operation_2xx_response_1.Operation2xxResponse,
60
63
  'operation-4xx-response': operation_4xx_response_1.Operation4xxResponse,
61
- 'assertions': assertions_1.Assertions,
64
+ 'operation-4xx-problem-details-rfc7807': operation_4xx_problem_details_rfc7807_1.Operation4xxProblemDetailsRfc7807,
65
+ assertions: assertions_1.Assertions,
62
66
  'operation-operationId-unique': operation_operationId_unique_1.OperationIdUnique,
63
67
  'operation-parameters-unique': operation_parameters_unique_1.OperationParametersUnique,
64
68
  'path-parameters-defined': path_params_defined_1.PathParamsDefined,
@@ -81,7 +85,7 @@ exports.rules = {
81
85
  'path-params-defined': path_params_defined_1.PathParamsDefined,
82
86
  'parameter-description': parameter_description_1.ParameterDescription,
83
87
  'operation-singular-tag': operation_singular_tag_1.OperationSingularTag,
84
- 'operation-security-defined': operation_security_defined_1.OperationSecurityDefined,
88
+ 'security-defined': security_defined_1.SecurityDefined,
85
89
  'no-unresolved-refs': no_unresolved_refs_1.NoUnresolvedRefs,
86
90
  'paths-kebab-case': paths_kebab_case_1.PathsKebabCase,
87
91
  'boolean-parameter-prefixes': boolean_parameter_prefixes_1.BooleanParameterPrefixes,
@@ -90,7 +94,7 @@ exports.rules = {
90
94
  'no-identical-paths': no_identical_paths_1.NoIdenticalPaths,
91
95
  'no-ambiguous-paths': no_ambiguous_paths_1.NoAmbiguousPaths,
92
96
  'no-undefined-server-variable': no_undefined_server_variable_1.NoUndefinedServerVariable,
93
- 'no-servers-empty-enum': no_servers_empty_enum_1.NoEmptyEnumServers,
97
+ 'no-server-variables-empty-enum': no_server_variables_empty_enum_1.NoServerVariablesEmptyEnum,
94
98
  'no-http-verbs-in-paths': no_http_verbs_in_paths_1.NoHttpVerbsInPaths,
95
99
  'path-excludes-patterns': path_excludes_patterns_1.PathExcludesPatterns,
96
100
  'request-mime-type': request_mime_type_1.RequestMimeType,
@@ -101,5 +105,9 @@ exports.rules = {
101
105
  'response-contains-header': response_contains_header_1.ResponseContainsHeader,
102
106
  'response-contains-property': response_contains_property_1.ResponseContainsProperty,
103
107
  'scalar-property-missing-example': scalar_property_missing_example_1.ScalarPropertyMissingExample,
108
+ 'spec-components-invalid-map-name': spec_components_invalid_map_name_1.SpecComponentsInvalidMapName,
109
+ 'required-string-property-missing-min-length': required_string_property_missing_min_length_1.RequiredStringPropertyMissingMinLength,
110
+ 'spec-strict-refs': spec_strict_refs_1.SpecStrictRefs,
111
+ 'component-name-unique': component_name_unique_1.ComponentNameUnique,
104
112
  };
105
113
  exports.preprocessors = {};
@@ -3,11 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NoEmptyServers = void 0;
4
4
  const NoEmptyServers = () => {
5
5
  return {
6
- DefinitionRoot(root, { report, location }) {
6
+ Root(root, { report, location }) {
7
7
  if (!root.hasOwnProperty('servers')) {
8
8
  report({
9
9
  message: 'Servers must be present.',
10
- location: location.child(['openapi']).key()
10
+ location: location.child(['openapi']).key(),
11
11
  });
12
12
  return;
13
13
  }
@@ -5,7 +5,7 @@ const ref_utils_1 = require("../../ref-utils");
5
5
  const utils_1 = require("../utils");
6
6
  const ValidContentExamples = (opts) => {
7
7
  var _a;
8
- const disallowAdditionalProperties = (_a = opts.disallowAdditionalProperties) !== null && _a !== void 0 ? _a : true;
8
+ const allowAdditionalProperties = (_a = utils_1.getAdditionalPropertiesOption(opts)) !== null && _a !== void 0 ? _a : false;
9
9
  return {
10
10
  MediaType: {
11
11
  leave(mediaType, ctx) {
@@ -28,7 +28,7 @@ const ValidContentExamples = (opts) => {
28
28
  location = isMultiple ? resolved.location.child('value') : resolved.location;
29
29
  example = resolved.node;
30
30
  }
31
- utils_1.validateExample(isMultiple ? example.value : example, mediaType.schema, location, ctx, disallowAdditionalProperties);
31
+ utils_1.validateExample(isMultiple ? example.value : example, mediaType.schema, location, ctx, allowAdditionalProperties);
32
32
  }
33
33
  },
34
34
  },
@@ -0,0 +1,2 @@
1
+ import { Oas3Rule } from '../../visitors';
2
+ export declare const NoServerVariablesEmptyEnum: Oas3Rule;
@@ -1,14 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NoEmptyEnumServers = void 0;
3
+ exports.NoServerVariablesEmptyEnum = void 0;
4
4
  var enumError;
5
5
  (function (enumError) {
6
6
  enumError["empty"] = "empty";
7
7
  enumError["invalidDefaultValue"] = "invalidDefaultValue";
8
8
  })(enumError || (enumError = {}));
9
- const NoEmptyEnumServers = () => {
9
+ const NoServerVariablesEmptyEnum = () => {
10
10
  return {
11
- DefinitionRoot(root, { report, location }) {
11
+ Root(root, { report, location }) {
12
12
  if (!root.servers || root.servers.length === 0)
13
13
  return;
14
14
  const invalidVariables = [];
@@ -43,13 +43,13 @@ const NoEmptyEnumServers = () => {
43
43
  },
44
44
  };
45
45
  };
46
- exports.NoEmptyEnumServers = NoEmptyEnumServers;
46
+ exports.NoServerVariablesEmptyEnum = NoServerVariablesEmptyEnum;
47
47
  function checkEnumVariables(server) {
48
48
  var _a;
49
49
  if (server.variables && Object.keys(server.variables).length === 0)
50
50
  return;
51
51
  const errors = [];
52
- for (var variable in server.variables) {
52
+ for (const variable in server.variables) {
53
53
  const serverVariable = server.variables[variable];
54
54
  if (!serverVariable.enum)
55
55
  continue;
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NoUnusedComponents = void 0;
4
4
  const NoUnusedComponents = () => {
5
- let components = new Map();
5
+ const components = new Map();
6
6
  function registerComponent(location, name) {
7
7
  var _a;
8
8
  components.set(location.absolutePointer, {
@@ -24,7 +24,7 @@ const NoUnusedComponents = () => {
24
24
  });
25
25
  }
26
26
  },
27
- DefinitionRoot: {
27
+ Root: {
28
28
  leave(_, { report }) {
29
29
  components.forEach((usageInfo) => {
30
30
  if (!usageInfo.used) {
@@ -0,0 +1,5 @@
1
+ import type { Oas3Rule } from '../../visitors';
2
+ /**
3
+ * Validation according to rfc7807 - https://datatracker.ietf.org/doc/html/rfc7807
4
+ */
5
+ export declare const Operation4xxProblemDetailsRfc7807: Oas3Rule;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Operation4xxProblemDetailsRfc7807 = void 0;
4
+ const utils_1 = require("../utils");
5
+ /**
6
+ * Validation according to rfc7807 - https://datatracker.ietf.org/doc/html/rfc7807
7
+ */
8
+ const Operation4xxProblemDetailsRfc7807 = () => {
9
+ return {
10
+ Response: {
11
+ skip(_, key) {
12
+ return !/4[Xx0-9]{2}/.test(`${key}`);
13
+ },
14
+ enter(response, { report, location }) {
15
+ if (!response.content || !response.content['application/problem+json'])
16
+ report({
17
+ message: 'Response `4xx` must have content-type `application/problem+json`.',
18
+ location: location.key(),
19
+ });
20
+ },
21
+ MediaType: {
22
+ skip(_, key) {
23
+ return key !== 'application/problem+json';
24
+ },
25
+ enter(media, ctx) {
26
+ utils_1.validateDefinedAndNonEmpty('schema', media, ctx);
27
+ },
28
+ SchemaProperties(schema, ctx) {
29
+ utils_1.validateDefinedAndNonEmpty('type', schema, ctx);
30
+ utils_1.validateDefinedAndNonEmpty('title', schema, ctx);
31
+ },
32
+ },
33
+ },
34
+ };
35
+ };
36
+ exports.Operation4xxProblemDetailsRfc7807 = Operation4xxProblemDetailsRfc7807;
@@ -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,16 +24,16 @@ 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
- components.forEach(usageInfo => {
33
+ components.forEach((usageInfo) => {
34
34
  const { used, componentType, name } = usageInfo;
35
- if (!used && componentType) {
36
- let componentChild = root.components[componentType];
35
+ if (!used && componentType && root.components) {
36
+ const componentChild = root.components[componentType];
37
37
  delete componentChild[name];
38
38
  data.removedCount++;
39
39
  if (utils_1.isEmptyObject(componentChild)) {
@@ -1,2 +1,2 @@
1
- import { Oas3Rule } from '../../visitors';
1
+ import type { Oas3Rule } from '../../visitors';
2
2
  export declare const RequestMimeType: Oas3Rule;
@@ -4,7 +4,7 @@ exports.RequestMimeType = void 0;
4
4
  const utils_1 = require("../../utils");
5
5
  const RequestMimeType = ({ allowedValues }) => {
6
6
  return {
7
- PathMap: {
7
+ Paths: {
8
8
  RequestBody: {
9
9
  leave(requestBody, ctx) {
10
10
  utils_1.validateMimeTypeOAS3({ type: 'consumes', value: requestBody }, ctx, allowedValues);
@@ -1,2 +1,2 @@
1
- import { Oas3Rule } from '../../visitors';
1
+ import type { Oas3Rule } from '../../visitors';
2
2
  export declare const ResponseMimeType: Oas3Rule;
@@ -4,7 +4,7 @@ exports.ResponseMimeType = void 0;
4
4
  const utils_1 = require("../../utils");
5
5
  const ResponseMimeType = ({ allowedValues }) => {
6
6
  return {
7
- PathMap: {
7
+ Paths: {
8
8
  Response: {
9
9
  leave(response, ctx) {
10
10
  utils_1.validateMimeTypeOAS3({ type: 'produces', value: response }, ctx, allowedValues);
@@ -0,0 +1,2 @@
1
+ import { Oas3Rule } from '../../visitors';
2
+ export declare const SpecComponentsInvalidMapName: Oas3Rule;
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SpecComponentsInvalidMapName = void 0;
4
+ const SpecComponentsInvalidMapName = () => {
5
+ const KEYS_REGEX = '^[a-zA-Z0-9\\.\\-_]+$';
6
+ function validateKey(key, report, location, component) {
7
+ if (!new RegExp(KEYS_REGEX).test(key)) {
8
+ report({
9
+ message: `The map key in ${component} "${key}" does not match the regular expression "${KEYS_REGEX}"`,
10
+ location: location.key(),
11
+ });
12
+ }
13
+ }
14
+ return {
15
+ NamedSchemas: {
16
+ Schema(_node, { key, report, location }) {
17
+ validateKey(key, report, location, 'schemas');
18
+ },
19
+ },
20
+ NamedParameters: {
21
+ Parameter(_node, { key, report, location }) {
22
+ validateKey(key, report, location, 'parameters');
23
+ },
24
+ },
25
+ NamedResponses: {
26
+ Response(_node, { key, report, location }) {
27
+ validateKey(key, report, location, 'responses');
28
+ },
29
+ },
30
+ NamedExamples: {
31
+ Example(_node, { key, report, location }) {
32
+ validateKey(key, report, location, 'examples');
33
+ },
34
+ },
35
+ NamedRequestBodies: {
36
+ RequestBody(_node, { key, report, location }) {
37
+ validateKey(key, report, location, 'requestBodies');
38
+ },
39
+ },
40
+ NamedHeaders: {
41
+ Header(_node, { key, report, location }) {
42
+ validateKey(key, report, location, 'headers');
43
+ },
44
+ },
45
+ NamedSecuritySchemes: {
46
+ SecurityScheme(_node, { key, report, location }) {
47
+ validateKey(key, report, location, 'securitySchemes');
48
+ },
49
+ },
50
+ NamedLinks: {
51
+ Link(_node, { key, report, location }) {
52
+ validateKey(key, report, location, 'links');
53
+ },
54
+ },
55
+ NamedCallbacks: {
56
+ Callback(_node, { key, report, location }) {
57
+ validateKey(key, report, location, 'callbacks');
58
+ },
59
+ },
60
+ };
61
+ };
62
+ exports.SpecComponentsInvalidMapName = SpecComponentsInvalidMapName;
@@ -14,7 +14,7 @@ export declare const Stats: (statsAccumulator: StatsAccumulator) => {
14
14
  Link: {
15
15
  leave(link: any): void;
16
16
  };
17
- DefinitionRoot: {
17
+ Root: {
18
18
  leave(): void;
19
19
  };
20
20
  WebhooksMap: {
@@ -22,7 +22,7 @@ export declare const Stats: (statsAccumulator: StatsAccumulator) => {
22
22
  leave(operation: any): void;
23
23
  };
24
24
  };
25
- PathMap: {
25
+ Paths: {
26
26
  PathItem: {
27
27
  leave(): void;
28
28
  Operation: {
@@ -3,11 +3,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Stats = void 0;
4
4
  const Stats = (statsAccumulator) => {
5
5
  return {
6
- ExternalDocs: { leave() { statsAccumulator.externalDocs.total++; } },
7
- ref: { enter(ref) { statsAccumulator.refs.items.add(ref['$ref']); } },
8
- Tag: { leave(tag) { statsAccumulator.tags.items.add(tag.name); } },
9
- Link: { leave(link) { statsAccumulator.links.items.add(link.operationId); } },
10
- DefinitionRoot: {
6
+ ExternalDocs: {
7
+ leave() {
8
+ statsAccumulator.externalDocs.total++;
9
+ },
10
+ },
11
+ ref: {
12
+ enter(ref) {
13
+ statsAccumulator.refs.items.add(ref['$ref']);
14
+ },
15
+ },
16
+ Tag: {
17
+ leave(tag) {
18
+ statsAccumulator.tags.items.add(tag.name);
19
+ },
20
+ },
21
+ Link: {
22
+ leave(link) {
23
+ statsAccumulator.links.items.add(link.operationId);
24
+ },
25
+ },
26
+ Root: {
11
27
  leave() {
12
28
  statsAccumulator.parameters.total = statsAccumulator.parameters.items.size;
13
29
  statsAccumulator.refs.total = statsAccumulator.refs.items.size;
@@ -18,27 +34,40 @@ const Stats = (statsAccumulator) => {
18
34
  WebhooksMap: {
19
35
  Operation: {
20
36
  leave(operation) {
21
- operation.tags.forEach((tag) => { statsAccumulator.tags.items.add(tag); });
22
- }
23
- }
37
+ operation.tags.forEach((tag) => {
38
+ statsAccumulator.tags.items.add(tag);
39
+ });
40
+ },
41
+ },
24
42
  },
25
- PathMap: {
43
+ Paths: {
26
44
  PathItem: {
27
- leave() { statsAccumulator.pathItems.total++; },
45
+ leave() {
46
+ statsAccumulator.pathItems.total++;
47
+ },
28
48
  Operation: {
29
49
  leave(operation) {
30
50
  statsAccumulator.operations.total++;
31
- operation.tags && operation.tags.forEach((tag) => { statsAccumulator.tags.items.add(tag); });
32
- }
51
+ operation.tags &&
52
+ operation.tags.forEach((tag) => {
53
+ statsAccumulator.tags.items.add(tag);
54
+ });
55
+ },
33
56
  },
34
- Parameter: { leave(parameter) {
57
+ Parameter: {
58
+ leave(parameter) {
35
59
  statsAccumulator.parameters.items.add(parameter.name);
36
- } },
60
+ },
61
+ },
37
62
  },
38
63
  },
39
64
  NamedSchemas: {
40
- Schema: { leave() { statsAccumulator.schemas.total++; } }
41
- }
65
+ Schema: {
66
+ leave() {
67
+ statsAccumulator.schemas.total++;
68
+ },
69
+ },
70
+ },
42
71
  };
43
72
  };
44
73
  exports.Stats = Stats;
@@ -1,7 +1,7 @@
1
1
  import { UserContext } from '../walk';
2
2
  import { Location } from '../ref-utils';
3
3
  import { Oas3Schema, Referenced } from '../typings/openapi';
4
- export declare function oasTypeOf(value: unknown): "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" | "array" | "null";
4
+ export declare function oasTypeOf(value: unknown): "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" | "null" | "integer" | "array";
5
5
  /**
6
6
  * Checks if value matches specified JSON schema type
7
7
  *
@@ -14,4 +14,7 @@ export declare function missingRequiredField(type: string, field: string): strin
14
14
  export declare function fieldNonEmpty(type: string, field: string): string;
15
15
  export declare function validateDefinedAndNonEmpty(fieldName: string, value: any, ctx: UserContext): void;
16
16
  export declare function getSuggest(given: string, variants: string[]): string[];
17
- export declare function validateExample(example: any, schema: Referenced<Oas3Schema>, dataLoc: Location, { resolve, location, report }: UserContext, disallowAdditionalProperties: boolean): void;
17
+ export declare function validateExample(example: any, schema: Referenced<Oas3Schema>, dataLoc: Location, { resolve, location, report }: UserContext, allowAdditionalProperties: boolean): void;
18
+ export declare function getAdditionalPropertiesOption(opts: Record<string, any>): boolean;
19
+ export declare function validateSchemaEnumType(schemaEnum: string[], propertyValue: string, propName: string, refLocation: Location | undefined, { report, location }: UserContext): void;
20
+ export declare function validateResponseCodes(responseCodes: string[], codeRange: string, { report }: UserContext): void;