@redocly/openapi-core 1.25.15 → 1.26.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/__tests__/utils.ts +0 -3
  3. package/lib/bundle.js +3 -3
  4. package/lib/config/all.js +129 -48
  5. package/lib/config/builtIn.d.ts +1 -1
  6. package/lib/config/builtIn.js +5 -3
  7. package/lib/config/config-resolvers.d.ts +3 -1
  8. package/lib/config/config-resolvers.js +16 -14
  9. package/lib/config/config.d.ts +2 -2
  10. package/lib/config/config.js +38 -20
  11. package/lib/config/minimal.js +124 -49
  12. package/lib/config/recommended-strict.js +123 -48
  13. package/lib/config/recommended.js +122 -47
  14. package/lib/config/rules.d.ts +2 -2
  15. package/lib/config/spec.d.ts +3 -0
  16. package/lib/config/spec.js +30 -0
  17. package/lib/config/types.d.ts +23 -23
  18. package/lib/config/utils.d.ts +1 -1
  19. package/lib/config/utils.js +33 -23
  20. package/lib/index.d.ts +1 -1
  21. package/lib/index.js +2 -2
  22. package/lib/lint.js +3 -3
  23. package/lib/oas-types.d.ts +11 -11
  24. package/lib/oas-types.js +6 -6
  25. package/lib/rules/arazzo/criteria-unique.d.ts +2 -2
  26. package/lib/rules/arazzo/index.d.ts +2 -2
  27. package/lib/rules/arazzo/index.js +6 -6
  28. package/lib/rules/arazzo/parameters-unique.d.ts +2 -2
  29. package/lib/rules/arazzo/requestBody-replacements-unique.d.ts +2 -2
  30. package/lib/rules/arazzo/sourceDescription-type.d.ts +2 -0
  31. package/lib/rules/arazzo/{source-description-type.js → sourceDescription-type.js} +5 -3
  32. package/lib/rules/arazzo/sourceDescriptions-name-unique.d.ts +2 -2
  33. package/lib/rules/arazzo/sourceDescriptions-not-empty.d.ts +2 -0
  34. package/lib/rules/arazzo/sourceDescriptions-not-empty.js +18 -0
  35. package/lib/rules/arazzo/step-onFailure-unique.d.ts +2 -2
  36. package/lib/rules/arazzo/step-onSuccess-unique.d.ts +2 -2
  37. package/lib/rules/arazzo/stepId-unique.d.ts +2 -2
  38. package/lib/rules/arazzo/workflow-dependsOn.d.ts +2 -2
  39. package/lib/rules/arazzo/workflowId-unique.d.ts +2 -2
  40. package/lib/rules/async2/index.js +5 -2
  41. package/lib/rules/async3/index.js +5 -2
  42. package/lib/rules/common/assertions/index.d.ts +2 -2
  43. package/lib/rules/common/struct.d.ts +2 -0
  44. package/lib/rules/common/{spec.js → struct.js} +3 -3
  45. package/lib/rules/oas2/index.js +5 -2
  46. package/lib/rules/oas3/index.js +5 -2
  47. package/lib/rules/spot/no-criteria-xpath.d.ts +2 -2
  48. package/lib/rules/spot/parameters-not-in-body.d.ts +2 -2
  49. package/lib/rules/spot/version-enum.d.ts +2 -2
  50. package/lib/types/arazzo.d.ts +1 -1
  51. package/lib/types/arazzo.js +3 -16
  52. package/lib/types/redocly-yaml.d.ts +6 -8
  53. package/lib/types/redocly-yaml.js +47 -13
  54. package/lib/typings/arazzo.d.ts +1 -6
  55. package/lib/utils.d.ts +1 -1
  56. package/lib/utils.js +3 -2
  57. package/lib/visitors.d.ts +5 -6
  58. package/package.json +1 -3
  59. package/src/__tests__/lint.test.ts +3 -3
  60. package/src/bundle.ts +3 -3
  61. package/src/config/__tests__/__snapshots__/config-resolvers.test.ts.snap +228 -72
  62. package/src/config/__tests__/__snapshots__/config.test.ts.snap +16 -3
  63. package/src/config/__tests__/config-resolvers.test.ts +14 -2
  64. package/src/config/__tests__/config.test.ts +11 -6
  65. package/src/config/all.ts +129 -48
  66. package/src/config/builtIn.ts +10 -8
  67. package/src/config/config-resolvers.ts +37 -45
  68. package/src/config/config.ts +46 -22
  69. package/src/config/minimal.ts +124 -49
  70. package/src/config/recommended-strict.ts +123 -48
  71. package/src/config/recommended.ts +122 -47
  72. package/src/config/rules.ts +2 -2
  73. package/src/config/spec.ts +31 -0
  74. package/src/config/types.ts +27 -33
  75. package/src/config/utils.ts +38 -26
  76. package/src/index.ts +1 -1
  77. package/src/lint.ts +6 -6
  78. package/src/oas-types.ts +19 -20
  79. package/src/rules/arazzo/__tests__/criteria-unique.test.ts +1 -2
  80. package/src/rules/arazzo/__tests__/no-criteria-xpath.test.ts +1 -2
  81. package/src/rules/arazzo/__tests__/parameters-not-in-body.test.ts +1 -2
  82. package/src/rules/arazzo/__tests__/parameters-unique.test.ts +1 -2
  83. package/src/rules/arazzo/__tests__/requestBody-replacements-unique.test.ts +1 -2
  84. package/src/rules/arazzo/__tests__/source-description-type.test.ts +2 -4
  85. package/src/rules/arazzo/__tests__/sourceDescription-name-unique.test.ts +1 -2
  86. package/src/rules/arazzo/__tests__/sourceDescriptions-not-empty.test.ts +104 -0
  87. package/src/rules/arazzo/__tests__/step-onFailure-unique.test.ts +1 -2
  88. package/src/rules/arazzo/__tests__/step-onSuccess-unique.test.ts +1 -2
  89. package/src/rules/arazzo/__tests__/stepId-unique.test.ts +1 -2
  90. package/src/rules/arazzo/__tests__/version-enum.test.ts +1 -2
  91. package/src/rules/arazzo/__tests__/workflow-dependsOn.test.ts +3 -6
  92. package/src/rules/arazzo/__tests__/workflowId-unique.test.ts +2 -4
  93. package/src/rules/arazzo/criteria-unique.ts +2 -2
  94. package/src/rules/arazzo/index.ts +22 -22
  95. package/src/rules/arazzo/parameters-unique.ts +2 -2
  96. package/src/rules/arazzo/requestBody-replacements-unique.ts +2 -2
  97. package/src/rules/arazzo/{source-description-type.ts → sourceDescription-type.ts} +6 -5
  98. package/src/rules/arazzo/sourceDescriptions-name-unique.ts +2 -2
  99. package/src/rules/arazzo/sourceDescriptions-not-empty.ts +17 -0
  100. package/src/rules/arazzo/step-onFailure-unique.ts +2 -2
  101. package/src/rules/arazzo/step-onSuccess-unique.ts +2 -2
  102. package/src/rules/arazzo/stepId-unique.ts +2 -2
  103. package/src/rules/arazzo/workflow-dependsOn.ts +2 -2
  104. package/src/rules/arazzo/workflowId-unique.ts +2 -2
  105. package/src/rules/async2/index.ts +5 -2
  106. package/src/rules/async3/index.ts +5 -2
  107. package/src/rules/common/__tests__/no-enum-type-mismatch.test.ts +1 -1
  108. package/src/rules/common/__tests__/{spec.test.ts → struct.test.ts} +35 -35
  109. package/src/rules/common/assertions/index.ts +2 -2
  110. package/src/rules/common/{spec.ts → struct.ts} +2 -2
  111. package/src/rules/oas2/index.ts +5 -2
  112. package/src/rules/oas3/__tests__/spec/spec.test.ts +10 -10
  113. package/src/rules/oas3/index.ts +5 -2
  114. package/src/rules/spot/no-criteria-xpath.ts +2 -2
  115. package/src/rules/spot/parameters-not-in-body.ts +2 -2
  116. package/src/rules/spot/version-enum.ts +2 -2
  117. package/src/types/arazzo.ts +2 -14
  118. package/src/types/redocly-yaml.ts +48 -17
  119. package/src/typings/arazzo.ts +1 -10
  120. package/src/utils.ts +4 -2
  121. package/src/visitors.ts +4 -6
  122. package/tsconfig.tsbuildinfo +1 -1
  123. package/lib/rules/arazzo/source-description-type.d.ts +0 -2
  124. package/lib/rules/common/spec.d.ts +0 -2
  125. package/lib/rules/spot/no-actions-type-end.d.ts +0 -2
  126. package/lib/rules/spot/no-actions-type-end.js +0 -28
  127. package/src/rules/arazzo/__tests__/no-actions-type-end.test.ts +0 -122
  128. package/src/rules/spot/no-actions-type-end.ts +0 -27
