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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (382) hide show
  1. package/README.md +6 -6
  2. package/lib/benchmark/benches/lint-with-top-level-rule-report.bench.js +0 -1
  3. package/lib/benchmark/benches/recommended-oas3.bench.js +1 -1
  4. package/lib/benchmark/benches/resolve-with-no-external.bench.js +1 -1
  5. package/lib/benchmark/utils.d.ts +2 -2
  6. package/lib/benchmark/utils.js +2 -2
  7. package/lib/bundle.d.ts +10 -15
  8. package/lib/bundle.js +32 -12
  9. package/lib/config/all.d.ts +2 -2
  10. package/lib/config/all.js +16 -6
  11. package/lib/config/builtIn.d.ts +2 -2
  12. package/lib/config/builtIn.js +2 -2
  13. package/lib/config/config-resolvers.d.ts +5 -5
  14. package/lib/config/config-resolvers.js +121 -66
  15. package/lib/config/config.d.ts +12 -18
  16. package/lib/config/config.js +42 -26
  17. package/lib/config/load.d.ts +16 -3
  18. package/lib/config/load.js +36 -14
  19. package/lib/config/minimal.d.ts +2 -2
  20. package/lib/config/minimal.js +10 -6
  21. package/lib/config/recommended.d.ts +2 -2
  22. package/lib/config/recommended.js +10 -6
  23. package/lib/config/rules.d.ts +7 -4
  24. package/lib/config/rules.js +5 -4
  25. package/lib/config/types.d.ts +72 -23
  26. package/lib/config/types.js +13 -0
  27. package/lib/config/utils.d.ts +6 -5
  28. package/lib/config/utils.js +110 -32
  29. package/lib/decorators/common/filters/filter-helper.d.ts +3 -0
  30. package/lib/decorators/common/filters/filter-helper.js +67 -0
  31. package/lib/decorators/common/filters/filter-in.d.ts +2 -0
  32. package/lib/decorators/common/filters/filter-in.js +17 -0
  33. package/lib/decorators/common/filters/filter-out.d.ts +2 -0
  34. package/lib/decorators/common/filters/filter-out.js +17 -0
  35. package/lib/decorators/common/info-override.d.ts +2 -0
  36. package/lib/decorators/common/info-override.js +28 -0
  37. package/lib/decorators/common/media-type-examples-override.d.ts +2 -0
  38. package/lib/decorators/common/media-type-examples-override.js +53 -0
  39. package/lib/decorators/common/registry-dependencies.js +2 -2
  40. package/lib/decorators/common/remove-x-internal.js +2 -2
  41. package/lib/decorators/oas2/index.d.ts +3 -0
  42. package/lib/decorators/oas2/index.js +7 -1
  43. package/lib/decorators/oas3/index.d.ts +4 -0
  44. package/lib/decorators/oas3/index.js +9 -1
  45. package/lib/env.d.ts +3 -0
  46. package/lib/env.js +8 -0
  47. package/lib/format/codeframes.js +16 -10
  48. package/lib/format/format.d.ts +1 -1
  49. package/lib/format/format.js +64 -32
  50. package/lib/index.d.ts +6 -6
  51. package/lib/index.js +7 -2
  52. package/lib/js-yaml/index.js +2 -6
  53. package/lib/lint.d.ts +4 -2
  54. package/lib/lint.js +36 -11
  55. package/lib/logger.d.ts +10 -0
  56. package/lib/logger.js +31 -0
  57. package/lib/output.d.ts +3 -0
  58. package/lib/output.js +9 -0
  59. package/lib/redocly/index.js +10 -9
  60. package/lib/redocly/registry-api-types.d.ts +28 -28
  61. package/lib/redocly/registry-api.d.ts +3 -3
  62. package/lib/redocly/registry-api.js +10 -2
  63. package/lib/ref-utils.d.ts +1 -0
  64. package/lib/ref-utils.js +7 -2
  65. package/lib/resolve.d.ts +1 -1
  66. package/lib/resolve.js +33 -3
  67. package/lib/rules/ajv.d.ts +2 -2
  68. package/lib/rules/ajv.js +12 -12
  69. package/lib/rules/common/assertions/asserts.d.ts +29 -4
  70. package/lib/rules/common/assertions/asserts.js +227 -97
  71. package/lib/rules/common/assertions/index.d.ts +27 -2
  72. package/lib/rules/common/assertions/index.js +9 -37
  73. package/lib/rules/common/assertions/utils.d.ts +16 -8
  74. package/lib/rules/common/assertions/utils.js +160 -76
  75. package/lib/rules/common/info-license-url.d.ts +1 -1
  76. package/lib/rules/common/info-license-url.js +5 -10
  77. package/lib/rules/common/info-license.d.ts +2 -0
  78. package/lib/rules/common/info-license.js +17 -0
  79. package/lib/rules/common/no-ambiguous-paths.js +1 -1
  80. package/lib/rules/common/no-enum-type-mismatch.js +1 -3
  81. package/lib/rules/common/no-identical-paths.js +4 -4
  82. package/lib/rules/common/no-invalid-parameter-examples.js +3 -3
  83. package/lib/rules/common/no-invalid-schema-examples.js +3 -3
  84. package/lib/rules/common/operation-2xx-response.js +15 -9
  85. package/lib/rules/common/operation-4xx-response.js +15 -9
  86. package/lib/rules/common/operation-operationId.js +2 -2
  87. package/lib/rules/common/operation-tag-defined.js +1 -1
  88. package/lib/rules/common/path-not-include-query.js +2 -2
  89. package/lib/rules/common/path-params-defined.js +7 -2
  90. package/lib/rules/common/paths-kebab-case.js +4 -1
  91. package/lib/rules/common/required-string-property-missing-min-length.d.ts +2 -0
  92. package/lib/rules/common/required-string-property-missing-min-length.js +37 -0
  93. package/lib/rules/common/response-contains-header.js +2 -2
  94. package/lib/rules/common/scalar-property-missing-example.js +2 -1
  95. package/lib/rules/common/security-defined.d.ts +2 -0
  96. package/lib/rules/common/{operation-security-defined.js → security-defined.js} +25 -6
  97. package/lib/rules/common/spec-strict-refs.d.ts +2 -0
  98. package/lib/rules/common/spec-strict-refs.js +30 -0
  99. package/lib/rules/common/spec.js +41 -18
  100. package/lib/rules/common/tags-alphabetical.js +1 -1
  101. package/lib/rules/oas2/index.d.ts +3 -2
  102. package/lib/rules/oas2/index.js +10 -8
  103. package/lib/rules/oas2/remove-unused-components.js +6 -6
  104. package/lib/rules/oas2/request-mime-type.d.ts +1 -1
  105. package/lib/rules/oas2/request-mime-type.js +1 -1
  106. package/lib/rules/oas2/response-mime-type.d.ts +1 -1
  107. package/lib/rules/oas2/response-mime-type.js +1 -1
  108. package/lib/rules/oas3/component-name-unique.d.ts +2 -0
  109. package/lib/rules/oas3/component-name-unique.js +124 -0
  110. package/lib/rules/oas3/index.js +18 -10
  111. package/lib/rules/oas3/no-empty-servers.js +2 -2
  112. package/lib/rules/oas3/no-invalid-media-type-examples.js +2 -2
  113. package/lib/rules/oas3/no-server-variables-empty-enum.d.ts +2 -0
  114. package/lib/rules/oas3/{no-servers-empty-enum.js → no-server-variables-empty-enum.js} +5 -5
  115. package/lib/rules/oas3/no-unused-components.js +2 -2
  116. package/lib/rules/oas3/operation-4xx-problem-details-rfc7807.d.ts +5 -0
  117. package/lib/rules/oas3/operation-4xx-problem-details-rfc7807.js +36 -0
  118. package/lib/rules/oas3/remove-unused-components.js +6 -6
  119. package/lib/rules/oas3/request-mime-type.d.ts +1 -1
  120. package/lib/rules/oas3/request-mime-type.js +1 -1
  121. package/lib/rules/oas3/response-mime-type.d.ts +1 -1
  122. package/lib/rules/oas3/response-mime-type.js +1 -1
  123. package/lib/rules/oas3/spec-components-invalid-map-name.d.ts +2 -0
  124. package/lib/rules/oas3/spec-components-invalid-map-name.js +62 -0
  125. package/lib/rules/other/stats.d.ts +2 -2
  126. package/lib/rules/other/stats.js +45 -16
  127. package/lib/rules/utils.d.ts +5 -2
  128. package/lib/rules/utils.js +54 -6
  129. package/lib/types/config-external-schemas.d.ts +2193 -0
  130. package/lib/types/config-external-schemas.js +805 -0
  131. package/lib/types/index.d.ts +3 -2
  132. package/lib/types/index.js +9 -1
  133. package/lib/types/oas2.js +91 -15
  134. package/lib/types/oas3.js +125 -46
  135. package/lib/types/oas3_1.js +23 -19
  136. package/lib/types/redocly-yaml.js +406 -60
  137. package/lib/utils.d.ts +15 -4
  138. package/lib/utils.js +72 -8
  139. package/lib/visitors.d.ts +20 -16
  140. package/lib/visitors.js +28 -3
  141. package/lib/walk.d.ts +11 -19
  142. package/lib/walk.js +74 -53
  143. package/package.json +5 -6
  144. package/__tests__/utils.ts +0 -86
  145. package/lib/rules/common/info-description.d.ts +0 -2
  146. package/lib/rules/common/info-description.js +0 -12
  147. package/lib/rules/common/license-url.d.ts +0 -2
  148. package/lib/rules/common/license-url.js +0 -12
  149. package/lib/rules/common/operation-security-defined.d.ts +0 -2
  150. package/lib/rules/oas3/no-servers-empty-enum.d.ts +0 -2
  151. package/src/__tests__/__snapshots__/bundle.test.ts.snap +0 -255
  152. package/src/__tests__/bundle.test.ts +0 -156
  153. package/src/__tests__/codeframes.test.ts +0 -531
  154. package/src/__tests__/fixtures/extension.js +0 -24
  155. package/src/__tests__/fixtures/refs/definitions.yaml +0 -3
  156. package/src/__tests__/fixtures/refs/examples.yaml +0 -8
  157. package/src/__tests__/fixtures/refs/external-request-body.yaml +0 -13
  158. package/src/__tests__/fixtures/refs/externalref.yaml +0 -35
  159. package/src/__tests__/fixtures/refs/hosted.yaml +0 -35
  160. package/src/__tests__/fixtures/refs/openapi-with-external-refs-conflicting-names.yaml +0 -21
  161. package/src/__tests__/fixtures/refs/openapi-with-external-refs.yaml +0 -33
  162. package/src/__tests__/fixtures/refs/openapi-with-url-refs.yaml +0 -18
  163. package/src/__tests__/fixtures/refs/param-b.yaml +0 -1
  164. package/src/__tests__/fixtures/refs/param-c.yaml +0 -1
  165. package/src/__tests__/fixtures/refs/rename.yaml +0 -1
  166. package/src/__tests__/fixtures/refs/requestBody.yaml +0 -9
  167. package/src/__tests__/fixtures/refs/schema-a.yaml +0 -1
  168. package/src/__tests__/fixtures/refs/simple.yaml +0 -1
  169. package/src/__tests__/fixtures/refs/vendor.schema.yaml +0 -20
  170. package/src/__tests__/fixtures/resolve/External.yaml +0 -10
  171. package/src/__tests__/fixtures/resolve/External2.yaml +0 -4
  172. package/src/__tests__/fixtures/resolve/description.md +0 -3
  173. package/src/__tests__/fixtures/resolve/externalInfo.yaml +0 -4
  174. package/src/__tests__/fixtures/resolve/externalLicense.yaml +0 -1
  175. package/src/__tests__/fixtures/resolve/openapi-with-back.yaml +0 -13
  176. package/src/__tests__/fixtures/resolve/openapi-with-md-description.yaml +0 -5
  177. package/src/__tests__/fixtures/resolve/openapi.yaml +0 -28
  178. package/src/__tests__/fixtures/resolve/schemas/type-a.yaml +0 -10
  179. package/src/__tests__/fixtures/resolve/schemas/type-b.yaml +0 -6
  180. package/src/__tests__/fixtures/resolve/transitive/a.yaml +0 -1
  181. package/src/__tests__/fixtures/resolve/transitive/components.yaml +0 -5
  182. package/src/__tests__/fixtures/resolve/transitive/schemas.yaml +0 -3
  183. package/src/__tests__/js-yaml.test.ts +0 -71
  184. package/src/__tests__/lint.test.ts +0 -195
  185. package/src/__tests__/login.test.ts +0 -17
  186. package/src/__tests__/normalizeVisitors.test.ts +0 -151
  187. package/src/__tests__/ref-utils.test.ts +0 -120
  188. package/src/__tests__/resolve-http.test.ts +0 -77
  189. package/src/__tests__/resolve.test.ts +0 -405
  190. package/src/__tests__/utils.test.ts +0 -85
  191. package/src/__tests__/walk.test.ts +0 -1485
  192. package/src/benchmark/benches/lint-with-many-rules.bench.ts +0 -35
  193. package/src/benchmark/benches/lint-with-nested-rule.bench.ts +0 -39
  194. package/src/benchmark/benches/lint-with-no-rules.bench.ts +0 -20
  195. package/src/benchmark/benches/lint-with-top-level-rule-report.bench.ts +0 -36
  196. package/src/benchmark/benches/lint-with-top-level-rule.bench.ts +0 -32
  197. package/src/benchmark/benches/rebilly.yaml +0 -32267
  198. package/src/benchmark/benches/recommended-oas3.bench.ts +0 -22
  199. package/src/benchmark/benches/resolve-with-no-external.bench.ts +0 -23
  200. package/src/benchmark/benchmark.js +0 -307
  201. package/src/benchmark/colors.js +0 -29
  202. package/src/benchmark/fork.js +0 -83
  203. package/src/benchmark/utils.ts +0 -36
  204. package/src/bundle.ts +0 -386
  205. package/src/config/__tests__/__snapshots__/config-resolvers.test.ts.snap +0 -157
  206. package/src/config/__tests__/config-resolvers.test.ts +0 -429
  207. package/src/config/__tests__/config.test.ts +0 -244
  208. package/src/config/__tests__/fixtures/plugin-config.yaml +0 -3
  209. package/src/config/__tests__/fixtures/plugin.js +0 -56
  210. package/src/config/__tests__/fixtures/resolve-config/api/nested-config.yaml +0 -12
  211. package/src/config/__tests__/fixtures/resolve-config/api/plugin.js +0 -67
  212. package/src/config/__tests__/fixtures/resolve-config/local-config-with-circular.yaml +0 -8
  213. package/src/config/__tests__/fixtures/resolve-config/local-config-with-file.yaml +0 -19
  214. package/src/config/__tests__/fixtures/resolve-config/local-config.yaml +0 -10
  215. package/src/config/__tests__/fixtures/resolve-config/plugin.js +0 -66
  216. package/src/config/__tests__/fixtures/resolve-remote-configs/nested-remote-config.yaml +0 -4
  217. package/src/config/__tests__/fixtures/resolve-remote-configs/remote-config.yaml +0 -5
  218. package/src/config/__tests__/load.test.ts +0 -83
  219. package/src/config/__tests__/resolve-plugins.test.ts +0 -27
  220. package/src/config/all.ts +0 -66
  221. package/src/config/builtIn.ts +0 -37
  222. package/src/config/config-resolvers.ts +0 -359
  223. package/src/config/config.ts +0 -312
  224. package/src/config/index.ts +0 -7
  225. package/src/config/load.ts +0 -84
  226. package/src/config/minimal.ts +0 -58
  227. package/src/config/recommended.ts +0 -58
  228. package/src/config/rules.ts +0 -46
  229. package/src/config/types.ts +0 -168
  230. package/src/config/utils.ts +0 -208
  231. package/src/decorators/__tests__/remove-x-internal.test.ts +0 -316
  232. package/src/decorators/common/info-description-override.ts +0 -24
  233. package/src/decorators/common/operation-description-override.ts +0 -30
  234. package/src/decorators/common/registry-dependencies.ts +0 -25
  235. package/src/decorators/common/remove-x-internal.ts +0 -59
  236. package/src/decorators/common/tag-description-override.ts +0 -25
  237. package/src/decorators/oas2/index.ts +0 -14
  238. package/src/decorators/oas3/index.ts +0 -14
  239. package/src/format/codeframes.ts +0 -210
  240. package/src/format/format.ts +0 -339
  241. package/src/index.ts +0 -68
  242. package/src/js-yaml/index.ts +0 -18
  243. package/src/lint.ts +0 -125
  244. package/src/oas-types.ts +0 -62
  245. package/src/redocly/__tests__/redocly-client.test.ts +0 -140
  246. package/src/redocly/index.ts +0 -182
  247. package/src/redocly/redocly-client-types.ts +0 -10
  248. package/src/redocly/registry-api-types.ts +0 -32
  249. package/src/redocly/registry-api.ts +0 -134
  250. package/src/ref-utils.ts +0 -80
  251. package/src/resolve.ts +0 -378
  252. package/src/rules/__tests__/fixtures/invalid-yaml.yaml +0 -1
  253. package/src/rules/__tests__/fixtures/ref.yaml +0 -1
  254. package/src/rules/__tests__/no-unresolved-refs.test.ts +0 -168
  255. package/src/rules/ajv.ts +0 -103
  256. package/src/rules/common/__tests__/info-description.test.ts +0 -102
  257. package/src/rules/common/__tests__/info-license.test.ts +0 -62
  258. package/src/rules/common/__tests__/license-url.test.ts +0 -63
  259. package/src/rules/common/__tests__/no-ambiguous-paths.test.ts +0 -96
  260. package/src/rules/common/__tests__/no-enum-type-mismatch.test.ts +0 -209
  261. package/src/rules/common/__tests__/no-identical-paths.test.ts +0 -58
  262. package/src/rules/common/__tests__/no-path-trailing-slash.test.ts +0 -85
  263. package/src/rules/common/__tests__/operation-2xx-response.test.ts +0 -91
  264. package/src/rules/common/__tests__/operation-4xx-response.test.ts +0 -107
  265. package/src/rules/common/__tests__/operation-operationId-unique.test.ts +0 -76
  266. package/src/rules/common/__tests__/operation-operationId-url-safe.test.ts +0 -45
  267. package/src/rules/common/__tests__/operation-parameters-unique.test.ts +0 -167
  268. package/src/rules/common/__tests__/operation-security-defined.test.ts +0 -69
  269. package/src/rules/common/__tests__/operation-singular-tag.test.ts +0 -72
  270. package/src/rules/common/__tests__/path-http-verbs-order.test.ts +0 -95
  271. package/src/rules/common/__tests__/path-not-include-query.test.ts +0 -64
  272. package/src/rules/common/__tests__/path-params-defined.test.ts +0 -133
  273. package/src/rules/common/__tests__/paths-kebab-case.test.ts +0 -108
  274. package/src/rules/common/__tests__/scalar-property-missing-example.test.ts +0 -207
  275. package/src/rules/common/__tests__/spec.test.ts +0 -62
  276. package/src/rules/common/__tests__/tag-description.test.ts +0 -65
  277. package/src/rules/common/__tests__/tags-alphabetical.test.ts +0 -64
  278. package/src/rules/common/assertions/__tests__/asserts.test.ts +0 -231
  279. package/src/rules/common/assertions/__tests__/index.test.ts +0 -65
  280. package/src/rules/common/assertions/__tests__/utils.test.ts +0 -89
  281. package/src/rules/common/assertions/asserts.ts +0 -137
  282. package/src/rules/common/assertions/index.ts +0 -75
  283. package/src/rules/common/assertions/utils.ts +0 -167
  284. package/src/rules/common/info-contact.ts +0 -15
  285. package/src/rules/common/info-description.ts +0 -10
  286. package/src/rules/common/info-license-url.ts +0 -15
  287. package/src/rules/common/license-url.ts +0 -10
  288. package/src/rules/common/no-ambiguous-paths.ts +0 -50
  289. package/src/rules/common/no-enum-type-mismatch.ts +0 -49
  290. package/src/rules/common/no-http-verbs-in-paths.ts +0 -36
  291. package/src/rules/common/no-identical-paths.ts +0 -24
  292. package/src/rules/common/no-invalid-parameter-examples.ts +0 -36
  293. package/src/rules/common/no-invalid-schema-examples.ts +0 -27
  294. package/src/rules/common/no-path-trailing-slash.ts +0 -15
  295. package/src/rules/common/operation-2xx-response.ts +0 -16
  296. package/src/rules/common/operation-4xx-response.ts +0 -17
  297. package/src/rules/common/operation-description.ts +0 -13
  298. package/src/rules/common/operation-operationId-unique.ts +0 -21
  299. package/src/rules/common/operation-operationId-url-safe.ts +0 -19
  300. package/src/rules/common/operation-operationId.ts +0 -17
  301. package/src/rules/common/operation-parameters-unique.ts +0 -48
  302. package/src/rules/common/operation-security-defined.ts +0 -45
  303. package/src/rules/common/operation-singular-tag.ts +0 -17
  304. package/src/rules/common/operation-summary.ts +0 -13
  305. package/src/rules/common/operation-tag-defined.ts +0 -26
  306. package/src/rules/common/parameter-description.ts +0 -22
  307. package/src/rules/common/path-declaration-must-exist.ts +0 -15
  308. package/src/rules/common/path-excludes-patterns.ts +0 -23
  309. package/src/rules/common/path-http-verbs-order.ts +0 -30
  310. package/src/rules/common/path-not-include-query.ts +0 -17
  311. package/src/rules/common/path-params-defined.ts +0 -58
  312. package/src/rules/common/path-segment-plural.ts +0 -31
  313. package/src/rules/common/paths-kebab-case.ts +0 -16
  314. package/src/rules/common/response-contains-header.ts +0 -30
  315. package/src/rules/common/scalar-property-missing-example.ts +0 -55
  316. package/src/rules/common/spec.ts +0 -143
  317. package/src/rules/common/tag-description.ts +0 -10
  318. package/src/rules/common/tags-alphabetical.ts +0 -20
  319. package/src/rules/no-unresolved-refs.ts +0 -51
  320. package/src/rules/oas2/__tests__/boolean-parameter-prefixes.test.ts +0 -110
  321. package/src/rules/oas2/__tests__/response-contains-header.test.ts +0 -174
  322. package/src/rules/oas2/__tests__/response-contains-property.test.ts +0 -155
  323. package/src/rules/oas2/__tests__/spec/fixtures/description.md +0 -1
  324. package/src/rules/oas2/__tests__/spec/info.test.ts +0 -355
  325. package/src/rules/oas2/__tests__/spec/operation.test.ts +0 -123
  326. package/src/rules/oas2/__tests__/spec/paths.test.ts +0 -245
  327. package/src/rules/oas2/__tests__/spec/referenceableScalars.test.ts +0 -31
  328. package/src/rules/oas2/__tests__/spec/utils.ts +0 -32
  329. package/src/rules/oas2/boolean-parameter-prefixes.ts +0 -26
  330. package/src/rules/oas2/index.ts +0 -89
  331. package/src/rules/oas2/remove-unused-components.ts +0 -76
  332. package/src/rules/oas2/request-mime-type.ts +0 -17
  333. package/src/rules/oas2/response-contains-property.ts +0 -36
  334. package/src/rules/oas2/response-mime-type.ts +0 -17
  335. package/src/rules/oas3/__tests__/boolean-parameter-prefixes.test.ts +0 -111
  336. package/src/rules/oas3/__tests__/fixtures/common.yaml +0 -11
  337. package/src/rules/oas3/__tests__/no-empty-enum-servers.com.test.ts +0 -205
  338. package/src/rules/oas3/__tests__/no-example-value-and-externalValue.test.ts +0 -65
  339. package/src/rules/oas3/__tests__/no-invalid-media-type-examples.test.ts +0 -392
  340. package/src/rules/oas3/__tests__/no-server-example.com.test.ts +0 -60
  341. package/src/rules/oas3/__tests__/no-server-trailing-slash.test.ts +0 -79
  342. package/src/rules/oas3/__tests__/no-unused-components.test.ts +0 -131
  343. package/src/rules/oas3/__tests__/response-contains-header.test.ts +0 -273
  344. package/src/rules/oas3/__tests__/response-contains-property.test.ts +0 -403
  345. package/src/rules/oas3/__tests__/spec/callbacks.test.ts +0 -41
  346. package/src/rules/oas3/__tests__/spec/fixtures/description.md +0 -1
  347. package/src/rules/oas3/__tests__/spec/info.test.ts +0 -391
  348. package/src/rules/oas3/__tests__/spec/operation.test.ts +0 -253
  349. package/src/rules/oas3/__tests__/spec/paths.test.ts +0 -284
  350. package/src/rules/oas3/__tests__/spec/referenceableScalars.test.ts +0 -77
  351. package/src/rules/oas3/__tests__/spec/servers.test.ts +0 -499
  352. package/src/rules/oas3/__tests__/spec/spec.test.ts +0 -288
  353. package/src/rules/oas3/__tests__/spec/utils.ts +0 -32
  354. package/src/rules/oas3/boolean-parameter-prefixes.ts +0 -28
  355. package/src/rules/oas3/index.ts +0 -105
  356. package/src/rules/oas3/no-empty-servers.ts +0 -22
  357. package/src/rules/oas3/no-example-value-and-externalValue.ts +0 -14
  358. package/src/rules/oas3/no-invalid-media-type-examples.ts +0 -41
  359. package/src/rules/oas3/no-server-example.com.ts +0 -14
  360. package/src/rules/oas3/no-server-trailing-slash.ts +0 -15
  361. package/src/rules/oas3/no-servers-empty-enum.ts +0 -67
  362. package/src/rules/oas3/no-undefined-server-variable.ts +0 -30
  363. package/src/rules/oas3/no-unused-components.ts +0 -75
  364. package/src/rules/oas3/remove-unused-components.ts +0 -84
  365. package/src/rules/oas3/request-mime-type.ts +0 -31
  366. package/src/rules/oas3/response-contains-property.ts +0 -38
  367. package/src/rules/oas3/response-mime-type.ts +0 -31
  368. package/src/rules/other/stats.ts +0 -44
  369. package/src/rules/utils.ts +0 -123
  370. package/src/types/index.ts +0 -138
  371. package/src/types/oas2.ts +0 -397
  372. package/src/types/oas3.ts +0 -515
  373. package/src/types/oas3_1.ts +0 -253
  374. package/src/types/redocly-yaml.ts +0 -647
  375. package/src/typings/common.ts +0 -9
  376. package/src/typings/openapi.ts +0 -298
  377. package/src/typings/swagger.ts +0 -236
  378. package/src/utils.ts +0 -193
  379. package/src/visitors.ts +0 -448
  380. package/src/walk.ts +0 -416
  381. package/tsconfig.json +0 -8
  382. package/tsconfig.tsbuildinfo +0 -1
