@cesarandreslopez/occ 0.9.3 → 0.11.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 (165) hide show
  1. package/README.md +35 -6
  2. package/dist/src/cli.d.ts +16 -0
  3. package/dist/src/cli.js +46 -4
  4. package/dist/src/cli.js.map +1 -1
  5. package/dist/src/code/build.d.ts +22 -0
  6. package/dist/src/code/build.js +47 -13
  7. package/dist/src/code/build.js.map +1 -1
  8. package/dist/src/code/cache.js +30 -1
  9. package/dist/src/code/cache.js.map +1 -1
  10. package/dist/src/code/check.d.ts +39 -0
  11. package/dist/src/code/check.js +282 -0
  12. package/dist/src/code/check.js.map +1 -0
  13. package/dist/src/code/command.js +156 -64
  14. package/dist/src/code/command.js.map +1 -1
  15. package/dist/src/code/context.d.ts +54 -0
  16. package/dist/src/code/context.js +67 -0
  17. package/dist/src/code/context.js.map +1 -0
  18. package/dist/src/code/diff.d.ts +12 -2
  19. package/dist/src/code/diff.js +15 -3
  20. package/dist/src/code/diff.js.map +1 -1
  21. package/dist/src/code/discover.d.ts +2 -2
  22. package/dist/src/code/discover.js +8 -10
  23. package/dist/src/code/discover.js.map +1 -1
  24. package/dist/src/code/focus.js +34 -26
  25. package/dist/src/code/focus.js.map +1 -1
  26. package/dist/src/code/incremental.js +1 -1
  27. package/dist/src/code/incremental.js.map +1 -1
  28. package/dist/src/code/index-io.js +10 -2
  29. package/dist/src/code/index-io.js.map +1 -1
  30. package/dist/src/code/isolated-chunk-runner.js +17 -2
  31. package/dist/src/code/isolated-chunk-runner.js.map +1 -1
  32. package/dist/src/code/isolated-runner.js +17 -3
  33. package/dist/src/code/isolated-runner.js.map +1 -1
  34. package/dist/src/code/isolated.js +32 -6
  35. package/dist/src/code/isolated.js.map +1 -1
  36. package/dist/src/code/languages.d.ts +13 -0
  37. package/dist/src/code/languages.js +138 -5
  38. package/dist/src/code/languages.js.map +1 -1
  39. package/dist/src/code/map.d.ts +56 -0
  40. package/dist/src/code/map.js +161 -12
  41. package/dist/src/code/map.js.map +1 -1
  42. package/dist/src/code/parsers.js +367 -26
  43. package/dist/src/code/parsers.js.map +1 -1
  44. package/dist/src/code/preview.js +24 -22
  45. package/dist/src/code/preview.js.map +1 -1
  46. package/dist/src/code/query.js +0 -0
  47. package/dist/src/code/query.js.map +1 -1
  48. package/dist/src/code/search.d.ts +39 -0
  49. package/dist/src/code/search.js +154 -0
  50. package/dist/src/code/search.js.map +1 -0
  51. package/dist/src/code/session.d.ts +8 -2
  52. package/dist/src/code/session.js +16 -4
  53. package/dist/src/code/session.js.map +1 -1
  54. package/dist/src/code/slim.d.ts +2 -0
  55. package/dist/src/code/slim.js +16 -1
  56. package/dist/src/code/slim.js.map +1 -1
  57. package/dist/src/code/source.d.ts +44 -0
  58. package/dist/src/code/source.js +102 -0
  59. package/dist/src/code/source.js.map +1 -0
  60. package/dist/src/code/store.d.ts +23 -0
  61. package/dist/src/code/store.js +61 -6
  62. package/dist/src/code/store.js.map +1 -1
  63. package/dist/src/code/tree-sitter.d.ts +21 -0
  64. package/dist/src/code/tree-sitter.js +128 -0
  65. package/dist/src/code/tree-sitter.js.map +1 -0
  66. package/dist/src/code/types.d.ts +3 -0
  67. package/dist/src/code/types.js +2 -0
  68. package/dist/src/code/types.js.map +1 -1
  69. package/dist/src/doc/batch.d.ts +2 -0
  70. package/dist/src/doc/batch.js +3 -1
  71. package/dist/src/doc/batch.js.map +1 -1
  72. package/dist/src/doc/discover.js +2 -2
  73. package/dist/src/doc/discover.js.map +1 -1
  74. package/dist/src/doc/inspect-odt.js +3 -1
  75. package/dist/src/doc/inspect-odt.js.map +1 -1
  76. package/dist/src/doc/inspect-pdf.d.ts +6 -0
  77. package/dist/src/doc/inspect-pdf.js +11 -1
  78. package/dist/src/doc/inspect-pdf.js.map +1 -1
  79. package/dist/src/doc/inspect.js +2 -2
  80. package/dist/src/doc/inspect.js.map +1 -1
  81. package/dist/src/doc/types.d.ts +1 -0
  82. package/dist/src/doc/types.js +7 -0
  83. package/dist/src/doc/types.js.map +1 -1
  84. package/dist/src/git/api.d.ts +2 -1
  85. package/dist/src/git/api.js +15 -9
  86. package/dist/src/git/api.js.map +1 -1
  87. package/dist/src/git/client.js +5 -1
  88. package/dist/src/git/client.js.map +1 -1
  89. package/dist/src/git/output.js +2 -1
  90. package/dist/src/git/output.js.map +1 -1
  91. package/dist/src/git/parse.js +131 -2
  92. package/dist/src/git/parse.js.map +1 -1
  93. package/dist/src/git/types.d.ts +5 -5
  94. package/dist/src/health.d.ts +8 -0
  95. package/dist/src/health.js +12 -0
  96. package/dist/src/health.js.map +1 -1
  97. package/dist/src/index.d.ts +20 -6
  98. package/dist/src/index.js +13 -3
  99. package/dist/src/index.js.map +1 -1
  100. package/dist/src/inspect/xlsx-cells.js +4 -2
  101. package/dist/src/inspect/xlsx-cells.js.map +1 -1
  102. package/dist/src/markdown/convert.d.ts +9 -0
  103. package/dist/src/markdown/convert.js +23 -1
  104. package/dist/src/markdown/convert.js.map +1 -1
  105. package/dist/src/parsers/odf.js +4 -2
  106. package/dist/src/parsers/odf.js.map +1 -1
  107. package/dist/src/skills/command.d.ts +6 -0
  108. package/dist/src/skills/command.js +18 -3
  109. package/dist/src/skills/command.js.map +1 -1
  110. package/dist/src/slide/inspect-odp.js +3 -2
  111. package/dist/src/slide/inspect-odp.js.map +1 -1
  112. package/dist/src/slide/inspect-pptx.js +4 -3
  113. package/dist/src/slide/inspect-pptx.js.map +1 -1
  114. package/dist/src/stats.js +3 -1
  115. package/dist/src/stats.js.map +1 -1
  116. package/dist/src/structure/extract.js +16 -3
  117. package/dist/src/structure/extract.js.map +1 -1
  118. package/dist/src/utils.d.ts +7 -0
  119. package/dist/src/utils.js +19 -0
  120. package/dist/src/utils.js.map +1 -1
  121. package/dist/src/walker.js +15 -3
  122. package/dist/src/walker.js.map +1 -1
  123. package/dist/src/workspace/analyze.d.ts +3 -0
  124. package/dist/src/workspace/analyze.js +26 -15
  125. package/dist/src/workspace/analyze.js.map +1 -1
  126. package/dist/src/workspace/bundle.js +11 -3
  127. package/dist/src/workspace/bundle.js.map +1 -1
  128. package/dist/src/workspace/command.d.ts +6 -0
  129. package/dist/src/workspace/command.js +73 -44
  130. package/dist/src/workspace/command.js.map +1 -1
  131. package/dist/src/workspace/describe.js +22 -13
  132. package/dist/src/workspace/describe.js.map +1 -1
  133. package/dist/src/workspace/documents.d.ts +3 -0
  134. package/dist/src/workspace/documents.js +25 -14
  135. package/dist/src/workspace/documents.js.map +1 -1
  136. package/dist/src/workspace/prepare.js +3 -1
  137. package/dist/src/workspace/prepare.js.map +1 -1
  138. package/package.json +28 -12
  139. package/skills/occ/SKILL.md +17 -5
  140. package/skills/occ/reference/code.md +76 -3
  141. package/skills/occ/reference/commands.md +3 -1
  142. package/vendor/tree-sitter/c/grammar.wasm +0 -0
  143. package/vendor/tree-sitter/c/tags.scm +4 -0
  144. package/vendor/tree-sitter/c-sharp/grammar.wasm +0 -0
  145. package/vendor/tree-sitter/c-sharp/tags.scm +6 -0
  146. package/vendor/tree-sitter/cpp/grammar.wasm +0 -0
  147. package/vendor/tree-sitter/cpp/tags.scm +5 -0
  148. package/vendor/tree-sitter/go/grammar.wasm +0 -0
  149. package/vendor/tree-sitter/go/tags.scm +4 -0
  150. package/vendor/tree-sitter/java/grammar.wasm +0 -0
  151. package/vendor/tree-sitter/java/tags.scm +7 -0
  152. package/vendor/tree-sitter/kotlin/grammar.wasm +0 -0
  153. package/vendor/tree-sitter/kotlin/tags.scm +4 -0
  154. package/vendor/tree-sitter/php/grammar.wasm +0 -0
  155. package/vendor/tree-sitter/php/tags.scm +8 -0
  156. package/vendor/tree-sitter/python/grammar.wasm +0 -0
  157. package/vendor/tree-sitter/python/tags.scm +3 -0
  158. package/vendor/tree-sitter/ruby/grammar.wasm +0 -0
  159. package/vendor/tree-sitter/ruby/tags.scm +5 -0
  160. package/vendor/tree-sitter/rust/grammar.wasm +0 -0
  161. package/vendor/tree-sitter/rust/tags.scm +5 -0
  162. package/vendor/tree-sitter/scala/grammar.wasm +0 -0
  163. package/vendor/tree-sitter/scala/tags.scm +5 -0
  164. package/vendor/tree-sitter/swift/grammar.wasm +0 -0
  165. package/vendor/tree-sitter/swift/tags.scm +4 -0
