/**
* @fileoverview Vulnerability-related models for DeepSource integration.
* @packageDocumentation
*/
import {
VulnerabilitySeverity,
PackageVersionType,
VulnerabilityReachability,
VulnerabilityFixability,
} from '../types/vulnerability.js';
/**
* Package information
* @public
*/
export interface Package {
id: string;
name: string;
ecosystem: string;
description?: string;
license?: string;
repository?: string;
homepage?: string;
}
/**
* Package version information
* @public
*/
export interface PackageVersion {
id: string;
package: Package;
version: string;
type: PackageVersionType;
publishedAt?: string;
directDependencies?: PackageVersion[];
}
/**
* Vulnerability information
* @public
*/
export interface Vulnerability {
id: string;
cveId: string;
title: string;
description: string;
severity: VulnerabilitySeverity;
fixable: boolean;
fixVersion?: string;
publishedAt: string;
updatedAt: string;
references: string[];
exploitMaturity?: string;
cvssScore?: number;
cvssVector?: string;
cwes?: Array<{
id: string;
name: string;
}>;
affectedVersionRange?: string;
patchedVersions?: string[];
vulnerableVersions?: string[];
vulnerableFunctions?: string[];
reachability?: VulnerabilityReachability;
fixability?: VulnerabilityFixability;
exploitPredictions?: {
probability?: number;
severity?: string;
};
advisories?: Array<{
id: string;
source: string;
url: string;
}>;
occurrences?: VulnerabilityOccurrence[];
}
/**
* Vulnerability occurrence information
* @public
*/
export interface VulnerabilityOccurrence {
dependency: {
name: string;
version: string;
packageManager: string;
};
filePath: string;
affectedVersionRange: string;
introducedThrough?: string[];
fixAvailable?: boolean;
fixVersion?: string;
vulnerabilityId?: string;
}