@redocly/openapi-core 1.0.0-beta.126 → 1.0.0-beta.128

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 (289) hide show
  1. package/lib/bundle.js +21 -4
  2. package/lib/config/all.js +1 -0
  3. package/lib/config/config-resolvers.js +8 -2
  4. package/lib/config/minimal.js +1 -0
  5. package/lib/config/recommended.js +1 -0
  6. package/lib/config/types.d.ts +1 -1
  7. package/lib/config/utils.js +15 -1
  8. package/lib/lint.js +17 -2
  9. package/lib/rules/common/spec-strict-refs.d.ts +2 -0
  10. package/lib/rules/common/spec-strict-refs.js +30 -0
  11. package/lib/rules/common/spec.js +1 -0
  12. package/lib/rules/oas2/index.d.ts +1 -0
  13. package/lib/rules/oas2/index.js +2 -0
  14. package/lib/rules/oas2/request-mime-type.d.ts +1 -1
  15. package/lib/rules/oas2/response-mime-type.d.ts +1 -1
  16. package/lib/rules/oas3/index.js +2 -0
  17. package/lib/rules/oas3/operation-4xx-problem-details-rfc7807.d.ts +2 -2
  18. package/lib/rules/oas3/operation-4xx-problem-details-rfc7807.js +3 -3
  19. package/lib/rules/oas3/request-mime-type.d.ts +1 -1
  20. package/lib/rules/oas3/response-mime-type.d.ts +1 -1
  21. package/lib/rules/oas3/spec-components-invalid-map-name.js +0 -5
  22. package/lib/types/redocly-yaml.js +6 -1
  23. package/lib/walk.d.ts +6 -5
  24. package/lib/walk.js +26 -31
  25. package/package.json +1 -1
  26. package/__tests__/utils.ts +0 -88
  27. package/src/__tests__/__snapshots__/bundle.test.ts.snap +0 -437
  28. package/src/__tests__/bundle.test.ts +0 -236
  29. package/src/__tests__/codeframes.test.ts +0 -530
  30. package/src/__tests__/fixtures/.redocly.lint-ignore.yaml +0 -5
  31. package/src/__tests__/fixtures/extension.js +0 -24
  32. package/src/__tests__/fixtures/refs/definitions.yaml +0 -3
  33. package/src/__tests__/fixtures/refs/examples.yaml +0 -8
  34. package/src/__tests__/fixtures/refs/external-request-body.yaml +0 -13
  35. package/src/__tests__/fixtures/refs/externalref.yaml +0 -35
  36. package/src/__tests__/fixtures/refs/hosted.yaml +0 -35
  37. package/src/__tests__/fixtures/refs/openapi-with-external-refs-conflicting-names.yaml +0 -21
  38. package/src/__tests__/fixtures/refs/openapi-with-external-refs.yaml +0 -33
  39. package/src/__tests__/fixtures/refs/openapi-with-url-refs.yaml +0 -18
  40. package/src/__tests__/fixtures/refs/param-b.yaml +0 -1
  41. package/src/__tests__/fixtures/refs/param-c.yaml +0 -1
  42. package/src/__tests__/fixtures/refs/rename.yaml +0 -1
  43. package/src/__tests__/fixtures/refs/requestBody.yaml +0 -9
  44. package/src/__tests__/fixtures/refs/schema-a.yaml +0 -1
  45. package/src/__tests__/fixtures/refs/simple.yaml +0 -1
  46. package/src/__tests__/fixtures/refs/vendor.schema.yaml +0 -20
  47. package/src/__tests__/fixtures/resolve/External.yaml +0 -10
  48. package/src/__tests__/fixtures/resolve/External2.yaml +0 -4
  49. package/src/__tests__/fixtures/resolve/description.md +0 -3
  50. package/src/__tests__/fixtures/resolve/externalInfo.yaml +0 -4
  51. package/src/__tests__/fixtures/resolve/externalLicense.yaml +0 -1
  52. package/src/__tests__/fixtures/resolve/openapi-with-back.yaml +0 -13
  53. package/src/__tests__/fixtures/resolve/openapi-with-md-description.yaml +0 -5
  54. package/src/__tests__/fixtures/resolve/openapi.yaml +0 -28
  55. package/src/__tests__/fixtures/resolve/schemas/type-a.yaml +0 -10
  56. package/src/__tests__/fixtures/resolve/schemas/type-b.yaml +0 -6
  57. package/src/__tests__/fixtures/resolve/transitive/a.yaml +0 -1
  58. package/src/__tests__/fixtures/resolve/transitive/components.yaml +0 -5
  59. package/src/__tests__/fixtures/resolve/transitive/schemas.yaml +0 -3
  60. package/src/__tests__/format.test.ts +0 -76
  61. package/src/__tests__/js-yaml.test.ts +0 -73
  62. package/src/__tests__/lint.test.ts +0 -388
  63. package/src/__tests__/logger-browser.test.ts +0 -53
  64. package/src/__tests__/logger.test.ts +0 -47
  65. package/src/__tests__/login.test.ts +0 -17
  66. package/src/__tests__/normalizeVisitors.test.ts +0 -151
  67. package/src/__tests__/output-browser.test.ts +0 -18
  68. package/src/__tests__/output.test.ts +0 -15
  69. package/src/__tests__/ref-utils.test.ts +0 -120
  70. package/src/__tests__/resolve-http.test.ts +0 -77
  71. package/src/__tests__/resolve.test.ts +0 -430
  72. package/src/__tests__/utils-browser.test.ts +0 -11
  73. package/src/__tests__/utils.test.ts +0 -144
  74. package/src/__tests__/walk.test.ts +0 -1545
  75. package/src/benchmark/benches/lint-with-many-rules.bench.ts +0 -35
  76. package/src/benchmark/benches/lint-with-nested-rule.bench.ts +0 -39
  77. package/src/benchmark/benches/lint-with-no-rules.bench.ts +0 -20
  78. package/src/benchmark/benches/lint-with-top-level-rule-report.bench.ts +0 -35
  79. package/src/benchmark/benches/lint-with-top-level-rule.bench.ts +0 -32
  80. package/src/benchmark/benches/rebilly.yaml +0 -32275
  81. package/src/benchmark/benches/recommended-oas3.bench.ts +0 -22
  82. package/src/benchmark/benches/resolve-with-no-external.bench.ts +0 -23
  83. package/src/benchmark/benchmark.js +0 -311
  84. package/src/benchmark/colors.js +0 -29
  85. package/src/benchmark/fork.js +0 -83
  86. package/src/benchmark/utils.ts +0 -36
  87. package/src/bundle.ts +0 -399
  88. package/src/config/__tests__/__snapshots__/config-resolvers.test.ts.snap +0 -161
  89. package/src/config/__tests__/__snapshots__/config.test.ts.snap +0 -144
  90. package/src/config/__tests__/config-resolvers.test.ts +0 -491
  91. package/src/config/__tests__/config.test.ts +0 -307
  92. package/src/config/__tests__/fixtures/ingore-file.ts +0 -8
  93. package/src/config/__tests__/fixtures/load-redocly.yaml +0 -2
  94. package/src/config/__tests__/fixtures/plugin-config.yaml +0 -2
  95. package/src/config/__tests__/fixtures/plugin.js +0 -56
  96. package/src/config/__tests__/fixtures/resolve-config/api/nested-config.yaml +0 -11
  97. package/src/config/__tests__/fixtures/resolve-config/api/plugin.js +0 -69
  98. package/src/config/__tests__/fixtures/resolve-config/local-config-with-circular.yaml +0 -7
  99. package/src/config/__tests__/fixtures/resolve-config/local-config-with-custom-function.yaml +0 -17
  100. package/src/config/__tests__/fixtures/resolve-config/local-config-with-file.yaml +0 -18
  101. package/src/config/__tests__/fixtures/resolve-config/local-config-with-wrong-custom-function.yaml +0 -15
  102. package/src/config/__tests__/fixtures/resolve-config/local-config.yaml +0 -9
  103. package/src/config/__tests__/fixtures/resolve-config/plugin.js +0 -80
  104. package/src/config/__tests__/fixtures/resolve-remote-configs/nested-remote-config.yaml +0 -3
  105. package/src/config/__tests__/fixtures/resolve-remote-configs/remote-config.yaml +0 -4
  106. package/src/config/__tests__/load.test.ts +0 -167
  107. package/src/config/__tests__/resolve-plugins.test.ts +0 -27
  108. package/src/config/__tests__/utils.test.ts +0 -204
  109. package/src/config/all.ts +0 -73
  110. package/src/config/builtIn.ts +0 -37
  111. package/src/config/config-resolvers.ts +0 -465
  112. package/src/config/config.ts +0 -330
  113. package/src/config/index.ts +0 -7
  114. package/src/config/load.ts +0 -144
  115. package/src/config/minimal.ts +0 -60
  116. package/src/config/recommended.ts +0 -60
  117. package/src/config/rules.ts +0 -54
  118. package/src/config/types.ts +0 -216
  119. package/src/config/utils.ts +0 -333
  120. package/src/decorators/__tests__/filter-in.test.ts +0 -310
  121. package/src/decorators/__tests__/filter-out.test.ts +0 -335
  122. package/src/decorators/__tests__/media-type-examples-override.test.ts +0 -665
  123. package/src/decorators/__tests__/remove-x-internal.test.ts +0 -316
  124. package/src/decorators/__tests__/resources/request.yaml +0 -3
  125. package/src/decorators/__tests__/resources/response.yaml +0 -3
  126. package/src/decorators/common/filters/filter-helper.ts +0 -72
  127. package/src/decorators/common/filters/filter-in.ts +0 -18
  128. package/src/decorators/common/filters/filter-out.ts +0 -18
  129. package/src/decorators/common/info-description-override.ts +0 -24
  130. package/src/decorators/common/info-override.ts +0 -15
  131. package/src/decorators/common/media-type-examples-override.ts +0 -79
  132. package/src/decorators/common/operation-description-override.ts +0 -30
  133. package/src/decorators/common/registry-dependencies.ts +0 -25
  134. package/src/decorators/common/remove-x-internal.ts +0 -59
  135. package/src/decorators/common/tag-description-override.ts +0 -25
  136. package/src/decorators/oas2/index.ts +0 -20
  137. package/src/decorators/oas3/index.ts +0 -22
  138. package/src/env.ts +0 -5
  139. package/src/format/codeframes.ts +0 -216
  140. package/src/format/format.ts +0 -375
  141. package/src/index.ts +0 -71
  142. package/src/js-yaml/index.ts +0 -14
  143. package/src/lint.ts +0 -130
  144. package/src/logger.ts +0 -34
  145. package/src/oas-types.ts +0 -57
  146. package/src/output.ts +0 -7
  147. package/src/redocly/__tests__/redocly-client.test.ts +0 -146
  148. package/src/redocly/index.ts +0 -187
  149. package/src/redocly/redocly-client-types.ts +0 -10
  150. package/src/redocly/registry-api-types.ts +0 -32
  151. package/src/redocly/registry-api.ts +0 -149
  152. package/src/ref-utils.ts +0 -85
  153. package/src/resolve.ts +0 -417
  154. package/src/rules/__tests__/fixtures/code-sample.php +0 -9
  155. package/src/rules/__tests__/fixtures/invalid-yaml.yaml +0 -1
  156. package/src/rules/__tests__/fixtures/ref.yaml +0 -1
  157. package/src/rules/__tests__/no-unresolved-refs.test.ts +0 -257
  158. package/src/rules/__tests__/utils.test.ts +0 -160
  159. package/src/rules/ajv.ts +0 -102
  160. package/src/rules/common/__tests__/info-license.test.ts +0 -62
  161. package/src/rules/common/__tests__/license-url.test.ts +0 -63
  162. package/src/rules/common/__tests__/no-ambiguous-paths.test.ts +0 -96
  163. package/src/rules/common/__tests__/no-enum-type-mismatch.test.ts +0 -210
  164. package/src/rules/common/__tests__/no-identical-paths.test.ts +0 -58
  165. package/src/rules/common/__tests__/no-path-trailing-slash.test.ts +0 -85
  166. package/src/rules/common/__tests__/operation-2xx-response.test.ts +0 -192
  167. package/src/rules/common/__tests__/operation-4xx-response.test.ts +0 -231
  168. package/src/rules/common/__tests__/operation-operationId-unique.test.ts +0 -76
  169. package/src/rules/common/__tests__/operation-operationId-url-safe.test.ts +0 -45
  170. package/src/rules/common/__tests__/operation-parameters-unique.test.ts +0 -167
  171. package/src/rules/common/__tests__/operation-singular-tag.test.ts +0 -72
  172. package/src/rules/common/__tests__/path-http-verbs-order.test.ts +0 -95
  173. package/src/rules/common/__tests__/path-not-include-query.test.ts +0 -64
  174. package/src/rules/common/__tests__/path-params-defined.test.ts +0 -202
  175. package/src/rules/common/__tests__/paths-kebab-case.test.ts +0 -108
  176. package/src/rules/common/__tests__/scalar-property-missing-example.test.ts +0 -264
  177. package/src/rules/common/__tests__/security-defined.test.ts +0 -175
  178. package/src/rules/common/__tests__/spec.test.ts +0 -555
  179. package/src/rules/common/__tests__/tag-description.test.ts +0 -65
  180. package/src/rules/common/__tests__/tags-alphabetical.test.ts +0 -64
  181. package/src/rules/common/assertions/__tests__/asserts.test.ts +0 -869
  182. package/src/rules/common/assertions/__tests__/index.test.ts +0 -100
  183. package/src/rules/common/assertions/__tests__/utils.test.ts +0 -236
  184. package/src/rules/common/assertions/asserts.ts +0 -357
  185. package/src/rules/common/assertions/index.ts +0 -56
  186. package/src/rules/common/assertions/utils.ts +0 -331
  187. package/src/rules/common/info-contact.ts +0 -15
  188. package/src/rules/common/info-license-url.ts +0 -10
  189. package/src/rules/common/info-license.ts +0 -15
  190. package/src/rules/common/no-ambiguous-paths.ts +0 -50
  191. package/src/rules/common/no-enum-type-mismatch.ts +0 -52
  192. package/src/rules/common/no-http-verbs-in-paths.ts +0 -36
  193. package/src/rules/common/no-identical-paths.ts +0 -24
  194. package/src/rules/common/no-invalid-parameter-examples.ts +0 -36
  195. package/src/rules/common/no-invalid-schema-examples.ts +0 -27
  196. package/src/rules/common/no-path-trailing-slash.ts +0 -15
  197. package/src/rules/common/operation-2xx-response.ts +0 -24
  198. package/src/rules/common/operation-4xx-response.ts +0 -24
  199. package/src/rules/common/operation-description.ts +0 -13
  200. package/src/rules/common/operation-operationId-unique.ts +0 -21
  201. package/src/rules/common/operation-operationId-url-safe.ts +0 -19
  202. package/src/rules/common/operation-operationId.ts +0 -17
  203. package/src/rules/common/operation-parameters-unique.ts +0 -48
  204. package/src/rules/common/operation-singular-tag.ts +0 -17
  205. package/src/rules/common/operation-summary.ts +0 -13
  206. package/src/rules/common/operation-tag-defined.ts +0 -26
  207. package/src/rules/common/parameter-description.ts +0 -22
  208. package/src/rules/common/path-declaration-must-exist.ts +0 -15
  209. package/src/rules/common/path-excludes-patterns.ts +0 -23
  210. package/src/rules/common/path-http-verbs-order.ts +0 -30
  211. package/src/rules/common/path-not-include-query.ts +0 -17
  212. package/src/rules/common/path-params-defined.ts +0 -65
  213. package/src/rules/common/path-segment-plural.ts +0 -31
  214. package/src/rules/common/paths-kebab-case.ts +0 -19
  215. package/src/rules/common/required-string-property-missing-min-length.ts +0 -44
  216. package/src/rules/common/response-contains-header.ts +0 -35
  217. package/src/rules/common/scalar-property-missing-example.ts +0 -58
  218. package/src/rules/common/security-defined.ts +0 -65
  219. package/src/rules/common/spec.ts +0 -174
  220. package/src/rules/common/tag-description.ts +0 -10
  221. package/src/rules/common/tags-alphabetical.ts +0 -20
  222. package/src/rules/no-unresolved-refs.ts +0 -51
  223. package/src/rules/oas2/__tests__/boolean-parameter-prefixes.test.ts +0 -110
  224. package/src/rules/oas2/__tests__/response-contains-header.test.ts +0 -174
  225. package/src/rules/oas2/__tests__/response-contains-property.test.ts +0 -155
  226. package/src/rules/oas2/__tests__/spec/fixtures/description.md +0 -1
  227. package/src/rules/oas2/__tests__/spec/info.test.ts +0 -355
  228. package/src/rules/oas2/__tests__/spec/operation.test.ts +0 -123
  229. package/src/rules/oas2/__tests__/spec/paths.test.ts +0 -245
  230. package/src/rules/oas2/__tests__/spec/referenceableScalars.test.ts +0 -35
  231. package/src/rules/oas2/__tests__/spec/utils.ts +0 -32
  232. package/src/rules/oas2/boolean-parameter-prefixes.ts +0 -26
  233. package/src/rules/oas2/index.ts +0 -89
  234. package/src/rules/oas2/remove-unused-components.ts +0 -81
  235. package/src/rules/oas2/request-mime-type.ts +0 -17
  236. package/src/rules/oas2/response-contains-property.ts +0 -36
  237. package/src/rules/oas2/response-mime-type.ts +0 -17
  238. package/src/rules/oas3/__tests__/boolean-parameter-prefixes.test.ts +0 -111
  239. package/src/rules/oas3/__tests__/fixtures/common.yaml +0 -11
  240. package/src/rules/oas3/__tests__/no-empty-enum-servers.com.test.ts +0 -205
  241. package/src/rules/oas3/__tests__/no-example-value-and-externalValue.test.ts +0 -65
  242. package/src/rules/oas3/__tests__/no-invalid-media-type-examples.test.ts +0 -473
  243. package/src/rules/oas3/__tests__/no-server-example.com.test.ts +0 -60
  244. package/src/rules/oas3/__tests__/no-server-trailing-slash.test.ts +0 -79
  245. package/src/rules/oas3/__tests__/no-unused-components.test.ts +0 -131
  246. package/src/rules/oas3/__tests__/operation-4xx-problem-details-rfc7807.test.ts +0 -145
  247. package/src/rules/oas3/__tests__/response-contains-header.test.ts +0 -389
  248. package/src/rules/oas3/__tests__/response-contains-property.test.ts +0 -403
  249. package/src/rules/oas3/__tests__/spec/callbacks.test.ts +0 -41
  250. package/src/rules/oas3/__tests__/spec/fixtures/description.md +0 -1
  251. package/src/rules/oas3/__tests__/spec/info.test.ts +0 -391
  252. package/src/rules/oas3/__tests__/spec/operation.test.ts +0 -253
  253. package/src/rules/oas3/__tests__/spec/paths.test.ts +0 -284
  254. package/src/rules/oas3/__tests__/spec/referenceableScalars.test.ts +0 -77
  255. package/src/rules/oas3/__tests__/spec/servers.test.ts +0 -505
  256. package/src/rules/oas3/__tests__/spec/spec.test.ts +0 -298
  257. package/src/rules/oas3/__tests__/spec/utils.ts +0 -32
  258. package/src/rules/oas3/__tests__/spec-components-invalid-map-name.test.ts +0 -305
  259. package/src/rules/oas3/boolean-parameter-prefixes.ts +0 -28
  260. package/src/rules/oas3/index.ts +0 -109
  261. package/src/rules/oas3/no-empty-servers.ts +0 -22
  262. package/src/rules/oas3/no-example-value-and-externalValue.ts +0 -14
  263. package/src/rules/oas3/no-invalid-media-type-examples.ts +0 -49
  264. package/src/rules/oas3/no-server-example.com.ts +0 -14
  265. package/src/rules/oas3/no-server-trailing-slash.ts +0 -15
  266. package/src/rules/oas3/no-server-variables-empty-enum.ts +0 -66
  267. package/src/rules/oas3/no-undefined-server-variable.ts +0 -30
  268. package/src/rules/oas3/no-unused-components.ts +0 -75
  269. package/src/rules/oas3/operation-4xx-problem-details-rfc7807.ts +0 -36
  270. package/src/rules/oas3/remove-unused-components.ts +0 -95
  271. package/src/rules/oas3/request-mime-type.ts +0 -31
  272. package/src/rules/oas3/response-contains-property.ts +0 -38
  273. package/src/rules/oas3/response-mime-type.ts +0 -31
  274. package/src/rules/oas3/spec-components-invalid-map-name.ts +0 -74
  275. package/src/rules/other/stats.ts +0 -73
  276. package/src/rules/utils.ts +0 -191
  277. package/src/types/index.ts +0 -149
  278. package/src/types/oas2.ts +0 -478
  279. package/src/types/oas3.ts +0 -597
  280. package/src/types/oas3_1.ts +0 -258
  281. package/src/types/redocly-yaml.ts +0 -1010
  282. package/src/typings/common.ts +0 -17
  283. package/src/typings/openapi.ts +0 -298
  284. package/src/typings/swagger.ts +0 -236
  285. package/src/utils.ts +0 -276
  286. package/src/visitors.ts +0 -491
  287. package/src/walk.ts +0 -453
  288. package/tsconfig.json +0 -8
  289. package/tsconfig.tsbuildinfo +0 -1
