mincut-context 1.1.0 → 1.3.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.
Files changed (55) hide show
  1. package/README.md +20 -3
  2. package/dist/adapters/cli/bin.js +64 -5
  3. package/dist/adapters/cli/bin.js.map +1 -1
  4. package/dist/adapters/cli/render.d.ts +2 -0
  5. package/dist/adapters/cli/render.d.ts.map +1 -1
  6. package/dist/adapters/cli/render.js +95 -0
  7. package/dist/adapters/cli/render.js.map +1 -1
  8. package/dist/adapters/cli/tui.d.ts +3 -1
  9. package/dist/adapters/cli/tui.d.ts.map +1 -1
  10. package/dist/adapters/cli/tui.js +118 -17
  11. package/dist/adapters/cli/tui.js.map +1 -1
  12. package/dist/adapters/cli/watch.d.ts +32 -0
  13. package/dist/adapters/cli/watch.d.ts.map +1 -0
  14. package/dist/adapters/cli/watch.js +84 -0
  15. package/dist/adapters/cli/watch.js.map +1 -0
  16. package/dist/adapters/mcp/handler.d.ts +20 -0
  17. package/dist/adapters/mcp/handler.d.ts.map +1 -1
  18. package/dist/adapters/mcp/handler.js +30 -3
  19. package/dist/adapters/mcp/handler.js.map +1 -1
  20. package/dist/adapters/mcp/index.js +1 -1
  21. package/dist/index/builder.d.ts +19 -0
  22. package/dist/index/builder.d.ts.map +1 -1
  23. package/dist/index/builder.js +158 -4
  24. package/dist/index/builder.js.map +1 -1
  25. package/dist/index/parse-worker.d.ts +2 -0
  26. package/dist/index/parse-worker.d.ts.map +1 -0
  27. package/dist/index/parse-worker.js +36 -0
  28. package/dist/index/parse-worker.js.map +1 -0
  29. package/dist/index/walker.d.ts.map +1 -1
  30. package/dist/index/walker.js +6 -1
  31. package/dist/index/walker.js.map +1 -1
  32. package/dist/index/worker-pool.d.ts +22 -0
  33. package/dist/index/worker-pool.d.ts.map +1 -0
  34. package/dist/index/worker-pool.js +82 -0
  35. package/dist/index/worker-pool.js.map +1 -0
  36. package/dist/parsers/parser.d.ts +10 -0
  37. package/dist/parsers/parser.d.ts.map +1 -1
  38. package/dist/parsers/parser.js.map +1 -1
  39. package/dist/parsers/php.d.ts +3 -0
  40. package/dist/parsers/php.d.ts.map +1 -0
  41. package/dist/parsers/php.js +186 -0
  42. package/dist/parsers/php.js.map +1 -0
  43. package/dist/parsers/ts.d.ts +2 -2
  44. package/dist/parsers/ts.d.ts.map +1 -1
  45. package/dist/parsers/ts.js +96 -1
  46. package/dist/parsers/ts.js.map +1 -1
  47. package/dist/parsers/vue.d.ts +17 -0
  48. package/dist/parsers/vue.d.ts.map +1 -0
  49. package/dist/parsers/vue.js +52 -0
  50. package/dist/parsers/vue.js.map +1 -0
  51. package/dist/select/pack.d.ts +40 -0
  52. package/dist/select/pack.d.ts.map +1 -1
  53. package/dist/select/pack.js +31 -3
  54. package/dist/select/pack.js.map +1 -1
  55. package/package.json +3 -1