@@ -1,6 +1,21 @@
1
1
  import { readFile, stat } from 'node:fs/promises';
2
2
  import path from 'node:path';
3
3
  import { getLanguageSpec, getModuleName, isAssetSpecifier, isLocalSpecifier, normalizePath, resolveLocalImport, resolvePythonImport, resolveTsconfigImport, } from './languages.js';
4
+ import { collectTreeSitterTagCaptures, parseTreeSitterContent } from './tree-sitter.js';
5
+ /**
6
+ * Signals that a `.vue` single-file component could not be parsed because its
7
+ * SFC structure (template/script/style blocks) is malformed. Carries a
8
+ * human-readable reason so the file can be reported as skipped rather than
9
+ * aborting the surrounding batch.
10
+ */
11
+ class VueSfcParseError extends Error {
12
+ reason;
13
+ constructor(reason) {
14
+ super(reason);
15
+ this.name = 'VueSfcParseError';
16
+ this.reason = reason;
17
+ }
18
+ }
4
19
  const DEFAULT_MAX_FILE_SIZE_BYTES = 2_097_152;
5
20
  const DEFAULT_MAX_LINES = 25_000;
6
21
  const MINIFIED_FILE_MIN_BYTES = 4_096;
@@ -121,11 +136,21 @@ function buildFullSignature(sourceFile, node) {
121
136
  function getReturnTypeText(sourceFile, node) {
122
137
  return node.type ? node.type.getText(sourceFile) : undefined;
123
138
  }
139
+ function symbolIdentityKey(symbol) {
140
+ return [symbol.type, symbol.name, symbol.line, symbol.containerName ?? ''].join('\u0000');
141
+ }
142
+ // Dedup keys are tracked per target array so insertion stays O(1); the array
143
+ // itself preserves discovery order.
144
+ const symbolIdentityKeys = new WeakMap();
124
145
  function pushUniqueSymbol(symbols, next) {
125
- if (!symbols.some(symbol => symbol.type === next.type &&
126
- symbol.name === next.name &&
127
- symbol.line === next.line &&
128
- symbol.containerName === next.containerName)) {
146
+ let seen = symbolIdentityKeys.get(symbols);
147
+ if (!seen) {
148
+ seen = new Set(symbols.map(symbolIdentityKey));
149
+ symbolIdentityKeys.set(symbols, seen);
150
+ }
151
+ const key = symbolIdentityKey(next);
152
+ if (!seen.has(key)) {
153
+ seen.add(key);
129
154
  symbols.push(next);
130
155
  }
131
156
  }
@@ -428,9 +453,13 @@ function toPascalCase(value) {
428
453
  const result = words.map(word => `${word.slice(0, 1).toUpperCase()}${word.slice(1)}`).join('');
429
454
  return result || 'VueComponent';
430
455
  }
431
- function inferVueComponentName(filePath, content) {
432
- const explicit = content.match(/\bdefineOptions\s*\(\s*\{[\s\S]*?\bname\s*:\s*['"]([^'"]+)['"]/) ??
433
- content.match(/\bname\s*:\s*['"]([^'"]+)['"]/);
456
+ function inferVueComponentName(filePath, scriptContent) {
457
+ // Only trust a `name:` field when it sits inside a component-options object
458
+ // (defineOptions/defineComponent/export default), scoped to the script block —
459
+ // a bare `name:` anywhere else is usually unrelated data.
460
+ const explicit = scriptContent.match(/\bdefineOptions\s*\(\s*\{[\s\S]*?\bname\s*:\s*['"]([^'"]+)['"]/) ??
461
+ scriptContent.match(/\bdefineComponent\s*\(\s*\{[\s\S]*?\bname\s*:\s*['"]([^'"]+)['"]/) ??
462
+ scriptContent.match(/\bexport\s+default\s*\{[\s\S]*?\bname\s*:\s*['"]([^'"]+)['"]/);
434
463
  return explicit?.[1] ?? toPascalCase(path.basename(filePath));
435
464
  }
436
465
  function composeVueVirtualScript(content, blocks) {
@@ -452,7 +481,7 @@ async function parseVueFile(filePath, content, context) {
452
481
  if (errors.length > 0) {
453
482
  const firstError = errors[0];
454
483
  const message = firstError instanceof Error ? firstError.message : String(firstError);
455
- throw new Error(`Unable to parse Vue SFC ${filePath}: ${message}`);
484
+ throw new VueSfcParseError(`Unable to parse Vue SFC: ${message}`);
456
485
  }
457
486
  const relativePath = normalizePath(path.relative(context.repoRoot, filePath));
458
487
  const scriptContent = composeVueVirtualScript(content, [descriptor.script, descriptor.scriptSetup]);
@@ -473,7 +502,7 @@ async function parseVueFile(filePath, content, context) {
473
502
  parsed.language = 'vue';
474
503
  parsed.content = content;
475
504
  parsed.lines = content.split(/\r?\n/);
476
- const componentName = inferVueComponentName(filePath, content);
505
+ const componentName = inferVueComponentName(filePath, scriptContent);
477
506
  const componentLine = descriptor.script?.loc.start.line ?? descriptor.scriptSetup?.loc.start.line ?? 1;
478
507
  pushUniqueSymbol(parsed.symbols, {
479
508
  type: 'class',
@@ -485,6 +514,21 @@ async function parseVueFile(filePath, content, context) {
485
514
  });
486
515
  return parsed;
487
516
  }
517
+ // Parses a single Go import spec (the `"path"` / `alias "path"` fragment that
518
+ // follows `import` on a line or stands alone inside a grouped `import ( ... )`
519
+ // block). The alias may be an identifier, `_` (blank), or `.` (dot import).
520
+ function parseGoImportSpec(spec) {
521
+ const match = spec.match(/^(?:([A-Za-z0-9_.]+)\s+)?["`]([^"`]+)["`]/);
522
+ if (!match)
523
+ return undefined;
524
+ const specifier = match[2];
525
+ return {
526
+ specifier,
527
+ line: 0,
528
+ kind: 'external',
529
+ bindings: [{ localName: match[1] || specifier.split('/').at(-1) || specifier, importedName: specifier }],
530
+ };
531
+ }
488
532
  function parseImportsFromLine(line, language, context, filePath) {
489
533
  const imports = [];
490
534
  if (language === 'python') {
@@ -525,14 +569,11 @@ function parseImportsFromLine(line, language, context, filePath) {
525
569
  return imports;
526
570
  }
527
571
  if (language === 'go') {
528
- const match = line.match(/^import\s+(?:([A-Za-z0-9_]+)\s+)?["`](.+)["`]$/);
529
- if (match) {
530
- imports.push({
531
- specifier: match[2],
532
- line: 0,
533
- kind: 'external',
534
- bindings: [{ localName: match[1] || match[2].split('/').at(-1) || match[2], importedName: match[2] }],
535
- });
572
+ const single = line.match(/^import\s+(.+)$/);
573
+ if (single) {
574
+ const parsed = parseGoImportSpec(single[1].trim());
575
+ if (parsed)
576
+ imports.push(parsed);
536
577
  }
537
578
  return imports;
538
579
  }
@@ -549,7 +590,9 @@ function parseImportsFromLine(line, language, context, filePath) {
549
590
  }
550
591
  return imports;
551
592
  }
552
- const generic = line.match(/^(?:import|include|require)\s+["<]?([^">;]+)[">]?/);
593
+ // Strip an optional leading `#` so C/C++ `#include <...>` / `#include "..."`
594
+ // directives are recognized alongside plain import/require forms.
595
+ const generic = line.replace(/^#\s*/, '').match(/^(?:import|include|require)\s+["<]?([^">;]+)[">]?/);
553
596
  if (generic) {
554
597
  const specifier = generic[1].trim();
555
598
  imports.push({
@@ -561,6 +604,43 @@ function parseImportsFromLine(line, language, context, filePath) {
561
604
  }
562
605
  return imports;
563
606
  }
607
+ /**
608
+ * Extracts every import across `lines`, stamping each with its 1-based line
609
+ * number. Handles Go's grouped `import ( ... )` blocks, whose inner specs are
610
+ * bare quoted paths that no single-line pattern matches.
611
+ */
612
+ function collectImportsFromLines(lines, language, context, filePath) {
613
+ const imports = [];
614
+ let inGoImportBlock = false;
615
+ for (let index = 0; index < lines.length; index++) {
616
+ const trimmed = lines[index].trim();
617
+ const lineNumber = index + 1;
618
+ if (language === 'go') {
619
+ if (inGoImportBlock) {
620
+ if (trimmed.startsWith(')')) {
621
+ inGoImportBlock = false;
622
+ continue;
623
+ }
624
+ const grouped = parseGoImportSpec(trimmed);
625
+ if (grouped)
626
+ imports.push({ ...grouped, line: lineNumber });
627
+ continue;
628
+ }
629
+ if (/^import\s*\(\s*$/.test(trimmed)) {
630
+ inGoImportBlock = true;
631
+ continue;
632
+ }
633
+ }
634
+ for (const parsedImport of parseImportsFromLine(trimmed, language, context, filePath)) {
635
+ imports.push({
636
+ ...parsedImport,
637
+ line: lineNumber,
638
+ resolvedPath: parsedImport.resolvedPath ?? resolveImportPath(language, context, filePath, parsedImport.specifier),
639
+ });
640
+ }
641
+ }
642
+ return imports;
643
+ }
564
644
  function parseRegexFile(filePath, content, context) {
565
645
  const language = getLanguageSpec(filePath)?.name ?? 'generic';
566
646
  const relativePath = normalizePath(path.relative(context.repoRoot, filePath));
@@ -583,6 +663,10 @@ function parseRegexFile(filePath, content, context) {
583
663
  }
584
664
  return classStack[classStack.length - 1];
585
665
  };
666
+ // Imports are collected up front so grouped/multi-line forms (e.g. Go's
667
+ // `import ( ... )`) and directive lines skipped as comments below are still
668
+ // captured.
669
+ imports.push(...collectImportsFromLines(lines, language, context, filePath));
586
670
  for (let index = 0; index < lines.length; index++) {
587
671
  const line = lines[index];
588
672
  const lineNumber = index + 1;
@@ -590,13 +674,6 @@ function parseRegexFile(filePath, content, context) {
590
674
  const indent = line.match(/^\s*/)?.[0].length ?? 0;
591
675
  if (trimmed.length === 0 || trimmed.startsWith('#') || trimmed.startsWith('//'))
592
676
  continue;
593
- for (const parsedImport of parseImportsFromLine(trimmed, language, context, filePath)) {
594
- imports.push({
595
- ...parsedImport,
596
- line: lineNumber,
597
- resolvedPath: parsedImport.resolvedPath ?? resolveImportPath(language, context, filePath, parsedImport.specifier),
598
- });
599
- }
600
677
  if (language === 'python') {
601
678
  const classMatch = trimmed.match(/^class\s+([A-Za-z_][A-Za-z0-9_]*)(?:\(([^)]+)\))?:/);
602
679
  if (classMatch) {
@@ -742,6 +819,254 @@ function parseRegexFile(filePath, content, context) {
742
819
  inheritances,
743
820
  };
744
821
  }
822
+ function nodeLine(node) {
823
+ return node.startPosition.row + 1;
824
+ }
825
+ function nodeEndLine(node) {
826
+ return node.endPosition.row + 1;
827
+ }
828
+ function nodeStartColumn(node) {
829
+ return node.startPosition.column + 1;
830
+ }
831
+ function nodeEndColumn(node) {
832
+ return node.endPosition.column + 1;
833
+ }
834
+ function nodeKey(node) {
835
+ return `${node.type}:${node.startIndex}:${node.endIndex}`;
836
+ }
837
+ const NAME_NODE_TYPES = new Set([
838
+ 'identifier',
839
+ 'field_identifier',
840
+ 'type_identifier',
841
+ 'constant',
842
+ 'property_identifier',
843
+ 'simple_identifier',
844
+ ]);
845
+ const PARAMETER_NODE_TYPES = new Set([
846
+ 'parameters',
847
+ 'parameter_list',
848
+ 'formal_parameters',
849
+ 'function_value_parameters',
850
+ 'argument_list',
851
+ ]);
852
+ function namedChildren(node) {
853
+ const children = [];
854
+ for (let index = 0; index < node.namedChildCount; index++) {
855
+ const child = node.namedChild(index);
856
+ if (child)
857
+ children.push(child);
858
+ }
859
+ return children;
860
+ }
861
+ function findFirstDescendant(node, predicate) {
862
+ if (predicate(node))
863
+ return node;
864
+ for (const child of namedChildren(node)) {
865
+ const found = findFirstDescendant(child, predicate);
866
+ if (found)
867
+ return found;
868
+ }
869
+ return null;
870
+ }
871
+ function findLastDescendant(node, predicate) {
872
+ let found = predicate(node) ? node : null;
873
+ for (const child of namedChildren(node)) {
874
+ const childFound = findLastDescendant(child, predicate);
875
+ if (childFound)
876
+ found = childFound;
877
+ }
878
+ return found;
879
+ }
880
+ function nameNodeFromDefinition(node) {
881
+ const fieldName = node.childForFieldName('name');
882
+ if (fieldName)
883
+ return fieldName;
884
+ const declarator = node.childForFieldName('declarator');
885
+ if (declarator) {
886
+ const declaratorName = findFirstDescendant(declarator, candidate => NAME_NODE_TYPES.has(candidate.type));
887
+ if (declaratorName)
888
+ return declaratorName;
889
+ }
890
+ const type = node.childForFieldName('type');
891
+ if (type) {
892
+ const typeName = findFirstDescendant(type, candidate => NAME_NODE_TYPES.has(candidate.type));
893
+ if (typeName)
894
+ return typeName;
895
+ }
896
+ return findFirstDescendant(node, candidate => NAME_NODE_TYPES.has(candidate.type));
897
+ }
898
+ function definitionName(node) {
899
+ return nameNodeFromDefinition(node)?.text;
900
+ }
901
+ function parametersText(node) {
902
+ const direct = node.childForFieldName('parameters');
903
+ if (direct)
904
+ return direct.text;
905
+ return findFirstDescendant(node, candidate => PARAMETER_NODE_TYPES.has(candidate.type))?.text;
906
+ }
907
+ function expressionName(node) {
908
+ if (!node)
909
+ return {};
910
+ if (NAME_NODE_TYPES.has(node.type))
911
+ return { calleeName: node.text };
912
+ const attribute = node.childForFieldName('attribute') ?? node.childForFieldName('field') ?? node.childForFieldName('name');
913
+ if (attribute) {
914
+ const object = node.childForFieldName('object');
915
+ const qualifier = object && NAME_NODE_TYPES.has(object.type) ? object.text : undefined;
916
+ return { calleeName: attribute.text, qualifier };
917
+ }
918
+ const scopedName = findLastDescendant(node, candidate => NAME_NODE_TYPES.has(candidate.type));
919
+ return { calleeName: scopedName?.text };
920
+ }
921
+ function callFromNode(node) {
922
+ return expressionName(node.childForFieldName('function') ?? node.childForFieldName('name') ?? node.namedChild(0));
923
+ }
924
+ function collectTypeNames(node) {
925
+ const names = new Set();
926
+ const visit = (candidate) => {
927
+ if (NAME_NODE_TYPES.has(candidate.type)) {
928
+ names.add(candidate.text);
929
+ return;
930
+ }
931
+ for (const child of namedChildren(candidate))
932
+ visit(child);
933
+ };
934
+ visit(node);
935
+ return [...names];
936
+ }
937
+ function inheritanceNames(node, className) {
938
+ const fields = ['superclasses', 'superclass', 'interfaces', 'base_clause', 'supertype', 'supertype_list'];
939
+ const names = new Set();
940
+ for (const field of fields) {
941
+ const value = node.childForFieldName(field);
942
+ if (!value)
943
+ continue;
944
+ for (const name of collectTypeNames(value)) {
945
+ if (name !== className)
946
+ names.add(name);
947
+ }
948
+ }
949
+ return [...names];
950
+ }
951
+ async function treeSitterTagIndex(grammar, root) {
952
+ const captures = await collectTreeSitterTagCaptures(grammar, root);
953
+ const index = {
954
+ functions: new Set(),
955
+ classes: new Set(),
956
+ calls: new Set(),
957
+ };
958
+ for (const capture of captures ?? []) {
959
+ if (capture.name === 'definition.function' || capture.name === 'definition.method') {
960
+ index.functions.add(nodeKey(capture.node));
961
+ }
962
+ else if (capture.name === 'definition.class' ||
963
+ capture.name === 'definition.interface' ||
964
+ capture.name === 'definition.type' ||
965
+ capture.name === 'definition.enum') {
966
+ index.classes.add(nodeKey(capture.node));
967
+ }
968
+ else if (capture.name === 'reference.call') {
969
+ index.calls.add(nodeKey(capture.node));
970
+ }
971
+ }
972
+ return index;
973
+ }
974
+ async function parseTreeSitterFile(filePath, content, context, descriptor) {
975
+ const tree = await parseTreeSitterContent(descriptor.grammar, content);
976
+ if (!tree)
977
+ return null;
978
+ const language = getLanguageSpec(filePath)?.name ?? 'generic';
979
+ const relativePath = normalizePath(path.relative(context.repoRoot, filePath));
980
+ const lines = content.split(/\r?\n/);
981
+ const symbols = [];
982
+ const imports = [];
983
+ const calls = [];
984
+ const inheritances = [];
985
+ const functionNodeTypes = new Set(descriptor.functionNodeTypes);
986
+ const classNodeTypes = new Set(descriptor.classNodeTypes);
987
+ const callNodeTypes = new Set(descriptor.callNodeTypes);
988
+ const tagIndex = await treeSitterTagIndex(descriptor.grammar, tree.rootNode);
989
+ imports.push(...collectImportsFromLines(lines, language, context, filePath));
990
+ const visit = (node, containers, activeFunction) => {
991
+ let nextContainers = containers;
992
+ let nextFunction = activeFunction;
993
+ const key = nodeKey(node);
994
+ const pendingCall = activeFunction && (callNodeTypes.has(node.type) || tagIndex.calls.has(key)) ? callFromNode(node) : undefined;
995
+ if (classNodeTypes.has(node.type) || tagIndex.classes.has(key)) {
996
+ const name = definitionName(node);
997
+ if (name) {
998
+ const line = nodeLine(node);
999
+ symbols.push({
1000
+ type: node.type.includes('interface') || node.type.includes('trait') || node.type.includes('protocol')
1001
+ ? 'interface'
1002
+ : 'class',
1003
+ name,
1004
+ line,
1005
+ endLine: nodeEndLine(node),
1006
+ startColumn: nodeStartColumn(node),
1007
+ endColumn: nodeEndColumn(node),
1008
+ exported: true,
1009
+ });
1010
+ nextContainers = [...containers, { name, line }];
1011
+ for (const baseName of inheritanceNames(node, name)) {
1012
+ inheritances.push({ className: name, classLine: line, baseName, line });
1013
+ }
1014
+ }
1015
+ }
1016
+ if (functionNodeTypes.has(node.type) || tagIndex.functions.has(key)) {
1017
+ const name = definitionName(node);
1018
+ if (name) {
1019
+ const line = nodeLine(node);
1020
+ const container = nextContainers.at(-1);
1021
+ symbols.push({
1022
+ type: 'function',
1023
+ name,
1024
+ line,
1025
+ endLine: nodeEndLine(node),
1026
+ startColumn: nodeStartColumn(node),
1027
+ endColumn: nodeEndColumn(node),
1028
+ containerName: container?.name,
1029
+ signature: parametersText(node),
1030
+ exported: true,
1031
+ });
1032
+ nextFunction = { name, line, containerName: container?.name };
1033
+ }
1034
+ }
1035
+ for (const child of namedChildren(node))
1036
+ visit(child, nextContainers, nextFunction);
1037
+ if (activeFunction && pendingCall?.calleeName) {
1038
+ calls.push({
1039
+ callerName: activeFunction.name,
1040
+ callerLine: activeFunction.line,
1041
+ callerContainerName: activeFunction.containerName,
1042
+ calleeName: pendingCall.calleeName,
1043
+ qualifier: pendingCall.qualifier,
1044
+ line: nodeLine(node),
1045
+ });
1046
+ }
1047
+ };
1048
+ // The returned ParsedFile holds only plain data (symbols/imports/calls copy node
1049
+ // positions/text out during the traversal above and in tagIndex), so the WASM tree
1050
+ // handle can be freed here — no TreeSitterNode reference escapes this function.
1051
+ try {
1052
+ visit(tree.rootNode, []);
1053
+ return {
1054
+ path: filePath,
1055
+ relativePath,
1056
+ moduleName: getModuleName(context.repoRoot, filePath),
1057
+ language,
1058
+ content,
1059
+ lines,
1060
+ symbols,
1061
+ imports,
1062
+ calls,
1063
+ inheritances,
1064
+ };
1065
+ }
1066
+ finally {
1067
+ tree.delete();
1068
+ }
1069
+ }
745
1070
  export async function parseCodeFile(filePath, context, guardrails = {}) {
746
1071
  const spec = getLanguageSpec(filePath);
747
1072
  if (!spec)
@@ -774,11 +1099,27 @@ export async function parseCodeFile(filePath, context, guardrails = {}) {
774
1099
  case 'typescript':
775
1100
  return { kind: 'parsed', file: await parseTypescriptFile(filePath, content, context) };
776
1101
  case 'vue':
777
- return { kind: 'parsed', file: await parseVueFile(filePath, content, context) };
1102
+ try {
1103
+ return { kind: 'parsed', file: await parseVueFile(filePath, content, context) };
1104
+ }
1105
+ catch (error) {
1106
+ // A structurally broken SFC is reported as a skipped file rather than
1107
+ // aborting the surrounding batch, matching the other parsers' tolerance
1108
+ // of malformed input.
1109
+ if (error instanceof VueSfcParseError) {
1110
+ return { kind: 'skipped', reason: error.reason };
1111
+ }
1112
+ throw error;
1113
+ }
778
1114
  case 'python':
779
1115
  case 'go':
780
1116
  case 'rust':
781
1117
  case 'generic':
1118
+ if (spec.treeSitter) {
1119
+ const treeSitterFile = await parseTreeSitterFile(filePath, content, context, spec.treeSitter);
1120
+ if (treeSitterFile)
1121
+ return { kind: 'parsed', file: treeSitterFile };
1122
+ }
782
1123
  return { kind: 'parsed', file: parseRegexFile(filePath, content, context) };
783
1124
  default:
784
1125
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../../src/code/parsers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../../src/code/parsers.ts"],"names":[],"mappings":"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"}