@redocly/openapi-core 1.34.3 → 2.0.0-next.0

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 (1011) hide show
  1. package/README.md +42 -4
  2. package/lib/bundle.d.ts +16 -15
  3. package/lib/bundle.d.ts.map +1 -0
  4. package/lib/bundle.js +88 -109
  5. package/lib/bundle.js.map +1 -0
  6. package/lib/config/all.d.ts +3 -2
  7. package/lib/config/all.d.ts.map +1 -0
  8. package/lib/config/all.js +5 -3
  9. package/lib/config/all.js.map +1 -0
  10. package/lib/config/builtIn.d.ts +3 -2
  11. package/lib/config/builtIn.d.ts.map +1 -0
  12. package/lib/config/builtIn.js +44 -49
  13. package/lib/config/builtIn.js.map +1 -0
  14. package/lib/config/bundle-extends.d.ts +8 -0
  15. package/lib/config/bundle-extends.d.ts.map +1 -0
  16. package/lib/config/bundle-extends.js +27 -0
  17. package/lib/config/bundle-extends.js.map +1 -0
  18. package/lib/config/config-resolvers.d.ts +15 -27
  19. package/lib/config/config-resolvers.d.ts.map +1 -0
  20. package/lib/config/config-resolvers.js +259 -373
  21. package/lib/config/config-resolvers.js.map +1 -0
  22. package/lib/config/config.d.ts +22 -26
  23. package/lib/config/config.d.ts.map +1 -0
  24. package/lib/config/config.js +104 -112
  25. package/lib/config/config.js.map +1 -0
  26. package/lib/config/index.d.ts +8 -7
  27. package/lib/config/index.d.ts.map +1 -0
  28. package/lib/config/index.js +8 -23
  29. package/lib/config/index.js.map +1 -0
  30. package/lib/config/load.d.ts +8 -19
  31. package/lib/config/load.d.ts.map +1 -0
  32. package/lib/config/load.js +62 -107
  33. package/lib/config/load.js.map +1 -0
  34. package/lib/config/minimal.d.ts +3 -2
  35. package/lib/config/minimal.d.ts.map +1 -0
  36. package/lib/config/minimal.js +5 -3
  37. package/lib/config/minimal.js.map +1 -0
  38. package/lib/config/recommended-strict.d.ts +3 -2
  39. package/lib/config/recommended-strict.d.ts.map +1 -0
  40. package/lib/config/recommended-strict.js +5 -3
  41. package/lib/config/recommended-strict.js.map +1 -0
  42. package/lib/config/recommended.d.ts +3 -2
  43. package/lib/config/recommended.d.ts.map +1 -0
  44. package/lib/config/recommended.js +5 -3
  45. package/lib/config/recommended.js.map +1 -0
  46. package/lib/config/rules.d.ts +5 -4
  47. package/lib/config/rules.d.ts.map +1 -0
  48. package/lib/config/rules.js +4 -6
  49. package/lib/config/rules.js.map +1 -0
  50. package/lib/config/spec.d.ts +3 -2
  51. package/lib/config/spec.d.ts.map +1 -0
  52. package/lib/config/spec.js +6 -4
  53. package/lib/config/spec.js.map +1 -0
  54. package/lib/config/types.d.ts +19 -62
  55. package/lib/config/types.d.ts.map +1 -0
  56. package/lib/config/types.js +2 -2
  57. package/lib/config/types.js.map +1 -0
  58. package/lib/config/utils.d.ts +5 -9
  59. package/lib/config/utils.d.ts.map +1 -0
  60. package/lib/config/utils.js +56 -258
  61. package/lib/config/utils.js.map +1 -0
  62. package/lib/config/visitors.d.ts +36 -0
  63. package/lib/config/visitors.d.ts.map +1 -0
  64. package/lib/config/visitors.js +88 -0
  65. package/lib/config/visitors.js.map +1 -0
  66. package/lib/decorators/arazzo/index.d.ts +1 -0
  67. package/lib/decorators/arazzo/index.d.ts.map +1 -0
  68. package/lib/decorators/arazzo/index.js +2 -4
  69. package/lib/decorators/arazzo/index.js.map +1 -0
  70. package/lib/decorators/async2/index.d.ts +1 -0
  71. package/lib/decorators/async2/index.d.ts.map +1 -0
  72. package/lib/decorators/async2/index.js +2 -4
  73. package/lib/decorators/async2/index.js.map +1 -0
  74. package/lib/decorators/async3/index.d.ts +1 -0
  75. package/lib/decorators/async3/index.d.ts.map +1 -0
  76. package/lib/decorators/async3/index.js +2 -4
  77. package/lib/decorators/async3/index.js.map +1 -0
  78. package/lib/decorators/common/filters/filter-helper.d.ts +2 -1
  79. package/lib/decorators/common/filters/filter-helper.d.ts.map +1 -0
  80. package/lib/decorators/common/filters/filter-helper.js +9 -12
  81. package/lib/decorators/common/filters/filter-helper.js.map +1 -0
  82. package/lib/decorators/common/filters/filter-in.d.ts +2 -1
  83. package/lib/decorators/common/filters/filter-in.d.ts.map +1 -0
  84. package/lib/decorators/common/filters/filter-in.js +5 -8
  85. package/lib/decorators/common/filters/filter-in.js.map +1 -0
  86. package/lib/decorators/common/filters/filter-out.d.ts +2 -1
  87. package/lib/decorators/common/filters/filter-out.d.ts.map +1 -0
  88. package/lib/decorators/common/filters/filter-out.js +5 -8
  89. package/lib/decorators/common/filters/filter-out.js.map +1 -0
  90. package/lib/decorators/common/info-description-override.d.ts +2 -1
  91. package/lib/decorators/common/info-description-override.d.ts.map +1 -0
  92. package/lib/decorators/common/info-description-override.js +4 -7
  93. package/lib/decorators/common/info-description-override.js.map +1 -0
  94. package/lib/decorators/common/info-override.d.ts +2 -1
  95. package/lib/decorators/common/info-override.d.ts.map +1 -0
  96. package/lib/decorators/common/info-override.js +2 -5
  97. package/lib/decorators/common/info-override.js.map +1 -0
  98. package/lib/decorators/common/media-type-examples-override.d.ts +2 -1
  99. package/lib/decorators/common/media-type-examples-override.d.ts.map +1 -0
  100. package/lib/decorators/common/media-type-examples-override.js +7 -10
  101. package/lib/decorators/common/media-type-examples-override.js.map +1 -0
  102. package/lib/decorators/common/operation-description-override.d.ts +2 -1
  103. package/lib/decorators/common/operation-description-override.d.ts.map +1 -0
  104. package/lib/decorators/common/operation-description-override.js +4 -7
  105. package/lib/decorators/common/operation-description-override.js.map +1 -0
  106. package/lib/decorators/common/remove-x-internal.d.ts +2 -1
  107. package/lib/decorators/common/remove-x-internal.d.ts.map +1 -0
  108. package/lib/decorators/common/remove-x-internal.js +11 -14
  109. package/lib/decorators/common/remove-x-internal.js.map +1 -0
  110. package/lib/decorators/common/tag-description-override.d.ts +2 -1
  111. package/lib/decorators/common/tag-description-override.d.ts.map +1 -0
  112. package/lib/decorators/common/tag-description-override.js +4 -7
  113. package/lib/decorators/common/tag-description-override.js.map +1 -0
  114. package/lib/decorators/oas2/index.d.ts +2 -2
  115. package/lib/decorators/oas2/index.d.ts.map +1 -0
  116. package/lib/decorators/oas2/index.js +16 -20
  117. package/lib/decorators/oas2/index.js.map +1 -0
  118. package/lib/decorators/oas2/remove-unused-components.d.ts +2 -1
  119. package/lib/decorators/oas2/remove-unused-components.d.ts.map +1 -0
  120. package/lib/decorators/oas2/remove-unused-components.js +4 -7
  121. package/lib/decorators/oas2/remove-unused-components.js.map +1 -0
  122. package/lib/decorators/oas3/index.d.ts +2 -2
  123. package/lib/decorators/oas3/index.d.ts.map +1 -0
  124. package/lib/decorators/oas3/index.js +18 -22
  125. package/lib/decorators/oas3/index.js.map +1 -0
  126. package/lib/decorators/oas3/remove-unused-components.d.ts +2 -1
  127. package/lib/decorators/oas3/remove-unused-components.d.ts.map +1 -0
  128. package/lib/decorators/oas3/remove-unused-components.js +5 -8
  129. package/lib/decorators/oas3/remove-unused-components.js.map +1 -0
  130. package/lib/decorators/overlay1/index.d.ts +1 -0
  131. package/lib/decorators/overlay1/index.d.ts.map +1 -0
  132. package/lib/decorators/overlay1/index.js +2 -4
  133. package/lib/decorators/overlay1/index.js.map +1 -0
  134. package/lib/env.d.ts +1 -0
  135. package/lib/env.d.ts.map +1 -0
  136. package/lib/env.js +3 -5
  137. package/lib/env.js.map +1 -0
  138. package/lib/format/codeframes.d.ts +2 -1
  139. package/lib/format/codeframes.d.ts.map +1 -0
  140. package/lib/format/codeframes.js +15 -19
  141. package/lib/format/codeframes.js.map +1 -0
  142. package/lib/format/format.d.ts +2 -1
  143. package/lib/format/format.d.ts.map +1 -0
  144. package/lib/format/format.js +57 -62
  145. package/lib/format/format.js.map +1 -0
  146. package/lib/index.d.ts +31 -26
  147. package/lib/index.d.ts.map +1 -0
  148. package/lib/index.js +25 -98
  149. package/lib/index.js.map +1 -0
  150. package/lib/js-yaml/index.d.ts +1 -0
  151. package/lib/js-yaml/index.d.ts.map +1 -0
  152. package/lib/js-yaml/index.js +7 -11
  153. package/lib/js-yaml/index.js.map +1 -0
  154. package/lib/lint.d.ts +12 -13
  155. package/lib/lint.d.ts.map +1 -0
  156. package/lib/lint.js +46 -50
  157. package/lib/lint.js.map +1 -0
  158. package/lib/logger.d.ts +2 -1
  159. package/lib/logger.d.ts.map +1 -0
  160. package/lib/logger.js +15 -17
  161. package/lib/logger.js.map +1 -0
  162. package/lib/oas-types.d.ts +395 -3
  163. package/lib/oas-types.d.ts.map +1 -0
  164. package/lib/oas-types.js +28 -32
  165. package/lib/oas-types.js.map +1 -0
  166. package/lib/ref-utils.d.ts +5 -2
  167. package/lib/ref-utils.d.ts.map +1 -0
  168. package/lib/ref-utils.js +30 -33
  169. package/lib/ref-utils.js.map +1 -0
  170. package/lib/resolve.d.ts +7 -9
  171. package/lib/resolve.d.ts.map +1 -0
  172. package/lib/resolve.js +40 -47
  173. package/lib/resolve.js.map +1 -0
  174. package/lib/rules/ajv.d.ts +4 -3
  175. package/lib/rules/ajv.d.ts.map +1 -0
  176. package/lib/rules/ajv.js +7 -10
  177. package/lib/rules/ajv.js.map +1 -0
  178. package/lib/rules/arazzo/criteria-unique.d.ts +2 -1
  179. package/lib/rules/arazzo/criteria-unique.d.ts.map +1 -0
  180. package/lib/rules/arazzo/criteria-unique.js +2 -5
  181. package/lib/rules/arazzo/criteria-unique.js.map +1 -0
  182. package/lib/rules/arazzo/index.d.ts +2 -1
  183. package/lib/rules/arazzo/index.d.ts.map +1 -0
  184. package/lib/rules/arazzo/index.js +39 -35
  185. package/lib/rules/arazzo/index.js.map +1 -0
  186. package/lib/rules/arazzo/parameters-unique.d.ts +2 -1
  187. package/lib/rules/arazzo/parameters-unique.d.ts.map +1 -0
  188. package/lib/rules/arazzo/parameters-unique.js +2 -5
  189. package/lib/rules/arazzo/parameters-unique.js.map +1 -0
  190. package/lib/rules/arazzo/requestBody-replacements-unique.d.ts +2 -1
  191. package/lib/rules/arazzo/requestBody-replacements-unique.d.ts.map +1 -0
  192. package/lib/rules/arazzo/requestBody-replacements-unique.js +2 -5
  193. package/lib/rules/arazzo/requestBody-replacements-unique.js.map +1 -0
  194. package/lib/rules/arazzo/sourceDescription-type.d.ts +2 -1
  195. package/lib/rules/arazzo/sourceDescription-type.d.ts.map +1 -0
  196. package/lib/rules/arazzo/sourceDescription-type.js +2 -5
  197. package/lib/rules/arazzo/sourceDescription-type.js.map +1 -0
  198. package/lib/rules/arazzo/sourceDescriptions-name-unique.d.ts +2 -1
  199. package/lib/rules/arazzo/sourceDescriptions-name-unique.d.ts.map +1 -0
  200. package/lib/rules/arazzo/sourceDescriptions-name-unique.js +2 -5
  201. package/lib/rules/arazzo/sourceDescriptions-name-unique.js.map +1 -0
  202. package/lib/rules/arazzo/sourceDescriptions-not-empty.d.ts +2 -1
  203. package/lib/rules/arazzo/sourceDescriptions-not-empty.d.ts.map +1 -0
  204. package/lib/rules/arazzo/sourceDescriptions-not-empty.js +2 -5
  205. package/lib/rules/arazzo/sourceDescriptions-not-empty.js.map +1 -0
  206. package/lib/rules/arazzo/step-onFailure-unique.d.ts +2 -1
  207. package/lib/rules/arazzo/step-onFailure-unique.d.ts.map +1 -0
  208. package/lib/rules/arazzo/step-onFailure-unique.js +2 -5
  209. package/lib/rules/arazzo/step-onFailure-unique.js.map +1 -0
  210. package/lib/rules/arazzo/step-onSuccess-unique.d.ts +2 -1
  211. package/lib/rules/arazzo/step-onSuccess-unique.d.ts.map +1 -0
  212. package/lib/rules/arazzo/step-onSuccess-unique.js +2 -5
  213. package/lib/rules/arazzo/step-onSuccess-unique.js.map +1 -0
  214. package/lib/rules/arazzo/stepId-unique.d.ts +2 -1
  215. package/lib/rules/arazzo/stepId-unique.d.ts.map +1 -0
  216. package/lib/rules/arazzo/stepId-unique.js +2 -5
  217. package/lib/rules/arazzo/stepId-unique.js.map +1 -0
  218. package/lib/rules/arazzo/workflow-dependsOn.d.ts +2 -1
  219. package/lib/rules/arazzo/workflow-dependsOn.d.ts.map +1 -0
  220. package/lib/rules/arazzo/workflow-dependsOn.js +2 -5
  221. package/lib/rules/arazzo/workflow-dependsOn.js.map +1 -0
  222. package/lib/rules/arazzo/workflowId-unique.d.ts +2 -1
  223. package/lib/rules/arazzo/workflowId-unique.d.ts.map +1 -0
  224. package/lib/rules/arazzo/workflowId-unique.js +2 -5
  225. package/lib/rules/arazzo/workflowId-unique.js.map +1 -0
  226. package/lib/rules/async2/channels-kebab-case.d.ts +2 -1
  227. package/lib/rules/async2/channels-kebab-case.d.ts.map +1 -0
  228. package/lib/rules/async2/channels-kebab-case.js +2 -5
  229. package/lib/rules/async2/channels-kebab-case.js.map +1 -0
  230. package/lib/rules/async2/index.d.ts +2 -1
  231. package/lib/rules/async2/index.d.ts.map +1 -0
  232. package/lib/rules/async2/index.js +21 -26
  233. package/lib/rules/async2/index.js.map +1 -0
  234. package/lib/rules/async2/no-channel-trailing-slash.d.ts +2 -1
  235. package/lib/rules/async2/no-channel-trailing-slash.d.ts.map +1 -0
  236. package/lib/rules/async2/no-channel-trailing-slash.js +2 -5
  237. package/lib/rules/async2/no-channel-trailing-slash.js.map +1 -0
  238. package/lib/rules/async3/channels-kebab-case.d.ts +2 -1
  239. package/lib/rules/async3/channels-kebab-case.d.ts.map +1 -0
  240. package/lib/rules/async3/channels-kebab-case.js +2 -5
  241. package/lib/rules/async3/channels-kebab-case.js.map +1 -0
  242. package/lib/rules/async3/index.d.ts +2 -1
  243. package/lib/rules/async3/index.d.ts.map +1 -0
  244. package/lib/rules/async3/index.js +21 -26
  245. package/lib/rules/async3/index.js.map +1 -0
  246. package/lib/rules/async3/no-channel-trailing-slash.d.ts +2 -1
  247. package/lib/rules/async3/no-channel-trailing-slash.d.ts.map +1 -0
  248. package/lib/rules/async3/no-channel-trailing-slash.js +3 -6
  249. package/lib/rules/async3/no-channel-trailing-slash.js.map +1 -0
  250. package/lib/rules/common/assertions/asserts.d.ts +3 -3
  251. package/lib/rules/common/assertions/asserts.d.ts.map +1 -0
  252. package/lib/rules/common/assertions/asserts.js +35 -51
  253. package/lib/rules/common/assertions/asserts.js.map +1 -0
  254. package/lib/rules/common/assertions/index.d.ts +4 -3
  255. package/lib/rules/common/assertions/index.d.ts.map +1 -0
  256. package/lib/rules/common/assertions/index.js +7 -10
  257. package/lib/rules/common/assertions/index.js.map +1 -0
  258. package/lib/rules/common/assertions/utils.d.ts +5 -4
  259. package/lib/rules/common/assertions/utils.d.ts.map +1 -0
  260. package/lib/rules/common/assertions/utils.js +21 -29
  261. package/lib/rules/common/assertions/utils.js.map +1 -0
  262. package/lib/rules/common/info-contact.d.ts +2 -1
  263. package/lib/rules/common/info-contact.d.ts.map +1 -0
  264. package/lib/rules/common/info-contact.js +4 -7
  265. package/lib/rules/common/info-contact.js.map +1 -0
  266. package/lib/rules/common/info-license-strict.d.ts +2 -1
  267. package/lib/rules/common/info-license-strict.d.ts.map +1 -0
  268. package/lib/rules/common/info-license-strict.js +7 -10
  269. package/lib/rules/common/info-license-strict.js.map +1 -0
  270. package/lib/rules/common/info-license-url.d.ts +2 -1
  271. package/lib/rules/common/info-license-url.d.ts.map +1 -0
  272. package/lib/rules/common/info-license-url.js +4 -7
  273. package/lib/rules/common/info-license-url.js.map +1 -0
  274. package/lib/rules/common/info-license.d.ts +2 -1
  275. package/lib/rules/common/info-license.d.ts.map +1 -0
  276. package/lib/rules/common/info-license.js +4 -7
  277. package/lib/rules/common/info-license.js.map +1 -0
  278. package/lib/rules/common/no-ambiguous-paths.d.ts +2 -1
  279. package/lib/rules/common/no-ambiguous-paths.d.ts.map +1 -0
  280. package/lib/rules/common/no-ambiguous-paths.js +2 -5
  281. package/lib/rules/common/no-ambiguous-paths.js.map +1 -0
  282. package/lib/rules/common/no-enum-type-mismatch.d.ts +2 -1
  283. package/lib/rules/common/no-enum-type-mismatch.d.ts.map +1 -0
  284. package/lib/rules/common/no-enum-type-mismatch.js +6 -9
  285. package/lib/rules/common/no-enum-type-mismatch.js.map +1 -0
  286. package/lib/rules/common/no-http-verbs-in-paths.d.ts +2 -1
  287. package/lib/rules/common/no-http-verbs-in-paths.d.ts.map +1 -0
  288. package/lib/rules/common/no-http-verbs-in-paths.js +5 -8
  289. package/lib/rules/common/no-http-verbs-in-paths.js.map +1 -0
  290. package/lib/rules/common/no-identical-paths.d.ts +2 -1
  291. package/lib/rules/common/no-identical-paths.d.ts.map +1 -0
  292. package/lib/rules/common/no-identical-paths.js +2 -5
  293. package/lib/rules/common/no-identical-paths.js.map +1 -0
  294. package/lib/rules/common/no-invalid-parameter-examples.d.ts +1 -0
  295. package/lib/rules/common/no-invalid-parameter-examples.d.ts.map +1 -0
  296. package/lib/rules/common/no-invalid-parameter-examples.js +5 -9
  297. package/lib/rules/common/no-invalid-parameter-examples.js.map +1 -0
  298. package/lib/rules/common/no-invalid-schema-examples.d.ts +2 -1
  299. package/lib/rules/common/no-invalid-schema-examples.d.ts.map +1 -0
  300. package/lib/rules/common/no-invalid-schema-examples.js +5 -9
  301. package/lib/rules/common/no-invalid-schema-examples.js.map +1 -0
  302. package/lib/rules/common/no-path-trailing-slash.d.ts +2 -1
  303. package/lib/rules/common/no-path-trailing-slash.d.ts.map +1 -0
  304. package/lib/rules/common/no-path-trailing-slash.js +2 -5
  305. package/lib/rules/common/no-path-trailing-slash.js.map +1 -0
  306. package/lib/rules/common/no-required-schema-properties-undefined.d.ts +2 -1
  307. package/lib/rules/common/no-required-schema-properties-undefined.d.ts.map +1 -0
  308. package/lib/rules/common/no-required-schema-properties-undefined.js +6 -8
  309. package/lib/rules/common/no-required-schema-properties-undefined.js.map +1 -0
  310. package/lib/rules/common/no-schema-type-mismatch.d.ts +2 -1
  311. package/lib/rules/common/no-schema-type-mismatch.d.ts.map +1 -0
  312. package/lib/rules/common/no-schema-type-mismatch.js +2 -5
  313. package/lib/rules/common/no-schema-type-mismatch.js.map +1 -0
  314. package/lib/rules/common/operation-2xx-response.d.ts +2 -1
  315. package/lib/rules/common/operation-2xx-response.d.ts.map +1 -0
  316. package/lib/rules/common/operation-2xx-response.js +5 -8
  317. package/lib/rules/common/operation-2xx-response.js.map +1 -0
  318. package/lib/rules/common/operation-4xx-response.d.ts +2 -1
  319. package/lib/rules/common/operation-4xx-response.d.ts.map +1 -0
  320. package/lib/rules/common/operation-4xx-response.js +5 -8
  321. package/lib/rules/common/operation-4xx-response.js.map +1 -0
  322. package/lib/rules/common/operation-description.d.ts +2 -1
  323. package/lib/rules/common/operation-description.d.ts.map +1 -0
  324. package/lib/rules/common/operation-description.js +4 -7
  325. package/lib/rules/common/operation-description.js.map +1 -0
  326. package/lib/rules/common/operation-operationId-unique.d.ts +2 -1
  327. package/lib/rules/common/operation-operationId-unique.d.ts.map +1 -0
  328. package/lib/rules/common/operation-operationId-unique.js +2 -5
  329. package/lib/rules/common/operation-operationId-unique.js.map +1 -0
  330. package/lib/rules/common/operation-operationId-url-safe.d.ts +2 -1
  331. package/lib/rules/common/operation-operationId-url-safe.d.ts.map +1 -0
  332. package/lib/rules/common/operation-operationId-url-safe.js +2 -5
  333. package/lib/rules/common/operation-operationId-url-safe.js.map +1 -0
  334. package/lib/rules/common/operation-operationId.d.ts +2 -1
  335. package/lib/rules/common/operation-operationId.d.ts.map +1 -0
  336. package/lib/rules/common/operation-operationId.js +4 -7
  337. package/lib/rules/common/operation-operationId.js.map +1 -0
  338. package/lib/rules/common/operation-parameters-unique.d.ts +2 -1
  339. package/lib/rules/common/operation-parameters-unique.d.ts.map +1 -0
  340. package/lib/rules/common/operation-parameters-unique.js +2 -5
  341. package/lib/rules/common/operation-parameters-unique.js.map +1 -0
  342. package/lib/rules/common/operation-singular-tag.d.ts +2 -1
  343. package/lib/rules/common/operation-singular-tag.d.ts.map +1 -0
  344. package/lib/rules/common/operation-singular-tag.js +2 -5
  345. package/lib/rules/common/operation-singular-tag.js.map +1 -0
  346. package/lib/rules/common/operation-summary.d.ts +2 -1
  347. package/lib/rules/common/operation-summary.d.ts.map +1 -0
  348. package/lib/rules/common/operation-summary.js +4 -7
  349. package/lib/rules/common/operation-summary.js.map +1 -0
  350. package/lib/rules/common/operation-tag-defined.d.ts +2 -1
  351. package/lib/rules/common/operation-tag-defined.d.ts.map +1 -0
  352. package/lib/rules/common/operation-tag-defined.js +2 -5
  353. package/lib/rules/common/operation-tag-defined.js.map +1 -0
  354. package/lib/rules/common/parameter-description.d.ts +2 -1
  355. package/lib/rules/common/parameter-description.d.ts.map +1 -0
  356. package/lib/rules/common/parameter-description.js +2 -5
  357. package/lib/rules/common/parameter-description.js.map +1 -0
  358. package/lib/rules/common/path-declaration-must-exist.d.ts +2 -1
  359. package/lib/rules/common/path-declaration-must-exist.d.ts.map +1 -0
  360. package/lib/rules/common/path-declaration-must-exist.js +2 -5
  361. package/lib/rules/common/path-declaration-must-exist.js.map +1 -0
  362. package/lib/rules/common/path-excludes-patterns.d.ts +2 -1
  363. package/lib/rules/common/path-excludes-patterns.d.ts.map +1 -0
  364. package/lib/rules/common/path-excludes-patterns.js +2 -5
  365. package/lib/rules/common/path-excludes-patterns.js.map +1 -0
  366. package/lib/rules/common/path-http-verbs-order.d.ts +2 -1
  367. package/lib/rules/common/path-http-verbs-order.d.ts.map +1 -0
  368. package/lib/rules/common/path-http-verbs-order.js +2 -5
  369. package/lib/rules/common/path-http-verbs-order.js.map +1 -0
  370. package/lib/rules/common/path-not-include-query.d.ts +2 -1
  371. package/lib/rules/common/path-not-include-query.d.ts.map +1 -0
  372. package/lib/rules/common/path-not-include-query.js +2 -5
  373. package/lib/rules/common/path-not-include-query.js.map +1 -0
  374. package/lib/rules/common/path-params-defined.d.ts +2 -1
  375. package/lib/rules/common/path-params-defined.d.ts.map +1 -0
  376. package/lib/rules/common/path-params-defined.js +2 -5
  377. package/lib/rules/common/path-params-defined.js.map +1 -0
  378. package/lib/rules/common/path-segment-plural.d.ts +2 -1
  379. package/lib/rules/common/path-segment-plural.d.ts.map +1 -0
  380. package/lib/rules/common/path-segment-plural.js +6 -9
  381. package/lib/rules/common/path-segment-plural.js.map +1 -0
  382. package/lib/rules/common/paths-kebab-case.d.ts +2 -1
  383. package/lib/rules/common/paths-kebab-case.d.ts.map +1 -0
  384. package/lib/rules/common/paths-kebab-case.js +2 -5
  385. package/lib/rules/common/paths-kebab-case.js.map +1 -0
  386. package/lib/rules/common/required-string-property-missing-min-length.d.ts +2 -1
  387. package/lib/rules/common/required-string-property-missing-min-length.d.ts.map +1 -0
  388. package/lib/rules/common/required-string-property-missing-min-length.js +2 -5
  389. package/lib/rules/common/required-string-property-missing-min-length.js.map +1 -0
  390. package/lib/rules/common/response-contains-header.d.ts +2 -1
  391. package/lib/rules/common/response-contains-header.d.ts.map +1 -0
  392. package/lib/rules/common/response-contains-header.js +5 -8
  393. package/lib/rules/common/response-contains-header.js.map +1 -0
  394. package/lib/rules/common/scalar-property-missing-example.d.ts +2 -1
  395. package/lib/rules/common/scalar-property-missing-example.d.ts.map +1 -0
  396. package/lib/rules/common/scalar-property-missing-example.js +6 -8
  397. package/lib/rules/common/scalar-property-missing-example.js.map +1 -0
  398. package/lib/rules/common/security-defined.d.ts +2 -1
  399. package/lib/rules/common/security-defined.d.ts.map +1 -0
  400. package/lib/rules/common/security-defined.js +2 -5
  401. package/lib/rules/common/security-defined.js.map +1 -0
  402. package/lib/rules/common/spec-strict-refs.d.ts +2 -1
  403. package/lib/rules/common/spec-strict-refs.d.ts.map +1 -0
  404. package/lib/rules/common/spec-strict-refs.js +4 -7
  405. package/lib/rules/common/spec-strict-refs.js.map +1 -0
  406. package/lib/rules/common/struct.d.ts +2 -1
  407. package/lib/rules/common/struct.d.ts.map +1 -0
  408. package/lib/rules/common/struct.js +19 -22
  409. package/lib/rules/common/struct.js.map +1 -0
  410. package/lib/rules/common/tag-description.d.ts +2 -1
  411. package/lib/rules/common/tag-description.d.ts.map +1 -0
  412. package/lib/rules/common/tag-description.js +4 -7
  413. package/lib/rules/common/tag-description.js.map +1 -0
  414. package/lib/rules/common/tags-alphabetical.d.ts +2 -1
  415. package/lib/rules/common/tags-alphabetical.d.ts.map +1 -0
  416. package/lib/rules/common/tags-alphabetical.js +2 -5
  417. package/lib/rules/common/tags-alphabetical.js.map +1 -0
  418. package/lib/rules/no-unresolved-refs.d.ts +4 -3
  419. package/lib/rules/no-unresolved-refs.d.ts.map +1 -0
  420. package/lib/rules/no-unresolved-refs.js +5 -9
  421. package/lib/rules/no-unresolved-refs.js.map +1 -0
  422. package/lib/rules/oas2/boolean-parameter-prefixes.d.ts +2 -1
  423. package/lib/rules/oas2/boolean-parameter-prefixes.d.ts.map +1 -0
  424. package/lib/rules/oas2/boolean-parameter-prefixes.js +2 -5
  425. package/lib/rules/oas2/boolean-parameter-prefixes.js.map +1 -0
  426. package/lib/rules/oas2/index.d.ts +2 -1
  427. package/lib/rules/oas2/index.d.ts.map +1 -0
  428. package/lib/rules/oas2/index.js +94 -99
  429. package/lib/rules/oas2/index.js.map +1 -0
  430. package/lib/rules/oas2/request-mime-type.d.ts +2 -1
  431. package/lib/rules/oas2/request-mime-type.d.ts.map +1 -0
  432. package/lib/rules/oas2/request-mime-type.js +5 -8
  433. package/lib/rules/oas2/request-mime-type.js.map +1 -0
  434. package/lib/rules/oas2/response-contains-property.d.ts +2 -1
  435. package/lib/rules/oas2/response-contains-property.d.ts.map +1 -0
  436. package/lib/rules/oas2/response-contains-property.js +5 -8
  437. package/lib/rules/oas2/response-contains-property.js.map +1 -0
  438. package/lib/rules/oas2/response-mime-type.d.ts +2 -1
  439. package/lib/rules/oas2/response-mime-type.d.ts.map +1 -0
  440. package/lib/rules/oas2/response-mime-type.js +5 -8
  441. package/lib/rules/oas2/response-mime-type.js.map +1 -0
  442. package/lib/rules/oas3/array-parameter-serialization.d.ts +2 -1
  443. package/lib/rules/oas3/array-parameter-serialization.d.ts.map +1 -0
  444. package/lib/rules/oas3/array-parameter-serialization.js +4 -7
  445. package/lib/rules/oas3/array-parameter-serialization.js.map +1 -0
  446. package/lib/rules/oas3/boolean-parameter-prefixes.d.ts +2 -1
  447. package/lib/rules/oas3/boolean-parameter-prefixes.d.ts.map +1 -0
  448. package/lib/rules/oas3/boolean-parameter-prefixes.js +2 -5
  449. package/lib/rules/oas3/boolean-parameter-prefixes.js.map +1 -0
  450. package/lib/rules/oas3/component-name-unique.d.ts +2 -1
  451. package/lib/rules/oas3/component-name-unique.d.ts.map +1 -0
  452. package/lib/rules/oas3/component-name-unique.js +2 -5
  453. package/lib/rules/oas3/component-name-unique.js.map +1 -0
  454. package/lib/rules/oas3/index.d.ts +2 -1
  455. package/lib/rules/oas3/index.d.ts.map +1 -0
  456. package/lib/rules/oas3/index.js +118 -123
  457. package/lib/rules/oas3/index.js.map +1 -0
  458. package/lib/rules/oas3/no-empty-servers.d.ts +2 -1
  459. package/lib/rules/oas3/no-empty-servers.d.ts.map +1 -0
  460. package/lib/rules/oas3/no-empty-servers.js +2 -5
  461. package/lib/rules/oas3/no-empty-servers.js.map +1 -0
  462. package/lib/rules/oas3/no-example-value-and-externalValue.d.ts +2 -1
  463. package/lib/rules/oas3/no-example-value-and-externalValue.d.ts.map +1 -0
  464. package/lib/rules/oas3/no-example-value-and-externalValue.js +2 -5
  465. package/lib/rules/oas3/no-example-value-and-externalValue.js.map +1 -0
  466. package/lib/rules/oas3/no-invalid-media-type-examples.d.ts +2 -1
  467. package/lib/rules/oas3/no-invalid-media-type-examples.d.ts.map +1 -0
  468. package/lib/rules/oas3/no-invalid-media-type-examples.js +6 -10
  469. package/lib/rules/oas3/no-invalid-media-type-examples.js.map +1 -0
  470. package/lib/rules/oas3/no-server-example.com.d.ts +2 -1
  471. package/lib/rules/oas3/no-server-example.com.d.ts.map +1 -0
  472. package/lib/rules/oas3/no-server-example.com.js +2 -5
  473. package/lib/rules/oas3/no-server-example.com.js.map +1 -0
  474. package/lib/rules/oas3/no-server-trailing-slash.d.ts +2 -1
  475. package/lib/rules/oas3/no-server-trailing-slash.d.ts.map +1 -0
  476. package/lib/rules/oas3/no-server-trailing-slash.js +2 -5
  477. package/lib/rules/oas3/no-server-trailing-slash.js.map +1 -0
  478. package/lib/rules/oas3/no-server-variables-empty-enum.d.ts +2 -1
  479. package/lib/rules/oas3/no-server-variables-empty-enum.d.ts.map +1 -0
  480. package/lib/rules/oas3/no-server-variables-empty-enum.js +2 -5
  481. package/lib/rules/oas3/no-server-variables-empty-enum.js.map +1 -0
  482. package/lib/rules/oas3/no-undefined-server-variable.d.ts +2 -1
  483. package/lib/rules/oas3/no-undefined-server-variable.d.ts.map +1 -0
  484. package/lib/rules/oas3/no-undefined-server-variable.js +3 -6
  485. package/lib/rules/oas3/no-undefined-server-variable.js.map +1 -0
  486. package/lib/rules/oas3/no-unused-components.d.ts +2 -1
  487. package/lib/rules/oas3/no-unused-components.d.ts.map +1 -0
  488. package/lib/rules/oas3/no-unused-components.js +2 -5
  489. package/lib/rules/oas3/no-unused-components.js.map +1 -0
  490. package/lib/rules/oas3/operation-4xx-problem-details-rfc7807.d.ts +2 -1
  491. package/lib/rules/oas3/operation-4xx-problem-details-rfc7807.d.ts.map +1 -0
  492. package/lib/rules/oas3/operation-4xx-problem-details-rfc7807.js +6 -9
  493. package/lib/rules/oas3/operation-4xx-problem-details-rfc7807.js.map +1 -0
  494. package/lib/rules/oas3/request-mime-type.d.ts +2 -1
  495. package/lib/rules/oas3/request-mime-type.d.ts.map +1 -0
  496. package/lib/rules/oas3/request-mime-type.js +6 -9
  497. package/lib/rules/oas3/request-mime-type.js.map +1 -0
  498. package/lib/rules/oas3/response-contains-property.d.ts +2 -1
  499. package/lib/rules/oas3/response-contains-property.d.ts.map +1 -0
  500. package/lib/rules/oas3/response-contains-property.js +5 -8
  501. package/lib/rules/oas3/response-contains-property.js.map +1 -0
  502. package/lib/rules/oas3/response-mime-type.d.ts +2 -1
  503. package/lib/rules/oas3/response-mime-type.d.ts.map +1 -0
  504. package/lib/rules/oas3/response-mime-type.js +6 -9
  505. package/lib/rules/oas3/response-mime-type.js.map +1 -0
  506. package/lib/rules/oas3/spec-components-invalid-map-name.d.ts +2 -1
  507. package/lib/rules/oas3/spec-components-invalid-map-name.d.ts.map +1 -0
  508. package/lib/rules/oas3/spec-components-invalid-map-name.js +2 -5
  509. package/lib/rules/oas3/spec-components-invalid-map-name.js.map +1 -0
  510. package/lib/rules/other/stats.d.ts +4 -3
  511. package/lib/rules/other/stats.d.ts.map +1 -0
  512. package/lib/rules/other/stats.js +2 -5
  513. package/lib/rules/other/stats.js.map +1 -0
  514. package/lib/rules/overlay1/index.d.ts +2 -1
  515. package/lib/rules/overlay1/index.d.ts.map +1 -0
  516. package/lib/rules/overlay1/index.js +9 -11
  517. package/lib/rules/overlay1/index.js.map +1 -0
  518. package/lib/rules/respect/no-criteria-xpath.d.ts +2 -1
  519. package/lib/rules/respect/no-criteria-xpath.d.ts.map +1 -0
  520. package/lib/rules/respect/no-criteria-xpath.js +2 -5
  521. package/lib/rules/respect/no-criteria-xpath.js.map +1 -0
  522. package/lib/rules/respect/no-x-security-scheme-name-in-workflow.d.ts +3 -0
  523. package/lib/rules/respect/no-x-security-scheme-name-in-workflow.d.ts.map +1 -0
  524. package/lib/rules/respect/no-x-security-scheme-name-in-workflow.js +21 -0
  525. package/lib/rules/respect/no-x-security-scheme-name-in-workflow.js.map +1 -0
  526. package/lib/rules/respect/no-x-security-scheme-name-without-openapi.d.ts +3 -0
  527. package/lib/rules/respect/no-x-security-scheme-name-without-openapi.d.ts.map +1 -0
  528. package/lib/rules/respect/no-x-security-scheme-name-without-openapi.js +25 -0
  529. package/lib/rules/respect/no-x-security-scheme-name-without-openapi.js.map +1 -0
  530. package/lib/rules/respect/respect-supported-versions.d.ts +2 -1
  531. package/lib/rules/respect/respect-supported-versions.d.ts.map +1 -0
  532. package/lib/rules/respect/respect-supported-versions.js +7 -10
  533. package/lib/rules/respect/respect-supported-versions.js.map +1 -0
  534. package/lib/rules/respect/x-security-scheme-required-values.d.ts +3 -0
  535. package/lib/rules/respect/x-security-scheme-required-values.d.ts.map +1 -0
  536. package/lib/rules/respect/x-security-scheme-required-values.js +60 -0
  537. package/lib/rules/respect/x-security-scheme-required-values.js.map +1 -0
  538. package/lib/rules/utils.d.ts +4 -4
  539. package/lib/rules/utils.d.ts.map +1 -0
  540. package/lib/rules/utils.js +20 -43
  541. package/lib/rules/utils.js.map +1 -0
  542. package/lib/types/arazzo.d.ts +2 -1
  543. package/lib/types/arazzo.d.ts.map +1 -0
  544. package/lib/types/arazzo.js +40 -23
  545. package/lib/types/arazzo.js.map +1 -0
  546. package/lib/types/asyncapi2.d.ts +2 -1
  547. package/lib/types/asyncapi2.d.ts.map +1 -0
  548. package/lib/types/asyncapi2.js +54 -56
  549. package/lib/types/asyncapi2.js.map +1 -0
  550. package/lib/types/asyncapi3.d.ts +2 -1
  551. package/lib/types/asyncapi3.d.ts.map +1 -0
  552. package/lib/types/asyncapi3.js +41 -43
  553. package/lib/types/asyncapi3.js.map +1 -0
  554. package/lib/types/index.d.ts +2 -0
  555. package/lib/types/index.d.ts.map +1 -0
  556. package/lib/types/index.js +7 -13
  557. package/lib/types/index.js.map +1 -0
  558. package/lib/types/json-schema-adapter.d.ts +2 -1
  559. package/lib/types/json-schema-adapter.d.ts.map +1 -0
  560. package/lib/types/json-schema-adapter.js +15 -17
  561. package/lib/types/json-schema-adapter.js.map +1 -0
  562. package/lib/types/oas2.d.ts +85 -3
  563. package/lib/types/oas2.d.ts.map +1 -0
  564. package/lib/types/oas2.js +17 -19
  565. package/lib/types/oas2.js.map +1 -0
  566. package/lib/types/oas3.d.ts +159 -3
  567. package/lib/types/oas3.d.ts.map +1 -0
  568. package/lib/types/oas3.js +44 -46
  569. package/lib/types/oas3.js.map +1 -0
  570. package/lib/types/oas3_1.d.ts +162 -3
  571. package/lib/types/oas3_1.d.ts.map +1 -0
  572. package/lib/types/oas3_1.js +19 -21
  573. package/lib/types/oas3_1.js.map +1 -0
  574. package/lib/types/overlay.d.ts +2 -1
  575. package/lib/types/overlay.d.ts.map +1 -0
  576. package/lib/types/overlay.js +4 -6
  577. package/lib/types/overlay.js.map +1 -0
  578. package/lib/types/redocly-yaml.d.ts +6 -10
  579. package/lib/types/redocly-yaml.d.ts.map +1 -0
  580. package/lib/types/redocly-yaml.js +74 -813
  581. package/lib/types/redocly-yaml.js.map +1 -0
  582. package/lib/typings/arazzo.d.ts +41 -0
  583. package/lib/typings/arazzo.d.ts.map +1 -0
  584. package/lib/typings/arazzo.js +3 -5
  585. package/lib/typings/arazzo.js.map +1 -0
  586. package/lib/typings/asyncapi.d.ts +1 -0
  587. package/lib/typings/asyncapi.d.ts.map +1 -0
  588. package/lib/typings/asyncapi.js +2 -2
  589. package/lib/typings/asyncapi.js.map +1 -0
  590. package/lib/typings/asyncapi3.d.ts +1 -0
  591. package/lib/typings/asyncapi3.d.ts.map +1 -0
  592. package/lib/typings/asyncapi3.js +2 -2
  593. package/lib/typings/asyncapi3.js.map +1 -0
  594. package/lib/typings/common.d.ts +1 -0
  595. package/lib/typings/common.d.ts.map +1 -0
  596. package/lib/typings/common.js +2 -2
  597. package/lib/typings/common.js.map +1 -0
  598. package/lib/typings/openapi.d.ts +45 -15
  599. package/lib/typings/openapi.d.ts.map +1 -0
  600. package/lib/typings/openapi.js +2 -2
  601. package/lib/typings/openapi.js.map +1 -0
  602. package/lib/typings/overlay.d.ts +1 -0
  603. package/lib/typings/overlay.d.ts.map +1 -0
  604. package/lib/typings/overlay.js +2 -4
  605. package/lib/typings/overlay.js.map +1 -0
  606. package/lib/typings/swagger.d.ts +2 -1
  607. package/lib/typings/swagger.d.ts.map +1 -0
  608. package/lib/typings/swagger.js +2 -2
  609. package/lib/typings/swagger.js.map +1 -0
  610. package/lib/utils/error.d.ts +3 -0
  611. package/lib/utils/error.d.ts.map +1 -0
  612. package/lib/utils/error.js +3 -0
  613. package/lib/utils/error.js.map +1 -0
  614. package/lib/utils.d.ts +6 -11
  615. package/lib/utils.d.ts.map +1 -0
  616. package/lib/utils.js +50 -123
  617. package/lib/utils.js.map +1 -0
  618. package/lib/visitors.d.ts +16 -15
  619. package/lib/visitors.d.ts.map +1 -0
  620. package/lib/visitors.js +4 -6
  621. package/lib/visitors.js.map +1 -0
  622. package/lib/walk.d.ts +9 -8
  623. package/lib/walk.d.ts.map +1 -0
  624. package/lib/walk.js +31 -28
  625. package/lib/walk.js.map +1 -0
  626. package/package.json +31 -10
  627. package/CHANGELOG.md +0 -561
  628. package/__tests__/utils.ts +0 -92
  629. package/lib/benchmark/benches/lint-with-many-rules.bench.d.ts +0 -4
  630. package/lib/benchmark/benches/lint-with-many-rules.bench.js +0 -38
  631. package/lib/benchmark/benches/lint-with-nested-rule.bench.d.ts +0 -4
  632. package/lib/benchmark/benches/lint-with-nested-rule.bench.js +0 -44
  633. package/lib/benchmark/benches/lint-with-no-rules.bench.d.ts +0 -4
  634. package/lib/benchmark/benches/lint-with-no-rules.bench.js +0 -25
  635. package/lib/benchmark/benches/lint-with-top-level-rule-report.bench.d.ts +0 -4
  636. package/lib/benchmark/benches/lint-with-top-level-rule-report.bench.js +0 -37
  637. package/lib/benchmark/benches/lint-with-top-level-rule.bench.d.ts +0 -4
  638. package/lib/benchmark/benches/lint-with-top-level-rule.bench.js +0 -36
  639. package/lib/benchmark/benches/recommended-oas3.bench.d.ts +0 -3
  640. package/lib/benchmark/benches/recommended-oas3.bench.js +0 -21
  641. package/lib/benchmark/benches/resolve-with-no-external.bench.d.ts +0 -3
  642. package/lib/benchmark/benches/resolve-with-no-external.bench.js +0 -22
  643. package/lib/benchmark/utils.d.ts +0 -6
  644. package/lib/benchmark/utils.js +0 -34
  645. package/lib/decorators/common/registry-dependencies.d.ts +0 -2
  646. package/lib/decorators/common/registry-dependencies.js +0 -24
  647. package/lib/output.d.ts +0 -3
  648. package/lib/output.js +0 -9
  649. package/lib/redocly/domains.d.ts +0 -14
  650. package/lib/redocly/domains.js +0 -41
  651. package/lib/redocly/index.d.ts +0 -30
  652. package/lib/redocly/index.js +0 -131
  653. package/lib/redocly/redocly-client-types.d.ts +0 -8
  654. package/lib/redocly/redocly-client-types.js +0 -2
  655. package/lib/redocly/registry-api-types.d.ts +0 -29
  656. package/lib/redocly/registry-api-types.js +0 -2
  657. package/lib/redocly/registry-api.d.ts +0 -17
  658. package/lib/redocly/registry-api.js +0 -100
  659. package/src/__tests__/__snapshots__/bundle.test.ts.snap +0 -461
  660. package/src/__tests__/bundle.test.ts +0 -478
  661. package/src/__tests__/codeframes.test.ts +0 -530
  662. package/src/__tests__/fixtures/.redocly.lint-ignore.yaml +0 -5
  663. package/src/__tests__/fixtures/extension.js +0 -24
  664. package/src/__tests__/fixtures/lint/openapi.yaml +0 -10
  665. package/src/__tests__/fixtures/redocly.yaml +0 -2
  666. package/src/__tests__/fixtures/refs/definitions.yaml +0 -3
  667. package/src/__tests__/fixtures/refs/examples.yaml +0 -8
  668. package/src/__tests__/fixtures/refs/external-request-body.yaml +0 -13
  669. package/src/__tests__/fixtures/refs/externalref.yaml +0 -35
  670. package/src/__tests__/fixtures/refs/hosted.yaml +0 -35
  671. package/src/__tests__/fixtures/refs/openapi-with-external-refs-conflicting-names.yaml +0 -21
  672. package/src/__tests__/fixtures/refs/openapi-with-external-refs.yaml +0 -33
  673. package/src/__tests__/fixtures/refs/openapi-with-special-names-in-props.yaml +0 -19
  674. package/src/__tests__/fixtures/refs/openapi-with-url-refs.yaml +0 -18
  675. package/src/__tests__/fixtures/refs/param-b.yaml +0 -1
  676. package/src/__tests__/fixtures/refs/param-c.yaml +0 -1
  677. package/src/__tests__/fixtures/refs/rename.yaml +0 -1
  678. package/src/__tests__/fixtures/refs/requestBody.yaml +0 -9
  679. package/src/__tests__/fixtures/refs/schema-a.yaml +0 -1
  680. package/src/__tests__/fixtures/refs/simple.yaml +0 -1
  681. package/src/__tests__/fixtures/refs/vendor.schema.yaml +0 -20
  682. package/src/__tests__/fixtures/resolve/External.yaml +0 -10
  683. package/src/__tests__/fixtures/resolve/External2.yaml +0 -4
  684. package/src/__tests__/fixtures/resolve/description.md +0 -3
  685. package/src/__tests__/fixtures/resolve/externalInfo.yaml +0 -4
  686. package/src/__tests__/fixtures/resolve/externalLicense.yaml +0 -1
  687. package/src/__tests__/fixtures/resolve/openapi-with-back.yaml +0 -13
  688. package/src/__tests__/fixtures/resolve/openapi-with-md-description.yaml +0 -5
  689. package/src/__tests__/fixtures/resolve/openapi.yaml +0 -28
  690. package/src/__tests__/fixtures/resolve/schemas/type-a.yaml +0 -10
  691. package/src/__tests__/fixtures/resolve/schemas/type-b.yaml +0 -6
  692. package/src/__tests__/fixtures/resolve/transitive/a.yaml +0 -1
  693. package/src/__tests__/fixtures/resolve/transitive/components.yaml +0 -5
  694. package/src/__tests__/fixtures/resolve/transitive/schemas.yaml +0 -3
  695. package/src/__tests__/format.test.ts +0 -147
  696. package/src/__tests__/js-yaml.test.ts +0 -73
  697. package/src/__tests__/lint.test.ts +0 -1772
  698. package/src/__tests__/logger-browser.test.ts +0 -53
  699. package/src/__tests__/logger.test.ts +0 -47
  700. package/src/__tests__/login.test.ts +0 -17
  701. package/src/__tests__/normalizeVisitors.test.ts +0 -169
  702. package/src/__tests__/output-browser.test.ts +0 -18
  703. package/src/__tests__/output.test.ts +0 -15
  704. package/src/__tests__/ref-utils.test.ts +0 -142
  705. package/src/__tests__/resolve-http.test.ts +0 -77
  706. package/src/__tests__/resolve.test.ts +0 -431
  707. package/src/__tests__/utils-browser.test.ts +0 -11
  708. package/src/__tests__/utils.test.ts +0 -144
  709. package/src/__tests__/walk.test.ts +0 -1596
  710. package/src/benchmark/benches/lint-with-many-rules.bench.ts +0 -41
  711. package/src/benchmark/benches/lint-with-nested-rule.bench.ts +0 -45
  712. package/src/benchmark/benches/lint-with-no-rules.bench.ts +0 -27
  713. package/src/benchmark/benches/lint-with-top-level-rule-report.bench.ts +0 -40
  714. package/src/benchmark/benches/lint-with-top-level-rule.bench.ts +0 -38
  715. package/src/benchmark/benches/rebilly.yaml +0 -32272
  716. package/src/benchmark/benches/recommended-oas3.bench.ts +0 -22
  717. package/src/benchmark/benches/resolve-with-no-external.bench.ts +0 -23
  718. package/src/benchmark/benchmark.js +0 -311
  719. package/src/benchmark/colors.js +0 -29
  720. package/src/benchmark/fork.js +0 -87
  721. package/src/benchmark/utils.ts +0 -37
  722. package/src/bundle.ts +0 -531
  723. package/src/config/__tests__/__snapshots__/config-resolvers.test.ts.snap +0 -485
  724. package/src/config/__tests__/__snapshots__/config.test.ts.snap +0 -232
  725. package/src/config/__tests__/config-resolvers.test.ts +0 -668
  726. package/src/config/__tests__/config.test.ts +0 -356
  727. package/src/config/__tests__/fixtures/ingore-file.ts +0 -8
  728. package/src/config/__tests__/fixtures/load-external.yaml +0 -2
  729. package/src/config/__tests__/fixtures/load-redocly.yaml +0 -2
  730. package/src/config/__tests__/fixtures/plugin-config.yaml +0 -2
  731. package/src/config/__tests__/fixtures/plugin.js +0 -56
  732. package/src/config/__tests__/fixtures/resolve-config/api/nested-config.yaml +0 -11
  733. package/src/config/__tests__/fixtures/resolve-config/api/plugin.js +0 -69
  734. package/src/config/__tests__/fixtures/resolve-config/local-config-with-circular.yaml +0 -7
  735. package/src/config/__tests__/fixtures/resolve-config/local-config-with-commonjs-export-function.yaml +0 -2
  736. package/src/config/__tests__/fixtures/resolve-config/local-config-with-custom-function.yaml +0 -17
  737. package/src/config/__tests__/fixtures/resolve-config/local-config-with-esm.yaml +0 -2
  738. package/src/config/__tests__/fixtures/resolve-config/local-config-with-file.yaml +0 -18
  739. package/src/config/__tests__/fixtures/resolve-config/local-config-with-plugin-init.yaml +0 -2
  740. package/src/config/__tests__/fixtures/resolve-config/local-config-with-realm-plugin.yaml +0 -2
  741. package/src/config/__tests__/fixtures/resolve-config/local-config-with-wrong-custom-function.yaml +0 -15
  742. package/src/config/__tests__/fixtures/resolve-config/local-config.yaml +0 -9
  743. package/src/config/__tests__/fixtures/resolve-config/plugin-esm.mjs +0 -10
  744. package/src/config/__tests__/fixtures/resolve-config/plugin-with-export-function.cjs +0 -10
  745. package/src/config/__tests__/fixtures/resolve-config/plugin-with-init-logic.js +0 -9
  746. package/src/config/__tests__/fixtures/resolve-config/plugin.js +0 -80
  747. package/src/config/__tests__/fixtures/resolve-config/realm-plugin.js +0 -12
  748. package/src/config/__tests__/fixtures/resolve-refs-in-config/config-with-refs.yaml +0 -8
  749. package/src/config/__tests__/fixtures/resolve-refs-in-config/rules.yaml +0 -2
  750. package/src/config/__tests__/fixtures/resolve-refs-in-config/seo.yaml +0 -1
  751. package/src/config/__tests__/fixtures/resolve-remote-configs/nested-remote-config.yaml +0 -3
  752. package/src/config/__tests__/fixtures/resolve-remote-configs/remote-config.yaml +0 -4
  753. package/src/config/__tests__/load.test.ts +0 -320
  754. package/src/config/__tests__/resolve-plugins.test.ts +0 -30
  755. package/src/config/__tests__/utils.test.ts +0 -225
  756. package/src/config/all.ts +0 -234
  757. package/src/config/builtIn.ts +0 -59
  758. package/src/config/config-resolvers.ts +0 -657
  759. package/src/config/config.ts +0 -423
  760. package/src/config/index.ts +0 -7
  761. package/src/config/load.ts +0 -213
  762. package/src/config/minimal.ts +0 -210
  763. package/src/config/recommended-strict.ts +0 -210
  764. package/src/config/recommended.ts +0 -210
  765. package/src/config/rules.ts +0 -72
  766. package/src/config/spec.ts +0 -33
  767. package/src/config/types.ts +0 -306
  768. package/src/config/utils.ts +0 -439
  769. package/src/decorators/__tests__/filter-in.test.ts +0 -313
  770. package/src/decorators/__tests__/filter-out.test.ts +0 -344
  771. package/src/decorators/__tests__/media-type-examples-override.test.ts +0 -665
  772. package/src/decorators/__tests__/remove-x-internal.test.ts +0 -416
  773. package/src/decorators/__tests__/resources/request.yaml +0 -3
  774. package/src/decorators/__tests__/resources/response.yaml +0 -3
  775. package/src/decorators/arazzo/index.ts +0 -1
  776. package/src/decorators/async2/index.ts +0 -1
  777. package/src/decorators/async3/index.ts +0 -1
  778. package/src/decorators/common/filters/filter-helper.ts +0 -73
  779. package/src/decorators/common/filters/filter-in.ts +0 -19
  780. package/src/decorators/common/filters/filter-out.ts +0 -19
  781. package/src/decorators/common/info-description-override.ts +0 -25
  782. package/src/decorators/common/info-override.ts +0 -15
  783. package/src/decorators/common/media-type-examples-override.ts +0 -80
  784. package/src/decorators/common/operation-description-override.ts +0 -31
  785. package/src/decorators/common/registry-dependencies.ts +0 -25
  786. package/src/decorators/common/remove-x-internal.ts +0 -77
  787. package/src/decorators/common/tag-description-override.ts +0 -26
  788. package/src/decorators/oas2/__tests__/remove-unused-components.test.ts +0 -228
  789. package/src/decorators/oas2/index.ts +0 -21
  790. package/src/decorators/oas2/remove-unused-components.ts +0 -109
  791. package/src/decorators/oas3/__tests__/remove-unused-components.test.ts +0 -313
  792. package/src/decorators/oas3/index.ts +0 -23
  793. package/src/decorators/oas3/remove-unused-components.ts +0 -138
  794. package/src/decorators/overlay1/index.ts +0 -1
  795. package/src/env.ts +0 -5
  796. package/src/format/codeframes.ts +0 -217
  797. package/src/format/format.ts +0 -479
  798. package/src/index.ts +0 -91
  799. package/src/js-yaml/index.ts +0 -16
  800. package/src/lint.ts +0 -190
  801. package/src/logger.ts +0 -36
  802. package/src/oas-types.ts +0 -178
  803. package/src/output.ts +0 -7
  804. package/src/redocly/__tests__/domains.test.ts +0 -52
  805. package/src/redocly/__tests__/redocly-client.test.ts +0 -156
  806. package/src/redocly/domains.ts +0 -48
  807. package/src/redocly/index.ts +0 -177
  808. package/src/redocly/redocly-client-types.ts +0 -10
  809. package/src/redocly/registry-api-types.ts +0 -32
  810. package/src/redocly/registry-api.ts +0 -147
  811. package/src/ref-utils.ts +0 -91
  812. package/src/resolve.ts +0 -461
  813. package/src/rules/__tests__/fixtures/code-sample.php +0 -9
  814. package/src/rules/__tests__/fixtures/invalid-yaml.yaml +0 -1
  815. package/src/rules/__tests__/fixtures/ref.yaml +0 -1
  816. package/src/rules/__tests__/no-unresolved-refs.test.ts +0 -271
  817. package/src/rules/__tests__/utils.test.ts +0 -160
  818. package/src/rules/ajv.ts +0 -105
  819. package/src/rules/arazzo/__tests__/criteria-unique.test.ts +0 -160
  820. package/src/rules/arazzo/__tests__/no-criteria-xpath.test.ts +0 -126
  821. package/src/rules/arazzo/__tests__/parameters-unique.test.ts +0 -113
  822. package/src/rules/arazzo/__tests__/requestBody-replacements-unique.test.ts +0 -108
  823. package/src/rules/arazzo/__tests__/respect-supported-versions.test.ts +0 -116
  824. package/src/rules/arazzo/__tests__/source-description-type.test.ts +0 -78
  825. package/src/rules/arazzo/__tests__/sourceDescription-name-unique.test.ts +0 -78
  826. package/src/rules/arazzo/__tests__/sourceDescriptions-not-empty.test.ts +0 -104
  827. package/src/rules/arazzo/__tests__/step-onFailure-unique.test.ts +0 -110
  828. package/src/rules/arazzo/__tests__/step-onSuccess-unique.test.ts +0 -110
  829. package/src/rules/arazzo/__tests__/stepId-unique.test.ts +0 -94
  830. package/src/rules/arazzo/__tests__/workflow-dependsOn.test.ts +0 -209
  831. package/src/rules/arazzo/__tests__/workflowId-unique.test.ts +0 -88
  832. package/src/rules/arazzo/criteria-unique.ts +0 -70
  833. package/src/rules/arazzo/index.ts +0 -38
  834. package/src/rules/arazzo/parameters-unique.ts +0 -33
  835. package/src/rules/arazzo/requestBody-replacements-unique.ts +0 -33
  836. package/src/rules/arazzo/sourceDescription-type.ts +0 -21
  837. package/src/rules/arazzo/sourceDescriptions-name-unique.ts +0 -23
  838. package/src/rules/arazzo/sourceDescriptions-not-empty.ts +0 -17
  839. package/src/rules/arazzo/step-onFailure-unique.ts +0 -33
  840. package/src/rules/arazzo/step-onSuccess-unique.ts +0 -33
  841. package/src/rules/arazzo/stepId-unique.ts +0 -24
  842. package/src/rules/arazzo/workflow-dependsOn.ts +0 -56
  843. package/src/rules/arazzo/workflowId-unique.ts +0 -21
  844. package/src/rules/async2/__tests__/channels-kebab-case.test.ts +0 -145
  845. package/src/rules/async2/__tests__/no-channel-trailing-slash.test.ts +0 -97
  846. package/src/rules/async2/channels-kebab-case.ts +0 -18
  847. package/src/rules/async2/index.ts +0 -29
  848. package/src/rules/async2/no-channel-trailing-slash.ts +0 -15
  849. package/src/rules/async3/__tests__/channels-kebab-case.test.ts +0 -145
  850. package/src/rules/async3/__tests__/no-channel-trailing-slash.test.ts +0 -96
  851. package/src/rules/async3/channels-kebab-case.ts +0 -19
  852. package/src/rules/async3/index.ts +0 -29
  853. package/src/rules/async3/no-channel-trailing-slash.ts +0 -16
  854. package/src/rules/common/__tests__/info-license-strict.test.ts +0 -141
  855. package/src/rules/common/__tests__/info-license.test.ts +0 -62
  856. package/src/rules/common/__tests__/license-url.test.ts +0 -63
  857. package/src/rules/common/__tests__/no-ambiguous-paths.test.ts +0 -96
  858. package/src/rules/common/__tests__/no-enum-type-mismatch.test.ts +0 -210
  859. package/src/rules/common/__tests__/no-identical-paths.test.ts +0 -58
  860. package/src/rules/common/__tests__/no-invalid-parameter-examples.test.ts +0 -53
  861. package/src/rules/common/__tests__/no-invalid-schema-examples.test.ts +0 -86
  862. package/src/rules/common/__tests__/no-path-trailing-slash.test.ts +0 -126
  863. package/src/rules/common/__tests__/no-required-schema-properties-undefined.test.ts +0 -550
  864. package/src/rules/common/__tests__/no-schema-type-mismatch.test.ts +0 -126
  865. package/src/rules/common/__tests__/operation-2xx-response.test.ts +0 -194
  866. package/src/rules/common/__tests__/operation-4xx-response.test.ts +0 -233
  867. package/src/rules/common/__tests__/operation-operationId-unique.test.ts +0 -76
  868. package/src/rules/common/__tests__/operation-operationId-url-safe.test.ts +0 -45
  869. package/src/rules/common/__tests__/operation-parameters-unique.test.ts +0 -167
  870. package/src/rules/common/__tests__/operation-singular-tag.test.ts +0 -72
  871. package/src/rules/common/__tests__/operation-tag-defined.test.ts +0 -68
  872. package/src/rules/common/__tests__/path-http-verbs-order.test.ts +0 -95
  873. package/src/rules/common/__tests__/path-not-include-query.test.ts +0 -64
  874. package/src/rules/common/__tests__/path-params-defined.test.ts +0 -202
  875. package/src/rules/common/__tests__/paths-kebab-case.test.ts +0 -110
  876. package/src/rules/common/__tests__/scalar-property-missing-example.test.ts +0 -264
  877. package/src/rules/common/__tests__/security-defined.test.ts +0 -284
  878. package/src/rules/common/__tests__/spec-strict-refs.test.ts +0 -69
  879. package/src/rules/common/__tests__/struct.test.ts +0 -657
  880. package/src/rules/common/__tests__/tag-description.test.ts +0 -65
  881. package/src/rules/common/__tests__/tags-alphabetical.test.ts +0 -124
  882. package/src/rules/common/assertions/__tests__/asserts.test.ts +0 -877
  883. package/src/rules/common/assertions/__tests__/index.test.ts +0 -100
  884. package/src/rules/common/assertions/__tests__/utils.test.ts +0 -236
  885. package/src/rules/common/assertions/asserts.ts +0 -365
  886. package/src/rules/common/assertions/index.ts +0 -68
  887. package/src/rules/common/assertions/utils.ts +0 -333
  888. package/src/rules/common/info-contact.ts +0 -16
  889. package/src/rules/common/info-license-strict.ts +0 -24
  890. package/src/rules/common/info-license-url.ts +0 -11
  891. package/src/rules/common/info-license.ts +0 -16
  892. package/src/rules/common/no-ambiguous-paths.ts +0 -50
  893. package/src/rules/common/no-enum-type-mismatch.ts +0 -53
  894. package/src/rules/common/no-http-verbs-in-paths.ts +0 -37
  895. package/src/rules/common/no-identical-paths.ts +0 -24
  896. package/src/rules/common/no-invalid-parameter-examples.ts +0 -37
  897. package/src/rules/common/no-invalid-schema-examples.ts +0 -40
  898. package/src/rules/common/no-path-trailing-slash.ts +0 -15
  899. package/src/rules/common/no-required-schema-properties-undefined.ts +0 -54
  900. package/src/rules/common/no-schema-type-mismatch.ts +0 -24
  901. package/src/rules/common/operation-2xx-response.ts +0 -25
  902. package/src/rules/common/operation-4xx-response.ts +0 -25
  903. package/src/rules/common/operation-description.ts +0 -14
  904. package/src/rules/common/operation-operationId-unique.ts +0 -21
  905. package/src/rules/common/operation-operationId-url-safe.ts +0 -20
  906. package/src/rules/common/operation-operationId.ts +0 -18
  907. package/src/rules/common/operation-parameters-unique.ts +0 -48
  908. package/src/rules/common/operation-singular-tag.ts +0 -17
  909. package/src/rules/common/operation-summary.ts +0 -14
  910. package/src/rules/common/operation-tag-defined.ts +0 -31
  911. package/src/rules/common/parameter-description.ts +0 -22
  912. package/src/rules/common/path-declaration-must-exist.ts +0 -15
  913. package/src/rules/common/path-excludes-patterns.ts +0 -23
  914. package/src/rules/common/path-http-verbs-order.ts +0 -30
  915. package/src/rules/common/path-not-include-query.ts +0 -17
  916. package/src/rules/common/path-params-defined.ts +0 -65
  917. package/src/rules/common/path-segment-plural.ts +0 -33
  918. package/src/rules/common/paths-kebab-case.ts +0 -19
  919. package/src/rules/common/required-string-property-missing-min-length.ts +0 -44
  920. package/src/rules/common/response-contains-header.ts +0 -36
  921. package/src/rules/common/scalar-property-missing-example.ts +0 -59
  922. package/src/rules/common/security-defined.ts +0 -89
  923. package/src/rules/common/spec-strict-refs.ts +0 -31
  924. package/src/rules/common/struct.ts +0 -189
  925. package/src/rules/common/tag-description.ts +0 -11
  926. package/src/rules/common/tags-alphabetical.ts +0 -27
  927. package/src/rules/no-unresolved-refs.ts +0 -52
  928. package/src/rules/oas2/__tests__/boolean-parameter-prefixes.test.ts +0 -112
  929. package/src/rules/oas2/__tests__/response-contains-header.test.ts +0 -180
  930. package/src/rules/oas2/__tests__/response-contains-property.test.ts +0 -161
  931. package/src/rules/oas2/__tests__/spec/fixtures/description.md +0 -1
  932. package/src/rules/oas2/__tests__/spec/info.test.ts +0 -355
  933. package/src/rules/oas2/__tests__/spec/operation.test.ts +0 -123
  934. package/src/rules/oas2/__tests__/spec/paths.test.ts +0 -245
  935. package/src/rules/oas2/__tests__/spec/referenceableScalars.test.ts +0 -37
  936. package/src/rules/oas2/__tests__/spec/utils.ts +0 -32
  937. package/src/rules/oas2/boolean-parameter-prefixes.ts +0 -26
  938. package/src/rules/oas2/index.ts +0 -102
  939. package/src/rules/oas2/request-mime-type.ts +0 -17
  940. package/src/rules/oas2/response-contains-property.ts +0 -37
  941. package/src/rules/oas2/response-mime-type.ts +0 -17
  942. package/src/rules/oas3/__tests__/array-parameter-serialization.test.ts +0 -275
  943. package/src/rules/oas3/__tests__/boolean-parameter-prefixes.test.ts +0 -113
  944. package/src/rules/oas3/__tests__/component-name-unique.test.ts +0 -966
  945. package/src/rules/oas3/__tests__/fixtures/common.yaml +0 -11
  946. package/src/rules/oas3/__tests__/fixtures/external-value.yaml +0 -2
  947. package/src/rules/oas3/__tests__/no-empty-enum-servers.com.test.ts +0 -205
  948. package/src/rules/oas3/__tests__/no-example-value-and-externalValue.test.ts +0 -65
  949. package/src/rules/oas3/__tests__/no-invalid-media-type-examples.test.ts +0 -732
  950. package/src/rules/oas3/__tests__/no-server-example.com.test.ts +0 -95
  951. package/src/rules/oas3/__tests__/no-server-trailing-slash.test.ts +0 -79
  952. package/src/rules/oas3/__tests__/no-unused-components.test.ts +0 -131
  953. package/src/rules/oas3/__tests__/operation-4xx-problem-details-rfc7807.test.ts +0 -145
  954. package/src/rules/oas3/__tests__/response-contains-header.test.ts +0 -401
  955. package/src/rules/oas3/__tests__/response-contains-property.test.ts +0 -417
  956. package/src/rules/oas3/__tests__/spec/callbacks.test.ts +0 -41
  957. package/src/rules/oas3/__tests__/spec/fixtures/description.md +0 -1
  958. package/src/rules/oas3/__tests__/spec/info.test.ts +0 -391
  959. package/src/rules/oas3/__tests__/spec/operation.test.ts +0 -253
  960. package/src/rules/oas3/__tests__/spec/paths.test.ts +0 -284
  961. package/src/rules/oas3/__tests__/spec/referenceableScalars.test.ts +0 -77
  962. package/src/rules/oas3/__tests__/spec/servers.test.ts +0 -505
  963. package/src/rules/oas3/__tests__/spec/spec.test.ts +0 -307
  964. package/src/rules/oas3/__tests__/spec/utils.ts +0 -32
  965. package/src/rules/oas3/__tests__/spec-components-invalid-map-name.test.ts +0 -282
  966. package/src/rules/oas3/__tests__/utils/lint-document-for-test.ts +0 -23
  967. package/src/rules/oas3/array-parameter-serialization.ts +0 -47
  968. package/src/rules/oas3/boolean-parameter-prefixes.ts +0 -28
  969. package/src/rules/oas3/component-name-unique.ts +0 -162
  970. package/src/rules/oas3/index.ts +0 -126
  971. package/src/rules/oas3/no-empty-servers.ts +0 -22
  972. package/src/rules/oas3/no-example-value-and-externalValue.ts +0 -14
  973. package/src/rules/oas3/no-invalid-media-type-examples.ts +0 -54
  974. package/src/rules/oas3/no-server-example.com.ts +0 -16
  975. package/src/rules/oas3/no-server-trailing-slash.ts +0 -15
  976. package/src/rules/oas3/no-server-variables-empty-enum.ts +0 -66
  977. package/src/rules/oas3/no-undefined-server-variable.ts +0 -30
  978. package/src/rules/oas3/no-unused-components.ts +0 -75
  979. package/src/rules/oas3/operation-4xx-problem-details-rfc7807.ts +0 -36
  980. package/src/rules/oas3/request-mime-type.ts +0 -31
  981. package/src/rules/oas3/response-contains-property.ts +0 -39
  982. package/src/rules/oas3/response-mime-type.ts +0 -31
  983. package/src/rules/oas3/spec-components-invalid-map-name.ts +0 -69
  984. package/src/rules/other/stats.ts +0 -75
  985. package/src/rules/overlay1/__tests__/info-contact.test.ts +0 -112
  986. package/src/rules/overlay1/index.ts +0 -14
  987. package/src/rules/respect/no-criteria-xpath.ts +0 -20
  988. package/src/rules/respect/respect-supported-versions.ts +0 -24
  989. package/src/rules/utils.ts +0 -230
  990. package/src/types/arazzo.ts +0 -305
  991. package/src/types/asyncapi2.ts +0 -1121
  992. package/src/types/asyncapi3.ts +0 -383
  993. package/src/types/index.ts +0 -144
  994. package/src/types/json-schema-adapter.ts +0 -217
  995. package/src/types/oas2.ts +0 -481
  996. package/src/types/oas3.ts +0 -594
  997. package/src/types/oas3_1.ts +0 -290
  998. package/src/types/overlay.ts +0 -40
  999. package/src/types/redocly-yaml.ts +0 -1226
  1000. package/src/typings/arazzo.ts +0 -172
  1001. package/src/typings/asyncapi.ts +0 -26
  1002. package/src/typings/asyncapi3.ts +0 -61
  1003. package/src/typings/common.ts +0 -18
  1004. package/src/typings/openapi.ts +0 -347
  1005. package/src/typings/overlay.ts +0 -19
  1006. package/src/typings/swagger.ts +0 -236
  1007. package/src/utils.ts +0 -357
  1008. package/src/visitors.ts +0 -598
  1009. package/src/walk.ts +0 -467
  1010. package/tsconfig.json +0 -8
  1011. package/tsconfig.tsbuildinfo +0 -1