@@ -0,0 +1,82 @@
1
+ import { Worker } from 'node:worker_threads';
2
+ import { fileURLToPath } from 'node:url';
3
+ import path from 'node:path';
4
+ /**
5
+ * Minimal worker pool for parallel parsing.
6
+ *
7
+ * Each worker hosts its own tree-sitter Parser instances and processes one
8
+ * file at a time. The main thread dispatches files round-robin and awaits
9
+ * a Promise per file; the underlying message channel is shared with the
10
+ * pool's idle-worker queue to keep things simple.
11
+ */
12
+ export class ParsePool {
13
+ workers = [];
14
+ idle = [];
15
+ pending = new Map();
16
+ queue = [];
17
+ nextId = 1;
18
+ closed = false;
19
+ constructor(size) {
20
+ const workerPath = resolveWorkerPath();
21
+ for (let i = 0; i < size; i++) {
22
+ const w = new Worker(workerPath);
23
+ w.on('message', (m) => {
24
+ const resolve = this.pending.get(m.id);
25
+ if (resolve) {
26
+ this.pending.delete(m.id);
27
+ resolve(m.result);
28
+ }
29
+ this.idle.push(w);
30
+ this.drain();
31
+ });
32
+ w.on('error', () => {
33
+ // Worker died — drop it. Other workers continue.
34
+ });
35
+ this.workers.push(w);
36
+ this.idle.push(w);
37
+ }
38
+ }
39
+ parse(file, source) {
40
+ if (this.closed)
41
+ return Promise.resolve(null);
42
+ return new Promise((resolve) => {
43
+ const id = this.nextId++;
44
+ this.pending.set(id, resolve);
45
+ this.queue.push({ id, file, source });
46
+ this.drain();
47
+ });
48
+ }
49
+ async close() {
50
+ this.closed = true;
51
+ await Promise.all(this.workers.map((w) => w.terminate()));
52
+ }
53
+ drain() {
54
+ while (this.queue.length > 0 && this.idle.length > 0) {
55
+ const w = this.idle.shift();
56
+ const job = this.queue.shift();
57
+ w.postMessage(job);
58
+ }
59
+ }
60
+ }
61
+ /**
62
+ * Resolve the compiled worker file path. Workers require pre-compiled .js —
63
+ * Node's worker_threads can't run .ts directly even when the parent is
64
+ * launched by vitest. Walk from src/index/* → dist/index/* if necessary.
65
+ *
66
+ * Throws a clear error if the build artifact is missing.
67
+ */
68
+ function resolveWorkerPath() {
69
+ const here = fileURLToPath(import.meta.url);
70
+ const dir = path.dirname(here);
71
+ if (here.endsWith('.js')) {
72
+ return path.join(dir, 'parse-worker.js');
73
+ }
74
+ // We're being loaded from src/ — walk to <pkg>/dist/index/parse-worker.js.
75
+ const repoRoot = path.resolve(dir, '..', '..');
76
+ const candidate = path.join(repoRoot, 'dist', 'index', 'parse-worker.js');
77
+ // We can't sync-check existence without 'fs', but worker_threads will throw
78
+ // a clear ENOENT if the file is missing — that surfaces "did you `npm run
79
+ // build`?" naturally.
80
+ return candidate;
81
+ }
82
+ //# sourceMappingURL=worker-pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-pool.js","sourceRoot":"","sources":["../../src/index/worker-pool.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,16 @@ export interface ParsedSymbol {
7
7
  startLine: number;
8
8
  endLine: number;
9
9
  tokens: number;
10
+ /** Present on sub-symbol chunks emitted from a large parent function. */
11
+ chunk?: {
12
+ parent: string;
13
+ index: number;
14
+ };
15
+ }
16
+ export interface ChunkOptions {
17
+ enabled: boolean;
18
+ /** Functions whose body exceeds this token count get split into chunks. */
19
+ maxTokens: number;
10
20
  }
