@stupidloud/codegraph 0.8.1 → 0.9.5
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 +91 -60
- package/dist/bin/codegraph.d.ts +4 -0
- package/dist/bin/codegraph.d.ts.map +1 -1
- package/dist/bin/codegraph.js +302 -8
- package/dist/bin/codegraph.js.map +1 -1
- package/dist/bin/node-version-check.d.ts +17 -0
- package/dist/bin/node-version-check.d.ts.map +1 -1
- package/dist/bin/node-version-check.js +37 -0
- package/dist/bin/node-version-check.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -11
- package/dist/config.js.map +1 -1
- package/dist/db/index.d.ts +30 -1
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +75 -25
- package/dist/db/index.js.map +1 -1
- package/dist/db/queries.d.ts +16 -0
- package/dist/db/queries.d.ts.map +1 -1
- package/dist/db/queries.js +80 -27
- package/dist/db/queries.js.map +1 -1
- package/dist/db/sqlite-adapter.d.ts +17 -23
- package/dist/db/sqlite-adapter.d.ts.map +1 -1
- package/dist/db/sqlite-adapter.js +51 -174
- package/dist/db/sqlite-adapter.js.map +1 -1
- package/dist/extraction/grammars.d.ts +7 -1
- package/dist/extraction/grammars.d.ts.map +1 -1
- package/dist/extraction/grammars.js +42 -2
- package/dist/extraction/grammars.js.map +1 -1
- package/dist/extraction/index.d.ts +9 -14
- package/dist/extraction/index.d.ts.map +1 -1
- package/dist/extraction/index.js +75 -94
- package/dist/extraction/index.js.map +1 -1
- package/dist/extraction/languages/index.d.ts.map +1 -1
- package/dist/extraction/languages/index.js +4 -0
- package/dist/extraction/languages/index.js.map +1 -1
- package/dist/extraction/languages/lua.d.ts +3 -0
- package/dist/extraction/languages/lua.d.ts.map +1 -0
- package/dist/extraction/languages/lua.js +150 -0
- package/dist/extraction/languages/lua.js.map +1 -0
- package/dist/extraction/languages/luau.d.ts +3 -0
- package/dist/extraction/languages/luau.d.ts.map +1 -0
- package/dist/extraction/languages/luau.js +37 -0
- package/dist/extraction/languages/luau.js.map +1 -0
- package/dist/extraction/tree-sitter.d.ts.map +1 -1
- package/dist/extraction/tree-sitter.js +38 -0
- package/dist/extraction/tree-sitter.js.map +1 -1
- package/dist/extraction/wasm/tree-sitter-lua.wasm +0 -0
- package/dist/extraction/wasm/tree-sitter-luau.wasm +0 -0
- package/dist/extraction/wasm-runtime-flags.d.ts +38 -0
- package/dist/extraction/wasm-runtime-flags.d.ts.map +1 -0
- package/dist/extraction/wasm-runtime-flags.js +105 -0
- package/dist/extraction/wasm-runtime-flags.js.map +1 -0
- package/dist/graph/traversal.d.ts.map +1 -1
- package/dist/graph/traversal.js +71 -36
- package/dist/graph/traversal.js.map +1 -1
- package/dist/index.d.ts +11 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -18
- package/dist/index.js.map +1 -1
- package/dist/installer/index.d.ts +54 -2
- package/dist/installer/index.d.ts.map +1 -1
- package/dist/installer/index.js +123 -1
- package/dist/installer/index.js.map +1 -1
- package/dist/installer/targets/claude.d.ts +16 -0
- package/dist/installer/targets/claude.d.ts.map +1 -1
- package/dist/installer/targets/claude.js +93 -0
- package/dist/installer/targets/claude.js.map +1 -1
- package/dist/installer/targets/cursor.d.ts.map +1 -1
- package/dist/installer/targets/cursor.js +57 -3
- package/dist/installer/targets/cursor.js.map +1 -1
- package/dist/installer/targets/hermes.d.ts +18 -0
- package/dist/installer/targets/hermes.d.ts.map +1 -0
- package/dist/installer/targets/hermes.js +305 -0
- package/dist/installer/targets/hermes.js.map +1 -0
- package/dist/installer/targets/registry.d.ts.map +1 -1
- package/dist/installer/targets/registry.js +2 -0
- package/dist/installer/targets/registry.js.map +1 -1
- package/dist/installer/targets/types.d.ts +1 -1
- package/dist/installer/targets/types.d.ts.map +1 -1
- package/dist/mcp/index.d.ts +4 -0
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +97 -0
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/tools.d.ts +11 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +131 -15
- package/dist/mcp/tools.js.map +1 -1
- package/dist/resolution/frameworks/drupal.d.ts +51 -0
- package/dist/resolution/frameworks/drupal.d.ts.map +1 -0
- package/dist/resolution/frameworks/drupal.js +335 -0
- package/dist/resolution/frameworks/drupal.js.map +1 -0
- package/dist/resolution/frameworks/index.d.ts +1 -0
- package/dist/resolution/frameworks/index.d.ts.map +1 -1
- package/dist/resolution/frameworks/index.js +5 -1
- package/dist/resolution/frameworks/index.js.map +1 -1
- package/dist/resolution/index.d.ts.map +1 -1
- package/dist/resolution/index.js +40 -7
- package/dist/resolution/index.js.map +1 -1
- package/dist/resolution/lru-cache.d.ts +24 -0
- package/dist/resolution/lru-cache.d.ts.map +1 -0
- package/dist/resolution/lru-cache.js +62 -0
- package/dist/resolution/lru-cache.js.map +1 -0
- package/dist/sync/watcher.d.ts +2 -4
- package/dist/sync/watcher.d.ts.map +1 -1
- package/dist/sync/watcher.js +4 -6
- package/dist/sync/watcher.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +11 -0
- package/dist/types.js.map +1 -1
- package/dist/utils.js +1 -1
- package/package.json +2 -2
- package/scripts/add-lang/bench.sh +60 -0
- package/scripts/add-lang/check-grammar.mjs +75 -0
- package/scripts/add-lang/dump-ast.mjs +103 -0
- package/scripts/add-lang/verify-extraction.mjs +70 -0
- package/scripts/build-bundle.sh +118 -0
- package/scripts/npm-shim.js +246 -0
- package/scripts/pack-npm.sh +95 -0
- package/scripts/patch-tree-sitter-dart.js +0 -112
- package/scripts/release.sh +0 -68
|
@@ -2,175 +2,74 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* SQLite Adapter
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* Thin wrapper over Node's built-in `node:sqlite` (`DatabaseSync`), exposed
|
|
6
|
+
* through a small better-sqlite3-shaped interface so the rest of the codebase
|
|
7
|
+
* is storage-agnostic.
|
|
8
|
+
*
|
|
9
|
+
* CodeGraph ships with a bundled Node runtime, so `node:sqlite` (real SQLite,
|
|
10
|
+
* with WAL + FTS5) is always available — there is no native build step and no
|
|
11
|
+
* wasm fallback. When run from source instead, it requires Node >= 22.5.
|
|
7
12
|
*/
|
|
8
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.WASM_FALLBACK_FIX_RECIPE = void 0;
|
|
10
|
-
exports.buildWasmFallbackBanner = buildWasmFallbackBanner;
|
|
11
14
|
exports.createDatabase = createDatabase;
|
|
12
15
|
/**
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* stderr banner and the MCP status formatter.
|
|
16
|
-
*/
|
|
17
|
-
exports.WASM_FALLBACK_FIX_RECIPE = '`xcode-select --install` (macOS) or `apt install build-essential` (Debian/Ubuntu), ' +
|
|
18
|
-
'then `npm rebuild better-sqlite3`, or `npm install better-sqlite3 --save` to force-include it.';
|
|
19
|
-
/**
|
|
20
|
-
* Multi-line banner shown to stderr when `createDatabase` falls back to
|
|
21
|
-
* WASM. Replaces a one-line `console.warn` that MCP transports (which
|
|
22
|
-
* take stdout for the protocol) typically swallow, leaving users on a
|
|
23
|
-
* 5-10x slower backend with no signal.
|
|
24
|
-
*
|
|
25
|
-
* Exported for unit testing — pinning the recipe content prevents
|
|
26
|
-
* future edits from silently stripping the recovery commands.
|
|
27
|
-
*/
|
|
28
|
-
function buildWasmFallbackBanner(nativeError) {
|
|
29
|
-
const sep = '─'.repeat(72);
|
|
30
|
-
const lines = [
|
|
31
|
-
sep,
|
|
32
|
-
'[CodeGraph] WASM SQLite fallback active (better-sqlite3 unavailable)',
|
|
33
|
-
sep,
|
|
34
|
-
'Indexing and sync will be 5-10x slower than the native backend.',
|
|
35
|
-
'',
|
|
36
|
-
'Fix on macOS:',
|
|
37
|
-
' xcode-select --install # install C build tools',
|
|
38
|
-
' npm rebuild better-sqlite3 # rebuild native binding for current Node',
|
|
39
|
-
'',
|
|
40
|
-
'Fix on Linux:',
|
|
41
|
-
' sudo apt install build-essential python3 make # Debian/Ubuntu',
|
|
42
|
-
' # or: sudo yum groupinstall "Development Tools" # RHEL/Fedora',
|
|
43
|
-
' npm rebuild better-sqlite3',
|
|
44
|
-
'',
|
|
45
|
-
'Or force-include as a hard dependency on any platform:',
|
|
46
|
-
' npm install better-sqlite3 --save',
|
|
47
|
-
'',
|
|
48
|
-
'Verify after fix: `codegraph status` should show `Backend: native`.',
|
|
49
|
-
];
|
|
50
|
-
if (nativeError) {
|
|
51
|
-
lines.push('', `Native load error: ${nativeError}`);
|
|
52
|
-
}
|
|
53
|
-
lines.push(sep);
|
|
54
|
-
return lines.join('\n');
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Translate @named parameters (better-sqlite3 style) to positional ? params
|
|
58
|
-
* for node-sqlite3-wasm, which only supports positional binding.
|
|
16
|
+
* Wraps Node's built-in `node:sqlite` (`DatabaseSync`) to match the
|
|
17
|
+
* better-sqlite3 interface the rest of the code expects.
|
|
59
18
|
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
19
|
+
* node:sqlite is real SQLite compiled into Node, so it supports WAL, FTS5,
|
|
20
|
+
* mmap, and `@named` params natively — the only shims needed are the
|
|
21
|
+
* better-sqlite3 conveniences node:sqlite omits: a `.pragma()` helper, a
|
|
22
|
+
* `.transaction()` helper, and `open` (node:sqlite exposes `isOpen`).
|
|
62
23
|
*/
|
|
63
|
-
|
|
64
|
-
const paramOrder = [];
|
|
65
|
-
const rewritten = sql.replace(/@(\w+)/g, (_match, name) => {
|
|
66
|
-
paramOrder.push(name);
|
|
67
|
-
return '?';
|
|
68
|
-
});
|
|
69
|
-
if (paramOrder.length === 0) {
|
|
70
|
-
return { sql, paramOrder: null };
|
|
71
|
-
}
|
|
72
|
-
return { sql: rewritten, paramOrder };
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Convert better-sqlite3-style params to a positional array for node-sqlite3-wasm.
|
|
76
|
-
*
|
|
77
|
-
* Handles three calling conventions:
|
|
78
|
-
* - Named object: run({ id: '1', name: 'a' }) → positional array via paramOrder
|
|
79
|
-
* - Positional args: run('a', 'b') → ['a', 'b']
|
|
80
|
-
* - No args: run() → undefined
|
|
81
|
-
*/
|
|
82
|
-
function resolveParams(params, paramOrder) {
|
|
83
|
-
if (params.length === 0)
|
|
84
|
-
return undefined;
|
|
85
|
-
// If paramOrder exists and first arg is a plain object, do named→positional translation
|
|
86
|
-
if (paramOrder && params.length === 1 && params[0] !== null && typeof params[0] === 'object' && !Array.isArray(params[0]) && !(params[0] instanceof Buffer) && !(params[0] instanceof Uint8Array)) {
|
|
87
|
-
const obj = params[0];
|
|
88
|
-
return paramOrder.map(name => obj[name]);
|
|
89
|
-
}
|
|
90
|
-
// Positional: single value or already an array
|
|
91
|
-
if (params.length === 1)
|
|
92
|
-
return params[0];
|
|
93
|
-
return params;
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Wraps node-sqlite3-wasm to match the better-sqlite3 interface.
|
|
97
|
-
*
|
|
98
|
-
* Key differences handled:
|
|
99
|
-
* - better-sqlite3 uses @named params; node-sqlite3-wasm uses positional ? only
|
|
100
|
-
* - better-sqlite3 uses variadic args: stmt.run(a, b, c)
|
|
101
|
-
* - node-sqlite3-wasm uses a single array/object: stmt.run([a, b, c])
|
|
102
|
-
* - node-sqlite3-wasm has `isOpen` instead of `open`
|
|
103
|
-
* - node-sqlite3-wasm doesn't have a `pragma()` method
|
|
104
|
-
* - node-sqlite3-wasm doesn't have a `transaction()` method
|
|
105
|
-
*/
|
|
106
|
-
class WasmDatabaseAdapter {
|
|
24
|
+
class NodeSqliteAdapter {
|
|
107
25
|
_db;
|
|
108
|
-
// Track raw WASM statements so we can finalize them on close.
|
|
109
|
-
// node-sqlite3-wasm won't release its file lock if statements are left open.
|
|
110
|
-
_openStmts = new Set();
|
|
111
26
|
constructor(dbPath) {
|
|
112
27
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
113
|
-
const {
|
|
114
|
-
this._db = new
|
|
28
|
+
const { DatabaseSync } = require('node:sqlite');
|
|
29
|
+
this._db = new DatabaseSync(dbPath);
|
|
115
30
|
}
|
|
116
31
|
get open() {
|
|
117
32
|
return this._db.isOpen;
|
|
118
33
|
}
|
|
119
34
|
prepare(sql) {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
35
|
+
// node:sqlite matches better-sqlite3's calling convention (variadic
|
|
36
|
+
// positional args, or a single object for @named params), so params forward
|
|
37
|
+
// through unchanged.
|
|
38
|
+
const stmt = this._db.prepare(sql);
|
|
123
39
|
return {
|
|
124
40
|
run(...params) {
|
|
125
|
-
const
|
|
126
|
-
const result = resolved !== undefined ? stmt.run(resolved) : stmt.run();
|
|
41
|
+
const r = stmt.run(...params);
|
|
127
42
|
return {
|
|
128
|
-
changes:
|
|
129
|
-
lastInsertRowid:
|
|
43
|
+
changes: Number(r?.changes ?? 0),
|
|
44
|
+
lastInsertRowid: r?.lastInsertRowid ?? 0,
|
|
130
45
|
};
|
|
131
46
|
},
|
|
132
47
|
get(...params) {
|
|
133
|
-
|
|
134
|
-
return resolved !== undefined ? stmt.get(resolved) : stmt.get();
|
|
48
|
+
return stmt.get(...params);
|
|
135
49
|
},
|
|
136
50
|
all(...params) {
|
|
137
|
-
|
|
138
|
-
return resolved !== undefined ? stmt.all(resolved) : stmt.all();
|
|
51
|
+
return stmt.all(...params);
|
|
139
52
|
},
|
|
140
53
|
};
|
|
141
54
|
}
|
|
142
55
|
exec(sql) {
|
|
143
56
|
this._db.exec(sql);
|
|
144
57
|
}
|
|
145
|
-
pragma(str) {
|
|
58
|
+
pragma(str, options) {
|
|
146
59
|
const trimmed = str.trim();
|
|
147
|
-
// Write pragma
|
|
60
|
+
// Write pragma ("key = value"): node:sqlite is real SQLite, so every pragma
|
|
61
|
+
// (WAL, mmap, synchronous, …) applies as-is.
|
|
148
62
|
if (trimmed.includes('=')) {
|
|
149
|
-
|
|
150
|
-
const key = trimmed.substring(0, eqIdx).trim();
|
|
151
|
-
const value = trimmed.substring(eqIdx + 1).trim();
|
|
152
|
-
// WAL is not supported in WASM SQLite — use DELETE journal mode
|
|
153
|
-
if (key === 'journal_mode' && value.toUpperCase() === 'WAL') {
|
|
154
|
-
this._db.exec('PRAGMA journal_mode = DELETE');
|
|
155
|
-
return;
|
|
156
|
-
}
|
|
157
|
-
// mmap is not available in WASM — silently skip
|
|
158
|
-
if (key === 'mmap_size') {
|
|
159
|
-
return;
|
|
160
|
-
}
|
|
161
|
-
// synchronous = NORMAL is unsafe without WAL — use FULL
|
|
162
|
-
if (key === 'synchronous' && value.toUpperCase() === 'NORMAL') {
|
|
163
|
-
this._db.exec('PRAGMA synchronous = FULL');
|
|
164
|
-
return;
|
|
165
|
-
}
|
|
166
|
-
this._db.exec(`PRAGMA ${key} = ${value}`);
|
|
63
|
+
this._db.exec(`PRAGMA ${trimmed}`);
|
|
167
64
|
return;
|
|
168
65
|
}
|
|
169
|
-
// Read pragma:
|
|
170
|
-
|
|
171
|
-
const
|
|
172
|
-
|
|
173
|
-
|
|
66
|
+
// Read pragma. Default: the row object (e.g. { journal_mode: 'wal' }).
|
|
67
|
+
// `{ simple: true }` returns just the single column value, like better-sqlite3.
|
|
68
|
+
const row = this._db.prepare(`PRAGMA ${trimmed}`).get();
|
|
69
|
+
if (options?.simple) {
|
|
70
|
+
return row && typeof row === 'object' ? Object.values(row)[0] : row;
|
|
71
|
+
}
|
|
72
|
+
return row;
|
|
174
73
|
}
|
|
175
74
|
transaction(fn) {
|
|
176
75
|
return (...args) => {
|
|
@@ -187,51 +86,29 @@ class WasmDatabaseAdapter {
|
|
|
187
86
|
};
|
|
188
87
|
}
|
|
189
88
|
close() {
|
|
190
|
-
//
|
|
191
|
-
//
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
try {
|
|
195
|
-
stmt.finalize();
|
|
196
|
-
}
|
|
197
|
-
catch { /* already finalized */ }
|
|
198
|
-
}
|
|
199
|
-
this._openStmts.clear();
|
|
200
|
-
this._db.close();
|
|
89
|
+
// node:sqlite's DatabaseSync.close() throws if already closed; make it
|
|
90
|
+
// idempotent to match better-sqlite3 (callers may close more than once).
|
|
91
|
+
if (this._db.isOpen)
|
|
92
|
+
this._db.close();
|
|
201
93
|
}
|
|
202
94
|
}
|
|
203
95
|
/**
|
|
204
|
-
* Create a database connection
|
|
205
|
-
*
|
|
206
|
-
* alongside the db so each `DatabaseConnection` can
|
|
207
|
-
*
|
|
208
|
-
*
|
|
209
|
-
* race / overwrite.
|
|
96
|
+
* Create a database connection backed by `node:sqlite`.
|
|
97
|
+
*
|
|
98
|
+
* Returns the active backend alongside the db so each `DatabaseConnection` can
|
|
99
|
+
* report it per-instance — MCP can open multiple project DBs in one process, so
|
|
100
|
+
* a process-global would race.
|
|
210
101
|
*/
|
|
211
102
|
function createDatabase(dbPath) {
|
|
212
|
-
let nativeError;
|
|
213
|
-
let wasmError;
|
|
214
|
-
// Try native better-sqlite3 first
|
|
215
|
-
try {
|
|
216
|
-
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
217
|
-
const Database = require('better-sqlite3');
|
|
218
|
-
const db = new Database(dbPath);
|
|
219
|
-
return { db: db, backend: 'native' };
|
|
220
|
-
}
|
|
221
|
-
catch (error) {
|
|
222
|
-
nativeError = error instanceof Error ? error.message : String(error);
|
|
223
|
-
}
|
|
224
|
-
// Fall back to WASM
|
|
225
103
|
try {
|
|
226
|
-
|
|
227
|
-
console.warn(buildWasmFallbackBanner(nativeError));
|
|
228
|
-
return { db, backend: 'wasm' };
|
|
104
|
+
return { db: new NodeSqliteAdapter(dbPath), backend: 'node-sqlite' };
|
|
229
105
|
}
|
|
230
106
|
catch (error) {
|
|
231
|
-
|
|
107
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
108
|
+
throw new Error('Failed to open SQLite via the built-in node:sqlite module.\n' +
|
|
109
|
+
'CodeGraph requires node:sqlite (Node.js 22.5+). Install the self-contained\n' +
|
|
110
|
+
'CodeGraph release (it bundles a compatible Node), or run on Node 22.5+.\n' +
|
|
111
|
+
`Underlying error: ${msg}`);
|
|
232
112
|
}
|
|
233
|
-
throw new Error(`Failed to load any SQLite backend.\n` +
|
|
234
|
-
` Native (better-sqlite3): ${nativeError}\n` +
|
|
235
|
-
` WASM (node-sqlite3-wasm): ${wasmError}`);
|
|
236
113
|
}
|
|
237
114
|
//# sourceMappingURL=sqlite-adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-adapter.js","sourceRoot":"","sources":["../../src/db/sqlite-adapter.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"sqlite-adapter.js","sourceRoot":"","sources":["../../src/db/sqlite-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,11 +7,17 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { Parser } from 'web-tree-sitter';
|
|
9
9
|
import { Language } from '../types';
|
|
10
|
-
export type GrammarLanguage = Exclude<Language, 'svelte' | 'vue' | 'liquid' | 'unknown'>;
|
|
10
|
+
export type GrammarLanguage = Exclude<Language, 'svelte' | 'vue' | 'liquid' | 'yaml' | 'twig' | 'unknown'>;
|
|
11
11
|
/**
|
|
12
12
|
* File extension to Language mapping
|
|
13
13
|
*/
|
|
14
14
|
export declare const EXTENSION_MAP: Record<string, Language>;
|
|
15
|
+
/**
|
|
16
|
+
* Whether a file is one CodeGraph can parse, based purely on its extension.
|
|
17
|
+
* This is the single source of truth for "should we index this file" — derived
|
|
18
|
+
* from EXTENSION_MAP so parser support and indexing selection never drift.
|
|
19
|
+
*/
|
|
20
|
+
export declare function isSourceFile(filePath: string): boolean;
|
|
15
21
|
/**
|
|
16
22
|
* Initialize the tree-sitter WASM runtime. Must be called before loading grammars.
|
|
17
23
|
* Does NOT load any grammar WASM files — use loadGrammarsForLanguages() for that.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grammars.d.ts","sourceRoot":"","sources":["../../src/extraction/grammars.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,MAAM,EAA4B,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"grammars.d.ts","sourceRoot":"","sources":["../../src/extraction/grammars.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,MAAM,EAA4B,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC;AA6B3G;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAkDlD,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAItD;AAWD;;;;GAIG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAMlD;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCnF;AAED;;;GAGG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAGrD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAE/C;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,CAc3D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAU1E;AAWD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAQ/D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAI3D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,QAAQ,EAAE,CAElD;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAMpD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAQvC;AAED;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAM/E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CA8BjE"}
|
|
@@ -41,6 +41,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
41
41
|
})();
|
|
42
42
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
43
|
exports.EXTENSION_MAP = void 0;
|
|
44
|
+
exports.isSourceFile = isSourceFile;
|
|
44
45
|
exports.initGrammars = initGrammars;
|
|
45
46
|
exports.loadGrammarsForLanguages = loadGrammarsForLanguages;
|
|
46
47
|
exports.loadAllGrammars = loadAllGrammars;
|
|
@@ -79,6 +80,8 @@ const WASM_GRAMMAR_FILES = {
|
|
|
79
80
|
dart: 'tree-sitter-dart.wasm',
|
|
80
81
|
pascal: 'tree-sitter-pascal.wasm',
|
|
81
82
|
scala: 'tree-sitter-scala.wasm',
|
|
83
|
+
lua: 'tree-sitter-lua.wasm',
|
|
84
|
+
luau: 'tree-sitter-luau.wasm',
|
|
82
85
|
};
|
|
83
86
|
/**
|
|
84
87
|
* File extension to Language mapping
|
|
@@ -104,6 +107,16 @@ exports.EXTENSION_MAP = {
|
|
|
104
107
|
'.hxx': 'cpp',
|
|
105
108
|
'.cs': 'csharp',
|
|
106
109
|
'.php': 'php',
|
|
110
|
+
// Drupal-specific PHP file extensions
|
|
111
|
+
'.module': 'php',
|
|
112
|
+
'.install': 'php',
|
|
113
|
+
'.theme': 'php',
|
|
114
|
+
'.inc': 'php',
|
|
115
|
+
// YAML (used for Drupal routing files; no symbol extraction, file-level tracking only)
|
|
116
|
+
'.yml': 'yaml',
|
|
117
|
+
'.yaml': 'yaml',
|
|
118
|
+
// Twig templates (file-level tracking only, no symbol extraction)
|
|
119
|
+
'.twig': 'twig',
|
|
107
120
|
'.rb': 'ruby',
|
|
108
121
|
'.rake': 'ruby',
|
|
109
122
|
'.swift': 'swift',
|
|
@@ -121,7 +134,20 @@ exports.EXTENSION_MAP = {
|
|
|
121
134
|
'.fmx': 'pascal',
|
|
122
135
|
'.scala': 'scala',
|
|
123
136
|
'.sc': 'scala',
|
|
137
|
+
'.lua': 'lua',
|
|
138
|
+
'.luau': 'luau',
|
|
124
139
|
};
|
|
140
|
+
/**
|
|
141
|
+
* Whether a file is one CodeGraph can parse, based purely on its extension.
|
|
142
|
+
* This is the single source of truth for "should we index this file" — derived
|
|
143
|
+
* from EXTENSION_MAP so parser support and indexing selection never drift.
|
|
144
|
+
*/
|
|
145
|
+
function isSourceFile(filePath) {
|
|
146
|
+
const dot = filePath.lastIndexOf('.');
|
|
147
|
+
if (dot < 0)
|
|
148
|
+
return false;
|
|
149
|
+
return filePath.slice(dot).toLowerCase() in exports.EXTENSION_MAP;
|
|
150
|
+
}
|
|
125
151
|
/**
|
|
126
152
|
* Caches for loaded grammars and parsers
|
|
127
153
|
*/
|
|
@@ -158,8 +184,12 @@ async function loadGrammarsForLanguages(languages) {
|
|
|
158
184
|
for (const lang of toLoad) {
|
|
159
185
|
const wasmFile = WASM_GRAMMAR_FILES[lang];
|
|
160
186
|
try {
|
|
161
|
-
//
|
|
162
|
-
|
|
187
|
+
// Some grammars ship their own WASMs (not in tree-sitter-wasms, or the
|
|
188
|
+
// tree-sitter-wasms build is too old). Lua: tree-sitter-wasms ships an
|
|
189
|
+
// ABI-13 build that corrupts the shared WASM heap under web-tree-sitter
|
|
190
|
+
// 0.25 (drops nested calls/imports on every file after the first); we
|
|
191
|
+
// vendor the upstream ABI-15 wasm instead.
|
|
192
|
+
const wasmPath = (lang === 'pascal' || lang === 'scala' || lang === 'lua' || lang === 'luau')
|
|
163
193
|
? path.join(__dirname, 'wasm', wasmFile)
|
|
164
194
|
: require.resolve(`tree-sitter-wasms/out/${wasmFile}`);
|
|
165
195
|
const language = await web_tree_sitter_1.Language.load(wasmPath);
|
|
@@ -235,6 +265,10 @@ function isLanguageSupported(language) {
|
|
|
235
265
|
return true; // custom extractor (script block delegation)
|
|
236
266
|
if (language === 'liquid')
|
|
237
267
|
return true; // custom regex extractor
|
|
268
|
+
if (language === 'yaml')
|
|
269
|
+
return true; // file-level tracking only; Drupal routing extraction via framework resolver
|
|
270
|
+
if (language === 'twig')
|
|
271
|
+
return true; // file-level tracking only
|
|
238
272
|
if (language === 'unknown')
|
|
239
273
|
return false;
|
|
240
274
|
return language in WASM_GRAMMAR_FILES;
|
|
@@ -245,6 +279,8 @@ function isLanguageSupported(language) {
|
|
|
245
279
|
function isGrammarLoaded(language) {
|
|
246
280
|
if (language === 'svelte' || language === 'vue' || language === 'liquid')
|
|
247
281
|
return true;
|
|
282
|
+
if (language === 'yaml' || language === 'twig')
|
|
283
|
+
return true; // no WASM grammar needed
|
|
248
284
|
return languageCache.has(language);
|
|
249
285
|
}
|
|
250
286
|
/**
|
|
@@ -315,6 +351,10 @@ function getLanguageDisplayName(language) {
|
|
|
315
351
|
liquid: 'Liquid',
|
|
316
352
|
pascal: 'Pascal / Delphi',
|
|
317
353
|
scala: 'Scala',
|
|
354
|
+
lua: 'Lua',
|
|
355
|
+
luau: 'Luau',
|
|
356
|
+
yaml: 'YAML',
|
|
357
|
+
twig: 'Twig',
|
|
318
358
|
unknown: 'Unknown',
|
|
319
359
|
};
|
|
320
360
|
return names[language] || language;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grammars.js","sourceRoot":"","sources":["../../src/extraction/grammars.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"grammars.js","sourceRoot":"","sources":["../../src/extraction/grammars.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Coordinates file scanning, parsing, and database storage.
|
|
5
5
|
*/
|
|
6
6
|
import * as fs from 'fs';
|
|
7
|
-
import { ExtractionResult, ExtractionError
|
|
7
|
+
import { ExtractionResult, ExtractionError } from '../types';
|
|
8
8
|
import { QueryBuilder } from '../db/queries';
|
|
9
9
|
/**
|
|
10
10
|
* Progress callback for indexing operations
|
|
@@ -45,28 +45,23 @@ export interface SyncResult {
|
|
|
45
45
|
*/
|
|
46
46
|
export declare function hashContent(content: string): string;
|
|
47
47
|
/**
|
|
48
|
-
*
|
|
49
|
-
*/
|
|
50
|
-
export declare function shouldIncludeFile(filePath: string, config: CodeGraphConfig): boolean;
|
|
51
|
-
/**
|
|
52
|
-
* Recursively scan directory for source files.
|
|
48
|
+
* Recursively scan a directory for source files.
|
|
53
49
|
*
|
|
54
|
-
* In git repos, uses `git ls-files`
|
|
55
|
-
*
|
|
56
|
-
*
|
|
50
|
+
* In git repos, uses `git ls-files` (inherently respects .gitignore at all
|
|
51
|
+
* levels), then keeps files with a supported source extension. For non-git
|
|
52
|
+
* projects, falls back to a filesystem walk that parses .gitignore itself.
|
|
57
53
|
*/
|
|
58
|
-
export declare function scanDirectory(rootDir: string,
|
|
54
|
+
export declare function scanDirectory(rootDir: string, onProgress?: (current: number, file: string) => void): string[];
|
|
59
55
|
/**
|
|
60
56
|
* Async variant of scanDirectory that yields to the event loop periodically,
|
|
61
57
|
* allowing worker threads to receive and render progress messages.
|
|
62
58
|
*/
|
|
63
|
-
export declare function scanDirectoryAsync(rootDir: string,
|
|
59
|
+
export declare function scanDirectoryAsync(rootDir: string, onProgress?: (current: number, file: string) => void): Promise<string[]>;
|
|
64
60
|
/**
|
|
65
61
|
* Extraction orchestrator
|
|
66
62
|
*/
|
|
67
63
|
export declare class ExtractionOrchestrator {
|
|
68
64
|
private rootDir;
|
|
69
|
-
private config;
|
|
70
65
|
private queries;
|
|
71
66
|
/**
|
|
72
67
|
* Names of frameworks detected for this project, populated by indexAll().
|
|
@@ -75,7 +70,7 @@ export declare class ExtractionOrchestrator {
|
|
|
75
70
|
* hasn't run yet so single-file re-index paths can detect on the spot.
|
|
76
71
|
*/
|
|
77
72
|
private detectedFrameworkNames;
|
|
78
|
-
constructor(rootDir: string,
|
|
73
|
+
constructor(rootDir: string, queries: QueryBuilder);
|
|
79
74
|
/**
|
|
80
75
|
* Build a filesystem-backed ResolutionContext sufficient for framework
|
|
81
76
|
* detection. Graph-query methods (getNodesByName etc.) return empty because
|
|
@@ -126,5 +121,5 @@ export declare class ExtractionOrchestrator {
|
|
|
126
121
|
};
|
|
127
122
|
}
|
|
128
123
|
export { extractFromSource } from './tree-sitter';
|
|
129
|
-
export { detectLanguage, isLanguageSupported, isGrammarLoaded, getSupportedLanguages, initGrammars, loadGrammarsForLanguages, loadAllGrammars } from './grammars';
|
|
124
|
+
export { detectLanguage, isSourceFile, isLanguageSupported, isGrammarLoaded, getSupportedLanguages, initGrammars, loadGrammarsForLanguages, loadAllGrammars } from './grammars';
|
|
130
125
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/extraction/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAKzB,OAAO,EAGL,gBAAgB,EAChB,eAAe,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/extraction/index.ts"],"names":[],"mappings":"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"}
|