Add WASM fallbacks for tree-sitter and SQLite, fix installer
Replace native tree-sitter with web-tree-sitter + tree-sitter-wasms for universal cross-platform support. Add node-sqlite3-wasm as a fallback when better-sqlite3 native bindings aren't available. Move better-sqlite3 and sqlite-vss to optionalDependencies so installs never fail. Fix installer to use npx fallback when global npm install fails, so MCP config, hooks, and quick-start instructions all work without the bare codegraph command in PATH. Fix tests: update schema version expectation, fix db test paths and method names, extract MAX_OUTPUT_LENGTH as module constant, normalize Windows path separators in import resolver.
This commit is contained in:
+24
-24
@@ -4,7 +4,7 @@
|
||||
* Prepared statements for CRUD operations on the knowledge graph.
|
||||
*/
|
||||
|
||||
import Database from 'better-sqlite3';
|
||||
import { SqliteDatabase, SqliteStatement } from './sqlite-adapter';
|
||||
import {
|
||||
Node,
|
||||
Edge,
|
||||
@@ -143,7 +143,7 @@ function rowToFileRecord(row: FileRow): FileRecord {
|
||||
* Query builder for the knowledge graph database
|
||||
*/
|
||||
export class QueryBuilder {
|
||||
private db: Database.Database;
|
||||
private db: SqliteDatabase;
|
||||
|
||||
// Node cache for frequently accessed nodes (LRU-style, max 1000 entries)
|
||||
private nodeCache: Map<string, Node> = new Map();
|
||||
@@ -151,30 +151,30 @@ export class QueryBuilder {
|
||||
|
||||
// Prepared statements (lazily initialized)
|
||||
private stmts: {
|
||||
insertNode?: Database.Statement;
|
||||
updateNode?: Database.Statement;
|
||||
deleteNode?: Database.Statement;
|
||||
deleteNodesByFile?: Database.Statement;
|
||||
getNodeById?: Database.Statement;
|
||||
getNodesByFile?: Database.Statement;
|
||||
getNodesByKind?: Database.Statement;
|
||||
insertEdge?: Database.Statement;
|
||||
upsertFile?: Database.Statement;
|
||||
deleteEdgesBySource?: Database.Statement;
|
||||
deleteEdgesByTarget?: Database.Statement;
|
||||
getEdgesBySource?: Database.Statement;
|
||||
getEdgesByTarget?: Database.Statement;
|
||||
insertFile?: Database.Statement;
|
||||
updateFile?: Database.Statement;
|
||||
deleteFile?: Database.Statement;
|
||||
getFileByPath?: Database.Statement;
|
||||
getAllFiles?: Database.Statement;
|
||||
insertUnresolved?: Database.Statement;
|
||||
deleteUnresolvedByNode?: Database.Statement;
|
||||
getUnresolvedByName?: Database.Statement;
|
||||
insertNode?: SqliteStatement;
|
||||
updateNode?: SqliteStatement;
|
||||
deleteNode?: SqliteStatement;
|
||||
deleteNodesByFile?: SqliteStatement;
|
||||
getNodeById?: SqliteStatement;
|
||||
getNodesByFile?: SqliteStatement;
|
||||
getNodesByKind?: SqliteStatement;
|
||||
insertEdge?: SqliteStatement;
|
||||
upsertFile?: SqliteStatement;
|
||||
deleteEdgesBySource?: SqliteStatement;
|
||||
deleteEdgesByTarget?: SqliteStatement;
|
||||
getEdgesBySource?: SqliteStatement;
|
||||
getEdgesByTarget?: SqliteStatement;
|
||||
insertFile?: SqliteStatement;
|
||||
updateFile?: SqliteStatement;
|
||||
deleteFile?: SqliteStatement;
|
||||
getFileByPath?: SqliteStatement;
|
||||
getAllFiles?: SqliteStatement;
|
||||
insertUnresolved?: SqliteStatement;
|
||||
deleteUnresolvedByNode?: SqliteStatement;
|
||||
getUnresolvedByName?: SqliteStatement;
|
||||
} = {};
|
||||
|
||||
constructor(db: Database.Database) {
|
||||
constructor(db: SqliteDatabase) {
|
||||
this.db = db;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user