@@ -1,210 +0,0 @@
1
- import { gray, red, options as colorOptions } from 'colorette';
2
- import * as yamlAst from 'yaml-ast-parser';
3
- import { unescapePointer } from '../ref-utils';
4
- import { LineColLocationObject, Loc, LocationObject } from '../walk';
5
-
6
- type YAMLMapping = yamlAst.YAMLMapping & { kind: yamlAst.Kind.MAPPING };
7
- type YAMLMap = yamlAst.YamlMap & { kind: yamlAst.Kind.MAP };
8
- type YAMLAnchorReference = yamlAst.YAMLAnchorReference & { kind: yamlAst.Kind.ANCHOR_REF };
9
- type YAMLSequence = yamlAst.YAMLSequence & { kind: yamlAst.Kind.SEQ };
10
- type YAMLScalar = yamlAst.YAMLScalar & { kind: yamlAst.Kind.SCALAR };
11
- type YAMLNode = YAMLMapping | YAMLMap | YAMLAnchorReference | YAMLSequence | YAMLScalar;
12
-
13
- const MAX_LINE_LENGTH = 150;
14
- const MAX_CODEFRAME_LINES = 3;
15
-
16
- // TODO: temporary
17
- function parsePointer(pointer: string) {
18
- return pointer.substr(2).split('/').map(unescapePointer);
19
- }
20
-
21
- export function getCodeframe(location: LineColLocationObject, color: boolean) {
22
- colorOptions.enabled = color;
23
- const { start, end = { line: start.line, col: start.col + 1 }, source } = location;
24
- const lines = source.getLines();
25
- const startLineNum = start.line;
26
- const endLineNum = Math.max(Math.min(end.line, lines.length), start.line);
27
- let skipLines = Math.max(endLineNum - startLineNum - MAX_CODEFRAME_LINES + 1, 0);
28
- if (skipLines < 2) skipLines = 0; // do not skip one line
29
-
30
- // Lines specified like this: ["prefix", "string"],
31
- const prefixedLines: [string, string][] = [];
32
-
33
- let currentPad = 0;
34
-
35
- for (let i = startLineNum; i <= endLineNum; i++) {
36
- if (skipLines > 0 && i >= endLineNum - skipLines) break;
37
- const line = lines[i - 1] || '';
38
- if (line !== '') currentPad = padSize(line);
39
- let startIdx = i === startLineNum ? start.col - 1 : currentPad;
40
- let endIdx = i === endLineNum ? end.col - 1 : line.length;
41
-
42
- prefixedLines.push([`${i}`, markLine(line, startIdx, endIdx, red)]);
43
- if (!color) prefixedLines.push(['', underlineLine(line, startIdx, endIdx)]);
44
- }
45
-
46
- if (skipLines > 0) {
47
- prefixedLines.push([`…`, `${whitespace(currentPad)}${gray(`< ${skipLines} more lines >`)}`]);
48
- // print last line
49
- prefixedLines.push([`${endLineNum}`, markLine(lines[endLineNum - 1], -1, end.col - 1, red)]);
50
-
51
- if (!color) prefixedLines.push(['', underlineLine(lines[endLineNum - 1], -1, end.col - 1)]);
52
- }
53
-
54
- return printPrefixedLines([
55
- [`${startLineNum - 2}`, markLine(lines[startLineNum - 1 - 2])],
56
- [`${startLineNum - 1}`, markLine(lines[startLineNum - 1 - 1])],
57
- ...prefixedLines,
58
- [`${endLineNum + 1}`, markLine(lines[endLineNum - 1 + 1])],
59
- [`${endLineNum + 2}`, markLine(lines[endLineNum - 1 + 2])],
60
- ]);
61
-
62
- function markLine(
63
- line: string,
64
- startIdx: number = -1,
65
- endIdx: number = +Infinity,
66
- variant = gray,
67
- ) {
68
- if (!color) return line;
69
- if (!line) return line;
70
-
71
- if (startIdx === -1) {
72
- startIdx = padSize(line);
73
- }
74
-
75
- endIdx = Math.min(endIdx, line.length);
76
- return (
77
- line.substr(0, startIdx) + variant(line.substring(startIdx, endIdx)) + line.substr(endIdx)
78
- );
79
- }
80
- }
81
-
82
- function printPrefixedLines(lines: [string, string][]): string {
83
- const existingLines = lines.filter(([_, line]) => line !== undefined);
84
-
85
- const padLen = Math.max(...existingLines.map(([prefix]) => prefix.length));
86
- const dedentLen = Math.min(
87
- ...existingLines.map(([_, line]) => (line === '' ? Infinity : padSize(line))),
88
- );
89
-
90
- return existingLines
91
- .map(
92
- ([prefix, line]) =>
93
- gray(leftPad(padLen, prefix) + ' |') +
94
- (line ? ' ' + limitLineLength(line.substring(dedentLen)) : ''),
95
- )
96
- .join('\n');
97
- }
98
-
99
- function limitLineLength(line: string, maxLen: number = MAX_LINE_LENGTH) {
100
- const overflowLen = line.length - maxLen;
101
- if (overflowLen > 0) {
102
- const charsMoreText = gray(`...<${overflowLen} chars>`);
103
- return line.substring(0, maxLen - charsMoreText.length) + charsMoreText;
104
- } else {
105
- return line;
106
- }
107
- }
108
-
109
- function underlineLine(line: string, startIdx: number = -1, endIdx: number = +Infinity) {
110
- if (startIdx === -1) {
111
- startIdx = padSize(line);
112
- }
113
-
114
- endIdx = Math.min(endIdx, line.length);
115
- return whitespace(startIdx) + '^'.repeat(Math.max(endIdx - startIdx, 1));
116
- }
117
-
118
- function whitespace(len: number): string {
119
- return ' '.repeat(len);
120
- }
121
-
122
- function leftPad(len: number, str: string): string {
123
- return whitespace(len - str.length) + str;
124
- }
125
-
126
- function padSize(line: string): number {
127
- for (let i = 0; i < line.length; i++) {
128
- if (line[i] !== ' ') return i;
129
- }
130
- return line.length;
131
- }
132
-
133
- export function getLineColLocation(location: LocationObject): LineColLocationObject {
134
- if (location.pointer === undefined) return location;
135
-
136
- const { source, pointer, reportOnKey } = location;
137
- const ast = source.getAst(yamlAst.safeLoad) as YAMLNode;
138
- const astNode = getAstNodeByPointer(ast, pointer, !!reportOnKey);
139
- return {
140
- ...location,
141
- pointer: undefined,
142
- ...positionsToLoc(source.body, astNode?.startPosition ?? 1, astNode?.endPosition ?? 1),
143
- };
144
- }
145
-
146
- function positionsToLoc(
147
- source: string,
148
- startPos: number,
149
- endPos: number,
150
- ): { start: Loc; end: Loc } {
151
- let currentLine = 1;
152
- let currentCol = 1;
153
- let start: Loc = { line: 1, col: 1 };
154
-
155
- for (let i = 0; i < endPos - 1; i++) {
156
- if (i === startPos - 1) {
157
- start = { line: currentLine, col: currentCol + 1 };
158
- }
159
- if (source[i] === '\n') {
160
- currentLine++;
161
- currentCol = 1;
162
- if (i === startPos - 1) {
163
- start = { line: currentLine, col: currentCol };
164
- }
165
-
166
- if (source[i + 1] === '\r') i++; // TODO: test it
167
- continue;
168
- }
169
- currentCol++;
170
- }
171
-
172
- const end = startPos === endPos ? { ...start } : { line: currentLine, col: currentCol + 1 };
173
- return { start, end };
174
- }
175
-
176
- export function getAstNodeByPointer(root: YAMLNode, pointer: string, reportOnKey: boolean) {
177
- const pointerSegments = parsePointer(pointer);
178
- if (root === undefined) {
179
- return undefined;
180
- }
181
-
182
- let currentNode = root;
183
- for (const key of pointerSegments) {
184
- if (currentNode.kind === yamlAst.Kind.MAP) {
185
- const mapping = currentNode.mappings.find((m) => m.key.value === key);
186
- if (!mapping) break;
187
- currentNode = mapping as YAMLNode;
188
- if (!mapping?.value) break; // If node has value - return value, if not - return node itself
189
- currentNode = mapping.value as YAMLNode;
190
- } else if (currentNode.kind === yamlAst.Kind.SEQ) {
191
- const elem = currentNode.items[parseInt(key, 10)] as YAMLNode;
192
- if (!elem) break;
193
- currentNode = elem as YAMLNode;
194
- }
195
- }
196
-
197
- if (!reportOnKey) {
198
- return currentNode;
199
- } else {
200
- const parent = currentNode.parent as YAMLNode;
201
- if (!parent) return currentNode;
202
- if (parent.kind === yamlAst.Kind.SEQ) {
203
- return currentNode;
204
- } else if (parent.kind === yamlAst.Kind.MAPPING) {
205
- return parent.key;
206
- } else {
207
- return currentNode;
208
- }
209
- }
210
- }
@@ -1,339 +0,0 @@
1
- import * as path from 'path';
2
- import {
3
- options as colorOptions,
4
- gray,
5
- blue,
6
- bgRed,
7
- bgYellow,
8
- black,
9
- yellow,
10
- red,
11
- } from 'colorette';
12
-
13
- const coreVersion = require('../../package.json').version;
14
-
15
- import { NormalizedProblem, ProblemSeverity, LineColLocationObject, LocationObject } from '../walk';
16
- import { getCodeframe, getLineColLocation } from './codeframes';
17
- import { env } from "../config";
18
-
19
- export type Totals = {
20
- errors: number;
21
- warnings: number;
22
- ignored: number;
23
- };
24
-
25
- const ERROR_MESSAGE = {
26
- INVALID_SEVERITY_LEVEL: 'Invalid severity level; accepted values: error or warn',
27
- };
28
-
29
- const BG_COLORS = {
30
- warn: (str: string) => bgYellow(black(str)),
31
- error: bgRed,
32
- };
33
-
34
- const COLORS = {
35
- warn: yellow,
36
- error: red,
37
- };
38
-
39
- const SEVERITY_NAMES = {
40
- warn: 'Warning',
41
- error: 'Error',
42
- };
43
-
44
- const CODECLIMATE_SEVERITY_MAPPING = {
45
- error: 'critical',
46
- warn: 'minor',
47
- };
48
-
49
- const MAX_SUGGEST = 5;
50
-
51
- function severityToNumber(severity: ProblemSeverity) {
52
- return severity === 'error' ? 1 : 2;
53
- }
54
-
55
- export type OutputFormat = 'codeframe' | 'stylish' | 'json' | 'checkstyle' | 'codeclimate';
56
-
57
- export function getTotals(problems: (NormalizedProblem & { ignored?: boolean })[]): Totals {
58
- let errors = 0;
59
- let warnings = 0;
60
- let ignored = 0;
61
-
62
- for (const m of problems) {
63
- if (m.ignored) {
64
- ignored++;
65
- continue;
66
- }
67
- if (m.severity === 'error') errors++;
68
- if (m.severity === 'warn') warnings++;
69
- }
70
-
71
- return {
72
- errors,
73
- warnings,
74
- ignored,
75
- };
76
- }
77
-
78
- export function formatProblems(
79
- problems: (NormalizedProblem & { ignored?: boolean })[],
80
- opts: {
81
- maxProblems?: number;
82
- cwd?: string;
83
- format?: OutputFormat;
84
- color?: boolean;
85
- totals: Totals;
86
- version: string;
87
- },
88
- ) {
89
- const {
90
- maxProblems = 100,
91
- cwd = process.cwd(),
92
- format = 'codeframe',
93
- color = colorOptions.enabled,
94
- totals = getTotals(problems),
95
- version = coreVersion,
96
- } = opts;
97
-
98
- colorOptions.enabled = color; // force colors if specified
99
-
100
- const totalProblems = problems.length;
101
- problems = problems.filter((m) => !m.ignored);
102
- const ignoredProblems = totalProblems - problems.length;
103
-
104
- problems = problems
105
- .sort((a, b) => severityToNumber(a.severity) - severityToNumber(b.severity))
106
- .slice(0, maxProblems);
107
-
108
- if (!totalProblems && format !== 'json') return;
109
-
110
- switch (format) {
111
- case 'json':
112
- outputJSON();
113
- break;
114
- case 'codeframe':
115
- for (let i = 0; i < problems.length; i++) {
116
- const problem = problems[i];
117
- process.stderr.write(`${formatCodeframe(problem, i)}\n`);
118
- }
119
- break;
120
- case 'stylish': {
121
- const groupedByFile = groupByFiles(problems);
122
- for (const [file, { ruleIdPad, locationPad: positionPad, fileProblems }] of Object.entries(
123
- groupedByFile,
124
- )) {
125
- process.stderr.write(`${blue(path.relative(cwd, file))}:\n`);
126
-
127
- for (let i = 0; i < fileProblems.length; i++) {
128
- const problem = fileProblems[i];
129
- process.stderr.write(`${formatStylish(problem, positionPad, ruleIdPad)}\n`);
130
- }
131
-
132
- process.stderr.write('\n');
133
- }
134
- break;
135
- }
136
- case 'checkstyle': {
137
- const groupedByFile = groupByFiles(problems);
138
-
139
- process.stdout.write('<?xml version="1.0" encoding="UTF-8"?>\n');
140
- process.stdout.write('<checkstyle version="4.3">\n');
141
-
142
- for (const [file, { fileProblems }] of Object.entries(groupedByFile)) {
143
- process.stdout.write(`<file name="${xmlEscape(path.relative(cwd, file))}">\n`);
144
- fileProblems.forEach(formatCheckstyle);
145
- process.stdout.write(`</file>\n`);
146
- }
147
-
148
- process.stdout.write(`</checkstyle>\n`);
149
- break;
150
- }
151
- case 'codeclimate':
152
- outputForCodeClimate();
153
- break;
154
- }
155
-
156
- if (totalProblems - ignoredProblems > maxProblems) {
157
- process.stderr.write(
158
- `< ... ${totalProblems - maxProblems} more problems hidden > ${gray(
159
- 'increase with `--max-problems N`',
160
- )}\n`,
161
- );
162
- }
163
-
164
- function outputForCodeClimate() {
165
- const issues = problems.map((p) => {
166
- const location = p.location[0]; // TODO: support multiple location
167
- const lineCol = getLineColLocation(location);
168
- return {
169
- description: p.message,
170
- location: {
171
- path: path.relative(cwd, location.source.absoluteRef),
172
- lines: {
173
- begin: lineCol.start.line,
174
- },
175
- },
176
- severity: CODECLIMATE_SEVERITY_MAPPING[p.severity],
177
- fingerprint: `${p.ruleId}${p.location.length > 0 ? '-' + p.location[0].pointer : ''}`,
178
- };
179
- });
180
- process.stdout.write(JSON.stringify(issues, null, 2));
181
- }
182
-
183
- function outputJSON() {
184
- const resultObject = {
185
- totals,
186
- version,
187
- problems: problems.map((p) => {
188
- let problem = {
189
- ...p,
190
- location: p.location.map((location: any) => ({
191
- ...location,
192
- source: {
193
- ref: path.relative(cwd, location.source.absoluteRef),
194
- },
195
- })),
196
- from: p.from
197
- ? {
198
- ...p.from,
199
- source: {
200
- ref: path.relative(cwd, p.from?.source.absoluteRef || cwd),
201
- },
202
- }
203
- : undefined,
204
- };
205
-
206
- if (env.FORMAT_JSON_WITH_CODEFRAMES) {
207
- const location = p.location[0]; // TODO: support multiple locations
208
- const loc = getLineColLocation(location);
209
- (problem as any).codeframe = getCodeframe(loc, color);
210
- }
211
- return problem;
212
- }),
213
- };
214
- process.stdout.write(JSON.stringify(resultObject, null, 2));
215
- }
216
-
217
- function getBgColor(problem: NormalizedProblem) {
218
- const { severity } = problem;
219
- if (!BG_COLORS[severity]) {
220
- throw new Error(ERROR_MESSAGE.INVALID_SEVERITY_LEVEL);
221
- }
222
- return BG_COLORS[severity];
223
- }
224
-
225
- function formatCodeframe(problem: NormalizedProblem, idx: number) {
226
- const bgColor = getBgColor(problem);
227
- const location = problem.location[0]; // TODO: support multiple locations
228
- const relativePath = path.relative(cwd, location.source.absoluteRef);
229
- const loc = getLineColLocation(location);
230
- const atPointer = location.pointer ? gray(`at ${location.pointer}`) : '';
231
- const fileWithLoc = `${relativePath}:${loc.start.line}:${loc.start.col}`;
232
- return (
233
- `[${idx + 1}] ${bgColor(fileWithLoc)} ${atPointer}\n\n` +
234
- `${problem.message}\n\n` +
235
- formatDidYouMean(problem) +
236
- getCodeframe(loc, color) +
237
- '\n\n' +
238
- formatFrom(cwd, problem.from) +
239
- `${SEVERITY_NAMES[problem.severity]} was generated by the ${blue(problem.ruleId)} rule.\n\n`
240
- );
241
- }
242
-
243
- function formatStylish(problem: OnlyLineColProblem, locationPad: number, ruleIdPad: number) {
244
- const color = COLORS[problem.severity];
245
- if (!SEVERITY_NAMES[problem.severity]) {
246
- return 'Error not found severity. Please check your config file. Allowed values: \`warn,error,off\`'
247
- }
248
- const severityName = color(SEVERITY_NAMES[problem.severity].toLowerCase().padEnd(7));
249
- const { start } = problem.location[0];
250
- return ` ${`${start.line}:${start.col}`.padEnd(
251
- locationPad,
252
- )} ${severityName} ${problem.ruleId.padEnd(ruleIdPad)} ${problem.message}`;
253
- }
254
-
255
- function formatCheckstyle(problem: OnlyLineColProblem) {
256
- const { line, col } = problem.location[0].start;
257
- const severity = problem.severity == 'warn' ? 'warning' : 'error';
258
- const message = xmlEscape(problem.message);
259
- const source = xmlEscape(problem.ruleId);
260
- process.stdout.write(
261
- `<error line="${line}" column="${col}" severity="${severity}" message="${message}" source="${source}" />\n`,
262
- );
263
- }
264
- }
265
-
266
- function formatFrom(cwd: string, location?: LocationObject) {
267
- if (!location) return '';
268
- const relativePath = path.relative(cwd, location.source.absoluteRef);
269
- const loc = getLineColLocation(location);
270
- const fileWithLoc = `${relativePath}:${loc.start.line}:${loc.start.col}`;
271
-
272
- return `referenced from ${blue(fileWithLoc)}\n\n`;
273
- }
274
-
275
- function formatDidYouMean(problem: NormalizedProblem) {
276
- if (problem.suggest.length === 0) return '';
277
-
278
- if (problem.suggest.length === 1) {
279
- return `Did you mean: ${problem.suggest[0]} ?\n\n`;
280
- } else {
281
- return `Did you mean:\n - ${problem.suggest.slice(0, MAX_SUGGEST).join('\n - ')}\n\n`;
282
- }
283
- }
284
-
285
- type OnlyLineColProblem = Omit<NormalizedProblem, 'location'> & {
286
- location: LineColLocationObject[];
287
- };
288
-
289
- const groupByFiles = (problems: NormalizedProblem[]) => {
290
- const fileGroups: Record<
291
- string,
292
- {
293
- locationPad: number;
294
- ruleIdPad: number;
295
- fileProblems: OnlyLineColProblem[];
296
- }
297
- > = {};
298
- for (const problem of problems) {
299
- const absoluteRef = problem.location[0].source.absoluteRef; // TODO: multiple errors
300
- fileGroups[absoluteRef] = fileGroups[absoluteRef] || {
301
- fileProblems: [],
302
- ruleIdPad: 0,
303
- locationPad: 0,
304
- };
305
-
306
- const mappedProblem = { ...problem, location: problem.location.map(getLineColLocation) };
307
- fileGroups[absoluteRef].fileProblems.push(mappedProblem);
308
- fileGroups[absoluteRef].ruleIdPad = Math.max(
309
- problem.ruleId.length,
310
- fileGroups[absoluteRef].ruleIdPad,
311
- );
312
-
313
- fileGroups[absoluteRef].locationPad = Math.max(
314
- Math.max(...mappedProblem.location.map((loc) => `${loc.start.line}:${loc.start.col}`.length)),
315
- fileGroups[absoluteRef].locationPad,
316
- );
317
- }
318
-
319
- return fileGroups;
320
- };
321
-
322
- function xmlEscape(s: string): string {
323
- return s.replace(/[<>&"'\x00-\x1F\x7F\u0080-\uFFFF]/gu, (char) => {
324
- switch (char) {
325
- case '<':
326
- return '&lt;';
327
- case '>':
328
- return '&gt;';
329
- case '&':
330
- return '&amp;';
331
- case '"':
332
- return '&quot;';
333
- case "'":
334
- return '&apos;';
335
- default:
336
- return `&#${char.charCodeAt(0)};`;
337
- }
338
- });
339
- }
package/src/index.ts DELETED
@@ -1,68 +0,0 @@
1
- export { BundleOutputFormat, readFileFromUrl, slash } from './utils';
2
- export { Oas3_1Types } from './types/oas3_1';
3
- export { Oas3Types } from './types/oas3';
4
- export { Oas2Types } from './types/oas2';
5
- export { ConfigTypes } from './types/redocly-yaml';
6
- export {
7
- Oas3Definition,
8
- Oas3_1Definition,
9
- Oas3Components,
10
- Oas3PathItem,
11
- Oas3Paths,
12
- Oas3ComponentName,
13
- Oas3Schema,
14
- Oas3_1Schema,
15
- Oas3Tag,
16
- Oas3_1Webhooks,
17
- Referenced,
18
- } from './typings/openapi';
19
- export { Oas2Definition } from './typings/swagger';
20
- export { StatsAccumulator, StatsName } from './typings/common';
21
- export { normalizeTypes } from './types';
22
- export { Stats } from './rules/other/stats';
23
-
24
- export {
25
- Config,
26
- LintConfig,
27
- RawConfig,
28
- IGNORE_FILE,
29
- Region,
30
- getMergedConfig,
31
- transformConfig,
32
- loadConfig,
33
- getConfig,
34
- findConfig,
35
- CONFIG_FILE_NAMES,
36
- } from './config';
37
-
38
-
39
- export { RedoclyClient, isRedoclyRegistryURL } from './redocly';
40
-
41
- export {
42
- Source,
43
- BaseResolver,
44
- Document,
45
- resolveDocument,
46
- ResolveError,
47
- YamlParseError,
48
- makeDocumentFromString,
49
- } from './resolve';
50
- export { parseYaml, stringifyYaml } from './js-yaml';
51
- export { unescapePointer, isRef } from './ref-utils';
52
- export { detectOpenAPI, OasMajorVersion, openAPIMajor, OasVersion } from './oas-types';
53
- export { normalizeVisitors } from './visitors';
54
-
55
- export {
56
- WalkContext,
57
- walkDocument,
58
- NormalizedProblem,
59
- ProblemSeverity,
60
- LineColLocationObject,
61
- LocationObject,
62
- Loc,
63
- } from './walk';
64
-
65
- export { getAstNodeByPointer, getLineColLocation } from './format/codeframes';
66
- export { formatProblems, OutputFormat, getTotals, Totals } from './format/format';
67
- export { lint, lint as validate, lintDocument, lintFromString, lintConfig } from './lint';
68
- export { bundle, bundleDocument, mapTypeToComponent } from './bundle';
@@ -1,18 +0,0 @@
1
- // TODO: add a type for "types" https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/js-yaml/index.d.ts
2
- // @ts-ignore
3
- import { JSON_SCHEMA, types, LoadOptions, DumpOptions, load, dump } from 'js-yaml';
4
-
5
- const DEFAULT_SCHEMA_WITHOUT_TIMESTAMP = JSON_SCHEMA.extend({
6
- implicit: [types.merge],
7
- explicit: [
8
- types.binary,
9
- types.omap,
10
- types.pairs,
11
- types.set,
12
- ],
13
- });
14
-
15
- export const parseYaml = (str: string, opts?: LoadOptions): unknown =>
16
- load(str, {schema: DEFAULT_SCHEMA_WITHOUT_TIMESTAMP, ...opts});
17
-
18
- export const stringifyYaml = (obj: any, opts?: DumpOptions): string => dump(obj, opts);