import { SemVer } from 'semver'; import { LibraryInfo } from './registrar'; import { Vulnerability } from './vulnerability-checker'; export interface Extractor { files: string[]; filter?: (file: string) => boolean; createContexts: (files: string[]) => DependencyFileContext[]; } export interface Parser { parseDependencyTree: ParseDependencyTree; } export type ParseDependencyTree = (context: DependencyFileContext) => DepinderProject | Promise; export interface DependencyFileContext { root: string; manifestFile?: string; lockFile: string; type?: string; } export interface DepinderProject { name: string; version: string; path: string; dependencies: { [dependencyId: string]: DepinderDependency; }; } export interface DepinderDependency { id: string; name: string; version: string; semver: SemVer | null; type?: string; requestedBy: string[]; libraryInfo?: LibraryInfo; vulnerabilities?: Vulnerability[]; }