@optave/codegraph 3.4.1 → 3.5.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 +22 -21
- package/dist/ast-analysis/rules/javascript.d.ts.map +1 -1
- package/dist/ast-analysis/rules/javascript.js +1 -0
- 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 +103 -35
- package/dist/ast-analysis/visitors/ast-store-visitor.js.map +1 -1
- package/dist/db/better-sqlite3.d.ts +3 -0
- package/dist/db/better-sqlite3.d.ts.map +1 -0
- package/dist/db/better-sqlite3.js +19 -0
- package/dist/db/better-sqlite3.js.map +1 -0
- package/dist/db/connection.d.ts +13 -2
- package/dist/db/connection.d.ts.map +1 -1
- package/dist/db/connection.js +76 -2
- package/dist/db/connection.js.map +1 -1
- package/dist/db/index.d.ts +2 -2
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +1 -1
- package/dist/db/index.js.map +1 -1
- package/dist/db/migrations.d.ts.map +1 -1
- package/dist/db/migrations.js +2 -0
- package/dist/db/migrations.js.map +1 -1
- package/dist/db/query-builder.d.ts +5 -5
- package/dist/db/query-builder.d.ts.map +1 -1
- package/dist/db/query-builder.js +20 -4
- package/dist/db/query-builder.js.map +1 -1
- package/dist/db/repository/index.d.ts +1 -0
- package/dist/db/repository/index.d.ts.map +1 -1
- package/dist/db/repository/index.js +1 -0
- package/dist/db/repository/index.js.map +1 -1
- package/dist/db/repository/native-repository.d.ts +58 -0
- package/dist/db/repository/native-repository.d.ts.map +1 -0
- package/dist/db/repository/native-repository.js +261 -0
- package/dist/db/repository/native-repository.js.map +1 -0
- package/dist/db/repository/nodes.d.ts +4 -4
- package/dist/db/repository/nodes.d.ts.map +1 -1
- package/dist/db/repository/nodes.js +6 -6
- package/dist/db/repository/nodes.js.map +1 -1
- package/dist/domain/graph/builder/context.d.ts +2 -1
- package/dist/domain/graph/builder/context.d.ts.map +1 -1
- package/dist/domain/graph/builder/context.js +1 -0
- package/dist/domain/graph/builder/context.js.map +1 -1
- package/dist/domain/graph/builder/pipeline.d.ts.map +1 -1
- package/dist/domain/graph/builder/pipeline.js +29 -7
- 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 +103 -15
- 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 +33 -5
- package/dist/domain/graph/builder/stages/build-structure.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 +71 -7
- 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 +36 -14
- 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 +43 -20
- 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 +104 -9
- package/dist/domain/graph/builder/stages/insert-nodes.js.map +1 -1
- package/dist/domain/parser.d.ts.map +1 -1
- package/dist/domain/parser.js +1 -0
- package/dist/domain/parser.js.map +1 -1
- package/dist/extractors/javascript.js +53 -38
- package/dist/extractors/javascript.js.map +1 -1
- package/dist/extractors/rust.js +2 -1
- package/dist/extractors/rust.js.map +1 -1
- package/dist/features/ast.d.ts +14 -1
- package/dist/features/ast.d.ts.map +1 -1
- package/dist/features/ast.js +38 -1
- package/dist/features/ast.js.map +1 -1
- package/dist/features/branch-compare.d.ts.map +1 -1
- package/dist/features/branch-compare.js +3 -1
- package/dist/features/branch-compare.js.map +1 -1
- package/dist/features/snapshot.d.ts.map +1 -1
- package/dist/features/snapshot.js +2 -1
- package/dist/features/snapshot.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +2 -9
- package/dist/mcp/server.js.map +1 -1
- package/dist/types.d.ts +228 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +61 -11
- package/src/ast-analysis/rules/javascript.ts +1 -0
- package/src/ast-analysis/visitors/ast-store-visitor.ts +102 -33
- package/src/db/better-sqlite3.ts +20 -0
- package/src/db/connection.ts +94 -3
- package/src/db/index.ts +3 -1
- package/src/db/migrations.ts +2 -0
- package/src/db/query-builder.ts +30 -5
- package/src/db/repository/index.ts +1 -0
- package/src/db/repository/native-repository.ts +361 -0
- package/src/db/repository/nodes.ts +7 -3
- package/src/domain/graph/builder/context.ts +2 -0
- package/src/domain/graph/builder/pipeline.ts +30 -6
- package/src/domain/graph/builder/stages/build-edges.ts +117 -19
- package/src/domain/graph/builder/stages/build-structure.ts +47 -11
- package/src/domain/graph/builder/stages/collect-files.ts +84 -7
- package/src/domain/graph/builder/stages/detect-changes.ts +39 -21
- package/src/domain/graph/builder/stages/finalize.ts +49 -20
- package/src/domain/graph/builder/stages/insert-nodes.ts +129 -10
- package/src/domain/parser.ts +1 -0
- package/src/extractors/javascript.ts +54 -36
- package/src/extractors/rust.ts +2 -1
- package/src/features/ast.ts +66 -1
- package/src/features/branch-compare.ts +3 -1
- package/src/features/snapshot.ts +2 -1
- package/src/mcp/server.ts +2 -10
- package/src/types.ts +273 -0
package/README.md
CHANGED
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
|
|
11
11
|
<p align="center">
|
|
12
12
|
<a href="https://www.npmjs.com/package/@optave/codegraph"><img src="https://img.shields.io/npm/v/@optave/codegraph?style=flat-square&logo=npm&logoColor=white&label=npm" alt="npm version" /></a>
|
|
13
|
-
<a href="https://github.com/optave/codegraph/blob/main/LICENSE"><img src="https://img.shields.io/github/license/optave/codegraph?style=flat-square&logo=opensourceinitiative&logoColor=white" alt="Apache-2.0 License" /></a>
|
|
14
|
-
<a href="https://github.com/optave/codegraph/actions"><img src="https://img.shields.io/github/actions/workflow/status/optave/codegraph/codegraph-impact.yml?style=flat-square&logo=githubactions&logoColor=white&label=CI" alt="CI" /></a>
|
|
15
|
-
<img src="https://img.shields.io/badge/node-%3E%
|
|
13
|
+
<a href="https://github.com/optave/ops-codegraph-tool/blob/main/LICENSE"><img src="https://img.shields.io/github/license/optave/ops-codegraph-tool?style=flat-square&logo=opensourceinitiative&logoColor=white" alt="Apache-2.0 License" /></a>
|
|
14
|
+
<a href="https://github.com/optave/ops-codegraph-tool/actions"><img src="https://img.shields.io/github/actions/workflow/status/optave/ops-codegraph-tool/codegraph-impact.yml?style=flat-square&logo=githubactions&logoColor=white&label=CI" alt="CI" /></a>
|
|
15
|
+
<img src="https://img.shields.io/badge/node-%3E%3D22.6-339933?style=flat-square&logo=node.js&logoColor=white" alt="Node >= 22.6" />
|
|
16
16
|
</p>
|
|
17
17
|
|
|
18
18
|
<p align="center">
|
|
@@ -156,11 +156,11 @@ codegraph deps src/index.ts # file-level import/export map
|
|
|
156
156
|
Or install from source:
|
|
157
157
|
|
|
158
158
|
```bash
|
|
159
|
-
git clone https://github.com/optave/codegraph.git
|
|
159
|
+
git clone https://github.com/optave/ops-codegraph-tool.git
|
|
160
160
|
cd codegraph && npm install && npm link
|
|
161
161
|
```
|
|
162
162
|
|
|
163
|
-
> **Dev builds:** Pre-release tarballs are attached to [GitHub Releases](https://github.com/optave/codegraph/releases). Install with `npm install -g <path-to-tarball>`. Note that `npm install -g <tarball-url>` does not work because npm cannot resolve optional platform-specific dependencies from a URL — download the `.tgz` first, then install from the local file.
|
|
163
|
+
> **Dev builds:** Pre-release tarballs are attached to [GitHub Releases](https://github.com/optave/ops-codegraph-tool/releases). Install with `npm install -g <path-to-tarball>`. Note that `npm install -g <tarball-url>` does not work because npm cannot resolve optional platform-specific dependencies from a URL — download the `.tgz` first, then install from the local file.
|
|
164
164
|
|
|
165
165
|
---
|
|
166
166
|
|
|
@@ -553,14 +553,14 @@ Self-measured on every release via CI ([build benchmarks](generated/benchmarks/B
|
|
|
553
553
|
|
|
554
554
|
| Metric | Latest |
|
|
555
555
|
|---|---|
|
|
556
|
-
| Build speed (native) | **5.
|
|
557
|
-
| Build speed (WASM) | **
|
|
556
|
+
| Build speed (native) | **5.7 ms/file** |
|
|
557
|
+
| Build speed (WASM) | **11.9 ms/file** |
|
|
558
558
|
| Query time | **12ms** |
|
|
559
|
-
| No-op rebuild (native) | **
|
|
560
|
-
| 1-file rebuild (native) | **
|
|
561
|
-
| Query: fn-deps | **1.
|
|
562
|
-
| Query: path | **1.
|
|
563
|
-
| ~50,000 files (est.) | **~
|
|
559
|
+
| No-op rebuild (native) | **14ms** |
|
|
560
|
+
| 1-file rebuild (native) | **316ms** |
|
|
561
|
+
| Query: fn-deps | **1.9ms** |
|
|
562
|
+
| Query: path | **1.9ms** |
|
|
563
|
+
| ~50,000 files (est.) | **~285.0s build** |
|
|
564
564
|
|
|
565
565
|
Metrics are normalized per file for cross-version comparability. Times above are for a full initial build — incremental rebuilds only re-parse changed files.
|
|
566
566
|
|
|
@@ -572,7 +572,7 @@ Only **3 runtime dependencies** — everything else is optional or a devDependen
|
|
|
572
572
|
|
|
573
573
|
| Dependency | What it does | | |
|
|
574
574
|
|---|---|---|---|
|
|
575
|
-
| [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) |
|
|
575
|
+
| [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) | SQLite driver (WASM engine; lazy-loaded, not used for native-engine reads) |  |  |
|
|
576
576
|
| [commander](https://github.com/tj/commander.js) | CLI argument parsing |  |  |
|
|
577
577
|
| [web-tree-sitter](https://github.com/tree-sitter/tree-sitter) | WASM tree-sitter bindings |  |  |
|
|
578
578
|
|
|
@@ -772,20 +772,21 @@ See **[ROADMAP.md](docs/roadmap/ROADMAP.md)** for the full development roadmap a
|
|
|
772
772
|
5. ~~**Architectural Refactoring**~~ — **Complete** (v3.1.5) — unified AST analysis, composable MCP, domain errors, builder pipeline, graph model, qualified names, presentation layer, CLI composability
|
|
773
773
|
6. ~~**Resolution Accuracy**~~ — **Complete** (v3.3.1) — type inference, receiver type tracking, dead role sub-categories, resolution benchmarks, `package.json` exports, monorepo workspace resolution
|
|
774
774
|
7. ~~**TypeScript Migration**~~ — **Complete** (v3.4.0) — all 271 source files migrated from JS to TS, zero `.js` remaining
|
|
775
|
-
8.
|
|
776
|
-
9. **
|
|
777
|
-
10. **
|
|
778
|
-
11. **
|
|
779
|
-
12. **
|
|
780
|
-
13. **
|
|
781
|
-
14. **
|
|
775
|
+
8. ~~**Native Analysis Acceleration**~~ — **Complete** (v3.5.0) — all build phases in Rust/rusqlite, sub-100ms incremental rebuilds, better-sqlite3 lazy-loaded as fallback only
|
|
776
|
+
9. **Expanded Language Support** — 23 new languages in 4 batches (11 → 34)
|
|
777
|
+
10. **Runtime & Extensibility** — event-driven pipeline, plugin system, query caching, pagination
|
|
778
|
+
11. **Quality, Security & Technical Debt** — supply-chain security (SBOM, SLSA), CI coverage gates, timer cleanup, tech debt kill list
|
|
779
|
+
12. **Intelligent Embeddings** — LLM-generated descriptions, enhanced embeddings, module summaries
|
|
780
|
+
13. **Natural Language Queries** — `codegraph ask` command, conversational sessions
|
|
781
|
+
14. **GitHub Integration & CI** — reusable GitHub Action, LLM-enhanced PR review, SARIF output
|
|
782
|
+
15. **Advanced Features** — dead code detection, monorepo support, agentic search
|
|
782
783
|
|
|
783
784
|
## 🤝 Contributing
|
|
784
785
|
|
|
785
786
|
Contributions are welcome! See **[CONTRIBUTING.md](CONTRIBUTING.md)** for the full guide — setup, workflow, commit convention, testing, and architecture notes.
|
|
786
787
|
|
|
787
788
|
```bash
|
|
788
|
-
git clone https://github.com/optave/codegraph.git
|
|
789
|
+
git clone https://github.com/optave/ops-codegraph-tool.git
|
|
789
790
|
cd codegraph
|
|
790
791
|
npm install
|
|
791
792
|
npm test
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"javascript.d.ts","sourceRoot":"","sources":["../../../src/ast-analysis/rules/javascript.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,aAAa,EACd,MAAM,gBAAgB,CAAC;AAKxB,eAAO,MAAM,UAAU,EAAE,eAuCxB,CAAC;AAIF,eAAO,MAAM,QAAQ,EAAE,aAyGtB,CAAC;AAIF,eAAO,MAAM,GAAG,EAAE,cA0BhB,CAAC;AAmBH,eAAO,MAAM,QAAQ,EAAE,mBA2BrB,CAAC;AAIH,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"javascript.d.ts","sourceRoot":"","sources":["../../../src/ast-analysis/rules/javascript.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,aAAa,EACd,MAAM,gBAAgB,CAAC;AAKxB,eAAO,MAAM,UAAU,EAAE,eAuCxB,CAAC;AAIF,eAAO,MAAM,QAAQ,EAAE,aAyGtB,CAAC;AAIF,eAAO,MAAM,GAAG,EAAE,cA0BhB,CAAC;AAmBH,eAAO,MAAM,QAAQ,EAAE,mBA2BrB,CAAC;AAIH,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAQ/C,CAAC"}
|
|
@@ -220,6 +220,7 @@ export const dataflow = makeDataflowRules({
|
|
|
220
220
|
});
|
|
221
221
|
// ─── AST Node Types ───────────────────────────────────────────────────────
|
|
222
222
|
export const astTypes = {
|
|
223
|
+
call_expression: 'call',
|
|
223
224
|
new_expression: 'new',
|
|
224
225
|
throw_statement: 'throw',
|
|
225
226
|
await_expression: 'await',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"javascript.js","sourceRoot":"","sources":["../../../src/ast-analysis/rules/javascript.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"javascript.js","sourceRoot":"","sources":["../../../src/ast-analysis/rules/javascript.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAE/D,6EAA6E;AAE7E,MAAM,CAAC,MAAM,UAAU,GAAoB;IACzC,WAAW,EAAE,IAAI,GAAG,CAAC;QACnB,cAAc;QACd,aAAa;QACb,kBAAkB;QAClB,eAAe;QACf,kBAAkB;QAClB,iBAAiB;QACjB,cAAc;QACd,cAAc;QACd,oBAAoB;KACrB,CAAC;IACF,SAAS,EAAE,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC;IACnC,gBAAgB,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7C,eAAe,EAAE,mBAAmB;IACpC,iBAAiB,EAAE,2BAA2B;IAC9C,YAAY,EAAE,IAAI,GAAG,CAAC;QACpB,cAAc;QACd,kBAAkB;QAClB,eAAe;QACf,kBAAkB;QAClB,iBAAiB;QACjB,cAAc;QACd,cAAc;QACd,oBAAoB;KACrB,CAAC;IACF,aAAa,EAAE,IAAI,GAAG,CAAC;QACrB,sBAAsB;QACtB,qBAAqB;QACrB,gBAAgB;QAChB,mBAAmB;QACnB,oBAAoB;QACpB,gCAAgC;KACjC,CAAC;IACF,UAAU,EAAE,cAAc;IAC1B,YAAY,EAAE,aAAa;IAC3B,YAAY,EAAE,IAAI;IAClB,kBAAkB,EAAE,KAAK;IACzB,eAAe,EAAE,IAAI,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC;CAC/C,CAAC;AAEF,6EAA6E;AAE7E,MAAM,CAAC,MAAM,QAAQ,GAAkB;IACrC,iBAAiB,EAAE,IAAI,GAAG,CAAC;QACzB,aAAa;QACb,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,IAAI;QACJ,aAAa;QACb,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,KAAK;QACL,KAAK;QACL,KAAK;QACL,MAAM;QACN,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,KAAK;QACL,KAAK;QACL,KAAK;QACL,aAAa;QACb,IAAI;QACJ,KAAK;QACL,IAAI;QACJ,KAAK;QACL,GAAG;QACH,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,UAAU;QACV,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,UAAU;QACV,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,IAAI;QACJ,IAAI;QACJ,KAAK;QACL,QAAQ;QACR,IAAI;QACJ,IAAI;QACJ,wBAAwB;QACxB,QAAQ;QACR,YAAY;QACZ,KAAK;QACL,QAAQ;QACR,OAAO;QACP,OAAO;QACP,OAAO;QACP,IAAI;QACJ,MAAM;QACN,KAAK;QACL,OAAO;QACP,IAAI;QACJ,QAAQ;QACR,MAAM;QACN,OAAO;QACP,UAAU;QACV,KAAK;QACL,OAAO;QACP,SAAS;QACT,iCAAiC;QACjC,IAAI;QACJ,KAAK;QACL,GAAG;QACH,GAAG;QACH,GAAG;QACH,IAAI;QACJ,kCAAkC;QAClC,GAAG;QACH,GAAG;KACJ,CAAC;IACF,gBAAgB,EAAE,IAAI,GAAG,CAAC;QACxB,YAAY;QACZ,qBAAqB;QACrB,+BAA+B;QAC/B,uCAAuC;QACvC,QAAQ;QACR,iBAAiB;QACjB,eAAe;QACf,MAAM;QACN,OAAO;QACP,MAAM;QACN,WAAW;QACX,MAAM;QACN,OAAO;QACP,6BAA6B;KAC9B,CAAC;IACF,iBAAiB,EAAE,IAAI,GAAG,CAAC;QACzB,iBAAiB;QACjB,sBAAsB;QACtB,gBAAgB;QAChB,uBAAuB;KACxB,CAAC;IACF,SAAS,EAAE,IAAI,GAAG,CAAC,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,aAAa,EAAE,mBAAmB,CAAC,CAAC;CAC/F,CAAC;AAEF,6EAA6E;AAE7E,MAAM,CAAC,MAAM,GAAG,GAAmB,YAAY,CAAC;IAC9C,MAAM,EAAE,cAAc;IACtB,UAAU,EAAE,aAAa;IACzB,QAAQ,EAAE,IAAI,GAAG,CAAC,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC;IACxD,SAAS,EAAE,iBAAiB;IAC5B,MAAM,EAAE,cAAc;IACtB,UAAU,EAAE,kBAAkB;IAC9B,QAAQ,EAAE,aAAa;IACvB,WAAW,EAAE,gBAAgB;IAC7B,OAAO,EAAE,eAAe;IACxB,SAAS,EAAE,cAAc;IACzB,WAAW,EAAE,gBAAgB;IAC7B,UAAU,EAAE,kBAAkB;IAC9B,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,iBAAiB;IAC5B,YAAY,EAAE,oBAAoB;IAClC,SAAS,EAAE,iBAAiB;IAC5B,WAAW,EAAE,mBAAmB;IAChC,aAAa,EAAE,IAAI,GAAG,CAAC;QACrB,sBAAsB;QACtB,qBAAqB;QACrB,gBAAgB;QAChB,mBAAmB;QACnB,oBAAoB;QACpB,gCAAgC;KACjC,CAAC;CACH,CAAC,CAAC;AAEH,6EAA6E;AAE7E,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IAC7B,MAAM;IACN,KAAK;IACL,OAAO;IACP,SAAS;IACT,QAAQ;IACR,MAAM;IACN,SAAS;IACT,MAAM;IACN,KAAK;IACL,QAAQ;IACR,KAAK;IACL,OAAO;CACR,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAwB,iBAAiB,CAAC;IAC7D,aAAa,EAAE,IAAI,GAAG,CAAC;QACrB,sBAAsB;QACtB,mBAAmB;QACnB,gBAAgB;QAChB,qBAAqB;QACrB,UAAU;KACX,CAAC;IACF,mBAAmB,EAAE,qBAAqB;IAC1C,kBAAkB,EAAE,uBAAuB;IAC3C,YAAY,EAAE,MAAM;IACpB,iBAAiB,EAAE,IAAI,GAAG,CAAC,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,CAAC;IACxE,gBAAgB,EAAE,oBAAoB;IACtC,aAAa,EAAE,cAAc;IAC7B,kBAAkB,EAAE,gBAAgB;IACpC,iBAAiB,EAAE,eAAe;IAClC,oBAAoB,EAAE,uCAAuC;IAC7D,eAAe,EAAE,cAAc;IAC/B,UAAU,EAAE,kBAAkB;IAC9B,iBAAiB,EAAE,qBAAqB;IACxC,cAAc,EAAE,uBAAuB;IACvC,QAAQ,EAAE,iBAAiB;IAC3B,UAAU,EAAE,gBAAgB;IAC5B,UAAU,EAAE,mBAAmB;IAC/B,iBAAiB,EAAE,2BAA2B;IAC9C,SAAS,EAAE,kBAAkB;IAC7B,eAAe,EAAE,cAAc;CAChC,CAAC,CAAC;AAEH,6EAA6E;AAE7E,MAAM,CAAC,MAAM,QAAQ,GAAkC;IACrD,eAAe,EAAE,MAAM;IACvB,cAAc,EAAE,KAAK;IACrB,eAAe,EAAE,OAAO;IACxB,gBAAgB,EAAE,OAAO;IACzB,MAAM,EAAE,QAAQ;IAChB,eAAe,EAAE,QAAQ;IACzB,KAAK,EAAE,OAAO;CACf,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast-store-visitor.d.ts","sourceRoot":"","sources":["../../../src/ast-analysis/visitors/ast-store-visitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EAGV,OAAO,EAER,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"ast-store-visitor.d.ts","sourceRoot":"","sources":["../../../src/ast-analysis/visitors/ast-store-visitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EAGV,OAAO,EAER,MAAM,gBAAgB,CAAC;AA+ExB,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,IAAI,EAAE,UAAU,EAAE,EAClB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,OAAO,CAwIT"}
|
|
@@ -27,6 +27,14 @@ function extractExpressionText(node) {
|
|
|
27
27
|
}
|
|
28
28
|
return truncate(node.text);
|
|
29
29
|
}
|
|
30
|
+
function extractCallName(node) {
|
|
31
|
+
for (const field of ['function', 'method', 'name']) {
|
|
32
|
+
const fn = node.childForFieldName(field);
|
|
33
|
+
if (fn)
|
|
34
|
+
return fn.text;
|
|
35
|
+
}
|
|
36
|
+
return node.text?.split('(')[0] || '?';
|
|
37
|
+
}
|
|
30
38
|
function extractName(kind, node) {
|
|
31
39
|
if (kind === 'throw') {
|
|
32
40
|
for (let i = 0; i < node.childCount; i++) {
|
|
@@ -81,6 +89,95 @@ export function createAstStoreVisitor(astTypeMap, defs, relPath, nodeIdMap) {
|
|
|
81
89
|
return null;
|
|
82
90
|
return nodeIdMap.get(`${parentDef.name}|${parentDef.kind}|${parentDef.line}`) || null;
|
|
83
91
|
}
|
|
92
|
+
/** Recursively walk a subtree collecting AST nodes — used for arguments-only traversal. */
|
|
93
|
+
function walkSubtree(node) {
|
|
94
|
+
if (!node)
|
|
95
|
+
return;
|
|
96
|
+
if (matched.has(node.id))
|
|
97
|
+
return;
|
|
98
|
+
const kind = astTypeMap[node.type];
|
|
99
|
+
if (kind === 'call') {
|
|
100
|
+
// Capture this call and recurse only into its arguments
|
|
101
|
+
collectNode(node, kind);
|
|
102
|
+
walkCallArguments(node);
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
if (kind) {
|
|
106
|
+
collectNode(node, kind);
|
|
107
|
+
if (kind !== 'string' && kind !== 'regex')
|
|
108
|
+
return; // skipChildren for non-leaf kinds
|
|
109
|
+
}
|
|
110
|
+
for (let i = 0; i < node.childCount; i++) {
|
|
111
|
+
walkSubtree(node.child(i));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Recurse into only the arguments of a call node — mirrors the native engine's
|
|
116
|
+
* strategy that prevents double-counting nested calls in the function field
|
|
117
|
+
* (e.g. chained calls like `a().b()`).
|
|
118
|
+
*/
|
|
119
|
+
function walkCallArguments(callNode) {
|
|
120
|
+
// Try field-based lookup first, fall back to kind-based matching
|
|
121
|
+
const argsNode = callNode.childForFieldName('arguments') ??
|
|
122
|
+
findChildByKind(callNode, ['arguments', 'argument_list', 'method_arguments']);
|
|
123
|
+
if (!argsNode)
|
|
124
|
+
return;
|
|
125
|
+
for (let i = 0; i < argsNode.childCount; i++) {
|
|
126
|
+
walkSubtree(argsNode.child(i));
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
function findChildByKind(node, kinds) {
|
|
130
|
+
for (let i = 0; i < node.childCount; i++) {
|
|
131
|
+
const child = node.child(i);
|
|
132
|
+
if (child && kinds.includes(child.type))
|
|
133
|
+
return child;
|
|
134
|
+
}
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
function collectNode(node, kind) {
|
|
138
|
+
if (matched.has(node.id))
|
|
139
|
+
return;
|
|
140
|
+
const line = node.startPosition.row + 1;
|
|
141
|
+
let name;
|
|
142
|
+
let text = null;
|
|
143
|
+
if (kind === 'call') {
|
|
144
|
+
name = extractCallName(node);
|
|
145
|
+
text = truncate(node.text);
|
|
146
|
+
}
|
|
147
|
+
else if (kind === 'new') {
|
|
148
|
+
name = extractNewName(node);
|
|
149
|
+
text = truncate(node.text);
|
|
150
|
+
}
|
|
151
|
+
else if (kind === 'throw') {
|
|
152
|
+
name = extractName('throw', node);
|
|
153
|
+
text = extractExpressionText(node);
|
|
154
|
+
}
|
|
155
|
+
else if (kind === 'await') {
|
|
156
|
+
name = extractName('await', node);
|
|
157
|
+
text = extractExpressionText(node);
|
|
158
|
+
}
|
|
159
|
+
else if (kind === 'string') {
|
|
160
|
+
const content = node.text?.replace(/^['"`]|['"`]$/g, '') || '';
|
|
161
|
+
if (content.length < 2)
|
|
162
|
+
return;
|
|
163
|
+
name = truncate(content, 100);
|
|
164
|
+
text = truncate(node.text);
|
|
165
|
+
}
|
|
166
|
+
else if (kind === 'regex') {
|
|
167
|
+
name = node.text || '?';
|
|
168
|
+
text = truncate(node.text);
|
|
169
|
+
}
|
|
170
|
+
rows.push({
|
|
171
|
+
file: relPath,
|
|
172
|
+
line,
|
|
173
|
+
kind,
|
|
174
|
+
name,
|
|
175
|
+
text,
|
|
176
|
+
receiver: null,
|
|
177
|
+
parentNodeId: resolveParentNodeId(line),
|
|
178
|
+
});
|
|
179
|
+
matched.add(node.id);
|
|
180
|
+
}
|
|
84
181
|
return {
|
|
85
182
|
name: 'ast-store',
|
|
86
183
|
enterNode(node, _context) {
|
|
@@ -89,42 +186,13 @@ export function createAstStoreVisitor(astTypeMap, defs, relPath, nodeIdMap) {
|
|
|
89
186
|
const kind = astTypeMap[node.type];
|
|
90
187
|
if (!kind)
|
|
91
188
|
return;
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
}
|
|
99
|
-
else if (kind === 'throw') {
|
|
100
|
-
name = extractName('throw', node);
|
|
101
|
-
text = extractExpressionText(node);
|
|
102
|
-
}
|
|
103
|
-
else if (kind === 'await') {
|
|
104
|
-
name = extractName('await', node);
|
|
105
|
-
text = extractExpressionText(node);
|
|
106
|
-
}
|
|
107
|
-
else if (kind === 'string') {
|
|
108
|
-
const content = node.text?.replace(/^['"`]|['"`]$/g, '') || '';
|
|
109
|
-
if (content.length < 2)
|
|
110
|
-
return;
|
|
111
|
-
name = truncate(content, 100);
|
|
112
|
-
text = truncate(node.text);
|
|
113
|
-
}
|
|
114
|
-
else if (kind === 'regex') {
|
|
115
|
-
name = node.text || '?';
|
|
116
|
-
text = truncate(node.text);
|
|
189
|
+
collectNode(node, kind);
|
|
190
|
+
if (kind === 'call') {
|
|
191
|
+
// Mirror native: skip full subtree, recurse only into arguments.
|
|
192
|
+
// Prevents double-counting chained calls like service.getUser().getName().
|
|
193
|
+
walkCallArguments(node);
|
|
194
|
+
return { skipChildren: true };
|
|
117
195
|
}
|
|
118
|
-
rows.push({
|
|
119
|
-
file: relPath,
|
|
120
|
-
line,
|
|
121
|
-
kind,
|
|
122
|
-
name,
|
|
123
|
-
text,
|
|
124
|
-
receiver: null,
|
|
125
|
-
parentNodeId: resolveParentNodeId(line),
|
|
126
|
-
});
|
|
127
|
-
matched.add(node.id);
|
|
128
196
|
if (kind !== 'string' && kind !== 'regex') {
|
|
129
197
|
return { skipChildren: true };
|
|
130
198
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast-store-visitor.js","sourceRoot":"","sources":["../../../src/ast-analysis/visitors/ast-store-visitor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ast-store-visitor.js","sourceRoot":"","sources":["../../../src/ast-analysis/visitors/ast-store-visitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"better-sqlite3.d.ts","sourceRoot":"","sources":["../../src/db/better-sqlite3.ts"],"names":[],"mappings":"AAaA,kFAAkF;AAClF,wBAAgB,WAAW,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAKzD"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lazy-loaded better-sqlite3 constructor.
|
|
3
|
+
*
|
|
4
|
+
* Centralises the `createRequire` + cache pattern so every call site that
|
|
5
|
+
* needs a JS-side SQLite handle can `import { getDatabase } from '…/db/better-sqlite3.js'`
|
|
6
|
+
* instead of duplicating the boilerplate. The native engine path (NativeDatabase /
|
|
7
|
+
* rusqlite) never touches this module.
|
|
8
|
+
*/
|
|
9
|
+
import { createRequire } from 'node:module';
|
|
10
|
+
const _require = createRequire(import.meta.url);
|
|
11
|
+
let _Database;
|
|
12
|
+
/** Return the `better-sqlite3` Database constructor, loading it on first call. */
|
|
13
|
+
export function getDatabase() {
|
|
14
|
+
if (!_Database) {
|
|
15
|
+
_Database = _require('better-sqlite3');
|
|
16
|
+
}
|
|
17
|
+
return _Database;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=better-sqlite3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"better-sqlite3.js","sourceRoot":"","sources":["../../src/db/better-sqlite3.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChD,IAAI,SAAc,CAAC;AAEnB,kFAAkF;AAClF,MAAM,UAAU,WAAW;IACzB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
package/dist/db/connection.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { BetterSqlite3Database } from '../types.js';
|
|
1
|
+
import type { BetterSqlite3Database, NativeDatabase } from '../types.js';
|
|
2
2
|
import { Repository } from './repository/base.js';
|
|
3
3
|
/** DB instance with optional advisory lock path. */
|
|
4
4
|
export type LockedDatabase = BetterSqlite3Database & {
|
|
@@ -34,6 +34,15 @@ export declare function flushDeferredClose(): void;
|
|
|
34
34
|
* Call `flushDeferredClose()` before deleting the DB file.
|
|
35
35
|
*/
|
|
36
36
|
export declare function closeDbDeferred(db: LockedDatabase): void;
|
|
37
|
+
/** A better-sqlite3 handle optionally paired with a NativeDatabase. */
|
|
38
|
+
export interface LockedDatabasePair {
|
|
39
|
+
db: LockedDatabase;
|
|
40
|
+
nativeDb?: NativeDatabase;
|
|
41
|
+
}
|
|
42
|
+
/** Close both handles: NativeDatabase first (fast), then better-sqlite3 (releases lock). */
|
|
43
|
+
export declare function closeDbPair(pair: LockedDatabasePair): void;
|
|
44
|
+
/** Close NativeDatabase immediately, defer better-sqlite3 WAL checkpoint. */
|
|
45
|
+
export declare function closeDbPairDeferred(pair: LockedDatabasePair): void;
|
|
37
46
|
export declare function findDbPath(customPath?: string): string;
|
|
38
47
|
/** Open a database in readonly mode, with a user-friendly error if the DB doesn't exist. */
|
|
39
48
|
export declare function openReadonlyOrFail(customPath?: string): BetterSqlite3Database;
|
|
@@ -41,7 +50,9 @@ export declare function openReadonlyOrFail(customPath?: string): BetterSqlite3Da
|
|
|
41
50
|
* Open a Repository from either an injected instance or a DB path.
|
|
42
51
|
*
|
|
43
52
|
* When `opts.repo` is a Repository instance, returns it directly (no DB opened).
|
|
44
|
-
*
|
|
53
|
+
* When the native engine is available, opens a NativeDatabase (rusqlite) and
|
|
54
|
+
* wraps it in NativeRepository. Otherwise falls back to better-sqlite3 via
|
|
55
|
+
* SqliteRepository.
|
|
45
56
|
*/
|
|
46
57
|
export declare function openRepo(customDbPath?: string, opts?: {
|
|
47
58
|
repo?: Repository;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAsBlD,oDAAoD;AACpD,MAAM,MAAM,cAAc,GAAG,qBAAqB,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAK7E;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA8B5D;AAED,gDAAgD;AAChD,wBAAgB,mBAAmB,IAAI,IAAI,CAG1C;AAED,oDAAoD;AACpD,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AA4DD,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAYrD;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI,CAGhD;AAKD;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CASzC;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI,CAmBxD;AAOD,uEAAuE;AACvE,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,cAAc,CAAC;IACnB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED,4FAA4F;AAC5F,wBAAgB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAS1D;AAED,6EAA6E;AAC7E,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI,CASlE;AAED,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAuCtD;AAED,4FAA4F;AAC5F,wBAAgB,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,qBAAqB,CA+B7E;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CACtB,YAAY,CAAC,EAAE,MAAM,EACrB,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,UAAU,CAAA;CAAO,GAC/B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,IAAI,IAAI,CAAA;CAAE,CAkErC"}
|
package/dist/db/connection.js
CHANGED
|
@@ -2,10 +2,12 @@ import { execFileSync } from 'node:child_process';
|
|
|
2
2
|
import fs from 'node:fs';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { fileURLToPath } from 'node:url';
|
|
5
|
-
import Database from 'better-sqlite3';
|
|
6
5
|
import { debug, warn } from '../infrastructure/logger.js';
|
|
6
|
+
import { getNative, isNativeAvailable } from '../infrastructure/native.js';
|
|
7
7
|
import { DbError } from '../shared/errors.js';
|
|
8
|
+
import { getDatabase } from './better-sqlite3.js';
|
|
8
9
|
import { Repository } from './repository/base.js';
|
|
10
|
+
import { NativeRepository } from './repository/native-repository.js';
|
|
9
11
|
import { SqliteRepository } from './repository/sqlite-repository.js';
|
|
10
12
|
/** Lazy-loaded package version (read once from package.json). */
|
|
11
13
|
let _packageVersion;
|
|
@@ -144,6 +146,7 @@ export function openDb(dbPath) {
|
|
|
144
146
|
if (!fs.existsSync(dir))
|
|
145
147
|
fs.mkdirSync(dir, { recursive: true });
|
|
146
148
|
acquireAdvisoryLock(dbPath);
|
|
149
|
+
const Database = getDatabase();
|
|
147
150
|
const db = new Database(dbPath);
|
|
148
151
|
db.pragma('journal_mode = WAL');
|
|
149
152
|
db.pragma('busy_timeout = 5000');
|
|
@@ -202,6 +205,30 @@ export function closeDbDeferred(db) {
|
|
|
202
205
|
}
|
|
203
206
|
});
|
|
204
207
|
}
|
|
208
|
+
/** Close both handles: NativeDatabase first (fast), then better-sqlite3 (releases lock). */
|
|
209
|
+
export function closeDbPair(pair) {
|
|
210
|
+
if (pair.nativeDb) {
|
|
211
|
+
try {
|
|
212
|
+
pair.nativeDb.close();
|
|
213
|
+
}
|
|
214
|
+
catch {
|
|
215
|
+
/* ignore */
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
closeDb(pair.db);
|
|
219
|
+
}
|
|
220
|
+
/** Close NativeDatabase immediately, defer better-sqlite3 WAL checkpoint. */
|
|
221
|
+
export function closeDbPairDeferred(pair) {
|
|
222
|
+
if (pair.nativeDb) {
|
|
223
|
+
try {
|
|
224
|
+
pair.nativeDb.close();
|
|
225
|
+
}
|
|
226
|
+
catch {
|
|
227
|
+
/* ignore */
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
closeDbDeferred(pair.db);
|
|
231
|
+
}
|
|
205
232
|
export function findDbPath(customPath) {
|
|
206
233
|
if (customPath)
|
|
207
234
|
return path.resolve(customPath);
|
|
@@ -254,6 +281,7 @@ export function openReadonlyOrFail(customPath) {
|
|
|
254
281
|
if (!fs.existsSync(dbPath)) {
|
|
255
282
|
throw new DbError(`No codegraph database found at ${dbPath}.\nRun "codegraph build" first to analyze your codebase.`, { file: dbPath });
|
|
256
283
|
}
|
|
284
|
+
const Database = getDatabase();
|
|
257
285
|
const db = new Database(dbPath, { readonly: true });
|
|
258
286
|
// Warn once per process if the DB was built with a different codegraph version
|
|
259
287
|
if (!_versionWarned) {
|
|
@@ -278,7 +306,9 @@ export function openReadonlyOrFail(customPath) {
|
|
|
278
306
|
* Open a Repository from either an injected instance or a DB path.
|
|
279
307
|
*
|
|
280
308
|
* When `opts.repo` is a Repository instance, returns it directly (no DB opened).
|
|
281
|
-
*
|
|
309
|
+
* When the native engine is available, opens a NativeDatabase (rusqlite) and
|
|
310
|
+
* wraps it in NativeRepository. Otherwise falls back to better-sqlite3 via
|
|
311
|
+
* SqliteRepository.
|
|
282
312
|
*/
|
|
283
313
|
export function openRepo(customDbPath, opts = {}) {
|
|
284
314
|
if (opts.repo != null) {
|
|
@@ -287,6 +317,50 @@ export function openRepo(customDbPath, opts = {}) {
|
|
|
287
317
|
}
|
|
288
318
|
return { repo: opts.repo, close() { } };
|
|
289
319
|
}
|
|
320
|
+
// Try native rusqlite path first (Phase 6.14)
|
|
321
|
+
if (isNativeAvailable()) {
|
|
322
|
+
try {
|
|
323
|
+
const dbPath = findDbPath(customDbPath);
|
|
324
|
+
if (!fs.existsSync(dbPath)) {
|
|
325
|
+
throw new DbError(`No codegraph database found at ${dbPath}.\nRun "codegraph build" first to analyze your codebase.`, { file: dbPath });
|
|
326
|
+
}
|
|
327
|
+
const native = getNative();
|
|
328
|
+
const ndb = native.NativeDatabase.openReadonly(dbPath);
|
|
329
|
+
try {
|
|
330
|
+
// Version check (same logic as openReadonlyOrFail)
|
|
331
|
+
if (!_versionWarned) {
|
|
332
|
+
try {
|
|
333
|
+
const buildVersion = ndb.getBuildMeta('codegraph_version');
|
|
334
|
+
const currentVersion = getPackageVersion();
|
|
335
|
+
if (buildVersion && currentVersion && buildVersion !== currentVersion) {
|
|
336
|
+
warn(`DB was built with codegraph v${buildVersion}, running v${currentVersion}. Consider: codegraph build --no-incremental`);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
catch {
|
|
340
|
+
// build_meta table may not exist in older DBs
|
|
341
|
+
}
|
|
342
|
+
_versionWarned = true;
|
|
343
|
+
}
|
|
344
|
+
return {
|
|
345
|
+
repo: new NativeRepository(ndb),
|
|
346
|
+
close() {
|
|
347
|
+
ndb.close();
|
|
348
|
+
},
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
catch (innerErr) {
|
|
352
|
+
ndb.close();
|
|
353
|
+
throw innerErr;
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
catch (e) {
|
|
357
|
+
// Re-throw user-visible errors (e.g. DB not found) — only silently
|
|
358
|
+
// fall back for native-engine failures (e.g. incompatible native binary).
|
|
359
|
+
if (e instanceof DbError)
|
|
360
|
+
throw e;
|
|
361
|
+
debug(`openRepo: native path failed, falling back to better-sqlite3: ${e.message}`);
|
|
362
|
+
}
|
|
363
|
+
}
|
|
290
364
|
const db = openReadonlyOrFail(customDbPath);
|
|
291
365
|
return {
|
|
292
366
|
repo: new SqliteRepository(db),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,
|
|
1
|
+
{"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"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"}
|
package/dist/db/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export type { LockedDatabase } from './connection.js';
|
|
2
|
-
export { closeDb, closeDbDeferred, findDbPath, findRepoRoot, flushDeferredClose, openDb, openReadonlyOrFail, openRepo, } from './connection.js';
|
|
1
|
+
export type { LockedDatabase, LockedDatabasePair } from './connection.js';
|
|
2
|
+
export { closeDb, closeDbDeferred, closeDbPair, closeDbPairDeferred, findDbPath, findRepoRoot, flushDeferredClose, openDb, openReadonlyOrFail, openRepo, } from './connection.js';
|
|
3
3
|
export { getBuildMeta, initSchema, MIGRATIONS, setBuildMeta } from './migrations.js';
|
|
4
4
|
export { fanInJoinSQL, fanOutJoinSQL, kindInClause, NodeQuery, testFilterSQL, } from './query-builder.js';
|
|
5
5
|
export { bulkNodeIdsByFile, countCrossFileCallers, countEdges, countFiles, countNodes, deleteCfgForNode, findAllIncomingEdges, findAllOutgoingEdges, findCalleeNames, findCallees, findCallerNames, findCallers, findCrossFileCallTargets, findDistinctCallers, findFileNodes, findImplementors, findImportDependents, findImportSources, findImportTargets, findInterfaces, findIntraFileCallEdges, findNodeById, findNodeByQualifiedName, findNodeChildren, findNodesByFile, findNodesByScope, findNodesForTriage, findNodesWithFanIn, getCallableNodes, getCallEdges, getCfgBlocks, getCfgEdges, getClassHierarchy, getCoChangeMeta, getComplexityForNode, getEmbeddingCount, getEmbeddingMeta, getFileNodesAll, getFunctionNodeId, getImportEdges, getLineCountForNode, getMaxEndLineForFile, getNodeId, hasCfgTables, hasCoChanges, hasDataflowTable, hasEmbeddings, InMemoryRepository, iterateFunctionNodes, listFunctionNodes, purgeFileData, purgeFilesData, Repository, SqliteRepository, upsertCoChangeMeta, } from './repository/index.js';
|
package/dist/db/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EACL,OAAO,EACP,eAAe,EACf,WAAW,EACX,mBAAmB,EACnB,UAAU,EACV,YAAY,EACZ,kBAAkB,EAClB,MAAM,EACN,kBAAkB,EAClB,QAAQ,GACT,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,EACL,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,SAAS,EACT,aAAa,GACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,UAAU,EACV,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,WAAW,EACX,eAAe,EACf,WAAW,EACX,wBAAwB,EACxB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,YAAY,EACZ,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC"}
|
package/dist/db/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Barrel re-export — keeps all existing `import { ... } from '…/db/index.js'` working.
|
|
2
|
-
export { closeDb, closeDbDeferred, findDbPath, findRepoRoot, flushDeferredClose, openDb, openReadonlyOrFail, openRepo, } from './connection.js';
|
|
2
|
+
export { closeDb, closeDbDeferred, closeDbPair, closeDbPairDeferred, findDbPath, findRepoRoot, flushDeferredClose, openDb, openReadonlyOrFail, openRepo, } from './connection.js';
|
|
3
3
|
export { getBuildMeta, initSchema, MIGRATIONS, setBuildMeta } from './migrations.js';
|
|
4
4
|
export { fanInJoinSQL, fanOutJoinSQL, kindInClause, NodeQuery, testFilterSQL, } from './query-builder.js';
|
|
5
5
|
export { bulkNodeIdsByFile, countCrossFileCallers, countEdges, countFiles, countNodes, deleteCfgForNode, findAllIncomingEdges, findAllOutgoingEdges, findCalleeNames, findCallees, findCallerNames, findCallers, findCrossFileCallTargets, findDistinctCallers, findFileNodes, findImplementors, findImportDependents, findImportSources, findImportTargets, findInterfaces, findIntraFileCallEdges, findNodeById, findNodeByQualifiedName, findNodeChildren, findNodesByFile, findNodesByScope, findNodesForTriage, findNodesWithFanIn, getCallableNodes, getCallEdges, getCfgBlocks, getCfgEdges, getClassHierarchy, getCoChangeMeta, getComplexityForNode, getEmbeddingCount, getEmbeddingMeta, getFileNodesAll, getFunctionNodeId, getImportEdges, getLineCountForNode, getMaxEndLineForFile, getNodeId, hasCfgTables, hasCoChanges, hasDataflowTable, hasEmbeddings, InMemoryRepository, iterateFunctionNodes, listFunctionNodes, purgeFileData, purgeFilesData, Repository, SqliteRepository, upsertCoChangeMeta, } from './repository/index.js';
|
package/dist/db/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA,uFAAuF;AAGvF,OAAO,EACL,OAAO,EACP,eAAe,EACf,UAAU,EACV,YAAY,EACZ,kBAAkB,EAClB,MAAM,EACN,kBAAkB,EAClB,QAAQ,GACT,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,EACL,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,SAAS,EACT,aAAa,GACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,UAAU,EACV,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,WAAW,EACX,eAAe,EACf,WAAW,EACX,wBAAwB,EACxB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,YAAY,EACZ,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA,uFAAuF;AAGvF,OAAO,EACL,OAAO,EACP,eAAe,EACf,WAAW,EACX,mBAAmB,EACnB,UAAU,EACV,YAAY,EACZ,kBAAkB,EAClB,MAAM,EACN,kBAAkB,EAClB,QAAQ,GACT,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,EACL,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,SAAS,EACT,aAAa,GACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,UAAU,EACV,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,WAAW,EACX,eAAe,EACf,WAAW,EACX,wBAAwB,EACxB,mBAAmB,EACnB,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,YAAY,EACZ,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/db/migrations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAIzD,UAAU,SAAS;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;CACZ;
|
|
1
|
+
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/db/migrations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAIzD,UAAU,SAAS;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;CACZ;AAID,eAAO,MAAM,UAAU,EAAE,SAAS,EAsPjC,CAAC;AAsBF,wBAAgB,YAAY,CAAC,EAAE,EAAE,qBAAqB,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWlF;AAED,wBAAgB,YAAY,CAC1B,EAAE,EAAE,qBAAqB,EACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GACvC,IAAI,CAQN;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,qBAAqB,GAAG,IAAI,CAsD1D"}
|
package/dist/db/migrations.js
CHANGED