@optave/codegraph 3.9.5 → 3.9.6

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 (62) hide show
  1. package/dist/ast-analysis/engine.d.ts.map +1 -1
  2. package/dist/ast-analysis/engine.js +3 -2
  3. package/dist/ast-analysis/engine.js.map +1 -1
  4. package/dist/ast-analysis/rules/csharp.d.ts.map +1 -1
  5. package/dist/ast-analysis/rules/csharp.js +8 -1
  6. package/dist/ast-analysis/rules/csharp.js.map +1 -1
  7. package/dist/ast-analysis/rules/go.d.ts.map +1 -1
  8. package/dist/ast-analysis/rules/go.js +4 -1
  9. package/dist/ast-analysis/rules/go.js.map +1 -1
  10. package/dist/ast-analysis/rules/index.d.ts +6 -0
  11. package/dist/ast-analysis/rules/index.d.ts.map +1 -1
  12. package/dist/ast-analysis/rules/index.js +151 -4
  13. package/dist/ast-analysis/rules/index.js.map +1 -1
  14. package/dist/ast-analysis/rules/java.d.ts.map +1 -1
  15. package/dist/ast-analysis/rules/java.js +5 -1
  16. package/dist/ast-analysis/rules/java.js.map +1 -1
  17. package/dist/ast-analysis/rules/php.d.ts.map +1 -1
  18. package/dist/ast-analysis/rules/php.js +6 -1
  19. package/dist/ast-analysis/rules/php.js.map +1 -1
  20. package/dist/ast-analysis/rules/python.d.ts.map +1 -1
  21. package/dist/ast-analysis/rules/python.js +5 -1
  22. package/dist/ast-analysis/rules/python.js.map +1 -1
  23. package/dist/ast-analysis/rules/ruby.d.ts.map +1 -1
  24. package/dist/ast-analysis/rules/ruby.js +4 -1
  25. package/dist/ast-analysis/rules/ruby.js.map +1 -1
  26. package/dist/ast-analysis/rules/rust.d.ts.map +1 -1
  27. package/dist/ast-analysis/rules/rust.js +5 -1
  28. package/dist/ast-analysis/rules/rust.js.map +1 -1
  29. package/dist/ast-analysis/visitors/ast-store-visitor.d.ts +2 -1
  30. package/dist/ast-analysis/visitors/ast-store-visitor.d.ts.map +1 -1
  31. package/dist/ast-analysis/visitors/ast-store-visitor.js +129 -37
  32. package/dist/ast-analysis/visitors/ast-store-visitor.js.map +1 -1
  33. package/dist/domain/graph/builder/pipeline.d.ts.map +1 -1
  34. package/dist/domain/graph/builder/pipeline.js +14 -2
  35. package/dist/domain/graph/builder/pipeline.js.map +1 -1
  36. package/dist/domain/parser.d.ts +40 -0
  37. package/dist/domain/parser.d.ts.map +1 -1
  38. package/dist/domain/parser.js +104 -0
  39. package/dist/domain/parser.js.map +1 -1
  40. package/dist/domain/search/models.js +1 -1
  41. package/dist/domain/wasm-worker-entry.js +3 -2
  42. package/dist/domain/wasm-worker-entry.js.map +1 -1
  43. package/dist/features/ast.d.ts.map +1 -1
  44. package/dist/features/ast.js +11 -9
  45. package/dist/features/ast.js.map +1 -1
  46. package/grammars/tree-sitter-erlang.wasm +0 -0
  47. package/package.json +7 -7
  48. package/src/ast-analysis/engine.ts +11 -1
  49. package/src/ast-analysis/rules/csharp.ts +8 -1
  50. package/src/ast-analysis/rules/go.ts +4 -1
  51. package/src/ast-analysis/rules/index.ts +181 -4
  52. package/src/ast-analysis/rules/java.ts +5 -1
  53. package/src/ast-analysis/rules/php.ts +6 -1
  54. package/src/ast-analysis/rules/python.ts +5 -1
  55. package/src/ast-analysis/rules/ruby.ts +4 -1
  56. package/src/ast-analysis/rules/rust.ts +5 -1
  57. package/src/ast-analysis/visitors/ast-store-visitor.ts +129 -34
  58. package/src/domain/graph/builder/pipeline.ts +24 -4
  59. package/src/domain/parser.ts +122 -0
  60. package/src/domain/search/models.ts +1 -1
  61. package/src/domain/wasm-worker-entry.ts +11 -1
  62. package/src/features/ast.ts +22 -9