@@ -10,17 +10,12 @@ export interface OpenAPISourceDescription {
10
10
  url: string;
11
11
  'x-serverUrl'?: string;
12
12
  }
13
- export interface NoneSourceDescription {
14
- name: string;
15
- type: 'none';
16
- 'x-serverUrl': string;
17
- }
18
13
  export interface ArazzoSourceDescription {
19
14
  name: string;
20
15
  type: 'arazzo';
21
16
  url: string;
22
17
  }
23
- export type SourceDescription = OpenAPISourceDescription | NoneSourceDescription | ArazzoSourceDescription;
18
+ export type SourceDescription = OpenAPISourceDescription | ArazzoSourceDescription;
24
19
  export interface Parameter {
25
20
  in?: 'header' | 'query' | 'path' | 'cookie' | 'body';
26
21
  name: string;
package/lib/utils.d.ts CHANGED
@@ -49,7 +49,7 @@ export declare function assignOnlyExistingConfig<T extends string | {
49
49
  export declare function getMatchingStatusCodeRange(code: number | string): string;
50
50
  export declare function isCustomRuleId(id: string): boolean;
51
51
  export declare function doesYamlFileExist(filePath: string): boolean;
52
- export declare function showWarningForDeprecatedField(deprecatedField: string, updatedField?: string, updatedObject?: string): void;
52
+ export declare function showWarningForDeprecatedField(deprecatedField: string, updatedField?: string, updatedObject?: string, link?: string): void;
53
53
  export declare function showErrorForDeprecatedField(deprecatedField: string, updatedField?: string, updatedObject?: string): void;
54
54
  export type Falsy = undefined | null | false | '' | 0;
55
55
  export declare function isTruthy<Truthy>(value: Truthy | Falsy): value is Truthy;
package/lib/utils.js CHANGED
@@ -218,10 +218,11 @@ function doesYamlFileExist(filePath) {
218
218
  fs?.hasOwnProperty?.('existsSync') &&
219
219
  fs.existsSync(filePath));
220
220
  }
221
- function showWarningForDeprecatedField(deprecatedField, updatedField, updatedObject) {
221
+ function showWarningForDeprecatedField(deprecatedField, updatedField, updatedObject, link) {
222
+ const readMoreText = link ? `Read more about this change: ${link}` : '';
222
223
  logger_1.logger.warn(`The '${logger_1.colorize.red(deprecatedField)}' field is deprecated. ${updatedField
223
224
  ? `Use ${logger_1.colorize.green(getUpdatedFieldName(updatedField, updatedObject))} instead. `
224
- : ''}Read more about this change: https://redocly.com/docs/api-registry/guides/migration-guide-config-file/#changed-properties\n`);
225
+ : ''}${readMoreText}\n`);
225
226
  }
226
227
  function showErrorForDeprecatedField(deprecatedField, updatedField, updatedObject) {
227
228
  throw new Error(`Do not use '${deprecatedField}' field. ${updatedField ? `Use '${getUpdatedFieldName(updatedField, updatedObject)}' instead. ` : ''}\n`);
package/lib/visitors.d.ts CHANGED
@@ -6,7 +6,7 @@ import type { Oas3Definition, Oas3ExternalDocs, Oas3Info, Oas3Contact, Oas3Compo
6
6
  import type { Oas2Definition, Oas2Tag, Oas2ExternalDocs, Oas2SecurityRequirement, Oas2Info, Oas2Contact, Oas2License, Oas2PathItem, Oas2Operation, Oas2Header, Oas2Response, Oas2Schema, Oas2Xml, Oas2Parameter, Oas2SecurityScheme } from './typings/swagger';
7
7
  import type { Async2Definition } from './typings/asyncapi';
8
8
  import type { Async3Definition } from './typings/asyncapi3';
9
- import type { ArazzoDefinition, ArazzoSourceDescription, CriteriaObject, ExtendedOperation, InfoObject, NoneSourceDescription, OnFailureObject, OnSuccessObject, OpenAPISourceDescription, Parameter, Replacement, RequestBody, SourceDescription, Step, Workflow } from './typings/arazzo';
9
+ import type { ArazzoDefinition, ArazzoSourceDescription, CriteriaObject, ExtendedOperation, InfoObject, OnFailureObject, OnSuccessObject, OpenAPISourceDescription, Parameter, Replacement, RequestBody, SourceDescription, Step, Workflow } from './typings/arazzo';
10
10
  export type SkipFunctionContext = Pick<UserContext, 'location' | 'rawNode' | 'resolve' | 'rawLocation'>;
11
11
  export type VisitFunction<T> = (node: T, ctx: UserContext & {
12
12
  ignoreNextVisitorsOnNode: () => void;
@@ -149,7 +149,6 @@ type ArazzoFlatVisitor = {
149
149
  ParameterObject?: VisitFunctionOrObject<Parameter>;
150
150
  InfoObject?: VisitFunctionOrObject<InfoObject>;
151
151
  OpenAPISourceDescription?: VisitFunctionOrObject<OpenAPISourceDescription>;
152
- NoneSourceDescription?: VisitFunctionOrObject<NoneSourceDescription>;
153
152
  ArazzoSourceDescription?: VisitFunctionOrObject<ArazzoSourceDescription>;
154
153
  SourceDescription?: VisitFunctionOrObject<SourceDescription>;
155
154
  ExtendedOperation?: VisitFunctionOrObject<ExtendedOperation>;
@@ -182,7 +181,7 @@ export type Oas3Visitor = BaseVisitor & Oas3NestedVisitor & Record<string, Visit
182
181
  export type Oas2Visitor = BaseVisitor & Oas2NestedVisitor & Record<string, VisitFunction<any> | NestedVisitObject<any, Oas2NestedVisitor>>;
183
182
  export type Async2Visitor = BaseVisitor & Async2NestedVisitor & Record<string, VisitFunction<any> | NestedVisitObject<any, Async2NestedVisitor>>;
184
183
  export type Async3Visitor = BaseVisitor & Async3NestedVisitor & Record<string, VisitFunction<any> | NestedVisitObject<any, Async3NestedVisitor>>;
185
- export type ArazzoVisitor = BaseVisitor & ArazzoNestedVisitor & Record<string, VisitFunction<any> | NestedVisitObject<any, ArazzoNestedVisitor>>;
184
+ export type Arazzo1Visitor = BaseVisitor & ArazzoNestedVisitor & Record<string, VisitFunction<any> | NestedVisitObject<any, ArazzoNestedVisitor>>;
186
185
  export type NestedVisitor<T> = Exclude<T, 'any' | 'ref' | 'Root'>;
187
186
  export type NormalizedOasVisitors<T extends BaseVisitor> = {
188
187
  [V in keyof T]-?: {
@@ -203,17 +202,17 @@ export type Oas3Rule = (options: Record<string, any>) => Oas3Visitor | Oas3Visit
203
202
  export type Oas2Rule = (options: Record<string, any>) => Oas2Visitor | Oas2Visitor[];
204
203
  export type Async2Rule = (options: Record<string, any>) => Async2Visitor | Async2Visitor[];
205
204
  export type Async3Rule = (options: Record<string, any>) => Async3Visitor | Async3Visitor[];
206
- export type ArazzoRule = (options: Record<string, any>) => ArazzoVisitor | ArazzoVisitor[];
205
+ export type Arazzo1Rule = (options: Record<string, any>) => Arazzo1Visitor | Arazzo1Visitor[];
207
206
  export type Oas3Preprocessor = (options: Record<string, any>) => Oas3Visitor;
208
207
  export type Oas2Preprocessor = (options: Record<string, any>) => Oas2Visitor;
209
208
  export type Async2Preprocessor = (options: Record<string, any>) => Async2Visitor;
210
209
  export type Async3Preprocessor = (options: Record<string, any>) => Async3Visitor;
211
- export type ArazzoPreprocessor = (options: Record<string, any>) => ArazzoVisitor;
210
+ export type Arazzo1Preprocessor = (options: Record<string, any>) => Arazzo1Visitor;
212
211
  export type Oas3Decorator = (options: Record<string, any>) => Oas3Visitor;
213
212
  export type Oas2Decorator = (options: Record<string, any>) => Oas2Visitor;
214
213
  export type Async2Decorator = (options: Record<string, any>) => Async2Visitor;
215
214
  export type Async3Decorator = (options: Record<string, any>) => Async3Visitor;
216
- export type ArazzoDecorator = (options: Record<string, any>) => ArazzoVisitor;
215
+ export type Arazzo1Decorator = (options: Record<string, any>) => Arazzo1Visitor;
217
216
  export type OasRule = Oas3Rule;
218
217
  export type OasPreprocessor = Oas3Preprocessor;
219
218
  export type OasDecorator = Oas3Decorator;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redocly/openapi-core",
3
- "version": "1.25.15",
3
+ "version": "1.26.1",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "engines": {
@@ -41,7 +41,6 @@
41
41
  "https-proxy-agent": "^7.0.4",
42
42
  "js-levenshtein": "^1.1.6",
43
43
  "js-yaml": "^4.1.0",
44
- "lodash.isequal": "^4.5.0",
45
44
  "minimatch": "^5.0.1",
46
45
  "node-fetch": "^2.6.1",
47
46
  "pluralize": "^8.0.0",
@@ -50,7 +49,6 @@
50
49
  "devDependencies": {
51
50
  "@types/js-levenshtein": "^1.1.0",
52
51
  "@types/js-yaml": "^4.0.3",
53
- "@types/lodash.isequal": "^4.5.5",
54
52
  "@types/minimatch": "^3.0.5",
55
53
  "@types/node": "^20.11.5",
56
54
  "@types/node-fetch": "^2.5.7",
@@ -295,7 +295,7 @@ describe('lint', () => {
295
295
  },
296
296
  ],
297
297
  "message": "Expected type \`License\` (object) but got \`string\`",
298
- "ruleId": "spec",
298
+ "ruleId": "struct",
299
299
  "severity": "error",
300
300
  "suggest": [],
301
301
  },
@@ -324,7 +324,7 @@ describe('lint', () => {
324
324
  },
325
325
  ],
326
326
  "message": "Expected type \`License\` (object) but got \`string\`",
327
- "ruleId": "spec",
327
+ "ruleId": "struct",
328
328
  "severity": "error",
329
329
  "suggest": [],
330
330
  },
@@ -1611,7 +1611,7 @@ describe('lint', () => {
1611
1611
  },
1612
1612
  ],
1613
1613
  "message": "Property \`dependentRequired\` is not expected here.",
1614
- "ruleId": "spec",
1614
+ "ruleId": "struct",
1615
1615
  "severity": "error",
1616
1616
  "suggest": [],
1617
1617
  },
package/src/bundle.ts CHANGED
@@ -163,7 +163,7 @@ export async function bundleDocument(opts: {
163
163
  } = opts;
164
164
  const specVersion = detectSpec(document.parsed);
165
165
  const specMajorVersion = getMajorSpecVersion(specVersion);
166
- const rules = config.getRulesForOasVersion(specMajorVersion);
166
+ const rules = config.getRulesForSpecVersion(specMajorVersion);
167
167
  const types = normalizeTypes(
168
168
  config.extendTypes(customTypes ?? getTypes(specVersion), specVersion),
169
169
  config
@@ -303,7 +303,7 @@ export function mapTypeToComponent(typeName: string, version: SpecMajorVersion)
303
303
  default:
304
304
  return null;
305
305
  }
306
- case SpecMajorVersion.Arazzo:
306
+ case SpecMajorVersion.Arazzo1:
307
307
  switch (typeName) {
308
308
  case 'Root.workflows_items.parameters_items':
309
309
  case 'Root.workflows_items.steps_items.parameters_items':
@@ -408,7 +408,7 @@ function makeBundleVisitor(
408
408
  components = root.components = root.components || {};
409
409
  } else if (version === SpecMajorVersion.Async3) {
410
410
  components = root.components = root.components || {};
411
- } else if (version === SpecMajorVersion.Arazzo) {
411
+ } else if (version === SpecMajorVersion.Arazzo1) {
412
412
  components = root.components = root.components || {};
413
413
  }
414
414
  },
@@ -2,18 +2,17 @@
2
2
 
3
3
  exports[`resolveConfig should ignore minimal from the root and read local file 1`] = `
4
4
  {
5
- "arazzoDecorators": {},
6
- "arazzoPreprocessors": {},
7
- "arazzoRules": {
5
+ "arazzo1Decorators": {},
6
+ "arazzo1Preprocessors": {},
7
+ "arazzo1Rules": {
8
8
  "criteria-unique": "warn",
9
- "no-actions-type-end": "warn",
10
9
  "no-criteria-xpath": "warn",
11
10
  "parameters-not-in-body": "warn",
12
11
  "parameters-unique": "error",
13
12
  "requestBody-replacements-unique": "warn",
14
13
  "sourceDescription-name-unique": "error",
15
14
  "sourceDescription-type": "error",
16
- "spec": "error",
15
+ "sourceDescriptions-not-empty": "error",
17
16
  "step-onFailure-unique": "warn",
18
17
  "step-onSuccess-unique": "warn",
19
18
  "stepId-unique": "error",
@@ -29,7 +28,6 @@ exports[`resolveConfig should ignore minimal from the root and read local file 1
29
28
  "info-license-strict": "warn",
30
29
  "no-channel-trailing-slash": "off",
31
30
  "operation-operationId": "warn",
32
- "spec": "error",
33
31
  "tag-description": "warn",
34
32
  "tags-alphabetical": "off",
35
33
  },
@@ -41,7 +39,6 @@ exports[`resolveConfig should ignore minimal from the root and read local file 1
41
39
  "info-license-strict": "warn",
42
40
  "no-channel-trailing-slash": "off",
43
41
  "operation-operationId": "warn",
44
- "spec": "error",
45
42
  "tag-description": "warn",
46
43
  "tags-alphabetical": "off",
47
44
  },
@@ -51,9 +48,48 @@ exports[`resolveConfig should ignore minimal from the root and read local file 1
51
48
  "oas2Preprocessors": {},
52
49
  "oas2Rules": {
53
50
  "boolean-parameter-prefixes": "error",
51
+ "info-contact": "off",
52
+ "info-license": "warn",
53
+ "info-license-strict": "warn",
54
+ "info-license-url": "off",
55
+ "no-ambiguous-paths": "warn",
56
+ "no-enum-type-mismatch": "error",
57
+ "no-http-verbs-in-paths": "off",
58
+ "no-identical-paths": "error",
59
+ "no-invalid-parameter-examples": "off",
60
+ "no-invalid-schema-examples": "off",
61
+ "no-path-trailing-slash": "error",
62
+ "no-required-schema-properties-undefined": "off",
63
+ "no-unresolved-refs": "error",
64
+ "operation-2xx-response": "warn",
65
+ "operation-4xx-response": "error",
66
+ "operation-description": "error",
67
+ "operation-operationId": "warn",
68
+ "operation-operationId-unique": "error",
69
+ "operation-operationId-url-safe": "error",
70
+ "operation-parameters-unique": "error",
71
+ "operation-singular-tag": "off",
72
+ "operation-summary": "error",
73
+ "operation-tag-defined": "off",
74
+ "parameter-description": "off",
75
+ "path-declaration-must-exist": "error",
76
+ "path-excludes-patterns": "off",
77
+ "path-http-verbs-order": "error",
78
+ "path-not-include-query": "error",
79
+ "path-parameters-defined": "error",
80
+ "path-params-defined": "off",
81
+ "path-segment-plural": "off",
82
+ "paths-kebab-case": "off",
54
83
  "request-mime-type": "off",
84
+ "required-string-property-missing-min-length": "off",
85
+ "response-contains-header": "off",
55
86
  "response-contains-property": "off",
56
87
  "response-mime-type": "off",
88
+ "scalar-property-missing-example": "off",
89
+ "security-defined": "error",
90
+ "spec-strict-refs": "off",
91
+ "tag-description": "warn",
92
+ "tags-alphabetical": "off",
57
93
  },
58
94
  "oas3_0Decorators": {},
59
95
  "oas3_0Preprocessors": {},
@@ -61,22 +97,61 @@ exports[`resolveConfig should ignore minimal from the root and read local file 1
61
97
  "array-parameter-serialization": "off",
62
98
  "boolean-parameter-prefixes": "error",
63
99
  "component-name-unique": "off",
100
+ "info-contact": "off",
101
+ "info-license": "warn",
102
+ "info-license-strict": "warn",
103
+ "info-license-url": "off",
104
+ "no-ambiguous-paths": "warn",
64
105
  "no-empty-servers": "error",
106
+ "no-enum-type-mismatch": "error",
65
107
  "no-example-value-and-externalValue": "error",
108
+ "no-http-verbs-in-paths": "off",
109
+ "no-identical-paths": "error",
66
110
  "no-invalid-media-type-examples": {
67
111
  "allowAdditionalProperties": false,
68
112
  "severity": "error",
69
113
  },
114
+ "no-invalid-parameter-examples": "off",
115
+ "no-invalid-schema-examples": "off",
116
+ "no-path-trailing-slash": "error",
117
+ "no-required-schema-properties-undefined": "off",
70
118
  "no-server-example.com": "warn",
71
119
  "no-server-trailing-slash": "error",
72
120
  "no-server-variables-empty-enum": "error",
73
121
  "no-undefined-server-variable": "error",
122
+ "no-unresolved-refs": "error",
74
123
  "no-unused-components": "warn",
124
+ "operation-2xx-response": "warn",
75
125
  "operation-4xx-problem-details-rfc7807": "off",
126
+ "operation-4xx-response": "error",
127
+ "operation-description": "error",
128
+ "operation-operationId": "warn",
129
+ "operation-operationId-unique": "error",
130
+ "operation-operationId-url-safe": "error",
131
+ "operation-parameters-unique": "error",
132
+ "operation-singular-tag": "off",
133
+ "operation-summary": "error",
134
+ "operation-tag-defined": "off",
135
+ "parameter-description": "off",
136
+ "path-declaration-must-exist": "error",
137
+ "path-excludes-patterns": "off",
138
+ "path-http-verbs-order": "error",
139
+ "path-not-include-query": "error",
140
+ "path-parameters-defined": "error",
141
+ "path-params-defined": "off",
142
+ "path-segment-plural": "off",
143
+ "paths-kebab-case": "off",
76
144
  "request-mime-type": "off",
145
+ "required-string-property-missing-min-length": "off",
146
+ "response-contains-header": "off",
77
147
  "response-contains-property": "off",
78
148
  "response-mime-type": "off",
149
+ "scalar-property-missing-example": "off",
150
+ "security-defined": "error",
79
151
  "spec-components-invalid-map-name": "error",
152
+ "spec-strict-refs": "off",
153
+ "tag-description": "warn",
154
+ "tags-alphabetical": "off",
80
155
  },
81
156
  "oas3_1Decorators": {},
82
157
  "oas3_1Preprocessors": {},
@@ -84,31 +159,14 @@ exports[`resolveConfig should ignore minimal from the root and read local file 1
84
159
  "array-parameter-serialization": "off",
85
160
  "boolean-parameter-prefixes": "error",
86
161
  "component-name-unique": "off",
87
- "no-empty-servers": "error",
88
- "no-example-value-and-externalValue": "error",
89
- "no-invalid-media-type-examples": "error",
90
- "no-server-example.com": "warn",
91
- "no-server-trailing-slash": "error",
92
- "no-server-variables-empty-enum": "error",
93
- "no-undefined-server-variable": "error",
94
- "no-unused-components": "warn",
95
- "operation-4xx-problem-details-rfc7807": "off",
96
- "request-mime-type": "off",
97
- "response-contains-property": "off",
98
- "response-mime-type": "off",
99
- "spec-components-invalid-map-name": "error",
100
- },
101
- "preprocessors": {},
102
- "recommendedFallback": false,
103
- "rules": {
104
- "boolean-parameter-prefixes": "error",
105
162
  "info-contact": "off",
106
163
  "info-license": "warn",
107
164
  "info-license-strict": "warn",
108
165
  "info-license-url": "off",
109
- "local/operation-id-not-test": "error",
110
166
  "no-ambiguous-paths": "warn",
167
+ "no-empty-servers": "error",
111
168
  "no-enum-type-mismatch": "error",
169
+ "no-example-value-and-externalValue": "error",
112
170
  "no-http-verbs-in-paths": "off",
113
171
  "no-identical-paths": "error",
114
172
  "no-invalid-media-type-examples": "error",
@@ -116,8 +174,14 @@ exports[`resolveConfig should ignore minimal from the root and read local file 1
116
174
  "no-invalid-schema-examples": "off",
117
175
  "no-path-trailing-slash": "error",
118
176
  "no-required-schema-properties-undefined": "off",
177
+ "no-server-example.com": "warn",
178
+ "no-server-trailing-slash": "error",
179
+ "no-server-variables-empty-enum": "error",
180
+ "no-undefined-server-variable": "error",
119
181
  "no-unresolved-refs": "error",
182
+ "no-unused-components": "warn",
120
183
  "operation-2xx-response": "warn",
184
+ "operation-4xx-problem-details-rfc7807": "off",
121
185
  "operation-4xx-response": "error",
122
186
  "operation-description": "error",
123
187
  "operation-operationId": "warn",
@@ -136,32 +200,46 @@ exports[`resolveConfig should ignore minimal from the root and read local file 1
136
200
  "path-params-defined": "off",
137
201
  "path-segment-plural": "off",
138
202
  "paths-kebab-case": "off",
203
+ "request-mime-type": "off",
139
204
  "required-string-property-missing-min-length": "off",
140
205
  "response-contains-header": "off",
206
+ "response-contains-property": "off",
207
+ "response-mime-type": "off",
141
208
  "scalar-property-missing-example": "off",
142
209
  "security-defined": "error",
143
- "spec": "error",
210
+ "spec-components-invalid-map-name": "error",
144
211
  "spec-strict-refs": "off",
145
212
  "tag-description": "warn",
146
213
  "tags-alphabetical": "off",
147
214
  },
215
+ "preprocessors": {},
216
+ "recommendedFallback": false,
217
+ "rules": {
218
+ "boolean-parameter-prefixes": "error",
219
+ "local/operation-id-not-test": "error",
220
+ "no-invalid-media-type-examples": "error",
221
+ "operation-2xx-response": "warn",
222
+ "operation-4xx-response": "error",
223
+ "operation-description": "error",
224
+ "path-http-verbs-order": "error",
225
+ "struct": "error",
226
+ },
148
227
  }
149
228
  `;
150
229
 
151
230
  exports[`resolveStyleguideConfig should resolve extends with local file config which contains path to nested config 1`] = `
152
231
  {
153
- "arazzoDecorators": {},
154
- "arazzoPreprocessors": {},
155
- "arazzoRules": {
232
+ "arazzo1Decorators": {},
233
+ "arazzo1Preprocessors": {},
234
+ "arazzo1Rules": {
156
235
  "criteria-unique": "warn",
157
- "no-actions-type-end": "warn",
158
236
  "no-criteria-xpath": "warn",
159
237
  "parameters-not-in-body": "warn",
160
238
  "parameters-unique": "error",
161
239
  "requestBody-replacements-unique": "warn",
162
240
  "sourceDescription-name-unique": "error",
163
241
  "sourceDescription-type": "error",
164
- "spec": "error",
242
+ "sourceDescriptions-not-empty": "error",
165
243
  "step-onFailure-unique": "warn",
166
244
  "step-onSuccess-unique": "warn",
167
245
  "stepId-unique": "error",
@@ -177,7 +255,6 @@ exports[`resolveStyleguideConfig should resolve extends with local file config w
177
255
  "info-license-strict": "warn",
178
256
  "no-channel-trailing-slash": "off",
179
257
  "operation-operationId": "warn",
180
- "spec": "error",
181
258
  "tag-description": "warn",
182
259
  "tags-alphabetical": "off",
183
260
  },
@@ -189,7 +266,6 @@ exports[`resolveStyleguideConfig should resolve extends with local file config w
189
266
  "info-license-strict": "warn",
190
267
  "no-channel-trailing-slash": "off",
191
268
  "operation-operationId": "warn",
192
- "spec": "error",
193
269
  "tag-description": "warn",
194
270
  "tags-alphabetical": "off",
195
271
  },
@@ -199,9 +275,48 @@ exports[`resolveStyleguideConfig should resolve extends with local file config w
199
275
  "oas2Preprocessors": {},
200
276
  "oas2Rules": {
201
277
  "boolean-parameter-prefixes": "error",
278
+ "info-contact": "off",
279
+ "info-license": "warn",
280
+ "info-license-strict": "warn",
281
+ "info-license-url": "off",
282
+ "no-ambiguous-paths": "warn",
283
+ "no-enum-type-mismatch": "error",
284
+ "no-http-verbs-in-paths": "off",
285
+ "no-identical-paths": "error",
286
+ "no-invalid-parameter-examples": "off",
287
+ "no-invalid-schema-examples": "off",
288
+ "no-path-trailing-slash": "error",
289
+ "no-required-schema-properties-undefined": "off",
290
+ "no-unresolved-refs": "error",
291
+ "operation-2xx-response": "error",
292
+ "operation-4xx-response": "off",
293
+ "operation-description": "off",
294
+ "operation-operationId": "warn",
295
+ "operation-operationId-unique": "error",
296
+ "operation-operationId-url-safe": "error",
297
+ "operation-parameters-unique": "error",
298
+ "operation-singular-tag": "off",
299
+ "operation-summary": "error",
300
+ "operation-tag-defined": "off",
301
+ "parameter-description": "off",
302
+ "path-declaration-must-exist": "error",
303
+ "path-excludes-patterns": "off",
304
+ "path-http-verbs-order": "off",
305
+ "path-not-include-query": "error",
306
+ "path-parameters-defined": "error",
307
+ "path-params-defined": "off",
308
+ "path-segment-plural": "off",
309
+ "paths-kebab-case": "off",
202
310
  "request-mime-type": "off",
311
+ "required-string-property-missing-min-length": "off",
312
+ "response-contains-header": "off",
203
313
  "response-contains-property": "off",
204
314
  "response-mime-type": "off",
315
+ "scalar-property-missing-example": "off",
316
+ "security-defined": "error",
317
+ "spec-strict-refs": "off",
318
+ "tag-description": "warn",
319
+ "tags-alphabetical": "off",
205
320
  },
206
321
  "oas3_0Decorators": {},
207
322
  "oas3_0Preprocessors": {},
@@ -209,22 +324,61 @@ exports[`resolveStyleguideConfig should resolve extends with local file config w
209
324
  "array-parameter-serialization": "off",
210
325
  "boolean-parameter-prefixes": "error",
211
326
  "component-name-unique": "off",
327
+ "info-contact": "off",
328
+ "info-license": "warn",
329
+ "info-license-strict": "warn",
330
+ "info-license-url": "off",
331
+ "no-ambiguous-paths": "warn",
212
332
  "no-empty-servers": "error",
333
+ "no-enum-type-mismatch": "error",
213
334
  "no-example-value-and-externalValue": "error",
335
+ "no-http-verbs-in-paths": "off",
336
+ "no-identical-paths": "error",
214
337
  "no-invalid-media-type-examples": {
215
338
  "allowAdditionalProperties": false,
216
339
  "severity": "warn",
217
340
  },
341
+ "no-invalid-parameter-examples": "off",
342
+ "no-invalid-schema-examples": "off",
343
+ "no-path-trailing-slash": "error",
344
+ "no-required-schema-properties-undefined": "off",
218
345
  "no-server-example.com": "warn",
219
346
  "no-server-trailing-slash": "error",
220
347
  "no-server-variables-empty-enum": "error",
221
348
  "no-undefined-server-variable": "error",
349
+ "no-unresolved-refs": "error",
222
350
  "no-unused-components": "warn",
351
+ "operation-2xx-response": "error",
223
352
  "operation-4xx-problem-details-rfc7807": "off",
353
+ "operation-4xx-response": "off",
354
+ "operation-description": "off",
355
+ "operation-operationId": "warn",
356
+ "operation-operationId-unique": "error",
357
+ "operation-operationId-url-safe": "error",
358
+ "operation-parameters-unique": "error",
359
+ "operation-singular-tag": "off",
360
+ "operation-summary": "error",
361
+ "operation-tag-defined": "off",
362
+ "parameter-description": "off",
363
+ "path-declaration-must-exist": "error",
364
+ "path-excludes-patterns": "off",
365
+ "path-http-verbs-order": "off",
366
+ "path-not-include-query": "error",
367
+ "path-parameters-defined": "error",
368
+ "path-params-defined": "off",
369
+ "path-segment-plural": "off",
370
+ "paths-kebab-case": "off",
224
371
  "request-mime-type": "off",
372
+ "required-string-property-missing-min-length": "off",
373
+ "response-contains-header": "off",
225
374
  "response-contains-property": "off",
226
375
  "response-mime-type": "off",
376
+ "scalar-property-missing-example": "off",
377
+ "security-defined": "error",
227
378
  "spec-components-invalid-map-name": "error",
379
+ "spec-strict-refs": "off",
380
+ "tag-description": "warn",
381
+ "tags-alphabetical": "off",
228
382
  },
229
383
  "oas3_1Decorators": {},
230
384
  "oas3_1Preprocessors": {},
@@ -232,49 +386,14 @@ exports[`resolveStyleguideConfig should resolve extends with local file config w
232
386
  "array-parameter-serialization": "off",
233
387
  "boolean-parameter-prefixes": "error",
234
388
  "component-name-unique": "off",
235
- "no-empty-servers": "error",
236
- "no-example-value-and-externalValue": "error",
237
- "no-invalid-media-type-examples": "warn",
238
- "no-server-example.com": "warn",
239
- "no-server-trailing-slash": "error",
240
- "no-server-variables-empty-enum": "error",
241
- "no-undefined-server-variable": "error",
242
- "no-unused-components": "warn",
243
- "operation-4xx-problem-details-rfc7807": "off",
244
- "request-mime-type": "off",
245
- "response-contains-property": "off",
246
- "response-mime-type": "off",
247
- "spec-components-invalid-map-name": "error",
248
- },
249
- "preprocessors": {},
250
- "recommendedFallback": undefined,
251
- "rules": {
252
- "assertions": [
253
- {
254
- "assertionId": "rule/path-item-get-defined",
255
- "defined": true,
256
- "message": "Every path item must have a GET operation.",
257
- "property": "get",
258
- "subject": "PathItem",
259
- },
260
- {
261
- "assertionId": "rule/tag-description",
262
- "message": "Tag description must be at least 13 characters and end with a full stop.",
263
- "minLength": 13,
264
- "pattern": "/\\.$/",
265
- "property": "description",
266
- "severity": "error",
267
- "subject": "Tag",
268
- },
269
- ],
270
- "boolean-parameter-prefixes": "error",
271
389
  "info-contact": "off",
272
390
  "info-license": "warn",
273
391
  "info-license-strict": "warn",
274
392
  "info-license-url": "off",
275
- "local/operation-id-not-test": "error",
276
393
  "no-ambiguous-paths": "warn",
394
+ "no-empty-servers": "error",
277
395
  "no-enum-type-mismatch": "error",
396
+ "no-example-value-and-externalValue": "error",
278
397
  "no-http-verbs-in-paths": "off",
279
398
  "no-identical-paths": "error",
280
399
  "no-invalid-media-type-examples": "warn",
@@ -282,8 +401,14 @@ exports[`resolveStyleguideConfig should resolve extends with local file config w
282
401
  "no-invalid-schema-examples": "off",
283
402
  "no-path-trailing-slash": "error",
284
403
  "no-required-schema-properties-undefined": "off",
404
+ "no-server-example.com": "warn",
405
+ "no-server-trailing-slash": "error",
406
+ "no-server-variables-empty-enum": "error",
407
+ "no-undefined-server-variable": "error",
285
408
  "no-unresolved-refs": "error",
409
+ "no-unused-components": "warn",
286
410
  "operation-2xx-response": "error",
411
+ "operation-4xx-problem-details-rfc7807": "off",
287
412
  "operation-4xx-response": "off",
288
413
  "operation-description": "off",
289
414
  "operation-operationId": "warn",
@@ -302,14 +427,45 @@ exports[`resolveStyleguideConfig should resolve extends with local file config w
302
427
  "path-params-defined": "off",
303
428
  "path-segment-plural": "off",
304
429
  "paths-kebab-case": "off",
430
+ "request-mime-type": "off",
305
431
  "required-string-property-missing-min-length": "off",
306
432
  "response-contains-header": "off",
433
+ "response-contains-property": "off",
434
+ "response-mime-type": "off",
307
435
  "scalar-property-missing-example": "off",
308
436
  "security-defined": "error",
309
- "spec": "error",
437
+ "spec-components-invalid-map-name": "error",
310
438
  "spec-strict-refs": "off",
311
439
  "tag-description": "warn",
312
440
  "tags-alphabetical": "off",
313
441
  },
442
+ "preprocessors": {},
443
+ "recommendedFallback": undefined,
444
+ "rules": {
445
+ "assertions": [
446
+ {
447
+ "assertionId": "rule/path-item-get-defined",
448
+ "defined": true,
449
+ "message": "Every path item must have a GET operation.",
450
+ "property": "get",
451
+ "subject": "PathItem",
452
+ },
453
+ {
454
+ "assertionId": "rule/tag-description",
455
+ "message": "Tag description must be at least 13 characters and end with a full stop.",
456
+ "minLength": 13,
457
+ "pattern": "/\\.$/",
458
+ "property": "description",
459
+ "severity": "error",
460
+ "subject": "Tag",
461
+ },
462
+ ],
463
+ "boolean-parameter-prefixes": "error",
464
+ "local/operation-id-not-test": "error",
465
+ "no-invalid-media-type-examples": "warn",
466
+ "operation-2xx-response": "error",
467
+ "operation-4xx-response": "off",
468
+ "struct": "error",
469
+ },
314
470
  }
315
471
  `;