@rangerchaz/aimem 0.1.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 (163) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +380 -0
  3. package/dist/cli/commands/git.d.ts +6 -0
  4. package/dist/cli/commands/git.d.ts.map +1 -0
  5. package/dist/cli/commands/git.js +298 -0
  6. package/dist/cli/commands/git.js.map +1 -0
  7. package/dist/cli/commands/hook-session-end.d.ts +7 -0
  8. package/dist/cli/commands/hook-session-end.d.ts.map +1 -0
  9. package/dist/cli/commands/hook-session-end.js +109 -0
  10. package/dist/cli/commands/hook-session-end.js.map +1 -0
  11. package/dist/cli/commands/hook-session-start.d.ts +7 -0
  12. package/dist/cli/commands/hook-session-start.d.ts.map +1 -0
  13. package/dist/cli/commands/hook-session-start.js +116 -0
  14. package/dist/cli/commands/hook-session-start.js.map +1 -0
  15. package/dist/cli/commands/import.d.ts +14 -0
  16. package/dist/cli/commands/import.d.ts.map +1 -0
  17. package/dist/cli/commands/import.js +527 -0
  18. package/dist/cli/commands/import.js.map +1 -0
  19. package/dist/cli/commands/init.d.ts +2 -0
  20. package/dist/cli/commands/init.d.ts.map +1 -0
  21. package/dist/cli/commands/init.js +32 -0
  22. package/dist/cli/commands/init.js.map +1 -0
  23. package/dist/cli/commands/mcp-serve.d.ts +2 -0
  24. package/dist/cli/commands/mcp-serve.d.ts.map +1 -0
  25. package/dist/cli/commands/mcp-serve.js +5 -0
  26. package/dist/cli/commands/mcp-serve.js.map +1 -0
  27. package/dist/cli/commands/query.d.ts +8 -0
  28. package/dist/cli/commands/query.d.ts.map +1 -0
  29. package/dist/cli/commands/query.js +83 -0
  30. package/dist/cli/commands/query.js.map +1 -0
  31. package/dist/cli/commands/setup.d.ts +10 -0
  32. package/dist/cli/commands/setup.d.ts.map +1 -0
  33. package/dist/cli/commands/setup.js +504 -0
  34. package/dist/cli/commands/setup.js.map +1 -0
  35. package/dist/cli/commands/start.d.ts +8 -0
  36. package/dist/cli/commands/start.d.ts.map +1 -0
  37. package/dist/cli/commands/start.js +90 -0
  38. package/dist/cli/commands/start.js.map +1 -0
  39. package/dist/cli/commands/status.d.ts +2 -0
  40. package/dist/cli/commands/status.d.ts.map +1 -0
  41. package/dist/cli/commands/status.js +85 -0
  42. package/dist/cli/commands/status.js.map +1 -0
  43. package/dist/cli/commands/stop.d.ts +7 -0
  44. package/dist/cli/commands/stop.d.ts.map +1 -0
  45. package/dist/cli/commands/stop.js +46 -0
  46. package/dist/cli/commands/stop.js.map +1 -0
  47. package/dist/cli/commands/visualize.d.ts +8 -0
  48. package/dist/cli/commands/visualize.d.ts.map +1 -0
  49. package/dist/cli/commands/visualize.js +96 -0
  50. package/dist/cli/commands/visualize.js.map +1 -0
  51. package/dist/cli/index.d.ts +3 -0
  52. package/dist/cli/index.d.ts.map +1 -0
  53. package/dist/cli/index.js +114 -0
  54. package/dist/cli/index.js.map +1 -0
  55. package/dist/db/index.d.ts +55 -0
  56. package/dist/db/index.d.ts.map +1 -0
  57. package/dist/db/index.js +464 -0
  58. package/dist/db/index.js.map +1 -0
  59. package/dist/db/schema.d.ts +4 -0
  60. package/dist/db/schema.d.ts.map +1 -0
  61. package/dist/db/schema.js +200 -0
  62. package/dist/db/schema.js.map +1 -0
  63. package/dist/extractor/index.d.ts +27 -0
  64. package/dist/extractor/index.d.ts.map +1 -0
  65. package/dist/extractor/index.js +227 -0
  66. package/dist/extractor/index.js.map +1 -0
  67. package/dist/git/extractor.d.ts +30 -0
  68. package/dist/git/extractor.d.ts.map +1 -0
  69. package/dist/git/extractor.js +126 -0
  70. package/dist/git/extractor.js.map +1 -0
  71. package/dist/git/hooks.d.ts +36 -0
  72. package/dist/git/hooks.d.ts.map +1 -0
  73. package/dist/git/hooks.js +142 -0
  74. package/dist/git/hooks.js.map +1 -0
  75. package/dist/git/index.d.ts +69 -0
  76. package/dist/git/index.d.ts.map +1 -0
  77. package/dist/git/index.js +250 -0
  78. package/dist/git/index.js.map +1 -0
  79. package/dist/indexer/index.d.ts +20 -0
  80. package/dist/indexer/index.d.ts.map +1 -0
  81. package/dist/indexer/index.js +173 -0
  82. package/dist/indexer/index.js.map +1 -0
  83. package/dist/indexer/parsers/base.d.ts +19 -0
  84. package/dist/indexer/parsers/base.d.ts.map +1 -0
  85. package/dist/indexer/parsers/base.js +46 -0
  86. package/dist/indexer/parsers/base.js.map +1 -0
  87. package/dist/indexer/parsers/cpp.d.ts +3 -0
  88. package/dist/indexer/parsers/cpp.d.ts.map +1 -0
  89. package/dist/indexer/parsers/cpp.js +180 -0
  90. package/dist/indexer/parsers/cpp.js.map +1 -0
  91. package/dist/indexer/parsers/go.d.ts +3 -0
  92. package/dist/indexer/parsers/go.d.ts.map +1 -0
  93. package/dist/indexer/parsers/go.js +98 -0
  94. package/dist/indexer/parsers/go.js.map +1 -0
  95. package/dist/indexer/parsers/java.d.ts +3 -0
  96. package/dist/indexer/parsers/java.d.ts.map +1 -0
  97. package/dist/indexer/parsers/java.js +204 -0
  98. package/dist/indexer/parsers/java.js.map +1 -0
  99. package/dist/indexer/parsers/javascript.d.ts +3 -0
  100. package/dist/indexer/parsers/javascript.d.ts.map +1 -0
  101. package/dist/indexer/parsers/javascript.js +157 -0
  102. package/dist/indexer/parsers/javascript.js.map +1 -0
  103. package/dist/indexer/parsers/kotlin.d.ts +3 -0
  104. package/dist/indexer/parsers/kotlin.d.ts.map +1 -0
  105. package/dist/indexer/parsers/kotlin.js +182 -0
  106. package/dist/indexer/parsers/kotlin.js.map +1 -0
  107. package/dist/indexer/parsers/php.d.ts +3 -0
  108. package/dist/indexer/parsers/php.d.ts.map +1 -0
  109. package/dist/indexer/parsers/php.js +190 -0
  110. package/dist/indexer/parsers/php.js.map +1 -0
  111. package/dist/indexer/parsers/python.d.ts +3 -0
  112. package/dist/indexer/parsers/python.d.ts.map +1 -0
  113. package/dist/indexer/parsers/python.js +101 -0
  114. package/dist/indexer/parsers/python.js.map +1 -0
  115. package/dist/indexer/parsers/ruby.d.ts +3 -0
  116. package/dist/indexer/parsers/ruby.d.ts.map +1 -0
  117. package/dist/indexer/parsers/ruby.js +92 -0
  118. package/dist/indexer/parsers/ruby.js.map +1 -0
  119. package/dist/indexer/parsers/rust.d.ts +3 -0
  120. package/dist/indexer/parsers/rust.d.ts.map +1 -0
  121. package/dist/indexer/parsers/rust.js +190 -0
  122. package/dist/indexer/parsers/rust.js.map +1 -0
  123. package/dist/indexer/watcher-daemon.d.ts +2 -0
  124. package/dist/indexer/watcher-daemon.d.ts.map +1 -0
  125. package/dist/indexer/watcher-daemon.js +27 -0
  126. package/dist/indexer/watcher-daemon.js.map +1 -0
  127. package/dist/indexer/watcher.d.ts +7 -0
  128. package/dist/indexer/watcher.d.ts.map +1 -0
  129. package/dist/indexer/watcher.js +77 -0
  130. package/dist/indexer/watcher.js.map +1 -0
  131. package/dist/mcp/server.d.ts +2 -0
  132. package/dist/mcp/server.d.ts.map +1 -0
  133. package/dist/mcp/server.js +241 -0
  134. package/dist/mcp/server.js.map +1 -0
  135. package/dist/proxy/interceptor-mockttp.d.ts +27 -0
  136. package/dist/proxy/interceptor-mockttp.d.ts.map +1 -0
  137. package/dist/proxy/interceptor-mockttp.js +274 -0
  138. package/dist/proxy/interceptor-mockttp.js.map +1 -0
  139. package/dist/proxy/proxy-daemon.d.ts +5 -0
  140. package/dist/proxy/proxy-daemon.d.ts.map +1 -0
  141. package/dist/proxy/proxy-daemon.js +26 -0
  142. package/dist/proxy/proxy-daemon.js.map +1 -0
  143. package/dist/query/index.d.ts +32 -0
  144. package/dist/query/index.d.ts.map +1 -0
  145. package/dist/query/index.js +135 -0
  146. package/dist/query/index.js.map +1 -0
  147. package/dist/types/index.d.ts +89 -0
  148. package/dist/types/index.d.ts.map +1 -0
  149. package/dist/types/index.js +3 -0
  150. package/dist/types/index.js.map +1 -0
  151. package/dist/visualize/index.d.ts +144 -0
  152. package/dist/visualize/index.d.ts.map +1 -0
  153. package/dist/visualize/index.js +707 -0
  154. package/dist/visualize/index.js.map +1 -0
  155. package/dist/visualize/server.d.ts +7 -0
  156. package/dist/visualize/server.d.ts.map +1 -0
  157. package/dist/visualize/server.js +77 -0
  158. package/dist/visualize/server.js.map +1 -0
  159. package/dist/visualize/template.d.ts +3 -0
  160. package/dist/visualize/template.d.ts.map +1 -0
  161. package/dist/visualize/template.js +3465 -0
  162. package/dist/visualize/template.js.map +1 -0
  163. package/package.json +56 -0
