@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
@@ -0,0 +1,805 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.productThemeOverrideSchema = exports.themeConfigSchema = exports.mockServerConfigSchema = exports.i18nConfigSchema = exports.responseHeaderSchema = exports.devOnboardingConfigSchema = exports.seoConfigSchema = exports.redirectConfigSchema = exports.ssoConfigSchema = exports.rbacConfigSchema = void 0;
4
+ const config_1 = require("../config");
5
+ const oidcIssuerMetadataSchema = {
6
+ type: 'object',
7
+ properties: {
8
+ end_session_endpoint: { type: 'string' },
9
+ token_endpoint: { type: 'string' },
10
+ authorization_endpoint: { type: 'string' },
11
+ },
12
+ required: ['token_endpoint', 'authorization_endpoint'],
13
+ additionalProperties: true,
14
+ };
15
+ const oidcProviderConfigSchema = {
16
+ type: 'object',
17
+ properties: {
18
+ type: { type: 'string', const: config_1.AuthProviderType.OIDC },
19
+ title: { type: 'string' },
20
+ configurationUrl: { type: 'string', minLength: 1 },
21
+ configuration: oidcIssuerMetadataSchema,
22
+ clientId: { type: 'string', minLength: 1 },
23
+ clientSecret: { type: 'string', minLength: 1 },
24
+ teamsClaimName: { type: 'string' },
25
+ defaultTeams: { type: 'array', items: { type: 'string' } },
26
+ scopes: { type: 'array', items: { type: 'string' } },
27
+ tokenExpirationTime: { type: 'number' },
28
+ authorizationRequestCustomParams: { type: 'object', additionalProperties: { type: 'string' } },
29
+ tokenRequestCustomParams: { type: 'object', additionalProperties: { type: 'string' } },
30
+ },
31
+ required: ['type', 'clientId', 'clientSecret'],
32
+ oneOf: [{ required: ['configurationUrl'] }, { required: ['configuration'] }],
33
+ additionalProperties: false,
34
+ };
35
+ const saml2ProviderConfigSchema = {
36
+ type: 'object',
37
+ properties: {
38
+ type: { type: 'string', const: config_1.AuthProviderType.SAML2 },
39
+ title: { type: 'string' },
40
+ issuerId: { type: 'string' },
41
+ entityId: { type: 'string' },
42
+ ssoUrl: { type: 'string' },
43
+ x509PublicCert: { type: 'string' },
44
+ teamsAttributeName: { type: 'string', default: config_1.DEFAULT_TEAM_CLAIM_NAME },
45
+ teamsAttributeMap: { type: 'object', additionalProperties: { type: 'string' } },
46
+ defaultTeams: { type: 'array', items: { type: 'string' } },
47
+ },
48
+ additionalProperties: false,
49
+ required: ['type', 'issuerId', 'ssoUrl', 'x509PublicCert'],
50
+ };
51
+ const basicAuthProviderConfigSchema = {
52
+ type: 'object',
53
+ properties: {
54
+ type: { type: 'string', const: config_1.AuthProviderType.BASIC },
55
+ title: { type: 'string' },
56
+ credentials: {
57
+ type: 'array',
58
+ items: {
59
+ type: 'object',
60
+ properties: {
61
+ username: { type: 'string' },
62
+ password: { type: 'string' },
63
+ passwordHash: { type: 'string' },
64
+ teams: { type: 'array', items: { type: 'string' } },
65
+ },
66
+ required: ['username'],
67
+ additionalProperties: false,
68
+ },
69
+ },
70
+ },
71
+ required: ['type', 'credentials'],
72
+ additionalProperties: false,
73
+ };
74
+ const authProviderConfigSchema = {
75
+ oneOf: [oidcProviderConfigSchema, saml2ProviderConfigSchema, basicAuthProviderConfigSchema],
76
+ discriminator: { propertyName: 'type' },
77
+ };
78
+ const rbacScopeItemsSchema = { type: 'object', additionalProperties: { type: 'string' } };
79
+ exports.rbacConfigSchema = {
80
+ type: 'object',
81
+ properties: {
82
+ defaults: rbacScopeItemsSchema,
83
+ },
84
+ additionalProperties: rbacScopeItemsSchema,
85
+ };
86
+ exports.ssoConfigSchema = {
87
+ type: 'object',
88
+ additionalProperties: authProviderConfigSchema,
89
+ };
90
+ exports.redirectConfigSchema = {
91
+ type: 'object',
92
+ properties: {
93
+ to: { type: 'string' },
94
+ type: { type: 'number', default: 301 },
95
+ },
96
+ required: ['to'],
97
+ additionalProperties: false,
98
+ };
99
+ exports.seoConfigSchema = {
100
+ type: 'object',
101
+ properties: {
102
+ title: { type: 'string' },
103
+ description: { type: 'string' },
104
+ siteUrl: { type: 'string' },
105
+ image: { type: 'string' },
106
+ keywords: { type: 'array', items: { type: 'string' } },
107
+ lang: { type: 'string' },
108
+ jsonLd: { type: 'object' },
109
+ meta: {
110
+ type: 'array',
111
+ items: {
112
+ type: 'object',
113
+ properties: {
114
+ name: { type: 'string' },
115
+ content: { type: 'string' },
116
+ },
117
+ required: ['name', 'content'],
118
+ additionalProperties: false,
119
+ },
120
+ },
121
+ },
122
+ additionalProperties: false,
123
+ };
124
+ const apigeeAdapterAuthOauth2Schema = {
125
+ type: 'object',
126
+ properties: {
127
+ type: { type: 'string', const: config_1.ApigeeDevOnboardingIntegrationAuthType.OAUTH2 },
128
+ tokenEndpoint: { type: 'string' },
129
+ clientId: { type: 'string' },
130
+ clientSecret: { type: 'string' },
131
+ },
132
+ additionalProperties: false,
133
+ required: ['type', 'tokenEndpoint', 'clientId', 'clientSecret'],
134
+ };
135
+ const apigeeAdapterAuthServiceAccountSchema = {
136
+ type: 'object',
137
+ properties: {
138
+ type: { type: 'string', const: config_1.ApigeeDevOnboardingIntegrationAuthType.SERVICE_ACCOUNT },
139
+ serviceAccountEmail: { type: 'string' },
140
+ serviceAccountPrivateKey: { type: 'string' },
141
+ },
142
+ additionalProperties: false,
143
+ required: ['type', 'serviceAccountEmail', 'serviceAccountPrivateKey'],
144
+ };
145
+ const apigeeXAdapterConfigSchema = {
146
+ type: 'object',
147
+ properties: {
148
+ type: { type: 'string', const: 'APIGEE_X' },
149
+ apiUrl: { type: 'string' },
150
+ stage: { type: 'string', default: 'non-production' },
151
+ organizationName: { type: 'string' },
152
+ ignoreApiProducts: { type: 'array', items: { type: 'string' } },
153
+ allowApiProductsOutsideCatalog: { type: 'boolean', default: false },
154
+ auth: {
155
+ type: 'object',
156
+ oneOf: [apigeeAdapterAuthOauth2Schema, apigeeAdapterAuthServiceAccountSchema],
157
+ discriminator: { propertyName: 'type' },
158
+ },
159
+ },
160
+ additionalProperties: false,
161
+ required: ['type', 'organizationName', 'auth'],
162
+ };
163
+ const apigeeEdgeAdapterConfigSchema = Object.assign(Object.assign({}, apigeeXAdapterConfigSchema), { properties: Object.assign(Object.assign({}, apigeeXAdapterConfigSchema.properties), { type: { type: 'string', const: 'APIGEE_EDGE' } }) });
164
+ const graviteeAdapterConfigSchema = {
165
+ type: 'object',
166
+ properties: {
167
+ type: { type: 'string', const: 'GRAVITEE' },
168
+ apiBaseUrl: { type: 'string' },
169
+ env: { type: 'string' },
170
+ allowApiProductsOutsideCatalog: { type: 'boolean', default: false },
171
+ stage: { type: 'string', default: 'non-production' },
172
+ auth: { type: 'object', properties: { static: { type: 'string' } } },
173
+ },
174
+ additionalProperties: false,
175
+ required: ['type', 'apiBaseUrl'],
176
+ };
177
+ const devOnboardingAdapterConfigSchema = {
178
+ type: 'object',
179
+ oneOf: [apigeeXAdapterConfigSchema, apigeeEdgeAdapterConfigSchema, graviteeAdapterConfigSchema],
180
+ discriminator: { propertyName: 'type' },
181
+ };
182
+ exports.devOnboardingConfigSchema = {
183
+ type: 'object',
184
+ required: ['adapters'],
185
+ additionalProperties: false,
186
+ properties: {
187
+ adapters: {
188
+ type: 'array',
189
+ items: devOnboardingAdapterConfigSchema,
190
+ },
191
+ },
192
+ };
193
+ exports.responseHeaderSchema = {
194
+ type: 'object',
195
+ properties: {
196
+ name: { type: 'string' },
197
+ value: { type: 'string' },
198
+ },
199
+ additionalProperties: false,
200
+ required: ['name', 'value'],
201
+ };
202
+ exports.i18nConfigSchema = {
203
+ type: 'object',
204
+ properties: {
205
+ defaultLocale: {
206
+ type: 'string',
207
+ },
208
+ locales: {
209
+ type: 'array',
210
+ items: {
211
+ type: 'object',
212
+ properties: {
213
+ code: {
214
+ type: 'string',
215
+ },
216
+ name: {
217
+ type: 'string',
218
+ },
219
+ },
220
+ required: ['code'],
221
+ },
222
+ },
223
+ },
224
+ required: ['defaultLocale', 'locales'],
225
+ };
226
+ exports.mockServerConfigSchema = {
227
+ type: 'object',
228
+ properties: {
229
+ off: { type: 'boolean', default: false },
230
+ position: { type: 'string', enum: ['first', 'last', 'replace', 'off'], default: 'first' },
231
+ strictExamples: { type: 'boolean', default: false },
232
+ errorIfForcedExampleNotFound: { type: 'boolean', default: false },
233
+ description: { type: 'string' },
234
+ },
235
+ };
236
+ const logoConfigSchema = {
237
+ type: 'object',
238
+ properties: {
239
+ image: { type: 'string' },
240
+ altText: { type: 'string' },
241
+ link: { type: 'string' },
242
+ favicon: { type: 'string' },
243
+ },
244
+ additionalProperties: false,
245
+ };
246
+ const hideConfigSchema = {
247
+ type: 'object',
248
+ properties: {
249
+ hide: { type: 'boolean' },
250
+ },
251
+ additionalProperties: false,
252
+ };
253
+ const scriptConfigSchema = {
254
+ type: 'object',
255
+ properties: {
256
+ src: { type: 'string' },
257
+ async: { type: 'boolean' },
258
+ crossorigin: { type: 'string' },
259
+ defer: { type: 'boolean' },
260
+ fetchpriority: { type: 'string' },
261
+ integrity: { type: 'string' },
262
+ module: { type: 'boolean' },
263
+ nomodule: { type: 'boolean' },
264
+ nonce: { type: 'string' },
265
+ referrerpolicy: { type: 'string' },
266
+ type: { type: 'string' },
267
+ },
268
+ required: ['src'],
269
+ additionalProperties: true,
270
+ };
271
+ const linksConfigSchema = {
272
+ type: 'object',
273
+ properties: {
274
+ href: { type: 'string' },
275
+ as: { type: 'string' },
276
+ crossorigin: { type: 'string' },
277
+ fetchpriority: { type: 'string' },
278
+ hreflang: { type: 'string' },
279
+ imagesizes: { type: 'string' },
280
+ imagesrcset: { type: 'string' },
281
+ integrity: { type: 'string' },
282
+ media: { type: 'string' },
283
+ prefetch: { type: 'string' },
284
+ referrerpolicy: { type: 'string' },
285
+ rel: { type: 'string' },
286
+ sizes: { type: 'string' },
287
+ title: { type: 'string' },
288
+ type: { type: 'string' },
289
+ },
290
+ required: ['href'],
291
+ additionalProperties: true,
292
+ };
293
+ const markdownConfigSchema = {
294
+ type: 'object',
295
+ properties: {
296
+ frontMatterKeysToResolve: {
297
+ type: 'array',
298
+ items: { type: 'string' },
299
+ default: ['image', 'links'],
300
+ },
301
+ lastUpdatedBlock: {
302
+ type: 'object',
303
+ properties: Object.assign({ format: {
304
+ type: 'string',
305
+ enum: ['timeago', 'iso', 'long', 'short'],
306
+ default: 'timeago',
307
+ }, locale: { type: 'string', default: 'en-US' } }, hideConfigSchema.properties),
308
+ additionalProperties: false,
309
+ default: {},
310
+ },
311
+ toc: {
312
+ type: 'object',
313
+ properties: Object.assign({ header: { type: 'string', default: 'On this page' }, depth: { type: 'integer', default: 3, minimum: 1 } }, hideConfigSchema.properties),
314
+ additionalProperties: false,
315
+ default: {},
316
+ },
317
+ editPage: {
318
+ type: 'object',
319
+ properties: Object.assign({ baseUrl: { type: 'string' }, icon: { type: 'string' }, text: { type: 'string', default: 'Edit this page' } }, hideConfigSchema.properties),
320
+ additionalProperties: false,
321
+ default: {},
322
+ },
323
+ },
324
+ additionalProperties: false,
325
+ default: {},
326
+ };
327
+ const amplitudeAnalyticsConfigSchema = {
328
+ type: 'object',
329
+ properties: {
330
+ includeInDevelopment: { type: 'boolean' },
331
+ apiKey: { type: 'string' },
332
+ head: { type: 'boolean' },
333
+ respectDNT: { type: 'boolean' },
334
+ exclude: { type: 'array', items: { type: 'string' } },
335
+ outboundClickEventName: { type: 'string' },
336
+ pageViewEventName: { type: 'string' },
337
+ amplitudeConfig: { type: 'object', additionalProperties: true },
338
+ },
339
+ additionalProperties: false,
340
+ required: ['apiKey'],
341
+ };
342
+ const fullstoryAnalyticsConfigSchema = {
343
+ type: 'object',
344
+ properties: {
345
+ includeInDevelopment: { type: 'boolean' },
346
+ orgId: { type: 'string' },
347
+ },
348
+ additionalProperties: false,
349
+ required: ['orgId'],
350
+ };
351
+ const heapAnalyticsConfigSchema = {
352
+ type: 'object',
353
+ properties: {
354
+ includeInDevelopment: { type: 'boolean' },
355
+ appId: { type: 'string' },
356
+ },
357
+ additionalProperties: false,
358
+ required: ['appId'],
359
+ };
360
+ const rudderstackAnalyticsConfigSchema = {
361
+ type: 'object',
362
+ properties: {
363
+ includeInDevelopment: { type: 'boolean' },
364
+ writeKey: { type: 'string', minLength: 10 },
365
+ trackPage: { type: 'boolean' },
366
+ dataPlaneUrl: { type: 'string' },
367
+ controlPlaneUrl: { type: 'string' },
368
+ sdkUrl: { type: 'string' },
369
+ loadOptions: { type: 'object', additionalProperties: true },
370
+ },
371
+ additionalProperties: false,
372
+ required: ['writeKey'],
373
+ };
374
+ const segmentAnalyticsConfigSchema = {
375
+ type: 'object',
376
+ properties: {
377
+ includeInDevelopment: { type: 'boolean' },
378
+ writeKey: { type: 'string', minLength: 10 },
379
+ trackPage: { type: 'boolean' },
380
+ includeTitleInPageCall: { type: 'boolean' },
381
+ host: { type: 'string' },
382
+ },
383
+ additionalProperties: false,
384
+ required: ['writeKey'],
385
+ };
386
+ const gtmAnalyticsConfigSchema = {
387
+ type: 'object',
388
+ properties: {
389
+ includeInDevelopment: { type: 'boolean' },
390
+ trackingId: { type: 'string' },
391
+ gtmAuth: { type: 'string' },
392
+ gtmPreview: { type: 'string' },
393
+ defaultDataLayer: {},
394
+ dataLayerName: { type: 'string' },
395
+ enableWebVitalsTracking: { type: 'boolean' },
396
+ selfHostedOrigin: { type: 'string' },
397
+ pageViewEventName: { type: 'string' },
398
+ },
399
+ additionalProperties: false,
400
+ required: ['trackingId'],
401
+ };
402
+ const googleAnalyticsConfigSchema = {
403
+ type: 'object',
404
+ properties: {
405
+ includeInDevelopment: { type: 'boolean' },
406
+ trackingId: { type: 'string' },
407
+ head: { type: 'boolean' },
408
+ respectDNT: { type: 'boolean' },
409
+ anonymize: { type: 'boolean' },
410
+ exclude: { type: 'array', items: { type: 'string' } },
411
+ optimizeId: { type: 'string' },
412
+ experimentId: { type: 'string' },
413
+ variationId: { type: 'string' },
414
+ enableWebVitalsTracking: { type: 'boolean' },
415
+ defer: { type: 'boolean' },
416
+ sampleRate: { type: 'number' },
417
+ name: { type: 'string' },
418
+ clientId: { type: 'string' },
419
+ siteSpeedSampleRate: { type: 'number' },
420
+ alwaysSendReferrer: { type: 'boolean' },
421
+ allowAnchor: { type: 'boolean' },
422
+ cookieName: { type: 'string' },
423
+ cookieFlags: { type: 'string' },
424
+ cookieDomain: { type: 'string' },
425
+ cookieExpires: { type: 'number' },
426
+ storeGac: { type: 'boolean' },
427
+ legacyCookieDomain: { type: 'string' },
428
+ legacyHistoryImport: { type: 'boolean' },
429
+ allowLinker: { type: 'boolean' },
430
+ storage: { type: 'string' },
431
+ allowAdFeatures: { type: 'boolean' },
432
+ dataSource: { type: 'string' },
433
+ queueTime: { type: 'number' },
434
+ forceSSL: { type: 'boolean' },
435
+ transport: { type: 'string' },
436
+ },
437
+ additionalProperties: false,
438
+ required: ['trackingId'],
439
+ };
440
+ const adobeAnalyticsConfigSchema = {
441
+ type: 'object',
442
+ properties: {
443
+ includeInDevelopment: { type: 'boolean' },
444
+ scriptUrl: { type: 'string' },
445
+ pageViewEventName: { type: 'string' },
446
+ },
447
+ additionalProperties: false,
448
+ required: ['scriptUrl'],
449
+ };
450
+ const navItemSchema = {
451
+ type: 'object',
452
+ properties: {
453
+ page: { type: 'string' },
454
+ directory: { type: 'string' },
455
+ group: { type: 'string' },
456
+ label: { type: 'string' },
457
+ separator: { type: 'string' },
458
+ separatorLine: { type: 'boolean' },
459
+ version: { type: 'string' },
460
+ menuStyle: { type: 'string', enum: ['drilldown'] },
461
+ expanded: { type: 'string', const: 'always' },
462
+ selectFirstItemOnExpand: { type: 'boolean' },
463
+ flatten: { type: 'boolean' },
464
+ linkedSidebars: {
465
+ type: 'array',
466
+ items: { type: 'string' },
467
+ },
468
+ },
469
+ };
470
+ const navItemsSchema = {
471
+ type: 'array',
472
+ items: Object.assign(Object.assign({}, navItemSchema), { properties: Object.assign(Object.assign({}, navItemSchema.properties), { items: { type: 'array', items: navItemSchema } }) }),
473
+ };
474
+ const productConfigSchema = {
475
+ type: 'object',
476
+ properties: {
477
+ name: { type: 'string' },
478
+ icon: { type: 'string' },
479
+ folder: { type: 'string' },
480
+ },
481
+ additionalProperties: false,
482
+ required: ['name', 'icon', 'folder'],
483
+ };
484
+ const suggestedPageSchema = {
485
+ type: 'object',
486
+ properties: {
487
+ page: { type: 'string' },
488
+ label: { type: 'string' },
489
+ labelTranslationKey: { type: 'string' },
490
+ },
491
+ required: ['page'],
492
+ };
493
+ const catalogFilterSchema = {
494
+ type: 'object',
495
+ additionalProperties: false,
496
+ required: ['title', 'property'],
497
+ properties: {
498
+ type: { type: 'string', enum: ['select', 'checkboxes', 'date-range'] },
499
+ title: { type: 'string' },
500
+ titleTranslationKey: { type: 'string' },
501
+ property: { type: 'string' },
502
+ parentFilter: { type: 'string' },
503
+ missingCategoryName: { type: 'string' },
504
+ missingCategoryNameTranslationKey: { type: 'string' },
505
+ options: { type: 'array', items: { type: 'string' } },
506
+ },
507
+ };
508
+ const scorecardConfigSchema = {
509
+ type: 'object',
510
+ additionalProperties: true,
511
+ required: ['levels'],
512
+ properties: {
513
+ failBuildIfBelowMinimum: { type: 'boolean', default: false },
514
+ levels: {
515
+ type: 'array',
516
+ items: {
517
+ type: 'object',
518
+ required: ['name'],
519
+ properties: {
520
+ name: { type: 'string' },
521
+ extends: { type: 'array', items: { type: 'string' } },
522
+ rules: {
523
+ type: 'object',
524
+ additionalProperties: {
525
+ type: ['object', 'string'],
526
+ },
527
+ },
528
+ },
529
+ additionalProperties: false,
530
+ },
531
+ },
532
+ targets: {
533
+ type: 'array',
534
+ items: {
535
+ type: 'object',
536
+ required: ['where'],
537
+ properties: {
538
+ minimumLevel: { type: 'string' },
539
+ where: {
540
+ type: 'object',
541
+ required: ['metadata'],
542
+ properties: {
543
+ metadata: { type: 'object', additionalProperties: { type: 'string' } },
544
+ },
545
+ additionalProperties: false,
546
+ },
547
+ },
548
+ additionalProperties: false,
549
+ },
550
+ },
551
+ },
552
+ };
553
+ const catalogSchema = {
554
+ type: 'object',
555
+ additionalProperties: true,
556
+ required: ['slug', 'filters', 'groupByFirstFilter', 'items'],
557
+ properties: {
558
+ slug: { type: 'string' },
559
+ filters: { type: 'array', items: catalogFilterSchema },
560
+ groupByFirstFilter: { type: 'boolean' },
561
+ items: navItemsSchema,
562
+ requiredPermission: { type: 'string' },
563
+ separateVersions: { type: 'boolean' },
564
+ title: { type: 'string' },
565
+ titleTranslationKey: { type: 'string' },
566
+ description: { type: 'string' },
567
+ descriptionTranslationKey: { type: 'string' },
568
+ },
569
+ };
570
+ const catalogsConfigSchema = {
571
+ type: 'object',
572
+ patternProperties: {
573
+ '.*': catalogSchema,
574
+ },
575
+ };
576
+ exports.themeConfigSchema = {
577
+ type: 'object',
578
+ properties: {
579
+ imports: {
580
+ type: 'array',
581
+ items: { type: 'string' },
582
+ default: [],
583
+ },
584
+ logo: logoConfigSchema,
585
+ navbar: {
586
+ type: 'object',
587
+ properties: Object.assign({ items: navItemsSchema }, hideConfigSchema.properties),
588
+ additionalProperties: false,
589
+ },
590
+ products: {
591
+ type: 'object',
592
+ additionalProperties: productConfigSchema,
593
+ },
594
+ footer: {
595
+ type: 'object',
596
+ properties: Object.assign({ items: navItemsSchema, copyrightText: { type: 'string' } }, hideConfigSchema.properties),
597
+ additionalProperties: false,
598
+ },
599
+ sidebar: hideConfigSchema,
600
+ scripts: {
601
+ type: 'object',
602
+ properties: {
603
+ head: { type: 'array', items: scriptConfigSchema },
604
+ body: { type: 'array', items: scriptConfigSchema },
605
+ },
606
+ additionalProperties: false,
607
+ },
608
+ links: { type: 'array', items: linksConfigSchema },
609
+ feedback: {
610
+ type: 'object',
611
+ properties: {
612
+ hide: {
613
+ type: 'boolean',
614
+ default: false,
615
+ },
616
+ type: {
617
+ type: 'string',
618
+ enum: ['rating', 'sentiment', 'comment', 'reasons'],
619
+ default: 'sentiment',
620
+ },
621
+ settings: Object.assign({ type: 'object', properties: {
622
+ label: { type: 'string' },
623
+ submitText: { type: 'string' },
624
+ max: { type: 'number' },
625
+ buttonText: { type: 'string' },
626
+ multi: { type: 'boolean' },
627
+ items: { type: 'array', items: { type: 'string' }, minItems: 1 },
628
+ reasons: {
629
+ type: 'object',
630
+ properties: {
631
+ enable: { type: 'boolean', default: true },
632
+ multi: { type: 'boolean' },
633
+ label: { type: 'string' },
634
+ items: { type: 'array', items: { type: 'string' } },
635
+ },
636
+ additionalProperties: false,
637
+ },
638
+ comment: {
639
+ type: 'object',
640
+ properties: {
641
+ enable: { type: 'boolean', default: true },
642
+ label: { type: 'string' },
643
+ likeLabel: { type: 'string' },
644
+ dislikeLabel: { type: 'string' },
645
+ },
646
+ additionalProperties: false,
647
+ },
648
+ }, additionalProperties: false }, hideConfigSchema.properties),
649
+ },
650
+ additionalProperties: false,
651
+ default: {},
652
+ },
653
+ search: {
654
+ type: 'object',
655
+ properties: Object.assign({ placement: {
656
+ type: 'string',
657
+ default: 'navbar',
658
+ }, shortcuts: {
659
+ type: 'array',
660
+ items: { type: 'string' },
661
+ default: ['/'],
662
+ }, suggestedPages: {
663
+ type: 'array',
664
+ items: suggestedPageSchema,
665
+ } }, hideConfigSchema.properties),
666
+ additionalProperties: false,
667
+ default: {},
668
+ },
669
+ colorMode: {
670
+ type: 'object',
671
+ properties: Object.assign({ ignoreDetection: { type: 'boolean' }, modes: {
672
+ type: 'array',
673
+ items: { type: 'string' },
674
+ default: ['light', 'dark'],
675
+ } }, hideConfigSchema.properties),
676
+ additionalProperties: false,
677
+ default: {},
678
+ },
679
+ navigation: {
680
+ type: 'object',
681
+ properties: {
682
+ nextButton: {
683
+ type: 'object',
684
+ properties: Object.assign({ text: { type: 'string', default: 'Next to {label}' } }, hideConfigSchema.properties),
685
+ additionalProperties: false,
686
+ default: {},
687
+ },
688
+ previousButton: {
689
+ type: 'object',
690
+ properties: Object.assign({ text: { type: 'string', default: 'Back to {label}' } }, hideConfigSchema.properties),
691
+ additionalProperties: false,
692
+ default: {},
693
+ },
694
+ },
695
+ additionalProperties: false,
696
+ default: {},
697
+ },
698
+ codeSnippet: {
699
+ type: 'object',
700
+ properties: {
701
+ controlsStyle: { type: 'string', default: 'icon' },
702
+ copy: {
703
+ type: 'object',
704
+ properties: Object.assign({}, hideConfigSchema.properties),
705
+ additionalProperties: false,
706
+ default: { hide: false },
707
+ },
708
+ report: {
709
+ type: 'object',
710
+ properties: Object.assign({}, hideConfigSchema.properties),
711
+ additionalProperties: false,
712
+ default: { hide: true },
713
+ },
714
+ expand: {
715
+ type: 'object',
716
+ properties: Object.assign({}, hideConfigSchema.properties),
717
+ additionalProperties: false,
718
+ default: { hide: false },
719
+ },
720
+ collapse: {
721
+ type: 'object',
722
+ properties: Object.assign({}, hideConfigSchema.properties),
723
+ additionalProperties: false,
724
+ default: { hide: false },
725
+ },
726
+ },
727
+ additionalProperties: false,
728
+ default: {},
729
+ },
730
+ markdown: markdownConfigSchema,
731
+ openapi: { type: 'object', additionalProperties: true },
732
+ graphql: { type: 'object', additionalProperties: true },
733
+ analytics: {
734
+ type: 'object',
735
+ properties: {
736
+ adobe: adobeAnalyticsConfigSchema,
737
+ amplitude: amplitudeAnalyticsConfigSchema,
738
+ fullstory: fullstoryAnalyticsConfigSchema,
739
+ heap: heapAnalyticsConfigSchema,
740
+ rudderstack: rudderstackAnalyticsConfigSchema,
741
+ segment: segmentAnalyticsConfigSchema,
742
+ gtm: gtmAnalyticsConfigSchema,
743
+ ga: googleAnalyticsConfigSchema,
744
+ },
745
+ },
746
+ userProfile: {
747
+ type: 'object',
748
+ properties: Object.assign({ loginLabel: { type: 'string', default: 'Login' }, logoutLabel: { type: 'string', default: 'Logout' }, menu: {
749
+ type: 'array',
750
+ items: {
751
+ type: 'object',
752
+ properties: {
753
+ label: { type: 'string' },
754
+ external: { type: 'boolean' },
755
+ link: { type: 'string' },
756
+ separatorLine: { type: 'boolean' },
757
+ },
758
+ additionalProperties: true,
759
+ },
760
+ default: [],
761
+ } }, hideConfigSchema.properties),
762
+ additionalProperties: false,
763
+ default: {},
764
+ },
765
+ breadcrumbs: {
766
+ type: 'object',
767
+ properties: {
768
+ hide: { type: 'boolean' },
769
+ prefixItems: {
770
+ type: 'array',
771
+ items: {
772
+ type: 'object',
773
+ properties: {
774
+ label: { type: 'string' },
775
+ labelTranslationKey: { type: 'string' },
776
+ page: { type: 'string' },
777
+ },
778
+ additionalProperties: false,
779
+ default: {},
780
+ },
781
+ },
782
+ },
783
+ additionalProperties: false,
784
+ default: {},
785
+ },
786
+ catalog: catalogsConfigSchema,
787
+ scorecard: scorecardConfigSchema,
788
+ },
789
+ additionalProperties: true,
790
+ default: {},
791
+ };
792
+ exports.productThemeOverrideSchema = {
793
+ type: 'object',
794
+ properties: {
795
+ logo: exports.themeConfigSchema.properties.logo,
796
+ navbar: exports.themeConfigSchema.properties.navbar,
797
+ footer: exports.themeConfigSchema.properties.footer,
798
+ sidebar: exports.themeConfigSchema.properties.sidebar,
799
+ search: exports.themeConfigSchema.properties.search,
800
+ codeSnippet: exports.themeConfigSchema.properties.codeSnippet,
801
+ breadcrumbs: exports.themeConfigSchema.properties.breadcrumbs,
802
+ },
803
+ additionalProperties: true,
804
+ default: {},
805
+ };