@@ -1,1772 +0,0 @@
1
- import * as path from 'path';
2
- import { outdent } from 'outdent';
3
-
4
- import { lintFromString, lintConfig, lintDocument, lint } from '../lint';
5
- import { BaseResolver } from '../resolve';
6
- import { createConfig, loadConfig } from '../config/load';
7
- import { parseYamlToDocument, replaceSourceWithRef, makeConfig } from '../../__tests__/utils';
8
- import { detectSpec } from '../oas-types';
9
- import { rootRedoclyConfigSchema } from '@redocly/config';
10
- import { createConfigTypes } from '../types/redocly-yaml';
11
-
12
- const testPortalConfig = parseYamlToDocument(
13
- outdent`
14
- licenseKey: 123 # Must be a string
15
-
16
- apis:
17
- without-root:
18
- foo: Not expected!
19
- output: file.json
20
- with-wrong-root:
21
- root: 456 # Must be a string
22
- with-theme:
23
- root: ./openapi.yaml
24
- theme:
25
- openapi: wrong, must be an object
26
- not-expected: Must fail
27
-
28
- seo:
29
- keywords: 789 # Must be an array
30
-
31
- redirects:
32
- some-redirect:
33
- t1o: Wrong name, should be 'two'
34
- type: wrong type, must be a number
35
-
36
- rbac:
37
- 'team-b.md':
38
- TeamB: read
39
- team-c.md:
40
- TeamC: read
41
- /blog/*:
42
- anonymous: none
43
- authenticated: read
44
- /blogpost/:
45
- TeamD: none
46
- '**/*.md':
47
- TeamA: none
48
- authenticated: none
49
- '*': read
50
- 'blog/april-2022.md':
51
- TeamA: none
52
- TeamC: read
53
- test.md:
54
- TeamC: none
55
- TeamB: none
56
- authenticated: none
57
- '*': read
58
- test/**:
59
- TeamB: read
60
- TeamC: read
61
- authenticated: read
62
- anonymous: read
63
- additional-property:
64
- something: 123 # Must be a string
65
- content:
66
- '**':
67
- additionalProp: 456 # Must be a stirng
68
- foo:
69
- additionalProp2: 789 # Must be a stirng
70
-
71
- responseHeaders:
72
- some-header: wrong, must be an array
73
- some-header2:
74
- - wrong, must be an object
75
- - unexpected-property: Should fail
76
- # name: Must be reported as a missing required prop
77
- value: 123 # Must be a string
78
-
79
- ssoDirect:
80
- oidc:
81
- title: 456 # Must be a string
82
- type: OIDC
83
- configurationUrl: http://localhost/oidc/.well-known/openid-configuration
84
- clientId: '{{ process.env.public }}'
85
- clientSecret: '{{ process.env.secret }}'
86
- teamsClaimName: https://test.com
87
- scopes:
88
- - openid
89
- audience:
90
- - default
91
- authorizationRequestCustomParams:
92
- login_hint: 789 # Must be a string
93
- prompt: login
94
- configuration:
95
- token_endpoint: 123 # Must be a string
96
- # authorization_endpoint: Must be reported as a missing required prop
97
- additional-propery: Must be allowed
98
- defaultTeams:
99
- - 456 # Must be a string
100
-
101
- sso-config-schema-without-configurationUrl:
102
- type: OIDC
103
- # clientId: Must be reported as a missing required prop
104
- # configurationUrl: Must be reported as a missing required prop
105
- clientSecret: '{{ process.env.secret }}'
106
-
107
- sso:
108
- - WRONG # Does not match allowed options
109
-
110
- developerOnboarding:
111
- wrong: A not allowed field
112
- adapters:
113
- - should be object
114
- - type: 123 # Must be a string
115
- - type: APIGEE_X
116
- # organizationName: Must be reported as a missing required prop
117
- auth:
118
- type: OAUTH2
119
- # tokenEndpoint: Must be reported as a missing required prop
120
- clientId: 456 # Must be a string
121
- clientSecret: '{{ process.env.secret }}'
122
- not-expected: Must fail
123
- - type: APIGEE_X
124
- organizationName: Test
125
- auth:
126
- type: SERVICE_ACCOUNT
127
- # serviceAccountPrivateKey: Must be reported as a missing required prop
128
- serviceAccountEmail: 789 # Must be a string
129
-
130
- l10n:
131
- defaultLocale: en-US
132
- locales:
133
- - code: 123 # Must be a string
134
- name: English
135
- - code: es-ES
136
- name: Spanish
137
-
138
- metadata:
139
- test: anything
140
-
141
- not-listed-filed: Must be reported as not expected
142
-
143
- env:
144
- some-env:
145
- mockServer:
146
- off: must be boolean
147
- not-expected: Must fail
148
- apis:
149
- no-root:
150
- # root: Must be defined
151
- rules: {}
152
- wrong-root:
153
- root: 789 # Must be a string
154
-
155
- theme:
156
- breadcrumbs:
157
- hide: false
158
- prefixItems:
159
- - label: Home
160
- page: '/'
161
- imports:
162
- - '@redocly/theme-experimental'
163
-
164
- logo:
165
- srcSet: './images/redocly-black-logo.svg light, ./images/redocly-brand-logo.svg dark'
166
- altText: Test
167
- link: /
168
- asyncapi:
169
- hideInfo: false
170
- expandSchemas:
171
- root: true
172
- elements: true
173
- navbar:
174
- items:
175
- - label: Markdown
176
- page: /markdown/
177
-
178
- search:
179
- shortcuts:
180
- - ctrl+f
181
- - cmd+k
182
- - /
183
- suggestedPages:
184
- - label: TSX page
185
- page: tsx.page.tsx
186
- - page: /my-catalog/
187
-
188
- footer:
189
- copyrightText: Copyright © Test 2019-2020.
190
- items:
191
- - group: Legal
192
- items:
193
- - label: Terms of Use
194
- href: 'https://test.com/' # Not expected
195
-
196
- markdown:
197
- lastUpdatedBlock:
198
- format: 'long'
199
- editPage:
200
- baseUrl: https://test.com
201
- graphql:
202
- menu:
203
- requireExactGroups: false
204
- groups:
205
- - name: 'GraphQL custom group'
206
- directives:
207
- includeByName:
208
- - cacheControl
209
- - typeDirective
210
- otherItemsGroupName: 'Other'
211
- sidebar:
212
- separatorLine: true
213
- linePosition: top
214
- catalog:
215
- main:
216
- title: API Catalog
217
- description: 'This is a description of the API Catalog'
218
- slug: /my-catalog/
219
- filters:
220
- - title: Domain
221
- property: domain
222
- missingCategoryName: Other
223
- - title: API Category
224
- property: category
225
- missingCategoryName: Other
226
- groupByFirstFilter: false
227
- items:
228
- - directory: ./
229
- flatten: true
230
- includeByMetadata:
231
- type: [openapi]
232
- scorecard:
233
- ignoreNonCompliant: true
234
- levels:
235
- - name: Baseline
236
- extends:
237
- - minimal
238
- - name: Silver
239
- extends:
240
- - recommended
241
- rules:
242
- info-description: off
243
-
244
- - name: Gold
245
- rules:
246
- rule/path-item-get-required:
247
- severity: warn
248
- subject:
249
- type: PathItem
250
- message: Every path item must have a GET operation.
251
- assertions:
252
- required:
253
- - get
254
-
255
- operation-4xx-response: warn
256
- targets:
257
- - where:
258
- metadata:
259
- l0: Distribution
260
- publishDateRange: 2021-01-01T00:00:00Z/2022-01-01
261
- minimumLevel: Silver
262
-
263
- `,
264
- ''
265
- );
266
-
267
- describe('lint', () => {
268
- it('lintFromString should work', async () => {
269
- const results = await lintFromString({
270
- absoluteRef: '/test/spec.yaml',
271
- source: outdent`
272
- openapi: 3.0.0
273
- info:
274
- title: Test API
275
- version: "1.0"
276
- description: Test
277
- license: Fail
278
-
279
- servers:
280
- - url: http://redocly-example.com
281
- paths: {}
282
- `,
283
- config: await loadConfig({ configPath: path.join(__dirname, 'fixtures/redocly.yaml') }),
284
- });
285
-
286
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
287
- [
288
- {
289
- "from": undefined,
290
- "location": [
291
- {
292
- "pointer": "#/info/license",
293
- "reportOnKey": false,
294
- "source": "/test/spec.yaml",
295
- },
296
- ],
297
- "message": "Expected type \`License\` (object) but got \`string\`",
298
- "ruleId": "struct",
299
- "severity": "error",
300
- "suggest": [],
301
- },
302
- ]
303
- `);
304
- });
305
-
306
- it('lint should work', async () => {
307
- const results = await lint({
308
- ref: path.join(__dirname, 'fixtures/lint/openapi.yaml'),
309
- config: await loadConfig({
310
- configPath: path.join(__dirname, 'fixtures/redocly.yaml'),
311
- }),
312
- });
313
-
314
- expect(replaceSourceWithRef(results, path.join(__dirname, 'fixtures/lint/')))
315
- .toMatchInlineSnapshot(`
316
- [
317
- {
318
- "from": undefined,
319
- "location": [
320
- {
321
- "pointer": "#/info/license",
322
- "reportOnKey": false,
323
- "source": "openapi.yaml",
324
- },
325
- ],
326
- "message": "Expected type \`License\` (object) but got \`string\`",
327
- "ruleId": "struct",
328
- "severity": "error",
329
- "suggest": [],
330
- },
331
- ]
332
- `);
333
- });
334
-
335
- it('lintConfig should work', async () => {
336
- const document = parseYamlToDocument(
337
- outdent`
338
- apis: error string
339
- plugins:
340
- - './local-plugin.js'
341
- extends:
342
- - recommended
343
- - local/all
344
- rules:
345
- operation-2xx-response: warn
346
- no-invalid-media-type-examples: error
347
- path-http-verbs-order: error
348
- boolean-parameter-prefixes: off
349
- rule/operation-summary-length:
350
- subject:
351
- type: Operation
352
- property: summary
353
- message: Operation summary should start with an active verb
354
- assertions:
355
- local/checkWordsCount:
356
- min: 3
357
- theme:
358
- openapi:
359
- showConsole: true # Not expected anymore
360
- layout: wrong-option
361
- `,
362
- ''
363
- );
364
- const config = await createConfig({});
365
- const results = await lintConfig({ document, config });
366
-
367
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
368
- [
369
- {
370
- "from": undefined,
371
- "location": [
372
- {
373
- "pointer": "#/apis",
374
- "reportOnKey": false,
375
- "source": "",
376
- },
377
- ],
378
- "message": "Expected type \`ConfigApis\` (object) but got \`string\`",
379
- "ruleId": "configuration spec",
380
- "severity": "error",
381
- "suggest": [],
382
- },
383
- {
384
- "from": undefined,
385
- "location": [
386
- {
387
- "pointer": "#/theme/openapi/layout",
388
- "reportOnKey": false,
389
- "source": "",
390
- },
391
- ],
392
- "message": "\`layout\` can be one of the following only: "stacked", "three-panel".",
393
- "ruleId": "configuration spec",
394
- "severity": "error",
395
- "suggest": [],
396
- },
397
- ]
398
- `);
399
- });
400
-
401
- it('lintConfig should detect wrong fields and suggest correct ones', async () => {
402
- const document = parseYamlToDocument(
403
- outdent`
404
- api:
405
- name@version:
406
- root: ./file.yaml
407
- rules:
408
- operation-2xx-response: warn
409
- `,
410
- ''
411
- );
412
- const config = await createConfig({});
413
- const results = await lintConfig({ document, config });
414
-
415
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
416
- [
417
- {
418
- "from": undefined,
419
- "location": [
420
- {
421
- "pointer": "#/api",
422
- "reportOnKey": true,
423
- "source": "",
424
- },
425
- ],
426
- "message": "Property \`api\` is not expected here.",
427
- "ruleId": "configuration spec",
428
- "severity": "error",
429
- "suggest": [
430
- "apis",
431
- "seo",
432
- "sso",
433
- "env",
434
- ],
435
- },
436
- ]
437
- `);
438
- });
439
-
440
- it('lintConfig should work with legacy fields - referenceDocs', async () => {
441
- const document = parseYamlToDocument(
442
- outdent`
443
- apis:
444
- entry:
445
- root: ./file.yaml
446
- rules:
447
- operation-2xx-response: warn
448
- referenceDocs:
449
- showConsole: true
450
- `,
451
- ''
452
- );
453
- const config = await createConfig({});
454
- const results = await lintConfig({ document, config });
455
-
456
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
457
- [
458
- {
459
- "from": undefined,
460
- "location": [
461
- {
462
- "pointer": "#/referenceDocs",
463
- "reportOnKey": true,
464
- "source": "",
465
- },
466
- ],
467
- "message": "Property \`referenceDocs\` is not expected here.",
468
- "ruleId": "configuration spec",
469
- "severity": "error",
470
- "suggest": [],
471
- },
472
- ]
473
- `);
474
- });
475
-
476
- it("'plugins' shouldn't be allowed in 'apis'", async () => {
477
- const document = parseYamlToDocument(
478
- outdent`
479
- apis:
480
- main:
481
- root: ./main.yaml
482
- plugins:
483
- - './local-plugin.js'
484
- plugins:
485
- - './local-plugin.js'
486
- `,
487
- ''
488
- );
489
- const config = await createConfig({});
490
- const results = await lintConfig({ document, config });
491
-
492
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
493
- [
494
- {
495
- "from": undefined,
496
- "location": [
497
- {
498
- "pointer": "#/apis/main/plugins",
499
- "reportOnKey": true,
500
- "source": "",
501
- },
502
- ],
503
- "message": "Property \`plugins\` is not expected here.",
504
- "ruleId": "configuration spec",
505
- "severity": "error",
506
- "suggest": [],
507
- },
508
- ]
509
- `);
510
- });
511
-
512
- it('lintConfig should detect wrong fields in the default configuration after merging with the portal config schema', async () => {
513
- const document = testPortalConfig;
514
- const config = await createConfig({});
515
- const results = await lintConfig({ document, config });
516
-
517
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
518
- [
519
- {
520
- "from": undefined,
521
- "location": [
522
- {
523
- "pointer": "#/licenseKey",
524
- "reportOnKey": false,
525
- "source": "",
526
- },
527
- ],
528
- "message": "Expected type \`string\` but got \`integer\`.",
529
- "ruleId": "configuration spec",
530
- "severity": "error",
531
- "suggest": [],
532
- },
533
- {
534
- "from": undefined,
535
- "location": [
536
- {
537
- "pointer": "#/sso/0",
538
- "reportOnKey": false,
539
- "source": "",
540
- },
541
- ],
542
- "message": "\`sso\` can be one of the following only: "REDOCLY", "CORPORATE", "GUEST".",
543
- "ruleId": "configuration spec",
544
- "severity": "error",
545
- "suggest": [],
546
- },
547
- {
548
- "from": undefined,
549
- "location": [
550
- {
551
- "pointer": "#/not-listed-filed",
552
- "reportOnKey": true,
553
- "source": "",
554
- },
555
- ],
556
- "message": "Property \`not-listed-filed\` is not expected here.",
557
- "ruleId": "configuration spec",
558
- "severity": "error",
559
- "suggest": [],
560
- },
561
- {
562
- "from": undefined,
563
- "location": [
564
- {
565
- "pointer": "#/redirects/some-redirect/t1o",
566
- "reportOnKey": true,
567
- "source": "",
568
- },
569
- ],
570
- "message": "Property \`t1o\` is not expected here.",
571
- "ruleId": "configuration spec",
572
- "severity": "error",
573
- "suggest": [
574
- "to",
575
- "type",
576
- ],
577
- },
578
- {
579
- "from": undefined,
580
- "location": [
581
- {
582
- "pointer": "#/redirects/some-redirect/type",
583
- "reportOnKey": false,
584
- "source": "",
585
- },
586
- ],
587
- "message": "Expected type \`number\` but got \`string\`.",
588
- "ruleId": "configuration spec",
589
- "severity": "error",
590
- "suggest": [],
591
- },
592
- {
593
- "from": undefined,
594
- "location": [
595
- {
596
- "pointer": "#/seo/keywords",
597
- "reportOnKey": false,
598
- "source": "",
599
- },
600
- ],
601
- "message": "Expected type \`array\` but got \`integer\`.",
602
- "ruleId": "configuration spec",
603
- "severity": "error",
604
- "suggest": [],
605
- },
606
- {
607
- "from": undefined,
608
- "location": [
609
- {
610
- "pointer": "#/rbac/content/**/additionalProp",
611
- "reportOnKey": false,
612
- "source": "",
613
- },
614
- ],
615
- "message": "Expected type \`string\` but got \`integer\`.",
616
- "ruleId": "configuration spec",
617
- "severity": "error",
618
- "suggest": [],
619
- },
620
- {
621
- "from": undefined,
622
- "location": [
623
- {
624
- "pointer": "#/rbac/content/foo/additionalProp2",
625
- "reportOnKey": false,
626
- "source": "",
627
- },
628
- ],
629
- "message": "Expected type \`string\` but got \`integer\`.",
630
- "ruleId": "configuration spec",
631
- "severity": "error",
632
- "suggest": [],
633
- },
634
- {
635
- "from": undefined,
636
- "location": [
637
- {
638
- "pointer": "#/rbac/additional-property/something",
639
- "reportOnKey": false,
640
- "source": "",
641
- },
642
- ],
643
- "message": "Expected type \`string\` but got \`integer\`.",
644
- "ruleId": "configuration spec",
645
- "severity": "error",
646
- "suggest": [],
647
- },
648
- {
649
- "from": undefined,
650
- "location": [
651
- {
652
- "pointer": "#/responseHeaders/some-header",
653
- "reportOnKey": false,
654
- "source": "",
655
- },
656
- ],
657
- "message": "Expected type \`rootRedoclyConfigSchema.responseHeaders_additionalProperties\` (array) but got \`string\`",
658
- "ruleId": "configuration spec",
659
- "severity": "error",
660
- "suggest": [],
661
- },
662
- {
663
- "from": undefined,
664
- "location": [
665
- {
666
- "pointer": "#/responseHeaders/some-header2/0",
667
- "reportOnKey": false,
668
- "source": "",
669
- },
670
- ],
671
- "message": "Expected type \`rootRedoclyConfigSchema.responseHeaders_additionalProperties_items\` (object) but got \`string\`",
672
- "ruleId": "configuration spec",
673
- "severity": "error",
674
- "suggest": [],
675
- },
676
- {
677
- "from": undefined,
678
- "location": [
679
- {
680
- "pointer": "#/responseHeaders/some-header2/1",
681
- "reportOnKey": true,
682
- "source": "",
683
- },
684
- ],
685
- "message": "The field \`name\` must be present on this level.",
686
- "ruleId": "configuration spec",
687
- "severity": "error",
688
- "suggest": [],
689
- },
690
- {
691
- "from": undefined,
692
- "location": [
693
- {
694
- "pointer": "#/responseHeaders/some-header2/1/unexpected-property",
695
- "reportOnKey": true,
696
- "source": "",
697
- },
698
- ],
699
- "message": "Property \`unexpected-property\` is not expected here.",
700
- "ruleId": "configuration spec",
701
- "severity": "error",
702
- "suggest": [],
703
- },
704
- {
705
- "from": undefined,
706
- "location": [
707
- {
708
- "pointer": "#/responseHeaders/some-header2/1/value",
709
- "reportOnKey": false,
710
- "source": "",
711
- },
712
- ],
713
- "message": "Expected type \`string\` but got \`integer\`.",
714
- "ruleId": "configuration spec",
715
- "severity": "error",
716
- "suggest": [],
717
- },
718
- {
719
- "from": undefined,
720
- "location": [
721
- {
722
- "pointer": "#/apis/without-root",
723
- "reportOnKey": true,
724
- "source": "",
725
- },
726
- ],
727
- "message": "The field \`root\` must be present on this level.",
728
- "ruleId": "configuration spec",
729
- "severity": "error",
730
- "suggest": [],
731
- },
732
- {
733
- "from": undefined,
734
- "location": [
735
- {
736
- "pointer": "#/apis/without-root/foo",
737
- "reportOnKey": true,
738
- "source": "",
739
- },
740
- ],
741
- "message": "Property \`foo\` is not expected here.",
742
- "ruleId": "configuration spec",
743
- "severity": "error",
744
- "suggest": [
745
- "root",
746
- ],
747
- },
748
- {
749
- "from": undefined,
750
- "location": [
751
- {
752
- "pointer": "#/apis/with-wrong-root/root",
753
- "reportOnKey": false,
754
- "source": "",
755
- },
756
- ],
757
- "message": "Expected type \`string\` but got \`integer\`.",
758
- "ruleId": "configuration spec",
759
- "severity": "error",
760
- "suggest": [],
761
- },
762
- {
763
- "from": undefined,
764
- "location": [
765
- {
766
- "pointer": "#/apis/with-theme/theme/not-expected",
767
- "reportOnKey": true,
768
- "source": "",
769
- },
770
- ],
771
- "message": "Property \`not-expected\` is not expected here.",
772
- "ruleId": "configuration spec",
773
- "severity": "error",
774
- "suggest": [],
775
- },
776
- {
777
- "from": undefined,
778
- "location": [
779
- {
780
- "pointer": "#/apis/with-theme/theme/openapi",
781
- "reportOnKey": false,
782
- "source": "",
783
- },
784
- ],
785
- "message": "Expected type \`rootRedoclyConfigSchema.apis_additionalProperties.theme.openapi\` (object) but got \`string\`",
786
- "ruleId": "configuration spec",
787
- "severity": "error",
788
- "suggest": [],
789
- },
790
- {
791
- "from": undefined,
792
- "location": [
793
- {
794
- "pointer": "#/ssoDirect/oidc/title",
795
- "reportOnKey": false,
796
- "source": "",
797
- },
798
- ],
799
- "message": "Expected type \`string\` but got \`integer\`.",
800
- "ruleId": "configuration spec",
801
- "severity": "error",
802
- "suggest": [],
803
- },
804
- {
805
- "from": undefined,
806
- "location": [
807
- {
808
- "pointer": "#/ssoDirect/oidc/defaultTeams/0",
809
- "reportOnKey": false,
810
- "source": "",
811
- },
812
- ],
813
- "message": "Expected type \`string\` but got \`integer\`.",
814
- "ruleId": "configuration spec",
815
- "severity": "error",
816
- "suggest": [],
817
- },
818
- {
819
- "from": undefined,
820
- "location": [
821
- {
822
- "pointer": "#/ssoDirect/oidc/configuration",
823
- "reportOnKey": true,
824
- "source": "",
825
- },
826
- ],
827
- "message": "The field \`authorization_endpoint\` must be present on this level.",
828
- "ruleId": "configuration spec",
829
- "severity": "error",
830
- "suggest": [],
831
- },
832
- {
833
- "from": undefined,
834
- "location": [
835
- {
836
- "pointer": "#/ssoDirect/oidc/configuration/token_endpoint",
837
- "reportOnKey": false,
838
- "source": "",
839
- },
840
- ],
841
- "message": "Expected type \`string\` but got \`integer\`.",
842
- "ruleId": "configuration spec",
843
- "severity": "error",
844
- "suggest": [],
845
- },
846
- {
847
- "from": undefined,
848
- "location": [
849
- {
850
- "pointer": "#/ssoDirect/oidc/authorizationRequestCustomParams/login_hint",
851
- "reportOnKey": false,
852
- "source": "",
853
- },
854
- ],
855
- "message": "Expected type \`string\` but got \`integer\`.",
856
- "ruleId": "configuration spec",
857
- "severity": "error",
858
- "suggest": [],
859
- },
860
- {
861
- "from": undefined,
862
- "location": [
863
- {
864
- "pointer": "#/ssoDirect/sso-config-schema-without-configurationUrl",
865
- "reportOnKey": true,
866
- "source": "",
867
- },
868
- ],
869
- "message": "The field \`clientId\` must be present on this level.",
870
- "ruleId": "configuration spec",
871
- "severity": "error",
872
- "suggest": [],
873
- },
874
- {
875
- "from": undefined,
876
- "location": [
877
- {
878
- "pointer": "#/ssoDirect/sso-config-schema-without-configurationUrl",
879
- "reportOnKey": true,
880
- "source": "",
881
- },
882
- ],
883
- "message": "The field \`configurationUrl\` must be present on this level.",
884
- "ruleId": "configuration spec",
885
- "severity": "error",
886
- "suggest": [],
887
- },
888
- {
889
- "from": undefined,
890
- "location": [
891
- {
892
- "pointer": "#/developerOnboarding/wrong",
893
- "reportOnKey": true,
894
- "source": "",
895
- },
896
- ],
897
- "message": "Property \`wrong\` is not expected here.",
898
- "ruleId": "configuration spec",
899
- "severity": "error",
900
- "suggest": [],
901
- },
902
- {
903
- "from": undefined,
904
- "location": [
905
- {
906
- "pointer": "#/developerOnboarding/adapters/0",
907
- "reportOnKey": false,
908
- "source": "",
909
- },
910
- ],
911
- "message": "Expected type \`APIGEE_X\` (object) but got \`string\`",
912
- "ruleId": "configuration spec",
913
- "severity": "error",
914
- "suggest": [],
915
- },
916
- {
917
- "from": undefined,
918
- "location": [
919
- {
920
- "pointer": "#/developerOnboarding/adapters/1",
921
- "reportOnKey": true,
922
- "source": "",
923
- },
924
- ],
925
- "message": "The field \`organizationName\` must be present on this level.",
926
- "ruleId": "configuration spec",
927
- "severity": "error",
928
- "suggest": [],
929
- },
930
- {
931
- "from": undefined,
932
- "location": [
933
- {
934
- "pointer": "#/developerOnboarding/adapters/1",
935
- "reportOnKey": true,
936
- "source": "",
937
- },
938
- ],
939
- "message": "The field \`auth\` must be present on this level.",
940
- "ruleId": "configuration spec",
941
- "severity": "error",
942
- "suggest": [],
943
- },
944
- {
945
- "from": undefined,
946
- "location": [
947
- {
948
- "pointer": "#/developerOnboarding/adapters/1/type",
949
- "reportOnKey": false,
950
- "source": "",
951
- },
952
- ],
953
- "message": "Expected type \`string\` but got \`integer\`.",
954
- "ruleId": "configuration spec",
955
- "severity": "error",
956
- "suggest": [],
957
- },
958
- {
959
- "from": undefined,
960
- "location": [
961
- {
962
- "pointer": "#/developerOnboarding/adapters/2",
963
- "reportOnKey": true,
964
- "source": "",
965
- },
966
- ],
967
- "message": "The field \`organizationName\` must be present on this level.",
968
- "ruleId": "configuration spec",
969
- "severity": "error",
970
- "suggest": [],
971
- },
972
- {
973
- "from": undefined,
974
- "location": [
975
- {
976
- "pointer": "#/developerOnboarding/adapters/2/auth",
977
- "reportOnKey": true,
978
- "source": "",
979
- },
980
- ],
981
- "message": "The field \`tokenEndpoint\` must be present on this level.",
982
- "ruleId": "configuration spec",
983
- "severity": "error",
984
- "suggest": [],
985
- },
986
- {
987
- "from": undefined,
988
- "location": [
989
- {
990
- "pointer": "#/developerOnboarding/adapters/2/auth/clientId",
991
- "reportOnKey": false,
992
- "source": "",
993
- },
994
- ],
995
- "message": "Expected type \`string\` but got \`integer\`.",
996
- "ruleId": "configuration spec",
997
- "severity": "error",
998
- "suggest": [],
999
- },
1000
- {
1001
- "from": undefined,
1002
- "location": [
1003
- {
1004
- "pointer": "#/developerOnboarding/adapters/2/auth/not-expected",
1005
- "reportOnKey": true,
1006
- "source": "",
1007
- },
1008
- ],
1009
- "message": "Property \`not-expected\` is not expected here.",
1010
- "ruleId": "configuration spec",
1011
- "severity": "error",
1012
- "suggest": [],
1013
- },
1014
- {
1015
- "from": undefined,
1016
- "location": [
1017
- {
1018
- "pointer": "#/developerOnboarding/adapters/3/auth",
1019
- "reportOnKey": true,
1020
- "source": "",
1021
- },
1022
- ],
1023
- "message": "The field \`serviceAccountPrivateKey\` must be present on this level.",
1024
- "ruleId": "configuration spec",
1025
- "severity": "error",
1026
- "suggest": [],
1027
- },
1028
- {
1029
- "from": undefined,
1030
- "location": [
1031
- {
1032
- "pointer": "#/developerOnboarding/adapters/3/auth/serviceAccountEmail",
1033
- "reportOnKey": false,
1034
- "source": "",
1035
- },
1036
- ],
1037
- "message": "Expected type \`string\` but got \`integer\`.",
1038
- "ruleId": "configuration spec",
1039
- "severity": "error",
1040
- "suggest": [],
1041
- },
1042
- {
1043
- "from": undefined,
1044
- "location": [
1045
- {
1046
- "pointer": "#/l10n/locales/0/code",
1047
- "reportOnKey": false,
1048
- "source": "",
1049
- },
1050
- ],
1051
- "message": "Expected type \`string\` but got \`integer\`.",
1052
- "ruleId": "configuration spec",
1053
- "severity": "error",
1054
- "suggest": [],
1055
- },
1056
- {
1057
- "from": undefined,
1058
- "location": [
1059
- {
1060
- "pointer": "#/env/some-env/mockServer/off",
1061
- "reportOnKey": false,
1062
- "source": "",
1063
- },
1064
- ],
1065
- "message": "Expected type \`boolean\` but got \`string\`.",
1066
- "ruleId": "configuration spec",
1067
- "severity": "error",
1068
- "suggest": [],
1069
- },
1070
- {
1071
- "from": undefined,
1072
- "location": [
1073
- {
1074
- "pointer": "#/env/some-env/mockServer/not-expected",
1075
- "reportOnKey": true,
1076
- "source": "",
1077
- },
1078
- ],
1079
- "message": "Property \`not-expected\` is not expected here.",
1080
- "ruleId": "configuration spec",
1081
- "severity": "error",
1082
- "suggest": [],
1083
- },
1084
- {
1085
- "from": undefined,
1086
- "location": [
1087
- {
1088
- "pointer": "#/env/some-env/apis/no-root",
1089
- "reportOnKey": true,
1090
- "source": "",
1091
- },
1092
- ],
1093
- "message": "The field \`root\` must be present on this level.",
1094
- "ruleId": "configuration spec",
1095
- "severity": "error",
1096
- "suggest": [],
1097
- },
1098
- {
1099
- "from": undefined,
1100
- "location": [
1101
- {
1102
- "pointer": "#/env/some-env/apis/wrong-root/root",
1103
- "reportOnKey": false,
1104
- "source": "",
1105
- },
1106
- ],
1107
- "message": "Expected type \`string\` but got \`integer\`.",
1108
- "ruleId": "configuration spec",
1109
- "severity": "error",
1110
- "suggest": [],
1111
- },
1112
- ]
1113
- `);
1114
- });
1115
-
1116
- it('lintConfig should alternate its behavior when supplied externalConfigTypes', async () => {
1117
- const document = testPortalConfig;
1118
- const config = await createConfig({});
1119
- const results = await lintConfig({
1120
- document,
1121
- externalConfigTypes: createConfigTypes(
1122
- {
1123
- type: 'object',
1124
- properties: { theme: rootRedoclyConfigSchema.properties.theme },
1125
- additionalProperties: false,
1126
- },
1127
- config
1128
- ),
1129
- config,
1130
- });
1131
-
1132
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
1133
- [
1134
- {
1135
- "from": undefined,
1136
- "location": [
1137
- {
1138
- "pointer": "#/licenseKey",
1139
- "reportOnKey": true,
1140
- "source": "",
1141
- },
1142
- ],
1143
- "message": "Property \`licenseKey\` is not expected here.",
1144
- "ruleId": "configuration spec",
1145
- "severity": "error",
1146
- "suggest": [],
1147
- },
1148
- {
1149
- "from": undefined,
1150
- "location": [
1151
- {
1152
- "pointer": "#/seo",
1153
- "reportOnKey": true,
1154
- "source": "",
1155
- },
1156
- ],
1157
- "message": "Property \`seo\` is not expected here.",
1158
- "ruleId": "configuration spec",
1159
- "severity": "error",
1160
- "suggest": [],
1161
- },
1162
- {
1163
- "from": undefined,
1164
- "location": [
1165
- {
1166
- "pointer": "#/redirects",
1167
- "reportOnKey": true,
1168
- "source": "",
1169
- },
1170
- ],
1171
- "message": "Property \`redirects\` is not expected here.",
1172
- "ruleId": "configuration spec",
1173
- "severity": "error",
1174
- "suggest": [],
1175
- },
1176
- {
1177
- "from": undefined,
1178
- "location": [
1179
- {
1180
- "pointer": "#/rbac",
1181
- "reportOnKey": true,
1182
- "source": "",
1183
- },
1184
- ],
1185
- "message": "Property \`rbac\` is not expected here.",
1186
- "ruleId": "configuration spec",
1187
- "severity": "error",
1188
- "suggest": [],
1189
- },
1190
- {
1191
- "from": undefined,
1192
- "location": [
1193
- {
1194
- "pointer": "#/responseHeaders",
1195
- "reportOnKey": true,
1196
- "source": "",
1197
- },
1198
- ],
1199
- "message": "Property \`responseHeaders\` is not expected here.",
1200
- "ruleId": "configuration spec",
1201
- "severity": "error",
1202
- "suggest": [],
1203
- },
1204
- {
1205
- "from": undefined,
1206
- "location": [
1207
- {
1208
- "pointer": "#/ssoDirect",
1209
- "reportOnKey": true,
1210
- "source": "",
1211
- },
1212
- ],
1213
- "message": "Property \`ssoDirect\` is not expected here.",
1214
- "ruleId": "configuration spec",
1215
- "severity": "error",
1216
- "suggest": [],
1217
- },
1218
- {
1219
- "from": undefined,
1220
- "location": [
1221
- {
1222
- "pointer": "#/sso",
1223
- "reportOnKey": true,
1224
- "source": "",
1225
- },
1226
- ],
1227
- "message": "Property \`sso\` is not expected here.",
1228
- "ruleId": "configuration spec",
1229
- "severity": "error",
1230
- "suggest": [],
1231
- },
1232
- {
1233
- "from": undefined,
1234
- "location": [
1235
- {
1236
- "pointer": "#/developerOnboarding",
1237
- "reportOnKey": true,
1238
- "source": "",
1239
- },
1240
- ],
1241
- "message": "Property \`developerOnboarding\` is not expected here.",
1242
- "ruleId": "configuration spec",
1243
- "severity": "error",
1244
- "suggest": [],
1245
- },
1246
- {
1247
- "from": undefined,
1248
- "location": [
1249
- {
1250
- "pointer": "#/l10n",
1251
- "reportOnKey": true,
1252
- "source": "",
1253
- },
1254
- ],
1255
- "message": "Property \`l10n\` is not expected here.",
1256
- "ruleId": "configuration spec",
1257
- "severity": "error",
1258
- "suggest": [],
1259
- },
1260
- {
1261
- "from": undefined,
1262
- "location": [
1263
- {
1264
- "pointer": "#/metadata",
1265
- "reportOnKey": true,
1266
- "source": "",
1267
- },
1268
- ],
1269
- "message": "Property \`metadata\` is not expected here.",
1270
- "ruleId": "configuration spec",
1271
- "severity": "error",
1272
- "suggest": [],
1273
- },
1274
- {
1275
- "from": undefined,
1276
- "location": [
1277
- {
1278
- "pointer": "#/not-listed-filed",
1279
- "reportOnKey": true,
1280
- "source": "",
1281
- },
1282
- ],
1283
- "message": "Property \`not-listed-filed\` is not expected here.",
1284
- "ruleId": "configuration spec",
1285
- "severity": "error",
1286
- "suggest": [],
1287
- },
1288
- {
1289
- "from": undefined,
1290
- "location": [
1291
- {
1292
- "pointer": "#/env",
1293
- "reportOnKey": true,
1294
- "source": "",
1295
- },
1296
- ],
1297
- "message": "Property \`env\` is not expected here.",
1298
- "ruleId": "configuration spec",
1299
- "severity": "error",
1300
- "suggest": [],
1301
- },
1302
- {
1303
- "from": undefined,
1304
- "location": [
1305
- {
1306
- "pointer": "#/apis/without-root/foo",
1307
- "reportOnKey": true,
1308
- "source": "",
1309
- },
1310
- ],
1311
- "message": "Property \`foo\` is not expected here.",
1312
- "ruleId": "configuration spec",
1313
- "severity": "error",
1314
- "suggest": [],
1315
- },
1316
- {
1317
- "from": undefined,
1318
- "location": [
1319
- {
1320
- "pointer": "#/apis/without-root/output",
1321
- "reportOnKey": true,
1322
- "source": "",
1323
- },
1324
- ],
1325
- "message": "Property \`output\` is not expected here.",
1326
- "ruleId": "configuration spec",
1327
- "severity": "error",
1328
- "suggest": [],
1329
- },
1330
- {
1331
- "from": undefined,
1332
- "location": [
1333
- {
1334
- "pointer": "#/apis/with-wrong-root/root",
1335
- "reportOnKey": true,
1336
- "source": "",
1337
- },
1338
- ],
1339
- "message": "Property \`root\` is not expected here.",
1340
- "ruleId": "configuration spec",
1341
- "severity": "error",
1342
- "suggest": [],
1343
- },
1344
- {
1345
- "from": undefined,
1346
- "location": [
1347
- {
1348
- "pointer": "#/apis/with-theme/root",
1349
- "reportOnKey": true,
1350
- "source": "",
1351
- },
1352
- ],
1353
- "message": "Property \`root\` is not expected here.",
1354
- "ruleId": "configuration spec",
1355
- "severity": "error",
1356
- "suggest": [],
1357
- },
1358
- {
1359
- "from": undefined,
1360
- "location": [
1361
- {
1362
- "pointer": "#/apis/with-theme/theme",
1363
- "reportOnKey": true,
1364
- "source": "",
1365
- },
1366
- ],
1367
- "message": "Property \`theme\` is not expected here.",
1368
- "ruleId": "configuration spec",
1369
- "severity": "error",
1370
- "suggest": [],
1371
- },
1372
- ]
1373
- `);
1374
- });
1375
-
1376
- it("'const' can have any type", async () => {
1377
- const document = parseYamlToDocument(
1378
- outdent`
1379
- openapi: "3.1.0"
1380
- info:
1381
- version: 1.0.0
1382
- title: Swagger Petstore
1383
- description: Information about Petstore
1384
- license:
1385
- name: MIT
1386
- url: https://opensource.org/licenses/MIT
1387
- servers:
1388
- - url: http://petstore.swagger.io/v1
1389
- paths:
1390
- /pets:
1391
- get:
1392
- summary: List all pets
1393
- operationId: listPets
1394
- tags:
1395
- - pets
1396
- responses:
1397
- 200:
1398
- description: An paged array of pets
1399
- content:
1400
- application/json:
1401
- schema:
1402
- type: string
1403
- const: ABC
1404
- `,
1405
- 'foobar.yaml'
1406
- );
1407
-
1408
- const results = await lintDocument({
1409
- externalRefResolver: new BaseResolver(),
1410
- document,
1411
- config: await makeConfig({ rules: { spec: 'error' } }),
1412
- });
1413
-
1414
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
1415
- });
1416
-
1417
- it('detect OpenAPI should throw an error when version is not string', () => {
1418
- const testDocument = parseYamlToDocument(
1419
- outdent`
1420
- openapi: 3.0
1421
- `,
1422
- ''
1423
- );
1424
- expect(() => detectSpec(testDocument.parsed)).toThrow(
1425
- `Invalid OpenAPI version: should be a string but got "number"`
1426
- );
1427
- });
1428
-
1429
- it('detect unsupported OpenAPI version', () => {
1430
- const testDocument = parseYamlToDocument(
1431
- outdent`
1432
- openapi: 1.0.4
1433
- `,
1434
- ''
1435
- );
1436
- expect(() => detectSpec(testDocument.parsed)).toThrow(`Unsupported OpenAPI version: 1.0.4`);
1437
- });
1438
-
1439
- it('detect unsupported AsyncAPI version', () => {
1440
- const testDocument = parseYamlToDocument(
1441
- outdent`
1442
- asyncapi: 1.0.4
1443
- `,
1444
- ''
1445
- );
1446
- expect(() => detectSpec(testDocument.parsed)).toThrow(`Unsupported AsyncAPI version: 1.0.4`);
1447
- });
1448
-
1449
- it('detect unsupported spec format', () => {
1450
- const testDocument = parseYamlToDocument(
1451
- outdent`
1452
- notapi: 3.1.0
1453
- `,
1454
- ''
1455
- );
1456
- expect(() => detectSpec(testDocument.parsed)).toThrow(`Unsupported specification`);
1457
- });
1458
-
1459
- it("spec rule shouldn't throw an error for named callback", async () => {
1460
- const document = parseYamlToDocument(
1461
- outdent`
1462
- openapi: 3.1.0
1463
- info:
1464
- title: Callback test
1465
- version: 'alpha'
1466
- components:
1467
- callbacks:
1468
- resultCallback:
1469
- '{$url}':
1470
- post:
1471
- requestBody:
1472
- description: Callback payload
1473
- content:
1474
- 'application/json':
1475
- schema:
1476
- type: object
1477
- properties:
1478
- test:
1479
- type: string
1480
- responses:
1481
- '200':
1482
- description: callback successfully processed
1483
- `,
1484
- 'foobar.yaml'
1485
- );
1486
-
1487
- const results = await lintDocument({
1488
- externalRefResolver: new BaseResolver(),
1489
- document,
1490
- config: await makeConfig({ rules: { spec: 'error' } }),
1491
- });
1492
-
1493
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
1494
- });
1495
-
1496
- it('should ignore error because ignore file passed', async () => {
1497
- const absoluteRef = path.join(__dirname, 'fixtures/openapi.yaml');
1498
- const document = parseYamlToDocument(
1499
- outdent`
1500
- openapi: 3.0.0
1501
- info:
1502
- version: 1.0.0
1503
- title: Example OpenAPI 3 definition.
1504
- description: Information about API
1505
- license:
1506
- name: MIT
1507
- url: 'https://opensource.org/licenses/MIT'
1508
- servers:
1509
- - url: 'https://redocly.com/v1'
1510
- paths:
1511
- '/pets/{petId}':
1512
- post:
1513
- responses:
1514
- '201':
1515
- summary: Exist
1516
- description: example description
1517
- `,
1518
- absoluteRef
1519
- );
1520
-
1521
- const configFilePath = path.join(__dirname, 'fixtures');
1522
-
1523
- const result = await lintDocument({
1524
- externalRefResolver: new BaseResolver(),
1525
- document,
1526
- config: await makeConfig({
1527
- rules: { 'operation-operationId': 'error' },
1528
- decorators: undefined,
1529
- configPath: configFilePath,
1530
- }),
1531
- });
1532
- expect(result).toHaveLength(1);
1533
- expect(result).toMatchObject([
1534
- {
1535
- ignored: true,
1536
- location: [{ pointer: '#/paths/~1pets~1{petId}/post/operationId' }],
1537
- message: 'Operation object should contain `operationId` field.',
1538
- ruleId: 'operation-operationId',
1539
- severity: 'error',
1540
- },
1541
- ]);
1542
- expect(result[0]).toHaveProperty('ignored', true);
1543
- expect(result[0]).toHaveProperty('ruleId', 'operation-operationId');
1544
- });
1545
-
1546
- it('should throw an error for dependentRequired not expected here - OAS 3.0.x', async () => {
1547
- const document = parseYamlToDocument(
1548
- outdent`
1549
- openapi: 3.0.3
1550
- info:
1551
- title: test json schema validation keyword - dependentRequired
1552
- version: 1.0.0
1553
- paths:
1554
- '/thing':
1555
- get:
1556
- summary: a sample api
1557
- responses:
1558
- '200':
1559
- description: OK
1560
- content:
1561
- 'application/json':
1562
- schema:
1563
- $ref: '#/components/schemas/test_schema'
1564
- examples:
1565
- dependentRequired_passing:
1566
- summary: an example schema
1567
- value: { "name": "bobby", "age": 25}
1568
- dependentRequired_failing:
1569
- summary: an example schema
1570
- value: { "name": "jennie"}
1571
- components:
1572
- schemas:
1573
- test_schema:
1574
- type: object
1575
- properties:
1576
- name:
1577
- type: string
1578
- age:
1579
- type: number
1580
- dependentRequired:
1581
- name:
1582
- - age
1583
- `,
1584
- ''
1585
- );
1586
-
1587
- const configFilePath = path.join(__dirname, '..', '..', '..', 'redocly.yaml');
1588
-
1589
- const results = await lintDocument({
1590
- externalRefResolver: new BaseResolver(),
1591
- document,
1592
- config: await makeConfig({
1593
- rules: { spec: 'error' },
1594
- decorators: undefined,
1595
- configPath: configFilePath,
1596
- }),
1597
- });
1598
-
1599
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
1600
- [
1601
- {
1602
- "from": {
1603
- "pointer": "#/paths/~1thing/get/responses/200/content/application~1json/schema",
1604
- "source": "",
1605
- },
1606
- "location": [
1607
- {
1608
- "pointer": "#/components/schemas/test_schema/dependentRequired",
1609
- "reportOnKey": true,
1610
- "source": "",
1611
- },
1612
- ],
1613
- "message": "Property \`dependentRequired\` is not expected here.",
1614
- "ruleId": "struct",
1615
- "severity": "error",
1616
- "suggest": [],
1617
- },
1618
- ]
1619
- `);
1620
- });
1621
-
1622
- it('should not throw an error for dependentRequired not expected here - OAS 3.1.x', async () => {
1623
- const document = parseYamlToDocument(
1624
- outdent`
1625
- openapi: 3.1.0
1626
- info:
1627
- title: test json schema validation keyword - dependentRequired
1628
- version: 1.0.0
1629
- paths:
1630
- '/thing':
1631
- get:
1632
- summary: a sample api
1633
- responses:
1634
- '200':
1635
- description: OK
1636
- content:
1637
- 'application/json':
1638
- schema:
1639
- $ref: '#/components/schemas/test_schema'
1640
- examples:
1641
- dependentRequired_passing:
1642
- summary: an example schema
1643
- value: { "name": "bobby", "age": 25}
1644
- dependentRequired_failing:
1645
- summary: an example schema
1646
- value: { "name": "jennie"}
1647
- components:
1648
- schemas:
1649
- test_schema:
1650
- type: object
1651
- properties:
1652
- name:
1653
- type: string
1654
- age:
1655
- type: number
1656
- dependentRequired:
1657
- name:
1658
- - age
1659
- `,
1660
- ''
1661
- );
1662
-
1663
- const configFilePath = path.join(__dirname, '..', '..', '..', 'redocly.yaml');
1664
-
1665
- const results = await lintDocument({
1666
- externalRefResolver: new BaseResolver(),
1667
- document,
1668
- config: await makeConfig({
1669
- rules: { spec: 'error' },
1670
- decorators: undefined,
1671
- configPath: configFilePath,
1672
- }),
1673
- });
1674
-
1675
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
1676
- });
1677
-
1678
- it('should throw an error for $schema not expected here - OAS 3.0.x', async () => {
1679
- const document = parseYamlToDocument(
1680
- outdent`
1681
- openapi: 3.0.4
1682
- info:
1683
- title: test json schema validation keyword $schema - should use an OAS Schema, not JSON Schema
1684
- version: 1.0.0
1685
- paths:
1686
- '/thing':
1687
- get:
1688
- summary: a sample api
1689
- responses:
1690
- '200':
1691
- description: OK
1692
- content:
1693
- 'application/json':
1694
- schema:
1695
- $schema: http://json-schema.org/draft-04/schema#
1696
- type: object
1697
- properties: {}
1698
- `,
1699
- ''
1700
- );
1701
-
1702
- const configFilePath = path.join(__dirname, '..', '..', '..', 'redocly.yaml');
1703
-
1704
- const results = await lintDocument({
1705
- externalRefResolver: new BaseResolver(),
1706
- document,
1707
- config: await makeConfig({
1708
- rules: { spec: 'error' },
1709
- decorators: undefined,
1710
- configPath: configFilePath,
1711
- }),
1712
- });
1713
-
1714
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`
1715
- [
1716
- {
1717
- "from": undefined,
1718
- "location": [
1719
- {
1720
- "pointer": "#/paths/~1thing/get/responses/200/content/application~1json/schema/$schema",
1721
- "reportOnKey": true,
1722
- "source": "",
1723
- },
1724
- ],
1725
- "message": "Property \`$schema\` is not expected here.",
1726
- "ruleId": "struct",
1727
- "severity": "error",
1728
- "suggest": [],
1729
- },
1730
- ]
1731
- `);
1732
- });
1733
-
1734
- it('should allow for $schema to be defined - OAS 3.1.x', async () => {
1735
- const document = parseYamlToDocument(
1736
- outdent`
1737
- openapi: 3.1.1
1738
- info:
1739
- title: test json schema validation keyword $schema - should allow a JSON Schema
1740
- version: 1.0.0
1741
- paths:
1742
- '/thing':
1743
- get:
1744
- summary: a sample api
1745
- responses:
1746
- '200':
1747
- description: OK
1748
- content:
1749
- 'application/json':
1750
- schema:
1751
- $schema: http://json-schema.org/draft-04/schema#
1752
- type: object
1753
- properties: {}
1754
- `,
1755
- ''
1756
- );
1757
-
1758
- const configFilePath = path.join(__dirname, '..', '..', '..', 'redocly.yaml');
1759
-
1760
- const results = await lintDocument({
1761
- externalRefResolver: new BaseResolver(),
1762
- document,
1763
- config: await makeConfig({
1764
- rules: { spec: 'error' },
1765
- decorators: undefined,
1766
- configPath: configFilePath,
1767
- }),
1768
- });
1769
-
1770
- expect(replaceSourceWithRef(results)).toMatchInlineSnapshot(`[]`);
1771
- });
1772
- });