@@ -0,0 +1,204 @@
1
+ import { getLineNumber, extractLines, extractCalls } from './base.js';
2
+ const patterns = {
3
+ // class Name or public class Name extends Foo implements Bar
4
+ class: /^(\s*)(?:public\s+|private\s+|protected\s+)?(?:abstract\s+)?(?:final\s+)?class\s+(\w+)(?:<[^>]+>)?(?:\s+extends\s+\w+(?:<[^>]+>)?)?(?:\s+implements\s+[\w,\s<>]+)?/gm,
5
+ // interface Name
6
+ interface: /^(\s*)(?:public\s+|private\s+|protected\s+)?interface\s+(\w+)(?:<[^>]+>)?(?:\s+extends\s+[\w,\s<>]+)?/gm,
7
+ // enum Name
8
+ enum: /^(\s*)(?:public\s+|private\s+|protected\s+)?enum\s+(\w+)/gm,
9
+ // method: public void name(...) or private static String name(...)
10
+ method: /^(\s+)(?:public\s+|private\s+|protected\s+)?(?:static\s+)?(?:final\s+)?(?:synchronized\s+)?(?:abstract\s+)?(?:native\s+)?(?:<[^>]+>\s+)?(\w+(?:<[^>]+>)?(?:\[\])?)\s+(\w+)\s*\(([^)]*)\)/gm,
11
+ // record Name (Java 14+)
12
+ record: /^(\s*)(?:public\s+|private\s+|protected\s+)?record\s+(\w+)(?:<[^>]+>)?\s*\(([^)]*)\)/gm,
13
+ // @interface Name (annotation)
14
+ annotation: /^(\s*)(?:public\s+|private\s+|protected\s+)?@interface\s+(\w+)/gm,
15
+ };
16
+ function findJavaBlockEnd(content, startPos) {
17
+ let depth = 0;
18
+ let i = startPos;
19
+ let inString = false;
20
+ let inChar = false;
21
+ let inLineComment = false;
22
+ let inBlockComment = false;
23
+ // Find opening brace
24
+ while (i < content.length && content[i] !== '{') {
25
+ // Handle interface/abstract methods with no body
26
+ if (content[i] === ';')
27
+ return i + 1;
28
+ i++;
29
+ }
30
+ if (i >= content.length)
31
+ return content.length;
32
+ // Find matching closing brace
33
+ for (; i < content.length; i++) {
34
+ const char = content[i];
35
+ const nextChar = content[i + 1] || '';
36
+ const prevChar = content[i - 1] || '';
37
+ // Handle comments
38
+ if (!inString && !inChar) {
39
+ if (inLineComment) {
40
+ if (char === '\n')
41
+ inLineComment = false;
42
+ continue;
43
+ }
44
+ if (inBlockComment) {
45
+ if (char === '*' && nextChar === '/') {
46
+ inBlockComment = false;
47
+ i++;
48
+ }
49
+ continue;
50
+ }
51
+ if (char === '/' && nextChar === '/') {
52
+ inLineComment = true;
53
+ continue;
54
+ }
55
+ if (char === '/' && nextChar === '*') {
56
+ inBlockComment = true;
57
+ continue;
58
+ }
59
+ }
60
+ // Handle strings and chars
61
+ if (!inBlockComment && !inLineComment) {
62
+ if (char === '"' && prevChar !== '\\') {
63
+ inString = !inString;
64
+ continue;
65
+ }
66
+ if (char === "'" && prevChar !== '\\') {
67
+ inChar = !inChar;
68
+ continue;
69
+ }
70
+ }
71
+ if (inString || inChar)
72
+ continue;
73
+ if (char === '{')
74
+ depth++;
75
+ if (char === '}') {
76
+ depth--;
77
+ if (depth === 0)
78
+ return i + 1;
79
+ }
80
+ }
81
+ return content.length;
82
+ }
83
+ export const javaParser = {
84
+ extensions: ['.java'],
85
+ parse(content, filePath) {
86
+ const structures = [];
87
+ // Parse classes
88
+ let match;
89
+ patterns.class.lastIndex = 0;
90
+ while ((match = patterns.class.exec(content)) !== null) {
91
+ const name = match[2];
92
+ const lineStart = getLineNumber(content, match.index);
93
+ const blockEnd = findJavaBlockEnd(content, match.index);
94
+ const lineEnd = getLineNumber(content, blockEnd);
95
+ structures.push({
96
+ type: 'class',
97
+ name,
98
+ lineStart,
99
+ lineEnd,
100
+ signature: match[0].trim(),
101
+ rawContent: extractLines(content, lineStart, lineEnd),
102
+ metadata: {},
103
+ });
104
+ }
105
+ // Parse interfaces
106
+ patterns.interface.lastIndex = 0;
107
+ while ((match = patterns.interface.exec(content)) !== null) {
108
+ const name = match[2];
109
+ const lineStart = getLineNumber(content, match.index);
110
+ const blockEnd = findJavaBlockEnd(content, match.index);
111
+ const lineEnd = getLineNumber(content, blockEnd);
112
+ structures.push({
113
+ type: 'interface',
114
+ name,
115
+ lineStart,
116
+ lineEnd,
117
+ signature: match[0].trim(),
118
+ rawContent: extractLines(content, lineStart, lineEnd),
119
+ metadata: {},
120
+ });
121
+ }
122
+ // Parse enums
123
+ patterns.enum.lastIndex = 0;
124
+ while ((match = patterns.enum.exec(content)) !== null) {
125
+ const name = match[2];
126
+ const lineStart = getLineNumber(content, match.index);
127
+ const blockEnd = findJavaBlockEnd(content, match.index);
128
+ const lineEnd = getLineNumber(content, blockEnd);
129
+ structures.push({
130
+ type: 'class',
131
+ name,
132
+ lineStart,
133
+ lineEnd,
134
+ signature: `enum ${name}`,
135
+ rawContent: extractLines(content, lineStart, lineEnd),
136
+ metadata: { kind: 'enum' },
137
+ });
138
+ }
139
+ // Parse records
140
+ patterns.record.lastIndex = 0;
141
+ while ((match = patterns.record.exec(content)) !== null) {
142
+ const name = match[2];
143
+ const params = match[3];
144
+ const lineStart = getLineNumber(content, match.index);
145
+ const blockEnd = findJavaBlockEnd(content, match.index);
146
+ const lineEnd = getLineNumber(content, blockEnd);
147
+ structures.push({
148
+ type: 'class',
149
+ name,
150
+ lineStart,
151
+ lineEnd,
152
+ signature: `record ${name}(${params})`,
153
+ rawContent: extractLines(content, lineStart, lineEnd),
154
+ metadata: { kind: 'record' },
155
+ });
156
+ }
157
+ // Parse annotations
158
+ patterns.annotation.lastIndex = 0;
159
+ while ((match = patterns.annotation.exec(content)) !== null) {
160
+ const name = match[2];
161
+ const lineStart = getLineNumber(content, match.index);
162
+ const blockEnd = findJavaBlockEnd(content, match.index);
163
+ const lineEnd = getLineNumber(content, blockEnd);
164
+ structures.push({
165
+ type: 'interface',
166
+ name,
167
+ lineStart,
168
+ lineEnd,
169
+ signature: `@interface ${name}`,
170
+ rawContent: extractLines(content, lineStart, lineEnd),
171
+ metadata: { kind: 'annotation' },
172
+ });
173
+ }
174
+ // Parse methods
175
+ patterns.method.lastIndex = 0;
176
+ while ((match = patterns.method.exec(content)) !== null) {
177
+ const returnType = match[2];
178
+ const name = match[3];
179
+ const params = match[4];
180
+ const lineStart = getLineNumber(content, match.index);
181
+ const blockEnd = findJavaBlockEnd(content, match.index);
182
+ const lineEnd = getLineNumber(content, blockEnd);
183
+ const rawContent = extractLines(content, lineStart, lineEnd);
184
+ // Skip constructors (return type matches class name pattern)
185
+ if (returnType === name)
186
+ continue;
187
+ structures.push({
188
+ type: 'method',
189
+ name,
190
+ lineStart,
191
+ lineEnd,
192
+ signature: `${returnType} ${name}(${params})`,
193
+ rawContent,
194
+ metadata: {
195
+ returnType,
196
+ params: params.split(',').map(p => p.trim()).filter(Boolean),
197
+ },
198
+ calls: extractCalls(rawContent, name),
199
+ });
200
+ }
201
+ return structures;
202
+ },
203
+ };
204
+ //# sourceMappingURL=java.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"java.js","sourceRoot":"","sources":["../../../src/indexer/parsers/java.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Parser } from './base.js';
2
+ export declare const javascriptParser: Parser;
3
+ //# sourceMappingURL=javascript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"javascript.d.ts","sourceRoot":"","sources":["../../../src/indexer/parsers/javascript.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAmB,MAAM,WAAW,CAAC;AA8DzD,eAAO,MAAM,gBAAgB,EAAE,MAoH9B,CAAC"}
@@ -0,0 +1,157 @@
1
+ import { getLineNumber, extractLines, extractCalls } from './base.js';
2
+ // Patterns for JavaScript/TypeScript
3
+ const patterns = {
4
+ // function name(...) or async function name(...)
5
+ function: /(?:export\s+)?(?:async\s+)?function\s+(\w+)\s*\(([^)]*)\)/g,
6
+ // const/let/var name = function(...) or arrow function
7
+ arrowFunction: /(?:export\s+)?(?:const|let|var)\s+(\w+)\s*=\s*(?:async\s+)?(?:\([^)]*\)|[^=])\s*=>/g,
8
+ // class Name
9
+ class: /(?:export\s+)?(?:abstract\s+)?class\s+(\w+)(?:\s+extends\s+\w+)?(?:\s+implements\s+[\w,\s]+)?/g,
10
+ // Method inside class: name(...) or async name(...)
11
+ method: /^\s*(?:async\s+)?(?:static\s+)?(?:get\s+|set\s+)?(\w+)\s*\(([^)]*)\)\s*(?::\s*\w+)?\s*\{/gm,
12
+ // interface Name
13
+ interface: /(?:export\s+)?interface\s+(\w+)(?:\s+extends\s+[\w,\s]+)?/g,
14
+ // type Name =
15
+ typeAlias: /(?:export\s+)?type\s+(\w+)\s*(?:<[^>]+>)?\s*=/g,
16
+ };
17
+ function findBlockEnd(content, startPos) {
18
+ let depth = 0;
19
+ let inString = false;
20
+ let stringChar = '';
21
+ let i = startPos;
22
+ // Find opening brace
23
+ while (i < content.length && content[i] !== '{')
24
+ i++;
25
+ if (i >= content.length)
26
+ return content.length;
27
+ // Find matching closing brace
28
+ for (; i < content.length; i++) {
29
+ const char = content[i];
30
+ const prevChar = i > 0 ? content[i - 1] : '';
31
+ if (inString) {
32
+ if (char === stringChar && prevChar !== '\\') {
33
+ inString = false;
34
+ }
35
+ continue;
36
+ }
37
+ if (char === '"' || char === "'" || char === '`') {
38
+ inString = true;
39
+ stringChar = char;
40
+ continue;
41
+ }
42
+ if (char === '{')
43
+ depth++;
44
+ if (char === '}') {
45
+ depth--;
46
+ if (depth === 0)
47
+ return i + 1;
48
+ }
49
+ }
50
+ return content.length;
51
+ }
52
+ export const javascriptParser = {
53
+ extensions: ['.js', '.jsx', '.ts', '.tsx', '.mjs', '.cjs'],
54
+ parse(content, filePath) {
55
+ const structures = [];
56
+ const lines = content.split('\n');
57
+ // Parse functions
58
+ let match;
59
+ patterns.function.lastIndex = 0;
60
+ while ((match = patterns.function.exec(content)) !== null) {
61
+ const name = match[1];
62
+ const params = match[2];
63
+ const lineStart = getLineNumber(content, match.index);
64
+ const blockEnd = findBlockEnd(content, match.index);
65
+ const lineEnd = getLineNumber(content, blockEnd);
66
+ const rawContent = extractLines(content, lineStart, lineEnd);
67
+ structures.push({
68
+ type: 'function',
69
+ name,
70
+ lineStart,
71
+ lineEnd,
72
+ signature: `function ${name}(${params})`,
73
+ rawContent,
74
+ metadata: { params: params.split(',').map(p => p.trim()).filter(Boolean) },
75
+ calls: extractCalls(rawContent, name),
76
+ });
77
+ }
78
+ // Parse arrow functions
79
+ patterns.arrowFunction.lastIndex = 0;
80
+ while ((match = patterns.arrowFunction.exec(content)) !== null) {
81
+ const name = match[1];
82
+ const lineStart = getLineNumber(content, match.index);
83
+ const blockEnd = findBlockEnd(content, match.index);
84
+ const lineEnd = getLineNumber(content, blockEnd);
85
+ const rawContent = extractLines(content, lineStart, lineEnd);
86
+ structures.push({
87
+ type: 'function',
88
+ name,
89
+ lineStart,
90
+ lineEnd,
91
+ signature: `const ${name} = () => ...`,
92
+ rawContent,
93
+ metadata: { arrow: true },
94
+ calls: extractCalls(rawContent, name),
95
+ });
96
+ }
97
+ // Parse classes
98
+ patterns.class.lastIndex = 0;
99
+ while ((match = patterns.class.exec(content)) !== null) {
100
+ const name = match[1];
101
+ const lineStart = getLineNumber(content, match.index);
102
+ const blockEnd = findBlockEnd(content, match.index);
103
+ const lineEnd = getLineNumber(content, blockEnd);
104
+ structures.push({
105
+ type: 'class',
106
+ name,
107
+ lineStart,
108
+ lineEnd,
109
+ signature: match[0].trim(),
110
+ rawContent: extractLines(content, lineStart, lineEnd),
111
+ metadata: {},
112
+ });
113
+ }
114
+ // Parse interfaces
115
+ patterns.interface.lastIndex = 0;
116
+ while ((match = patterns.interface.exec(content)) !== null) {
117
+ const name = match[1];
118
+ const lineStart = getLineNumber(content, match.index);
119
+ const blockEnd = findBlockEnd(content, match.index);
120
+ const lineEnd = getLineNumber(content, blockEnd);
121
+ structures.push({
122
+ type: 'interface',
123
+ name,
124
+ lineStart,
125
+ lineEnd,
126
+ signature: match[0].trim(),
127
+ rawContent: extractLines(content, lineStart, lineEnd),
128
+ metadata: {},
129
+ });
130
+ }
131
+ // Parse type aliases
132
+ patterns.typeAlias.lastIndex = 0;
133
+ while ((match = patterns.typeAlias.exec(content)) !== null) {
134
+ const name = match[1];
135
+ const lineStart = getLineNumber(content, match.index);
136
+ // Type aliases end at semicolon or next line with different indent
137
+ let lineEnd = lineStart;
138
+ for (let i = lineStart; i < lines.length; i++) {
139
+ if (lines[i].includes(';') || (i > lineStart && !lines[i].startsWith(' ') && !lines[i].startsWith('\t'))) {
140
+ lineEnd = i + 1;
141
+ break;
142
+ }
143
+ }
144
+ structures.push({
145
+ type: 'type',
146
+ name,
147
+ lineStart,
148
+ lineEnd,
149
+ signature: `type ${name}`,
150
+ rawContent: extractLines(content, lineStart, lineEnd),
151
+ metadata: {},
152
+ });
153
+ }
154
+ return structures;
155
+ },
156
+ };
157
+ //# sourceMappingURL=javascript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"javascript.js","sourceRoot":"","sources":["../../../src/indexer/parsers/javascript.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Parser } from './base.js';
2
+ export declare const kotlinParser: Parser;
3
+ //# sourceMappingURL=kotlin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kotlin.d.ts","sourceRoot":"","sources":["../../../src/indexer/parsers/kotlin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAmB,MAAM,WAAW,CAAC;AAsGzD,eAAO,MAAM,YAAY,EAAE,MAmG1B,CAAC"}
@@ -0,0 +1,182 @@
1
+ import { getLineNumber, extractLines, extractCalls } from './base.js';
2
+ const patterns = {
3
+ // fun name(...) or suspend fun name(...)
4
+ function: /^(\s*)(?:private\s+|public\s+|protected\s+|internal\s+)?(?:inline\s+)?(?:suspend\s+)?(?:override\s+)?fun\s+(?:<[^>]+>\s+)?(\w+)\s*\(([^)]*)\)/gm,
5
+ // class Name or data class Name
6
+ class: /^(\s*)(?:private\s+|public\s+|protected\s+|internal\s+)?(?:abstract\s+|open\s+|sealed\s+|data\s+|inner\s+|enum\s+)?class\s+(\w+)(?:<[^>]+>)?(?:\s*\([^)]*\))?(?:\s*:\s*[\w<>,\s()]+)?/gm,
7
+ // interface Name
8
+ interface: /^(\s*)(?:private\s+|public\s+|protected\s+|internal\s+)?(?:sealed\s+)?interface\s+(\w+)(?:<[^>]+>)?/gm,
9
+ // object Name
10
+ object: /^(\s*)(?:private\s+|public\s+|protected\s+|internal\s+)?(?:companion\s+)?object\s+(\w+)?/gm,
11
+ // typealias Name = ...
12
+ typeAlias: /^(\s*)(?:private\s+|public\s+|protected\s+|internal\s+)?typealias\s+(\w+)(?:<[^>]+>)?\s*=/gm,
13
+ // val/var name: Type (property)
14
+ property: /^(\s*)(?:private\s+|public\s+|protected\s+|internal\s+)?(?:override\s+)?(?:lateinit\s+)?(?:val|var)\s+(\w+)\s*:/gm,
15
+ };
16
+ function findKotlinBlockEnd(content, startPos) {
17
+ let depth = 0;
18
+ let i = startPos;
19
+ let inString = false;
20
+ let inRawString = false;
21
+ let inLineComment = false;
22
+ let inBlockComment = false;
23
+ // Find opening brace or check for expression body
24
+ while (i < content.length && content[i] !== '{') {
25
+ // Handle expression bodies (fun foo() = expr)
26
+ if (content[i] === '=' && content[i - 1] === ')') {
27
+ // Find end of expression (next newline not in parens)
28
+ let parenDepth = 0;
29
+ for (let j = i + 1; j < content.length; j++) {
30
+ if (content[j] === '(')
31
+ parenDepth++;
32
+ if (content[j] === ')')
33
+ parenDepth--;
34
+ if (content[j] === '\n' && parenDepth === 0)
35
+ return j;
36
+ }
37
+ return content.length;
38
+ }
39
+ i++;
40
+ }
41
+ if (i >= content.length)
42
+ return content.length;
43
+ // Find matching closing brace
44
+ for (; i < content.length; i++) {
45
+ const char = content[i];
46
+ const nextChar = content[i + 1] || '';
47
+ const prevChar = content[i - 1] || '';
48
+ // Handle comments
49
+ if (!inString && !inRawString) {
50
+ if (inLineComment) {
51
+ if (char === '\n')
52
+ inLineComment = false;
53
+ continue;
54
+ }
55
+ if (inBlockComment) {
56
+ if (char === '*' && nextChar === '/') {
57
+ inBlockComment = false;
58
+ i++;
59
+ }
60
+ continue;
61
+ }
62
+ if (char === '/' && nextChar === '/') {
63
+ inLineComment = true;
64
+ continue;
65
+ }
66
+ if (char === '/' && nextChar === '*') {
67
+ inBlockComment = true;
68
+ continue;
69
+ }
70
+ }
71
+ // Handle strings
72
+ if (!inBlockComment && !inLineComment) {
73
+ if (char === '"' && nextChar === '"' && content[i + 2] === '"') {
74
+ inRawString = !inRawString;
75
+ i += 2;
76
+ continue;
77
+ }
78
+ if (!inRawString && char === '"' && prevChar !== '\\') {
79
+ inString = !inString;
80
+ continue;
81
+ }
82
+ }
83
+ if (inString || inRawString)
84
+ continue;
85
+ if (char === '{')
86
+ depth++;
87
+ if (char === '}') {
88
+ depth--;
89
+ if (depth === 0)
90
+ return i + 1;
91
+ }
92
+ }
93
+ return content.length;
94
+ }
95
+ export const kotlinParser = {
96
+ extensions: ['.kt', '.kts'],
97
+ parse(content, filePath) {
98
+ const structures = [];
99
+ // Parse functions
100
+ let match;
101
+ patterns.function.lastIndex = 0;
102
+ while ((match = patterns.function.exec(content)) !== null) {
103
+ const indent = match[1];
104
+ const name = match[2];
105
+ const params = match[3];
106
+ const lineStart = getLineNumber(content, match.index);
107
+ const blockEnd = findKotlinBlockEnd(content, match.index);
108
+ const lineEnd = getLineNumber(content, blockEnd);
109
+ const rawContent = extractLines(content, lineStart, lineEnd);
110
+ // Check if it's a method (inside class - has indentation)
111
+ const isMethod = indent.length > 0;
112
+ structures.push({
113
+ type: isMethod ? 'method' : 'function',
114
+ name,
115
+ lineStart,
116
+ lineEnd,
117
+ signature: `fun ${name}(${params})`,
118
+ rawContent,
119
+ metadata: { params: params.split(',').map(p => p.trim()).filter(Boolean) },
120
+ calls: extractCalls(rawContent, name),
121
+ });
122
+ }
123
+ // Parse classes
124
+ patterns.class.lastIndex = 0;
125
+ while ((match = patterns.class.exec(content)) !== null) {
126
+ const name = match[2];
127
+ const lineStart = getLineNumber(content, match.index);
128
+ const blockEnd = findKotlinBlockEnd(content, match.index);
129
+ const lineEnd = getLineNumber(content, blockEnd);
130
+ const isDataClass = match[0].includes('data class');
131
+ const isEnumClass = match[0].includes('enum class');
132
+ structures.push({
133
+ type: 'class',
134
+ name,
135
+ lineStart,
136
+ lineEnd,
137
+ signature: match[0].trim().split(/\s*[({:]/)[0],
138
+ rawContent: extractLines(content, lineStart, lineEnd),
139
+ metadata: {
140
+ kind: isDataClass ? 'data' : isEnumClass ? 'enum' : 'class',
141
+ },
142
+ });
143
+ }
144
+ // Parse interfaces
145
+ patterns.interface.lastIndex = 0;
146
+ while ((match = patterns.interface.exec(content)) !== null) {
147
+ const name = match[2];
148
+ const lineStart = getLineNumber(content, match.index);
149
+ const blockEnd = findKotlinBlockEnd(content, match.index);
150
+ const lineEnd = getLineNumber(content, blockEnd);
151
+ structures.push({
152
+ type: 'interface',
153
+ name,
154
+ lineStart,
155
+ lineEnd,
156
+ signature: `interface ${name}`,
157
+ rawContent: extractLines(content, lineStart, lineEnd),
158
+ metadata: {},
159
+ });
160
+ }
161
+ // Parse objects
162
+ patterns.object.lastIndex = 0;
163
+ while ((match = patterns.object.exec(content)) !== null) {
164
+ const name = match[2] || 'companion';
165
+ const lineStart = getLineNumber(content, match.index);
166
+ const blockEnd = findKotlinBlockEnd(content, match.index);
167
+ const lineEnd = getLineNumber(content, blockEnd);
168
+ const isCompanion = match[0].includes('companion');
169
+ structures.push({
170
+ type: 'class',
171
+ name,
172
+ lineStart,
173
+ lineEnd,
174
+ signature: isCompanion ? 'companion object' : `object ${name}`,
175
+ rawContent: extractLines(content, lineStart, lineEnd),
176
+ metadata: { kind: 'object', companion: isCompanion },
177
+ });
178
+ }
179
+ return structures;
180
+ },
181
+ };
182
+ //# sourceMappingURL=kotlin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kotlin.js","sourceRoot":"","sources":["../../../src/indexer/parsers/kotlin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Parser } from './base.js';
2
+ export declare const phpParser: Parser;
3
+ //# sourceMappingURL=php.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"php.d.ts","sourceRoot":"","sources":["../../../src/indexer/parsers/php.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAmB,MAAM,WAAW,CAAC;AAiGzD,eAAO,MAAM,SAAS,EAAE,MAoHvB,CAAC"}