cli-node-graph 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +69 -0
- package/dist/analysis/CircularDependencyAnalyzer.d.ts +13 -0
- package/dist/analysis/CircularDependencyAnalyzer.d.ts.map +1 -0
- package/dist/analysis/CircularDependencyAnalyzer.js +15 -0
- package/dist/analysis/CircularDependencyAnalyzer.js.map +1 -0
- package/dist/analysis/DeadCodeAnalyzer.d.ts +13 -0
- package/dist/analysis/DeadCodeAnalyzer.d.ts.map +1 -0
- package/dist/analysis/DeadCodeAnalyzer.js +37 -0
- package/dist/analysis/DeadCodeAnalyzer.js.map +1 -0
- package/dist/analysis/DependencyAnalyzer.d.ts +16 -0
- package/dist/analysis/DependencyAnalyzer.d.ts.map +1 -0
- package/dist/analysis/DependencyAnalyzer.js +26 -0
- package/dist/analysis/DependencyAnalyzer.js.map +1 -0
- package/dist/analysis/ImpactAnalyzer.d.ts +16 -0
- package/dist/analysis/ImpactAnalyzer.d.ts.map +1 -0
- package/dist/analysis/ImpactAnalyzer.js +26 -0
- package/dist/analysis/ImpactAnalyzer.js.map +1 -0
- package/dist/analysis/LayerViolationAnalyzer.d.ts +31 -0
- package/dist/analysis/LayerViolationAnalyzer.d.ts.map +1 -0
- package/dist/analysis/LayerViolationAnalyzer.js +71 -0
- package/dist/analysis/LayerViolationAnalyzer.js.map +1 -0
- package/dist/cli/ProjectLoader.d.ts +13 -0
- package/dist/cli/ProjectLoader.d.ts.map +1 -0
- package/dist/cli/ProjectLoader.js +48 -0
- package/dist/cli/ProjectLoader.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +139 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/config/AnalysisConfig.d.ts +22 -0
- package/dist/config/AnalysisConfig.d.ts.map +1 -0
- package/dist/config/AnalysisConfig.js +6 -0
- package/dist/config/AnalysisConfig.js.map +1 -0
- package/dist/exporters/CytoscapeExporter.d.ts +18 -0
- package/dist/exporters/CytoscapeExporter.d.ts.map +1 -0
- package/dist/exporters/CytoscapeExporter.js +85 -0
- package/dist/exporters/CytoscapeExporter.js.map +1 -0
- package/dist/exporters/DotExporter.d.ts +13 -0
- package/dist/exporters/DotExporter.d.ts.map +1 -0
- package/dist/exporters/DotExporter.js +38 -0
- package/dist/exporters/DotExporter.js.map +1 -0
- package/dist/exporters/GraphExporter.d.ts +7 -0
- package/dist/exporters/GraphExporter.d.ts.map +1 -0
- package/dist/exporters/GraphExporter.js +2 -0
- package/dist/exporters/GraphExporter.js.map +1 -0
- package/dist/exporters/GraphMLExporter.d.ts +8 -0
- package/dist/exporters/GraphMLExporter.d.ts.map +1 -0
- package/dist/exporters/GraphMLExporter.js +30 -0
- package/dist/exporters/GraphMLExporter.js.map +1 -0
- package/dist/exporters/JsonExporter.d.ts +8 -0
- package/dist/exporters/JsonExporter.d.ts.map +1 -0
- package/dist/exporters/JsonExporter.js +16 -0
- package/dist/exporters/JsonExporter.js.map +1 -0
- package/dist/graph/EdgeFactory.d.ts +13 -0
- package/dist/graph/EdgeFactory.d.ts.map +1 -0
- package/dist/graph/EdgeFactory.js +15 -0
- package/dist/graph/EdgeFactory.js.map +1 -0
- package/dist/graph/Graph.d.ts +37 -0
- package/dist/graph/Graph.d.ts.map +1 -0
- package/dist/graph/Graph.js +137 -0
- package/dist/graph/Graph.js.map +1 -0
- package/dist/graph/GraphAlgorithms.d.ts +28 -0
- package/dist/graph/GraphAlgorithms.d.ts.map +1 -0
- package/dist/graph/GraphAlgorithms.js +233 -0
- package/dist/graph/GraphAlgorithms.js.map +1 -0
- package/dist/graph/GraphBuilder.d.ts +10 -0
- package/dist/graph/GraphBuilder.d.ts.map +1 -0
- package/dist/graph/GraphBuilder.js +71 -0
- package/dist/graph/GraphBuilder.js.map +1 -0
- package/dist/graph/NodeFactory.d.ts +21 -0
- package/dist/graph/NodeFactory.d.ts.map +1 -0
- package/dist/graph/NodeFactory.js +53 -0
- package/dist/graph/NodeFactory.js.map +1 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/model/EdgeKind.d.ts +22 -0
- package/dist/model/EdgeKind.d.ts.map +1 -0
- package/dist/model/EdgeKind.js +23 -0
- package/dist/model/EdgeKind.js.map +1 -0
- package/dist/model/GraphEdge.d.ts +22 -0
- package/dist/model/GraphEdge.d.ts.map +1 -0
- package/dist/model/GraphEdge.js +2 -0
- package/dist/model/GraphEdge.js.map +1 -0
- package/dist/model/GraphNode.d.ts +22 -0
- package/dist/model/GraphNode.d.ts.map +1 -0
- package/dist/model/GraphNode.js +2 -0
- package/dist/model/GraphNode.js.map +1 -0
- package/dist/model/NodeKind.d.ts +21 -0
- package/dist/model/NodeKind.d.ts.map +1 -0
- package/dist/model/NodeKind.js +22 -0
- package/dist/model/NodeKind.js.map +1 -0
- package/dist/parser/ASTWalker.d.ts +21 -0
- package/dist/parser/ASTWalker.d.ts.map +1 -0
- package/dist/parser/ASTWalker.js +23 -0
- package/dist/parser/ASTWalker.js.map +1 -0
- package/dist/parser/ProgramFactory.d.ts +15 -0
- package/dist/parser/ProgramFactory.d.ts.map +1 -0
- package/dist/parser/ProgramFactory.js +65 -0
- package/dist/parser/ProgramFactory.js.map +1 -0
- package/dist/parser/visitors/CallVisitor.d.ts +17 -0
- package/dist/parser/visitors/CallVisitor.d.ts.map +1 -0
- package/dist/parser/visitors/CallVisitor.js +111 -0
- package/dist/parser/visitors/CallVisitor.js.map +1 -0
- package/dist/parser/visitors/ClassVisitor.d.ts +14 -0
- package/dist/parser/visitors/ClassVisitor.d.ts.map +1 -0
- package/dist/parser/visitors/ClassVisitor.js +87 -0
- package/dist/parser/visitors/ClassVisitor.js.map +1 -0
- package/dist/parser/visitors/DecoratorVisitor.d.ts +13 -0
- package/dist/parser/visitors/DecoratorVisitor.d.ts.map +1 -0
- package/dist/parser/visitors/DecoratorVisitor.js +65 -0
- package/dist/parser/visitors/DecoratorVisitor.js.map +1 -0
- package/dist/parser/visitors/EnumVisitor.d.ts +11 -0
- package/dist/parser/visitors/EnumVisitor.d.ts.map +1 -0
- package/dist/parser/visitors/EnumVisitor.js +26 -0
- package/dist/parser/visitors/EnumVisitor.js.map +1 -0
- package/dist/parser/visitors/ExportVisitor.d.ts +16 -0
- package/dist/parser/visitors/ExportVisitor.d.ts.map +1 -0
- package/dist/parser/visitors/ExportVisitor.js +95 -0
- package/dist/parser/visitors/ExportVisitor.js.map +1 -0
- package/dist/parser/visitors/FunctionVisitor.d.ts +14 -0
- package/dist/parser/visitors/FunctionVisitor.d.ts.map +1 -0
- package/dist/parser/visitors/FunctionVisitor.js +74 -0
- package/dist/parser/visitors/FunctionVisitor.js.map +1 -0
- package/dist/parser/visitors/HeritageVisitor.d.ts +14 -0
- package/dist/parser/visitors/HeritageVisitor.d.ts.map +1 -0
- package/dist/parser/visitors/HeritageVisitor.js +87 -0
- package/dist/parser/visitors/HeritageVisitor.js.map +1 -0
- package/dist/parser/visitors/ImportVisitor.d.ts +14 -0
- package/dist/parser/visitors/ImportVisitor.d.ts.map +1 -0
- package/dist/parser/visitors/ImportVisitor.js +96 -0
- package/dist/parser/visitors/ImportVisitor.js.map +1 -0
- package/dist/parser/visitors/InterfaceVisitor.d.ts +11 -0
- package/dist/parser/visitors/InterfaceVisitor.d.ts.map +1 -0
- package/dist/parser/visitors/InterfaceVisitor.js +28 -0
- package/dist/parser/visitors/InterfaceVisitor.js.map +1 -0
- package/dist/parser/visitors/MethodVisitor.d.ts +11 -0
- package/dist/parser/visitors/MethodVisitor.d.ts.map +1 -0
- package/dist/parser/visitors/MethodVisitor.js +30 -0
- package/dist/parser/visitors/MethodVisitor.js.map +1 -0
- package/dist/parser/visitors/TypeReferenceVisitor.d.ts +15 -0
- package/dist/parser/visitors/TypeReferenceVisitor.d.ts.map +1 -0
- package/dist/parser/visitors/TypeReferenceVisitor.js +85 -0
- package/dist/parser/visitors/TypeReferenceVisitor.js.map +1 -0
- package/dist/parser/visitors/VariableVisitor.d.ts +11 -0
- package/dist/parser/visitors/VariableVisitor.d.ts.map +1 -0
- package/dist/parser/visitors/VariableVisitor.js +27 -0
- package/dist/parser/visitors/VariableVisitor.js.map +1 -0
- package/dist/parser/visitors/context.d.ts +54 -0
- package/dist/parser/visitors/context.d.ts.map +1 -0
- package/dist/parser/visitors/context.js +117 -0
- package/dist/parser/visitors/context.js.map +1 -0
- package/dist/resolver/ModuleResolver.d.ts +16 -0
- package/dist/resolver/ModuleResolver.d.ts.map +1 -0
- package/dist/resolver/ModuleResolver.js +40 -0
- package/dist/resolver/ModuleResolver.js.map +1 -0
- package/dist/resolver/SymbolResolver.d.ts +15 -0
- package/dist/resolver/SymbolResolver.d.ts.map +1 -0
- package/dist/resolver/SymbolResolver.js +62 -0
- package/dist/resolver/SymbolResolver.js.map +1 -0
- package/dist/resolver/TypeResolver.d.ts +13 -0
- package/dist/resolver/TypeResolver.d.ts.map +1 -0
- package/dist/resolver/TypeResolver.js +32 -0
- package/dist/resolver/TypeResolver.js.map +1 -0
- package/dist/utils/cache.d.ts +12 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +38 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/id.d.ts +7 -0
- package/dist/utils/id.d.ts.map +1 -0
- package/dist/utils/id.js +15 -0
- package/dist/utils/id.js.map +1 -0
- package/dist/utils/path.d.ts +9 -0
- package/dist/utils/path.d.ts.map +1 -0
- package/dist/utils/path.js +18 -0
- package/dist/utils/path.js.map +1 -0
- package/docs/ARCHITECTURE.md +100 -0
- package/docs/CLI.md +62 -0
- package/package.json +58 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Normalize a path to forward slashes. */
|
|
2
|
+
export declare function toPosixPath(filePath: string): string;
|
|
3
|
+
/** Get the folder path for a file. */
|
|
4
|
+
export declare function folderOf(filePath: string): string;
|
|
5
|
+
/** Resolve a path relative to a base directory. */
|
|
6
|
+
export declare function resolveFrom(base: string, target: string): string;
|
|
7
|
+
/** Get relative path from root. */
|
|
8
|
+
export declare function relativeTo(root: string, filePath: string): string;
|
|
9
|
+
//# sourceMappingURL=path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../src/utils/path.ts"],"names":[],"mappings":"AAEA,2CAA2C;AAC3C,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,sCAAsC;AACtC,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,mDAAmD;AACnD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,mCAAmC;AACnC,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEjE"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { dirname, normalize, relative, resolve, sep } from 'node:path';
|
|
2
|
+
/** Normalize a path to forward slashes. */
|
|
3
|
+
export function toPosixPath(filePath) {
|
|
4
|
+
return normalize(filePath).split(sep).join('/');
|
|
5
|
+
}
|
|
6
|
+
/** Get the folder path for a file. */
|
|
7
|
+
export function folderOf(filePath) {
|
|
8
|
+
return toPosixPath(dirname(filePath));
|
|
9
|
+
}
|
|
10
|
+
/** Resolve a path relative to a base directory. */
|
|
11
|
+
export function resolveFrom(base, target) {
|
|
12
|
+
return toPosixPath(resolve(base, target));
|
|
13
|
+
}
|
|
14
|
+
/** Get relative path from root. */
|
|
15
|
+
export function relativeTo(root, filePath) {
|
|
16
|
+
return toPosixPath(relative(root, filePath));
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.js","sourceRoot":"","sources":["../../src/utils/path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAEvE,2CAA2C;AAC3C,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,OAAO,SAAS,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,QAAQ,CAAC,QAAgB;IACvC,OAAO,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,MAAc;IACtD,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,mCAAmC;AACnC,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,QAAgB;IACvD,OAAO,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# Architecture
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
cli-node-graph uses a layered architecture where each layer is independent and testable.
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
CLI
|
|
9
|
+
│
|
|
10
|
+
▼
|
|
11
|
+
Project Loader
|
|
12
|
+
│
|
|
13
|
+
▼
|
|
14
|
+
TypeScript Program (ProgramFactory)
|
|
15
|
+
│
|
|
16
|
+
▼
|
|
17
|
+
AST Walker (single traversal)
|
|
18
|
+
│
|
|
19
|
+
▼
|
|
20
|
+
Visitors (Import, Export, Class, Call, …)
|
|
21
|
+
│
|
|
22
|
+
▼
|
|
23
|
+
Resolvers (Symbol, Type, Module, Path)
|
|
24
|
+
│
|
|
25
|
+
▼
|
|
26
|
+
Graph Builder
|
|
27
|
+
│
|
|
28
|
+
▼
|
|
29
|
+
Graph Database
|
|
30
|
+
│
|
|
31
|
+
├── Exporters (JSON, DOT, GraphML, …)
|
|
32
|
+
├── Analyzers (Cycles, Impact, Dead Code, Layers)
|
|
33
|
+
└── Visualization (React Flow)
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Layers
|
|
37
|
+
|
|
38
|
+
### Parser Layer
|
|
39
|
+
|
|
40
|
+
- **ProgramFactory** — Reads `tsconfig.json`, creates `Program`, `TypeChecker`, and filtered source files
|
|
41
|
+
- **ASTWalker** — Single-pass traversal dispatching to all visitors (avoids repeated AST walks)
|
|
42
|
+
|
|
43
|
+
### Visitor Layer
|
|
44
|
+
|
|
45
|
+
One visitor per concern:
|
|
46
|
+
|
|
47
|
+
| Visitor | Responsibility |
|
|
48
|
+
|---------|---------------|
|
|
49
|
+
| ImportVisitor | Static and dynamic imports |
|
|
50
|
+
| ExportVisitor | Exports and re-exports |
|
|
51
|
+
| ClassVisitor | Classes, methods, properties, constructors |
|
|
52
|
+
| InterfaceVisitor | Interface declarations |
|
|
53
|
+
| EnumVisitor | Enum declarations |
|
|
54
|
+
| FunctionVisitor | Functions, arrow functions, return types |
|
|
55
|
+
| MethodVisitor | Method declarations |
|
|
56
|
+
| VariableVisitor | Variable declarations |
|
|
57
|
+
| CallVisitor | Call expressions resolved via TypeChecker |
|
|
58
|
+
| DecoratorVisitor | Decorator usage |
|
|
59
|
+
| TypeReferenceVisitor | Type references in signatures |
|
|
60
|
+
| HeritageVisitor | extends / implements clauses |
|
|
61
|
+
|
|
62
|
+
### Resolver Layer
|
|
63
|
+
|
|
64
|
+
- **SymbolResolver** — `getSymbolAtLocation`, alias resolution, cached lookups
|
|
65
|
+
- **TypeResolver** — `getTypeAtLocation`, call signatures, return types
|
|
66
|
+
- **ModuleResolver** — Module specifier → file path resolution
|
|
67
|
+
- **PathResolver** — Project-relative path normalization
|
|
68
|
+
|
|
69
|
+
### Graph Layer
|
|
70
|
+
|
|
71
|
+
- **Graph** — Indexed in-memory graph (by kind, file, adjacency)
|
|
72
|
+
- **GraphBuilder** — Orchestrates the full pipeline
|
|
73
|
+
- **GraphAlgorithms** — Topological sort, SCCs, shortest path, impact traversal
|
|
74
|
+
|
|
75
|
+
### Analysis Layer
|
|
76
|
+
|
|
77
|
+
- **CircularDependencyAnalyzer** — Finds all dependency cycles
|
|
78
|
+
- **DeadCodeAnalyzer** — Unused exports, functions, orphan modules
|
|
79
|
+
- **ImpactAnalyzer** — Downstream impact of changes
|
|
80
|
+
- **DependencyAnalyzer** — Coupling metrics
|
|
81
|
+
- **LayerViolationAnalyzer** — Architecture layer rule enforcement
|
|
82
|
+
|
|
83
|
+
## Design Decisions
|
|
84
|
+
|
|
85
|
+
1. **Single AST traversal** — All visitors run in one walk to support large codebases (100k+ nodes)
|
|
86
|
+
2. **TypeChecker-first resolution** — No string matching; all symbol resolution goes through the TS API
|
|
87
|
+
3. **Cached symbol lookups** — LRU cache prevents repeated TypeChecker calls
|
|
88
|
+
4. **Indexed graph** — O(1) lookups by kind, file, and adjacency for fast queries
|
|
89
|
+
5. **Independent exporters** — Each format is a standalone class implementing `GraphExporter`
|
|
90
|
+
|
|
91
|
+
## Performance Considerations
|
|
92
|
+
|
|
93
|
+
- Indexed adjacency lists for graph queries
|
|
94
|
+
- Symbol lookup cache (10k entries default)
|
|
95
|
+
- Filtered source files (no `.d.ts`, configurable excludes)
|
|
96
|
+
- Graph filtering and cloning for subset analysis
|
|
97
|
+
|
|
98
|
+
## Extensibility
|
|
99
|
+
|
|
100
|
+
Add new node/edge kinds in `model/`, create a new visitor in `parser/visitors/`, register it in `GraphBuilder`. Add new exporters by implementing `GraphExporter`.
|
package/docs/CLI.md
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# CLI Reference
|
|
2
|
+
|
|
3
|
+
## Commands
|
|
4
|
+
|
|
5
|
+
### `cli-node-graph analyze [path]`
|
|
6
|
+
|
|
7
|
+
Analyze a TypeScript project and build the dependency graph.
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
cli-node-graph analyze .
|
|
11
|
+
cli-node-graph analyze ./apps/api --tsconfig tsconfig.app.json
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
### `cli-node-graph graph [path]`
|
|
15
|
+
|
|
16
|
+
Show summary statistics of the cached or last-analyzed graph.
|
|
17
|
+
|
|
18
|
+
### `cli-node-graph export [path] --format <format>`
|
|
19
|
+
|
|
20
|
+
Export the graph to a file format.
|
|
21
|
+
|
|
22
|
+
| Format | Description |
|
|
23
|
+
|--------|-------------|
|
|
24
|
+
| `json` | Full graph as JSON |
|
|
25
|
+
| `dot` | Graphviz DOT |
|
|
26
|
+
| `graphml` | GraphML XML |
|
|
27
|
+
| `mermaid` | Mermaid diagram |
|
|
28
|
+
| `cytoscape` | Cytoscape.js elements |
|
|
29
|
+
| `reactflow` | React Flow nodes/edges |
|
|
30
|
+
| `neo4j` | Neo4j CSV import |
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
cli-node-graph export . --format json -o graph.json
|
|
34
|
+
cli-node-graph export . --format dot -o graph.dot
|
|
35
|
+
cli-node-graph export . --format reactflow -o graph.json
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### `cli-node-graph cycles [path]`
|
|
39
|
+
|
|
40
|
+
Detect and list all circular dependencies.
|
|
41
|
+
|
|
42
|
+
### `cli-node-graph impact <target> [path]`
|
|
43
|
+
|
|
44
|
+
Analyze downstream impact of modifying a file or symbol.
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
cli-node-graph impact src/UserService.ts
|
|
48
|
+
cli-node-graph impact UserController
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### `cli-node-graph stats [path]`
|
|
52
|
+
|
|
53
|
+
Show detailed graph statistics (node/edge counts by kind).
|
|
54
|
+
|
|
55
|
+
## Cache
|
|
56
|
+
|
|
57
|
+
Analysis results are cached in `.cli-node-graph/graph.json` in the project root.
|
|
58
|
+
|
|
59
|
+
## Exit Codes
|
|
60
|
+
|
|
61
|
+
- `0` — Success
|
|
62
|
+
- `1` — Error (missing graph, unknown format, node not found)
|
package/package.json
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "cli-node-graph",
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "TypeScript codebase knowledge graph analyzer (Nx-style)",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"files": ["dist", "README.md", "LICENSE", "docs"],
|
|
9
|
+
"bin": {
|
|
10
|
+
"cli-node-graph": "./dist/cli/index.js"
|
|
11
|
+
},
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"types": "./dist/index.d.ts",
|
|
15
|
+
"import": "./dist/index.js"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "tsc -p tsconfig.build.json",
|
|
20
|
+
"dev": "tsx src/cli/index.ts",
|
|
21
|
+
"cli-node-graph": "tsx src/cli/index.ts",
|
|
22
|
+
"test": "vitest run",
|
|
23
|
+
"test:watch": "vitest",
|
|
24
|
+
"lint": "eslint src tests --ext .ts",
|
|
25
|
+
"format": "prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"",
|
|
26
|
+
"format:check": "prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"",
|
|
27
|
+
"typecheck": "tsc --noEmit",
|
|
28
|
+
"prepack": "pnpm build",
|
|
29
|
+
"prepublishOnly": "pnpm test && pnpm build"
|
|
30
|
+
},
|
|
31
|
+
"engines": {
|
|
32
|
+
"node": ">=22.0.0"
|
|
33
|
+
},
|
|
34
|
+
"keywords": [
|
|
35
|
+
"typescript",
|
|
36
|
+
"dependency-graph",
|
|
37
|
+
"static-analysis",
|
|
38
|
+
"code-intelligence"
|
|
39
|
+
],
|
|
40
|
+
"license": "MIT",
|
|
41
|
+
"dependencies": {
|
|
42
|
+
"commander": "^13.1.0",
|
|
43
|
+
"fast-glob": "^3.3.3"
|
|
44
|
+
},
|
|
45
|
+
"devDependencies": {
|
|
46
|
+
"@types/node": "^22.13.10",
|
|
47
|
+
"@typescript-eslint/eslint-plugin": "^8.26.1",
|
|
48
|
+
"@typescript-eslint/parser": "^8.26.1",
|
|
49
|
+
"eslint": "^9.22.0",
|
|
50
|
+
"prettier": "^3.5.3",
|
|
51
|
+
"tsx": "^4.19.3",
|
|
52
|
+
"typescript": "^5.8.2",
|
|
53
|
+
"vitest": "^3.0.9"
|
|
54
|
+
},
|
|
55
|
+
"publishConfig": {
|
|
56
|
+
"access": "public"
|
|
57
|
+
}
|
|
58
|
+
}
|