11
21
  export interface ParsedImport {
12
22
  source: string;
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parsers/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,gEAAgE;IAChE,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC;CAClD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parsers/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,KAAK,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,2EAA2E;IAC3E,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,gEAAgE;IAChE,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC;CAClD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD"}
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parsers/parser.ts"],"names":[],"mappings":"AAmCA;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parsers/parser.ts"],"names":[],"mappings":"AA2CA;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type ParseResult } from './parser.js';
2
+ export declare function parsePhp(file: string, source: string): ParseResult;
3
+ //# sourceMappingURL=php.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"php.d.ts","sourceRoot":"","sources":["../../src/parsers/php.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AAQrB,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CAmBlE"}
@@ -0,0 +1,186 @@
1
+ import Parser from 'tree-sitter';
2
+ import { createRequire } from 'node:module';
3
+ import { approxTokens, } from './parser.js';
4
+ const require_ = createRequire(import.meta.url);
5
+ const Php = require_('tree-sitter-php');
6
+ const phpParser = new Parser();
7
+ phpParser.setLanguage(Php.php);
8
+ export function parsePhp(file, source) {
9
+ let tree;
10
+ try {
11
+ tree = phpParser.parse(source);
12
+ }
13
+ catch {
14
+ return { symbols: [], imports: [], calls: [] };
15
+ }
16
+ const ctx = {
17
+ file,
18
+ source,
19
+ symbols: [],
20
+ imports: [],
21
+ calls: [],
22
+ classStack: [],
23
+ callerStack: [],
24
+ };
25
+ visit(tree.rootNode, ctx);
26
+ return { symbols: ctx.symbols, imports: ctx.imports, calls: ctx.calls };
27
+ }
28
+ function visit(node, ctx) {
29
+ switch (node.type) {
30
+ case 'function_definition': {
31
+ const name = node.childForFieldName('name')?.text;
32
+ if (name) {
33
+ const sym = mk(ctx, node, name, name, 'function');
34
+ ctx.symbols.push(sym);
35
+ ctx.callerStack.push(sym.id);
36
+ const body = node.childForFieldName('body');
37
+ if (body)
38
+ visit(body, ctx);
39
+ ctx.callerStack.pop();
40
+ return;
41
+ }
42
+ break;
43
+ }
44
+ case 'class_declaration':
45
+ case 'trait_declaration': {
46
+ const name = node.childForFieldName('name')?.text;
47
+ if (!name)
48
+ break;
49
+ ctx.symbols.push(mk(ctx, node, name, name, 'class'));
50
+ ctx.classStack.push(name);
51
+ const body = node.childForFieldName('body');
52
+ if (body)
53
+ visit(body, ctx);
54
+ ctx.classStack.pop();
55
+ return;
56
+ }
57
+ case 'interface_declaration': {
58
+ const name = node.childForFieldName('name')?.text;
59
+ if (!name)
60
+ break;
61
+ ctx.symbols.push(mk(ctx, node, name, name, 'interface'));
62
+ return; // interface bodies are signatures only
63
+ }
64
+ case 'method_declaration': {
65
+ const name = node.childForFieldName('name')?.text;
66
+ if (!name)
67
+ break;
68
+ const cls = ctx.classStack[ctx.classStack.length - 1];
69
+ const qualified = cls ? `${cls}.${name}` : name;
70
+ const sym = mk(ctx, node, name, qualified, 'method');
71
+ ctx.symbols.push(sym);
72
+ ctx.callerStack.push(sym.id);
73
+ const body = node.childForFieldName('body');
74
+ if (body)
75
+ visit(body, ctx);
76
+ ctx.callerStack.pop();
77
+ return;
78
+ }
79
+ case 'namespace_use_declaration': {
80
+ collectUses(node, ctx);
81
+ return;
82
+ }
83
+ case 'function_call_expression':
84
+ case 'member_call_expression':
85
+ case 'scoped_call_expression': {
86
+ const name = callTargetName(node);
87
+ if (name && ctx.callerStack.length > 0) {
88
+ ctx.calls.push({
89
+ from: ctx.callerStack[ctx.callerStack.length - 1],
90
+ toName: name,
91
+ });
92
+ }
93
+ visitChildren(node, ctx);
94
+ return;
95
+ }
96
+ }
97
+ visitChildren(node, ctx);
98
+ }
99
+ function visitChildren(node, ctx) {
100
+ for (let i = 0; i < node.namedChildCount; i++) {
101
+ const c = node.namedChild(i);
102
+ if (c)
103
+ visit(c, ctx);
104
+ }
105
+ }
106
+ function mk(ctx, node, bare, qualified, kind) {
107
+ const text = ctx.source.slice(node.startIndex, node.endIndex);
108
+ return {
109
+ id: `${ctx.file}:${qualified}`,
110
+ name: bare,
111
+ file: ctx.file,
112
+ kind,
113
+ startLine: node.startPosition.row + 1,
114
+ endLine: node.endPosition.row + 1,
115
+ tokens: approxTokens(text),
116
+ };
117
+ }
118
+ function callTargetName(node) {
119
+ // function_call_expression: function: <expr>
120
+ // member_call_expression: name: <name>
121
+ // scoped_call_expression: name: <name>
122
+ if (node.type === 'function_call_expression') {
123
+ const fn = node.childForFieldName('function');
124
+ if (!fn)
125
+ return null;
126
+ if (fn.type === 'name' || fn.type === 'qualified_name')
127
+ return fn.text.split('\\').pop() ?? null;
128
+ return null;
129
+ }
130
+ const nameNode = node.childForFieldName('name');
131
+ if (nameNode)
132
+ return nameNode.text;
133
+ return null;
134
+ }
135
+ function collectUses(node, ctx) {
136
+ // `use App\Foo;` / `use App\Foo as Bar;`
137
+ // `use App\{Foo, Bar as B, Baz};` (group)
138
+ // Walk children, find namespace_use_clause and namespace_use_group nodes.
139
+ for (let i = 0; i < node.namedChildCount; i++) {
140
+ const c = node.namedChild(i);
141
+ if (!c)
142
+ continue;
143
+ if (c.type === 'namespace_use_clause') {
144
+ pushUseClause(c, '', ctx);
145
+ }
146
+ else if (c.type === 'namespace_use_group') {
147
+ // Prefix is the first qualified_name before `{` — tree-sitter exposes it
148
+ // as a child node of type `namespace_name` or `qualified_name`.
149
+ let prefix = '';
150
+ for (let j = 0; j < c.namedChildCount; j++) {
151
+ const sub = c.namedChild(j);
152
+ if (!sub)
153
+ continue;
154
+ if (sub.type === 'namespace_name' || sub.type === 'qualified_name') {
155
+ prefix = sub.text + '\\';
156
+ }
157
+ else if (sub.type === 'namespace_use_clause' || sub.type === 'namespace_use_group_clause') {
158
+ pushUseClause(sub, prefix, ctx);
159
+ }
160
+ }
161
+ }
162
+ }
163
+ }
164
+ function pushUseClause(node, prefix, ctx) {
165
+ // tree-sitter-php field names vary slightly between versions; do a tolerant
166
+ // walk: collect the first dotted/qualified name and an optional alias.
167
+ let source = '';
168
+ let alias;
169
+ for (let i = 0; i < node.namedChildCount; i++) {
170
+ const c = node.namedChild(i);
171
+ if (!c)
172
+ continue;
173
+ if (c.type === 'qualified_name' || c.type === 'namespace_name' || c.type === 'name') {
174
+ if (!source)
175
+ source = c.text;
176
+ else
177
+ alias = c.text; // a second name child is the alias
178
+ }
179
+ }
180
+ if (!source)
181
+ return;
182
+ const full = prefix + source;
183
+ const bare = full.split('\\').pop() ?? source;
184
+ ctx.imports.push({ source: full, names: [alias ?? bare], namespace: alias });
185
+ }
186
+ //# sourceMappingURL=php.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"php.js","sourceRoot":"","sources":["../../src/parsers/php.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { type ParseResult } from './parser.js';
2
- export declare function parseTypeScript(file: string, source: string): ParseResult;
1
+ import { type ChunkOptions, type ParseResult } from './parser.js';
2
+ export declare function parseTypeScript(file: string, source: string, chunkOptions?: ChunkOptions): ParseResult;
3
3
  //# sourceMappingURL=ts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ts.d.ts","sourceRoot":"","sources":["../../src/parsers/ts.ts"],"names":[],"mappings":"AASA,OAAO,EAKL,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AAOrB,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CA0BzE"}
