@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,216 +0,0 @@
1
- import type { ProblemSeverity, UserContext } from '../walk';
2
- import type {
3
- Oas3PreprocessorsSet,
4
- OasMajorVersion,
5
- Oas3DecoratorsSet,
6
- Oas2RuleSet,
7
- Oas2PreprocessorsSet,
8
- Oas2DecoratorsSet,
9
- Oas3RuleSet,
10
- OasVersion,
11
- } from '../oas-types';
12
- import type { NodeType } from '../types';
13
- import { Location } from '../ref-utils';
14
- import { SkipFunctionContext } from '../visitors';
15
-
16
- export type RuleSeverity = ProblemSeverity | 'off';
17
-
18
- export type RuleSettings = { severity: RuleSeverity };
19
-
20
- export type PreprocessorSeverity = RuleSeverity | 'on';
21
-
22
- export type RuleConfig =
23
- | RuleSeverity
24
- | ({
25
- severity?: ProblemSeverity;
26
- } & Record<string, any>);
27
-
28
- export type PreprocessorConfig =
29
- | PreprocessorSeverity
30
- | ({
31
- severity?: ProblemSeverity;
32
- } & Record<string, any>);
33
-
34
- export type DecoratorConfig = PreprocessorConfig;
35
-
36
- export type StyleguideRawConfig = {
37
- plugins?: (string | Plugin)[];
38
- extends?: string[];
39
- doNotResolveExamples?: boolean;
40
- recommendedFallback?: boolean;
41
-
42
- rules?: Record<string, RuleConfig>;
43
- oas2Rules?: Record<string, RuleConfig>;
44
- oas3_0Rules?: Record<string, RuleConfig>;
45
- oas3_1Rules?: Record<string, RuleConfig>;
46
-
47
- preprocessors?: Record<string, PreprocessorConfig>;
48
- oas2Preprocessors?: Record<string, PreprocessorConfig>;
49
- oas3_0Preprocessors?: Record<string, PreprocessorConfig>;
50
- oas3_1Preprocessors?: Record<string, PreprocessorConfig>;
51
-
52
- decorators?: Record<string, DecoratorConfig>;
53
- oas2Decorators?: Record<string, DecoratorConfig>;
54
- oas3_0Decorators?: Record<string, DecoratorConfig>;
55
- oas3_1Decorators?: Record<string, DecoratorConfig>;
56
- };
57
-
58
- export type ApiStyleguideRawConfig = Omit<StyleguideRawConfig, 'plugins'>;
59
-
60
- export type ResolvedStyleguideConfig = PluginStyleguideConfig & {
61
- plugins?: Plugin[];
62
- recommendedFallback?: boolean;
63
- extends?: void | never;
64
- extendPaths?: string[];
65
- pluginPaths?: string[];
66
- };
67
-
68
- export type PreprocessorsConfig = {
69
- oas3?: Oas3PreprocessorsSet;
70
- oas2?: Oas2PreprocessorsSet;
71
- };
72
-
73
- export type DecoratorsConfig = {
74
- oas3?: Oas3DecoratorsSet;
75
- oas2?: Oas2DecoratorsSet;
76
- };
77
-
78
- export type TypesExtensionFn = (
79
- types: Record<string, NodeType>,
80
- oasVersion: OasVersion
81
- ) => Record<string, NodeType>;
82
-
83
- export type TypeExtensionsConfig = Partial<Record<OasMajorVersion, TypesExtensionFn>>;
84
-
85
- export type CustomRulesConfig = {
86
- oas3?: Oas3RuleSet;
87
- oas2?: Oas2RuleSet;
88
- };
89
-
90
- export type AssertionContext = Partial<UserContext> & SkipFunctionContext & { node: any };
91
-
92
- export type AssertResult = { message?: string; location?: Location };
93
- export type CustomFunction = (
94
- value: any,
95
- options: unknown,
96
- baseLocation: Location
97
- ) => AssertResult[];
98
-
99
- export type AssertionsConfig = Record<string, CustomFunction>;
100
-
101
- export type Plugin = {
102
- id: string;
103
- configs?: Record<string, PluginStyleguideConfig>;
104
- rules?: CustomRulesConfig;
105
- preprocessors?: PreprocessorsConfig;
106
- decorators?: DecoratorsConfig;
107
- typeExtension?: TypeExtensionsConfig;
108
- assertions?: AssertionsConfig;
109
- };
110
-
111
- export type PluginStyleguideConfig = Omit<StyleguideRawConfig, 'plugins' | 'extends'>;
112
-
113
- export type ResolveHeader =
114
- | {
115
- name: string;
116
- envVariable?: undefined;
117
- value: string;
118
- matches: string;
119
- }
120
- | {
121
- name: string;
122
- value?: undefined;
123
- envVariable: string;
124
- matches: string;
125
- };
126
-
127
- export type RawResolveConfig = {
128
- http?: Partial<HttpResolveConfig>;
129
- doNotResolveExamples?: boolean;
130
- };
131
-
132
- export type HttpResolveConfig = {
133
- headers: ResolveHeader[];
134
- customFetch?: Function;
135
- };
136
-
137
- export type ResolveConfig = {
138
- http: HttpResolveConfig;
139
- };
140
-
141
- export type Region = 'us' | 'eu';
142
-
143
- export type AccessTokens = { [region in Region]?: string };
144
-
145
- export type DeprecatedInRawConfig = {
146
- apiDefinitions?: Record<string, string>;
147
- lint?: StyleguideRawConfig;
148
- styleguide?: StyleguideRawConfig;
149
- referenceDocs?: Record<string, any>;
150
- apis?: Record<string, Api & DeprecatedInApi>;
151
- } & DeprecatedFeaturesConfig;
152
-
153
- export type Api = {
154
- root: string;
155
- styleguide?: ApiStyleguideRawConfig;
156
- } & ThemeConfig;
157
-
158
- export type DeprecatedInApi = {
159
- lint?: ApiStyleguideRawConfig;
160
- } & DeprecatedFeaturesConfig;
161
-
162
- export type ResolvedApi = Omit<Api, 'styleguide'> & {
163
- styleguide: ResolvedStyleguideConfig;
164
- files?: string[];
165
- };
166
-
167
- export type RawConfig = {
168
- apis?: Record<string, Api>;
169
- styleguide?: StyleguideRawConfig;
170
- resolve?: RawResolveConfig;
171
- region?: Region;
172
- organization?: string;
173
- files?: string[];
174
- } & ThemeConfig;
175
-
176
- export type FlatApi = Omit<Api, 'styleguide'> &
177
- Omit<ApiStyleguideRawConfig, 'doNotResolveExamples'>;
178
-
179
- export type FlatRawConfig = Omit<RawConfig, 'styleguide' | 'resolve' | 'apis'> &
180
- Omit<StyleguideRawConfig, 'doNotResolveExamples'> & {
181
- resolve?: RawResolveConfig;
182
- apis?: Record<string, FlatApi>;
183
- } & ThemeRawConfig;
184
-
185
- export type ResolvedConfig = Omit<RawConfig, 'apis' | 'styleguide'> & {
186
- apis: Record<string, ResolvedApi>;
187
- styleguide: ResolvedStyleguideConfig;
188
- };
189
-
190
- type DeprecatedFeaturesConfig = {
191
- 'features.openapi'?: Record<string, any>;
192
- 'features.mockServer'?: Record<string, any>;
193
- };
194
-
195
- export type ThemeConfig = {
196
- theme?: ThemeRawConfig;
197
- };
198
-
199
- export type ThemeRawConfig = {
200
- openapi?: Record<string, any>;
201
- mockServer?: Record<string, any>;
202
- };
203
-
204
- export type RulesFields =
205
- | 'rules'
206
- | 'oas2Rules'
207
- | 'oas3_0Rules'
208
- | 'oas3_1Rules'
209
- | 'preprocessors'
210
- | 'oas2Preprocessors'
211
- | 'oas3_0Preprocessors'
212
- | 'oas3_1Preprocessors'
213
- | 'decorators'
214
- | 'oas2Decorators'
215
- | 'oas3_0Decorators'
216
- | 'oas3_1Decorators';
@@ -1,333 +0,0 @@
1
- import {
2
- assignExisting,
3
- isDefined,
4
- isTruthy,
5
- showErrorForDeprecatedField,
6
- showWarningForDeprecatedField,
7
- } from '../utils';
8
- import { Config } from './config';
9
- import type {
10
- Api,
11
- DeprecatedInApi,
12
- DeprecatedInRawConfig,
13
- FlatApi,
14
- FlatRawConfig,
15
- Plugin,
16
- RawConfig,
17
- RawResolveConfig,
18
- ResolveConfig,
19
- ResolvedStyleguideConfig,
20
- RulesFields,
21
- StyleguideRawConfig,
22
- ThemeConfig,
23
- } from './types';
24
- import { logger, colorize } from '../logger';
25
-
26
- export function parsePresetName(presetName: string): { pluginId: string; configName: string } {
27
- if (presetName.indexOf('/') > -1) {
28
- const [pluginId, configName] = presetName.split('/');
29
- return { pluginId, configName };
30
- } else {
31
- return { pluginId: '', configName: presetName };
32
- }
33
- }
34
-
35
- export function transformApiDefinitionsToApis(
36
- apiDefinitions?: DeprecatedInRawConfig['apiDefinitions']
37
- ): Record<string, Api> | undefined {
38
- if (!apiDefinitions) return undefined;
39
- const apis: Record<string, Api> = {};
40
- for (const [apiName, apiPath] of Object.entries(apiDefinitions)) {
41
- apis[apiName] = { root: apiPath };
42
- }
43
- return apis;
44
- }
45
-
46
- function extractFlatConfig<
47
- T extends Partial<
48
- (Api & DeprecatedInApi & FlatApi) & (DeprecatedInRawConfig & RawConfig & FlatRawConfig)
49
- >
50
- >({
51
- plugins,
52
- extends: _extends,
53
-
54
- rules,
55
- oas2Rules,
56
- oas3_0Rules,
57
- oas3_1Rules,
58
-
59
- preprocessors,
60
- oas2Preprocessors,
61
- oas3_0Preprocessors,
62
- oas3_1Preprocessors,
63
-
64
- decorators,
65
- oas2Decorators,
66
- oas3_0Decorators,
67
- oas3_1Decorators,
68
-
69
- ...rawConfigRest
70
- }: T): {
71
- styleguideConfig?: StyleguideRawConfig;
72
- rawConfigRest: Omit<T, 'plugins' | 'extends' | RulesFields>;
73
- } {
74
- const styleguideConfig = {
75
- plugins,
76
- extends: _extends,
77
-
78
- rules,
79
- oas2Rules,
80
- oas3_0Rules,
81
- oas3_1Rules,
82
-
83
- preprocessors,
84
- oas2Preprocessors,
85
- oas3_0Preprocessors,
86
- oas3_1Preprocessors,
87
-
88
- decorators,
89
- oas2Decorators,
90
- oas3_0Decorators,
91
- oas3_1Decorators,
92
-
93
- doNotResolveExamples: (rawConfigRest as FlatRawConfig).resolve?.doNotResolveExamples,
94
- };
95
-
96
- if (
97
- (rawConfigRest.lint && rawConfigRest.styleguide) ||
98
- (Object.values(styleguideConfig).some(isDefined) &&
99
- (rawConfigRest.lint || rawConfigRest.styleguide))
100
- ) {
101
- throw new Error(
102
- `Do not use 'lint', 'styleguide' and flat syntax together. \nSee more about the configuration in the docs: https://redocly.com/docs/cli/configuration/ \n`
103
- );
104
- }
105
-
106
- return {
107
- styleguideConfig: Object.values(styleguideConfig).some(isDefined)
108
- ? styleguideConfig
109
- : undefined,
110
-
111
- rawConfigRest,
112
- };
113
- }
114
-
115
- function transformApis(
116
- legacyApis?: Record<string, Api & DeprecatedInApi & FlatApi>
117
- ): Record<string, Api> | undefined {
118
- if (!legacyApis) return undefined;
119
- const apis: Record<string, Api> = {};
120
- for (const [apiName, { lint, ...apiContent }] of Object.entries(legacyApis)) {
121
- const { styleguideConfig, rawConfigRest } = extractFlatConfig(apiContent);
122
- apis[apiName] = {
123
- styleguide: styleguideConfig || lint,
124
- ...rawConfigRest,
125
- };
126
- }
127
- return apis;
128
- }
129
-
130
- export function prefixRules<T extends Record<string, any>>(rules: T, prefix: string) {
131
- if (!prefix) return rules;
132
-
133
- const res: any = {};
134
- for (const name of Object.keys(rules)) {
135
- res[`${prefix}/${name}`] = rules[name];
136
- }
137
-
138
- return res;
139
- }
140
-
141
- export function mergeExtends(rulesConfList: ResolvedStyleguideConfig[]) {
142
- const result: Omit<ResolvedStyleguideConfig, RulesFields> &
143
- Required<Pick<ResolvedStyleguideConfig, RulesFields>> = {
144
- rules: {},
145
- oas2Rules: {},
146
- oas3_0Rules: {},
147
- oas3_1Rules: {},
148
-
149
- preprocessors: {},
150
- oas2Preprocessors: {},
151
- oas3_0Preprocessors: {},
152
- oas3_1Preprocessors: {},
153
-
154
- decorators: {},
155
- oas2Decorators: {},
156
- oas3_0Decorators: {},
157
- oas3_1Decorators: {},
158
-
159
- plugins: [],
160
- pluginPaths: [],
161
- extendPaths: [],
162
- };
163
-
164
- for (const rulesConf of rulesConfList) {
165
- if (rulesConf.extends) {
166
- throw new Error(
167
- `'extends' is not supported in shared configs yet: ${JSON.stringify(rulesConf, null, 2)}.`
168
- );
169
- }
170
-
171
- Object.assign(result.rules, rulesConf.rules);
172
- Object.assign(result.oas2Rules, rulesConf.oas2Rules);
173
- assignExisting(result.oas2Rules, rulesConf.rules || {});
174
- Object.assign(result.oas3_0Rules, rulesConf.oas3_0Rules);
175
- assignExisting(result.oas3_0Rules, rulesConf.rules || {});
176
- Object.assign(result.oas3_1Rules, rulesConf.oas3_1Rules);
177
- assignExisting(result.oas3_1Rules, rulesConf.rules || {});
178
-
179
- Object.assign(result.preprocessors, rulesConf.preprocessors);
180
- Object.assign(result.oas2Preprocessors, rulesConf.oas2Preprocessors);
181
- assignExisting(result.oas2Preprocessors, rulesConf.preprocessors || {});
182
- Object.assign(result.oas3_0Preprocessors, rulesConf.oas3_0Preprocessors);
183
- assignExisting(result.oas3_0Preprocessors, rulesConf.preprocessors || {});
184
- Object.assign(result.oas3_1Preprocessors, rulesConf.oas3_1Preprocessors);
185
- assignExisting(result.oas3_1Preprocessors, rulesConf.preprocessors || {});
186
-
187
- Object.assign(result.decorators, rulesConf.decorators);
188
- Object.assign(result.oas2Decorators, rulesConf.oas2Decorators);
189
- assignExisting(result.oas2Decorators, rulesConf.decorators || {});
190
- Object.assign(result.oas3_0Decorators, rulesConf.oas3_0Decorators);
191
- assignExisting(result.oas3_0Decorators, rulesConf.decorators || {});
192
- Object.assign(result.oas3_1Decorators, rulesConf.oas3_1Decorators);
193
- assignExisting(result.oas3_1Decorators, rulesConf.decorators || {});
194
-
195
- result.plugins!.push(...(rulesConf.plugins || []));
196
- result.pluginPaths!.push(...(rulesConf.pluginPaths || []));
197
- result.extendPaths!.push(...new Set(rulesConf.extendPaths));
198
- }
199
-
200
- return result;
201
- }
202
-
203
- export function getMergedConfig(config: Config, apiName?: string): Config {
204
- const extendPaths = [
205
- ...Object.values(config.apis).map((api) => api?.styleguide?.extendPaths),
206
- config.rawConfig?.styleguide?.extendPaths,
207
- ]
208
- .flat()
209
- .filter(isTruthy);
210
-
211
- const pluginPaths = [
212
- ...Object.values(config.apis).map((api) => api?.styleguide?.pluginPaths),
213
- config.rawConfig?.styleguide?.pluginPaths,
214
- ]
215
- .flat()
216
- .filter(isTruthy);
217
-
218
- return apiName
219
- ? new Config(
220
- {
221
- ...config.rawConfig,
222
- styleguide: {
223
- ...(config.apis[apiName]
224
- ? config.apis[apiName].styleguide
225
- : config.rawConfig.styleguide),
226
- extendPaths,
227
- pluginPaths,
228
- },
229
- theme: {
230
- ...config.rawConfig.theme,
231
- ...config.apis[apiName]?.theme,
232
- },
233
- files: [...config.files, ...(config.apis?.[apiName]?.files ?? [])],
234
- // TODO: merge everything else here
235
- },
236
- config.configFile
237
- )
238
- : config;
239
- }
240
-
241
- export function checkForDeprecatedFields(
242
- deprecatedField: keyof (DeprecatedInRawConfig & RawConfig),
243
- updatedField: keyof FlatRawConfig | undefined,
244
- rawConfig: DeprecatedInRawConfig & RawConfig & FlatRawConfig,
245
- updatedObject: keyof FlatRawConfig | undefined
246
- ): void {
247
- const isDeprecatedFieldInApis =
248
- rawConfig.apis &&
249
- Object.values(rawConfig.apis).some(
250
- (api: Api & FlatApi & DeprecatedInApi & DeprecatedInRawConfig & RawConfig & FlatRawConfig) =>
251
- api[deprecatedField]
252
- );
253
-
254
- if (rawConfig[deprecatedField] && updatedField === null) {
255
- showWarningForDeprecatedField(deprecatedField);
256
- }
257
-
258
- if (rawConfig[deprecatedField] && updatedField && rawConfig[updatedField]) {
259
- showErrorForDeprecatedField(deprecatedField, updatedField);
260
- }
261
-
262
- if (rawConfig[deprecatedField] && updatedObject && rawConfig[updatedObject]) {
263
- showErrorForDeprecatedField(deprecatedField, updatedField, updatedObject);
264
- }
265
-
266
- if (rawConfig[deprecatedField] || isDeprecatedFieldInApis) {
267
- showWarningForDeprecatedField(deprecatedField, updatedField, updatedObject);
268
- }
269
- }
270
-
271
- export function transformConfig(
272
- rawConfig: DeprecatedInRawConfig & RawConfig & FlatRawConfig
273
- ): RawConfig {
274
- const migratedFields: [
275
- keyof (DeprecatedInRawConfig & RawConfig),
276
- keyof FlatRawConfig | undefined,
277
- keyof ThemeConfig | undefined
278
- ][] = [
279
- ['apiDefinitions', 'apis', undefined],
280
- ['referenceDocs', 'openapi', 'theme'],
281
- ['lint', undefined, undefined],
282
- ['styleguide', undefined, undefined],
283
- ['features.openapi', 'openapi', 'theme'],
284
- ];
285
-
286
- for (const [deprecatedField, updatedField, updatedObject] of migratedFields) {
287
- checkForDeprecatedFields(deprecatedField, updatedField, rawConfig, updatedObject);
288
- }
289
-
290
- const { apis, apiDefinitions, referenceDocs, lint, ...rest } = rawConfig;
291
-
292
- const { styleguideConfig, rawConfigRest } = extractFlatConfig(rest);
293
-
294
- return {
295
- theme: {
296
- openapi: {
297
- ...referenceDocs,
298
- ...rawConfig['features.openapi'],
299
- ...rawConfig.theme?.openapi,
300
- },
301
- mockServer: {
302
- ...rawConfig['features.mockServer'],
303
- ...rawConfig.theme?.mockServer,
304
- },
305
- },
306
- apis: transformApis(apis) || transformApiDefinitionsToApis(apiDefinitions),
307
- styleguide: styleguideConfig || lint,
308
- ...rawConfigRest,
309
- };
310
- }
311
-
312
- export function getResolveConfig(resolve?: RawResolveConfig): ResolveConfig {
313
- return {
314
- http: {
315
- headers: resolve?.http?.headers ?? [],
316
- customFetch: undefined,
317
- },
318
- };
319
- }
320
-
321
- export function getUniquePlugins(plugins: Plugin[]): Plugin[] {
322
- const seen = new Set();
323
- const results = [];
324
- for (const p of plugins) {
325
- if (!seen.has(p.id)) {
326
- results.push(p);
327
- seen.add(p.id);
328
- } else if (p.id) {
329
- logger.warn(`Duplicate plugin id "${colorize.red(p.id)}".\n`);
330
- }
331
- }
332
- return results;
333
- }