@snyk/dep-graph
Version:
Snyk dependency graph library
84 lines (83 loc) • 1.97 kB
TypeScript
export interface Pkg {
name: string;
version?: string;
}
export declare type PurlString = string;
export interface PkgInfo {
name: string;
version?: string;
purl?: PurlString;
}
export interface VersionProvenance {
type: string;
location: string;
property?: {
name: string;
};
}
export interface NodeInfo {
versionProvenance?: VersionProvenance;
labels?: {
[key: string]: string | undefined;
scope?: 'dev' | 'prod';
pruned?: 'cyclic' | 'true';
};
}
export interface Node {
info: NodeInfo;
}
export interface GraphNode {
nodeId: string;
pkgId: string;
info?: NodeInfo;
deps: Array<{
nodeId: string;
}>;
}
export interface PkgManager {
name: string;
version?: string;
repositories?: Array<{
alias: string;
}>;
}
export interface DepGraphData {
schemaVersion: string;
pkgManager: PkgManager;
pkgs: Array<{
id: string;
info: PkgInfo;
}>;
graph: {
rootNodeId: string;
nodes: GraphNode[];
};
}
export interface DepGraph {
readonly pkgManager: PkgManager;
readonly rootPkg: PkgInfo;
getPkgs(): PkgInfo[];
getDepPkgs(): PkgInfo[];
getPkgNodes(pkg: Pkg): Node[];
toJSON(): DepGraphData;
pkgPathsToRoot(pkg: Pkg, opts?: {
limit?: number;
}): PkgInfo[][];
isTransitive(pkg: Pkg): boolean;
directDepsLeadingTo(pkg: Pkg): PkgInfo[];
countPathsToRoot(pkg: Pkg, opts?: {
limit?: number;
}): number;
equals(other: DepGraph, options?: {
compareRoot?: boolean;
}): boolean;
}
export interface DepGraphInternal extends DepGraph {
readonly rootNodeId: string;
getNode(nodeId: string): NodeInfo;
getNodePkg(nodeId: string): PkgInfo;
getPkgNodeIds(pkg: Pkg): string[];
getNodeDepsNodeIds(nodeId: string): string[];
getNodeParentsNodeIds(nodeId: string): string[];
hasCycles(): boolean;
}