@redocly/openapi-core 2.25.4 → 2.26.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.
@@ -1,4 +1,4 @@
1
- import type { Oas2RuleSet, Oas3RuleSet, Async3RuleSet, Arazzo1RuleSet, Overlay1RuleSet, OpenRpc1RuleSet, SpecVersion, SpecMajorVersion } from '../oas-types.js';
1
+ import type { Oas2RuleSet, Oas3RuleSet, Async2RuleSet, Async3RuleSet, Arazzo1RuleSet, Overlay1RuleSet, OpenRpc1RuleSet, SpecVersion, SpecMajorVersion } from '../oas-types.js';
2
2
  import type { Document, ResolvedRefMap } from '../resolve.js';
3
3
  import type { NodeType } from '../types/index.js';
4
4
  import type { NormalizedProblem } from '../walk.js';
@@ -39,7 +39,7 @@ export declare class Config {
39
39
  preprocessors: string[];
40
40
  decorators: string[];
41
41
  };
42
- getRulesForSpecVersion(version: SpecMajorVersion): Oas3RuleSet[] | Oas2RuleSet[] | Async3RuleSet[] | Arazzo1RuleSet[] | Overlay1RuleSet[] | OpenRpc1RuleSet[];
42
+ getRulesForSpecVersion(version: SpecMajorVersion): Oas3RuleSet[] | Oas2RuleSet[] | Async2RuleSet[] | Async3RuleSet[] | Arazzo1RuleSet[] | Overlay1RuleSet[] | OpenRpc1RuleSet[];
43
43
  skipRules(rules?: string[]): void;
44
44
  skipPreprocessors(preprocessors?: string[]): void;
45
45
  skipDecorators(decorators?: string[]): void;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EAEX,aAAa,EACb,cAAc,EACd,eAAe,EACf,eAAe,EACf,WAAW,EACX,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGlD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAIpD,OAAO,KAAK,EACV,eAAe,EACf,MAAM,EACN,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,UAAU,EACV,YAAY,EACZ,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,qBAAa,MAAM;IACjB,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,YAAY,CAAM;IAC1B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IACvD,aAAa,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACvE,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;IAEjE,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,aAAa,CAA+B;gBAGlD,cAAc,EAAE,cAAc,EAC9B,IAAI,GAAE;QACJ,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;QACpB,cAAc,CAAC,EAAE,cAAc,CAAC;QAChC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,MAAM,CAAC,EAAE,YAAY,CAAC;KAClB;IAqFR,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM;IAoBvB,UAAU;IAiBV,SAAS,CAAC,OAAO,EAAE,iBAAiB;IAWpC,kBAAkB,CAAC,OAAO,EAAE,iBAAiB;IAe7C,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,WAAW;IA2CjE,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,GAAG,YAAY;IAatE,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,GAAG,YAAY;IAc9E,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,GAAG,YAAY;IAa3E,cAAc;;;;;IAyBd,sBAAsB,CAAC,OAAO,EAAE,gBAAgB;IA0EhD,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE;IAiB1B,iBAAiB,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE;IAU1C,cAAc,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE;CASrC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,aAAa,EACb,aAAa,EACb,cAAc,EACd,eAAe,EACf,eAAe,EACf,WAAW,EACX,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGlD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAIpD,OAAO,KAAK,EACV,eAAe,EACf,MAAM,EACN,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,UAAU,EACV,YAAY,EACZ,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,qBAAa,MAAM;IACjB,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,YAAY,CAAM;IAC1B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IACvD,aAAa,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACvE,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;IAEjE,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,aAAa,CAA+B;gBAGlD,cAAc,EAAE,cAAc,EAC9B,IAAI,GAAE;QACJ,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;QACpB,cAAc,CAAC,EAAE,cAAc,CAAC;QAChC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,MAAM,CAAC,EAAE,YAAY,CAAC;KAClB;IAqFR,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM;IAoBvB,UAAU;IAiBV,SAAS,CAAC,OAAO,EAAE,iBAAiB;IAWpC,kBAAkB,CAAC,OAAO,EAAE,iBAAiB;IAe7C,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,WAAW;IA2CjE,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,GAAG,YAAY;IAatE,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,GAAG,YAAY;IAc9E,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,GAAG,YAAY;IAa3E,cAAc;;;;;IAyBd,sBAAsB,CAAC,OAAO,EAAE,gBAAgB;IA0EhD,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE;IAiB1B,iBAAiB,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE;IAU1C,cAAc,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE;CASrC"}
