@redocly/openapi-core 1.17.0 → 1.18.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 (61) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/lib/bundle.d.ts +1 -1
  3. package/lib/bundle.js +15 -0
  4. package/lib/config/all.js +6 -0
  5. package/lib/config/builtIn.js +10 -2
  6. package/lib/config/config-resolvers.js +15 -4
  7. package/lib/config/config.d.ts +2 -2
  8. package/lib/config/config.js +15 -0
  9. package/lib/config/minimal.js +8 -0
  10. package/lib/config/recommended-strict.js +8 -0
  11. package/lib/config/recommended.js +8 -0
  12. package/lib/config/types.d.ts +10 -4
  13. package/lib/config/utils.js +13 -1
  14. package/lib/decorators/arazzo/index.d.ts +1 -0
  15. package/lib/decorators/arazzo/index.js +4 -0
  16. package/lib/decorators/async2/index.d.ts +1 -0
  17. package/lib/decorators/async2/index.js +4 -0
  18. package/lib/index.d.ts +1 -0
  19. package/lib/index.js +4 -2
  20. package/lib/oas-types.d.ts +13 -8
  21. package/lib/oas-types.js +10 -0
  22. package/lib/rules/arazzo/index.d.ts +3 -0
  23. package/lib/rules/arazzo/index.js +10 -0
  24. package/lib/rules/common/spec.d.ts +2 -2
  25. package/lib/types/arazzo.d.ts +1050 -0
  26. package/lib/types/arazzo.js +381 -0
  27. package/lib/types/oas3.js +0 -8
  28. package/lib/types/oas3_1.js +7 -1
  29. package/lib/types/redocly-yaml.d.ts +5 -5
  30. package/lib/types/redocly-yaml.js +16 -5
  31. package/lib/typings/arazzo.d.ts +3 -0
  32. package/lib/typings/arazzo.js +2 -0
  33. package/lib/visitors.d.ts +11 -0
  34. package/package.json +3 -2
  35. package/src/__tests__/lint.test.ts +124 -0
  36. package/src/bundle.ts +13 -0
  37. package/src/config/__tests__/__snapshots__/config-resolvers.test.ts.snap +20 -0
  38. package/src/config/__tests__/__snapshots__/config.test.ts.snap +3 -0
  39. package/src/config/__tests__/config.test.ts +6 -0
  40. package/src/config/all.ts +6 -0
  41. package/src/config/builtIn.ts +10 -2
  42. package/src/config/config-resolvers.ts +17 -3
  43. package/src/config/config.ts +17 -0
  44. package/src/config/minimal.ts +8 -0
  45. package/src/config/recommended-strict.ts +8 -0
  46. package/src/config/recommended.ts +8 -0
  47. package/src/config/types.ts +15 -2
  48. package/src/config/utils.ts +15 -0
  49. package/src/decorators/arazzo/index.ts +1 -0
  50. package/src/decorators/async2/index.ts +1 -0
  51. package/src/index.ts +1 -0
  52. package/src/oas-types.ts +25 -4
  53. package/src/rules/arazzo/index.ts +11 -0
  54. package/src/rules/common/spec.ts +2 -2
  55. package/src/types/arazzo.ts +386 -0
  56. package/src/types/oas3.ts +0 -7
  57. package/src/types/oas3_1.ts +7 -0
  58. package/src/types/redocly-yaml.ts +19 -8
  59. package/src/typings/arazzo.ts +4 -0
  60. package/src/visitors.ts +18 -0
  61. package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # @redocly/openapi-core
2
2
 
3
+ ## 1.18.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Added support for Arazzo description linting.
8
+
9
+ ### Patch Changes
10
+
11
+ - Removed `additionalItems` from OAS 3.0.x typings. This keyword is not supported by the specification.
12
+
13
+ ## 1.17.1
14
+
15
+ ### Patch Changes
16
+
17
+ - Added JSON Schema draft 2019-09+ validation keyword - `dependentRequired`.
18
+ - Updated @redocly/config to v0.6.2.
19
+
3
20
  ## 1.17.0
4
21
 
5
22
  ### Minor Changes
package/lib/bundle.d.ts CHANGED
@@ -47,4 +47,4 @@ export declare function bundleDocument(opts: {
47
47
  removeUnusedComponents?: boolean;
48
48
  keepUrlRefs?: boolean;
49
49
  }): Promise<BundleResult>;
50
- export declare function mapTypeToComponent(typeName: string, version: SpecMajorVersion): "definitions" | "examples" | "parameters" | "headers" | "schemas" | "responses" | "requestBodies" | "securitySchemes" | "links" | "callbacks" | null;
50
+ export declare function mapTypeToComponent(typeName: string, version: SpecMajorVersion): "definitions" | "parameters" | "examples" | "headers" | "schemas" | "responses" | "requestBodies" | "securitySchemes" | "links" | "callbacks" | null;
package/lib/bundle.js CHANGED
@@ -201,6 +201,15 @@ function mapTypeToComponent(typeName, version) {
201
201
  default:
202
202
  return null;
203
203
  }
204
+ case oas_types_1.SpecMajorVersion.Arazzo:
205
+ switch (typeName) {
206
+ case 'Root.x-parameters_items':
207
+ case 'Root.workflows_items.parameters_items':
208
+ case 'Root.workflows_items.steps_items.parameters_items':
209
+ return 'parameters';
210
+ default:
211
+ return null;
212
+ }
204
213
  }
205
214
  }
206
215
  exports.mapTypeToComponent = mapTypeToComponent;
@@ -265,6 +274,12 @@ function makeBundleVisitor(version, dereference, skipRedoclyRegistryRefs, rootDo
265
274
  else if (version === oas_types_1.SpecMajorVersion.OAS2) {
266
275
  components = root;
267
276
  }
277
+ else if (version === oas_types_1.SpecMajorVersion.Async2) {
278
+ components = root.components = root.components || {};
279
+ }
280
+ else if (version === oas_types_1.SpecMajorVersion.Arazzo) {
281
+ components = root.components = root.components || {};
282
+ }
268
283
  },
269
284
  },
270
285
  };
package/lib/config/all.js CHANGED
@@ -106,8 +106,14 @@ const all = {
106
106
  'array-parameter-serialization': 'error',
107
107
  },
108
108
  async2Rules: {
109
+ spec: 'error',
110
+ 'info-contact': 'error',
111
+ 'operation-operationId': 'error',
112
+ 'tag-description': 'error',
113
+ 'tags-alphabetical': 'error',
109
114
  'channels-kebab-case': 'error',
110
115
  'no-channel-trailing-slash': 'error',
111
116
  },
117
+ arazzoRules: { spec: 'error' },
112
118
  };
113
119
  exports.default = all;
@@ -8,10 +8,15 @@ const minimal_1 = require("./minimal");
8
8
  const oas3_1 = require("../rules/oas3");
9
9
  const oas2_1 = require("../rules/oas2");
10
10
  const async2_1 = require("../rules/async2");
11
+ const arazzo_1 = require("../rules/arazzo");
11
12
  const oas3_2 = require("../rules/oas3");
12
13
  const oas2_2 = require("../rules/oas2");
14
+ const async2_2 = require("../rules/async2");
15
+ const arazzo_2 = require("../rules/arazzo");
13
16
  const oas3_3 = require("../decorators/oas3");