@@ -28,7 +28,9 @@ import type { Tree } from 'web-tree-sitter';
28
28
  import { Language, Parser, Query } from 'web-tree-sitter';
29
29
  import { computeLOCMetrics, computeMaintainabilityIndex } from '../ast-analysis/metrics.js';
30
30
  import {
31
+ AST_STRING_CONFIGS,
31
32
  AST_TYPE_MAPS,
33
+ astStopRecurseKinds,
32
34
  CFG_RULES,
33
35
  COMPLEXITY_RULES,
34
36
  DATAFLOW_RULES,
@@ -584,7 +586,15 @@ function setupVisitorsLocal(
584
586
  if (opts.ast) {
585
587
  const astTypeMap = AST_TYPE_MAPS.get(langId);
586
588
  if (astTypeMap) {
587
- astVisitor = createAstStoreVisitor(astTypeMap, defs, relPath, new Map<string, number>());
589
+ const stringConfig = AST_STRING_CONFIGS.get(langId);
590
+ astVisitor = createAstStoreVisitor(
591
+ astTypeMap,
592
+ defs,
593
+ relPath,
594
+ new Map<string, number>(),
595
+ stringConfig,
596
+ astStopRecurseKinds(langId),
597
+ );
588
598
  visitors.push(astVisitor);
589
599
  }
590
600
  }
@@ -1,5 +1,9 @@
1
1
  import path from 'node:path';
2
- import { AST_TYPE_MAPS } from '../ast-analysis/rules/index.js';
2
+ import {
3
+ AST_STRING_CONFIGS,
4
+ AST_TYPE_MAPS,
5
+ astStopRecurseKinds,
6
+ } from '../ast-analysis/rules/index.js';
3
7
  import { buildExtensionSet } from '../ast-analysis/shared.js';
4
8
  import { walkWithVisitors } from '../ast-analysis/visitor.js';
5
9
  import { createAstStoreVisitor } from '../ast-analysis/visitors/ast-store-visitor.js';
@@ -22,8 +26,6 @@ const KIND_ICONS: Record<string, string> = {
22
26
  await: '\u22B3', // ⊳
23
27
  };
24
28
 
25
- const JS_TS_AST_TYPES = AST_TYPE_MAPS.get('javascript');
26
-
27
29
  const WALK_EXTENSIONS = buildExtensionSet(AST_TYPE_MAPS);
28
30
 
29
31
  // ─── Helpers ──────────────────────────────────────────────────────────
@@ -171,9 +173,10 @@ function collectFileAstRows(
171
173
 
172
174
  // WASM fallback — walk tree if available
173
175
  const ext = path.extname(relPath).toLowerCase();
174
- if (WALK_EXTENSIONS.has(ext) && symbols._tree) {
176
+ const langId = symbols._langId || '';
177
+ if ((WALK_EXTENSIONS.has(ext) || AST_TYPE_MAPS.has(langId)) && symbols._tree) {
175
178
  const rows: AstRow[] = [];
176
- walkAst(symbols._tree.rootNode, defs, relPath, rows, nodeIdMap);
179
+ walkAst(symbols._tree.rootNode, defs, relPath, rows, nodeIdMap, langId);
177
180
  return rows;
178
181
  }
179
182
 
@@ -226,13 +229,23 @@ function walkAst(
226
229
  relPath: string,
227
230
  rows: AstRow[],
228
231
  nodeIdMap: Map<string, number>,
232
+ langId: string,
229
233
  ): void {
230
- if (!JS_TS_AST_TYPES) {
231
- debug('ast-store: JS_TS_AST_TYPES not available — skipping walk');
234
+ const astTypeMap = AST_TYPE_MAPS.get(langId);
235
+ if (!astTypeMap) {
236
+ debug(`ast-store: no astTypes for langId=${langId} — skipping walk`);
232
237
  return;
233
238
  }
234
- const visitor = createAstStoreVisitor(JS_TS_AST_TYPES, defs, relPath, nodeIdMap);
235
- const results = walkWithVisitors(rootNode, [visitor], 'javascript');
239
+ const stringConfig = AST_STRING_CONFIGS.get(langId);
240
+ const visitor = createAstStoreVisitor(
241
+ astTypeMap,
242
+ defs,
243
+ relPath,
244
+ nodeIdMap,
245
+ stringConfig,
246
+ astStopRecurseKinds(langId),
247
+ );
248
+ const results = walkWithVisitors(rootNode, [visitor], langId);
236
249
  const collected = (results['ast-store'] || []) as AstRow[];
237
250
  rows.push(...collected);
238
251
  }