export type PackageJson = { name: string; version: string; dependencies?: Record; devDependencies?: Record; peerDependencies?: Record; optionalDependencies?: Record; workspaces?: string[] | { packages: string[]; }; }; export interface NodeModuleInfo { name: string; version: string; dir: string; dependencies?: Array; } export type ParsedDependencyTree = { readonly name: string; readonly version: string; readonly path: string; readonly workspaces?: string[] | { packages: string[]; }; }; export interface PnpmDependency extends Dependency { readonly from: string; readonly resolved: string; } export interface NpmDependency extends Dependency { readonly resolved?: string; readonly _dependencies?: { [packageName: string]: string; }; } export interface TraversedDependency extends Dependency { } export type Dependency = Dependencies & ParsedDependencyTree; export type Dependencies = { readonly dependencies?: { [packageName: string]: T; }; readonly optionalDependencies?: { [packageName: string]: V; }; }; export interface DependencyGraph { [packageNameAndVersion: string]: { readonly dependencies: string[]; }; }