@redocly/openapi-core 1.18.0 → 1.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/lib/benchmark/benches/lint-with-many-rules.bench.js +2 -2
  3. package/lib/benchmark/benches/lint-with-nested-rule.bench.js +2 -2
  4. package/lib/benchmark/benches/lint-with-no-rules.bench.js +2 -2
  5. package/lib/benchmark/benches/lint-with-top-level-rule-report.bench.js +2 -2
  6. package/lib/benchmark/benches/lint-with-top-level-rule.bench.js +2 -2
  7. package/lib/benchmark/benches/recommended-oas3.bench.js +2 -2
  8. package/lib/benchmark/benches/resolve-with-no-external.bench.js +2 -2
  9. package/lib/benchmark/utils.js +7 -4
  10. package/lib/bundle.d.ts +3 -3
  11. package/lib/bundle.js +128 -122
  12. package/lib/config/all.js +9 -0
  13. package/lib/config/builtIn.js +7 -1
  14. package/lib/config/config-resolvers.js +179 -138
  15. package/lib/config/config.d.ts +2 -2
  16. package/lib/config/config.js +53 -34
  17. package/lib/config/load.d.ts +1 -2
  18. package/lib/config/load.js +105 -117
  19. package/lib/config/minimal.js +9 -0
  20. package/lib/config/recommended-strict.js +9 -0
  21. package/lib/config/recommended.js +9 -0
  22. package/lib/config/rules.d.ts +3 -3
  23. package/lib/config/rules.js +1 -2
  24. package/lib/config/types.d.ts +9 -3
  25. package/lib/config/utils.js +70 -49
  26. package/lib/decorators/async3/index.d.ts +1 -0
  27. package/lib/decorators/async3/index.js +4 -0
  28. package/lib/decorators/common/filters/filter-helper.js +2 -3
  29. package/lib/decorators/common/filters/filter-in.js +1 -1
  30. package/lib/decorators/common/filters/filter-out.js +1 -1
  31. package/lib/decorators/common/info-override.js +1 -12
  32. package/lib/decorators/common/media-type-examples-override.js +8 -2
  33. package/lib/decorators/common/remove-x-internal.js +4 -5
  34. package/lib/decorators/oas2/remove-unused-components.js +1 -2
  35. package/lib/decorators/oas3/remove-unused-components.js +1 -2
  36. package/lib/env.d.ts +0 -1
  37. package/lib/env.js +1 -1
  38. package/lib/format/codeframes.js +10 -8
  39. package/lib/format/format.js +23 -15
  40. package/lib/index.d.ts +2 -1
  41. package/lib/index.js +6 -4
  42. package/lib/js-yaml/index.js +1 -1
  43. package/lib/lint.d.ts +2 -0
  44. package/lib/lint.js +92 -99
  45. package/lib/oas-types.d.ts +9 -5
  46. package/lib/oas-types.js +22 -12
  47. package/lib/redocly/domains.js +6 -6
  48. package/lib/redocly/index.js +60 -73
  49. package/lib/redocly/registry-api.js +64 -82
  50. package/lib/ref-utils.js +13 -13
  51. package/lib/resolve.js +186 -205
  52. package/lib/rules/ajv.js +10 -8
  53. package/lib/rules/async3/channels-kebab-case.d.ts +2 -0
  54. package/lib/rules/async3/channels-kebab-case.js +19 -0
  55. package/lib/rules/async3/index.d.ts +3 -0
  56. package/lib/rules/async3/index.js +22 -0
  57. package/lib/rules/async3/no-channel-trailing-slash.d.ts +2 -0
  58. package/lib/rules/async3/no-channel-trailing-slash.js +16 -0
  59. package/lib/rules/common/assertions/asserts.js +5 -5
  60. package/lib/rules/common/assertions/index.d.ts +5 -4
  61. package/lib/rules/common/assertions/utils.js +43 -28
  62. package/lib/rules/common/no-invalid-parameter-examples.js +1 -2
  63. package/lib/rules/common/no-invalid-schema-examples.js +1 -2
  64. package/lib/rules/common/no-required-schema-properties-undefined.js +1 -2
  65. package/lib/rules/common/operation-tag-defined.js +1 -2
  66. package/lib/rules/common/path-http-verbs-order.js +1 -1
  67. package/lib/rules/common/path-segment-plural.js +2 -1
  68. package/lib/rules/common/required-string-property-missing-min-length.js +2 -2
  69. package/lib/rules/common/response-contains-header.js +2 -2
  70. package/lib/rules/common/security-defined.js +3 -7
  71. package/lib/rules/common/spec.d.ts +2 -2
  72. package/lib/rules/common/spec.js +6 -7
  73. package/lib/rules/no-unresolved-refs.js +3 -4
  74. package/lib/rules/oas2/response-contains-property.js +1 -2
  75. package/lib/rules/oas3/array-parameter-serialization.js +1 -2
  76. package/lib/rules/oas3/component-name-unique.js +2 -4
  77. package/lib/rules/oas3/no-invalid-media-type-examples.js +1 -2
  78. package/lib/rules/oas3/no-server-variables-empty-enum.js +1 -2
  79. package/lib/rules/oas3/no-undefined-server-variable.js +2 -3
  80. package/lib/rules/oas3/no-unused-components.js +1 -2
  81. package/lib/rules/oas3/response-contains-property.js +1 -2
  82. package/lib/rules/utils.js +14 -12
  83. package/lib/types/arazzo.d.ts +1299 -73
  84. package/lib/types/arazzo.js +41 -36
  85. package/lib/types/asyncapi2.d.ts +17 -0
  86. package/lib/types/{asyncapi.js → asyncapi2.js} +71 -93
  87. package/lib/types/asyncapi3.d.ts +2 -0
  88. package/lib/types/asyncapi3.js +347 -0
  89. package/lib/types/index.js +19 -10
  90. package/lib/types/json-schema-adapter.js +4 -18
  91. package/lib/types/oas2.js +6 -6
  92. package/lib/types/oas3.js +10 -10
  93. package/lib/types/oas3_1.js +15 -9
  94. package/lib/types/redocly-yaml.d.ts +3 -1
  95. package/lib/types/redocly-yaml.js +131 -35
  96. package/lib/typings/arazzo.d.ts +28 -1
  97. package/lib/typings/asyncapi3.d.ts +53 -0
  98. package/lib/typings/asyncapi3.js +2 -0
  99. package/lib/utils.d.ts +12 -7
  100. package/lib/utils.js +91 -77
  101. package/lib/visitors.d.ts +11 -0
  102. package/lib/visitors.js +21 -8
  103. package/lib/walk.js +30 -23
  104. package/package.json +3 -3
  105. package/src/__tests__/bundle.test.ts +142 -0
  106. package/src/__tests__/lint.test.ts +0 -50
  107. package/src/bundle.ts +19 -6
  108. package/src/config/__tests__/__snapshots__/config-resolvers.test.ts.snap +22 -0
  109. package/src/config/__tests__/__snapshots__/config.test.ts.snap +24 -0
  110. package/src/config/__tests__/config.test.ts +11 -0
  111. package/src/config/all.ts +9 -0
  112. package/src/config/builtIn.ts +6 -0
  113. package/src/config/config-resolvers.ts +15 -2
  114. package/src/config/config.ts +24 -5
  115. package/src/config/load.ts +1 -2
  116. package/src/config/minimal.ts +9 -0
  117. package/src/config/recommended-strict.ts +9 -0
  118. package/src/config/recommended.ts +9 -0
  119. package/src/config/rules.ts +12 -4
  120. package/src/config/types.ts +15 -2
  121. package/src/config/utils.ts +15 -0
  122. package/src/decorators/async3/index.ts +1 -0
  123. package/src/decorators/common/remove-x-internal.ts +2 -2
  124. package/src/index.ts +2 -1
  125. package/src/lint.ts +26 -3
  126. package/src/oas-types.ts +31 -13
  127. package/src/rules/arazzo/index.ts +1 -1
  128. package/src/rules/async2/index.ts +5 -5
  129. package/src/rules/async3/__tests__/channels-kebab-case.test.ts +141 -0
  130. package/src/rules/async3/__tests__/no-channel-trailing-slash.test.ts +96 -0
  131. package/src/rules/async3/channels-kebab-case.ts +19 -0
  132. package/src/rules/async3/index.ts +23 -0
  133. package/src/rules/async3/no-channel-trailing-slash.ts +16 -0
  134. package/src/rules/common/__tests__/spec.test.ts +47 -0
  135. package/src/rules/common/assertions/index.ts +13 -4
  136. package/src/rules/common/no-invalid-schema-examples.ts +3 -2
  137. package/src/rules/common/path-segment-plural.ts +3 -2
  138. package/src/rules/common/spec.ts +2 -2
  139. package/src/rules/oas2/index.ts +4 -4
  140. package/src/rules/oas3/index.ts +39 -37
  141. package/src/types/arazzo.ts +28 -23
  142. package/src/types/{asyncapi.ts → asyncapi2.ts} +58 -76
  143. package/src/types/asyncapi3.ts +381 -0
  144. package/src/types/oas3_1.ts +3 -2
  145. package/src/types/redocly-yaml.ts +14 -0
  146. package/src/typings/arazzo.ts +41 -1
  147. package/src/typings/asyncapi3.ts +61 -0
  148. package/src/utils.ts +46 -11
  149. package/src/visitors.ts +18 -0
  150. package/tsconfig.tsbuildinfo +1 -1
  151. package/lib/types/asyncapi.d.ts +0 -2
