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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (382) hide show
  1. package/README.md +6 -6
  2. package/lib/benchmark/benches/lint-with-top-level-rule-report.bench.js +0 -1
  3. package/lib/benchmark/benches/recommended-oas3.bench.js +1 -1
  4. package/lib/benchmark/benches/resolve-with-no-external.bench.js +1 -1
  5. package/lib/benchmark/utils.d.ts +2 -2
  6. package/lib/benchmark/utils.js +2 -2
  7. package/lib/bundle.d.ts +10 -15
  8. package/lib/bundle.js +32 -12
  9. package/lib/config/all.d.ts +2 -2
  10. package/lib/config/all.js +16 -6
  11. package/lib/config/builtIn.d.ts +2 -2
  12. package/lib/config/builtIn.js +2 -2
  13. package/lib/config/config-resolvers.d.ts +5 -5
  14. package/lib/config/config-resolvers.js +121 -66
  15. package/lib/config/config.d.ts +12 -18
  16. package/lib/config/config.js +42 -26
  17. package/lib/config/load.d.ts +16 -3
  18. package/lib/config/load.js +36 -14
  19. package/lib/config/minimal.d.ts +2 -2
  20. package/lib/config/minimal.js +10 -6
  21. package/lib/config/recommended.d.ts +2 -2
  22. package/lib/config/recommended.js +10 -6
  23. package/lib/config/rules.d.ts +7 -4
  24. package/lib/config/rules.js +5 -4
  25. package/lib/config/types.d.ts +72 -23
  26. package/lib/config/types.js +13 -0
  27. package/lib/config/utils.d.ts +6 -5
  28. package/lib/config/utils.js +110 -32
  29. package/lib/decorators/common/filters/filter-helper.d.ts +3 -0
  30. package/lib/decorators/common/filters/filter-helper.js +67 -0
  31. package/lib/decorators/common/filters/filter-in.d.ts +2 -0
  32. package/lib/decorators/common/filters/filter-in.js +17 -0
  33. package/lib/decorators/common/filters/filter-out.d.ts +2 -0
  34. package/lib/decorators/common/filters/filter-out.js +17 -0
  35. package/lib/decorators/common/info-override.d.ts +2 -0
  36. package/lib/decorators/common/info-override.js +28 -0
  37. package/lib/decorators/common/media-type-examples-override.d.ts +2 -0
  38. package/lib/decorators/common/media-type-examples-override.js +53 -0
  39. package/lib/decorators/common/registry-dependencies.js +2 -2
  40. package/lib/decorators/common/remove-x-internal.js +2 -2
  41. package/lib/decorators/oas2/index.d.ts +3 -0
  42. package/lib/decorators/oas2/index.js +7 -1
  43. package/lib/decorators/oas3/index.d.ts +4 -0
  44. package/lib/decorators/oas3/index.js +9 -1
  45. package/lib/env.d.ts +3 -0
  46. package/lib/env.js +8 -0
  47. package/lib/format/codeframes.js +16 -10
  48. package/lib/format/format.d.ts +1 -1
  49. package/lib/format/format.js +64 -32
  50. package/lib/index.d.ts +6 -6
  51. package/lib/index.js +7 -2
  52. package/lib/js-yaml/index.js +2 -6
  53. package/lib/lint.d.ts +4 -2
  54. package/lib/lint.js +36 -11
  55. package/lib/logger.d.ts +10 -0
  56. package/lib/logger.js +31 -0
  57. package/lib/output.d.ts +3 -0
  58. package/lib/output.js +9 -0
  59. package/lib/redocly/index.js +10 -9
  60. package/lib/redocly/registry-api-types.d.ts +28 -28
  61. package/lib/redocly/registry-api.d.ts +3 -3
  62. package/lib/redocly/registry-api.js +10 -2
  63. package/lib/ref-utils.d.ts +1 -0
  64. package/lib/ref-utils.js +7 -2
  65. package/lib/resolve.d.ts +1 -1
  66. package/lib/resolve.js +33 -3
  67. package/lib/rules/ajv.d.ts +2 -2
  68. package/lib/rules/ajv.js +12 -12
  69. package/lib/rules/common/assertions/asserts.d.ts +29 -4
  70. package/lib/rules/common/assertions/asserts.js +227 -97
  71. package/lib/rules/common/assertions/index.d.ts +27 -2
  72. package/lib/rules/common/assertions/index.js +9 -37
  73. package/lib/rules/common/assertions/utils.d.ts +16 -8
  74. package/lib/rules/common/assertions/utils.js +160 -76
  75. package/lib/rules/common/info-license-url.d.ts +1 -1
  76. package/lib/rules/common/info-license-url.js +5 -10
  77. package/lib/rules/common/info-license.d.ts +2 -0
  78. package/lib/rules/common/info-license.js +17 -0
  79. package/lib/rules/common/no-ambiguous-paths.js +1 -1
  80. package/lib/rules/common/no-enum-type-mismatch.js +1 -3
  81. package/lib/rules/common/no-identical-paths.js +4 -4
  82. package/lib/rules/common/no-invalid-parameter-examples.js +3 -3
  83. package/lib/rules/common/no-invalid-schema-examples.js +3 -3
  84. package/lib/rules/common/operation-2xx-response.js +15 -9
  85. package/lib/rules/common/operation-4xx-response.js +15 -9
  86. package/lib/rules/common/operation-operationId.js +2 -2
  87. package/lib/rules/common/operation-tag-defined.js +1 -1
  88. package/lib/rules/common/path-not-include-query.js +2 -2
  89. package/lib/rules/common/path-params-defined.js +7 -2
  90. package/lib/rules/common/paths-kebab-case.js +4 -1
  91. package/lib/rules/common/required-string-property-missing-min-length.d.ts +2 -0
  92. package/lib/rules/common/required-string-property-missing-min-length.js +37 -0
  93. package/lib/rules/common/response-contains-header.js +2 -2
  94. package/lib/rules/common/scalar-property-missing-example.js +2 -1
  95. package/lib/rules/common/security-defined.d.ts +2 -0
  96. package/lib/rules/common/{operation-security-defined.js → security-defined.js} +25 -6
  97. package/lib/rules/common/spec-strict-refs.d.ts +2 -0
  98. package/lib/rules/common/spec-strict-refs.js +30 -0
  99. package/lib/rules/common/spec.js +41 -18
  100. package/lib/rules/common/tags-alphabetical.js +1 -1
  101. package/lib/rules/oas2/index.d.ts +3 -2
  102. package/lib/rules/oas2/index.js +10 -8
  103. package/lib/rules/oas2/remove-unused-components.js +6 -6
  104. package/lib/rules/oas2/request-mime-type.d.ts +1 -1
  105. package/lib/rules/oas2/request-mime-type.js +1 -1
  106. package/lib/rules/oas2/response-mime-type.d.ts +1 -1
  107. package/lib/rules/oas2/response-mime-type.js +1 -1
  108. package/lib/rules/oas3/component-name-unique.d.ts +2 -0
  109. package/lib/rules/oas3/component-name-unique.js +124 -0
  110. package/lib/rules/oas3/index.js +18 -10
  111. package/lib/rules/oas3/no-empty-servers.js +2 -2
  112. package/lib/rules/oas3/no-invalid-media-type-examples.js +2 -2
  113. package/lib/rules/oas3/no-server-variables-empty-enum.d.ts +2 -0
  114. package/lib/rules/oas3/{no-servers-empty-enum.js → no-server-variables-empty-enum.js} +5 -5
  115. package/lib/rules/oas3/no-unused-components.js +2 -2
  116. package/lib/rules/oas3/operation-4xx-problem-details-rfc7807.d.ts +5 -0
  117. package/lib/rules/oas3/operation-4xx-problem-details-rfc7807.js +36 -0
  118. package/lib/rules/oas3/remove-unused-components.js +6 -6
  119. package/lib/rules/oas3/request-mime-type.d.ts +1 -1
  120. package/lib/rules/oas3/request-mime-type.js +1 -1
  121. package/lib/rules/oas3/response-mime-type.d.ts +1 -1
  122. package/lib/rules/oas3/response-mime-type.js +1 -1
  123. package/lib/rules/oas3/spec-components-invalid-map-name.d.ts +2 -0
  124. package/lib/rules/oas3/spec-components-invalid-map-name.js +62 -0
  125. package/lib/rules/other/stats.d.ts +2 -2
  126. package/lib/rules/other/stats.js +45 -16
  127. package/lib/rules/utils.d.ts +5 -2
  128. package/lib/rules/utils.js +54 -6
  129. package/lib/types/config-external-schemas.d.ts +2193 -0
  130. package/lib/types/config-external-schemas.js +805 -0
  131. package/lib/types/index.d.ts +3 -2
  132. package/lib/types/index.js +9 -1
  133. package/lib/types/oas2.js +91 -15
  134. package/lib/types/oas3.js +125 -46
  135. package/lib/types/oas3_1.js +23 -19
  136. package/lib/types/redocly-yaml.js +406 -60
  137. package/lib/utils.d.ts +15 -4
  138. package/lib/utils.js +72 -8
  139. package/lib/visitors.d.ts +20 -16
  140. package/lib/visitors.js +28 -3
  141. package/lib/walk.d.ts +11 -19
  142. package/lib/walk.js +74 -53
  143. package/package.json +5 -6
  144. package/__tests__/utils.ts +0 -86
  145. package/lib/rules/common/info-description.d.ts +0 -2
  146. package/lib/rules/common/info-description.js +0 -12
  147. package/lib/rules/common/license-url.d.ts +0 -2
  148. package/lib/rules/common/license-url.js +0 -12
  149. package/lib/rules/common/operation-security-defined.d.ts +0 -2
  150. package/lib/rules/oas3/no-servers-empty-enum.d.ts +0 -2
  151. package/src/__tests__/__snapshots__/bundle.test.ts.snap +0 -255
  152. package/src/__tests__/bundle.test.ts +0 -156
  153. package/src/__tests__/codeframes.test.ts +0 -531
  154. package/src/__tests__/fixtures/extension.js +0 -24
  155. package/src/__tests__/fixtures/refs/definitions.yaml +0 -3
  156. package/src/__tests__/fixtures/refs/examples.yaml +0 -8
  157. package/src/__tests__/fixtures/refs/external-request-body.yaml +0 -13
  158. package/src/__tests__/fixtures/refs/externalref.yaml +0 -35
  159. package/src/__tests__/fixtures/refs/hosted.yaml +0 -35
  160. package/src/__tests__/fixtures/refs/openapi-with-external-refs-conflicting-names.yaml +0 -21
  161. package/src/__tests__/fixtures/refs/openapi-with-external-refs.yaml +0 -33
  162. package/src/__tests__/fixtures/refs/openapi-with-url-refs.yaml +0 -18
  163. package/src/__tests__/fixtures/refs/param-b.yaml +0 -1
  164. package/src/__tests__/fixtures/refs/param-c.yaml +0 -1
  165. package/src/__tests__/fixtures/refs/rename.yaml +0 -1
  166. package/src/__tests__/fixtures/refs/requestBody.yaml +0 -9
  167. package/src/__tests__/fixtures/refs/schema-a.yaml +0 -1
  168. package/src/__tests__/fixtures/refs/simple.yaml +0 -1
  169. package/src/__tests__/fixtures/refs/vendor.schema.yaml +0 -20
  170. package/src/__tests__/fixtures/resolve/External.yaml +0 -10
  171. package/src/__tests__/fixtures/resolve/External2.yaml +0 -4
  172. package/src/__tests__/fixtures/resolve/description.md +0 -3
  173. package/src/__tests__/fixtures/resolve/externalInfo.yaml +0 -4
  174. package/src/__tests__/fixtures/resolve/externalLicense.yaml +0 -1
  175. package/src/__tests__/fixtures/resolve/openapi-with-back.yaml +0 -13
  176. package/src/__tests__/fixtures/resolve/openapi-with-md-description.yaml +0 -5
  177. package/src/__tests__/fixtures/resolve/openapi.yaml +0 -28
  178. package/src/__tests__/fixtures/resolve/schemas/type-a.yaml +0 -10
  179. package/src/__tests__/fixtures/resolve/schemas/type-b.yaml +0 -6
  180. package/src/__tests__/fixtures/resolve/transitive/a.yaml +0 -1
  181. package/src/__tests__/fixtures/resolve/transitive/components.yaml +0 -5
  182. package/src/__tests__/fixtures/resolve/transitive/schemas.yaml +0 -3
  183. package/src/__tests__/js-yaml.test.ts +0 -71
  184. package/src/__tests__/lint.test.ts +0 -195
  185. package/src/__tests__/login.test.ts +0 -17
  186. package/src/__tests__/normalizeVisitors.test.ts +0 -151
  187. package/src/__tests__/ref-utils.test.ts +0 -120
  188. package/src/__tests__/resolve-http.test.ts +0 -77
  189. package/src/__tests__/resolve.test.ts +0 -405
  190. package/src/__tests__/utils.test.ts +0 -85
  191. package/src/__tests__/walk.test.ts +0 -1485
  192. package/src/benchmark/benches/lint-with-many-rules.bench.ts +0 -35
  193. package/src/benchmark/benches/lint-with-nested-rule.bench.ts +0 -39
  194. package/src/benchmark/benches/lint-with-no-rules.bench.ts +0 -20
  195. package/src/benchmark/benches/lint-with-top-level-rule-report.bench.ts +0 -36
  196. package/src/benchmark/benches/lint-with-top-level-rule.bench.ts +0 -32
  197. package/src/benchmark/benches/rebilly.yaml +0 -32267
  198. package/src/benchmark/benches/recommended-oas3.bench.ts +0 -22
  199. package/src/benchmark/benches/resolve-with-no-external.bench.ts +0 -23
  200. package/src/benchmark/benchmark.js +0 -307
  201. package/src/benchmark/colors.js +0 -29
  202. package/src/benchmark/fork.js +0 -83
  203. package/src/benchmark/utils.ts +0 -36
  204. package/src/bundle.ts +0 -386
  205. package/src/config/__tests__/__snapshots__/config-resolvers.test.ts.snap +0 -157
  206. package/src/config/__tests__/config-resolvers.test.ts +0 -429
  207. package/src/config/__tests__/config.test.ts +0 -244
  208. package/src/config/__tests__/fixtures/plugin-config.yaml +0 -3
  209. package/src/config/__tests__/fixtures/plugin.js +0 -56
  210. package/src/config/__tests__/fixtures/resolve-config/api/nested-config.yaml +0 -12
  211. package/src/config/__tests__/fixtures/resolve-config/api/plugin.js +0 -67
  212. package/src/config/__tests__/fixtures/resolve-config/local-config-with-circular.yaml +0 -8
  213. package/src/config/__tests__/fixtures/resolve-config/local-config-with-file.yaml +0 -19
  214. package/src/config/__tests__/fixtures/resolve-config/local-config.yaml +0 -10
  215. package/src/config/__tests__/fixtures/resolve-config/plugin.js +0 -66
  216. package/src/config/__tests__/fixtures/resolve-remote-configs/nested-remote-config.yaml +0 -4
  217. package/src/config/__tests__/fixtures/resolve-remote-configs/remote-config.yaml +0 -5
  218. package/src/config/__tests__/load.test.ts +0 -83
  219. package/src/config/__tests__/resolve-plugins.test.ts +0 -27
  220. package/src/config/all.ts +0 -66
  221. package/src/config/builtIn.ts +0 -37
  222. package/src/config/config-resolvers.ts +0 -359
  223. package/src/config/config.ts +0 -312
  224. package/src/config/index.ts +0 -7
  225. package/src/config/load.ts +0 -84
  226. package/src/config/minimal.ts +0 -58
  227. package/src/config/recommended.ts +0 -58
  228. package/src/config/rules.ts +0 -46
  229. package/src/config/types.ts +0 -168
  230. package/src/config/utils.ts +0 -208
  231. package/src/decorators/__tests__/remove-x-internal.test.ts +0 -316
  232. package/src/decorators/common/info-description-override.ts +0 -24
  233. package/src/decorators/common/operation-description-override.ts +0 -30
  234. package/src/decorators/common/registry-dependencies.ts +0 -25
  235. package/src/decorators/common/remove-x-internal.ts +0 -59
  236. package/src/decorators/common/tag-description-override.ts +0 -25
  237. package/src/decorators/oas2/index.ts +0 -14
  238. package/src/decorators/oas3/index.ts +0 -14
  239. package/src/format/codeframes.ts +0 -210
  240. package/src/format/format.ts +0 -339
  241. package/src/index.ts +0 -68
  242. package/src/js-yaml/index.ts +0 -18
  243. package/src/lint.ts +0 -125
  244. package/src/oas-types.ts +0 -62
  245. package/src/redocly/__tests__/redocly-client.test.ts +0 -140
  246. package/src/redocly/index.ts +0 -182
  247. package/src/redocly/redocly-client-types.ts +0 -10
  248. package/src/redocly/registry-api-types.ts +0 -32
  249. package/src/redocly/registry-api.ts +0 -134
  250. package/src/ref-utils.ts +0 -80
  251. package/src/resolve.ts +0 -378
  252. package/src/rules/__tests__/fixtures/invalid-yaml.yaml +0 -1
  253. package/src/rules/__tests__/fixtures/ref.yaml +0 -1
  254. package/src/rules/__tests__/no-unresolved-refs.test.ts +0 -168
  255. package/src/rules/ajv.ts +0 -103
  256. package/src/rules/common/__tests__/info-description.test.ts +0 -102
  257. package/src/rules/common/__tests__/info-license.test.ts +0 -62
  258. package/src/rules/common/__tests__/license-url.test.ts +0 -63
  259. package/src/rules/common/__tests__/no-ambiguous-paths.test.ts +0 -96
  260. package/src/rules/common/__tests__/no-enum-type-mismatch.test.ts +0 -209
  261. package/src/rules/common/__tests__/no-identical-paths.test.ts +0 -58
  262. package/src/rules/common/__tests__/no-path-trailing-slash.test.ts +0 -85
  263. package/src/rules/common/__tests__/operation-2xx-response.test.ts +0 -91
  264. package/src/rules/common/__tests__/operation-4xx-response.test.ts +0 -107
  265. package/src/rules/common/__tests__/operation-operationId-unique.test.ts +0 -76
  266. package/src/rules/common/__tests__/operation-operationId-url-safe.test.ts +0 -45
  267. package/src/rules/common/__tests__/operation-parameters-unique.test.ts +0 -167
  268. package/src/rules/common/__tests__/operation-security-defined.test.ts +0 -69
  269. package/src/rules/common/__tests__/operation-singular-tag.test.ts +0 -72
  270. package/src/rules/common/__tests__/path-http-verbs-order.test.ts +0 -95
  271. package/src/rules/common/__tests__/path-not-include-query.test.ts +0 -64
  272. package/src/rules/common/__tests__/path-params-defined.test.ts +0 -133
  273. package/src/rules/common/__tests__/paths-kebab-case.test.ts +0 -108
  274. package/src/rules/common/__tests__/scalar-property-missing-example.test.ts +0 -207
  275. package/src/rules/common/__tests__/spec.test.ts +0 -62
  276. package/src/rules/common/__tests__/tag-description.test.ts +0 -65
  277. package/src/rules/common/__tests__/tags-alphabetical.test.ts +0 -64
  278. package/src/rules/common/assertions/__tests__/asserts.test.ts +0 -231
  279. package/src/rules/common/assertions/__tests__/index.test.ts +0 -65
  280. package/src/rules/common/assertions/__tests__/utils.test.ts +0 -89
  281. package/src/rules/common/assertions/asserts.ts +0 -137
  282. package/src/rules/common/assertions/index.ts +0 -75
  283. package/src/rules/common/assertions/utils.ts +0 -167
  284. package/src/rules/common/info-contact.ts +0 -15
  285. package/src/rules/common/info-description.ts +0 -10
  286. package/src/rules/common/info-license-url.ts +0 -15
  287. package/src/rules/common/license-url.ts +0 -10
  288. package/src/rules/common/no-ambiguous-paths.ts +0 -50
  289. package/src/rules/common/no-enum-type-mismatch.ts +0 -49
  290. package/src/rules/common/no-http-verbs-in-paths.ts +0 -36
  291. package/src/rules/common/no-identical-paths.ts +0 -24
  292. package/src/rules/common/no-invalid-parameter-examples.ts +0 -36
  293. package/src/rules/common/no-invalid-schema-examples.ts +0 -27
  294. package/src/rules/common/no-path-trailing-slash.ts +0 -15
  295. package/src/rules/common/operation-2xx-response.ts +0 -16
  296. package/src/rules/common/operation-4xx-response.ts +0 -17
  297. package/src/rules/common/operation-description.ts +0 -13
  298. package/src/rules/common/operation-operationId-unique.ts +0 -21
  299. package/src/rules/common/operation-operationId-url-safe.ts +0 -19
  300. package/src/rules/common/operation-operationId.ts +0 -17
  301. package/src/rules/common/operation-parameters-unique.ts +0 -48
  302. package/src/rules/common/operation-security-defined.ts +0 -45
  303. package/src/rules/common/operation-singular-tag.ts +0 -17
  304. package/src/rules/common/operation-summary.ts +0 -13
  305. package/src/rules/common/operation-tag-defined.ts +0 -26
  306. package/src/rules/common/parameter-description.ts +0 -22
  307. package/src/rules/common/path-declaration-must-exist.ts +0 -15
  308. package/src/rules/common/path-excludes-patterns.ts +0 -23
  309. package/src/rules/common/path-http-verbs-order.ts +0 -30
  310. package/src/rules/common/path-not-include-query.ts +0 -17
  311. package/src/rules/common/path-params-defined.ts +0 -58
  312. package/src/rules/common/path-segment-plural.ts +0 -31
  313. package/src/rules/common/paths-kebab-case.ts +0 -16
  314. package/src/rules/common/response-contains-header.ts +0 -30
  315. package/src/rules/common/scalar-property-missing-example.ts +0 -55
  316. package/src/rules/common/spec.ts +0 -143
  317. package/src/rules/common/tag-description.ts +0 -10
  318. package/src/rules/common/tags-alphabetical.ts +0 -20
  319. package/src/rules/no-unresolved-refs.ts +0 -51
  320. package/src/rules/oas2/__tests__/boolean-parameter-prefixes.test.ts +0 -110
  321. package/src/rules/oas2/__tests__/response-contains-header.test.ts +0 -174
  322. package/src/rules/oas2/__tests__/response-contains-property.test.ts +0 -155
  323. package/src/rules/oas2/__tests__/spec/fixtures/description.md +0 -1
  324. package/src/rules/oas2/__tests__/spec/info.test.ts +0 -355
  325. package/src/rules/oas2/__tests__/spec/operation.test.ts +0 -123
  326. package/src/rules/oas2/__tests__/spec/paths.test.ts +0 -245
  327. package/src/rules/oas2/__tests__/spec/referenceableScalars.test.ts +0 -31
  328. package/src/rules/oas2/__tests__/spec/utils.ts +0 -32
  329. package/src/rules/oas2/boolean-parameter-prefixes.ts +0 -26
  330. package/src/rules/oas2/index.ts +0 -89
  331. package/src/rules/oas2/remove-unused-components.ts +0 -76
  332. package/src/rules/oas2/request-mime-type.ts +0 -17
  333. package/src/rules/oas2/response-contains-property.ts +0 -36
  334. package/src/rules/oas2/response-mime-type.ts +0 -17
  335. package/src/rules/oas3/__tests__/boolean-parameter-prefixes.test.ts +0 -111
  336. package/src/rules/oas3/__tests__/fixtures/common.yaml +0 -11
  337. package/src/rules/oas3/__tests__/no-empty-enum-servers.com.test.ts +0 -205
  338. package/src/rules/oas3/__tests__/no-example-value-and-externalValue.test.ts +0 -65
  339. package/src/rules/oas3/__tests__/no-invalid-media-type-examples.test.ts +0 -392
  340. package/src/rules/oas3/__tests__/no-server-example.com.test.ts +0 -60
  341. package/src/rules/oas3/__tests__/no-server-trailing-slash.test.ts +0 -79
  342. package/src/rules/oas3/__tests__/no-unused-components.test.ts +0 -131
  343. package/src/rules/oas3/__tests__/response-contains-header.test.ts +0 -273
  344. package/src/rules/oas3/__tests__/response-contains-property.test.ts +0 -403
  345. package/src/rules/oas3/__tests__/spec/callbacks.test.ts +0 -41
  346. package/src/rules/oas3/__tests__/spec/fixtures/description.md +0 -1
  347. package/src/rules/oas3/__tests__/spec/info.test.ts +0 -391
  348. package/src/rules/oas3/__tests__/spec/operation.test.ts +0 -253
  349. package/src/rules/oas3/__tests__/spec/paths.test.ts +0 -284
  350. package/src/rules/oas3/__tests__/spec/referenceableScalars.test.ts +0 -77
  351. package/src/rules/oas3/__tests__/spec/servers.test.ts +0 -499
  352. package/src/rules/oas3/__tests__/spec/spec.test.ts +0 -288
  353. package/src/rules/oas3/__tests__/spec/utils.ts +0 -32
  354. package/src/rules/oas3/boolean-parameter-prefixes.ts +0 -28
  355. package/src/rules/oas3/index.ts +0 -105
  356. package/src/rules/oas3/no-empty-servers.ts +0 -22
  357. package/src/rules/oas3/no-example-value-and-externalValue.ts +0 -14
  358. package/src/rules/oas3/no-invalid-media-type-examples.ts +0 -41
  359. package/src/rules/oas3/no-server-example.com.ts +0 -14
  360. package/src/rules/oas3/no-server-trailing-slash.ts +0 -15
  361. package/src/rules/oas3/no-servers-empty-enum.ts +0 -67
  362. package/src/rules/oas3/no-undefined-server-variable.ts +0 -30
  363. package/src/rules/oas3/no-unused-components.ts +0 -75
  364. package/src/rules/oas3/remove-unused-components.ts +0 -84
  365. package/src/rules/oas3/request-mime-type.ts +0 -31
  366. package/src/rules/oas3/response-contains-property.ts +0 -38
  367. package/src/rules/oas3/response-mime-type.ts +0 -31
  368. package/src/rules/other/stats.ts +0 -44
  369. package/src/rules/utils.ts +0 -123
  370. package/src/types/index.ts +0 -138
  371. package/src/types/oas2.ts +0 -397
  372. package/src/types/oas3.ts +0 -515
  373. package/src/types/oas3_1.ts +0 -253
  374. package/src/types/redocly-yaml.ts +0 -647
  375. package/src/typings/common.ts +0 -9
  376. package/src/typings/openapi.ts +0 -298
  377. package/src/typings/swagger.ts +0 -236
  378. package/src/utils.ts +0 -193
  379. package/src/visitors.ts +0 -448
  380. package/src/walk.ts +0 -416
  381. package/tsconfig.json +0 -8
  382. package/tsconfig.tsbuildinfo +0 -1