@@ -1 +1 @@
1
- {"version":3,"file":"no-http-verbs-in-paths.d.ts","sourceRoot":"","sources":["../../../src/rules/common/no-http-verbs-in-paths.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAK5D,eAAO,MAAM,kBAAkB,EAAE,QAAQ,GAAG,QA2B3C,CAAC"}
1
+ {"version":3,"file":"no-http-verbs-in-paths.d.ts","sourceRoot":"","sources":["../../../src/rules/common/no-http-verbs-in-paths.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAK5D,eAAO,MAAM,kBAAkB,EAAE,QAAQ,GAAG,QA4B3C,CAAC"}
@@ -1,12 +1,14 @@
1
1
  import { isPathParameter } from '../../utils/is-path-parameter.js';
2
2
  import { splitCamelCaseIntoWords } from '../../utils/split-camel-case-into-words.js';
3
3
  const httpMethods = ['get', 'head', 'post', 'put', 'patch', 'delete', 'options', 'trace'];
4
- export const NoHttpVerbsInPaths = ({ splitIntoWords }) => {
4
+ export const NoHttpVerbsInPaths = ({ splitIntoWords, excludedPaths }) => {
5
5
  return {
6
6
  PathItem(_path, { key, report, location }) {
7
7
  const pathKey = key.toString();
8
8
  if (!pathKey.startsWith('/'))
9
9
  return;
10
+ if (excludedPaths?.some((excludedPath) => pathKey === excludedPath))
11
+ return;
10
12
  const pathSegments = pathKey.split('/');
11
13
  for (const pathSegment of pathSegments) {
12
14
  if (!pathSegment || isPathParameter(pathSegment))
@@ -1 +1 @@
1
- {"version":3,"file":"no-http-verbs-in-paths.js","sourceRoot":"","sources":["../../../src/rules/common/no-http-verbs-in-paths.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAIrF,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAE1F,MAAM,CAAC,MAAM,kBAAkB,GAAwB,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE;IAC5E,OAAO;QACL,QAAQ,CAAC,KAAkC,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAe;YACjF,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,OAAO;YACrC,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAExC,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;gBACvC,IAAI,CAAC,WAAW,IAAI,eAAe,CAAC,WAAW,CAAC;oBAAE,SAAS;gBAE3D,MAAM,oBAAoB,GAAG,CAAC,MAAc,EAAE,EAAE;oBAC9C,OAAO,cAAc;wBACnB,CAAC,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;wBAClD,CAAC,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACvD,CAAC,CAAC;gBAEF,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;oBACjC,IAAI,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;wBACjC,MAAM,CAAC;4BACL,OAAO,EAAE,UAAU,OAAO,mCAAmC,MAAM,EAAE;4BACrE,QAAQ,EAAE,QAAQ,CAAC,GAAG,EAAE;yBACzB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"no-http-verbs-in-paths.js","sourceRoot":"","sources":["../../../src/rules/common/no-http-verbs-in-paths.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAIrF,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAE1F,MAAM,CAAC,MAAM,kBAAkB,GAAwB,CAAC,EAAE,cAAc,EAAE,aAAa,EAAE,EAAE,EAAE;IAC3F,OAAO;QACL,QAAQ,CAAC,KAAkC,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAe;YACjF,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,OAAO;YACrC,IAAI,aAAa,EAAE,IAAI,CAAC,CAAC,YAAoB,EAAE,EAAE,CAAC,OAAO,KAAK,YAAY,CAAC;gBAAE,OAAO;YACpF,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAExC,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;gBACvC,IAAI,CAAC,WAAW,IAAI,eAAe,CAAC,WAAW,CAAC;oBAAE,SAAS;gBAE3D,MAAM,oBAAoB,GAAG,CAAC,MAAc,EAAE,EAAE;oBAC9C,OAAO,cAAc;wBACnB,CAAC,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;wBAClD,CAAC,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACvD,CAAC,CAAC;gBAEF,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;oBACjC,IAAI,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;wBACjC,MAAM,CAAC;4BACL,OAAO,EAAE,UAAU,OAAO,mCAAmC,MAAM,EAAE;4BACrE,QAAQ,EAAE,QAAQ,CAAC,GAAG,EAAE;yBACzB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"no-required-schema-properties-undefined.d.ts","sourceRoot":"","sources":["../../../src/rules/common/no-required-schema-properties-undefined.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAKjG,eAAO,MAAM,mCAAmC,EAC5C,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,UAAU,GACV,WAkGH,CAAC"}
1
+ {"version":3,"file":"no-required-schema-properties-undefined.d.ts","sourceRoot":"","sources":["../../../src/rules/common/no-required-schema-properties-undefined.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AASjG,eAAO,MAAM,mCAAmC,EAC5C,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,UAAU,GACV,WA+EH,CAAC"}
@@ -1,5 +1,6 @@
1
- import { isRef } from '../../ref-utils.js';
2
1
  import { getOwn } from '../../utils/get-own.js';
2
+ import { isNotEmptyArray } from '../../utils/is-not-empty-array.js';
3
+ import { resolveSchema } from '../utils.js';
3
4
  export const NoRequiredSchemaPropertiesUndefined = () => {
4
5
  const parents = [];
5
6
  return {
@@ -7,67 +8,52 @@ export const NoRequiredSchemaPropertiesUndefined = () => {
7
8
  leave(_) {
8
9
  parents.pop();
9
10
  },
10
- enter(schema, { location, report, resolve }) {
11
- parents.push(schema);
12
- if (!schema.required)
11
+ enter(currentSchema, ctx) {
12
+ parents.push(currentSchema);
13
+ if (!currentSchema.required)
13
14
  return;
14
- const visitedSchemas = new Set();
15
- const elevateProperties = (schema, from, includeFirstLevelExclusiveSchemas = true) => {
16
- // Check if the schema has been visited before processing it
17
- if (visitedSchemas.has(schema)) {
18
- return {};
15
+ const hasProperty = (schemaOrRef, propertyName, visited, resolveFrom) => {
16
+ const { schema, location } = resolveSchema(schemaOrRef, ctx, resolveFrom);
17
+ if (!schema || visited.has(schema))
18
+ return false;
19
+ visited.add(schema);
20
+ if (schema.properties && getOwn(schema.properties, propertyName) !== undefined) {
21
+ return true;
19
22
  }
20
- visitedSchemas.add(schema);
21
- if (isRef(schema)) {
22
- const resolved = resolve(schema, from);
23
- if (!resolved.node) {
24
- return {};
25
- }
26
- return elevateProperties(resolved.node, resolved.location?.source.absoluteRef);
23
+ if (schema.allOf?.some((s) => hasProperty(s, propertyName, visited, location))) {
24
+ return true;
27
25
  }
28
- return Object.assign({}, schema.properties, ...(schema.allOf?.map((s) => elevateProperties(s, from)) ?? []), ...(('anyOf' in schema && includeFirstLevelExclusiveSchemas
29
- ? schema.anyOf?.map((s) => elevateProperties(s, from))
30
- : undefined) ?? []), ...(('oneOf' in schema && includeFirstLevelExclusiveSchemas
31
- ? schema.oneOf?.map((s) => elevateProperties(s, from))
32
- : undefined) ?? []));
26
+ if (isNotEmptyArray(schema.anyOf) &&
27
+ schema.anyOf.every((s) => hasProperty(s, propertyName, new Set(visited), location))) {
28
+ return true;
29
+ }
30
+ if (isNotEmptyArray(schema.oneOf) &&
31
+ schema.oneOf.every((s) => hasProperty(s, propertyName, new Set(visited), location))) {
32
+ return true;
33
+ }
34
+ return false;
33
35
  };
34
- /**
35
- * The index to use to lookup grand parent schemas when dealing with composed schemas.
36
- * @summary The current schema should always end up with under ../anyOf/1, if we get multiple ancestors, they should always be a multiple.
37
- */
38
- const locationLookupIndex = 2;
39
- const getParentSchema = (lookupIndex) => {
40
- lookupIndex++;
41
- if (!parents || parents.length < lookupIndex)
42
- return undefined;
43
- const parent = parents[parents.length - lookupIndex];
44
- return parent;
36
+ const isCompositionChild = (parent, child) => {
37
+ const matchesChild = (s) => resolveSchema(s, ctx).schema === child;
38
+ return !!(parent.allOf?.some(matchesChild) ||
39
+ parent.anyOf?.some(matchesChild) ||
40
+ parent.oneOf?.some(matchesChild));
45
41
  };
46
- const recursivelyGetParentProperties = (splitLocation, parentLookupIndex = 0) => {
47
- const isMemberOfComposedType = splitLocation.length > locationLookupIndex &&
48
- !isNaN(parseInt(splitLocation[splitLocation.length - 1])) &&
49
- !!/(allOf|oneOf|anyOf)/.exec(splitLocation[splitLocation.length - locationLookupIndex]);
50
- const parentSchema = isMemberOfComposedType
51
- ? getParentSchema(++parentLookupIndex)
52
- : undefined;
53
- const grandParentProperties = splitLocation.length >= locationLookupIndex + locationLookupIndex
54
- ? recursivelyGetParentProperties(splitLocation.slice(0, -locationLookupIndex), parentLookupIndex)
55
- : {};
56
- return parentSchema
57
- ? {
58
- ...elevateProperties(parentSchema, undefined, false),
59
- ...grandParentProperties,
60
- }
42
+ const findCompositionRoot = (i, child) => {
43
+ if (i < 0)
44
+ return undefined;
45
+ const parent = parents[i];
46
+ return isCompositionChild(parent, child)
47
+ ? (findCompositionRoot(i - 1, parent) ?? parent)
61
48
  : undefined;
62
49
  };
63
- const allProperties = elevateProperties(schema);
64
- const parentProperties = recursivelyGetParentProperties(location.pointer.split('/'));
65
- for (const [i, requiredProperty] of schema.required.entries()) {
66
- if ((!allProperties || getOwn(allProperties, requiredProperty) === undefined) &&
67
- (!parentProperties || getOwn(parentProperties, requiredProperty) === undefined)) {
68
- report({
69
- message: `Required property '${requiredProperty}' is undefined.`,
70
- location: location.child(['required', i]),
50
+ const compositionRoot = findCompositionRoot(parents.length - 2, currentSchema);
51
+ for (const [i, requiredProperty] of currentSchema.required.entries()) {
52
+ if (!hasProperty(currentSchema, requiredProperty, new Set()) &&
53
+ !hasProperty(compositionRoot, requiredProperty, new Set())) {
54
+ ctx.report({
55
+ message: `Required property '${requiredProperty}' is not defined.`,
56
+ location: ctx.location.child(['required', i]),
71
57
  });
72
58
  }
73
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"no-required-schema-properties-undefined.js","sourceRoot":"","sources":["../../../src/rules/common/no-required-schema-properties-undefined.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"no-required-schema-properties-undefined.js","sourceRoot":"","sources":["../../../src/rules/common/no-required-schema-properties-undefined.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,13 @@
1
1
  export interface Async2Definition {
2
2
  asyncapi: string;
3
3
  info?: Async2Info;
4
+ id?: string;
5
+ servers?: Record<string, any>;
6
+ channels?: Record<string, any>;
7
+ components?: Record<string, any>;
8
+ tags?: unknown[];
9
+ externalDocs?: unknown;
10
+ defaultContentType?: string;
4
11
  }
5
12
  export interface Async2Info {
6
13
  title: string;
@@ -1 +1 @@
1
- {"version":3,"file":"asyncapi.d.ts","sourceRoot":"","sources":["../../src/typings/asyncapi.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,UAAU,CAAC;CAEnB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAEhB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd"}
1
+ {"version":3,"file":"asyncapi.d.ts","sourceRoot":"","sources":["../../src/typings/asyncapi.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAEhB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redocly/openapi-core",
3
- "version": "2.25.4",
3
+ "version": "2.26.0",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "types": "lib/index.d.ts",
@@ -53,7 +53,7 @@
53
53
  ],
54
54
  "dependencies": {
55
55
  "@redocly/ajv": "^8.18.0",
56
- "@redocly/config": "^0.46.0",
56
+ "@redocly/config": "^0.46.1",
57
57
  "ajv": "npm:@redocly/ajv@8.18.0",
58
58
  "ajv-formats": "^3.0.1",
59
59
  "colorette": "^1.2.0",