@optave/codegraph 3.11.0 → 3.11.2
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 +38 -31
- package/dist/ast-analysis/engine.d.ts.map +1 -1
- package/dist/ast-analysis/engine.js +91 -60
- package/dist/ast-analysis/engine.js.map +1 -1
- package/dist/ast-analysis/visitor-utils.d.ts +3 -0
- package/dist/ast-analysis/visitor-utils.d.ts.map +1 -1
- package/dist/ast-analysis/visitor-utils.js +83 -49
- package/dist/ast-analysis/visitor-utils.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 +78 -62
- package/dist/ast-analysis/visitors/ast-store-visitor.js.map +1 -1
- package/dist/ast-analysis/visitors/dataflow-visitor.d.ts.map +1 -1
- package/dist/ast-analysis/visitors/dataflow-visitor.js +61 -42
- package/dist/ast-analysis/visitors/dataflow-visitor.js.map +1 -1
- package/dist/cli/commands/embed.d.ts.map +1 -1
- package/dist/cli/commands/embed.js +49 -4
- package/dist/cli/commands/embed.js.map +1 -1
- package/dist/domain/analysis/dependencies.d.ts.map +1 -1
- package/dist/domain/analysis/dependencies.js +106 -80
- package/dist/domain/analysis/dependencies.js.map +1 -1
- package/dist/domain/analysis/fn-impact.d.ts.map +1 -1
- package/dist/domain/analysis/fn-impact.js +77 -52
- package/dist/domain/analysis/fn-impact.js.map +1 -1
- package/dist/domain/analysis/module-map.d.ts.map +1 -1
- package/dist/domain/analysis/module-map.js +132 -121
- package/dist/domain/analysis/module-map.js.map +1 -1
- package/dist/domain/graph/builder/call-resolver.d.ts +71 -0
- package/dist/domain/graph/builder/call-resolver.d.ts.map +1 -0
- package/dist/domain/graph/builder/call-resolver.js +130 -0
- package/dist/domain/graph/builder/call-resolver.js.map +1 -0
- package/dist/domain/graph/builder/helpers.d.ts +4 -4
- package/dist/domain/graph/builder/helpers.d.ts.map +1 -1
- package/dist/domain/graph/builder/helpers.js +47 -33
- package/dist/domain/graph/builder/helpers.js.map +1 -1
- package/dist/domain/graph/builder/incremental.d.ts +6 -0
- package/dist/domain/graph/builder/incremental.d.ts.map +1 -1
- package/dist/domain/graph/builder/incremental.js +214 -127
- package/dist/domain/graph/builder/incremental.js.map +1 -1
- package/dist/domain/graph/builder/pipeline.d.ts +1 -44
- package/dist/domain/graph/builder/pipeline.d.ts.map +1 -1
- package/dist/domain/graph/builder/pipeline.js +10 -766
- 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 +151 -192
- package/dist/domain/graph/builder/stages/build-edges.js.map +1 -1
- package/dist/domain/graph/builder/stages/build-structure.d.ts.map +1 -1
- package/dist/domain/graph/builder/stages/build-structure.js +82 -65
- package/dist/domain/graph/builder/stages/build-structure.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 +84 -56
- 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 +60 -51
- package/dist/domain/graph/builder/stages/finalize.js.map +1 -1
- package/dist/domain/graph/builder/stages/insert-nodes.d.ts +8 -6
- package/dist/domain/graph/builder/stages/insert-nodes.d.ts.map +1 -1
- package/dist/domain/graph/builder/stages/insert-nodes.js +107 -122
- package/dist/domain/graph/builder/stages/insert-nodes.js.map +1 -1
- package/dist/domain/graph/builder/stages/native-db-lifecycle.d.ts +14 -0
- package/dist/domain/graph/builder/stages/native-db-lifecycle.d.ts.map +1 -0
- package/dist/domain/graph/builder/stages/native-db-lifecycle.js +77 -0
- package/dist/domain/graph/builder/stages/native-db-lifecycle.js.map +1 -0
- package/dist/domain/graph/builder/stages/native-orchestrator.d.ts +62 -0
- package/dist/domain/graph/builder/stages/native-orchestrator.d.ts.map +1 -0
- package/dist/domain/graph/builder/stages/native-orchestrator.js +747 -0
- package/dist/domain/graph/builder/stages/native-orchestrator.js.map +1 -0
- package/dist/domain/graph/cycles.d.ts +6 -4
- package/dist/domain/graph/cycles.d.ts.map +1 -1
- package/dist/domain/graph/cycles.js +50 -55
- package/dist/domain/graph/cycles.js.map +1 -1
- package/dist/domain/graph/journal.d.ts.map +1 -1
- package/dist/domain/graph/journal.js +89 -70
- package/dist/domain/graph/journal.js.map +1 -1
- package/dist/domain/graph/watcher.d.ts.map +1 -1
- package/dist/domain/graph/watcher.js +10 -4
- package/dist/domain/graph/watcher.js.map +1 -1
- package/dist/domain/parser.d.ts +12 -23
- package/dist/domain/parser.d.ts.map +1 -1
- package/dist/domain/parser.js +126 -79
- package/dist/domain/parser.js.map +1 -1
- package/dist/domain/search/generator.d.ts +3 -1
- package/dist/domain/search/generator.d.ts.map +1 -1
- package/dist/domain/search/generator.js +68 -45
- package/dist/domain/search/generator.js.map +1 -1
- package/dist/domain/search/models.d.ts +2 -0
- package/dist/domain/search/models.d.ts.map +1 -1
- package/dist/domain/search/models.js +37 -3
- package/dist/domain/search/models.js.map +1 -1
- package/dist/domain/search/search/hybrid.d.ts.map +1 -1
- package/dist/domain/search/search/hybrid.js +49 -40
- package/dist/domain/search/search/hybrid.js.map +1 -1
- package/dist/domain/search/search/semantic.d.ts.map +1 -1
- package/dist/domain/search/search/semantic.js +69 -49
- package/dist/domain/search/search/semantic.js.map +1 -1
- package/dist/domain/wasm-worker-entry.js +201 -136
- package/dist/domain/wasm-worker-entry.js.map +1 -1
- package/dist/extractors/elixir.js +95 -71
- package/dist/extractors/elixir.js.map +1 -1
- package/dist/extractors/gleam.d.ts.map +1 -1
- package/dist/extractors/gleam.js +23 -31
- package/dist/extractors/gleam.js.map +1 -1
- package/dist/extractors/helpers.d.ts +79 -1
- package/dist/extractors/helpers.d.ts.map +1 -1
- package/dist/extractors/helpers.js +137 -0
- package/dist/extractors/helpers.js.map +1 -1
- package/dist/extractors/java.d.ts.map +1 -1
- package/dist/extractors/java.js +37 -49
- package/dist/extractors/java.js.map +1 -1
- package/dist/extractors/javascript.d.ts.map +1 -1
- package/dist/extractors/javascript.js +44 -44
- package/dist/extractors/javascript.js.map +1 -1
- package/dist/extractors/julia.js +27 -34
- package/dist/extractors/julia.js.map +1 -1
- package/dist/extractors/r.d.ts.map +1 -1
- package/dist/extractors/r.js +33 -58
- package/dist/extractors/r.js.map +1 -1
- package/dist/extractors/solidity.d.ts.map +1 -1
- package/dist/extractors/solidity.js +38 -61
- package/dist/extractors/solidity.js.map +1 -1
- package/dist/features/boundaries.d.ts.map +1 -1
- package/dist/features/boundaries.js +49 -39
- package/dist/features/boundaries.js.map +1 -1
- package/dist/features/cfg.d.ts.map +1 -1
- package/dist/features/cfg.js +90 -63
- package/dist/features/cfg.js.map +1 -1
- package/dist/features/check.d.ts.map +1 -1
- package/dist/features/check.js +43 -34
- package/dist/features/check.js.map +1 -1
- package/dist/features/cochange.d.ts.map +1 -1
- package/dist/features/cochange.js +68 -56
- package/dist/features/cochange.js.map +1 -1
- package/dist/features/complexity.d.ts.map +1 -1
- package/dist/features/complexity.js +105 -75
- package/dist/features/complexity.js.map +1 -1
- package/dist/features/dataflow.d.ts.map +1 -1
- package/dist/features/dataflow.js +37 -29
- package/dist/features/dataflow.js.map +1 -1
- package/dist/features/flow.d.ts.map +1 -1
- package/dist/features/flow.js +31 -22
- package/dist/features/flow.js.map +1 -1
- package/dist/features/graph-enrichment.d.ts.map +1 -1
- package/dist/features/graph-enrichment.js +77 -70
- package/dist/features/graph-enrichment.js.map +1 -1
- package/dist/features/owners.d.ts +17 -26
- package/dist/features/owners.d.ts.map +1 -1
- package/dist/features/owners.js +120 -109
- package/dist/features/owners.js.map +1 -1
- package/dist/features/sequence.d.ts.map +1 -1
- package/dist/features/sequence.js +59 -54
- package/dist/features/sequence.js.map +1 -1
- package/dist/features/structure-query.d.ts.map +1 -1
- package/dist/features/structure-query.js +60 -60
- package/dist/features/structure-query.js.map +1 -1
- package/dist/features/structure.d.ts.map +1 -1
- package/dist/features/structure.js +149 -52
- package/dist/features/structure.js.map +1 -1
- package/dist/graph/algorithms/leiden/optimiser.d.ts.map +1 -1
- package/dist/graph/algorithms/leiden/optimiser.js +100 -69
- package/dist/graph/algorithms/leiden/optimiser.js.map +1 -1
- package/dist/graph/classifiers/roles.d.ts.map +1 -1
- package/dist/graph/classifiers/roles.js +63 -59
- package/dist/graph/classifiers/roles.js.map +1 -1
- package/dist/infrastructure/config.d.ts +1 -1
- package/dist/infrastructure/config.d.ts.map +1 -1
- package/dist/infrastructure/config.js +1 -1
- package/dist/infrastructure/config.js.map +1 -1
- package/dist/presentation/cfg.d.ts.map +1 -1
- package/dist/presentation/cfg.js +44 -29
- package/dist/presentation/cfg.js.map +1 -1
- package/dist/presentation/flow.d.ts.map +1 -1
- package/dist/presentation/flow.js +58 -38
- package/dist/presentation/flow.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/grammars/tree-sitter-erlang.wasm +0 -0
- package/package.json +9 -9
- package/src/ast-analysis/engine.ts +145 -61
- package/src/ast-analysis/visitor-utils.ts +86 -46
- package/src/ast-analysis/visitors/ast-store-visitor.ts +104 -69
- package/src/ast-analysis/visitors/dataflow-visitor.ts +86 -47
- package/src/cli/commands/embed.ts +54 -4
- package/src/domain/analysis/dependencies.ts +166 -85
- package/src/domain/analysis/fn-impact.ts +120 -50
- package/src/domain/analysis/module-map.ts +175 -140
- package/src/domain/graph/builder/call-resolver.ts +181 -0
- package/src/domain/graph/builder/helpers.ts +85 -76
- package/src/domain/graph/builder/incremental.ts +321 -152
- package/src/domain/graph/builder/pipeline.ts +19 -957
- package/src/domain/graph/builder/stages/build-edges.ts +229 -275
- package/src/domain/graph/builder/stages/build-structure.ts +115 -82
- package/src/domain/graph/builder/stages/detect-changes.ts +107 -64
- package/src/domain/graph/builder/stages/finalize.ts +72 -70
- package/src/domain/graph/builder/stages/insert-nodes.ts +154 -120
- package/src/domain/graph/builder/stages/native-db-lifecycle.ts +74 -0
- package/src/domain/graph/builder/stages/native-orchestrator.ts +942 -0
- package/src/domain/graph/cycles.ts +51 -49
- package/src/domain/graph/journal.ts +84 -69
- package/src/domain/graph/watcher.ts +12 -4
- package/src/domain/parser.ts +143 -66
- package/src/domain/search/generator.ts +132 -74
- package/src/domain/search/models.ts +39 -3
- package/src/domain/search/search/hybrid.ts +53 -42
- package/src/domain/search/search/semantic.ts +105 -65
- package/src/domain/wasm-worker-entry.ts +235 -152
- package/src/extractors/elixir.ts +91 -64
- package/src/extractors/gleam.ts +33 -37
- package/src/extractors/helpers.ts +205 -1
- package/src/extractors/java.ts +42 -45
- package/src/extractors/javascript.ts +44 -43
- package/src/extractors/julia.ts +28 -35
- package/src/extractors/r.ts +38 -56
- package/src/extractors/solidity.ts +43 -71
- package/src/features/boundaries.ts +64 -46
- package/src/features/cfg.ts +145 -74
- package/src/features/check.ts +60 -43
- package/src/features/cochange.ts +95 -72
- package/src/features/complexity.ts +134 -79
- package/src/features/dataflow.ts +57 -34
- package/src/features/flow.ts +48 -24
- package/src/features/graph-enrichment.ts +105 -70
- package/src/features/owners.ts +186 -146
- package/src/features/sequence.ts +99 -69
- package/src/features/structure-query.ts +94 -79
- package/src/features/structure.ts +199 -79
- package/src/graph/algorithms/leiden/optimiser.ts +142 -87
- package/src/graph/classifiers/roles.ts +64 -54
- package/src/infrastructure/config.ts +1 -1
- package/src/presentation/cfg.ts +48 -32
- package/src/presentation/flow.ts +100 -52
- package/src/types.ts +1 -1
package/README.md
CHANGED
|
@@ -76,24 +76,25 @@ No config files, no Docker, no JVM, no API keys, no accounts. Point your agent a
|
|
|
76
76
|
|
|
77
77
|
### Feature comparison
|
|
78
78
|
|
|
79
|
-
<sub>Comparison last verified:
|
|
79
|
+
<sub>Comparison last verified: May 2026. Claims verified against each repo's README/docs. Full analysis: <a href="generated/competitive/COMPETITIVE_ANALYSIS.md">COMPETITIVE_ANALYSIS.md</a></sub>
|
|
80
80
|
|
|
81
|
-
| Capability | codegraph | [
|
|
81
|
+
| Capability | codegraph (this repo) | [code-review-graph](https://github.com/tirth8205/code-review-graph) | [narsil-mcp](https://github.com/postrv/narsil-mcp) | [codegraph (other)¹](https://github.com/colbymchenry/codegraph) | [axon](https://github.com/harshkedia177/axon) | [GitNexus](https://github.com/abhigyanpatwari/GitNexus) |
|
|
82
82
|
|---|:---:|:---:|:---:|:---:|:---:|:---:|
|
|
83
|
-
|
|
|
84
|
-
|
|
|
85
|
-
|
|
|
86
|
-
|
|
|
87
|
-
|
|
|
88
|
-
|
|
|
89
|
-
|
|
|
83
|
+
| GitHub stars |  |  |  |  |  |  |
|
|
84
|
+
| Languages | **34** | ~30 | **32** | ~20 | 3 | 13 |
|
|
85
|
+
| MCP server | **Yes** | **Yes** | **Yes** | **Yes** | **Yes** | **Yes** |
|
|
86
|
+
| Dataflow + CFG + AST querying | **Yes** | AST only | **Yes**² | — | — | — |
|
|
87
|
+
| Hybrid search (BM25 + semantic) | **Yes** | **Yes** | — | Keyword only | **Yes** | **Yes** |
|
|
88
|
+
| Git-aware (diff impact, co-change, branch diff) | **All 3** | Diff only | — | — | **All 3** | — |
|
|
89
|
+
| Dead code / role classification | **Yes** | **Yes** | **Yes** | — | **Yes** | — |
|
|
90
|
+
| Incremental rebuilds | **O(changed)** | **O(changed)** | O(n) | O(n)³ | **Yes**⁴ | O(n)⁵ |
|
|
90
91
|
| Architecture rules + CI gate | **Yes** | — | — | — | — | — |
|
|
91
|
-
| Security scanning (SAST / vuln detection) | Intentionally out of scope
|
|
92
|
-
| Zero config, `npm install` | **Yes** | — | **Yes** |
|
|
93
|
-
| Graph export (GraphML / Neo4j / DOT) | **Yes** |
|
|
94
|
-
| Open source + commercial use | **Yes** (Apache-2.0) | **Yes** (
|
|
92
|
+
| Security scanning (SAST / vuln detection) | Intentionally out of scope⁶ | — | **Yes** | — | — | — |
|
|
93
|
+
| Zero config, `npm install` | **Yes** | — (pip) | **Yes** | **Yes** | **Yes** | **Yes** |
|
|
94
|
+
| Graph export (GraphML / Neo4j / DOT) | **Yes** | — | — | — | — | — |
|
|
95
|
+
| Open source + commercial use | **Yes** (Apache-2.0) | **Yes** (MIT) | **Yes** (MIT/Apache-2.0) | **Yes** (MIT) | Source-available⁷ | Non-commercial⁸ |
|
|
95
96
|
|
|
96
|
-
<sup>¹ narsil-mcp added CFG and dataflow in recent versions.
|
|
97
|
+
<sup>¹ colbymchenry/codegraph is an unrelated tool that shares the name. It focuses on reducing AI agent token consumption by pre-indexing code structure for fast context retrieval — not on structural analysis, CI gates, or complexity metrics. ² narsil-mcp added CFG and dataflow in recent versions. ³ colbymchenry/codegraph uses OS file watchers (chokidar) for auto-sync — rebuild triggers on file change but re-parses from scratch per file, not O(changed) hashing. ⁴ axon caches file-level parse results; the rebuild strategy is consistent with file-level incremental behaviour but has not been independently benchmarked for O(changed) complexity. ⁵ GitNexus skips re-index if the git commit hasn't changed, but re-processes the entire repo when it does — no per-file incremental parsing. ⁶ Codegraph focuses on structural understanding, not vulnerability detection — use dedicated SAST tools (Semgrep, CodeQL, Snyk) for that. ⁷ axon claims MIT in pyproject.toml but has no LICENSE file in the repo. ⁸ GitNexus uses the PolyForm Noncommercial 1.0.0 license.</sup>
|
|
97
98
|
|
|
98
99
|
### What makes codegraph different
|
|
99
100
|
|
|
@@ -398,8 +399,8 @@ codegraph cycles --functions # Function-level cycles
|
|
|
398
399
|
Local embeddings for every function, method, and class — search by natural language. Everything runs locally using [@huggingface/transformers](https://huggingface.co/docs/transformers.js) — no API keys needed.
|
|
399
400
|
|
|
400
401
|
```bash
|
|
401
|
-
codegraph embed # Build embeddings (default: nomic
|
|
402
|
-
codegraph embed --model nomic # Use a different model
|
|
402
|
+
codegraph embed # Build embeddings (default: nomic)
|
|
403
|
+
codegraph embed --model nomic-v1.5 # Use a different model
|
|
403
404
|
codegraph search "handle authentication"
|
|
404
405
|
codegraph search "parse config" --min-score 0.4 -n 10
|
|
405
406
|
codegraph search "parseConfig" --mode keyword # BM25 keyword-only (exact names)
|
|
@@ -423,15 +424,21 @@ A single trailing semicolon is ignored (falls back to single-query mode). The `-
|
|
|
423
424
|
|
|
424
425
|
#### Available Models
|
|
425
426
|
|
|
427
|
+
Per-model retrieval quality (Hit@N) and timing are measured on every release — see [EMBEDDING-BENCHMARKS.md](generated/benchmarks/EMBEDDING-BENCHMARKS.md).
|
|
428
|
+
|
|
426
429
|
| Flag | Model | Dimensions | Size | License | Notes |
|
|
427
430
|
|---|---|---|---|---|---|
|
|
428
431
|
| `minilm` | all-MiniLM-L6-v2 | 384 | ~23 MB | Apache-2.0 | Fastest, good for quick iteration |
|
|
429
432
|
| `jina-small` | jina-embeddings-v2-small-en | 512 | ~33 MB | Apache-2.0 | Better quality, still small |
|
|
430
433
|
| `jina-base` | jina-embeddings-v2-base-en | 768 | ~137 MB | Apache-2.0 | High quality, 8192 token context |
|
|
431
434
|
| `jina-code` | jina-embeddings-v2-base-code | 768 | ~137 MB | Apache-2.0 | Best for code search, trained on code+text |
|
|
432
|
-
| `nomic` | nomic-embed-text-v1 | 768 | ~137 MB | Apache-2.0 | Good quality, 8192 context |
|
|
433
|
-
| `nomic-v1.5`
|
|
435
|
+
| `nomic` (default) | nomic-embed-text-v1 | 768 | ~137 MB | Apache-2.0 | Good quality, 8192 context |
|
|
436
|
+
| `nomic-v1.5` | nomic-embed-text-v1.5 | 768 | ~137 MB | Apache-2.0 | Matryoshka MRL training (unused — codegraph stores full 768d); v1 scores higher on our benchmark |
|
|
434
437
|
| `bge-large` | bge-large-en-v1.5 | 1024 | ~335 MB | MIT | Best general retrieval, top MTEB scores |
|
|
438
|
+
| `mxbai-xsmall` | mxbai-embed-xsmall-v1 | 384 | ~50 MB | Apache-2.0 | Tiny + long context (4096) |
|
|
439
|
+
| `mxbai-large` | mxbai-embed-large-v1 | 1024 | ~400 MB | Apache-2.0 | Top MTEB BERT-large |
|
|
440
|
+
| `bge-m3` | bge-m3 | 1024 | ~600 MB | MIT | **Multilingual** (100+ languages), 8192 context |
|
|
441
|
+
| `modernbert` | modernbert-embed-base | 768 | ~150 MB | Apache-2.0 | ModernBERT architecture, 8192 ctx, English |
|
|
435
442
|
|
|
436
443
|
The model used during `embed` is stored in the database, so `search` auto-detects it — no need to pass `--model` when searching.
|
|
437
444
|
|
|
@@ -617,19 +624,19 @@ Codegraph also extracts symbols from common callback patterns: Commander `.comma
|
|
|
617
624
|
|
|
618
625
|
Self-measured on every release via CI ([build benchmarks](generated/benchmarks/BUILD-BENCHMARKS.md) | [embedding benchmarks](generated/benchmarks/EMBEDDING-BENCHMARKS.md) | [query benchmarks](generated/benchmarks/QUERY-BENCHMARKS.md) | [incremental benchmarks](generated/benchmarks/INCREMENTAL-BENCHMARKS.md) | [resolution precision/recall](tests/benchmarks/resolution/)):
|
|
619
626
|
|
|
620
|
-
*Last updated: v3.
|
|
627
|
+
*Last updated: v3.11.1 (2026-05-30)*
|
|
621
628
|
|
|
622
629
|
| Metric | Native | WASM |
|
|
623
630
|
|---|---|---|
|
|
624
|
-
| Build speed | **
|
|
625
|
-
| Query time | **
|
|
626
|
-
| No-op rebuild | **24ms** | **
|
|
627
|
-
| 1-file rebuild | **
|
|
628
|
-
| Query: fn-deps | **2.
|
|
629
|
-
| Query: path | **2.
|
|
630
|
-
| ~50,000 files (est.) | **~
|
|
631
|
-
| Resolution precision | **
|
|
632
|
-
| Resolution recall | **42.
|
|
631
|
+
| Build speed | **3.7 ms/file** | **18.4 ms/file** |
|
|
632
|
+
| Query time | **34ms** | **46ms** |
|
|
633
|
+
| No-op rebuild | **24ms** | **20ms** |
|
|
634
|
+
| 1-file rebuild | **81ms** | **68ms** |
|
|
635
|
+
| Query: fn-deps | **2.5ms** | **2.3ms** |
|
|
636
|
+
| Query: path | **2.5ms** | **2.3ms** |
|
|
637
|
+
| ~50,000 files (est.) | **~185.0s build** | **~920.0s build** |
|
|
638
|
+
| Resolution precision | **89.9%** | — |
|
|
639
|
+
| Resolution recall | **42.3%** | — |
|
|
633
640
|
|
|
634
641
|
Metrics are normalized per file for cross-version comparability. Times above are for a full initial build — incremental rebuilds only re-parse changed files.
|
|
635
642
|
|
|
@@ -646,9 +653,9 @@ Metrics are normalized per file for cross-version comparability. Times above are
|
|
|
646
653
|
| csharp | 100.0% | 52.6% | 10 | 0 | 9 | 19 | — |
|
|
647
654
|
| cuda | 50.0% | 33.3% | 4 | 4 | 8 | 12 | — |
|
|
648
655
|
| dart | 0.0% | 0.0% | 0 | 0 | 18 | 18 | — |
|
|
649
|
-
| elixir | 0.0% | 0.0% | 0 | 0 |
|
|
656
|
+
| elixir | 0.0% | 0.0% | 0 | 0 | 21 | 21 | — |
|
|
650
657
|
| erlang | 100.0% | 100.0% | 12 | 0 | 0 | 12 | — |
|
|
651
|
-
| fsharp | 0.0% | 0.0% | 0 |
|
|
658
|
+
| fsharp | 0.0% | 0.0% | 0 | 11 | 12 | 12 | — |
|
|
652
659
|
| gleam | 100.0% | 26.7% | 4 | 0 | 11 | 15 | — |
|
|
653
660
|
| go | 100.0% | 69.2% | 9 | 0 | 4 | 13 | 13/14 |
|
|
654
661
|
| groovy | 100.0% | 7.7% | 1 | 0 | 12 | 13 | — |
|
|
@@ -676,7 +683,7 @@ Metrics are normalized per file for cross-version comparability. Times above are
|
|
|
676
683
|
|
|
677
684
|
| Mode | Resolved | Expected | Recall |
|
|
678
685
|
|------|--------:|---------:|-------:|
|
|
679
|
-
| module-function | 16 |
|
|
686
|
+
| module-function | 16 | 112 | 14.3% |
|
|
680
687
|
| receiver-typed | 17 | 104 | 16.3% |
|
|
681
688
|
| static | 66 | 93 | 71.0% |
|
|
682
689
|
| same-file | 48 | 86 | 55.8% |
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/ast-analysis/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AASH,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EAEd,qBAAqB,EAKrB,UAAU,EACV,eAAe,EAQhB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/ast-analysis/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AASH,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EAEd,qBAAqB,EAKrB,UAAU,EACV,eAAe,EAQhB,MAAM,aAAa,CAAC;AAq1BrB,wBAAsB,WAAW,CAC/B,EAAE,EAAE,qBAAqB,EACzB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,EACzC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,YAAY,EAClB,UAAU,CAAC,EAAE,UAAU,GACtB,OAAO,CAAC,cAAc,CAAC,CA4CzB"}
|
|
@@ -537,6 +537,92 @@ function allNativeDataComplete(fileSymbols, opts) {
|
|
|
537
537
|
return fileSymbols.size > 0;
|
|
538
538
|
}
|
|
539
539
|
// ─── Public API ──────────────────────────────────────────────────────────
|
|
540
|
+
/** Distribute the per-file walk time equally among the visitors that ran. */
|
|
541
|
+
function accumulateWalkTime(timing, walkMs, astVisitor, complexityVisitor, cfgVisitor, dataflowVisitor) {
|
|
542
|
+
const activeCount = [astVisitor, complexityVisitor, cfgVisitor, dataflowVisitor].filter(Boolean).length;
|
|
543
|
+
if (activeCount === 0)
|
|
544
|
+
return;
|
|
545
|
+
const share = walkMs / activeCount;
|
|
546
|
+
if (astVisitor)
|
|
547
|
+
timing.astMs += share;
|
|
548
|
+
if (complexityVisitor)
|
|
549
|
+
timing.complexityMs += share;
|
|
550
|
+
if (cfgVisitor)
|
|
551
|
+
timing.cfgMs += share;
|
|
552
|
+
if (dataflowVisitor)
|
|
553
|
+
timing.dataflowMs += share;
|
|
554
|
+
}
|
|
555
|
+
/** Apply visitor walk results to the per-file symbols/definitions. */
|
|
556
|
+
function applyVisitorResults(results, symbols, langId, astVisitor, complexityVisitor, cfgVisitor, dataflowVisitor) {
|
|
557
|
+
const defs = symbols.definitions || [];
|
|
558
|
+
if (astVisitor) {
|
|
559
|
+
const astRows = (results['ast-store'] || []);
|
|
560
|
+
if (astRows.length > 0)
|
|
561
|
+
symbols.astNodes = astRows;
|
|
562
|
+
}
|
|
563
|
+
if (complexityVisitor)
|
|
564
|
+
storeComplexityResults(results, defs, langId);
|
|
565
|
+
if (cfgVisitor)
|
|
566
|
+
storeCfgResults(results, defs);
|
|
567
|
+
if (dataflowVisitor)
|
|
568
|
+
symbols.dataflow = results.dataflow;
|
|
569
|
+
}
|
|
570
|
+
/** Process a single file: set up visitors, walk the tree, and apply results. */
|
|
571
|
+
function processFileWalk(db, relPath, symbols, langId, opts, timing) {
|
|
572
|
+
if (!symbols._tree)
|
|
573
|
+
return;
|
|
574
|
+
const { visitors, walkerOpts, astVisitor, complexityVisitor, cfgVisitor, dataflowVisitor } = setupVisitors(db, relPath, symbols, langId, opts);
|
|
575
|
+
if (visitors.length === 0)
|
|
576
|
+
return;
|
|
577
|
+
const walkStart = performance.now();
|
|
578
|
+
const results = walkWithVisitors(symbols._tree.rootNode, visitors, langId, walkerOpts);
|
|
579
|
+
const walkMs = performance.now() - walkStart;
|
|
580
|
+
accumulateWalkTime(timing, walkMs, astVisitor, complexityVisitor, cfgVisitor, dataflowVisitor);
|
|
581
|
+
applyVisitorResults(results, symbols, langId, astVisitor, complexityVisitor, cfgVisitor, dataflowVisitor);
|
|
582
|
+
}
|
|
583
|
+
/**
|
|
584
|
+
* Unified pre-walk: run all applicable visitors in a single DFS per file.
|
|
585
|
+
* Returns the total wall-clock time for diagnostics.
|
|
586
|
+
*/
|
|
587
|
+
function runUnifiedWalkPass(db, fileSymbols, extToLang, opts, timing) {
|
|
588
|
+
const t0walk = performance.now();
|
|
589
|
+
for (const [relPath, symbols] of fileSymbols) {
|
|
590
|
+
if (!symbols._tree)
|
|
591
|
+
continue;
|
|
592
|
+
const ext = path.extname(relPath).toLowerCase();
|
|
593
|
+
const langId = symbols._langId || extToLang.get(ext);
|
|
594
|
+
if (!langId)
|
|
595
|
+
continue;
|
|
596
|
+
processFileWalk(db, relPath, symbols, langId, opts, timing);
|
|
597
|
+
}
|
|
598
|
+
return performance.now() - t0walk;
|
|
599
|
+
}
|
|
600
|
+
/** Try native Rust standalone analysis to fill gaps before WASM fallback. */
|
|
601
|
+
function tryNativeStandaloneAnalysis(fileSymbols, rootDir, opts, extToLang) {
|
|
602
|
+
const native = loadNative();
|
|
603
|
+
if (!native?.analyzeComplexity && !native?.buildCfgAnalysis && !native?.extractDataflowAnalysis) {
|
|
604
|
+
return;
|
|
605
|
+
}
|
|
606
|
+
const t0native = performance.now();
|
|
607
|
+
runNativeAnalysis(native, fileSymbols, rootDir, opts, extToLang);
|
|
608
|
+
debug(`native standalone analysis: ${(performance.now() - t0native).toFixed(1)}ms`);
|
|
609
|
+
}
|
|
610
|
+
/**
|
|
611
|
+
* Fast path: when all files were parsed by the native engine with full analysis,
|
|
612
|
+
* skip WASM re-parse and JS visitor walks entirely and go straight to DB persistence.
|
|
613
|
+
* Returns true if the fast path handled the work.
|
|
614
|
+
*/
|
|
615
|
+
async function runFastPathIfApplicable(db, fileSymbols, rootDir, opts, engineOpts, timing) {
|
|
616
|
+
if (!allNativeDataComplete(fileSymbols, opts))
|
|
617
|
+
return false;
|
|
618
|
+
debug('native full-analysis fast path: all data present, skipping WASM/visitor passes');
|
|
619
|
+
const doComplexity = opts.complexity !== false;
|
|
620
|
+
const doCfg = opts.cfg !== false;
|
|
621
|
+
if (doComplexity && doCfg)
|
|
622
|
+
reconcileCfgCyclomatic(fileSymbols);
|
|
623
|
+
await delegateToBuildFunctions(db, fileSymbols, rootDir, opts, engineOpts, timing);
|
|
624
|
+
return true;
|
|
625
|
+
}
|
|
540
626
|
export async function runAnalyses(db, fileSymbols, rootDir, opts, engineOpts) {
|
|
541
627
|
const timing = { astMs: 0, complexityMs: 0, cfgMs: 0, dataflowMs: 0 };
|
|
542
628
|
const doAst = opts.ast !== false;
|
|
@@ -546,76 +632,21 @@ export async function runAnalyses(db, fileSymbols, rootDir, opts, engineOpts) {
|
|
|
546
632
|
if (!doAst && !doComplexity && !doCfg && !doDataflow)
|
|
547
633
|
return timing;
|
|
548
634
|
const extToLang = buildExtToLangMap();
|
|
549
|
-
|
|
550
|
-
// (parseFilesFull), all data is already present — skip WASM re-parse and JS
|
|
551
|
-
// visitor walks entirely, go straight to DB persistence.
|
|
552
|
-
if (allNativeDataComplete(fileSymbols, opts)) {
|
|
553
|
-
debug('native full-analysis fast path: all data present, skipping WASM/visitor passes');
|
|
554
|
-
if (doComplexity && doCfg)
|
|
555
|
-
reconcileCfgCyclomatic(fileSymbols);
|
|
556
|
-
await delegateToBuildFunctions(db, fileSymbols, rootDir, opts, engineOpts, timing);
|
|
635
|
+
if (await runFastPathIfApplicable(db, fileSymbols, rootDir, opts, engineOpts, timing)) {
|
|
557
636
|
return timing;
|
|
558
637
|
}
|
|
559
638
|
// Native analysis pass: try Rust standalone functions before WASM fallback.
|
|
560
639
|
// This fills in complexity/CFG/dataflow for files that the native parse pipeline
|
|
561
640
|
// missed, avoiding the need to parse with WASM + run JS visitors.
|
|
562
|
-
|
|
563
|
-
if (native?.analyzeComplexity || native?.buildCfgAnalysis || native?.extractDataflowAnalysis) {
|
|
564
|
-
const t0native = performance.now();
|
|
565
|
-
runNativeAnalysis(native, fileSymbols, rootDir, opts, extToLang);
|
|
566
|
-
debug(`native standalone analysis: ${(performance.now() - t0native).toFixed(1)}ms`);
|
|
567
|
-
}
|
|
641
|
+
tryNativeStandaloneAnalysis(fileSymbols, rootDir, opts, extToLang);
|
|
568
642
|
// WASM pre-parse for files that still need it (AST store, or native gaps)
|
|
569
643
|
await ensureWasmTreesIfNeeded(fileSymbols, opts, rootDir);
|
|
570
|
-
// Unified pre-walk: run all applicable visitors in a single DFS per file.
|
|
571
644
|
// Time each file's walk and distribute equally among active visitors
|
|
572
645
|
// so that phase timers (astMs, complexityMs, etc.) reflect real work — not
|
|
573
646
|
// just the DB-write tail in delegateToBuildFunctions.
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
continue;
|
|
578
|
-
const ext = path.extname(relPath).toLowerCase();
|
|
579
|
-
const langId = symbols._langId || extToLang.get(ext);
|
|
580
|
-
if (!langId)
|
|
581
|
-
continue;
|
|
582
|
-
const { visitors, walkerOpts, astVisitor, complexityVisitor, cfgVisitor, dataflowVisitor } = setupVisitors(db, relPath, symbols, langId, opts);
|
|
583
|
-
if (visitors.length === 0)
|
|
584
|
-
continue;
|
|
585
|
-
const walkStart = performance.now();
|
|
586
|
-
const results = walkWithVisitors(symbols._tree.rootNode, visitors, langId, walkerOpts);
|
|
587
|
-
const walkMs = performance.now() - walkStart;
|
|
588
|
-
// Distribute walk time equally among active visitors
|
|
589
|
-
const activeCount = [astVisitor, complexityVisitor, cfgVisitor, dataflowVisitor].filter(Boolean).length;
|
|
590
|
-
if (activeCount > 0) {
|
|
591
|
-
const share = walkMs / activeCount;
|
|
592
|
-
if (astVisitor)
|
|
593
|
-
timing.astMs += share;
|
|
594
|
-
if (complexityVisitor)
|
|
595
|
-
timing.complexityMs += share;
|
|
596
|
-
if (cfgVisitor)
|
|
597
|
-
timing.cfgMs += share;
|
|
598
|
-
if (dataflowVisitor)
|
|
599
|
-
timing.dataflowMs += share;
|
|
600
|
-
}
|
|
601
|
-
const defs = symbols.definitions || [];
|
|
602
|
-
if (astVisitor) {
|
|
603
|
-
const astRows = (results['ast-store'] || []);
|
|
604
|
-
if (astRows.length > 0)
|
|
605
|
-
symbols.astNodes = astRows;
|
|
606
|
-
}
|
|
607
|
-
if (complexityVisitor)
|
|
608
|
-
storeComplexityResults(results, defs, langId);
|
|
609
|
-
if (cfgVisitor)
|
|
610
|
-
storeCfgResults(results, defs);
|
|
611
|
-
if (dataflowVisitor)
|
|
612
|
-
symbols.dataflow = results.dataflow;
|
|
613
|
-
}
|
|
614
|
-
// Total wall-clock time for the unified walk loop, including per-file
|
|
615
|
-
// setupVisitors overhead. Walk time is already distributed into per-phase
|
|
616
|
-
// timers above, so this field overlaps with (astMs + complexityMs + ...).
|
|
617
|
-
// It is kept as a diagnostic cross-check, not an additive bucket.
|
|
618
|
-
timing._unifiedWalkMs = performance.now() - t0walk;
|
|
647
|
+
// _unifiedWalkMs is kept as a diagnostic cross-check (overlaps with the
|
|
648
|
+
// per-phase timers above, not additive).
|
|
649
|
+
timing._unifiedWalkMs = runUnifiedWalkPass(db, fileSymbols, extToLang, opts, timing);
|
|
619
650
|
// Reconcile: apply CFG-derived cyclomatic override for any definitions that have
|
|
620
651
|
// both precomputed complexity and CFG data but whose cyclomatic was never overridden.
|
|
621
652
|
// This closes a parity gap where native extractors provide both fields inline but
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/ast-analysis/engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/ast-analysis/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,6 +44,9 @@ export declare function functionName(fnNode: TreeSitterNode | null, rules: Langu
|
|
|
44
44
|
export declare function extractParams(paramsNode: TreeSitterNode | null, rules: LanguageRules): ParamInfo[];
|
|
45
45
|
/**
|
|
46
46
|
* Extract parameter names from a single parameter node.
|
|
47
|
+
*
|
|
48
|
+
* Uses an iterative worklist to handle nested destructuring (objects, arrays,
|
|
49
|
+
* defaults, rest, wrappers) without mutual recursion through helper functions.
|
|
47
50
|
*/
|
|
48
51
|
export declare function extractParamNames(node: TreeSitterNode | null, rules: LanguageRules): string[];
|
|
49
52
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visitor-utils.d.ts","sourceRoot":"","sources":["../../src/ast-analysis/visitor-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,aAAa;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;CAC1D;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,SAAM,GAAG,MAAM,CAGvD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,EAAE,KAAK,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAqB/F;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,cAAc,GAAG,IAAI,EACjC,KAAK,EAAE,aAAa,GACnB,SAAS,EAAE,CAYb;
|
|
1
|
+
{"version":3,"file":"visitor-utils.d.ts","sourceRoot":"","sources":["../../src/ast-analysis/visitor-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,aAAa;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;CAC1D;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,SAAM,GAAG,MAAM,CAGvD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,EAAE,KAAK,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAqB/F;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,cAAc,GAAG,IAAI,EACjC,KAAK,EAAE,aAAa,GACnB,SAAS,EAAE,CAYb;AA+ED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,EAAE,KAAK,EAAE,aAAa,GAAG,MAAM,EAAE,CA6B7F;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAGvE;AAeD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAe/F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAM9F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,cAAc,GAAG,IAAI,EAC3B,GAAG,EAAE,MAAM,EAAE,EACb,KAAK,EAAE,aAAa,GACnB,IAAI,CASN"}
|
|
@@ -54,75 +54,109 @@ export function extractParams(paramsNode, rules) {
|
|
|
54
54
|
}
|
|
55
55
|
return result;
|
|
56
56
|
}
|
|
57
|
-
/** Extract names from a rest parameter (e.g. `...args`). */
|
|
58
|
-
function extractRestParamNames(node, rules) {
|
|
59
|
-
const nameNode = node.childForFieldName('name');
|
|
60
|
-
if (nameNode)
|
|
61
|
-
return [nameNode.text];
|
|
62
|
-
for (const child of node.namedChildren) {
|
|
63
|
-
if (child.type === rules.paramIdentifier)
|
|
64
|
-
return [child.text];
|
|
65
|
-
}
|
|
66
|
-
return [];
|
|
67
|
-
}
|
|
68
|
-
/** Extract names from an object destructuring pattern (e.g. `{ a, b: c }`). */
|
|
69
|
-
function extractObjectDestructNames(node, rules) {
|
|
70
|
-
const names = [];
|
|
71
|
-
for (const child of node.namedChildren) {
|
|
72
|
-
if (rules.shorthandPropPattern && child.type === rules.shorthandPropPattern) {
|
|
73
|
-
names.push(child.text);
|
|
74
|
-
}
|
|
75
|
-
else if (rules.pairPatternType && child.type === rules.pairPatternType) {
|
|
76
|
-
const value = child.childForFieldName('value');
|
|
77
|
-
if (value)
|
|
78
|
-
names.push(...extractParamNames(value, rules));
|
|
79
|
-
}
|
|
80
|
-
else if (rules.restParamType && child.type === rules.restParamType) {
|
|
81
|
-
names.push(...extractParamNames(child, rules));
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
return names;
|
|
85
|
-
}
|
|
86
|
-
/** Extract names from an array destructuring pattern (e.g. `[a, b]`). */
|
|
87
|
-
function extractArrayDestructNames(node, rules) {
|
|
88
|
-
const names = [];
|
|
89
|
-
for (const child of node.namedChildren) {
|
|
90
|
-
names.push(...extractParamNames(child, rules));
|
|
91
|
-
}
|
|
92
|
-
return names;
|
|
93
|
-
}
|
|
94
57
|
/**
|
|
95
|
-
*
|
|
58
|
+
* Resolve a single parameter node to either a direct list of names (base case)
|
|
59
|
+
* or a list of child nodes that still need processing. Returns `null` if the
|
|
60
|
+
* node yields nothing.
|
|
61
|
+
*
|
|
62
|
+
* This base case keeps destructuring helpers from recursing back into
|
|
63
|
+
* `extractParamNames`, breaking the 3-node mutual recursion cycle between
|
|
64
|
+
* `extractParamNames`, `extractObjectDestructNames`, and `extractArrayDestructNames`.
|
|
96
65
|
*/
|
|
97
|
-
|
|
98
|
-
if (!node)
|
|
99
|
-
return [];
|
|
66
|
+
function resolveParamNode(node, rules) {
|
|
100
67
|
const t = node.type;
|
|
101
68
|
if (rules.extractParamName) {
|
|
102
69
|
const result = rules.extractParamName(node);
|
|
103
70
|
if (result)
|
|
104
|
-
return result;
|
|
71
|
+
return { names: result };
|
|
105
72
|
}
|
|
106
73
|
if (t === rules.paramIdentifier)
|
|
107
|
-
return [node.text];
|
|
74
|
+
return { names: [node.text] };
|
|
108
75
|
if (rules.paramWrapperTypes.has(t)) {
|
|
109
76
|
const pattern = node.childForFieldName('pattern') || node.childForFieldName('name');
|
|
110
|
-
return pattern ?
|
|
77
|
+
return pattern ? { next: [pattern] } : null;
|
|
111
78
|
}
|
|
112
79
|
if (rules.defaultParamType && t === rules.defaultParamType) {
|
|
113
80
|
const left = node.childForFieldName('left') || node.childForFieldName('name');
|
|
114
|
-
return left ?
|
|
81
|
+
return left ? { next: [left] } : null;
|
|
115
82
|
}
|
|
116
83
|
if (rules.restParamType && t === rules.restParamType) {
|
|
117
|
-
|
|
84
|
+
const nameNode = node.childForFieldName('name');
|
|
85
|
+
if (nameNode)
|
|
86
|
+
return { names: [nameNode.text] };
|
|
87
|
+
for (const child of node.namedChildren) {
|
|
88
|
+
if (child.type === rules.paramIdentifier)
|
|
89
|
+
return { names: [child.text] };
|
|
90
|
+
}
|
|
91
|
+
return null;
|
|
118
92
|
}
|
|
119
93
|
if (rules.objectDestructType && t === rules.objectDestructType) {
|
|
120
|
-
return
|
|
94
|
+
return { next: collectObjectDestructChildren(node, rules) };
|
|
121
95
|
}
|
|
122
96
|
if (rules.arrayDestructType && t === rules.arrayDestructType) {
|
|
123
|
-
return
|
|
97
|
+
return { next: [...node.namedChildren] };
|
|
98
|
+
}
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Collect child nodes from an object destructuring pattern that should be
|
|
103
|
+
* processed for further name extraction. Returns nodes (not names) so the
|
|
104
|
+
* caller drives traversal via a worklist instead of recursion.
|
|
105
|
+
*/
|
|
106
|
+
function collectObjectDestructChildren(node, rules) {
|
|
107
|
+
const next = [];
|
|
108
|
+
for (const child of node.namedChildren) {
|
|
109
|
+
if (rules.shorthandPropPattern && child.type === rules.shorthandPropPattern) {
|
|
110
|
+
// Shorthand prop is a direct identifier — handled by the shorthand
|
|
111
|
+
// guard in the `extractParamNames` worklist loop (before `resolveParamNode`).
|
|
112
|
+
next.push(child);
|
|
113
|
+
}
|
|
114
|
+
else if (rules.pairPatternType && child.type === rules.pairPatternType) {
|
|
115
|
+
const value = child.childForFieldName('value');
|
|
116
|
+
if (value)
|
|
117
|
+
next.push(value);
|
|
118
|
+
}
|
|
119
|
+
else if (rules.restParamType && child.type === rules.restParamType) {
|
|
120
|
+
next.push(child);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return next;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Extract parameter names from a single parameter node.
|
|
127
|
+
*
|
|
128
|
+
* Uses an iterative worklist to handle nested destructuring (objects, arrays,
|
|
129
|
+
* defaults, rest, wrappers) without mutual recursion through helper functions.
|
|
130
|
+
*/
|
|
131
|
+
export function extractParamNames(node, rules) {
|
|
132
|
+
if (!node)
|
|
133
|
+
return [];
|
|
134
|
+
const names = [];
|
|
135
|
+
const stack = [node];
|
|
136
|
+
while (stack.length > 0) {
|
|
137
|
+
const current = stack.pop();
|
|
138
|
+
if (!current)
|
|
139
|
+
continue;
|
|
140
|
+
// Shorthand identifier inside an object destructuring is just the node's text.
|
|
141
|
+
if (rules.shorthandPropPattern && current.type === rules.shorthandPropPattern) {
|
|
142
|
+
names.push(current.text);
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
const resolved = resolveParamNode(current, rules);
|
|
146
|
+
if (!resolved)
|
|
147
|
+
continue;
|
|
148
|
+
if (resolved.names)
|
|
149
|
+
names.push(...resolved.names);
|
|
150
|
+
if (resolved.next) {
|
|
151
|
+
// Push in reverse so traversal order matches the previous recursive order.
|
|
152
|
+
for (let i = resolved.next.length - 1; i >= 0; i--) {
|
|
153
|
+
const child = resolved.next[i];
|
|
154
|
+
if (child)
|
|
155
|
+
stack.push(child);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
124
158
|
}
|
|
125
|
-
return
|
|
159
|
+
return names;
|
|
126
160
|
}
|
|
127
161
|
/**
|
|
128
162
|
* Check if a node type is identifier-like for this language.
|