@@ -1,27 +1,184 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ConfigTypes = void 0;
4
+ const config_external_schemas_1 = require("./config-external-schemas");
4
5
  const _1 = require(".");
5
6
  const utils_1 = require("../utils");
6
- const ConfigRoot = {
7
+ const builtInRulesList = [
8
+ 'spec',
9
+ 'info-contact',
10
+ 'info-license',
11
+ 'info-license-url',
12
+ 'operation-2xx-response',
13
+ 'operation-4xx-response',
14
+ 'operation-4xx-problem-details-rfc7807',
15
+ 'assertions',
16
+ 'operation-operationId-unique',
17
+ 'operation-parameters-unique',
18
+ 'path-parameters-defined',
19
+ 'operation-tag-defined',
20
+ 'no-example-value-and-externalValue',
21
+ 'no-enum-type-mismatch',
22
+ 'no-path-trailing-slash',
23
+ 'no-empty-servers',
24
+ 'path-declaration-must-exist',
25
+ 'operation-operationId-url-safe',
26
+ 'operation-operationId',
27
+ 'operation-summary',
28
+ 'tags-alphabetical',
29
+ 'no-server-example.com',
30
+ 'no-server-trailing-slash',
31
+ 'tag-description',
32
+ 'operation-description',
33
+ 'no-unused-components',
34
+ 'path-not-include-query',
35
+ 'path-params-defined',
36
+ 'parameter-description',
37
+ 'operation-singular-tag',
38
+ 'security-defined',
39
+ 'no-unresolved-refs',
40
+ 'paths-kebab-case',
41
+ 'boolean-parameter-prefixes',
42
+ 'path-http-verbs-order',
43
+ 'no-invalid-media-type-examples',
44
+ 'no-identical-paths',
45
+ 'no-ambiguous-paths',
46
+ 'no-undefined-server-variable',
47
+ 'no-server-variables-empty-enum',
48
+ 'no-http-verbs-in-paths',
49
+ 'path-excludes-patterns',
50
+ 'request-mime-type',
51
+ 'response-mime-type',
52
+ 'path-segment-plural',
53
+ 'no-invalid-schema-examples',
54
+ 'no-invalid-parameter-examples',
55
+ 'response-contains-header',
56
+ 'response-contains-property',
57
+ 'scalar-property-missing-example',
58
+ 'spec-components-invalid-map-name',
59
+ 'required-string-property-missing-min-length',
60
+ 'spec-strict-refs',
61
+ 'component-name-unique',
62
+ ];
63
+ const nodeTypesList = [
64
+ 'any',
65
+ 'Root',
66
+ 'Tag',
67
+ 'TagList',
68
+ 'ExternalDocs',
69
+ 'Server',
70
+ 'ServerList',
71
+ 'ServerVariable',
72
+ 'ServerVariablesMap',
73
+ 'SecurityRequirement',
74
+ 'SecurityRequirementList',
75
+ 'Info',
76
+ 'Contact',
77
+ 'License',
78
+ 'Paths',
79
+ 'PathItem',
80
+ 'Parameter',
81
+ 'ParameterList',
82
+ 'Operation',
83
+ 'Callback',
84
+ 'CallbacksMap',
85
+ 'RequestBody',
86
+ 'MediaTypesMap',
87
+ 'MediaType',
88
+ 'Example',
89
+ 'ExamplesMap',
90
+ 'Encoding',
91
+ 'EncodingMap',
92
+ 'Header',
93
+ 'HeadersMap',
94
+ 'Responses',
95
+ 'Response',
96
+ 'Link',
97
+ 'LinksMap',
98
+ 'Schema',
99
+ 'Xml',
100
+ 'SchemaProperties',
101
+ 'DiscriminatorMapping',
102
+ 'Discriminator',
103
+ 'Components',
104
+ 'NamedSchemas',
105
+ 'NamedResponses',
106
+ 'NamedParameters',
107
+ 'NamedExamples',
108
+ 'NamedRequestBodies',
109
+ 'NamedHeaders',
110
+ 'NamedSecuritySchemes',
111
+ 'NamedLinks',
112
+ 'NamedCallbacks',
113
+ 'ImplicitFlow',
114
+ 'PasswordFlow',
115
+ 'ClientCredentials',
116
+ 'AuthorizationCode',
117
+ 'OAuth2Flows',
118
+ 'SecurityScheme',
119
+ 'XCodeSample',
120
+ 'XCodeSampleList',
121
+ 'WebhooksMap',
122
+ 'SpecExtension',
123
+ ];
124
+ const ConfigStyleguide = {
7
125
  properties: {
8
- organization: { type: 'string' },
9
- apis: 'ConfigApis',
10
- lint: 'RootConfigLint',
11
- 'features.openapi': 'ConfigReferenceDocs',
12
- 'features.mockServer': 'ConfigMockServer',
126
+ extends: {
127
+ type: 'array',
128
+ items: {
129
+ type: 'string',
130
+ },
131
+ },
132
+ rules: 'Rules',
133
+ oas2Rules: 'Rules',
134
+ oas3_0Rules: 'Rules',
135
+ oas3_1Rules: 'Rules',
136
+ preprocessors: { type: 'object' },
137
+ oas2Preprocessors: { type: 'object' },
138
+ oas3_0Preprocessors: { type: 'object' },
139
+ oas3_1Preprocessors: { type: 'object' },
140
+ decorators: { type: 'object' },
141
+ oas2Decorators: { type: 'object' },
142
+ oas3_0Decorators: { type: 'object' },
143
+ oas3_1Decorators: { type: 'object' },
13
144
  },
14
145
  };
146
+ const RootConfigStyleguide = {
147
+ properties: Object.assign({ plugins: {
148
+ type: 'array',
149
+ items: { type: 'string' },
150
+ } }, ConfigStyleguide.properties),
151
+ };
152
+ const ConfigRoot = {
153
+ properties: Object.assign(Object.assign({ organization: { type: 'string' }, apis: 'ConfigApis' }, RootConfigStyleguide.properties), { theme: 'ConfigRootTheme', 'features.openapi': 'ConfigReferenceDocs', 'features.mockServer': 'ConfigMockServer', region: { enum: ['us', 'eu'] }, telemetry: { enum: ['on', 'off'] }, resolve: {
154
+ properties: {
155
+ http: 'ConfigHTTP',
156
+ doNotResolveExamples: { type: 'boolean' },
157
+ },
158
+ }, files: {
159
+ type: 'array',
160
+ items: {
161
+ type: 'string',
162
+ },
163
+ }, redirects: { type: 'object', additionalProperties: config_external_schemas_1.redirectConfigSchema }, licenseKey: { type: 'string' }, seo: config_external_schemas_1.seoConfigSchema, rbac: config_external_schemas_1.rbacConfigSchema, responseHeaders: config_external_schemas_1.responseHeaderSchema, mockServer: config_external_schemas_1.mockServerConfigSchema, sso: config_external_schemas_1.ssoConfigSchema, developerOnboarding: config_external_schemas_1.devOnboardingConfigSchema, i18n: config_external_schemas_1.i18nConfigSchema }),
164
+ };
15
165
  const ConfigApis = {
16
166
  properties: {},
17
167
  additionalProperties: 'ConfigApisProperties',
18
168
  };
19
169
  const ConfigApisProperties = {
20
- properties: {
21
- root: { type: 'string' },
22
- lint: 'ConfigLint',
23
- 'features.openapi': 'ConfigReferenceDocs',
24
- },
170
+ properties: Object.assign(Object.assign({ root: { type: 'string' }, labels: {
171
+ type: 'array',
172
+ items: {
173
+ type: 'string',
174
+ },
175
+ }, lint: 'ConfigStyleguide', styleguide: 'ConfigStyleguide' }, ConfigStyleguide.properties), { 'features.openapi': 'ConfigReferenceDocs', 'features.mockServer': 'ConfigMockServer', theme: 'ConfigRootTheme', files: {
176
+ type: 'array',
177
+ items: {
178
+ type: 'string',
179
+ },
180
+ }, title: { type: 'string' }, rbac: { type: 'object' }, metadata: { type: 'object' } }),
181
+ required: ['root'],
25
182
  };
26
183
  const ConfigHTTP = {
27
184
  properties: {
@@ -33,45 +190,144 @@ const ConfigHTTP = {
33
190
  },
34
191
  },
35
192
  };
36
- const ConfigLint = {
37
- properties: {
38
- extends: {
39
- type: 'array',
40
- items: {
41
- type: 'string',
42
- },
193
+ const ConfigRootTheme = {
194
+ properties: Object.assign(Object.assign({}, config_external_schemas_1.themeConfigSchema.properties), { openapi: 'ConfigReferenceDocs', mockServer: 'ConfigMockServer' }),
195
+ };
196
+ const Rules = {
197
+ properties: {},
198
+ additionalProperties: (value, key) => {
199
+ if (key.startsWith('rule/')) {
200
+ return 'Assert';
201
+ }
202
+ else if (key.startsWith('assert/')) {
203
+ // keep the old assert/ prefix as an alias
204
+ return 'Assert';
205
+ }
206
+ else if (builtInRulesList.includes(key) || utils_1.isCustomRuleId(key)) {
207
+ if (typeof value === 'string') {
208
+ return { enum: ['error', 'warn', 'off'] };
209
+ }
210
+ else {
211
+ return 'ObjectRule';
212
+ }
213
+ }
214
+ // Otherwise is considered as invalid
215
+ return;
216
+ },
217
+ };
218
+ const ObjectRule = {
219
+ properties: {
220
+ severity: { enum: ['error', 'warn', 'off'] },
221
+ },
222
+ additionalProperties: {},
223
+ required: ['severity'],
224
+ };
225
+ const AssertionDefinitionSubject = {
226
+ properties: {
227
+ type: { enum: nodeTypesList },
228
+ property: (value) => {
229
+ if (Array.isArray(value)) {
230
+ return { type: 'array', items: { type: 'string' } };
231
+ }
232
+ else if (value === null) {
233
+ return null;
234
+ }
235
+ else {
236
+ return { type: 'string' };
237
+ }
43
238
  },
44
- doNotResolveExamples: { type: 'boolean' },
45
- rules: { type: 'object' },
46
- oas2Rules: { type: 'object' },
47
- oas3_0Rules: { type: 'object' },
48
- oas3_1Rules: { type: 'object' },
49
- preprocessors: { type: 'object' },
50
- oas2Preprocessors: { type: 'object' },
51
- oas3_0Preprocessors: { type: 'object' },
52
- oas3_1Preprocessors: { type: 'object' },
53
- decorators: { type: 'object' },
54
- oas2Decorators: { type: 'object' },
55
- oas3_0Decorators: { type: 'object' },
56
- oas3_1Decorators: { type: 'object' },
57
- resolve: {
58
- properties: {
59
- http: 'ConfigHTTP',
60
- },
239
+ filterInParentKeys: { type: 'array', items: { type: 'string' } },
240
+ filterOutParentKeys: { type: 'array', items: { type: 'string' } },
241
+ matchParentKeys: { type: 'string' },
242
+ },
243
+ required: ['type'],
244
+ };
245
+ const AssertionDefinitionAssertions = {
246
+ properties: {
247
+ enum: { type: 'array', items: { type: 'string' } },
248
+ pattern: { type: 'string' },
249
+ notPattern: { type: 'string' },
250
+ casing: {
251
+ enum: [
252
+ 'camelCase',
253
+ 'kebab-case',
254
+ 'snake_case',
255
+ 'PascalCase',
256
+ 'MACRO_CASE',
257
+ 'COBOL-CASE',
258
+ 'flatcase',
259
+ ],
61
260
  },
261
+ mutuallyExclusive: { type: 'array', items: { type: 'string' } },
262
+ mutuallyRequired: { type: 'array', items: { type: 'string' } },
263
+ required: { type: 'array', items: { type: 'string' } },
264
+ requireAny: { type: 'array', items: { type: 'string' } },
265
+ disallowed: { type: 'array', items: { type: 'string' } },
266
+ defined: { type: 'boolean' },
267
+ // undefined: { type: 'boolean' }, // TODO: Remove `undefined` assertion from codebase overall
268
+ nonEmpty: { type: 'boolean' },
269
+ minLength: { type: 'integer' },
270
+ maxLength: { type: 'integer' },
271
+ ref: (value) => typeof value === 'string' ? { type: 'string' } : { type: 'boolean' },
272
+ const: (value) => {
273
+ if (typeof value === 'string') {
274
+ return { type: 'string' };
275
+ }
276
+ if (typeof value === 'number') {
277
+ return { type: 'number' };
278
+ }
279
+ if (typeof value === 'boolean') {
280
+ return { type: 'boolean' };
281
+ }
282
+ else {
283
+ return;
284
+ }
285
+ },
286
+ },
287
+ additionalProperties: (_value, key) => {
288
+ if (/^\w+\/\w+$/.test(key))
289
+ return { type: 'object' };
290
+ return;
62
291
  },
63
292
  };
64
- const RootConfigLint = {
65
- properties: Object.assign({ plugins: {
66
- type: 'array',
67
- items: { type: 'string' },
68
- } }, ConfigLint.properties),
293
+ const AssertDefinition = {
294
+ properties: {
295
+ subject: 'AssertionDefinitionSubject',
296
+ assertions: 'AssertionDefinitionAssertions',
297
+ },
298
+ required: ['subject', 'assertions'],
299
+ };
300
+ const Assert = {
301
+ properties: {
302
+ subject: 'AssertionDefinitionSubject',
303
+ assertions: 'AssertionDefinitionAssertions',
304
+ where: _1.listOf('AssertDefinition'),
305
+ message: { type: 'string' },
306
+ suggest: { type: 'array', items: { type: 'string' } },
307
+ severity: { enum: ['error', 'warn', 'off'] },
308
+ },
309
+ required: ['subject', 'assertions'],
69
310
  };
70
311
  const ConfigLanguage = {
71
312
  properties: {
72
313
  label: { type: 'string' },
73
- lang: { type: 'string' },
314
+ lang: {
315
+ enum: [
316
+ 'curl',
317
+ 'C#',
318
+ 'Go',
319
+ 'Java',
320
+ 'Java8+Apache',
321
+ 'JavaScript',
322
+ 'Node.js',
323
+ 'PHP',
324
+ 'Python',
325
+ 'R',
326
+ 'Ruby',
327
+ ],
328
+ },
74
329
  },
330
+ required: ['lang'],
75
331
  };
76
332
  const ConfigLabels = {
77
333
  properties: {
@@ -93,11 +349,17 @@ const ConfigLabels = {
93
349
  };
94
350
  const ConfigSidebarLinks = {
95
351
  properties: {
96
- placement: { type: 'string' },
352
+ beforeInfo: _1.listOf('CommonConfigSidebarLinks'),
353
+ end: _1.listOf('CommonConfigSidebarLinks'),
354
+ },
355
+ };
356
+ const CommonConfigSidebarLinks = {
357
+ properties: {
97
358
  label: { type: 'string' },
98
359
  link: { type: 'string' },
99
360
  target: { type: 'string' },
100
361
  },
362
+ required: ['label', 'link'],
101
363
  };
102
364
  const CommonThemeColors = {
103
365
  properties: {
@@ -133,7 +395,7 @@ const HttpColors = {
133
395
  };
134
396
  const ResponseColors = {
135
397
  properties: {
136
- errors: 'CommonColorProps',
398
+ error: 'CommonColorProps',
137
399
  info: 'CommonColorProps',
138
400
  redirect: 'CommonColorProps',
139
401
  success: 'CommonColorProps',
@@ -205,11 +467,14 @@ const HttpBadgesConfig = {
205
467
  const LabelControls = {
206
468
  properties: {
207
469
  top: { type: 'string' },
470
+ width: { type: 'string' },
471
+ height: { type: 'string' },
208
472
  },
209
473
  };
210
474
  const Panels = {
211
475
  properties: {
212
476
  borderRadius: { type: 'string' },
477
+ backgroundColor: { type: 'string' },
213
478
  },
214
479
  };
215
480
  const TryItButton = {
@@ -242,6 +507,7 @@ const StackedConfig = {
242
507
  const ThreePanelConfig = {
243
508
  properties: {
244
509
  maxWidth: 'Breakpoints',
510
+ middlePanelMaxWidth: 'Breakpoints',
245
511
  },
246
512
  };
247
513
  const Layout = {
@@ -301,7 +567,18 @@ const Heading = {
301
567
  properties: Object.assign(Object.assign({}, FontConfig.properties), { color: { type: 'string' }, transform: { type: 'string' } }),
302
568
  };
303
569
  const CodeConfig = {
304
- properties: Object.assign(Object.assign({}, FontConfig.properties), { backgroundColor: { type: 'string' }, color: { type: 'string' }, wordBreak: { type: 'string' }, wrap: { type: 'boolean' } }),
570
+ properties: Object.assign(Object.assign({}, FontConfig.properties), { backgroundColor: { type: 'string' }, color: { type: 'string' }, wordBreak: {
571
+ enum: [
572
+ 'break-all',
573
+ 'break-word',
574
+ 'keep-all',
575
+ 'normal',
576
+ 'revert',
577
+ 'unset',
578
+ 'inherit',
579
+ 'initial',
580
+ ],
581
+ }, wrap: { type: 'boolean' } }),
305
582
  };
306
583
  const HeadingsConfig = {
307
584
  properties: utils_1.omitObjectProps(FontConfig.properties, ['fontSize']),
@@ -316,7 +593,7 @@ const LinksConfig = {
316
593
  },
317
594
  };
318
595
  const Typography = {
319
- properties: Object.assign(Object.assign({ code: 'CodeConfig', fieldName: 'FontConfig' }, utils_1.pickObjectProps(FontConfig.properties, ['fontSize', 'fontFamily'])), { fontWeightBold: { type: 'string' }, fontWeightLight: { type: 'string' }, fontWeightRegular: { type: 'string' }, heading1: 'Heading', heading2: 'Heading', heading3: 'Heading', headings: 'HeadingsConfig', lineHeight: { type: 'string' }, links: 'LinksConfig', optimizeSpeed: { type: 'boolean' }, rightPanelHeading: 'Heading', smoothing: { type: 'string' } }),
596
+ properties: Object.assign(Object.assign({ code: 'CodeConfig', fieldName: 'FontConfig' }, utils_1.pickObjectProps(FontConfig.properties, ['fontSize', 'fontFamily'])), { fontWeightBold: { type: 'string' }, fontWeightLight: { type: 'string' }, fontWeightRegular: { type: 'string' }, heading1: 'Heading', heading2: 'Heading', heading3: 'Heading', headings: 'HeadingsConfig', lineHeight: { type: 'string' }, links: 'LinksConfig', optimizeSpeed: { type: 'boolean' }, rightPanelHeading: 'Heading', smoothing: { enum: ['auto', 'none', 'antialiased', 'subpixel-antialiased', 'grayscale'] } }),
320
597
  };
321
598
  const TokenProps = {
322
599
  properties: Object.assign({ color: { type: 'string' } }, utils_1.omitObjectProps(FontConfig.properties, ['fontWeight'])),
@@ -335,6 +612,12 @@ const Logo = {
335
612
  maxWidth: { type: 'string' },
336
613
  },
337
614
  };
615
+ const Fab = {
616
+ properties: {
617
+ backgroundColor: { type: 'string' },
618
+ color: { type: 'string' },
619
+ },
620
+ };
338
621
  const ButtonOverrides = {
339
622
  properties: {
340
623
  custom: { type: 'string' },
@@ -374,6 +657,7 @@ const ConfigTheme = {
374
657
  components: 'Components',
375
658
  layout: 'Layout',
376
659
  logo: 'Logo',
660
+ fab: 'Fab',
377
661
  overrides: 'Overrides',
378
662
  rightPanel: 'RightPanel',
379
663
  schema: 'Schema',
@@ -382,7 +666,7 @@ const ConfigTheme = {
382
666
  spacing: 'ThemeSpacing',
383
667
  typography: 'Typography',
384
668
  links: { properties: { color: { type: 'string' } } },
385
- codeSample: { properties: { backgroundColor: { type: 'string' } } },
669
+ codeSample: { properties: { backgroundColor: { type: 'string' } } }, // deprecated
386
670
  },
387
671
  };
388
672
  const GenerateCodeSamples = {
@@ -390,6 +674,7 @@ const GenerateCodeSamples = {
390
674
  skipOptionalParameters: { type: 'boolean' },
391
675
  languages: _1.listOf('ConfigLanguage'),
392
676
  },
677
+ required: ['languages'],
393
678
  };
394
679
  const ConfigReferenceDocs = {
395
680
  properties: {
@@ -415,16 +700,25 @@ const ConfigReferenceDocs = {
415
700
  hideLoading: { type: 'boolean' },
416
701
  hideLogo: { type: 'boolean' },
417
702
  hideRequestPayloadSample: { type: 'boolean' },
703
+ hideRightPanel: { type: 'boolean' },
418
704
  hideSchemaPattern: { type: 'boolean' },
419
705
  hideSchemaTitles: { type: 'boolean' },
420
706
  hideSingleRequestSampleTab: { type: 'boolean' },
707
+ hideSecuritySection: { type: 'boolean' },
421
708
  hideTryItPanel: { type: 'boolean' },
422
709
  hideFab: { type: 'boolean' },
423
710
  hideOneOfDescription: { type: 'boolean' },
424
711
  htmlTemplate: { type: 'string' },
425
- jsonSampleExpandLevel: { type: 'string' },
712
+ jsonSampleExpandLevel: (value) => {
713
+ if (typeof value === 'number') {
714
+ return { type: 'number', minimum: 1 };
715
+ }
716
+ else {
717
+ return { type: 'string' };
718
+ }
719
+ },
426
720
  labels: 'ConfigLabels',
427
- layout: { type: 'string' },
721
+ layout: { enum: ['stacked', 'three-panel'] },
428
722
  maxDisplayedEnumValues: { type: 'number' },
429
723
  menuToggle: { type: 'boolean' },
430
724
  nativeScrollbars: { type: 'boolean' },
@@ -432,39 +726,82 @@ const ConfigReferenceDocs = {
432
726
  oAuth2RedirectURI: { type: 'string' },
433
727
  onDeepLinkClick: { type: 'object' },
434
728
  onlyRequiredInSamples: { type: 'boolean' },
435
- pagination: { type: 'string' },
729
+ pagination: { enum: ['none', 'section', 'item'] },
436
730
  pathInMiddlePanel: { type: 'boolean' },
437
- payloadSampleIdx: { type: 'number' },
731
+ payloadSampleIdx: { type: 'number', minimum: 0 },
438
732
  requestInterceptor: { type: 'object' },
439
733
  requiredPropsFirst: { type: 'boolean' },
440
734
  routingBasePath: { type: 'string' },
735
+ routingStrategy: { type: 'string' },
441
736
  samplesTabsMaxCount: { type: 'number' },
442
- schemaExpansionLevel: { type: 'string' },
737
+ schemaExpansionLevel: (value) => {
738
+ if (typeof value === 'number') {
739
+ return { type: 'number', minimum: 0 };
740
+ }
741
+ else {
742
+ return { type: 'string' };
743
+ }
744
+ },
443
745
  schemaDefinitionsTagName: { type: 'string' },
444
- minCharacterLengthToInitSearch: { type: 'number' },
445
- maxResponseHeadersToShowInTryIt: { type: 'number' },
446
- scrollYOffset: { type: 'string' },
746
+ minCharacterLengthToInitSearch: { type: 'number', minimum: 1 },
747
+ maxResponseHeadersToShowInTryIt: { type: 'number', minimum: 0 },
748
+ scrollYOffset: (value) => {
749
+ if (typeof value === 'number') {
750
+ return { type: 'number' };
751
+ }
752
+ else {
753
+ return { type: 'string' };
754
+ }
755
+ },
447
756
  searchAutoExpand: { type: 'boolean' },
448
- searchFieldLevelBoost: { type: 'number' },
449
- searchMode: { type: 'string' },
757
+ searchFieldLevelBoost: { type: 'number', minimum: 0 },
758
+ searchMaxDepth: { type: 'number', minimum: 1 },
759
+ searchMode: { enum: ['default', 'path-only'] },
450
760
  searchOperationTitleBoost: { type: 'number' },
451
761
  searchTagTitleBoost: { type: 'number' },
762
+ sendXUserAgentInTryIt: { type: 'boolean' },
452
763
  showChangeLayoutButton: { type: 'boolean' },
453
764
  showConsole: { type: 'boolean' },
454
- showExtensions: { type: 'boolean' },
765
+ showExtensions: (value) => {
766
+ if (typeof value === 'boolean') {
767
+ return { type: 'boolean' };
768
+ }
769
+ else {
770
+ return {
771
+ type: 'array',
772
+ items: {
773
+ type: 'string',
774
+ },
775
+ };
776
+ }
777
+ },
455
778
  showNextButton: { type: 'boolean' },
456
779
  showRightPanelToggle: { type: 'boolean' },
780
+ showSecuritySchemeType: { type: 'boolean' },
457
781
  showWebhookVerb: { type: 'boolean' },
458
782
  showObjectSchemaExamples: { type: 'boolean' },
783
+ disableTryItRequestUrlEncoding: { type: 'boolean' },
459
784
  sidebarLinks: 'ConfigSidebarLinks',
460
- sideNavStyle: { type: 'string' },
785
+ sideNavStyle: { enum: ['summary-only', 'path-first', 'id-only'] },
461
786
  simpleOneOfTypeLabel: { type: 'boolean' },
462
787
  sortEnumValuesAlphabetically: { type: 'boolean' },
463
788
  sortOperationsAlphabetically: { type: 'boolean' },
464
789
  sortPropsAlphabetically: { type: 'boolean' },
465
790
  sortTagsAlphabetically: { type: 'boolean' },
791
+ suppressWarnings: { type: 'boolean' },
792
+ unstable_externalDescription: { type: 'boolean' },
466
793
  unstable_ignoreMimeParameters: { type: 'boolean' },
467
794
  untrustedDefinition: { type: 'boolean' },
795
+ mockServer: {
796
+ properties: {
797
+ url: { type: 'string' },
798
+ position: { enum: ['first', 'last', 'replace', 'off'] },
799
+ description: { type: 'string' },
800
+ },
801
+ },
802
+ showAccessMode: { type: 'boolean' },
803
+ preserveOriginalExtensionsName: { type: 'boolean' },
804
+ markdownHeadingsAnchorLevel: { type: 'number' },
468
805
  },
469
806
  additionalProperties: { type: 'string' },
470
807
  };
@@ -475,18 +812,22 @@ const ConfigMockServer = {
475
812
  },
476
813
  };
477
814
  exports.ConfigTypes = {
815
+ Assert,
478
816
  ConfigRoot,
479
817
  ConfigApis,
480
818
  ConfigApisProperties,
481
- RootConfigLint,
482
- ConfigLint,
819
+ RootConfigStyleguide,
820
+ ConfigStyleguide,
483
821
  ConfigReferenceDocs,
484
822
  ConfigMockServer,
485
823
  ConfigHTTP,
486
824
  ConfigLanguage,
487
825
  ConfigLabels,
488
826
  ConfigSidebarLinks,
827
+ CommonConfigSidebarLinks,
489
828
  ConfigTheme,
829
+ ConfigRootTheme,
830
+ AssertDefinition,
490
831
  ThemeColors,
491
832
  CommonThemeColors,
492
833
  BorderThemeColors,
@@ -517,9 +858,12 @@ exports.ConfigTypes = {
517
858
  TokenProps,
518
859
  CodeBlock,
519
860
  Logo,
861
+ Fab,
520
862
  ButtonOverrides,
521
863
  Overrides,
864
+ ObjectRule,
522
865
  RightPanel,
866
+ Rules,
523
867
  Shape,
524
868
  ThemeSpacing,
525
869
  GenerateCodeSamples,
@@ -530,4 +874,6 @@ exports.ConfigTypes = {
530
874
  Sidebar,
531
875
  Heading,
532
876
  Typography,
877
+ AssertionDefinitionAssertions,
878
+ AssertionDefinitionSubject,
533
879
  };