@monoes/monomindcli 1.6.4 → 1.6.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 (116) hide show
  1. package/.claude/helpers/graphify-freshen.cjs +10 -1
  2. package/bundled-graph/dist/src/analyze.d.ts +32 -0
  3. package/bundled-graph/dist/src/analyze.d.ts.map +1 -0
  4. package/bundled-graph/dist/src/analyze.js +297 -0
  5. package/bundled-graph/dist/src/analyze.js.map +1 -0
  6. package/bundled-graph/dist/src/build.d.ts +8 -0
  7. package/bundled-graph/dist/src/build.d.ts.map +1 -0
  8. package/bundled-graph/dist/src/build.js +73 -0
  9. package/bundled-graph/dist/src/build.js.map +1 -0
  10. package/bundled-graph/dist/src/cache.d.ts +12 -0
  11. package/bundled-graph/dist/src/cache.d.ts.map +1 -0
  12. package/bundled-graph/dist/src/cache.js +43 -0
  13. package/bundled-graph/dist/src/cache.js.map +1 -0
  14. package/bundled-graph/dist/src/cluster.d.ts +5 -0
  15. package/bundled-graph/dist/src/cluster.d.ts.map +1 -0
  16. package/bundled-graph/dist/src/cluster.js +120 -0
  17. package/bundled-graph/dist/src/cluster.js.map +1 -0
  18. package/bundled-graph/dist/src/detect.d.ts +21 -0
  19. package/bundled-graph/dist/src/detect.d.ts.map +1 -0
  20. package/bundled-graph/dist/src/detect.js +195 -0
  21. package/bundled-graph/dist/src/detect.js.map +1 -0
  22. package/bundled-graph/dist/src/export.d.ts +21 -0
  23. package/bundled-graph/dist/src/export.d.ts.map +1 -0
  24. package/bundled-graph/dist/src/export.js +68 -0
  25. package/bundled-graph/dist/src/export.js.map +1 -0
  26. package/bundled-graph/dist/src/extract/index.d.ts +20 -0
  27. package/bundled-graph/dist/src/extract/index.d.ts.map +1 -0
  28. package/bundled-graph/dist/src/extract/index.js +158 -0
  29. package/bundled-graph/dist/src/extract/index.js.map +1 -0
  30. package/bundled-graph/dist/src/extract/languages/c.d.ts +3 -0
  31. package/bundled-graph/dist/src/extract/languages/c.d.ts.map +1 -0
  32. package/bundled-graph/dist/src/extract/languages/c.js +88 -0
  33. package/bundled-graph/dist/src/extract/languages/c.js.map +1 -0
  34. package/bundled-graph/dist/src/extract/languages/cpp.d.ts +3 -0
  35. package/bundled-graph/dist/src/extract/languages/cpp.d.ts.map +1 -0
  36. package/bundled-graph/dist/src/extract/languages/cpp.js +121 -0
  37. package/bundled-graph/dist/src/extract/languages/cpp.js.map +1 -0
  38. package/bundled-graph/dist/src/extract/languages/csharp.d.ts +3 -0
  39. package/bundled-graph/dist/src/extract/languages/csharp.d.ts.map +1 -0
  40. package/bundled-graph/dist/src/extract/languages/csharp.js +121 -0
  41. package/bundled-graph/dist/src/extract/languages/csharp.js.map +1 -0
  42. package/bundled-graph/dist/src/extract/languages/go.d.ts +3 -0
  43. package/bundled-graph/dist/src/extract/languages/go.d.ts.map +1 -0
  44. package/bundled-graph/dist/src/extract/languages/go.js +181 -0
  45. package/bundled-graph/dist/src/extract/languages/go.js.map +1 -0
  46. package/bundled-graph/dist/src/extract/languages/java.d.ts +3 -0
  47. package/bundled-graph/dist/src/extract/languages/java.d.ts.map +1 -0
  48. package/bundled-graph/dist/src/extract/languages/java.js +117 -0
  49. package/bundled-graph/dist/src/extract/languages/java.js.map +1 -0
  50. package/bundled-graph/dist/src/extract/languages/kotlin.d.ts +3 -0
  51. package/bundled-graph/dist/src/extract/languages/kotlin.d.ts.map +1 -0
  52. package/bundled-graph/dist/src/extract/languages/kotlin.js +112 -0
  53. package/bundled-graph/dist/src/extract/languages/kotlin.js.map +1 -0
  54. package/bundled-graph/dist/src/extract/languages/php.d.ts +3 -0
  55. package/bundled-graph/dist/src/extract/languages/php.d.ts.map +1 -0
  56. package/bundled-graph/dist/src/extract/languages/php.js +130 -0
  57. package/bundled-graph/dist/src/extract/languages/php.js.map +1 -0
  58. package/bundled-graph/dist/src/extract/languages/python.d.ts +3 -0
  59. package/bundled-graph/dist/src/extract/languages/python.d.ts.map +1 -0
  60. package/bundled-graph/dist/src/extract/languages/python.js +230 -0
  61. package/bundled-graph/dist/src/extract/languages/python.js.map +1 -0
  62. package/bundled-graph/dist/src/extract/languages/ruby.d.ts +3 -0
  63. package/bundled-graph/dist/src/extract/languages/ruby.d.ts.map +1 -0
  64. package/bundled-graph/dist/src/extract/languages/ruby.js +120 -0
  65. package/bundled-graph/dist/src/extract/languages/ruby.js.map +1 -0
  66. package/bundled-graph/dist/src/extract/languages/rust.d.ts +3 -0
  67. package/bundled-graph/dist/src/extract/languages/rust.d.ts.map +1 -0
  68. package/bundled-graph/dist/src/extract/languages/rust.js +195 -0
  69. package/bundled-graph/dist/src/extract/languages/rust.js.map +1 -0
  70. package/bundled-graph/dist/src/extract/languages/scala.d.ts +3 -0
  71. package/bundled-graph/dist/src/extract/languages/scala.d.ts.map +1 -0
  72. package/bundled-graph/dist/src/extract/languages/scala.js +110 -0
  73. package/bundled-graph/dist/src/extract/languages/scala.js.map +1 -0
  74. package/bundled-graph/dist/src/extract/languages/swift.d.ts +3 -0
  75. package/bundled-graph/dist/src/extract/languages/swift.d.ts.map +1 -0
  76. package/bundled-graph/dist/src/extract/languages/swift.js +122 -0
  77. package/bundled-graph/dist/src/extract/languages/swift.js.map +1 -0
  78. package/bundled-graph/dist/src/extract/languages/typescript.d.ts +3 -0
  79. package/bundled-graph/dist/src/extract/languages/typescript.d.ts.map +1 -0
  80. package/bundled-graph/dist/src/extract/languages/typescript.js +295 -0
  81. package/bundled-graph/dist/src/extract/languages/typescript.js.map +1 -0
  82. package/bundled-graph/dist/src/extract/semantic.d.ts +38 -0
  83. package/bundled-graph/dist/src/extract/semantic.d.ts.map +1 -0
  84. package/bundled-graph/dist/src/extract/semantic.js +242 -0
  85. package/bundled-graph/dist/src/extract/semantic.js.map +1 -0
  86. package/bundled-graph/dist/src/extract/tree-sitter-runner.d.ts +48 -0
  87. package/bundled-graph/dist/src/extract/tree-sitter-runner.d.ts.map +1 -0
  88. package/bundled-graph/dist/src/extract/tree-sitter-runner.js +137 -0
  89. package/bundled-graph/dist/src/extract/tree-sitter-runner.js.map +1 -0
  90. package/bundled-graph/dist/src/extract/types.d.ts +7 -0
  91. package/bundled-graph/dist/src/extract/types.d.ts.map +1 -0
  92. package/bundled-graph/dist/src/extract/types.js +2 -0
  93. package/bundled-graph/dist/src/extract/types.js.map +1 -0
  94. package/bundled-graph/dist/src/index.d.ts +28 -0
  95. package/bundled-graph/dist/src/index.d.ts.map +1 -0
  96. package/bundled-graph/dist/src/index.js +26 -0
  97. package/bundled-graph/dist/src/index.js.map +1 -0
  98. package/bundled-graph/dist/src/pipeline.d.ts +27 -0
  99. package/bundled-graph/dist/src/pipeline.d.ts.map +1 -0
  100. package/bundled-graph/dist/src/pipeline.js +269 -0
  101. package/bundled-graph/dist/src/pipeline.js.map +1 -0
  102. package/bundled-graph/dist/src/report.d.ts +26 -0
  103. package/bundled-graph/dist/src/report.d.ts.map +1 -0
  104. package/bundled-graph/dist/src/report.js +214 -0
  105. package/bundled-graph/dist/src/report.js.map +1 -0
  106. package/bundled-graph/dist/src/types.d.ts +124 -0
  107. package/bundled-graph/dist/src/types.d.ts.map +1 -0
  108. package/bundled-graph/dist/src/types.js +2 -0
  109. package/bundled-graph/dist/src/types.js.map +1 -0
  110. package/bundled-graph/dist/src/visualize.d.ts +4 -0
  111. package/bundled-graph/dist/src/visualize.d.ts.map +1 -0
  112. package/bundled-graph/dist/src/visualize.js +574 -0
  113. package/bundled-graph/dist/src/visualize.js.map +1 -0
  114. package/bundled-graph/dist/tsconfig.tsbuildinfo +1 -0
  115. package/bundled-graph/package.json +57 -0
  116. package/package.json +9 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python.js","sourceRoot":"","sources":["../../../../src/extract/languages/python.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { LanguageExtractor } from '../types.js';
