1 | export interface Pkg {
|
2 | name: string;
|
3 | version?: string;
|
4 | }
|
5 | export interface PkgInfo {
|
6 | name: string;
|
7 | version?: string;
|
8 | }
|
9 | export interface VersionProvenance {
|
10 | type: string;
|
11 | location: string;
|
12 | property?: {
|
13 | name: string;
|
14 | };
|
15 | }
|
16 | export interface NodeInfo {
|
17 | versionProvenance?: VersionProvenance;
|
18 | labels?: {
|
19 | [key: string]: string | undefined;
|
20 | scope?: 'dev' | 'prod';
|
21 | pruned?: 'cyclic' | 'true';
|
22 | };
|
23 | }
|
24 | export interface Node {
|
25 | info: NodeInfo;
|
26 | }
|
27 | export interface GraphNode {
|
28 | nodeId: string;
|
29 | pkgId: string;
|
30 | info?: NodeInfo;
|
31 | deps: Array<{
|
32 | nodeId: string;
|
33 | }>;
|
34 | }
|
35 | export interface PkgManager {
|
36 | name: string;
|
37 | version?: string;
|
38 | repositories?: Array<{
|
39 | alias: string;
|
40 | }>;
|
41 | }
|
42 | export interface DepGraphData {
|
43 | schemaVersion: string;
|
44 | pkgManager: PkgManager;
|
45 | pkgs: Array<{
|
46 | id: string;
|
47 | info: PkgInfo;
|
48 | }>;
|
49 | graph: {
|
50 | rootNodeId: string;
|
51 | nodes: GraphNode[];
|
52 | };
|
53 | }
|
54 | export interface DepGraph {
|
55 | readonly pkgManager: PkgManager;
|
56 | readonly rootPkg: PkgInfo;
|
57 | getPkgs(): PkgInfo[];
|
58 | getDepPkgs(): PkgInfo[];
|
59 | getPkgNodes(pkg: Pkg): Node[];
|
60 | toJSON(): DepGraphData;
|
61 | pkgPathsToRoot(pkg: Pkg): PkgInfo[][];
|
62 | directDepsLeadingTo(pkg: Pkg): PkgInfo[];
|
63 | countPathsToRoot(pkg: Pkg): number;
|
64 | equals(other: DepGraph, options?: {
|
65 | compareRoot?: boolean;
|
66 | }): boolean;
|
67 | }
|
68 | export interface DepGraphInternal extends DepGraph {
|
69 | readonly rootNodeId: string;
|
70 | getNode(nodeId: string): NodeInfo;
|
71 | getNodePkg(nodeId: string): PkgInfo;
|
72 | getPkgNodeIds(pkg: Pkg): string[];
|
73 | getNodeDepsNodeIds(nodeId: string): string[];
|
74 | getNodeParentsNodeIds(nodeId: string): string[];
|
75 | hasCycles(): boolean;
|
76 | }
|