@optave/codegraph 3.6.0 → 3.8.0
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 +32 -16
- package/dist/ast-analysis/engine.d.ts.map +1 -1
- package/dist/ast-analysis/engine.js +158 -1
- package/dist/ast-analysis/engine.js.map +1 -1
- package/dist/ast-analysis/rules/javascript.d.ts.map +1 -1
- package/dist/ast-analysis/rules/javascript.js +0 -1
- package/dist/ast-analysis/rules/javascript.js.map +1 -1
- package/dist/ast-analysis/visitors/ast-store-visitor.d.ts.map +1 -1
- package/dist/ast-analysis/visitors/ast-store-visitor.js +2 -75
- package/dist/ast-analysis/visitors/ast-store-visitor.js.map +1 -1
- package/dist/cli/commands/ast.js +2 -2
- package/dist/cli/commands/ast.js.map +1 -1
- package/dist/domain/graph/builder/pipeline.d.ts.map +1 -1
- package/dist/domain/graph/builder/pipeline.js +128 -6
- package/dist/domain/graph/builder/pipeline.js.map +1 -1
- package/dist/domain/graph/builder/stages/build-edges.d.ts.map +1 -1
- package/dist/domain/graph/builder/stages/build-edges.js +101 -1
- package/dist/domain/graph/builder/stages/build-edges.js.map +1 -1
- package/dist/domain/graph/builder/stages/collect-files.d.ts.map +1 -1
- package/dist/domain/graph/builder/stages/collect-files.js +17 -5
- package/dist/domain/graph/builder/stages/collect-files.js.map +1 -1
- package/dist/domain/graph/builder/stages/detect-changes.d.ts.map +1 -1
- package/dist/domain/graph/builder/stages/detect-changes.js +98 -50
- package/dist/domain/graph/builder/stages/detect-changes.js.map +1 -1
- package/dist/domain/graph/builder/stages/finalize.d.ts.map +1 -1
- package/dist/domain/graph/builder/stages/finalize.js +32 -5
- package/dist/domain/graph/builder/stages/finalize.js.map +1 -1
- package/dist/domain/graph/builder/stages/insert-nodes.d.ts.map +1 -1
- package/dist/domain/graph/builder/stages/insert-nodes.js +20 -7
- package/dist/domain/graph/builder/stages/insert-nodes.js.map +1 -1
- package/dist/domain/parser.d.ts +1 -1
- package/dist/domain/parser.d.ts.map +1 -1
- package/dist/domain/parser.js +129 -3
- package/dist/domain/parser.js.map +1 -1
- package/dist/extractors/clojure.d.ts +12 -0
- package/dist/extractors/clojure.d.ts.map +1 -0
- package/dist/extractors/clojure.js +245 -0
- package/dist/extractors/clojure.js.map +1 -0
- package/dist/extractors/cuda.d.ts +11 -0
- package/dist/extractors/cuda.d.ts.map +1 -0
- package/dist/extractors/cuda.js +302 -0
- package/dist/extractors/cuda.js.map +1 -0
- package/dist/extractors/dart.d.ts +6 -0
- package/dist/extractors/dart.d.ts.map +1 -0
- package/dist/extractors/dart.js +277 -0
- package/dist/extractors/dart.js.map +1 -0
- package/dist/extractors/elixir.d.ts +9 -0
- package/dist/extractors/elixir.d.ts.map +1 -0
- package/dist/extractors/elixir.js +223 -0
- package/dist/extractors/elixir.js.map +1 -0
- package/dist/extractors/erlang.d.ts +14 -0
- package/dist/extractors/erlang.d.ts.map +1 -0
- package/dist/extractors/erlang.js +239 -0
- package/dist/extractors/erlang.js.map +1 -0
- package/dist/extractors/fsharp.d.ts +13 -0
- package/dist/extractors/fsharp.d.ts.map +1 -0
- package/dist/extractors/fsharp.js +218 -0
- package/dist/extractors/fsharp.js.map +1 -0
- package/dist/extractors/gleam.d.ts +14 -0
- package/dist/extractors/gleam.d.ts.map +1 -0
- package/dist/extractors/gleam.js +229 -0
- package/dist/extractors/gleam.js.map +1 -0
- package/dist/extractors/groovy.d.ts +10 -0
- package/dist/extractors/groovy.d.ts.map +1 -0
- package/dist/extractors/groovy.js +304 -0
- package/dist/extractors/groovy.js.map +1 -0
- package/dist/extractors/haskell.d.ts +8 -0
- package/dist/extractors/haskell.d.ts.map +1 -0
- package/dist/extractors/haskell.js +217 -0
- package/dist/extractors/haskell.js.map +1 -0
- package/dist/extractors/index.d.ts +17 -0
- package/dist/extractors/index.d.ts.map +1 -1
- package/dist/extractors/index.js +17 -0
- package/dist/extractors/index.js.map +1 -1
- package/dist/extractors/julia.d.ts +16 -0
- package/dist/extractors/julia.d.ts.map +1 -0
- package/dist/extractors/julia.js +287 -0
- package/dist/extractors/julia.js.map +1 -0
- package/dist/extractors/lua.d.ts +6 -0
- package/dist/extractors/lua.d.ts.map +1 -0
- package/dist/extractors/lua.js +162 -0
- package/dist/extractors/lua.js.map +1 -0
- package/dist/extractors/objc.d.ts +9 -0
- package/dist/extractors/objc.d.ts.map +1 -0
- package/dist/extractors/objc.js +406 -0
- package/dist/extractors/objc.js.map +1 -0
- package/dist/extractors/ocaml.d.ts +6 -0
- package/dist/extractors/ocaml.d.ts.map +1 -0
- package/dist/extractors/ocaml.js +310 -0
- package/dist/extractors/ocaml.js.map +1 -0
- package/dist/extractors/r.d.ts +13 -0
- package/dist/extractors/r.d.ts.map +1 -0
- package/dist/extractors/r.js +251 -0
- package/dist/extractors/r.js.map +1 -0
- package/dist/extractors/solidity.d.ts +9 -0
- package/dist/extractors/solidity.d.ts.map +1 -0
- package/dist/extractors/solidity.js +374 -0
- package/dist/extractors/solidity.js.map +1 -0
- package/dist/extractors/verilog.d.ts +9 -0
- package/dist/extractors/verilog.d.ts.map +1 -0
- package/dist/extractors/verilog.js +286 -0
- package/dist/extractors/verilog.js.map +1 -0
- package/dist/extractors/zig.d.ts +9 -0
- package/dist/extractors/zig.d.ts.map +1 -0
- package/dist/extractors/zig.js +276 -0
- package/dist/extractors/zig.js.map +1 -0
- package/dist/features/ast.d.ts.map +1 -1
- package/dist/features/ast.js +1 -2
- package/dist/features/ast.js.map +1 -1
- package/dist/features/cfg.d.ts +1 -1
- package/dist/features/cfg.d.ts.map +1 -1
- package/dist/features/cfg.js +6 -51
- package/dist/features/cfg.js.map +1 -1
- package/dist/graph/algorithms/bfs.d.ts +2 -0
- package/dist/graph/algorithms/bfs.d.ts.map +1 -1
- package/dist/graph/algorithms/bfs.js +27 -0
- package/dist/graph/algorithms/bfs.js.map +1 -1
- package/dist/graph/algorithms/centrality.d.ts +2 -0
- package/dist/graph/algorithms/centrality.d.ts.map +1 -1
- package/dist/graph/algorithms/centrality.js +28 -0
- package/dist/graph/algorithms/centrality.js.map +1 -1
- package/dist/graph/algorithms/louvain.d.ts +3 -4
- package/dist/graph/algorithms/louvain.d.ts.map +1 -1
- package/dist/graph/algorithms/louvain.js +29 -0
- package/dist/graph/algorithms/louvain.js.map +1 -1
- package/dist/graph/algorithms/shortest-path.d.ts +2 -0
- package/dist/graph/algorithms/shortest-path.d.ts.map +1 -1
- package/dist/graph/algorithms/shortest-path.js +18 -1
- package/dist/graph/algorithms/shortest-path.js.map +1 -1
- package/dist/types.d.ts +122 -2
- package/dist/types.d.ts.map +1 -1
- package/grammars/tree-sitter-clojure.wasm +0 -0
- package/grammars/tree-sitter-cuda.wasm +0 -0
- package/grammars/tree-sitter-dart.wasm +0 -0
- package/grammars/tree-sitter-elixir.wasm +0 -0
- package/grammars/tree-sitter-erlang.wasm +0 -0
- package/grammars/tree-sitter-fsharp.wasm +0 -0
- package/grammars/tree-sitter-gleam.wasm +0 -0
- package/grammars/tree-sitter-groovy.wasm +0 -0
- package/grammars/tree-sitter-haskell.wasm +0 -0
- package/grammars/tree-sitter-julia.wasm +0 -0
- package/grammars/tree-sitter-lua.wasm +0 -0
- package/grammars/tree-sitter-objc.wasm +0 -0
- package/grammars/tree-sitter-ocaml.wasm +0 -0
- package/grammars/tree-sitter-ocaml_interface.wasm +0 -0
- package/grammars/tree-sitter-r.wasm +0 -0
- package/grammars/tree-sitter-solidity.wasm +0 -0
- package/grammars/tree-sitter-verilog.wasm +0 -0
- package/grammars/tree-sitter-zig.wasm +0 -0
- package/package.json +24 -7
- package/src/ast-analysis/engine.ts +183 -1
- package/src/ast-analysis/rules/javascript.ts +0 -1
- package/src/ast-analysis/visitors/ast-store-visitor.ts +2 -75
- package/src/cli/commands/ast.ts +2 -2
- package/src/domain/graph/builder/pipeline.ts +142 -6
- package/src/domain/graph/builder/stages/build-edges.ts +158 -1
- package/src/domain/graph/builder/stages/collect-files.ts +18 -7
- package/src/domain/graph/builder/stages/detect-changes.ts +109 -55
- package/src/domain/graph/builder/stages/finalize.ts +39 -9
- package/src/domain/graph/builder/stages/insert-nodes.ts +18 -7
- package/src/domain/parser.ts +161 -1
- package/src/extractors/clojure.ts +273 -0
- package/src/extractors/cuda.ts +316 -0
- package/src/extractors/dart.ts +304 -0
- package/src/extractors/elixir.ts +251 -0
- package/src/extractors/erlang.ts +252 -0
- package/src/extractors/fsharp.ts +253 -0
- package/src/extractors/gleam.ts +246 -0
- package/src/extractors/groovy.ts +332 -0
- package/src/extractors/haskell.ts +235 -0
- package/src/extractors/index.ts +17 -0
- package/src/extractors/julia.ts +318 -0
- package/src/extractors/lua.ts +169 -0
- package/src/extractors/objc.ts +431 -0
- package/src/extractors/ocaml.ts +337 -0
- package/src/extractors/r.ts +253 -0
- package/src/extractors/solidity.ts +398 -0
- package/src/extractors/verilog.ts +315 -0
- package/src/extractors/zig.ts +294 -0
- package/src/features/ast.ts +1 -2
- package/src/features/cfg.ts +6 -51
- package/src/graph/algorithms/bfs.ts +34 -0
- package/src/graph/algorithms/centrality.ts +30 -0
- package/src/graph/algorithms/louvain.ts +31 -4
- package/src/graph/algorithms/shortest-path.ts +20 -1
- package/src/types.ts +123 -2
package/src/types.ts
CHANGED
|
@@ -61,7 +61,7 @@ export type EdgeKind = CoreEdgeKind | StructuralEdgeKind;
|
|
|
61
61
|
export type AnyEdgeKind = EdgeKind | DataflowEdgeKind;
|
|
62
62
|
|
|
63
63
|
/** AST node kinds extracted during analysis. */
|
|
64
|
-
export type ASTNodeKind = '
|
|
64
|
+
export type ASTNodeKind = 'new' | 'string' | 'regex' | 'throw' | 'await';
|
|
65
65
|
|
|
66
66
|
/** Coarse role classifications for symbols based on connectivity. */
|
|
67
67
|
export type CoreRole = 'entry' | 'core' | 'utility' | 'adapter' | 'dead' | 'test-only' | 'leaf';
|
|
@@ -90,7 +90,25 @@ export type LanguageId =
|
|
|
90
90
|
| 'kotlin'
|
|
91
91
|
| 'swift'
|
|
92
92
|
| 'scala'
|
|
93
|
-
| 'bash'
|
|
93
|
+
| 'bash'
|
|
94
|
+
| 'elixir'
|
|
95
|
+
| 'lua'
|
|
96
|
+
| 'dart'
|
|
97
|
+
| 'zig'
|
|
98
|
+
| 'haskell'
|
|
99
|
+
| 'ocaml'
|
|
100
|
+
| 'ocaml-interface'
|
|
101
|
+
| 'fsharp'
|
|
102
|
+
| 'gleam'
|
|
103
|
+
| 'clojure'
|
|
104
|
+
| 'julia'
|
|
105
|
+
| 'r'
|
|
106
|
+
| 'erlang'
|
|
107
|
+
| 'solidity'
|
|
108
|
+
| 'objc'
|
|
109
|
+
| 'cuda'
|
|
110
|
+
| 'groovy'
|
|
111
|
+
| 'verilog';
|
|
94
112
|
|
|
95
113
|
/** Engine mode selector. */
|
|
96
114
|
export type EngineMode = 'native' | 'wasm' | 'auto';
|
|
@@ -377,6 +395,7 @@ export interface SubDeclaration {
|
|
|
377
395
|
line: number;
|
|
378
396
|
endLine?: number;
|
|
379
397
|
visibility?: 'public' | 'private' | 'protected';
|
|
398
|
+
decorators?: string[];
|
|
380
399
|
}
|
|
381
400
|
|
|
382
401
|
/** Complexity metrics attached to a definition post-analysis. */
|
|
@@ -1822,8 +1841,42 @@ export interface NativeAddon {
|
|
|
1822
1841
|
): Array<{ fromFile: string; importSource: string; resolvedPath: string }>;
|
|
1823
1842
|
computeConfidence(callerFile: string, targetFile: string, importedFrom: string | null): number;
|
|
1824
1843
|
detectCycles(edges: Array<{ source: string; target: string }>): string[][];
|
|
1844
|
+
bfsTraversal(
|
|
1845
|
+
edges: Array<{ source: string; target: string }>,
|
|
1846
|
+
startIds: string[],
|
|
1847
|
+
maxDepth?: number | null,
|
|
1848
|
+
direction?: string | null,
|
|
1849
|
+
): Array<{ node: string; depth: number }>;
|
|
1850
|
+
shortestPath(
|
|
1851
|
+
edges: Array<{ source: string; target: string }>,
|
|
1852
|
+
fromId: string,
|
|
1853
|
+
toId: string,
|
|
1854
|
+
): string[];
|
|
1855
|
+
fanInOut(
|
|
1856
|
+
edges: Array<{ source: string; target: string }>,
|
|
1857
|
+
): Array<{ node: string; fanIn: number; fanOut: number }>;
|
|
1858
|
+
louvainCommunities(
|
|
1859
|
+
edges: Array<{ source: string; target: string }>,
|
|
1860
|
+
nodeIds: string[],
|
|
1861
|
+
resolution?: number | null,
|
|
1862
|
+
randomSeed?: number | null,
|
|
1863
|
+
): {
|
|
1864
|
+
assignments: Array<{ node: string; community: number }>;
|
|
1865
|
+
modularity: number;
|
|
1866
|
+
};
|
|
1825
1867
|
buildCallEdges(files: unknown[], nodes: unknown[], builtinReceivers: string[]): unknown[];
|
|
1868
|
+
buildImportEdges?(
|
|
1869
|
+
files: unknown[],
|
|
1870
|
+
resolvedImports: unknown[],
|
|
1871
|
+
fileReexports: unknown[],
|
|
1872
|
+
fileNodeIds: unknown[],
|
|
1873
|
+
barrelFiles: string[],
|
|
1874
|
+
rootDir: string,
|
|
1875
|
+
): unknown[];
|
|
1826
1876
|
engineVersion(): string;
|
|
1877
|
+
analyzeComplexity(source: string, filePath: string): NativeFunctionComplexityResult[];
|
|
1878
|
+
buildCfgAnalysis(source: string, filePath: string): NativeFunctionCfgResult[];
|
|
1879
|
+
extractDataflowAnalysis(source: string, filePath: string): DataflowResult | null;
|
|
1827
1880
|
ParseTreeCache: new () => NativeParseTreeCache;
|
|
1828
1881
|
NativeDatabase: {
|
|
1829
1882
|
openReadWrite(dbPath: string): NativeDatabase;
|
|
@@ -1831,6 +1884,40 @@ export interface NativeAddon {
|
|
|
1831
1884
|
};
|
|
1832
1885
|
}
|
|
1833
1886
|
|
|
1887
|
+
/** Per-function complexity result from native standalone analysis (napi output shape). */
|
|
1888
|
+
export interface NativeFunctionComplexityResult {
|
|
1889
|
+
name: string;
|
|
1890
|
+
line: number;
|
|
1891
|
+
endLine: number | null;
|
|
1892
|
+
complexity: {
|
|
1893
|
+
cognitive: number;
|
|
1894
|
+
cyclomatic: number;
|
|
1895
|
+
maxNesting: number;
|
|
1896
|
+
halstead?: {
|
|
1897
|
+
n1: number;
|
|
1898
|
+
n2: number;
|
|
1899
|
+
bigN1: number;
|
|
1900
|
+
bigN2: number;
|
|
1901
|
+
vocabulary: number;
|
|
1902
|
+
length: number;
|
|
1903
|
+
volume: number;
|
|
1904
|
+
difficulty: number;
|
|
1905
|
+
effort: number;
|
|
1906
|
+
bugs: number;
|
|
1907
|
+
};
|
|
1908
|
+
loc?: { loc: number; sloc: number; commentLines: number };
|
|
1909
|
+
maintainabilityIndex?: number | null;
|
|
1910
|
+
};
|
|
1911
|
+
}
|
|
1912
|
+
|
|
1913
|
+
/** Per-function CFG result from native standalone analysis. */
|
|
1914
|
+
export interface NativeFunctionCfgResult {
|
|
1915
|
+
name: string;
|
|
1916
|
+
line: number;
|
|
1917
|
+
endLine: number | null;
|
|
1918
|
+
cfg: { blocks: CfgBlock[]; edges: CfgEdge[] };
|
|
1919
|
+
}
|
|
1920
|
+
|
|
1834
1921
|
/** Native parse-tree cache instance. */
|
|
1835
1922
|
export interface NativeParseTreeCache {
|
|
1836
1923
|
get(filePath: string): unknown;
|
|
@@ -2260,6 +2347,32 @@ export interface NativeDatabase {
|
|
|
2260
2347
|
fanOut: number;
|
|
2261
2348
|
}>;
|
|
2262
2349
|
|
|
2350
|
+
// ── Batched build-glue queries (6.18) ────────────────────────────────
|
|
2351
|
+
/** All file_hashes rows + table existence + max mtime in one call. */
|
|
2352
|
+
getFileHashData?(): {
|
|
2353
|
+
exists: boolean;
|
|
2354
|
+
rows: Array<{ file: string; hash: string; mtime: number; size: number }>;
|
|
2355
|
+
maxMtime: number;
|
|
2356
|
+
};
|
|
2357
|
+
/** CFG and dataflow table counts (-1 = table missing). */
|
|
2358
|
+
checkPendingAnalysis?(): { cfgCount: number; dataflowCount: number };
|
|
2359
|
+
/** Batch upsert file_hashes for metadata healing. */
|
|
2360
|
+
healFileMetadata?(
|
|
2361
|
+
entries: Array<{ file: string; hash: string; mtime: number; size: number }>,
|
|
2362
|
+
): number;
|
|
2363
|
+
/** Find files with edges pointing to changed files. */
|
|
2364
|
+
findReverseDependencies?(changedFiles: string[]): string[];
|
|
2365
|
+
/** Node + edge counts in one call. */
|
|
2366
|
+
getFinalizeCounts?(): { nodeCount: number; edgeCount: number };
|
|
2367
|
+
/** Orphaned embeddings, stale embeddings, unused exports in one call. */
|
|
2368
|
+
runAdvisoryChecks?(hasEmbeddings: boolean): {
|
|
2369
|
+
orphanedEmbeddings: number;
|
|
2370
|
+
embedBuiltAt: string | null;
|
|
2371
|
+
unusedExports: number;
|
|
2372
|
+
};
|
|
2373
|
+
/** File_hashes count + all file paths in one call. */
|
|
2374
|
+
getCollectFilesData?(): { count: number; files: string[] };
|
|
2375
|
+
|
|
2263
2376
|
// ── Generic query execution & version validation (6.16) ─────────────
|
|
2264
2377
|
/** Execute a parameterized SELECT and return all rows as objects. */
|
|
2265
2378
|
queryAll(sql: string, params: Array<string | number | null>): Record<string, unknown>[];
|
|
@@ -2267,6 +2380,14 @@ export interface NativeDatabase {
|
|
|
2267
2380
|
queryGet(sql: string, params: Array<string | number | null>): Record<string, unknown> | null;
|
|
2268
2381
|
/** Validate DB codegraph_version matches expected. Warns on mismatch. */
|
|
2269
2382
|
validateSchemaVersion(expectedVersion: string): boolean;
|
|
2383
|
+
|
|
2384
|
+
// ── Full Rust build orchestration (#695) ─────────────────────────────
|
|
2385
|
+
/**
|
|
2386
|
+
* Run the entire build pipeline in Rust with zero napi boundary crossings.
|
|
2387
|
+
* Returns a JSON string with timing and build result data.
|
|
2388
|
+
* When unavailable, the JS pipeline (runPipelineStages) is used as fallback.
|
|
2389
|
+
*/
|
|
2390
|
+
buildGraph?(rootDir: string, configJson: string, aliasesJson: string, optsJson: string): string;
|
|
2270
2391
|
}
|
|
2271
2392
|
|
|
2272
2393
|
// ════════════════════════════════════════════════════════════════════════
|