2
+ export declare const rubyExtractor: LanguageExtractor;
3
+ //# sourceMappingURL=ruby.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ruby.d.ts","sourceRoot":"","sources":["../../../../src/extract/languages/ruby.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AA2HrD,eAAO,MAAM,aAAa,EAAE,iBAQ3B,CAAC"}
@@ -0,0 +1,120 @@
1
+ import { basename } from 'path';
2
+ import { tryLoadParser, walk } from '../tree-sitter-runner.js';
3
+ function loc(node) {
4
+ return `L${node.startPosition.row + 1}`;
5
+ }
6
+ function extractWithTreeSitter(filePath, content) {
7
+ const nodes = [];
8
+ const edges = [];
9
+ const errors = [];
10
+ const parser = tryLoadParser('ruby');
11
+ if (!parser)
12
+ return { nodes, edges, filesProcessed: 1, fromCache: 0, errors };
13
+ let tree;
14
+ try {
15
+ tree = parser.parse(content);
16
+ }
17
+ catch (err) {
18
+ errors.push(`tree-sitter parse error in ${filePath}: ${String(err)}`);
19
+ return { nodes, edges, filesProcessed: 1, fromCache: 0, errors };
20
+ }
21
+ const classStack = [];
22
+ walk(tree.rootNode, (n) => {
23
+ if (n.type === 'class') {
24
+ const nameNode = n.childForFieldName('name');
25
+ const name = nameNode?.text ?? '';
26
+ if (!name)
27
+ return;
28
+ nodes.push({ id: name, label: name, fileType: 'code', sourceFile: filePath, sourceLocation: loc(n) });
29
+ classStack.push(name);
30
+ const superclass = n.childForFieldName('superclass');
31
+ if (superclass) {
32
+ const superName = superclass.text.replace(/^<\s*/, '').trim();
33
+ edges.push({ source: name, target: superName, relation: 'extends', confidence: 'EXTRACTED', sourceFile: filePath, sourceLocation: loc(n) });
34
+ }
35
+ return;
36
+ }
37
+ if (n.type === 'module') {
38
+ const nameNode = n.childForFieldName('name');
39
+ if (nameNode?.text) {
40
+ nodes.push({ id: nameNode.text, label: nameNode.text, fileType: 'code', sourceFile: filePath, sourceLocation: loc(n), nodeKind: 'module' });
41
+ classStack.push(nameNode.text);
42
+ }
43
+ return;
44
+ }
45
+ if (n.type === 'method' || n.type === 'singleton_method') {
46
+ const nameNode = n.childForFieldName('name');
47
+ if (!nameNode?.text)
48
+ return;
49
+ const qualified = classStack.length > 0 ? `${classStack[classStack.length - 1]}#${nameNode.text}` : nameNode.text;
50
+ nodes.push({ id: qualified, label: qualified, fileType: 'code', sourceFile: filePath, sourceLocation: loc(n) });
51
+ return;
52
+ }
53
+ if (n.type === 'call' && n.childForFieldName('method')?.text === 'require') {
54
+ const args = n.childForFieldName('arguments');
55
+ if (args) {
56
+ const strNode = args.children.find((c) => c.type === 'string');
57
+ if (strNode) {
58
+ const importPath = strNode.text.replace(/^['"]|['"]$/g, '');
59
+ edges.push({ source: basename(filePath), target: importPath, relation: 'imports', confidence: 'EXTRACTED', sourceFile: filePath, sourceLocation: loc(n) });
60
+ }
61
+ }
62
+ }
63
+ });
64
+ return { nodes, edges, filesProcessed: 1, fromCache: 0, errors };
65
+ }
66
+ function extractWithRegex(filePath, content) {
67
+ const nodes = [];
68
+ const edges = [];
69
+ const lines = content.split('\n');
70
+ let currentClass = '';
71
+ lines.forEach((line, idx) => {
72
+ const location = `L${idx + 1}`;
73
+ const trimmed = line.trim();
74
+ // require / require_relative
75
+ const requireMatch = trimmed.match(/^require(?:_relative)?\s+['"]([^'"]+)['"]/);
76
+ if (requireMatch) {
77
+ edges.push({ source: basename(filePath), target: requireMatch[1], relation: 'imports', confidence: 'EXTRACTED', sourceFile: filePath, sourceLocation: location });
78
+ return;
79
+ }
80
+ // module
81
+ const moduleMatch = trimmed.match(/^module\s+([\w:]+)/);
82
+ if (moduleMatch) {
83
+ nodes.push({ id: moduleMatch[1], label: moduleMatch[1], fileType: 'code', sourceFile: filePath, sourceLocation: location, nodeKind: 'module' });
84
+ if (!currentClass)
85
+ currentClass = moduleMatch[1];
86
+ return;
87
+ }
88
+ // class
89
+ const classMatch = trimmed.match(/^class\s+([\w:]+)/);
90
+ if (classMatch) {
91
+ const name = classMatch[1];
92
+ currentClass = name;
93
+ nodes.push({ id: name, label: name, fileType: 'code', sourceFile: filePath, sourceLocation: location });
94
+ const superMatch = trimmed.match(/\s+<\s+([\w:]+)/);
95
+ if (superMatch) {
96
+ edges.push({ source: name, target: superMatch[1], relation: 'extends', confidence: 'EXTRACTED', sourceFile: filePath, sourceLocation: location });
97
+ }
98
+ return;
99
+ }
100
+ // def
101
+ const defMatch = trimmed.match(/^def\s+(self\.)?(\w+[?!]?)/);
102
+ if (defMatch) {
103
+ const name = defMatch[2];
104
+ const qualified = currentClass ? `${currentClass}#${name}` : name;
105
+ nodes.push({ id: qualified, label: qualified, fileType: 'code', sourceFile: filePath, sourceLocation: location });
106
+ }
107
+ });
108
+ return { nodes, edges, filesProcessed: 1, fromCache: 0, errors: [] };
109
+ }
110
+ export const rubyExtractor = {
111
+ language: 'ruby',
112
+ extensions: ['.rb', '.rake', '.gemspec'],
113
+ extract(filePath, content) {
114
+ const ts = extractWithTreeSitter(filePath, content);
115
+ if (ts.nodes.length > 0 || ts.edges.length > 0 || ts.errors.length > 0)
116
+ return ts;
117
+ return extractWithRegex(filePath, content);
118
+ },
119
+ };
120
+ //# sourceMappingURL=ruby.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ruby.js","sourceRoot":"","sources":["../../../../src/extract/languages/ruby.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { LanguageExtractor } from '../types.js';
2
+ export declare const rustExtractor: LanguageExtractor;
3
+ //# sourceMappingURL=rust.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rust.d.ts","sourceRoot":"","sources":["../../../../src/extract/languages/rust.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAwNrD,eAAO,MAAM,aAAa,EAAE,iBAW3B,CAAC"}
@@ -0,0 +1,195 @@
1
+ import { basename } from 'path';
2
+ import { tryLoadParser, walk, } from '../tree-sitter-runner.js';
3
+ // ---- helpers ----
4
+ function nodeName(node) {
5
+ const nameNode = node.childForFieldName('name');
6
+ return nameNode?.text ?? '';
7
+ }
8
+ function loc(node) {
9
+ return `L${node.startPosition.row + 1}`;
10
+ }
11
+ // ---- tree-sitter extraction ----
12
+ function extractWithTreeSitter(filePath, content) {
13
+ const nodes = [];
14
+ const edges = [];
15
+ const errors = [];
16
+ const parser = tryLoadParser('rust');
17
+ if (!parser) {
18
+ return { nodes, edges, filesProcessed: 1, fromCache: 0, errors };
19
+ }
20
+ let tree;
21
+ try {
22
+ tree = parser.parse(content);
23
+ }
24
+ catch (err) {
25
+ errors.push(`tree-sitter parse error in ${filePath}: ${String(err)}`);
26
+ return { nodes, edges, filesProcessed: 1, fromCache: 0, errors };
27
+ }
28
+ walk(tree.rootNode, (n) => {
29
+ // ---- functions ----
30
+ if (n.type === 'function_item') {
31
+ const name = nodeName(n);
32
+ if (name) {
33
+ nodes.push({
34
+ id: name,
35
+ label: name,
36
+ fileType: 'code',
37
+ sourceFile: filePath,
38
+ sourceLocation: loc(n),
39
+ nodeKind: 'function',
40
+ });
41
+ }
42
+ return;
43
+ }
44
+ // ---- structs ----
45
+ if (n.type === 'struct_item') {
46
+ const name = nodeName(n);
47
+ if (name) {
48
+ nodes.push({
49
+ id: name,
50
+ label: name,
51
+ fileType: 'code',
52
+ sourceFile: filePath,
53
+ sourceLocation: loc(n),
54
+ nodeKind: 'struct',
55
+ });
56
+ }
57
+ return;
58
+ }
59
+ // ---- traits ----
60
+ if (n.type === 'trait_item') {
61
+ const name = nodeName(n);
62
+ if (name) {
63
+ nodes.push({
64
+ id: name,
65
+ label: name,
66
+ fileType: 'code',
67
+ sourceFile: filePath,
68
+ sourceLocation: loc(n),
69
+ nodeKind: 'trait',
70
+ });
71
+ }
72
+ return;
73
+ }
74
+ // ---- impl blocks ----
75
+ if (n.type === 'impl_item') {
76
+ const typeNode = n.childForFieldName('type');
77
+ const traitNode = n.childForFieldName('trait');
78
+ const typeName = typeNode?.text ?? '';
79
+ if (typeName) {
80
+ nodes.push({
81
+ id: typeName,
82
+ label: typeName,
83
+ fileType: 'code',
84
+ sourceFile: filePath,
85
+ sourceLocation: loc(n),
86
+ nodeKind: 'impl',
87
+ });
88
+ // impl Trait for Type
89
+ if (traitNode) {
90
+ edges.push({
91
+ source: typeName,
92
+ target: traitNode.text,
93
+ relation: 'implements',
94
+ confidence: 'EXTRACTED',
95
+ sourceFile: filePath,
96
+ sourceLocation: loc(n),
97
+ });
98
+ }
99
+ }
100
+ return;
101
+ }
102
+ // ---- modules ----
103
+ if (n.type === 'mod_item') {
104
+ const name = nodeName(n);
105
+ if (name) {
106
+ nodes.push({
107
+ id: name,
108
+ label: name,
109
+ fileType: 'code',
110
+ sourceFile: filePath,
111
+ sourceLocation: loc(n),
112
+ nodeKind: 'module',
113
+ });
114
+ }
115
+ return;
116
+ }
117
+ // ---- use declarations ----
118
+ if (n.type === 'use_declaration') {
119
+ const argNode = n.childForFieldName('argument');
120
+ if (argNode) {
121
+ // Flatten the use path to a string (handles use a::b::c and use a::b::{c, d})
122
+ const usePath = argNode.text.replace(/\s+/g, '');
123
+ edges.push({
124
+ source: basename(filePath),
125
+ target: usePath,
126
+ relation: 'imports',
127
+ confidence: 'EXTRACTED',
128
+ sourceFile: filePath,
129
+ sourceLocation: loc(n),
130
+ });
131
+ }
132
+ }
133
+ });
134
+ return { nodes, edges, filesProcessed: 1, fromCache: 0, errors };
135
+ }
136
+ // ---- regex fallback ----
137
+ function extractWithRegex(filePath, content) {
138
+ const nodes = [];
139
+ const edges = [];
140
+ const lines = content.split('\n');
141
+ lines.forEach((line, idx) => {
142
+ const location = `L${idx + 1}`;
143
+ const trimmed = line.trim();
144
+ // pub fn / fn
145
+ const fnMatch = trimmed.match(/^(?:pub\s+)?(?:async\s+)?fn\s+(\w+)/);
146
+ if (fnMatch) {
147
+ nodes.push({ id: fnMatch[1], label: fnMatch[1], fileType: 'code', sourceFile: filePath, sourceLocation: location, nodeKind: 'function' });
148
+ }
149
+ // pub struct / struct
150
+ const structMatch = trimmed.match(/^(?:pub\s+)?struct\s+(\w+)/);
151
+ if (structMatch) {
152
+ nodes.push({ id: structMatch[1], label: structMatch[1], fileType: 'code', sourceFile: filePath, sourceLocation: location, nodeKind: 'struct' });
153
+ }
154
+ // pub trait / trait
155
+ const traitMatch = trimmed.match(/^(?:pub\s+)?trait\s+(\w+)/);
156
+ if (traitMatch) {
157
+ nodes.push({ id: traitMatch[1], label: traitMatch[1], fileType: 'code', sourceFile: filePath, sourceLocation: location, nodeKind: 'trait' });
158
+ }
159
+ // impl Trait for Type
160
+ const implForMatch = trimmed.match(/^impl(?:<[^>]+>)?\s+(\w+)\s+for\s+(\w+)/);
161
+ if (implForMatch) {
162
+ edges.push({ source: implForMatch[2], target: implForMatch[1], relation: 'implements', confidence: 'EXTRACTED', sourceFile: filePath, sourceLocation: location });
163
+ nodes.push({ id: implForMatch[2], label: implForMatch[2], fileType: 'code', sourceFile: filePath, sourceLocation: location, nodeKind: 'impl' });
164
+ }
165
+ // plain impl Type
166
+ const implMatch = trimmed.match(/^impl(?:<[^>]+>)?\s+(\w+)\s*\{/);
167
+ if (implMatch && !implForMatch) {
168
+ nodes.push({ id: implMatch[1], label: implMatch[1], fileType: 'code', sourceFile: filePath, sourceLocation: location, nodeKind: 'impl' });
169
+ }
170
+ // use statements
171
+ const useMatch = trimmed.match(/^use\s+([^;]+)/);
172
+ if (useMatch) {
173
+ edges.push({ source: basename(filePath), target: useMatch[1].trim(), relation: 'imports', confidence: 'EXTRACTED', sourceFile: filePath, sourceLocation: location });
174
+ }
175
+ // mod declarations
176
+ const modMatch = trimmed.match(/^(?:pub\s+)?mod\s+(\w+)/);
177
+ if (modMatch) {
178
+ nodes.push({ id: modMatch[1], label: modMatch[1], fileType: 'code', sourceFile: filePath, sourceLocation: location, nodeKind: 'module' });
179
+ }
180
+ });
181
+ return { nodes, edges, filesProcessed: 1, fromCache: 0, errors: [] };
182
+ }
183
+ // ---- extractor implementation ----
184
+ export const rustExtractor = {
185
+ language: 'rust',
186
+ extensions: ['.rs'],
187
+ extract(filePath, content) {
188
+ const tsResult = extractWithTreeSitter(filePath, content);
189
+ if (tsResult.nodes.length > 0 || tsResult.edges.length > 0 || tsResult.errors.length > 0) {
190
+ return tsResult;
191
+ }
192
+ return extractWithRegex(filePath, content);
193
+ },
194
+ };
195
+ //# sourceMappingURL=rust.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rust.js","sourceRoot":"","sources":["../../../../src/extract/languages/rust.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { LanguageExtractor } from '../types.js';
2
+ export declare const scalaExtractor: LanguageExtractor;
3
+ //# sourceMappingURL=scala.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scala.d.ts","sourceRoot":"","sources":["../../../../src/extract/languages/scala.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AA+GrD,eAAO,MAAM,cAAc,EAAE,iBAQ5B,CAAC"}
@@ -0,0 +1,110 @@
1
+ import { basename } from 'path';
2
+ import { tryLoadParser, walk } from '../tree-sitter-runner.js';
3
+ function nodeName(node) {
4
+ return node.childForFieldName('name')?.text ?? '';
5
+ }
6
+ function loc(node) {
7
+ return `L${node.startPosition.row + 1}`;
8
+ }
9
+ function extractWithTreeSitter(filePath, content) {
10
+ const nodes = [];
11
+ const edges = [];
12
+ const errors = [];
13
+ const parser = tryLoadParser('scala');
14
+ if (!parser)
15
+ return { nodes, edges, filesProcessed: 1, fromCache: 0, errors };
16
+ let tree;
17
+ try {
18
+ tree = parser.parse(content);
19
+ }
20
+ catch (err) {
21
+ errors.push(`tree-sitter parse error in ${filePath}: ${String(err)}`);
22
+ return { nodes, edges, filesProcessed: 1, fromCache: 0, errors };
23
+ }
24
+ const classStack = [];
25
+ walk(tree.rootNode, (n) => {
26
+ if (['class_definition', 'object_definition', 'trait_definition', 'case_class_definition'].includes(n.type)) {
27
+ const name = nodeName(n);
28
+ if (!name)
29
+ return;
30
+ nodes.push({ id: name, label: name, fileType: 'code', sourceFile: filePath, sourceLocation: loc(n) });
31
+ classStack.push(name);
32
+ // extends_clause / with_clause
33
+ for (const child of n.children) {
34
+ if (child.type === 'extends_clause' || child.type === 'with_clause') {
35
+ for (const sub of child.children) {
36
+ if (sub.type === 'type_identifier' || sub.type === 'identifier') {
37
+ const relation = child.type === 'with_clause' ? 'implements' : 'extends';
38
+ edges.push({ source: name, target: sub.text, relation, confidence: 'EXTRACTED', sourceFile: filePath, sourceLocation: loc(child) });
39
+ }
40
+ }
41
+ }
42
+ }
43
+ return;
44
+ }
45
+ if (n.type === 'function_definition') {
46
+ const name = nodeName(n);
47
+ if (!name)
48
+ return;
49
+ const qualified = classStack.length > 0 ? `${classStack[classStack.length - 1]}.${name}` : name;
50
+ nodes.push({ id: qualified, label: qualified, fileType: 'code', sourceFile: filePath, sourceLocation: loc(n) });
51
+ return;
52
+ }
53
+ if (n.type === 'import_declaration') {
54
+ const expr = n.children.find((c) => c.type !== 'import');
55
+ if (expr)
56
+ edges.push({ source: basename(filePath), target: expr.text.replace(/\._$/, '._'), relation: 'imports', confidence: 'EXTRACTED', sourceFile: filePath, sourceLocation: loc(n) });
57
+ }
58
+ });
59
+ return { nodes, edges, filesProcessed: 1, fromCache: 0, errors };
60
+ }
61
+ function extractWithRegex(filePath, content) {
62
+ const nodes = [];
63
+ const edges = [];
64
+ const lines = content.split('\n');
65
+ let currentClass = '';
66
+ lines.forEach((line, idx) => {
67
+ const location = `L${idx + 1}`;
68
+ const trimmed = line.trim();
69
+ // import
70
+ const importMatch = trimmed.match(/^import\s+([\w.]+(?:\._|,)?)/);
71
+ if (importMatch) {
72
+ edges.push({ source: basename(filePath), target: importMatch[1], relation: 'imports', confidence: 'EXTRACTED', sourceFile: filePath, sourceLocation: location });
73
+ return;
74
+ }
75
+ // class / object / trait / case class
76
+ const classMatch = trimmed.match(/^(?:abstract\s+|sealed\s+|final\s+|case\s+|implicit\s+)*(?:class|object|trait)\s+(\w+)/);
77
+ if (classMatch) {
78
+ const name = classMatch[1];
79
+ currentClass = name;
80
+ nodes.push({ id: name, label: name, fileType: 'code', sourceFile: filePath, sourceLocation: location });
81
+ const extendsMatch = trimmed.match(/\bextends\s+([\w.[\]]+)/);
82
+ if (extendsMatch)
83
+ edges.push({ source: name, target: extendsMatch[1], relation: 'extends', confidence: 'EXTRACTED', sourceFile: filePath, sourceLocation: location });
84
+ const withMatches = [...trimmed.matchAll(/\bwith\s+(\w+)/g)];
85
+ for (const m of withMatches) {
86
+ edges.push({ source: name, target: m[1], relation: 'implements', confidence: 'EXTRACTED', sourceFile: filePath, sourceLocation: location });
87
+ }
88
+ return;
89
+ }
90
+ // def
91
+ const defMatch = trimmed.match(/^(?:override\s+|private\s+|protected\s+|abstract\s+|final\s+|implicit\s+)*def\s+(\w+)/);
92
+ if (defMatch) {
93
+ const name = defMatch[1];
94
+ const qualified = currentClass ? `${currentClass}.${name}` : name;
95
+ nodes.push({ id: qualified, label: qualified, fileType: 'code', sourceFile: filePath, sourceLocation: location });
96
+ }
97
+ });
98
+ return { nodes, edges, filesProcessed: 1, fromCache: 0, errors: [] };
99
+ }
100
+ export const scalaExtractor = {
101
+ language: 'scala',
102
+ extensions: ['.scala', '.sc'],
103
+ extract(filePath, content) {
104
+ const ts = extractWithTreeSitter(filePath, content);
105
+ if (ts.nodes.length > 0 || ts.edges.length > 0 || ts.errors.length > 0)
106
+ return ts;
107
+ return extractWithRegex(filePath, content);
108
+ },
109
+ };
110
+ //# sourceMappingURL=scala.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scala.js","sourceRoot":"","sources":["../../../../src/extract/languages/scala.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { LanguageExtractor } from '../types.js';
2
+ export declare const swiftExtractor: LanguageExtractor;
3
+ //# sourceMappingURL=swift.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swift.d.ts","sourceRoot":"","sources":["../../../../src/extract/languages/swift.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AA4HrD,eAAO,MAAM,cAAc,EAAE,iBAQ5B,CAAC"}
@@ -0,0 +1,122 @@
1
+ import { basename } from 'path';
2
+ import { tryLoadParser, walk } from '../tree-sitter-runner.js';
3
+ function nodeName(node) {
4
+ return node.childForFieldName('name')?.text ?? '';
5
+ }
6
+ function loc(node) {
7
+ return `L${node.startPosition.row + 1}`;
8
+ }
9
+ function extractWithTreeSitter(filePath, content) {
10
+ const nodes = [];
11
+ const edges = [];
12
+ const errors = [];
13
+ const parser = tryLoadParser('swift');
14
+ if (!parser)
15
+ return { nodes, edges, filesProcessed: 1, fromCache: 0, errors };
16
+ let tree;
17
+ try {
18
+ tree = parser.parse(content);
19
+ }
20
+ catch (err) {
21
+ errors.push(`tree-sitter parse error in ${filePath}: ${String(err)}`);
22
+ return { nodes, edges, filesProcessed: 1, fromCache: 0, errors };
23
+ }
24
+ const classStack = [];
25
+ walk(tree.rootNode, (n) => {
26
+ if (['class_declaration', 'struct_declaration', 'protocol_declaration', 'enum_declaration', 'actor_declaration'].includes(n.type)) {
27
+ const name = nodeName(n);
28
+ if (!name)
29
+ return;
30
+ nodes.push({ id: name, label: name, fileType: 'code', sourceFile: filePath, sourceLocation: loc(n) });
31
+ classStack.push(name);
32
+ // type_inheritance_clause: : Foo, Bar
33
+ const inherit = n.children.find((c) => c.type === 'type_inheritance_clause');
34
+ if (inherit) {
35
+ for (const child of inherit.children) {
36
+ if (child.type === 'type_identifier' || child.type === 'user_type') {
37
+ edges.push({ source: name, target: child.text, relation: 'extends', confidence: 'EXTRACTED', sourceFile: filePath, sourceLocation: loc(inherit) });
38
+ }
39
+ }
40
+ }
41
+ return;
42
+ }
43
+ if (n.type === 'extension_declaration') {
44
+ const extType = n.childForFieldName('type')?.text ?? nodeName(n);
45
+ if (extType)
46
+ nodes.push({ id: `${extType} (ext)`, label: `${extType} (ext)`, fileType: 'code', sourceFile: filePath, sourceLocation: loc(n), nodeKind: 'extension' });
47
+ return;
48
+ }
49
+ if (n.type === 'function_declaration') {
50
+ const name = nodeName(n);
51
+ if (!name)
52
+ return;
53
+ const qualified = classStack.length > 0 ? `${classStack[classStack.length - 1]}.${name}` : name;
54
+ nodes.push({ id: qualified, label: qualified, fileType: 'code', sourceFile: filePath, sourceLocation: loc(n) });
55
+ return;
56
+ }
57
+ if (n.type === 'import_declaration') {
58
+ const path = n.children.filter((c) => c.type === 'identifier').map((c) => c.text).join('.');
59
+ if (path)
60
+ edges.push({ source: basename(filePath), target: path, relation: 'imports', confidence: 'EXTRACTED', sourceFile: filePath, sourceLocation: loc(n) });
61
+ }
62
+ });
63
+ return { nodes, edges, filesProcessed: 1, fromCache: 0, errors };
64
+ }
65
+ function extractWithRegex(filePath, content) {
66
+ const nodes = [];
67
+ const edges = [];
68
+ const lines = content.split('\n');
69
+ let currentType = '';
70
+ lines.forEach((line, idx) => {
71
+ const location = `L${idx + 1}`;
72
+ const trimmed = line.trim();
73
+ // import
74
+ const importMatch = trimmed.match(/^import\s+([\w.]+)/);
75
+ if (importMatch) {
76
+ edges.push({ source: basename(filePath), target: importMatch[1], relation: 'imports', confidence: 'EXTRACTED', sourceFile: filePath, sourceLocation: location });
77
+ return;
78
+ }
79
+ // class / struct / protocol / enum / actor
80
+ const typeMatch = trimmed.match(/^(?:public\s+|private\s+|internal\s+|open\s+|final\s+)*(?:class|struct|protocol|enum|actor)\s+(\w+)/);
81
+ if (typeMatch) {
82
+ const name = typeMatch[1];
83
+ currentType = name;
84
+ nodes.push({ id: name, label: name, fileType: 'code', sourceFile: filePath, sourceLocation: location });
85
+ // : Foo, Bar
86
+ const inhMatch = trimmed.match(/:\s*([\w,\s&]+?)(?:\{|where|$)/);
87
+ if (inhMatch) {
88
+ for (const part of inhMatch[1].split(',')) {
89
+ const b = part.trim();
90
+ if (b)
91
+ edges.push({ source: name, target: b, relation: 'extends', confidence: 'EXTRACTED', sourceFile: filePath, sourceLocation: location });
92
+ }
93
+ }
94
+ return;
95
+ }
96
+ // extension
97
+ const extMatch = trimmed.match(/^extension\s+([\w.]+)/);
98
+ if (extMatch) {
99
+ nodes.push({ id: `${extMatch[1]} (ext)`, label: `${extMatch[1]} (ext)`, fileType: 'code', sourceFile: filePath, sourceLocation: location, nodeKind: 'extension' });
100
+ return;
101
+ }
102
+ // func
103
+ const funcMatch = trimmed.match(/^(?:public\s+|private\s+|internal\s+|open\s+|static\s+|class\s+|override\s+|mutating\s+)*func\s+(\w+)/);
104
+ if (funcMatch) {
105
+ const name = funcMatch[1];
106
+ const qualified = currentType ? `${currentType}.${name}` : name;
107
+ nodes.push({ id: qualified, label: qualified, fileType: 'code', sourceFile: filePath, sourceLocation: location });
108
+ }
109
+ });
110
+ return { nodes, edges, filesProcessed: 1, fromCache: 0, errors: [] };
111
+ }
112
+ export const swiftExtractor = {
113
+ language: 'swift',
114
+ extensions: ['.swift'],
115
+ extract(filePath, content) {
116
+ const ts = extractWithTreeSitter(filePath, content);
117
+ if (ts.nodes.length > 0 || ts.edges.length > 0 || ts.errors.length > 0)
118
+ return ts;
119
+ return extractWithRegex(filePath, content);
120
+ },
121
+ };
122
+ //# sourceMappingURL=swift.js.map