message: fix: filter out non-existing security schemas + warn
diff: @@ -2,26 +2,36 @@ import { OpenAPISecurityRequirement } from '../../types';
  import { SECURITY_SCHEMES_SECTION } from '../../utils/openapi';
  import { OpenAPIParser } from '../OpenAPIParser';
  -export class SecurityRequirementModel {
  - schemes: Array<{
  +interface SecurityScheme {
  id: string;
  sectionId: string;
  type: string;
  scopes: string[];
  - }>;
  +}
  +
  +export class SecurityRequirementModel {
  + schemes: SecurityScheme[];
  constructor(requirement: OpenAPISecurityRequirement, parser: OpenAPIParser) {
  const schemes = (parser.spec.components && parser.spec.components.securitySchemes) || {};
  - this.schemes = Object.keys(requirement || {}).map(id => {
  + this.schemes = Object.keys(requirement || {})
  + .map(id => {
  const scheme = parser.deref(schemes[id]);
  const scopes = requirement[id] || [];
  +
  + if (!scheme) {
  + console.warn(`Non existing security scheme referenced: ${id}. Skipping`);
  + return null;
  + }
  +
  return {
  id,
  sectionId: SECURITY_SCHEMES_SECTION + id,
  type: scheme.type,
  scopes,
  };
  - });
  + })
  + .filter(scheme => scheme !== undefined) as SecurityScheme[];
  }
  }
  