1
+ {"version":3,"file":"ts.d.ts","sourceRoot":"","sources":["../../src/parsers/ts.ts"],"names":[],"mappings":"AASA,OAAO,EAEL,KAAK,YAAY,EAIjB,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AAOrB,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,YAAY,GAC1B,WAAW,CA2Bb"}
@@ -9,7 +9,7 @@ const tsParser = new Parser();
9
9
  tsParser.setLanguage(TypeScript.typescript);
10
10
  const tsxParser = new Parser();
11
11
  tsxParser.setLanguage(TypeScript.tsx);
12
- export function parseTypeScript(file, source) {
12
+ export function parseTypeScript(file, source, chunkOptions) {
13
13
  const parser = file.endsWith('.tsx') || file.endsWith('.jsx') ? tsxParser : tsParser;
14
14
  let tree;
15
15
  try {
@@ -30,15 +30,106 @@ export function parseTypeScript(file, source) {
30
30
  classStack: [],
31
31
  callerStack: [],
32
32
  inTypeContext: false,
33
+ chunkOptions,
33
34
  });
34
35
  return { symbols, imports, calls };
35
36
  }
37
+ /**
38
+ * If chunkOptions are on and the function body exceeds the threshold, split
39
+ * the body into per-top-level-statement chunks, emit a sub-symbol per chunk,
40
+ * and route the body walk through chunk-aware caller-stack management.
41
+ *
42
+ * Returns true if the function was chunked (caller should NOT also emit the
43
+ * parent symbol or recurse into the body again).
44
+ */
45
+ function tryEmitChunks(fnNode, bodyNode, qualifiedName, ctx) {
46
+ if (!ctx.chunkOptions?.enabled || !bodyNode)
47
+ return false;
48
+ const bodyText = ctx.source.slice(bodyNode.startIndex, bodyNode.endIndex);
49
+ if (approxTokens(bodyText) <= ctx.chunkOptions.maxTokens)
50
+ return false;
51
+ // Collect top-level statements inside the body block.
52
+ const statements = [];
53
+ for (let i = 0; i < bodyNode.namedChildCount; i++) {
54
+ const c = bodyNode.namedChild(i);
55
+ if (c)
56
+ statements.push(c);
57
+ }
58
+ if (statements.length < 2)
59
+ return false; // not worth chunking
60
+ // Greedy pack statements into chunks of ~maxTokens.
61
+ const target = ctx.chunkOptions.maxTokens;
62
+ const chunks = [];
63
+ let current = [];
64
+ let currentTokens = 0;
65
+ for (const stmt of statements) {
66
+ const stmtTokens = approxTokens(ctx.source.slice(stmt.startIndex, stmt.endIndex));
67
+ if (currentTokens + stmtTokens > target && current.length > 0) {
68
+ chunks.push({ start: current[0], end: current[current.length - 1] });
69
+ current = [];
70
+ currentTokens = 0;
71
+ }
72
+ current.push(stmt);
73
+ currentTokens += stmtTokens;
74
+ }
75
+ if (current.length > 0) {
76
+ chunks.push({ start: current[0], end: current[current.length - 1] });
77
+ }
78
+ if (chunks.length < 2)
79
+ return false; // a single chunk is just the original
80
+ // Emit each chunk as a sub-symbol; walk children inside it as if it were
81
+ // its own function body (so calls attribute to the chunk).
82
+ chunks.forEach((chunk, index) => {
83
+ const chunkText = ctx.source.slice(chunk.start.startIndex, chunk.end.endIndex);
84
+ const sym = {
85
+ id: `${ctx.file}:${qualifiedName}#${index}`,
86
+ name: `${qualifiedName.split('.').pop() ?? qualifiedName}#${index}`,
87
+ file: ctx.file,
88
+ kind: 'function',
89
+ startLine: chunk.start.startPosition.row + 1,
90
+ endLine: chunk.end.endPosition.row + 1,
91
+ tokens: approxTokens(chunkText),
92
+ chunk: { parent: qualifiedName, index },
93
+ };
94
+ ctx.symbols.push(sym);
95
+ ctx.callerStack.push(sym.id);
96
+ // Visit all statements in this chunk so call edges attribute to this chunk.
97
+ for (const stmt of statementsBetween(bodyNode, chunk.start, chunk.end)) {
98
+ visit(stmt, ctx);
99
+ }
100
+ ctx.callerStack.pop();
101
+ });
102
+ // Reference the outer fnNode so the linter doesn't warn — kept for future
103
+ // diagnostics (e.g. printing the chunked function's signature in --verbose).
104
+ void fnNode;
105
+ return true;
106
+ }
107
+ function statementsBetween(body, start, end) {
108
+ const out = [];
109
+ let inside = false;
110
+ for (let i = 0; i < body.namedChildCount; i++) {
111
+ const c = body.namedChild(i);
112
+ if (!c)
113
+ continue;
114
+ if (c === start)
115
+ inside = true;
116
+ if (inside)
117
+ out.push(c);
118
+ if (c === end)
119
+ break;
120
+ }
121
+ return out;
122
+ }
36
123
  function visit(node, ctx) {
37
124
  switch (node.type) {
38
125
  case 'function_declaration':
39
126
  case 'generator_function_declaration': {
40
127
  const name = node.childForFieldName('name')?.text;
41
128
  if (name) {
129
+ const body = node.childForFieldName('body');
130
+ if (tryEmitChunks(node, body, name, ctx)) {
131
+ return;
132
+ }
42
133
  const sym = makeSymbol(ctx, node, name, name, 'function');
43
134
  ctx.symbols.push(sym);
44
135
  ctx.callerStack.push(sym.id);
@@ -94,6 +185,10 @@ function visit(node, ctx) {
94
185
  if (name) {
95
186
  const cls = ctx.classStack[ctx.classStack.length - 1];
96
187
  const qualified = cls ? `${cls}.${name}` : name;
188
+ const body = node.childForFieldName('body');
189
+ if (tryEmitChunks(node, body, qualified, ctx)) {
190
+ return;
191
+ }
97
192
  const sym = makeSymbol(ctx, node, name, qualified, 'method');
98
193
  ctx.symbols.push(sym);
99
194
  ctx.callerStack.push(sym.id);
@@ -1 +1 @@
1
- {"version":3,"file":"ts.js","sourceRoot":"","sources":["../../src/parsers/ts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ts.js","sourceRoot":"","sources":["../../src/parsers/ts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { ChunkOptions, ParseResult } from './parser.js';
2
+ /**
3
+ * Vue Single-File Component parser.
4
+ *
5
+ * Vue SFCs are not really a "language" — they wrap HTML, script(s), and CSS.
6
+ * We only need the <script> / <script setup> blocks (where logic lives) and
7
+ * forward them to the TypeScript parser.
8
+ *
9
+ * Why regex instead of an HTML parser? v1.0 of @vue/compiler-sfc is ~30 MB
10
+ * of dependencies for what amounts to "find the script tag". Vue's grammar
11
+ * for SFC blocks is intentionally simple — closing tags are unambiguous,
12
+ * there's no nesting, tag names are fixed. Regex handles >99% of files;
13
+ * pathological edge cases fall back to "no symbols", which the rest of the
14
+ * pipeline tolerates gracefully.
15
+ */
16
+ export declare function parseVueSfc(file: string, source: string, chunkOptions?: ChunkOptions): ParseResult;
17
+ //# sourceMappingURL=vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vue.d.ts","sourceRoot":"","sources":["../../src/parsers/vue.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE7D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,YAAY,CAAC,EAAE,YAAY,GAC1B,WAAW,CA2Bb"}
@@ -0,0 +1,52 @@
1
+ import { parseTypeScript } from './ts.js';
2
+ /**
3
+ * Vue Single-File Component parser.
4
+ *
5
+ * Vue SFCs are not really a "language" — they wrap HTML, script(s), and CSS.
6
+ * We only need the <script> / <script setup> blocks (where logic lives) and
7
+ * forward them to the TypeScript parser.
8
+ *
9
+ * Why regex instead of an HTML parser? v1.0 of @vue/compiler-sfc is ~30 MB
10
+ * of dependencies for what amounts to "find the script tag". Vue's grammar
11
+ * for SFC blocks is intentionally simple — closing tags are unambiguous,
12
+ * there's no nesting, tag names are fixed. Regex handles >99% of files;
13
+ * pathological edge cases fall back to "no symbols", which the rest of the
14
+ * pipeline tolerates gracefully.
15
+ */
16
+ export function parseVueSfc(file, source, chunkOptions) {
17
+ const blocks = extractScriptBlocks(source);
18
+ if (blocks.length === 0) {
19
+ return { symbols: [], imports: [], calls: [] };
20
+ }
21
+ const merged = { symbols: [], imports: [], calls: [] };
22
+ for (const block of blocks) {
23
+ // Parse each block as TS regardless of lang. tree-sitter-typescript handles
24
+ // plain JS just fine, so we don't bother dispatching here.
25
+ const inner = parseTypeScript(file, block.content, chunkOptions);
26
+ // Shift line numbers from script-local back to SFC-global.
27
+ const offset = block.startLine - 1;
28
+ for (const sym of inner.symbols) {
29
+ merged.symbols.push({
30
+ ...sym,
31
+ startLine: sym.startLine + offset,
32
+ endLine: sym.endLine + offset,
33
+ });
34
+ }
35
+ merged.imports.push(...inner.imports);
36
+ merged.calls.push(...inner.calls);
37
+ }
38
+ return merged;
39
+ }
40
+ const SCRIPT_REGEX = /<script\b([^>]*)>([\s\S]*?)<\/script\s*>/gi;
41
+ function extractScriptBlocks(source) {
42
+ const blocks = [];
43
+ let m;
44
+ while ((m = SCRIPT_REGEX.exec(source)) !== null) {
45
+ const fullMatchStart = m.index;
46
+ const openTagEnd = fullMatchStart + m[0].indexOf('>') + 1;
47
+ const startLine = source.slice(0, openTagEnd).split('\n').length;
48
+ blocks.push({ content: m[2], startLine });
49
+ }
50
+ return blocks;
51
+ }
52
+ //# sourceMappingURL=vue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vue.js","sourceRoot":"","sources":["../../src/parsers/vue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG1C;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,WAAW,CACzB,IAAY,EACZ,MAAc,EACd,YAA2B;IAE3B,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACjD,CAAC;IAED,MAAM,MAAM,GAAgB,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAEpE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,6EAA6E;QAC7E,2DAA2D;QAC3D,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAEjE,2DAA2D;QAC3D,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;QACnC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAChC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;gBAClB,GAAG,GAAG;gBACN,SAAS,EAAE,GAAG,CAAC,SAAS,GAAG,MAAM;gBACjC,OAAO,EAAE,GAAG,CAAC,OAAO,GAAG,MAAM;aAC9B,CAAC,CAAC;QACL,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAOD,MAAM,YAAY,GAAG,4CAA4C,CAAC;AAElE,SAAS,mBAAmB,CAAC,MAAc;IACzC,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,IAAI,CAAyB,CAAC;IAC9B,OAAO,CAAC,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAChD,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC;QAC/B,MAAM,UAAU,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QACjE,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -30,6 +30,18 @@ export interface PackOptions {
30
30
  * with any seed. Default 0.5. Set to 0 to disable the boost entirely.
31
31
  */
32
32
  communityBoost?: number;
33
+ /** Include `trace` field in PackResult with algorithm internals. Default false. */
34
+ verbose?: boolean;
35
+ /** Worker count for parallel parsing. 0 (default) = sequential. */
36
+ parallel?: number;
37
+ /**
38
+ * Split large functions into per-statement chunks (TS/JS/Vue only).
39
+ * Pass { enabled: true, maxTokens: 400 } to opt in.
40
+ */
41
+ chunk?: {
42
+ enabled: boolean;
43
+ maxTokens: number;
44
+ };
33
45
  }
34
46
  export interface FileRange {
35
47
  start: number;
@@ -44,6 +56,32 @@ export interface PackedFile {
44
56
  /** Louvain community labels touched by nodes selected from this file. */
45
57
  communities?: number[];
46
58
  }
59
+ export interface PackTrace {
60
+ seeds: Array<{
61
+ id: string;
62
+ score: number;
63
+ }>;
64
+ topRanked: Array<{
65
+ id: string;
66
+ rank: number;
67
+ }>;
68
+ selectionOrder: Array<{
69
+ id: string;
70
+ reason: string;
71
+ tokens: number;
72
+ rank: number;
73
+ }>;
74
+ timings: {
75
+ indexMs: number;
76
+ rankMs: number;
77
+ selectMs: number;
78
+ totalMs: number;
79
+ };
80
+ cache?: {
81
+ hits: number;
82
+ misses: number;
83
+ };
84
+ }
47
85
  export interface PackResult {
48
86
  files: PackedFile[];
49
87
  tokens: number;
@@ -54,6 +92,8 @@ export interface PackResult {
54
92
  totalSymbols: number;
55
93
  };
56
94
  explain: string;
95
+ /** Present only when options.verbose was true. */
96
+ trace?: PackTrace;
57
97
  }
58
98
  export declare function pack(options: PackOptions): Promise<PackResult>;
59
99
  //# sourceMappingURL=pack.d.ts.map