14
17
  const oas2_3 = require("../decorators/oas2");
18
+ const async2_3 = require("../decorators/async2");
19
+ const arazzo_3 = require("../decorators/arazzo");
15
20
  exports.builtInConfigs = {
16
21
  recommended: recommended_1.default,
17
22
  'recommended-strict': recommended_strict_1.default,
@@ -27,16 +32,19 @@ exports.defaultPlugin = {
27
32
  oas3: oas3_1.rules,
28
33
  oas2: oas2_1.rules,
29
34
  async2: async2_1.rules,
35
+ arazzo: arazzo_1.rules,
30
36
  },
31
37
  preprocessors: {
32
38
  oas3: oas3_2.preprocessors,
33
39
  oas2: oas2_2.preprocessors,
34
- async2: {},
40
+ async2: async2_2.preprocessors,
41
+ arazzo: arazzo_2.preprocessors,
35
42
  },
36
43
  decorators: {
37
44
  oas3: oas3_3.decorators,
38
45
  oas2: oas2_3.decorators,
39
- async2: {},
46
+ async2: async2_3.decorators,
47
+ arazzo: arazzo_3.decorators,
40
48
  },
41
49
  configs: exports.builtInConfigs,
42
50
  };
@@ -127,7 +127,7 @@ function resolvePlugins(plugins, configPath = '') {
127
127
  const plugin = Object.assign(Object.assign({ id }, (pluginModule.configs ? { configs: pluginModule.configs } : {})), (pluginModule.typeExtension ? { typeExtension: pluginModule.typeExtension } : {}));
128
128
  if (pluginModule.rules) {
129
129
  if (!pluginModule.rules.oas3 && !pluginModule.rules.oas2 && !pluginModule.rules.async2) {
130
- throw new Error(`Plugin rules must have \`oas3\`, \`oas2\` or \`async2\` rules "${p}.`);
130
+ throw new Error(`Plugin rules must have \`oas3\`, \`oas2\`, \`async2\`, or \`arazzo\` rules "${p}.`);
131
131
  }
132
132
  plugin.rules = {};
133
133
  if (pluginModule.rules.oas3) {
@@ -139,11 +139,15 @@ function resolvePlugins(plugins, configPath = '') {
139
139
  if (pluginModule.rules.async2) {
140
140
  plugin.rules.async2 = (0, utils_2.prefixRules)(pluginModule.rules.async2, id);
141
141
  }
142
+ if (pluginModule.rules.arazzo) {
143
+ plugin.rules.arazzo = (0, utils_2.prefixRules)(pluginModule.rules.arazzo, id);
144
+ }
142
145
  }
143
146
  if (pluginModule.preprocessors) {
144
147
  if (!pluginModule.preprocessors.oas3 &&
145
148
  !pluginModule.preprocessors.oas2 &&
146
- !pluginModule.preprocessors.async2) {
149
+ !pluginModule.preprocessors.async2 &&
150
+ !pluginModule.preprocessors.arazzo) {
147
151
  throw new Error(`Plugin \`preprocessors\` must have \`oas3\`, \`oas2\` or \`async2\` preprocessors "${p}.`);
148
152
  }
149
153
  plugin.preprocessors = {};
@@ -156,11 +160,15 @@ function resolvePlugins(plugins, configPath = '') {
156
160
  if (pluginModule.preprocessors.async2) {
157
161
  plugin.preprocessors.async2 = (0, utils_2.prefixRules)(pluginModule.preprocessors.async2, id);
158
162
  }
163
+ if (pluginModule.preprocessors.arazzo) {
164
+ plugin.preprocessors.arazzo = (0, utils_2.prefixRules)(pluginModule.preprocessors.arazzo, id);
165
+ }
159
166
  }
160
167
  if (pluginModule.decorators) {
161
168
  if (!pluginModule.decorators.oas3 &&
162
169
  !pluginModule.decorators.oas2 &&
163
- !pluginModule.decorators.async2) {
170
+ !pluginModule.decorators.async2 &&
171
+ !pluginModule.decorators.arazzo) {
164
172
  throw new Error(`Plugin \`decorators\` must have \`oas3\`, \`oas2\` or \`async2\` decorators "${p}.`);
165
173
  }
166
174
  plugin.decorators = {};
@@ -173,6 +181,9 @@ function resolvePlugins(plugins, configPath = '') {
173
181
  if (pluginModule.decorators.async2) {
174
182
  plugin.decorators.async2 = (0, utils_2.prefixRules)(pluginModule.decorators.async2, id);
175
183
  }
184
+ if (pluginModule.decorators.arazzo) {
185
+ plugin.decorators.arazzo = (0, utils_2.prefixRules)(pluginModule.decorators.arazzo, id);
186
+ }
176
187
  }
177
188
  if (pluginModule.assertions) {
178
189
  plugin.assertions = pluginModule.assertions;
@@ -276,7 +287,7 @@ function loadExtendStyleguideConfig(filePath, resolver) {
276
287
  });
277
288
  }
278
289
  function getMergedRawStyleguideConfig(rootStyleguideConfig, apiStyleguideConfig) {
279
- const resultLint = Object.assign(Object.assign(Object.assign({}, rootStyleguideConfig), (0, utils_1.pickDefined)(apiStyleguideConfig)), { rules: Object.assign(Object.assign({}, rootStyleguideConfig === null || rootStyleguideConfig === void 0 ? void 0 : rootStyleguideConfig.rules), apiStyleguideConfig === null || apiStyleguideConfig === void 0 ? void 0 : apiStyleguideConfig.rules), oas2Rules: Object.assign(Object.assign({}, rootStyleguideConfig === null || rootStyleguideConfig === void 0 ? void 0 : rootStyleguideConfig.oas2Rules), apiStyleguideConfig === null || apiStyleguideConfig === void 0 ? void 0 : apiStyleguideConfig.oas2Rules), oas3_0Rules: Object.assign(Object.assign({}, rootStyleguideConfig === null || rootStyleguideConfig === void 0 ? void 0 : rootStyleguideConfig.oas3_0Rules), apiStyleguideConfig === null || apiStyleguideConfig === void 0 ? void 0 : apiStyleguideConfig.oas3_0Rules), oas3_1Rules: Object.assign(Object.assign({}, rootStyleguideConfig === null || rootStyleguideConfig === void 0 ? void 0 : rootStyleguideConfig.oas3_1Rules), apiStyleguideConfig === null || apiStyleguideConfig === void 0 ? void 0 : apiStyleguideConfig.oas3_1Rules), preprocessors: Object.assign(Object.assign({}, rootStyleguideConfig === null || rootStyleguideConfig === void 0 ? void 0 : rootStyleguideConfig.preprocessors), apiStyleguideConfig === null || apiStyleguideConfig === void 0 ? void 0 : apiStyleguideConfig.preprocessors), oas2Preprocessors: Object.assign(Object.assign({}, rootStyleguideConfig === null || rootStyleguideConfig === void 0 ? void 0 : rootStyleguideConfig.oas2Preprocessors), apiStyleguideConfig === null || apiStyleguideConfig === void 0 ? void 0 : apiStyleguideConfig.oas2Preprocessors), oas3_0Preprocessors: Object.assign(Object.assign({}, rootStyleguideConfig === null || rootStyleguideConfig === void 0 ? void 0 : rootStyleguideConfig.oas3_0Preprocessors), apiStyleguideConfig === null || apiStyleguideConfig === void 0 ? void 0 : apiStyleguideConfig.oas3_0Preprocessors), oas3_1Preprocessors: Object.assign(Object.assign({}, rootStyleguideConfig === null || rootStyleguideConfig === void 0 ? void 0 : rootStyleguideConfig.oas3_1Preprocessors), apiStyleguideConfig === null || apiStyleguideConfig === void 0 ? void 0 : apiStyleguideConfig.oas3_1Preprocessors), decorators: Object.assign(Object.assign({}, rootStyleguideConfig === null || rootStyleguideConfig === void 0 ? void 0 : rootStyleguideConfig.decorators), apiStyleguideConfig === null || apiStyleguideConfig === void 0 ? void 0 : apiStyleguideConfig.decorators), oas2Decorators: Object.assign(Object.assign({}, rootStyleguideConfig === null || rootStyleguideConfig === void 0 ? void 0 : rootStyleguideConfig.oas2Decorators), apiStyleguideConfig === null || apiStyleguideConfig === void 0 ? void 0 : apiStyleguideConfig.oas2Decorators), oas3_0Decorators: Object.assign(Object.assign({}, rootStyleguideConfig === null || rootStyleguideConfig === void 0 ? void 0 : rootStyleguideConfig.oas3_0Decorators), apiStyleguideConfig === null || apiStyleguideConfig === void 0 ? void 0 : apiStyleguideConfig.oas3_0Decorators), oas3_1Decorators: Object.assign(Object.assign({}, rootStyleguideConfig === null || rootStyleguideConfig === void 0 ? void 0 : rootStyleguideConfig.oas3_1Decorators), apiStyleguideConfig === null || apiStyleguideConfig === void 0 ? void 0 : apiStyleguideConfig.oas3_1Decorators), recommendedFallback: (apiStyleguideConfig === null || apiStyleguideConfig === void 0 ? void 0 : apiStyleguideConfig.extends)
290
+ const resultLint = Object.assign(Object.assign(Object.assign({}, rootStyleguideConfig), (0, utils_1.pickDefined)(apiStyleguideConfig)), { rules: Object.assign(Object.assign({}, rootStyleguideConfig === null || rootStyleguideConfig === void 0 ? void 0 : rootStyleguideConfig.rules), apiStyleguideConfig === null || apiStyleguideConfig === void 0 ? void 0 : apiStyleguideConfig.rules), oas2Rules: Object.assign(Object.assign({}, rootStyleguideConfig === null || rootStyleguideConfig === void 0 ? void 0 : rootStyleguideConfig.oas2Rules), apiStyleguideConfig === null || apiStyleguideConfig === void 0 ? void 0 : apiStyleguideConfig.oas2Rules), oas3_0Rules: Object.assign(Object.assign({}, rootStyleguideConfig === null || rootStyleguideConfig === void 0 ? void 0 : rootStyleguideConfig.oas3_0Rules), apiStyleguideConfig === null || apiStyleguideConfig === void 0 ? void 0 : apiStyleguideConfig.oas3_0Rules), oas3_1Rules: Object.assign(Object.assign({}, rootStyleguideConfig === null || rootStyleguideConfig === void 0 ? void 0 : rootStyleguideConfig.oas3_1Rules), apiStyleguideConfig === null || apiStyleguideConfig === void 0 ? void 0 : apiStyleguideConfig.oas3_1Rules), arazzoRules: Object.assign(Object.assign({}, rootStyleguideConfig === null || rootStyleguideConfig === void 0 ? void 0 : rootStyleguideConfig.arazzoRules), apiStyleguideConfig === null || apiStyleguideConfig === void 0 ? void 0 : apiStyleguideConfig.arazzoRules), preprocessors: Object.assign(Object.assign({}, rootStyleguideConfig === null || rootStyleguideConfig === void 0 ? void 0 : rootStyleguideConfig.preprocessors), apiStyleguideConfig === null || apiStyleguideConfig === void 0 ? void 0 : apiStyleguideConfig.preprocessors), oas2Preprocessors: Object.assign(Object.assign({}, rootStyleguideConfig === null || rootStyleguideConfig === void 0 ? void 0 : rootStyleguideConfig.oas2Preprocessors), apiStyleguideConfig === null || apiStyleguideConfig === void 0 ? void 0 : apiStyleguideConfig.oas2Preprocessors), oas3_0Preprocessors: Object.assign(Object.assign({}, rootStyleguideConfig === null || rootStyleguideConfig === void 0 ? void 0 : rootStyleguideConfig.oas3_0Preprocessors), apiStyleguideConfig === null || apiStyleguideConfig === void 0 ? void 0 : apiStyleguideConfig.oas3_0Preprocessors), oas3_1Preprocessors: Object.assign(Object.assign({}, rootStyleguideConfig === null || rootStyleguideConfig === void 0 ? void 0 : rootStyleguideConfig.oas3_1Preprocessors), apiStyleguideConfig === null || apiStyleguideConfig === void 0 ? void 0 : apiStyleguideConfig.oas3_1Preprocessors), decorators: Object.assign(Object.assign({}, rootStyleguideConfig === null || rootStyleguideConfig === void 0 ? void 0 : rootStyleguideConfig.decorators), apiStyleguideConfig === null || apiStyleguideConfig === void 0 ? void 0 : apiStyleguideConfig.decorators), oas2Decorators: Object.assign(Object.assign({}, rootStyleguideConfig === null || rootStyleguideConfig === void 0 ? void 0 : rootStyleguideConfig.oas2Decorators), apiStyleguideConfig === null || apiStyleguideConfig === void 0 ? void 0 : apiStyleguideConfig.oas2Decorators), oas3_0Decorators: Object.assign(Object.assign({}, rootStyleguideConfig === null || rootStyleguideConfig === void 0 ? void 0 : rootStyleguideConfig.oas3_0Decorators), apiStyleguideConfig === null || apiStyleguideConfig === void 0 ? void 0 : apiStyleguideConfig.oas3_0Decorators), oas3_1Decorators: Object.assign(Object.assign({}, rootStyleguideConfig === null || rootStyleguideConfig === void 0 ? void 0 : rootStyleguideConfig.oas3_1Decorators), apiStyleguideConfig === null || apiStyleguideConfig === void 0 ? void 0 : apiStyleguideConfig.oas3_1Decorators), recommendedFallback: (apiStyleguideConfig === null || apiStyleguideConfig === void 0 ? void 0 : apiStyleguideConfig.extends)
280
291
  ? false
281
292
  : rootStyleguideConfig.recommendedFallback });
282
293
  return resultLint;
@@ -1,5 +1,5 @@
1
1
  import { NormalizedProblem } from '../walk';
2
- import { SpecVersion, SpecMajorVersion, Oas2RuleSet, Oas3RuleSet, Async2RuleSet } from '../oas-types';
2
+ import { SpecVersion, SpecMajorVersion, Oas2RuleSet, Oas3RuleSet, Async2RuleSet, ArazzoRuleSet } from '../oas-types';
3
3
  import type { NodeType } from '../types';
4
4
  import type { DecoratorConfig, Plugin, PreprocessorConfig, Region, ResolveConfig, ResolvedApi, ResolvedConfig, ResolvedStyleguideConfig, RuleConfig, RuleSettings, Telemetry, ThemeRawConfig } from './types';
5
5
  export declare const IGNORE_FILE = ".redocly.lint-ignore.yaml";
@@ -31,7 +31,7 @@ export declare class StyleguideConfig {
31
31
  preprocessors: string[];
32
32
  decorators: string[];
33
33
  };
34
- getRulesForOasVersion(version: SpecMajorVersion): Oas3RuleSet[] | Oas2RuleSet[] | Async2RuleSet[];
34
+ getRulesForOasVersion(version: SpecMajorVersion): Oas3RuleSet[] | Oas2RuleSet[] | Async2RuleSet[] | ArazzoRuleSet[];
35
35
  skipRules(rules?: string[]): void;
36
36
  skipPreprocessors(preprocessors?: string[]): void;
37
37
  skipDecorators(decorators?: string[]): void;
@@ -37,18 +37,21 @@ class StyleguideConfig {
37
37
  [oas_types_1.SpecVersion.OAS3_0]: Object.assign(Object.assign({}, rawConfig.rules), rawConfig.oas3_0Rules),
38
38
  [oas_types_1.SpecVersion.OAS3_1]: Object.assign(Object.assign({}, rawConfig.rules), rawConfig.oas3_1Rules),
39
39
  [oas_types_1.SpecVersion.Async2]: Object.assign(Object.assign({}, rawConfig.rules), rawConfig.async2Rules),
40
+ [oas_types_1.SpecVersion.Arazzo]: Object.assign({}, rawConfig.arazzoRules),
40
41
  };
41
42
  this.preprocessors = {
42
43
  [oas_types_1.SpecVersion.OAS2]: Object.assign(Object.assign({}, rawConfig.preprocessors), rawConfig.oas2Preprocessors),
43
44
  [oas_types_1.SpecVersion.OAS3_0]: Object.assign(Object.assign({}, rawConfig.preprocessors), rawConfig.oas3_0Preprocessors),
44
45
  [oas_types_1.SpecVersion.OAS3_1]: Object.assign(Object.assign({}, rawConfig.preprocessors), rawConfig.oas3_1Preprocessors),
45
46
  [oas_types_1.SpecVersion.Async2]: Object.assign(Object.assign({}, rawConfig.preprocessors), rawConfig.async2Preprocessors),
47
+ [oas_types_1.SpecVersion.Arazzo]: Object.assign({}, rawConfig.arazzoPreprocessors),
46
48
  };
47
49
  this.decorators = {
48
50
  [oas_types_1.SpecVersion.OAS2]: Object.assign(Object.assign({}, rawConfig.decorators), rawConfig.oas2Decorators),
49
51
  [oas_types_1.SpecVersion.OAS3_0]: Object.assign(Object.assign({}, rawConfig.decorators), rawConfig.oas3_0Decorators),
50
52
  [oas_types_1.SpecVersion.OAS3_1]: Object.assign(Object.assign({}, rawConfig.decorators), rawConfig.oas3_1Decorators),
51
53
  [oas_types_1.SpecVersion.Async2]: Object.assign(Object.assign({}, rawConfig.decorators), rawConfig.async2Decorators),
54
+ [oas_types_1.SpecVersion.Arazzo]: Object.assign({}, rawConfig.arazzoDecorators),
52
55
  };
53
56
  this.extendPaths = rawConfig.extendPaths || [];
54
57
  this.pluginPaths = rawConfig.pluginPaths || [];
@@ -125,6 +128,11 @@ class StyleguideConfig {
125
128
  continue;
126
129
  extendedTypes = plugin.typeExtension.async2(extendedTypes, version);
127
130
  break;
131
+ case oas_types_1.SpecVersion.Arazzo:
132
+ if (!plugin.typeExtension.arazzo)
133
+ continue;
134
+ extendedTypes = plugin.typeExtension.arazzo(extendedTypes, version);
135
+ break;
128
136
  default:
129
137
  throw new Error('Not implemented');
130
138
  }
@@ -209,6 +217,13 @@ class StyleguideConfig {
209
217
  this.plugins.forEach((p) => { var _a; return ((_a = p.rules) === null || _a === void 0 ? void 0 : _a.async2) && asyncApiRules.push(p.rules.async2); });
210
218
  this.plugins.forEach((p) => { var _a; return ((_a = p.decorators) === null || _a === void 0 ? void 0 : _a.async2) && asyncApiRules.push(p.decorators.async2); });
211
219
  return asyncApiRules;
220
+ case oas_types_1.SpecMajorVersion.Arazzo:
221
+ // eslint-disable-next-line no-case-declarations
222
+ const arazzoRules = []; // default ruleset
223
+ this.plugins.forEach((p) => { var _a; return ((_a = p.preprocessors) === null || _a === void 0 ? void 0 : _a.arazzo) && arazzoRules.push(p.preprocessors.arazzo); });
224
+ this.plugins.forEach((p) => { var _a; return ((_a = p.rules) === null || _a === void 0 ? void 0 : _a.arazzo) && arazzoRules.push(p.rules.arazzo); });
225
+ this.plugins.forEach((p) => { var _a; return ((_a = p.decorators) === null || _a === void 0 ? void 0 : _a.arazzo) && arazzoRules.push(p.decorators.arazzo); });
226
+ return arazzoRules;
212
227
  }
213
228
  }
214
229
  skipRules(rules) {
@@ -88,8 +88,16 @@ const minimal = {
88
88
  'array-parameter-serialization': 'off',
89
89
  },
90
90
  async2Rules: {
91
+ spec: 'error',
92
+ 'info-contact': 'off',
93
+ 'operation-operationId': 'warn',
94
+ 'tag-description': 'warn',
95
+ 'tags-alphabetical': 'off',
91
96
  'channels-kebab-case': 'off',
92
97
  'no-channel-trailing-slash': 'off',
93
98
  },
99
+ arazzoRules: {
100
+ spec: 'error',
101
+ },
94
102
  };
95
103
  exports.default = minimal;
@@ -88,8 +88,16 @@ const recommendedStrict = {
88
88
  'array-parameter-serialization': 'off',
89
89
  },
90
90
  async2Rules: {
91
+ spec: 'error',
92
+ 'info-contact': 'off',
93
+ 'operation-operationId': 'error',
94
+ 'tag-description': 'error',
95
+ 'tags-alphabetical': 'off',
91
96
  'channels-kebab-case': 'off',
92
97
  'no-channel-trailing-slash': 'off',
93
98
  },
99
+ arazzoRules: {
100
+ spec: 'error',
101
+ },
94
102
  };
95
103
  exports.default = recommendedStrict;
@@ -88,8 +88,16 @@ const recommended = {
88
88
  'array-parameter-serialization': 'off',
89
89
  },
90
90
  async2Rules: {
91
+ spec: 'error',
92
+ 'info-contact': 'off',
93
+ 'operation-operationId': 'warn',
94
+ 'tag-description': 'warn',
95
+ 'tags-alphabetical': 'off',
91
96
  'channels-kebab-case': 'off',
92
97
  'no-channel-trailing-slash': 'off',
93
98
  },
99
+ arazzoRules: {
100
+ spec: 'error',
101
+ },
94
102
  };
95
103
  exports.default = recommended;
@@ -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, RuleMap } from '../oas-types';
2
+ import type { Oas3PreprocessorsSet, SpecMajorVersion, Oas3DecoratorsSet, Oas2RuleSet, Oas2PreprocessorsSet, Oas2DecoratorsSet, Oas3RuleSet, SpecVersion, Async2PreprocessorsSet, Async2DecoratorsSet, Async2RuleSet, 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, BuiltInCommonRuleId, BuiltInOAS2RuleId, BuiltInOAS3RuleId } from '../types/redocly-yaml';
6
+ import { BuiltInAsync2RuleId, BuiltInCommonOASRuleId, BuiltInOAS2RuleId, BuiltInOAS3RuleId, BuiltInArazzoRuleId } from '../types/redocly-yaml';
7
7
  export type RuleSeverity = ProblemSeverity | 'off';
8
8
  export type RuleSettings = {
9
9
  severity: RuleSeverity;
@@ -21,21 +21,24 @@ export type StyleguideRawConfig<T = undefined> = {
21
21
  extends?: string[];
22
22
  doNotResolveExamples?: boolean;
23
23
  recommendedFallback?: boolean;
24
- rules?: RuleMap<BuiltInCommonRuleId | BuiltInCommonOASRuleId, RuleConfig, T>;
24
+ rules?: RuleMap<BuiltInCommonOASRuleId, RuleConfig, T>;
25
25
  oas2Rules?: RuleMap<BuiltInOAS2RuleId, RuleConfig, T>;
26
26
  oas3_0Rules?: RuleMap<BuiltInOAS3RuleId, RuleConfig, T>;
27
27
  oas3_1Rules?: RuleMap<BuiltInOAS3RuleId, RuleConfig, T>;
28
28
  async2Rules?: RuleMap<BuiltInAsync2RuleId, RuleConfig, T>;
29
+ arazzoRules?: RuleMap<BuiltInArazzoRuleId, RuleConfig, T>;
29
30
  preprocessors?: Record<string, PreprocessorConfig>;
30
31
  oas2Preprocessors?: Record<string, PreprocessorConfig>;
31
32
  oas3_0Preprocessors?: Record<string, PreprocessorConfig>;
32
33
  oas3_1Preprocessors?: Record<string, PreprocessorConfig>;
33
34
  async2Preprocessors?: Record<string, PreprocessorConfig>;
35
+ arazzoPreprocessors?: Record<string, PreprocessorConfig>;
34
36
  decorators?: Record<string, DecoratorConfig>;
35
37
  oas2Decorators?: Record<string, DecoratorConfig>;
36
38
  oas3_0Decorators?: Record<string, DecoratorConfig>;
37
39
  oas3_1Decorators?: Record<string, DecoratorConfig>;
38
40
  async2Decorators?: Record<string, DecoratorConfig>;
41
+ arazzoDecorators?: Record<string, DecoratorConfig>;
39
42
  };
40
43
  export type ApiStyleguideRawConfig = Omit<StyleguideRawConfig, 'plugins'>;
41
44
  export type ResolvedStyleguideConfig = PluginStyleguideConfig & {
@@ -49,11 +52,13 @@ export type PreprocessorsConfig = {
49
52
  oas3?: Oas3PreprocessorsSet;
50
53
  oas2?: Oas2PreprocessorsSet;
51
54
  async2?: Async2PreprocessorsSet;
55
+ arazzo?: ArazzoPreprocessorsSet;
52
56
  };
53
57
  export type DecoratorsConfig = {
54
58
  oas3?: Oas3DecoratorsSet;
55
59
  oas2?: Oas2DecoratorsSet;
56
60
  async2?: Async2DecoratorsSet;
61
+ arazzo?: ArazzoDecoratorsSet;
57
62
  };
58
63
  export type TypesExtensionFn = (types: Record<string, NodeType>, oasVersion: SpecVersion) => Record<string, NodeType>;
59
64
  export type TypeExtensionsConfig = Partial<Record<SpecMajorVersion, TypesExtensionFn>>;
@@ -61,6 +66,7 @@ export type CustomRulesConfig = {
61
66
  oas3?: Oas3RuleSet;
62
67
  oas2?: Oas2RuleSet;
63
68
  async2?: Async2RuleSet;
69
+ arazzo?: ArazzoRuleSet;
64
70
  };
65
71
  export type AssertionContext = Partial<UserContext> & SkipFunctionContext & {
66
72
  node: any;
@@ -156,5 +162,5 @@ export type ThemeRawConfig = {
156
162
  openapi?: Record<string, any>;
157
163
  mockServer?: Record<string, any>;
158
164
  };
159
- export type RulesFields = 'rules' | 'oas2Rules' | 'oas3_0Rules' | 'oas3_1Rules' | 'async2Rules' | 'preprocessors' | 'oas2Preprocessors' | 'oas3_0Preprocessors' | 'oas3_1Preprocessors' | 'async2Preprocessors' | 'decorators' | 'oas2Decorators' | 'oas3_0Decorators' | 'oas3_1Decorators' | 'async2Decorators';
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';
160
166
  export {};
@@ -37,7 +37,7 @@ function transformApiDefinitionsToApis(apiDefinitions) {
37
37
  exports.transformApiDefinitionsToApis = transformApiDefinitionsToApis;
38
38
  function extractFlatConfig(_a) {
39
39
  var _b;
40
- var { plugins, extends: _extends, rules, oas2Rules, oas3_0Rules, oas3_1Rules, async2Rules, preprocessors, oas2Preprocessors, oas3_0Preprocessors, oas3_1Preprocessors, async2Preprocessors, decorators, oas2Decorators, oas3_0Decorators, oas3_1Decorators, async2Decorators } = _a, rawConfigRest = __rest(_a, ["plugins", "extends", "rules", "oas2Rules", "oas3_0Rules", "oas3_1Rules", "async2Rules", "preprocessors", "oas2Preprocessors", "oas3_0Preprocessors", "oas3_1Preprocessors", "async2Preprocessors", "decorators", "oas2Decorators", "oas3_0Decorators", "oas3_1Decorators", "async2Decorators"]);
40
+ var { plugins, extends: _extends, rules, oas2Rules, oas3_0Rules, oas3_1Rules, async2Rules, arazzoRules, preprocessors, oas2Preprocessors, oas3_0Preprocessors, oas3_1Preprocessors, async2Preprocessors, arazzoPreprocessors, decorators, oas2Decorators, oas3_0Decorators, oas3_1Decorators, async2Decorators, arazzoDecorators } = _a, rawConfigRest = __rest(_a, ["plugins", "extends", "rules", "oas2Rules", "oas3_0Rules", "oas3_1Rules", "async2Rules", "arazzoRules", "preprocessors", "oas2Preprocessors", "oas3_0Preprocessors", "oas3_1Preprocessors", "async2Preprocessors", "arazzoPreprocessors", "decorators", "oas2Decorators", "oas3_0Decorators", "oas3_1Decorators", "async2Decorators", "arazzoDecorators"]);
41
41
  const styleguideConfig = {
42
42
  plugins,
43
43
  extends: _extends,
@@ -46,16 +46,19 @@ function extractFlatConfig(_a) {
46
46
  oas3_0Rules,
47
47
  oas3_1Rules,
48
48
  async2Rules,
49
+ arazzoRules,
49
50
  preprocessors,
50
51
  oas2Preprocessors,
51
52
  oas3_0Preprocessors,
52
53
  oas3_1Preprocessors,
53
54
  async2Preprocessors,
55
+ arazzoPreprocessors,
54
56
  decorators,
55
57
  oas2Decorators,
56
58
  oas3_0Decorators,
57
59
  oas3_1Decorators,
58
60
  async2Decorators,
61
+ arazzoDecorators,
59
62
  doNotResolveExamples: (_b = rawConfigRest.resolve) === null || _b === void 0 ? void 0 : _b.doNotResolveExamples,
60
63
  };
61
64
  if ((rawConfigRest.lint && rawConfigRest.styleguide) ||
@@ -98,16 +101,19 @@ function mergeExtends(rulesConfList) {
98
101
  oas3_0Rules: {},
99
102
  oas3_1Rules: {},
100
103
  async2Rules: {},
104
+ arazzoRules: {},
101
105
  preprocessors: {},
102
106
  oas2Preprocessors: {},
103
107
  oas3_0Preprocessors: {},
104
108
  oas3_1Preprocessors: {},
105
109
  async2Preprocessors: {},
110
+ arazzoPreprocessors: {},
106
111
  decorators: {},
107
112
  oas2Decorators: {},
108
113
  oas3_0Decorators: {},
109
114
  oas3_1Decorators: {},
110
115
  async2Decorators: {},
116
+ arazzoDecorators: {},
111
117
  plugins: [],
112
118
  pluginPaths: [],
113
119
  extendPaths: [],
@@ -125,6 +131,8 @@ function mergeExtends(rulesConfList) {
125
131
  (0, utils_1.assignExisting)(result.oas3_1Rules, rulesConf.rules || {});
126
132
  Object.assign(result.async2Rules, rulesConf.async2Rules);
127
133
  (0, utils_1.assignExisting)(result.async2Rules, rulesConf.rules || {});
134
+ Object.assign(result.arazzoRules, rulesConf.arazzoRules);
135
+ (0, utils_1.assignExisting)(result.arazzoRules, rulesConf.rules || {});
128
136
  Object.assign(result.preprocessors, rulesConf.preprocessors);
129
137
  Object.assign(result.oas2Preprocessors, rulesConf.oas2Preprocessors);
130
138
  (0, utils_1.assignExisting)(result.oas2Preprocessors, rulesConf.preprocessors || {});
@@ -134,6 +142,8 @@ function mergeExtends(rulesConfList) {
134
142
  (0, utils_1.assignExisting)(result.oas3_1Preprocessors, rulesConf.preprocessors || {});
135
143
  Object.assign(result.async2Preprocessors, rulesConf.async2Preprocessors);
136
144
  (0, utils_1.assignExisting)(result.async2Preprocessors, rulesConf.preprocessors || {});
145
+ Object.assign(result.arazzoPreprocessors, rulesConf.arazzoPreprocessors);
146
+ (0, utils_1.assignExisting)(result.arazzoPreprocessors, rulesConf.preprocessors || {});
137
147
  Object.assign(result.decorators, rulesConf.decorators);
138
148
  Object.assign(result.oas2Decorators, rulesConf.oas2Decorators);
139
149
  (0, utils_1.assignExisting)(result.oas2Decorators, rulesConf.decorators || {});
@@ -143,6 +153,8 @@ function mergeExtends(rulesConfList) {
143
153
  (0, utils_1.assignExisting)(result.oas3_1Decorators, rulesConf.decorators || {});
144
154
  Object.assign(result.async2Decorators, rulesConf.async2Decorators);
145
155
  (0, utils_1.assignExisting)(result.async2Decorators, rulesConf.decorators || {});
156
+ Object.assign(result.arazzoDecorators, rulesConf.arazzoDecorators);
157
+ (0, utils_1.assignExisting)(result.arazzoDecorators, rulesConf.decorators || {});
146
158
  result.plugins.push(...(rulesConf.plugins || []));
147
159
  result.pluginPaths.push(...(rulesConf.pluginPaths || []));
148
160
  result.extendPaths.push(...new Set(rulesConf.extendPaths));
@@ -0,0 +1 @@
1
+ export declare const decorators: {};
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decorators = void 0;
4
+ exports.decorators = {};
@@ -0,0 +1 @@
1
+ export declare const decorators: {};
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decorators = void 0;
4
+ exports.decorators = {};
package/lib/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export { BundleOutputFormat, readFileFromUrl, slash, doesYamlFileExist, isTruthy, getProxyAgent, pause, } from './utils';
2
2
  export { Oas3_1Types } from './types/oas3_1';
3
+ export { ArazzoTypes } from './types/arazzo';
3
4
  export { Oas3Types } from './types/oas3';
4
5
  export { Oas2Types } from './types/oas2';
5
6
  export { AsyncApi2Types } from './types/asyncapi';
package/lib/index.js CHANGED
@@ -14,8 +14,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.lintFromString = exports.lintDocument = exports.validate = exports.lint = exports.getTotals = exports.formatProblems = exports.getLineColLocation = exports.getAstNodeByPointer = exports.walkDocument = exports.normalizeVisitors = exports.getTypes = exports.detectSpec = exports.SpecVersion = exports.getMajorSpecVersion = exports.SpecMajorVersion = exports.isAbsoluteUrl = exports.isRef = exports.unescapePointer = exports.stringifyYaml = exports.parseYaml = exports.makeDocumentFromString = exports.YamlParseError = exports.ResolveError = exports.resolveDocument = exports.BaseResolver = exports.Source = exports.RedoclyClient = exports.createConfig = exports.CONFIG_FILE_NAMES = exports.findConfig = exports.getConfig = exports.loadConfig = exports.transformConfig = exports.getMergedConfig = exports.IGNORE_FILE = exports.StyleguideConfig = exports.Config = exports.Stats = exports.normalizeTypes = exports.ConfigTypes = exports.AsyncApi2Types = exports.Oas2Types = exports.Oas3Types = exports.Oas3_1Types = exports.pause = exports.getProxyAgent = exports.isTruthy = exports.doesYamlFileExist = exports.slash = exports.readFileFromUrl = void 0;
18
- exports.bundleFromString = exports.mapTypeToComponent = exports.bundleDocument = exports.bundle = exports.lintConfig = void 0;
17
+ exports.lintDocument = exports.validate = exports.lint = exports.getTotals = exports.formatProblems = exports.getLineColLocation = exports.getAstNodeByPointer = exports.walkDocument = exports.normalizeVisitors = exports.getTypes = exports.detectSpec = exports.SpecVersion = exports.getMajorSpecVersion = exports.SpecMajorVersion = exports.isAbsoluteUrl = exports.isRef = exports.unescapePointer = exports.stringifyYaml = exports.parseYaml = exports.makeDocumentFromString = exports.YamlParseError = exports.ResolveError = exports.resolveDocument = exports.BaseResolver = exports.Source = exports.RedoclyClient = exports.createConfig = exports.CONFIG_FILE_NAMES = exports.findConfig = exports.getConfig = exports.loadConfig = exports.transformConfig = exports.getMergedConfig = exports.IGNORE_FILE = exports.StyleguideConfig = exports.Config = exports.Stats = exports.normalizeTypes = exports.ConfigTypes = exports.AsyncApi2Types = exports.Oas2Types = exports.Oas3Types = exports.ArazzoTypes = exports.Oas3_1Types = exports.pause = exports.getProxyAgent = exports.isTruthy = exports.doesYamlFileExist = exports.slash = exports.readFileFromUrl = void 0;
18
+ exports.bundleFromString = exports.mapTypeToComponent = exports.bundleDocument = exports.bundle = exports.lintConfig = exports.lintFromString = void 0;
19
19
  var utils_1 = require("./utils");
20
20
  Object.defineProperty(exports, "readFileFromUrl", { enumerable: true, get: function () { return utils_1.readFileFromUrl; } });
21
21
  Object.defineProperty(exports, "slash", { enumerable: true, get: function () { return utils_1.slash; } });
@@ -25,6 +25,8 @@ Object.defineProperty(exports, "getProxyAgent", { enumerable: true, get: functio
25
25
  Object.defineProperty(exports, "pause", { enumerable: true, get: function () { return utils_1.pause; } });
26
26
  var oas3_1_1 = require("./types/oas3_1");
27
27
  Object.defineProperty(exports, "Oas3_1Types", { enumerable: true, get: function () { return oas3_1_1.Oas3_1Types; } });
28
+ var arazzo_1 = require("./types/arazzo");
29
+ Object.defineProperty(exports, "ArazzoTypes", { enumerable: true, get: function () { return arazzo_1.ArazzoTypes; } });
28
30
  var oas3_1 = require("./types/oas3");
29
31
  Object.defineProperty(exports, "Oas3Types", { enumerable: true, get: function () { return oas3_1.Oas3Types; } });
30
32
  var oas2_1 = require("./types/oas2");
@@ -1,27 +1,32 @@
1
- import { Oas3Rule, Oas3Preprocessor, Oas2Rule, Oas2Preprocessor, Async2Preprocessor, Async2Rule } from './visitors';
2
- import { BuiltInAsync2RuleId, BuiltInCommonOASRuleId, BuiltInCommonRuleId, BuiltInOAS2RuleId, BuiltInOAS3RuleId } from './types/redocly-yaml';
1
+ import { Oas3Rule, Oas3Preprocessor, Oas2Rule, Oas2Preprocessor, Async2Preprocessor, Async2Rule, ArazzoPreprocessor, ArazzoRule } from './visitors';
2
+ import { BuiltInAsync2RuleId, BuiltInCommonOASRuleId, BuiltInArazzoRuleId, BuiltInOAS2RuleId, BuiltInOAS3RuleId } from './types/redocly-yaml';
3
3
  export type RuleSet<T> = Record<string, T>;
4
4
  export declare enum SpecVersion {
5
5
  OAS2 = "oas2",
6
6
  OAS3_0 = "oas3_0",
7
7
  OAS3_1 = "oas3_1",
8
- Async2 = "async2"
8
+ Async2 = "async2",
9
+ Arazzo = "arazzo"
9
10
  }
10
11
  export declare enum SpecMajorVersion {
11
12
  OAS2 = "oas2",
12
13
  OAS3 = "oas3",
13
- Async2 = "async2"
14
+ Async2 = "async2",
15
+ Arazzo = "arazzo"
14
16
  }
15
17
  export type RuleMap<Key extends string, RuleConfig, T> = Record<T extends 'built-in' ? Key : string, RuleConfig>;
16
- export type Oas3RuleSet<T = undefined> = RuleMap<BuiltInCommonRuleId | BuiltInCommonOASRuleId | BuiltInOAS3RuleId | 'assertions', Oas3Rule, T>;
17
- export type Oas2RuleSet<T = undefined> = RuleMap<BuiltInCommonRuleId | BuiltInCommonOASRuleId | BuiltInOAS2RuleId | 'assertions', Oas2Rule, T>;
18
- export type Async2RuleSet<T = undefined> = RuleMap<BuiltInCommonRuleId | BuiltInAsync2RuleId | 'assertions', Async2Rule, T>;
18
+ export type Oas3RuleSet<T = undefined> = RuleMap<BuiltInCommonOASRuleId | BuiltInOAS3RuleId | 'assertions', Oas3Rule, T>;
19
+ export type Oas2RuleSet<T = undefined> = RuleMap<BuiltInCommonOASRuleId | BuiltInOAS2RuleId | 'assertions', Oas2Rule, T>;
20
+ export type Async2RuleSet<T = undefined> = RuleMap<BuiltInAsync2RuleId | 'assertions', Async2Rule, T>;
21
+ export type ArazzoRuleSet<T = undefined> = RuleMap<BuiltInArazzoRuleId | 'assertions', ArazzoRule, T>;
19
22
  export type Oas3PreprocessorsSet = Record<string, Oas3Preprocessor>;
20
23
  export type Oas2PreprocessorsSet = Record<string, Oas2Preprocessor>;
21
24
  export type Async2PreprocessorsSet = Record<string, Async2Preprocessor>;
25
+ export type ArazzoPreprocessorsSet = Record<string, ArazzoPreprocessor>;
22
26
  export type Oas3DecoratorsSet = Record<string, Oas3Preprocessor>;
23
27
  export type Oas2DecoratorsSet = Record<string, Oas2Preprocessor>;
24
28
  export type Async2DecoratorsSet = Record<string, Async2Preprocessor>;
29
+ export type ArazzoDecoratorsSet = Record<string, ArazzoPreprocessor>;
25
30
  export declare function detectSpec(root: any): SpecVersion;
26
31
  export declare function getMajorSpecVersion(version: SpecVersion): SpecMajorVersion;
27
- export declare function getTypes(spec: SpecVersion): Record<string, import("./types").NodeType> | Record<"Root" | "Tag" | "ExternalDocs" | "SecurityRequirement" | "Info" | "Contact" | "License" | "Paths" | "PathItem" | "Parameter" | "Operation" | "Example" | "Header" | "Responses" | "Response" | "Schema" | "Xml" | "SchemaProperties" | "NamedSchemas" | "NamedResponses" | "NamedParameters" | "NamedSecuritySchemes" | "SecurityScheme" | "Examples" | "ExamplesMap" | "TagList" | "SecurityRequirementList" | "ParameterList" | "ParameterItems" | "TagGroup" | "TagGroups" | "EnumDescriptions" | "Logo" | "XCodeSample" | "XCodeSampleList" | "XServer" | "XServerList", import("./types").NodeType> | Record<"Root" | "Tag" | "ExternalDocs" | "Server" | "ServerVariable" | "SecurityRequirement" | "Info" | "Contact" | "License" | "Paths" | "PathItem" | "Callback" | "CallbacksMap" | "Parameter" | "Operation" | "RequestBody" | "MediaTypesMap" | "MediaType" | "Example" | "Encoding" | "Header" | "Responses" | "Response" | "Link" | "Schema" | "Xml" | "SchemaProperties" | "DiscriminatorMapping" | "Discriminator" | "Components" | "NamedSchemas" | "NamedResponses" | "NamedParameters" | "NamedExamples" | "NamedRequestBodies" | "NamedHeaders" | "NamedSecuritySchemes" | "NamedLinks" | "NamedCallbacks" | "ImplicitFlow" | "PasswordFlow" | "ClientCredentials" | "AuthorizationCode" | "OAuth2Flows" | "SecurityScheme" | "ServerVariablesMap" | "ExamplesMap" | "EncodingMap" | "HeadersMap" | "LinksMap" | "WebhooksMap" | "TagList" | "SecurityRequirementList" | "ParameterList" | "TagGroup" | "TagGroups" | "EnumDescriptions" | "Logo" | "XCodeSample" | "XCodeSampleList" | "ServerList" | "XUsePkce", import("./types").NodeType> | Record<"Root" | "Info" | "License" | "Operation" | "Schema" | "SchemaProperties" | "Components" | "SecurityScheme" | "NamedPathItems", import("./types").NodeType>;
32
+ export declare function getTypes(spec: SpecVersion): Record<string, import("./types").NodeType> | Record<"Root" | "Tag" | "ExternalDocs" | "SecurityRequirement" | "Info" | "Contact" | "License" | "Paths" | "PathItem" | "Parameter" | "Operation" | "Example" | "Header" | "Responses" | "Response" | "Schema" | "Xml" | "SchemaProperties" | "NamedSchemas" | "NamedResponses" | "NamedParameters" | "NamedSecuritySchemes" | "SecurityScheme" | "Examples" | "ExamplesMap" | "TagList" | "SecurityRequirementList" | "ParameterList" | "ParameterItems" | "TagGroup" | "TagGroups" | "EnumDescriptions" | "Logo" | "XCodeSample" | "XCodeSampleList" | "XServer" | "XServerList", import("./types").NodeType> | Record<"Root" | "Tag" | "ExternalDocs" | "Server" | "ServerVariable" | "SecurityRequirement" | "Info" | "Contact" | "License" | "Paths" | "PathItem" | "Callback" | "CallbacksMap" | "Parameter" | "Operation" | "RequestBody" | "MediaTypesMap" | "MediaType" | "Example" | "Encoding" | "Header" | "Responses" | "Response" | "Link" | "Schema" | "Xml" | "SchemaProperties" | "DiscriminatorMapping" | "Discriminator" | "Components" | "NamedSchemas" | "NamedResponses" | "NamedParameters" | "NamedExamples" | "NamedRequestBodies" | "NamedHeaders" | "NamedSecuritySchemes" | "NamedLinks" | "NamedCallbacks" | "ImplicitFlow" | "PasswordFlow" | "ClientCredentials" | "AuthorizationCode" | "OAuth2Flows" | "SecurityScheme" | "ServerVariablesMap" | "ExamplesMap" | "EncodingMap" | "HeadersMap" | "LinksMap" | "WebhooksMap" | "TagList" | "SecurityRequirementList" | "ParameterList" | "TagGroup" | "TagGroups" | "EnumDescriptions" | "Logo" | "XCodeSample" | "XCodeSampleList" | "ServerList" | "XUsePkce", import("./types").NodeType> | Record<"Root" | "Info" | "License" | "Operation" | "Schema" | "SchemaProperties" | "Components" | "SecurityScheme" | "NamedPathItems" | "DependentRequired", import("./types").NodeType>;
package/lib/oas-types.js CHANGED
@@ -5,24 +5,28 @@ const oas2_1 = require("./types/oas2");
5
5
  const oas3_1 = require("./types/oas3");
6
6
  const oas3_1_1 = require("./types/oas3_1");
7
7
  const asyncapi_1 = require("./types/asyncapi");
8
+ const arazzo_1 = require("./types/arazzo");
8
9
  var SpecVersion;
9
10
  (function (SpecVersion) {
10
11
  SpecVersion["OAS2"] = "oas2";
11
12
  SpecVersion["OAS3_0"] = "oas3_0";
12
13
  SpecVersion["OAS3_1"] = "oas3_1";
13
14
  SpecVersion["Async2"] = "async2";
15
+ SpecVersion["Arazzo"] = "arazzo";
14
16
  })(SpecVersion || (exports.SpecVersion = SpecVersion = {}));
15
17
  var SpecMajorVersion;
16
18
  (function (SpecMajorVersion) {
17
19
  SpecMajorVersion["OAS2"] = "oas2";
18
20
  SpecMajorVersion["OAS3"] = "oas3";
19
21
  SpecMajorVersion["Async2"] = "async2";
22
+ SpecMajorVersion["Arazzo"] = "arazzo";
20
23
  })(SpecMajorVersion || (exports.SpecMajorVersion = SpecMajorVersion = {}));
21
24
  const typesMap = {
22
25
  [SpecVersion.OAS2]: oas2_1.Oas2Types,
23
26
  [SpecVersion.OAS3_0]: oas3_1.Oas3Types,
24
27
  [SpecVersion.OAS3_1]: oas3_1_1.Oas3_1Types,
25
28
  [SpecVersion.Async2]: asyncapi_1.AsyncApi2Types,
29
+ [SpecVersion.Arazzo]: arazzo_1.ArazzoTypes,
26
30
  };
27
31
  function detectSpec(root) {
28
32
  if (typeof root !== 'object') {
@@ -50,6 +54,9 @@ function detectSpec(root) {
50
54
  if (root.asyncapi) {
51
55
  throw new Error(`Unsupported AsyncAPI version: ${root.asyncapi}`);
52
56
  }
57
+ if (root.arazzo && root.arazzo.startsWith('1.')) {
58
+ return SpecVersion.Arazzo;
59
+ }
53
60
  throw new Error(`Unsupported specification`);
54
61
  }
55
62
  exports.detectSpec = detectSpec;
@@ -60,6 +67,9 @@ function getMajorSpecVersion(version) {
60
67
  else if (version === SpecVersion.Async2) {
61
68
  return SpecMajorVersion.Async2;
62
69
  }
70
+ else if (version === SpecVersion.Arazzo) {
71
+ return SpecMajorVersion.Arazzo;
72
+ }
63
73
  else {
64
74
  return SpecMajorVersion.OAS3;
65
75
  }
@@ -0,0 +1,3 @@
1
+ import type { ArazzoRuleSet } from '../../oas-types';
2
+ export declare const rules: ArazzoRuleSet<'built-in'>;
3
+ export declare const preprocessors: {};
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.preprocessors = exports.rules = void 0;
4
+ const spec_1 = require("../common/spec");
5
+ const assertions_1 = require("../common/assertions");
6
+ exports.rules = {
7
+ spec: spec_1.Spec,
8
+ assertions: assertions_1.Assertions,
9
+ };
10
+ exports.preprocessors = {};
@@ -1,2 +1,2 @@
1
- import type { Oas3Rule, Oas2Rule, Async2Rule } from '../../visitors';
2
- export declare const Spec: Oas3Rule | Oas2Rule | Async2Rule;
1
+ import type { Oas3Rule, Oas2Rule, Async2Rule, ArazzoRule } from '../../visitors';
2
+ export declare const Spec: Oas3Rule | Oas2Rule | Async2Rule | ArazzoRule;