@@ -1,307 +0,0 @@
1
- import { OasVersion } from '../../oas-types';
2
- import { Config, StyleguideConfig } from '../config';
3
- import { getMergedConfig } from '../utils';
4
- import { doesYamlFileExist } from '../../utils';
5
- import { parseYaml } from '../../js-yaml';
6
- import { readFileSync } from 'fs';
7
- import { ignoredFileStub } from './fixtures/ingore-file';
8
- import * as path from 'path';
9
- import { NormalizedProblem } from '../../walk';
10
- import { Source } from '../../resolve';
11
-
12
- jest.mock('../../utils');
13
- jest.mock('../../js-yaml');
14
- jest.mock('fs');
15
-
16
- const testConfig: Config = {
17
- rawConfig: {
18
- apis: {
19
- 'test@v1': {
20
- root: 'resources/pets.yaml',
21
- styleguide: { rules: { 'operation-summary': 'warn' } },
22
- },
23
- },
24
- organization: 'redocly-test',
25
- styleguide: {
26
- rules: { 'operation-summary': 'error', 'no-empty-servers': 'error' },
27
- plugins: [],
28
- },
29
- },
30
- configFile: 'redocly.yaml',
31
- apis: {
32
- 'test@v1': {
33
- root: 'resources/pets.yaml',
34
- styleguide: { rules: { 'operation-summary': 'warn' } },
35
- },
36
- },
37
-
38
- styleguide: {
39
- rawConfig: {
40
- rules: { 'operation-summary': 'error', 'no-empty-servers': 'error' },
41
- plugins: [],
42
- },
43
- configFile: 'redocly.yaml',
44
- ignore: {},
45
- _usedRules: new Set(),
46
- _usedVersions: new Set(),
47
- recommendedFallback: false,
48
- plugins: [],
49
- doNotResolveExamples: false,
50
- rules: {
51
- oas2: { 'operation-summary': 'error', 'no-empty-servers': 'error' },
52
- oas3_0: { 'operation-summary': 'error', 'no-empty-servers': 'error' },
53
- oas3_1: { 'operation-summary': 'error', 'no-empty-servers': 'error' },
54
- },
55
- preprocessors: { oas2: {}, oas3_0: {}, oas3_1: {} },
56
- decorators: { oas2: {}, oas3_0: {}, oas3_1: {} },
57
- } as unknown as StyleguideConfig,
58
- theme: {
59
- openapi: {},
60
- mockServer: {},
61
- },
62
- resolve: { http: { headers: [] } },
63
- organization: 'redocly-test',
64
- files: [],
65
- };
66
-
67
- describe('getMergedConfig', () => {
68
- it('should get styleguide defined in "apis" section', () => {
69
- expect(getMergedConfig(testConfig, 'test@v1')).toMatchInlineSnapshot(`
70
- Config {
71
- "apis": Object {
72
- "test@v1": Object {
73
- "root": "resources/pets.yaml",
74
- "styleguide": Object {
75
- "rules": Object {
76
- "operation-summary": "warn",
77
- },
78
- },
79
- },
80
- },
81
- "configFile": "redocly.yaml",
82
- "files": Array [],
83
- "organization": "redocly-test",
84
- "rawConfig": Object {
85
- "apis": Object {
86
- "test@v1": Object {
87
- "root": "resources/pets.yaml",
88
- "styleguide": Object {
89
- "rules": Object {
90
- "operation-summary": "warn",
91
- },
92
- },
93
- },
94
- },
95
- "files": Array [],
96
- "organization": "redocly-test",
97
- "styleguide": Object {
98
- "extendPaths": Array [],
99
- "pluginPaths": Array [],
100
- "rules": Object {
101
- "operation-summary": "warn",
102
- },
103
- },
104
- "theme": Object {},
105
- },
106
- "region": undefined,
107
- "resolve": Object {
108
- "http": Object {
109
- "customFetch": undefined,
110
- "headers": Array [],
111
- },
112
- },
113
- "styleguide": StyleguideConfig {
114
- "_usedRules": Set {},
115
- "_usedVersions": Set {},
116
- "configFile": "redocly.yaml",
117
- "decorators": Object {
118
- "oas2": Object {},
119
- "oas3_0": Object {},
120
- "oas3_1": Object {},
121
- },
122
- "doNotResolveExamples": false,
123
- "extendPaths": Array [],
124
- "ignore": Object {},
125
- "pluginPaths": Array [],
126
- "plugins": Array [],
127
- "preprocessors": Object {
128
- "oas2": Object {},
129
- "oas3_0": Object {},
130
- "oas3_1": Object {},
131
- },
132
- "rawConfig": Object {
133
- "extendPaths": Array [],
134
- "pluginPaths": Array [],
135
- "rules": Object {
136
- "operation-summary": "warn",
137
- },
138
- },
139
- "recommendedFallback": false,
140
- "rules": Object {
141
- "oas2": Object {
142
- "operation-summary": "warn",
143
- },
144
- "oas3_0": Object {
145
- "operation-summary": "warn",
146
- },
147
- "oas3_1": Object {
148
- "operation-summary": "warn",
149
- },
150
- },
151
- },
152
- "theme": Object {},
153
- }
154
- `);
155
- });
156
- it('should take into account a config file', () => {
157
- const result = getMergedConfig(testConfig, 'test@v1');
158
- expect(result.configFile).toEqual('redocly.yaml');
159
- expect(result.styleguide.configFile).toEqual('redocly.yaml');
160
- });
161
- it('should return the same config when there is no alias provided', () => {
162
- expect(getMergedConfig(testConfig)).toEqual(testConfig);
163
- });
164
- it('should handle wrong alias - return the same styleguide, empty features', () => {
165
- expect(getMergedConfig(testConfig, 'wrong-alias')).toMatchInlineSnapshot(`
166
- Config {
167
- "apis": Object {
168
- "test@v1": Object {
169
- "root": "resources/pets.yaml",
170
- "styleguide": Object {
171
- "rules": Object {
172
- "operation-summary": "warn",
173
- },
174
- },
175
- },
176
- },
177
- "configFile": "redocly.yaml",
178
- "files": Array [],
179
- "organization": "redocly-test",
180
- "rawConfig": Object {
181
- "apis": Object {
182
- "test@v1": Object {
183
- "root": "resources/pets.yaml",
184
- "styleguide": Object {
185
- "rules": Object {
186
- "operation-summary": "warn",
187
- },
188
- },
189
- },
190
- },
191
- "files": Array [],
192
- "organization": "redocly-test",
193
- "styleguide": Object {
194
- "extendPaths": Array [],
195
- "pluginPaths": Array [],
196
- "plugins": Array [],
197
- "rules": Object {
198
- "no-empty-servers": "error",
199
- "operation-summary": "error",
200
- },
201
- },
202
- "theme": Object {},
203
- },
204
- "region": undefined,
205
- "resolve": Object {
206
- "http": Object {
207
- "customFetch": undefined,
208
- "headers": Array [],
209
- },
210
- },
211
- "styleguide": StyleguideConfig {
212
- "_usedRules": Set {},
213
- "_usedVersions": Set {},
214
- "configFile": "redocly.yaml",
215
- "decorators": Object {
216
- "oas2": Object {},
217
- "oas3_0": Object {},
218
- "oas3_1": Object {},
219
- },
220
- "doNotResolveExamples": false,
221
- "extendPaths": Array [],
222
- "ignore": Object {},
223
- "pluginPaths": Array [],
224
- "plugins": Array [],
225
- "preprocessors": Object {
226
- "oas2": Object {},
227
- "oas3_0": Object {},
228
- "oas3_1": Object {},
229
- },
230
- "rawConfig": Object {
231
- "extendPaths": Array [],
232
- "pluginPaths": Array [],
233
- "plugins": Array [],
234
- "rules": Object {
235
- "no-empty-servers": "error",
236
- "operation-summary": "error",
237
- },
238
- },
239
- "recommendedFallback": false,
240
- "rules": Object {
241
- "oas2": Object {
242
- "no-empty-servers": "error",
243
- "operation-summary": "error",
244
- },
245
- "oas3_0": Object {
246
- "no-empty-servers": "error",
247
- "operation-summary": "error",
248
- },
249
- "oas3_1": Object {
250
- "no-empty-servers": "error",
251
- "operation-summary": "error",
252
- },
253
- },
254
- },
255
- "theme": Object {},
256
- }
257
- `);
258
- });
259
- });
260
-
261
- describe('StyleguideConfig.extendTypes', () => {
262
- let oas3 = jest.fn();
263
- let oas2 = jest.fn();
264
- let testRawConfigStyleguide = {
265
- plugins: [
266
- {
267
- id: 'test-types-plugin',
268
- typeExtension: {
269
- oas3,
270
- oas2,
271
- },
272
- },
273
- ],
274
- };
275
- it('should call only oas3 types extension', () => {
276
- const styleguideConfig = new StyleguideConfig(testRawConfigStyleguide);
277
- styleguideConfig.extendTypes({}, OasVersion.Version3_0);
278
- expect(oas3).toHaveBeenCalledTimes(1);
279
- expect(oas2).toHaveBeenCalledTimes(0);
280
- });
281
- it('should call only oas2 types extension', () => {
282
- const styleguideConfig = new StyleguideConfig(testRawConfigStyleguide);
283
- styleguideConfig.extendTypes({}, OasVersion.Version2);
284
- expect(oas3).toHaveBeenCalledTimes(0);
285
- expect(oas2).toHaveBeenCalledTimes(1);
286
- });
287
- it('should throw error if for oas version different from 2 and 3', () => {
288
- const styleguideConfig = new StyleguideConfig(testRawConfigStyleguide);
289
- expect(() => styleguideConfig.extendTypes({}, 'something else' as OasVersion)).toThrowError(
290
- 'Not implemented'
291
- );
292
- });
293
- });
294
-
295
- describe('generation ignore object', () => {
296
- it('should generate config with absoluteUri for ignore', () => {
297
- (readFileSync as jest.Mock<any, any>).mockImplementationOnce(() => '');
298
- (parseYaml as jest.Mock<any, any>).mockImplementationOnce(() => ignoredFileStub);
299
- (doesYamlFileExist as jest.Mock<any, any>).mockImplementationOnce(() => true);
300
-
301
- jest.spyOn(path, 'resolve').mockImplementationOnce((_, filename) => `some-path/${filename}`);
302
-
303
- const styleguideConfig = new StyleguideConfig(testConfig.styleguide);
304
-
305
- expect(styleguideConfig).toMatchSnapshot();
306
- });
307
- });
@@ -1,8 +0,0 @@
1
- export const ignoredFileStub = {
2
- 'openapi.yaml': {
3
- 'no-unused-components': ['#/components/schemas/Foo'],
4
- },
5
- 'https://some-path.yaml': {
6
- 'no-unused-components': ['#/components/schemas/Foo'],
7
- },
8
- };
@@ -1,2 +0,0 @@
1
- rules:
2
- info-contact: warn
@@ -1,2 +0,0 @@
1
- plugins:
2
- - './plugin.js'
@@ -1,56 +0,0 @@
1
- const id = 'test-plugin';
2
-
3
- /** @type {import('../../config').PreprocessorsConfig} */
4
- const preprocessors = {
5
- oas2: {
6
- 'description-preprocessor': () => {
7
- return {
8
- Info(info) {
9
- const title = info.title || 'API title';
10
- info.description = `# ${title}\n\n${info.description || ''}`;
11
- },
12
- };
13
- },
14
- },
15
- };
16
-
17
- /** @type {import('../../config').CustomRulesConfig} */
18
- const rules = {
19
- oas3: {
20
- 'openid-connect-url-well-known': () => {
21
- return {
22
- SecurityScheme(scheme, { location, report }) {
23
- if (scheme.type === 'openIdConnect') {
24
- if (!scheme.openIdConnectUrl.endsWith('/.well-known/openid-configuration')) {
25
- report({
26
- message:
27
- 'openIdConnectUrl must be a URL that ends with /.well-known/openid-configuration',
28
- location: location.child('openIdConnectUrl'),
29
- });
30
- }
31
- }
32
- },
33
- };
34
- },
35
- },
36
- };
37
-
38
- /** @type {import('../../config').DecoratorsConfig} */
39
- const decorators = {
40
- oas3: {
41
- 'inject-x-stats': () => {
42
- return {
43
- Info(info) {
44
- info['x-stats'] = { test: 1 };
45
- },
46
- };
47
- },
48
- },
49
- };
50
-
51
- module.exports = {
52
- id,
53
- preprocessors,
54
- rules,
55
- decorators,
56
- };
@@ -1,11 +0,0 @@
1
- plugins:
2
- - plugin.js
3
- rules:
4
- operation-2xx-response: error
5
- assert/path-item-get-defined:
6
- subject: PathItem
7
- property: get
8
- message: Every path item must have a GET operation.
9
- defined: true
10
- extends:
11
- - test-plugin-nested/all
@@ -1,69 +0,0 @@
1
- const id = 'test-plugin-nested';
2
-
3
- /** @type {import('../../config').PreprocessorsConfig} */
4
- const preprocessors = {
5
- oas2: {
6
- 'description-preprocessor': () => {
7
- return {
8
- Info(info) {
9
- const title = info.title || 'API title';
10
- info.description = `# ${title}\n\n${info.description || ''}`;
11
- },
12
- };
13
- },
14
- },
15
- };
16
-
17
- /** @type {import('../../config').CustomRulesConfig} */
18
- const rules = {
19
- oas3: {
20
- 'openid-connect-url-well-known': () => {
21
- return {
22
- SecurityScheme(scheme, { location, report }) {
23
- if (scheme.type === 'openIdConnect') {
24
- if (
25
- scheme.openIdConnectUrl &&
26
- !scheme.openIdConnectUrl.endsWith('/.well-known/openid-configuration')
27
- ) {
28
- report({
29
- message:
30
- 'openIdConnectUrl must be a URL that ends with /.well-known/openid-configuration',
31
- location: location.child('openIdConnectUrl'),
32
- });
33
- }
34
- }
35
- },
36
- };
37
- },
38
- },
39
- };
40
-
41
- /** @type {import('../../config').DecoratorsConfig} */
42
- const decorators = {
43
- oas3: {
44
- 'inject-x-stats': () => {
45
- return {
46
- Info(info) {
47
- info['x-stats'] = { test: 1 };
48
- },
49
- };
50
- },
51
- },
52
- };
53
-
54
- const configs = {
55
- all: {
56
- rules: {
57
- 'local/operation-id-not-test': 'error',
58
- 'boolean-parameter-prefixes': 'error',
59
- },
60
- },
61
- };
62
-
63
- module.exports = {
64
- id,
65
- preprocessors,
66
- rules,
67
- decorators,
68
- configs,
69
- };
@@ -1,7 +0,0 @@
1
- extends:
2
- - local-config-with-circular.yaml
3
- rules:
4
- no-invalid-media-type-examples: error
5
- operation-description: error
6
- path-http-verbs-order: error
7
- operation-2xx-response: off
@@ -1,17 +0,0 @@
1
- rules:
2
- no-invalid-media-type-examples: warn
3
- operation-4xx-response: off
4
- assert/tag-description:
5
- subject:
6
- type: Tag
7
- property: description
8
- message: Tag description must have at least 3 words.
9
- severity: error
10
- assertions:
11
- test-plugin/checkWordsCount:
12
- min: 3
13
- plugins:
14
- - plugin.js
15
- extends:
16
- - recommended
17
- - test-plugin/all
@@ -1,18 +0,0 @@
1
- rules:
2
- no-invalid-media-type-examples: warn
3
- operation-4xx-response: off
4
- assert/tag-description:
5
- subject: Tag
6
- property: description
7
- message: Tag description must be at least 13 characters and end with a full stop.
8
- severity: error
9
- minLength: 13
10
- pattern: /\.$/
11
- plugins:
12
- - plugin.js
13
- - api/plugin.js
14
- extends:
15
- - recommended
16
- - api/nested-config.yaml
17
- - test-plugin-nested/all
18
- - test-plugin/all
@@ -1,15 +0,0 @@
1
- rules:
2
- no-invalid-media-type-examples: warn
3
- operation-4xx-response: off
4
- assert/tag-description:
5
- subject: Tag
6
- property: description
7
- message: Tag description must have at least 3 words.
8
- severity: error
9
- test-plugin/checkWordsCount2:
10
- min: 3
11
- plugins:
12
- - plugin.js
13
- extends:
14
- - recommended
15
- - test-plugin/all
@@ -1,9 +0,0 @@
1
- plugins:
2
- - plugin.js
3
- extends:
4
- - test-plugin/all
5
- rules:
6
- no-invalid-media-type-examples: error
7
- operation-description: error
8
- path-http-verbs-order: error
9
- operation-2xx-response: off
@@ -1,80 +0,0 @@
1
- const id = 'test-plugin';
2
-
3
- /** @type {import('../../config').PreprocessorsConfig} */
4
- const preprocessors = {
5
- oas2: {
6
- 'description-preprocessor': () => {
7
- return {
8
- Info(info) {
9
- const title = info.title || 'API title';
10
- info.description = `# ${title}\n\n${info.description || ''}`;
11
- },
12
- };
13
- },
14
- },
15
- };
16
-
17
- /** @type {import('../../config').CustomRulesConfig} */
18
- const rules = {
19
- oas3: {
20
- 'openid-connect-url-well-known': () => {
21
- return {
22
- SecurityScheme(scheme, { location, report }) {
23
- if (scheme.type === 'openIdConnect') {
24
- if (
25
- scheme.openIdConnectUrl &&
26
- !scheme.openIdConnectUrl.endsWith('/.well-known/openid-configuration')
27
- ) {
28
- report({
29
- message:
30
- 'openIdConnectUrl must be a URL that ends with /.well-known/openid-configuration',
31
- location: location.child('openIdConnectUrl'),
32
- });
33
- }
34
- }
35
- },
36
- };
37
- },
38
- },
39
- };
40
-
41
- /** @type {import('../../config').DecoratorsConfig} */
42
- const decorators = {
43
- oas3: {
44
- 'inject-x-stats': () => {
45
- return {
46
- Info(info) {
47
- info['x-stats'] = { test: 1 };
48
- },
49
- };
50
- },
51
- },
52
- };
53
-
54
- const assertions = {
55
- checkWordsCount: (value, opts, location) => {
56
- const words = value.split(' ');
57
- if (words.length >= opts.min) {
58
- return { isValid: true };
59
- }
60
- return { isValid: false, location };
61
- },
62
- };
63
-
64
- const configs = {
65
- all: {
66
- rules: {
67
- 'local/operation-id-not-test': 'error',
68
- 'boolean-parameter-prefixes': 'error',
69
- },
70
- },
71
- };
72
-
73
- module.exports = {
74
- id,
75
- preprocessors,
76
- rules,
77
- decorators,
78
- configs,
79
- assertions,
80
- };
@@ -1,3 +0,0 @@
1
- rules:
2
- operation-2xx-response: off
3
- operation-4xx-response: error
@@ -1,4 +0,0 @@
1
- extends:
2
- - nested-remote-config.yaml
3
- rules:
4
- operation-2xx-response: error