@colbymchenry/codegraph-darwin-x64 1.1.0 → 1.1.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/lib/dist/bin/codegraph.js +79 -52
- package/lib/dist/bin/codegraph.js.map +1 -1
- package/lib/dist/bin/command-supervision.d.ts +12 -0
- package/lib/dist/bin/command-supervision.d.ts.map +1 -0
- package/lib/dist/bin/command-supervision.js +76 -0
- package/lib/dist/bin/command-supervision.js.map +1 -0
- package/lib/dist/db/queries.d.ts.map +1 -1
- package/lib/dist/db/queries.js +10 -2
- package/lib/dist/db/queries.js.map +1 -1
- package/lib/dist/directory.d.ts +32 -0
- package/lib/dist/directory.d.ts.map +1 -1
- package/lib/dist/directory.js +83 -0
- package/lib/dist/directory.js.map +1 -1
- package/lib/dist/extraction/index.d.ts +19 -4
- package/lib/dist/extraction/index.d.ts.map +1 -1
- package/lib/dist/extraction/index.js +287 -241
- package/lib/dist/extraction/index.js.map +1 -1
- package/lib/dist/extraction/parse-pool.d.ts +126 -0
- package/lib/dist/extraction/parse-pool.d.ts.map +1 -0
- package/lib/dist/extraction/parse-pool.js +319 -0
- package/lib/dist/extraction/parse-pool.js.map +1 -0
- package/lib/dist/extraction/tree-sitter.d.ts.map +1 -1
- package/lib/dist/extraction/tree-sitter.js +48 -19
- package/lib/dist/extraction/tree-sitter.js.map +1 -1
- package/lib/dist/mcp/daemon-paths.d.ts +30 -3
- package/lib/dist/mcp/daemon-paths.d.ts.map +1 -1
- package/lib/dist/mcp/daemon-paths.js +50 -10
- package/lib/dist/mcp/daemon-paths.js.map +1 -1
- package/lib/dist/mcp/daemon-registry.d.ts.map +1 -1
- package/lib/dist/mcp/daemon-registry.js +7 -3
- package/lib/dist/mcp/daemon-registry.js.map +1 -1
- package/lib/dist/mcp/daemon.d.ts +38 -0
- package/lib/dist/mcp/daemon.d.ts.map +1 -1
- package/lib/dist/mcp/daemon.js +168 -19
- package/lib/dist/mcp/daemon.js.map +1 -1
- package/lib/dist/mcp/engine.d.ts +17 -0
- package/lib/dist/mcp/engine.d.ts.map +1 -1
- package/lib/dist/mcp/engine.js +73 -1
- package/lib/dist/mcp/engine.js.map +1 -1
- package/lib/dist/mcp/index.d.ts.map +1 -1
- package/lib/dist/mcp/index.js +25 -43
- package/lib/dist/mcp/index.js.map +1 -1
- package/lib/dist/mcp/ppid-watchdog.d.ts +18 -0
- package/lib/dist/mcp/ppid-watchdog.d.ts.map +1 -1
- package/lib/dist/mcp/ppid-watchdog.js +37 -0
- package/lib/dist/mcp/ppid-watchdog.js.map +1 -1
- package/lib/dist/mcp/proxy.d.ts.map +1 -1
- package/lib/dist/mcp/proxy.js +14 -1
- package/lib/dist/mcp/proxy.js.map +1 -1
- package/lib/dist/mcp/query-pool.d.ts +94 -0
- package/lib/dist/mcp/query-pool.d.ts.map +1 -0
- package/lib/dist/mcp/query-pool.js +297 -0
- package/lib/dist/mcp/query-pool.js.map +1 -0
- package/lib/dist/mcp/query-worker.d.ts +24 -0
- package/lib/dist/mcp/query-worker.d.ts.map +1 -0
- package/lib/dist/mcp/query-worker.js +87 -0
- package/lib/dist/mcp/query-worker.js.map +1 -0
- package/lib/dist/mcp/tools.d.ts +57 -0
- package/lib/dist/mcp/tools.d.ts.map +1 -1
- package/lib/dist/mcp/tools.js +147 -37
- package/lib/dist/mcp/tools.js.map +1 -1
- package/lib/dist/project-config.d.ts +37 -0
- package/lib/dist/project-config.d.ts.map +1 -1
- package/lib/dist/project-config.js +127 -32
- package/lib/dist/project-config.js.map +1 -1
- package/lib/dist/resolution/c-fnptr-synthesizer.d.ts +0 -28
- package/lib/dist/resolution/c-fnptr-synthesizer.d.ts.map +1 -1
- package/lib/dist/resolution/c-fnptr-synthesizer.js +765 -79
- package/lib/dist/resolution/c-fnptr-synthesizer.js.map +1 -1
- package/lib/dist/resolution/name-matcher.d.ts.map +1 -1
- package/lib/dist/resolution/name-matcher.js +44 -0
- package/lib/dist/resolution/name-matcher.js.map +1 -1
- package/lib/node_modules/.package-lock.json +1 -1
- package/lib/package.json +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Parse worker pool — runs tree-sitter parsing across N worker threads so a full
|
|
4
|
+
* `codegraph index` uses every core instead of pinning one.
|
|
5
|
+
*
|
|
6
|
+
* Why this exists: `ExtractionOrchestrator.indexAll()` already reads files in
|
|
7
|
+
* parallel, but it parsed them through a SINGLE worker thread, so on an
|
|
8
|
+
* N-core machine indexing a large repo used one core and left the rest idle
|
|
9
|
+
* (issue #1015, the parse-time half of #320). Spreading the parse calls across a
|
|
10
|
+
* pool of workers — each its own tree-sitter WASM heap — restores multi-core
|
|
11
|
+
* throughput. SQLite storage stays on the main thread (it isn't thread-safe), so
|
|
12
|
+
* only the CPU-bound parse step is parallelised; results are stored as they
|
|
13
|
+
* arrive, in whatever order they finish.
|
|
14
|
+
*
|
|
15
|
+
* Design mirrors {@link ../mcp/query-pool} (idle-list dispatch, lazy growth,
|
|
16
|
+
* throttled cold-starts, crash recovery), with parse-specific behaviour:
|
|
17
|
+
* - per-worker recycle: WASM linear memory grows but never shrinks, so each
|
|
18
|
+
* worker is torn down and replaced after `recycleInterval` parses to reclaim
|
|
19
|
+
* its heap — the same reason the old single worker recycled.
|
|
20
|
+
* - reject, don't retry: a parse that crashes or times out its worker REJECTS
|
|
21
|
+
* (with a message the orchestrator's retry pass recognises) rather than being
|
|
22
|
+
* silently requeued — the orchestrator owns the smarter two-stage retry
|
|
23
|
+
* (fresh worker, then comment-stripped) on a clean WASM heap.
|
|
24
|
+
* - a size-1 pool reproduces the old single-worker path exactly, which is the
|
|
25
|
+
* conservative rollback: set `CODEGRAPH_PARSE_WORKERS=1`.
|
|
26
|
+
*
|
|
27
|
+
* Memory: peak scales with pool size (≈ size × a worker's pre-recycle heap), so
|
|
28
|
+
* the default is capped and the env var lets constrained machines dial it down.
|
|
29
|
+
*/
|
|
30
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
|
+
exports.ParseWorkerPool = void 0;
|
|
32
|
+
exports.resolveParsePoolSize = resolveParsePoolSize;
|
|
33
|
+
const worker_threads_1 = require("worker_threads");
|
|
34
|
+
/** Default upper bound on the pool size derived from the core count. */
|
|
35
|
+
const DEFAULT_PARSE_POOL_CAP = 8;
|
|
36
|
+
/** Hard ceiling on pool size regardless of an explicit env override. */
|
|
37
|
+
const MAX_PARSE_POOL_SIZE = 16;
|
|
38
|
+
/** Parses a worker performs before it's recycled to reclaim WASM heap. */
|
|
39
|
+
const DEFAULT_RECYCLE_INTERVAL = 250;
|
|
40
|
+
/** Base per-parse timeout; scaled up for large files by the caller's formula. */
|
|
41
|
+
const DEFAULT_PARSE_TIMEOUT_MS = 10_000;
|
|
42
|
+
/**
|
|
43
|
+
* Max workers cold-starting at once. A worker's cold start is heavy (module load
|
|
44
|
+
* + grammar WASM compile); starting the whole pool simultaneously thrashes CPU.
|
|
45
|
+
* Warming a couple at a time keeps each start fast while the pool still reaches
|
|
46
|
+
* full size within a few parses of a large run.
|
|
47
|
+
*/
|
|
48
|
+
const MAX_CONCURRENT_SPAWN = 2;
|
|
49
|
+
/**
|
|
50
|
+
* Total worker deaths before the pool stops respawning and fails outstanding
|
|
51
|
+
* work, so a systematically-broken worker platform degrades instead of
|
|
52
|
+
* respawning forever. Set high: normal per-file WASM crashes are cleared by the
|
|
53
|
+
* orchestrator's retry pass and shouldn't trip this on a merely-crashy repo.
|
|
54
|
+
*/
|
|
55
|
+
const CRASH_BUDGET = 100;
|
|
56
|
+
/**
|
|
57
|
+
* Resolve the pool size from the `CODEGRAPH_PARSE_WORKERS` override and the
|
|
58
|
+
* machine's core count.
|
|
59
|
+
* - explicit `0` or `1` → 1 worker (the old single-worker path; the rollback).
|
|
60
|
+
* - explicit `N` → N, clamped to [1, 16].
|
|
61
|
+
* - unset / blank / non-numeric → `clamp(cores - 1, 1, 8)` (leave a core for
|
|
62
|
+
* the main thread + UI; never zero — parsing always needs a worker).
|
|
63
|
+
*/
|
|
64
|
+
function resolveParsePoolSize(envVal, cpuCount) {
|
|
65
|
+
if (envVal !== undefined && envVal !== '') {
|
|
66
|
+
const n = Number(envVal);
|
|
67
|
+
if (Number.isFinite(n) && n >= 0) {
|
|
68
|
+
return Math.max(1, Math.min(Math.floor(n), MAX_PARSE_POOL_SIZE));
|
|
69
|
+
}
|
|
70
|
+
// non-numeric / negative → fall through to the default
|
|
71
|
+
}
|
|
72
|
+
return Math.max(1, Math.min(cpuCount - 1, DEFAULT_PARSE_POOL_CAP));
|
|
73
|
+
}
|
|
74
|
+
class ParseWorkerPool {
|
|
75
|
+
idle = [];
|
|
76
|
+
queue = [];
|
|
77
|
+
inflight = new Map();
|
|
78
|
+
workers = new Set();
|
|
79
|
+
// Spawned but not yet 'grammars-loaded'. Growth counts these so a single first
|
|
80
|
+
// parse doesn't spawn the whole pool before the eager worker reports ready.
|
|
81
|
+
pending = new Set();
|
|
82
|
+
parseCounts = new Map();
|
|
83
|
+
nextId = 1;
|
|
84
|
+
totalCrashes = 0;
|
|
85
|
+
destroyed = false;
|
|
86
|
+
languages;
|
|
87
|
+
maxSize;
|
|
88
|
+
recycleInterval;
|
|
89
|
+
parseTimeoutMs;
|
|
90
|
+
createWorker;
|
|
91
|
+
log;
|
|
92
|
+
constructor(opts) {
|
|
93
|
+
this.languages = opts.languages;
|
|
94
|
+
this.maxSize = Math.max(1, Math.min(opts.size, MAX_PARSE_POOL_SIZE));
|
|
95
|
+
this.recycleInterval = opts.recycleInterval ?? DEFAULT_RECYCLE_INTERVAL;
|
|
96
|
+
this.parseTimeoutMs = opts.parseTimeoutMs ?? DEFAULT_PARSE_TIMEOUT_MS;
|
|
97
|
+
this.log = opts.log ?? (() => { });
|
|
98
|
+
if (opts.createWorker) {
|
|
99
|
+
this.createWorker = opts.createWorker;
|
|
100
|
+
}
|
|
101
|
+
else if (opts.workerScriptPath) {
|
|
102
|
+
const scriptPath = opts.workerScriptPath;
|
|
103
|
+
this.createWorker = () => new worker_threads_1.Worker(scriptPath);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
throw new Error('ParseWorkerPool requires workerScriptPath or createWorker');
|
|
107
|
+
}
|
|
108
|
+
this.spawnOne(); // one eager warm worker, ready for the first parse
|
|
109
|
+
}
|
|
110
|
+
/** Pool size cap (for logging). */
|
|
111
|
+
get size() { return this.maxSize; }
|
|
112
|
+
/** Live worker count (for tests). */
|
|
113
|
+
get liveWorkers() { return this.workers.size; }
|
|
114
|
+
/** False once the crash budget is exhausted (or after destroy). */
|
|
115
|
+
get healthy() {
|
|
116
|
+
return !this.destroyed && this.totalCrashes < CRASH_BUDGET;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Parse one file on the pool. Resolves with the extraction result, or REJECTS
|
|
120
|
+
* if the parse times out or its worker crashes — the caller records the error
|
|
121
|
+
* and (for worker-exit/OOM rejections) re-attempts in its retry pass.
|
|
122
|
+
*/
|
|
123
|
+
requestParse(task) {
|
|
124
|
+
if (this.destroyed)
|
|
125
|
+
return Promise.reject(new Error('Parse pool destroyed'));
|
|
126
|
+
return new Promise((resolve, reject) => {
|
|
127
|
+
this.queue.push({ id: this.nextId++, task, resolve, reject, settled: false });
|
|
128
|
+
this.drain();
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
spawnOne() {
|
|
132
|
+
if (this.destroyed || this.workers.size >= this.maxSize || !this.healthy)
|
|
133
|
+
return;
|
|
134
|
+
let w;
|
|
135
|
+
try {
|
|
136
|
+
w = this.createWorker();
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
this.totalCrashes++; // counts toward the circuit breaker
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
this.workers.add(w);
|
|
143
|
+
this.pending.add(w);
|
|
144
|
+
this.parseCounts.set(w, 0);
|
|
145
|
+
w.on('message', (m) => this.onMessage(w, (m ?? {})));
|
|
146
|
+
w.on('error', (e) => this.onWorkerGone(w, `Worker error: ${e?.message ?? 'unknown'}`));
|
|
147
|
+
w.on('exit', (code) => { if (code !== 0)
|
|
148
|
+
this.onWorkerGone(w, `Worker exited with code ${code}`); });
|
|
149
|
+
// Load grammars; the worker replies 'grammars-loaded' and only then is idle.
|
|
150
|
+
w.postMessage({ type: 'load-grammars', languages: this.languages });
|
|
151
|
+
}
|
|
152
|
+
onMessage(w, m) {
|
|
153
|
+
if (m.type === 'grammars-loaded') {
|
|
154
|
+
if (!this.workers.has(w))
|
|
155
|
+
return; // recycled/destroyed before ready
|
|
156
|
+
this.pending.delete(w);
|
|
157
|
+
this.idle.push(w);
|
|
158
|
+
this.drain();
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
if (m.type === 'parse-result') {
|
|
162
|
+
const job = this.inflight.get(w);
|
|
163
|
+
if (!job || (m.id !== undefined && m.id !== job.id))
|
|
164
|
+
return; // stale (post-recycle)
|
|
165
|
+
this.inflight.delete(w);
|
|
166
|
+
// Recycle the worker once it's done enough parses to have grown its WASM
|
|
167
|
+
// heap; otherwise return it to the idle set for the next job.
|
|
168
|
+
if ((this.parseCounts.get(w) ?? 0) >= this.recycleInterval) {
|
|
169
|
+
this.recycle(w);
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
this.idle.push(w);
|
|
173
|
+
}
|
|
174
|
+
this.settle(job, m.result);
|
|
175
|
+
this.drain();
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/** A worker died (crash hook / OOM exit / spawn error). Reject its in-flight
|
|
179
|
+
* parse so the caller's retry pass can re-attempt it, then respawn. */
|
|
180
|
+
onWorkerGone(w, message) {
|
|
181
|
+
if (!this.workers.has(w))
|
|
182
|
+
return; // already handled (error+exit both fire), or recycled
|
|
183
|
+
this.removeWorker(w);
|
|
184
|
+
this.totalCrashes++;
|
|
185
|
+
const job = this.inflight.get(w);
|
|
186
|
+
this.inflight.delete(w);
|
|
187
|
+
try {
|
|
188
|
+
void w.terminate();
|
|
189
|
+
}
|
|
190
|
+
catch { /* already gone */ }
|
|
191
|
+
if (job)
|
|
192
|
+
this.settle(job, undefined, new Error(message));
|
|
193
|
+
if (this.healthy)
|
|
194
|
+
this.spawnOne(); // keep capacity
|
|
195
|
+
this.drain();
|
|
196
|
+
}
|
|
197
|
+
/** Tear down a worker that has hit its recycle threshold and replace it. Not a
|
|
198
|
+
* crash, so it doesn't count against the budget. */
|
|
199
|
+
recycle(w) {
|
|
200
|
+
this.log(`Recycling worker after ${this.parseCounts.get(w)} parses (heap: ${Math.round(process.memoryUsage().rss / 1024 / 1024)}MB RSS)`);
|
|
201
|
+
this.removeWorker(w);
|
|
202
|
+
// Fire-and-forget: worker.terminate() can hang if WASM is wedged.
|
|
203
|
+
try {
|
|
204
|
+
void w.terminate();
|
|
205
|
+
}
|
|
206
|
+
catch { /* already gone */ }
|
|
207
|
+
if (this.healthy && !this.destroyed)
|
|
208
|
+
this.spawnOne();
|
|
209
|
+
}
|
|
210
|
+
removeWorker(w) {
|
|
211
|
+
this.workers.delete(w);
|
|
212
|
+
this.pending.delete(w);
|
|
213
|
+
this.parseCounts.delete(w);
|
|
214
|
+
this.idle = this.idle.filter((x) => x !== w);
|
|
215
|
+
}
|
|
216
|
+
dispatch(w, job) {
|
|
217
|
+
this.inflight.set(w, job);
|
|
218
|
+
this.parseCounts.set(w, (this.parseCounts.get(w) ?? 0) + 1);
|
|
219
|
+
// Scale the timeout for large files: base + 10s per 100KB (matches the
|
|
220
|
+
// original single-worker formula so pathological-file behaviour is unchanged).
|
|
221
|
+
const timeoutMs = this.parseTimeoutMs + Math.floor(job.task.content.length / 100_000) * 10_000;
|
|
222
|
+
job.timer = setTimeout(() => this.onTimeout(w, job, timeoutMs), timeoutMs);
|
|
223
|
+
job.timer.unref?.();
|
|
224
|
+
w.postMessage({
|
|
225
|
+
type: 'parse',
|
|
226
|
+
id: job.id,
|
|
227
|
+
filePath: job.task.filePath,
|
|
228
|
+
content: job.task.content,
|
|
229
|
+
frameworkNames: job.task.frameworkNames,
|
|
230
|
+
language: job.task.language,
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
onTimeout(w, job, ms) {
|
|
234
|
+
if (job.settled || !this.workers.has(w))
|
|
235
|
+
return;
|
|
236
|
+
this.log(`TIMEOUT: ${job.task.filePath} exceeded ${ms}ms — killing worker`);
|
|
237
|
+
// Kill the (possibly WASM-wedged) worker and reject this parse. A timeout
|
|
238
|
+
// isn't a crash — don't charge the budget — but the worker is gone, so spawn
|
|
239
|
+
// a replacement to keep capacity.
|
|
240
|
+
this.removeWorker(w);
|
|
241
|
+
this.inflight.delete(w);
|
|
242
|
+
try {
|
|
243
|
+
void w.terminate();
|
|
244
|
+
}
|
|
245
|
+
catch { /* already gone */ }
|
|
246
|
+
this.settle(job, undefined, new Error(`Parse timed out after ${ms}ms`));
|
|
247
|
+
if (this.healthy)
|
|
248
|
+
this.spawnOne();
|
|
249
|
+
this.drain();
|
|
250
|
+
}
|
|
251
|
+
drain() {
|
|
252
|
+
// Grow toward maxSize while queued work outstrips workers that are idle OR
|
|
253
|
+
// already on their way up — throttled so we never cold-start the whole pool
|
|
254
|
+
// at once.
|
|
255
|
+
while (this.queue.length > this.idle.length + this.pending.size &&
|
|
256
|
+
this.workers.size < this.maxSize &&
|
|
257
|
+
this.pending.size < MAX_CONCURRENT_SPAWN &&
|
|
258
|
+
!this.destroyed &&
|
|
259
|
+
this.healthy) {
|
|
260
|
+
this.spawnOne();
|
|
261
|
+
}
|
|
262
|
+
// Dispatch queued jobs to idle workers.
|
|
263
|
+
while (this.idle.length && this.queue.length) {
|
|
264
|
+
let job;
|
|
265
|
+
while (this.queue.length && (job = this.queue.shift()) && job.settled)
|
|
266
|
+
job = undefined;
|
|
267
|
+
if (!job || job.settled)
|
|
268
|
+
break;
|
|
269
|
+
const w = this.idle.pop();
|
|
270
|
+
this.dispatch(w, job);
|
|
271
|
+
}
|
|
272
|
+
// Hang-prevention: if there's queued work but nothing can ever run it (no
|
|
273
|
+
// idle workers, none spawning, none alive), fail it instead of hanging
|
|
274
|
+
// forever. Reached only when the crash budget is exhausted or after destroy.
|
|
275
|
+
if (this.queue.length && this.idle.length === 0 && this.pending.size === 0 && this.workers.size === 0) {
|
|
276
|
+
const reason = this.destroyed ? 'parse pool destroyed' : 'parse pool exhausted its worker crash budget';
|
|
277
|
+
for (const job of this.queue.splice(0))
|
|
278
|
+
this.settle(job, undefined, new Error(reason));
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
settle(job, result, err) {
|
|
282
|
+
if (job.settled)
|
|
283
|
+
return;
|
|
284
|
+
job.settled = true;
|
|
285
|
+
if (job.timer)
|
|
286
|
+
clearTimeout(job.timer);
|
|
287
|
+
if (err)
|
|
288
|
+
job.reject(err);
|
|
289
|
+
else
|
|
290
|
+
job.resolve(result);
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Recycle every idle worker now (fresh WASM heaps). The orchestrator calls
|
|
294
|
+
* this before its retry pass so crash-on-memory files get the cleanest heap.
|
|
295
|
+
*/
|
|
296
|
+
recycleAll() {
|
|
297
|
+
for (const w of [...this.idle])
|
|
298
|
+
this.recycle(w);
|
|
299
|
+
}
|
|
300
|
+
/** Terminate all workers and reject any outstanding parses. */
|
|
301
|
+
async destroy() {
|
|
302
|
+
if (this.destroyed)
|
|
303
|
+
return;
|
|
304
|
+
this.destroyed = true;
|
|
305
|
+
const ws = [...this.workers];
|
|
306
|
+
this.workers.clear();
|
|
307
|
+
this.pending.clear();
|
|
308
|
+
this.parseCounts.clear();
|
|
309
|
+
this.idle = [];
|
|
310
|
+
for (const job of [...this.inflight.values(), ...this.queue]) {
|
|
311
|
+
this.settle(job, undefined, new Error('parse pool destroyed'));
|
|
312
|
+
}
|
|
313
|
+
this.inflight.clear();
|
|
314
|
+
this.queue = [];
|
|
315
|
+
await Promise.all(ws.map((w) => Promise.resolve(w.terminate()).catch(() => { })));
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
exports.ParseWorkerPool = ParseWorkerPool;
|
|
319
|
+
//# sourceMappingURL=parse-pool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-pool.js","sourceRoot":"","sources":["../../src/extraction/parse-pool.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;;;AA2DH,oDASC;AAlED,mDAAwC;AA0BxC,wEAAwE;AACxE,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACjC,wEAAwE;AACxE,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAC/B,0EAA0E;AAC1E,MAAM,wBAAwB,GAAG,GAAG,CAAC;AACrC,iFAAiF;AACjF,MAAM,wBAAwB,GAAG,MAAM,CAAC;AACxC;;;;;GAKG;AACH,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B;;;;;GAKG;AACH,MAAM,YAAY,GAAG,GAAG,CAAC;AAEzB;;;;;;;GAOG;AACH,SAAgB,oBAAoB,CAAC,MAA0B,EAAE,QAAgB;IAC/E,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;QAC1C,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QACzB,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC;QACnE,CAAC;QACD,uDAAuD;IACzD,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC;AACrE,CAAC;AAmCD,MAAa,eAAe;IAClB,IAAI,GAAsB,EAAE,CAAC;IAC7B,KAAK,GAAe,EAAE,CAAC;IACvB,QAAQ,GAAG,IAAI,GAAG,EAA6B,CAAC;IAChD,OAAO,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC7C,+EAA+E;IAC/E,4EAA4E;IACpE,OAAO,GAAG,IAAI,GAAG,EAAmB,CAAC;IACrC,WAAW,GAAG,IAAI,GAAG,EAA2B,CAAC;IACjD,MAAM,GAAG,CAAC,CAAC;IACX,YAAY,GAAG,CAAC,CAAC;IACjB,SAAS,GAAG,KAAK,CAAC;IAET,SAAS,CAAa;IACtB,OAAO,CAAS;IAChB,eAAe,CAAS;IACxB,cAAc,CAAS;IACvB,YAAY,CAAwB;IACpC,GAAG,CAAwB;IAE5C,YAAY,IAA4B;QACtC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,wBAAwB,CAAC;QACxE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,wBAAwB,CAAC;QACtE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAClC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACxC,CAAC;aAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACjC,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC;YACzC,IAAI,CAAC,YAAY,GAAG,GAAG,EAAE,CAAC,IAAI,uBAAM,CAAC,UAAU,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,mDAAmD;IACtE,CAAC;IAED,mCAAmC;IACnC,IAAI,IAAI,KAAa,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAE3C,qCAAqC;IACrC,IAAI,WAAW,KAAa,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAEvD,mEAAmE;IACnE,IAAI,OAAO;QACT,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IAC7D,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,IAAe;QAC1B,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAC7E,OAAO,IAAI,OAAO,CAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACvD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9E,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,QAAQ;QACd,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QACjF,IAAI,CAAkB,CAAC;QACvB,IAAI,CAAC;YACH,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,oCAAoC;YACzD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAuB,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,iBAAiB,CAAC,EAAE,OAAO,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC;QACvF,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,CAAC;YAAE,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,2BAA2B,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrG,6EAA6E;QAC7E,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IACtE,CAAC;IAEO,SAAS,CAAC,CAAkB,EAAE,CAAqB;QACzD,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,OAAO,CAAC,kCAAkC;YACpE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC;gBAAE,OAAO,CAAC,uBAAuB;YACpF,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACxB,yEAAyE;YACzE,8DAA8D;YAC9D,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC3D,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;YAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;IACH,CAAC;IAED;4EACwE;IAChE,YAAY,CAAC,CAAkB,EAAE,OAAe;QACtD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,sDAAsD;QACxF,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC;YAAC,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;QACxD,IAAI,GAAG;YAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QACzD,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,gBAAgB;QACnD,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED;yDACqD;IAC7C,OAAO,CAAC,CAAkB;QAChC,IAAI,CAAC,GAAG,CAAC,0BAA0B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1I,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACrB,kEAAkE;QAClE,IAAI,CAAC;YAAC,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;QACxD,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IACvD,CAAC;IAEO,YAAY,CAAC,CAAkB;QACrC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/C,CAAC;IAEO,QAAQ,CAAC,CAAkB,EAAE,GAAa;QAChD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5D,uEAAuE;QACvE,+EAA+E;QAC/E,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,MAAM,CAAC;QAC/F,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;QAC3E,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;QACpB,CAAC,CAAC,WAAW,CAAC;YACZ,IAAI,EAAE,OAAO;YACb,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ;YAC3B,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO;YACzB,cAAc,EAAE,GAAG,CAAC,IAAI,CAAC,cAAc;YACvC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ;SAC5B,CAAC,CAAC;IACL,CAAC;IAEO,SAAS,CAAC,CAAkB,EAAE,GAAa,EAAE,EAAU;QAC7D,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,OAAO;QAChD,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,QAAQ,aAAa,EAAE,qBAAqB,CAAC,CAAC;QAC5E,0EAA0E;QAC1E,6EAA6E;QAC7E,kCAAkC;QAClC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC;YAAC,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,KAAK,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC,CAAC;QACxE,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAEO,KAAK;QACX,2EAA2E;QAC3E,4EAA4E;QAC5E,WAAW;QACX,OACE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI;YACxD,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO;YAChC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,oBAAoB;YACxC,CAAC,IAAI,CAAC,SAAS;YACf,IAAI,CAAC,OAAO,EACZ,CAAC;YACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC;QACD,wCAAwC;QACxC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAC7C,IAAI,GAAyB,CAAC;YAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,IAAI,GAAG,CAAC,OAAO;gBAAE,GAAG,GAAG,SAAS,CAAC;YACvF,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO;gBAAE,MAAM;YAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAG,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACxB,CAAC;QACD,0EAA0E;QAC1E,uEAAuE;QACvE,6EAA6E;QAC7E,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACtG,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,8CAA8C,CAAC;YACxG,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;gBAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,GAAa,EAAE,MAAyB,EAAE,GAAW;QAClE,IAAI,GAAG,CAAC,OAAO;YAAE,OAAO;QACxB,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;QACnB,IAAI,GAAG,CAAC,KAAK;YAAE,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,GAAG;YAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;;YACpB,GAAG,CAAC,OAAO,CAAC,MAAO,CAAC,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,UAAU;QACR,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,+DAA+D;IAC/D,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QACf,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7D,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;IACvG,CAAC;CACF;AArOD,0CAqOC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree-sitter.d.ts","sourceRoot":"","sources":["../../src/extraction/tree-sitter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EACL,QAAQ,EAIR,gBAAgB,EAGjB,MAAM,UAAU,CAAC;AAoBlB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAoRvD;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,IAAI,CAAqB;IACjC,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,oBAAoB,CAA6B;IAIzD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAoK;IAC3M,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAU;IACrD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA4C;IAC7E,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,oBAAoB,CAA6B;IACzD,OAAO,CAAC,cAAc,CAA6D;IACnF,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,WAAW,CAAoC;IAIvD,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,eAAe,CAAsD;IAE7E,OAAO,CAAC,YAAY,CAAwB;gBAEhC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ;IAQjE;;OAEG;IACH,OAAO,IAAI,gBAAgB;IA4H3B;;;;;OAKG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAmBxB;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,oBAAoB;IA2F5B;;;;OAIG;IACH,OAAO,CAAC,oBAAoB;IAkC5B;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;IA4JtB;;OAEG;IACH,OAAO,CAAC,SAAS;
|
|
1
|
+
{"version":3,"file":"tree-sitter.d.ts","sourceRoot":"","sources":["../../src/extraction/tree-sitter.ts"],"names":[],"mappings":"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"}
|
|
@@ -979,29 +979,44 @@ class TreeSitterExtractor {
|
|
|
979
979
|
this.scanFnRefSubtree(node, 0);
|
|
980
980
|
skipChildren = true; // extractVariable handles children
|
|
981
981
|
}
|
|
982
|
-
// Swift
|
|
983
|
-
//
|
|
984
|
-
// (
|
|
985
|
-
//
|
|
986
|
-
//
|
|
987
|
-
//
|
|
982
|
+
// Swift properties inside a type. A stored instance property becomes a `field`
|
|
983
|
+
// node; a `static let`/`static var` member becomes `constant`/`variable`
|
|
984
|
+
// (Swift's `static`-namespacing idiom — value-reference edges can then target
|
|
985
|
+
// it); a COMPUTED property (getter block, no stored value) becomes a `property`
|
|
986
|
+
// node whose getter is walked below so its calls attribute to it. A property's
|
|
987
|
+
// PROPERTY WRAPPER (`@Argument`/`@Published`/`@State`/custom) and declared type
|
|
988
|
+
// are dependencies attributed to the enclosing type. (Other languages extract
|
|
989
|
+
// properties via property/field types.)
|
|
988
990
|
else if (this.language === 'swift' &&
|
|
989
|
-
nodeType === 'property_declaration' &&
|
|
991
|
+
(nodeType === 'property_declaration' || nodeType === 'protocol_property_declaration') &&
|
|
990
992
|
this.isInsideClassLikeNode()) {
|
|
991
993
|
const ownerId = this.nodeStack[this.nodeStack.length - 1];
|
|
992
|
-
// A `static let`/`static var` member is a SHARED constant of the type
|
|
993
|
-
// (Swift's `static`-namespacing idiom, esp. in `enum`/`struct`) — extract
|
|
994
|
-
// it as `constant`/`variable` so value-reference edges can target it. An
|
|
995
|
-
// instance stored property stays a `field` (per-instance; Swift instance
|
|
996
|
-
// properties otherwise aren't own nodes — that's unchanged). A *computed*
|
|
997
|
-
// property (getter, no stored value) is never a constant — skip the node.
|
|
998
994
|
const { nameNode, isLet, isComputed } = swiftPropertyInfo(node, this.source);
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
995
|
+
let computedPropId;
|
|
996
|
+
if (nameNode) {
|
|
997
|
+
if (isComputed) {
|
|
998
|
+
// Computed property — accessed like a property but its getter holds real
|
|
999
|
+
// logic. Index as `property` so search/explore find it (#1020: computed
|
|
1000
|
+
// props such as a heavily-read `var isCloudProxy: Bool` returned "No
|
|
1001
|
+
// results found"); pushed below so the getter's calls attribute to it
|
|
1002
|
+
// rather than flattening onto the owning type (SwiftUI `var body: some
|
|
1003
|
+
// View { … }` — the whole subview tree — is the canonical case).
|
|
1004
|
+
const prop = this.createNode('property', (0, tree_sitter_helpers_1.getNodeText)(nameNode, this.source), node, {
|
|
1005
|
+
visibility: this.extractor.getVisibility?.(node),
|
|
1006
|
+
isStatic: this.extractor.isStatic?.(node) ?? false,
|
|
1007
|
+
});
|
|
1008
|
+
computedPropId = prop?.id;
|
|
1009
|
+
}
|
|
1010
|
+
else {
|
|
1011
|
+
// A `static let`/`static var` member is a SHARED constant of the type
|
|
1012
|
+
// (esp. in `enum`/`struct`); an instance stored property stays a `field`
|
|
1013
|
+
// (per-instance — Swift instance properties otherwise aren't own nodes).
|
|
1014
|
+
const isStatic = this.extractor.isStatic?.(node) ?? false;
|
|
1015
|
+
this.createNode(isStatic ? (isLet ? 'constant' : 'variable') : 'field', (0, tree_sitter_helpers_1.getNodeText)(nameNode, this.source), node, {
|
|
1016
|
+
visibility: this.extractor.getVisibility?.(node),
|
|
1017
|
+
isStatic,
|
|
1018
|
+
});
|
|
1019
|
+
}
|
|
1005
1020
|
}
|
|
1006
1021
|
if (ownerId) {
|
|
1007
1022
|
this.extractDecoratorsFor(node, ownerId);
|
|
@@ -1027,6 +1042,20 @@ class TreeSitterExtractor {
|
|
|
1027
1042
|
walkAttrArgs(modifiers);
|
|
1028
1043
|
}
|
|
1029
1044
|
}
|
|
1045
|
+
// A computed property's getter holds real logic — walk it with the property
|
|
1046
|
+
// node pushed so its calls/instantiations attribute to the property (a
|
|
1047
|
+
// SwiftUI `body`'s subview tree becomes the property's callees). skipChildren
|
|
1048
|
+
// then stops the generic walker from re-walking the getter (and the
|
|
1049
|
+
// modifiers/type annotation already handled above).
|
|
1050
|
+
if (computedPropId) {
|
|
1051
|
+
const getter = node.namedChildren.find((c) => c.type === 'computed_property' || c.type === 'protocol_property_requirements');
|
|
1052
|
+
if (getter) {
|
|
1053
|
+
this.nodeStack.push(computedPropId);
|
|
1054
|
+
this.visitFunctionBody(getter, '');
|
|
1055
|
+
this.nodeStack.pop();
|
|
1056
|
+
}
|
|
1057
|
+
skipChildren = true;
|
|
1058
|
+
}
|
|
1030
1059
|
}
|
|
1031
1060
|
// `export_statement` itself is not extracted — the walker descends
|
|
1032
1061
|
// into children, where the inner declaration (lexical_declaration,
|