@@ -1,15 +1,10 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.createConfig = exports.getConfig = exports.findConfig = exports.CONFIG_FILE_NAMES = exports.loadConfig = void 0;
3
+ exports.CONFIG_FILE_NAMES = void 0;
4
+ exports.loadConfig = loadConfig;
5
+ exports.findConfig = findConfig;
6
+ exports.getConfig = getConfig;
7
+ exports.createConfig = createConfig;
13
8
  const fs = require("fs");
14
9
  const path = require("path");
15
10
  const redocly_1 = require("../redocly");
@@ -21,92 +16,89 @@ const bundle_1 = require("../bundle");
21
16
  const resolve_1 = require("../resolve");
22
17
  const env_1 = require("../env");
23
18
  const domains_1 = require("../redocly/domains");
24
- function addConfigMetadata({ rawConfig, customExtends, configPath, tokens, files, region, externalRefResolver, }) {
25
- var _a;
26
- return __awaiter(this, void 0, void 0, function* () {
27
- if (customExtends !== undefined) {
28
- rawConfig.styleguide = rawConfig.styleguide || {};
29
- rawConfig.styleguide.extends = customExtends;
30
- }
31
- else if ((0, utils_1.isEmptyObject)(rawConfig)) {
32
- rawConfig.styleguide = { extends: ['recommended'], recommendedFallback: true };
33
- }
34
- if (tokens === null || tokens === void 0 ? void 0 : tokens.length) {
35
- if (!rawConfig.resolve)
36
- rawConfig.resolve = {};
37
- if (!rawConfig.resolve.http)
38
- rawConfig.resolve.http = {};
39
- rawConfig.resolve.http.headers = [...((_a = rawConfig.resolve.http.headers) !== null && _a !== void 0 ? _a : [])];
40
- for (const item of tokens) {
41
- const domain = domains_1.DOMAINS[item.region];
42
- rawConfig.resolve.http.headers.push({
43
- matches: `https://api.${domain}/registry/**`,
44
- name: 'Authorization',
45
- envVariable: undefined,
46
- value: item.token,
47
- },
48
- //support redocly.com domain for future compatibility
49
- ...(item.region === 'us'
50
- ? [
51
- {
52
- matches: `https://api.redoc.ly/registry/**`,
53
- name: 'Authorization',
54
- envVariable: undefined,
55
- value: item.token,
56
- },
57
- ]
58
- : []));
59
- }
19
+ async function addConfigMetadata({ rawConfig, customExtends, configPath, tokens, files, region, externalRefResolver, }) {
20
+ if (customExtends !== undefined) {
21
+ rawConfig.styleguide = rawConfig.styleguide || {};
22
+ rawConfig.styleguide.extends = customExtends;
23
+ }
24
+ else if ((0, utils_1.isEmptyObject)(rawConfig)) {
25
+ rawConfig.styleguide = { extends: ['recommended'], recommendedFallback: true };
26
+ }
27
+ if (tokens?.length) {
28
+ if (!rawConfig.resolve)
29
+ rawConfig.resolve = {};
30
+ if (!rawConfig.resolve.http)
31
+ rawConfig.resolve.http = {};
32
+ rawConfig.resolve.http.headers = [...(rawConfig.resolve.http.headers ?? [])];
33
+ for (const item of tokens) {
34
+ const domain = domains_1.DOMAINS[item.region];
35
+ rawConfig.resolve.http.headers.push({
36
+ matches: `https://api.${domain}/registry/**`,
37
+ name: 'Authorization',
38
+ envVariable: undefined,
39
+ value: item.token,
40
+ },
41
+ //support redocly.com domain for future compatibility
42
+ ...(item.region === 'us'
43
+ ? [
44
+ {
45
+ matches: `https://api.redoc.ly/registry/**`,
46
+ name: 'Authorization',
47
+ envVariable: undefined,
48
+ value: item.token,
49
+ },
50
+ ]
51
+ : []));
60
52
  }
61
- return (0, config_resolvers_1.resolveConfig)({
62
- rawConfig: Object.assign(Object.assign({}, rawConfig), { files: files !== null && files !== void 0 ? files : rawConfig.files, region: region !== null && region !== void 0 ? region : rawConfig.region }),
63
- configPath,
64
- externalRefResolver,
65
- });
53
+ }
54
+ return (0, config_resolvers_1.resolveConfig)({
55
+ rawConfig: {
56
+ ...rawConfig,
57
+ files: files ?? rawConfig.files,
58
+ region: region ?? rawConfig.region,
59
+ },
60
+ configPath,
61
+ externalRefResolver,
66
62
  });
67
63
  }
68
- function loadConfig(options = {}) {
69
- return __awaiter(this, void 0, void 0, function* () {
70
- const { configPath = findConfig(), customExtends, processRawConfig, files, region, externalRefResolver, } = options;
71
- const { rawConfig, document, parsed, resolvedRefMap } = yield getConfig({
72
- configPath,
73
- externalRefResolver,
74
- });
75
- const redoclyClient = env_1.isBrowser ? undefined : new redocly_1.RedoclyClient();
76
- const tokens = redoclyClient && redoclyClient.hasTokens() ? redoclyClient.getAllTokens() : [];
77
- const config = yield addConfigMetadata({
78
- rawConfig,
79
- customExtends,
80
- configPath,
81
- tokens,
82
- files,
83
- region,
84
- externalRefResolver,
85
- });
86
- if (document && parsed && resolvedRefMap && typeof processRawConfig === 'function') {
87
- try {
88
- yield processRawConfig({
89
- document,
90
- resolvedRefMap,
91
- config,
92
- parsed,
93
- });
94
- }
95
- catch (e) {
96
- if (e instanceof utils_2.ConfigValidationError) {
97
- throw e;
98
- }
99
- throw new Error(`Error parsing config file at '${configPath}': ${e.message}`);
64
+ async function loadConfig(options = {}) {
65
+ const { configPath = findConfig(), customExtends, processRawConfig, files, region, externalRefResolver, } = options;
66
+ const { rawConfig, document, parsed, resolvedRefMap } = await getConfig({
67
+ configPath,
68
+ externalRefResolver,
69
+ });
70
+ const redoclyClient = env_1.isBrowser ? undefined : new redocly_1.RedoclyClient();
71
+ const tokens = redoclyClient && redoclyClient.hasTokens() ? redoclyClient.getAllTokens() : [];
72
+ const config = await addConfigMetadata({
73
+ rawConfig,
74
+ customExtends,
75
+ configPath,
76
+ tokens,
77
+ files,
78
+ region,
79
+ externalRefResolver,
80
+ });
81
+ if (document && parsed && resolvedRefMap && typeof processRawConfig === 'function') {
82
+ try {
83
+ await processRawConfig({
84
+ document,
85
+ resolvedRefMap,
86
+ config,
87
+ parsed,
88
+ });
89
+ }
90
+ catch (e) {
91
+ if (e instanceof utils_2.ConfigValidationError) {
92
+ throw e;
100
93
  }
94
+ throw new Error(`Error parsing config file at '${configPath}': ${e.message}`);
101
95
  }
102
- return config;
103
- });
96
+ }
97
+ return config;
104
98
  }
105
- exports.loadConfig = loadConfig;
106
99
  exports.CONFIG_FILE_NAMES = ['redocly.yaml', 'redocly.yml', '.redocly.yaml', '.redocly.yml'];
107
100
  function findConfig(dir) {
108
- var _a;
109
- if (!((_a = fs === null || fs === void 0 ? void 0 : fs.hasOwnProperty) === null || _a === void 0 ? void 0 : _a.call(fs, 'existsSync')))
101
+ if (!fs?.hasOwnProperty?.('existsSync'))
110
102
  return;
111
103
  const existingConfigFiles = exports.CONFIG_FILE_NAMES.map((name) => dir ? path.resolve(dir, name) : name).filter(fs.existsSync);
112
104
  if (existingConfigFiles.length > 1) {
@@ -118,35 +110,31 @@ function findConfig(dir) {
118
110
  }
119
111
  return existingConfigFiles[0];
120
112
  }
121
- exports.findConfig = findConfig;
122
- function getConfig(options = {}) {
123
- return __awaiter(this, void 0, void 0, function* () {
124
- const { configPath = findConfig(), externalRefResolver = new resolve_1.BaseResolver() } = options;
125
- if (!configPath)
126
- return { rawConfig: {} };
127
- try {
128
- const { document, resolvedRefMap } = yield (0, config_resolvers_1.resolveConfigFileAndRefs)({
129
- configPath,
130
- externalRefResolver,
131
- });
132
- const bundledRefMap = (0, utils_2.deepCloneMapWithJSON)(resolvedRefMap);
133
- const parsed = yield (0, bundle_1.bundleConfig)(JSON.parse(JSON.stringify(document)), bundledRefMap);
134
- return {
135
- rawConfig: (0, utils_2.transformConfig)(parsed),
136
- document,
137
- parsed,
138
- resolvedRefMap,
139
- };
140
- }
141
- catch (e) {
142
- throw new Error(`Error parsing config file at '${configPath}': ${e.message}`);
143
- }
144
- });
113
+ async function getConfig(options = {}) {
114
+ const { configPath = findConfig(), externalRefResolver = new resolve_1.BaseResolver() } = options;
115
+ if (!configPath)
116
+ return { rawConfig: {} };
117
+ try {
118
+ const { document, resolvedRefMap } = await (0, config_resolvers_1.resolveConfigFileAndRefs)({
119
+ configPath,
120
+ externalRefResolver,
121
+ });
122
+ const bundledRefMap = (0, utils_2.deepCloneMapWithJSON)(resolvedRefMap);
123
+ const parsed = await (0, bundle_1.bundleConfig)(JSON.parse(JSON.stringify(document)), bundledRefMap);
124
+ return {
125
+ rawConfig: (0, utils_2.transformConfig)(parsed),
126
+ document,
127
+ parsed,
128
+ resolvedRefMap,
129
+ };
130
+ }
131
+ catch (e) {
132
+ throw new Error(`Error parsing config file at '${configPath}': ${e.message}`);
133
+ }
145
134
  }
146
- exports.getConfig = getConfig;
147
- function createConfig(config, options) {
148
- return __awaiter(this, void 0, void 0, function* () {
149
- return addConfigMetadata(Object.assign({ rawConfig: (0, utils_2.transformConfig)(typeof config === 'string' ? (0, js_yaml_1.parseYaml)(config) : config) }, options));
135
+ async function createConfig(config, options) {
136
+ return addConfigMetadata({
137
+ rawConfig: (0, utils_2.transformConfig)(typeof config === 'string' ? (0, js_yaml_1.parseYaml)(config) : config),
138
+ ...options,
150
139
  });
151
140
  }
152
- exports.createConfig = createConfig;
@@ -96,6 +96,15 @@ const minimal = {
96
96
  'channels-kebab-case': 'off',
97
97
  'no-channel-trailing-slash': 'off',
98
98
  },
99
+ async3Rules: {
100
+ spec: 'error',
101
+ 'info-contact': 'off',
102
+ 'operation-operationId': 'warn',
103
+ 'tag-description': 'warn',
104
+ 'tags-alphabetical': 'off',
105
+ 'channels-kebab-case': 'off',
106
+ 'no-channel-trailing-slash': 'off',
107
+ },
99
108
  arazzoRules: {
100
109
  spec: 'error',
101
110
  },
@@ -96,6 +96,15 @@ const recommendedStrict = {
96
96
  'channels-kebab-case': 'off',
97
97
  'no-channel-trailing-slash': 'off',
98
98
  },
99
+ async3Rules: {
100
+ spec: 'error',
101
+ 'info-contact': 'off',
102
+ 'operation-operationId': 'error',
103
+ 'tag-description': 'error',
104
+ 'tags-alphabetical': 'off',
105
+ 'channels-kebab-case': 'off',
106
+ 'no-channel-trailing-slash': 'off',
107
+ },
99
108
  arazzoRules: {
100
109
  spec: 'error',
101
110
  },
@@ -96,6 +96,15 @@ const recommended = {
96
96
  'channels-kebab-case': 'off',
97
97
  'no-channel-trailing-slash': 'off',
98
98
  },
99
+ async3Rules: {
100
+ spec: 'error',
101
+ 'info-contact': 'off',
102
+ 'operation-operationId': 'warn',
103
+ 'tag-description': 'warn',
104
+ 'tags-alphabetical': 'off',
105
+ 'channels-kebab-case': 'off',
106
+ 'no-channel-trailing-slash': 'off',
107
+ },
99
108
  arazzoRules: {
100
109
  spec: 'error',
101
110
  },
@@ -1,10 +1,10 @@
1
- import { RuleSet, SpecVersion } from '../oas-types';
2
- import { StyleguideConfig } from './config';
1
+ import type { ArazzoRuleSet, Async2RuleSet, Async3RuleSet, Oas2RuleSet, Oas3RuleSet, SpecVersion } from '../oas-types';
2
+ import type { StyleguideConfig } from './config';
3
3
  import type { ProblemSeverity } from '../walk';
4
4
  type InitializedRule = {
5
5
  severity: ProblemSeverity;
6
6
  ruleId: string;
7
7
  visitor: any;
8
8
  };
9
- export declare function initRules<T extends Function, P extends RuleSet<T>>(rules: P[], config: StyleguideConfig, type: 'rules' | 'preprocessors' | 'decorators', oasVersion: SpecVersion): InitializedRule[];
9
+ export declare function initRules(rules: (Oas3RuleSet | Oas2RuleSet | Async2RuleSet | Async3RuleSet | ArazzoRuleSet)[], config: StyleguideConfig, type: 'rules' | 'preprocessors' | 'decorators', oasVersion: SpecVersion): InitializedRule[];
10
10
  export {};
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.initRules = void 0;
3
+ exports.initRules = initRules;
4
4
  const utils_1 = require("../utils");
5
5
  function initRules(rules, config, type, oasVersion) {
6
6
  return rules
@@ -32,4 +32,3 @@ function initRules(rules, config, type, oasVersion) {
32
32
  .flatMap((visitor) => visitor)
33
33
  .filter(utils_1.isDefined);
34
34
  }
35
- exports.initRules = initRules;
@@ -1,9 +1,9 @@
1
1
  import type { ProblemSeverity, UserContext } from '../walk';
2
- import type { Oas3PreprocessorsSet, SpecMajorVersion, Oas3DecoratorsSet, Oas2RuleSet, Oas2PreprocessorsSet, Oas2DecoratorsSet, Oas3RuleSet, SpecVersion, Async2PreprocessorsSet, Async2DecoratorsSet, Async2RuleSet, ArazzoRuleSet, ArazzoPreprocessorsSet, ArazzoDecoratorsSet, RuleMap } from '../oas-types';
2
+ import type { Oas3PreprocessorsSet, SpecMajorVersion, Oas3DecoratorsSet, Oas2RuleSet, Oas2PreprocessorsSet, Oas2DecoratorsSet, Oas3RuleSet, SpecVersion, Async2PreprocessorsSet, Async2DecoratorsSet, Async2RuleSet, Async3PreprocessorsSet, Async3DecoratorsSet, Async3RuleSet, ArazzoRuleSet, ArazzoPreprocessorsSet, ArazzoDecoratorsSet, RuleMap } from '../oas-types';
3
3
  import type { NodeType } from '../types';
4
4
  import { Location } from '../ref-utils';
5
5
  import type { SkipFunctionContext } from '../visitors';
6
- import { BuiltInAsync2RuleId, BuiltInCommonOASRuleId, BuiltInOAS2RuleId, BuiltInOAS3RuleId, BuiltInArazzoRuleId } from '../types/redocly-yaml';
6
+ import { BuiltInAsync2RuleId, BuiltInAsync3RuleId, BuiltInCommonOASRuleId, BuiltInOAS2RuleId, BuiltInOAS3RuleId, BuiltInArazzoRuleId } from '../types/redocly-yaml';
7
7
  export type RuleSeverity = ProblemSeverity | 'off';
8
8
  export type RuleSettings = {
9
9
  severity: RuleSeverity;
@@ -26,18 +26,21 @@ export type StyleguideRawConfig<T = undefined> = {
26
26
  oas3_0Rules?: RuleMap<BuiltInOAS3RuleId, RuleConfig, T>;
27
27
  oas3_1Rules?: RuleMap<BuiltInOAS3RuleId, RuleConfig, T>;
28
28
  async2Rules?: RuleMap<BuiltInAsync2RuleId, RuleConfig, T>;
29
+ async3Rules?: RuleMap<BuiltInAsync3RuleId, RuleConfig, T>;
29
30
  arazzoRules?: RuleMap<BuiltInArazzoRuleId, RuleConfig, T>;
30
31
  preprocessors?: Record<string, PreprocessorConfig>;
31
32
  oas2Preprocessors?: Record<string, PreprocessorConfig>;
32
33
  oas3_0Preprocessors?: Record<string, PreprocessorConfig>;
33
34
  oas3_1Preprocessors?: Record<string, PreprocessorConfig>;
34
35
  async2Preprocessors?: Record<string, PreprocessorConfig>;
36
+ async3Preprocessors?: Record<string, PreprocessorConfig>;
35
37
  arazzoPreprocessors?: Record<string, PreprocessorConfig>;
36
38
  decorators?: Record<string, DecoratorConfig>;
37
39
  oas2Decorators?: Record<string, DecoratorConfig>;
38
40
  oas3_0Decorators?: Record<string, DecoratorConfig>;
39
41
  oas3_1Decorators?: Record<string, DecoratorConfig>;
40
42
  async2Decorators?: Record<string, DecoratorConfig>;
43
+ async3Decorators?: Record<string, DecoratorConfig>;
41
44
  arazzoDecorators?: Record<string, DecoratorConfig>;
42
45
  };
43
46
  export type ApiStyleguideRawConfig = Omit<StyleguideRawConfig, 'plugins'>;
@@ -52,12 +55,14 @@ export type PreprocessorsConfig = {
52
55
  oas3?: Oas3PreprocessorsSet;
53
56
  oas2?: Oas2PreprocessorsSet;
54
57
  async2?: Async2PreprocessorsSet;
58
+ async3?: Async3PreprocessorsSet;
55
59
  arazzo?: ArazzoPreprocessorsSet;
56
60
  };
57
61
  export type DecoratorsConfig = {
58
62
  oas3?: Oas3DecoratorsSet;
59
63
  oas2?: Oas2DecoratorsSet;
60
64
  async2?: Async2DecoratorsSet;
65
+ async3?: Async3DecoratorsSet;
61
66
  arazzo?: ArazzoDecoratorsSet;
62
67
  };
63
68
  export type TypesExtensionFn = (types: Record<string, NodeType>, oasVersion: SpecVersion) => Record<string, NodeType>;
@@ -66,6 +71,7 @@ export type CustomRulesConfig = {
66
71
  oas3?: Oas3RuleSet;
67
72
  oas2?: Oas2RuleSet;
68
73
  async2?: Async2RuleSet;
74
+ async3?: Async3RuleSet;
69
75
  arazzo?: ArazzoRuleSet;
70
76
  };
71
77
  export type AssertionContext = Partial<UserContext> & SkipFunctionContext & {
@@ -162,5 +168,5 @@ export type ThemeRawConfig = {
162
168
  openapi?: Record<string, any>;
163
169
  mockServer?: Record<string, any>;
164
170
  };
165
- export type RulesFields = 'rules' | 'oas2Rules' | 'oas3_0Rules' | 'oas3_1Rules' | 'async2Rules' | 'arazzoRules' | 'preprocessors' | 'oas2Preprocessors' | 'oas3_0Preprocessors' | 'oas3_1Preprocessors' | 'async2Preprocessors' | 'arazzoPreprocessors' | 'decorators' | 'oas2Decorators' | 'oas3_0Decorators' | 'oas3_1Decorators' | 'arazzoDecorators' | 'async2Decorators';
171
+ export type RulesFields = 'rules' | 'oas2Rules' | 'oas3_0Rules' | 'oas3_1Rules' | 'async2Rules' | 'async3Rules' | 'arazzoRules' | 'preprocessors' | 'oas2Preprocessors' | 'oas3_0Preprocessors' | 'oas3_1Preprocessors' | 'async2Preprocessors' | 'async3Preprocessors' | 'arazzoPreprocessors' | 'decorators' | 'oas2Decorators' | 'oas3_0Decorators' | 'oas3_1Decorators' | 'async2Decorators' | 'async3Decorators' | 'arazzoDecorators';
166
172
  export {};