@nahisaho/musubix-codegraph 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/README.md +187 -0
  2. package/dist/codegraph.d.ts +218 -0
  3. package/dist/codegraph.d.ts.map +1 -0
  4. package/dist/codegraph.js +429 -0
  5. package/dist/codegraph.js.map +1 -0
  6. package/dist/events/event-emitter.d.ts +93 -0
  7. package/dist/events/event-emitter.d.ts.map +1 -0
  8. package/dist/events/event-emitter.js +152 -0
  9. package/dist/events/event-emitter.js.map +1 -0
  10. package/dist/events/index.d.ts +8 -0
  11. package/dist/events/index.d.ts.map +1 -0
  12. package/dist/events/index.js +8 -0
  13. package/dist/events/index.js.map +1 -0
  14. package/dist/graph/graph-engine.d.ts +97 -0
  15. package/dist/graph/graph-engine.d.ts.map +1 -0
  16. package/dist/graph/graph-engine.js +341 -0
  17. package/dist/graph/graph-engine.js.map +1 -0
  18. package/dist/graph/index.d.ts +8 -0
  19. package/dist/graph/index.d.ts.map +1 -0
  20. package/dist/graph/index.js +8 -0
  21. package/dist/graph/index.js.map +1 -0
  22. package/dist/graphrag/graphrag-search.d.ts +67 -0
  23. package/dist/graphrag/graphrag-search.d.ts.map +1 -0
  24. package/dist/graphrag/graphrag-search.js +297 -0
  25. package/dist/graphrag/graphrag-search.js.map +1 -0
  26. package/dist/graphrag/index.d.ts +8 -0
  27. package/dist/graphrag/index.d.ts.map +1 -0
  28. package/dist/graphrag/index.js +8 -0
  29. package/dist/graphrag/index.js.map +1 -0
  30. package/dist/index.d.ts +18 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +20 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/indexer/index.d.ts +8 -0
  35. package/dist/indexer/index.d.ts.map +1 -0
  36. package/dist/indexer/index.js +8 -0
  37. package/dist/indexer/index.js.map +1 -0
  38. package/dist/indexer/indexer.d.ts +58 -0
  39. package/dist/indexer/indexer.d.ts.map +1 -0
  40. package/dist/indexer/indexer.js +206 -0
  41. package/dist/indexer/indexer.js.map +1 -0
  42. package/dist/parser/ast-parser.d.ts +79 -0
  43. package/dist/parser/ast-parser.d.ts.map +1 -0
  44. package/dist/parser/ast-parser.js +489 -0
  45. package/dist/parser/ast-parser.js.map +1 -0
  46. package/dist/parser/index.d.ts +8 -0
  47. package/dist/parser/index.d.ts.map +1 -0
  48. package/dist/parser/index.js +8 -0
  49. package/dist/parser/index.js.map +1 -0
  50. package/dist/storage/index.d.ts +9 -0
  51. package/dist/storage/index.d.ts.map +1 -0
  52. package/dist/storage/index.js +10 -0
  53. package/dist/storage/index.js.map +1 -0
  54. package/dist/storage/memory-storage.d.ts +102 -0
  55. package/dist/storage/memory-storage.d.ts.map +1 -0
  56. package/dist/storage/memory-storage.js +263 -0
  57. package/dist/storage/memory-storage.js.map +1 -0
  58. package/dist/storage/sqlite-storage.d.ts +90 -0
  59. package/dist/storage/sqlite-storage.d.ts.map +1 -0
  60. package/dist/storage/sqlite-storage.js +344 -0
  61. package/dist/storage/sqlite-storage.js.map +1 -0
  62. package/dist/types.d.ts +539 -0
  63. package/dist/types.d.ts.map +1 -0
  64. package/dist/types.js +99 -0
  65. package/dist/types.js.map +1 -0
  66. package/package.json +85 -0
@@ -0,0 +1,489 @@
1
+ /**
2
+ * @nahisaho/musubix-codegraph - AST Parser
3
+ *
4
+ * Tree-sitter based AST parser for code entity extraction
5
+ *
6
+ * @see REQ-CG-AST-001 - Multi-language support
7
+ * @see REQ-CG-AST-002 - Entity extraction
8
+ * @see REQ-CG-AST-003 - Relation extraction
9
+ * @see DES-CG-002
10
+ * @see TSK-CG-010
11
+ */
12
+ import { getLanguageFromExtension, generateEntityId, generateRelationId, LANGUAGE_EXTENSIONS, } from '../types.js';
13
+ import * as fs from 'fs/promises';
14
+ import * as path from 'path';
15
+ /**
16
+ * AST Parser using Tree-sitter
17
+ */
18
+ export class ASTParser {
19
+ options;
20
+ parser = null;
21
+ languages = new Map();
22
+ initialized = false;
23
+ constructor(options = {}) {
24
+ this.options = {
25
+ languages: options.languages ?? ['typescript', 'javascript', 'python'],
26
+ includeComments: options.includeComments ?? true,
27
+ extractDocstrings: options.extractDocstrings ?? true,
28
+ };
29
+ }
30
+ /**
31
+ * Initialize tree-sitter and load language grammars
32
+ */
33
+ async ensureInitialized() {
34
+ if (this.initialized)
35
+ return;
36
+ try {
37
+ // Dynamic import of tree-sitter
38
+ const Parser = (await import('tree-sitter')).default;
39
+ this.parser = new Parser();
40
+ // Load TypeScript/JavaScript grammar
41
+ try {
42
+ const TypeScript = (await import('tree-sitter-typescript')).default;
43
+ this.languages.set('typescript', TypeScript.typescript);
44
+ this.languages.set('javascript', TypeScript.typescript);
45
+ }
46
+ catch {
47
+ // TypeScript grammar not available
48
+ }
49
+ // Load Python grammar
50
+ try {
51
+ const Python = (await import('tree-sitter-python')).default;
52
+ this.languages.set('python', Python);
53
+ }
54
+ catch {
55
+ // Python grammar not available
56
+ }
57
+ this.initialized = true;
58
+ }
59
+ catch {
60
+ // Tree-sitter not available, will use fallback parsing
61
+ this.initialized = true;
62
+ }
63
+ }
64
+ /**
65
+ * Parse a source file
66
+ */
67
+ async parseFile(filePath) {
68
+ const startTime = Date.now();
69
+ const maxFileSize = 1024 * 1024; // 1MB default
70
+ try {
71
+ const content = await fs.readFile(filePath, 'utf-8');
72
+ if (content.length > maxFileSize) {
73
+ return {
74
+ entities: [],
75
+ relations: [],
76
+ errors: [{ message: `File exceeds max size` }],
77
+ stats: { linesOfCode: 0, parseTimeMs: Date.now() - startTime },
78
+ };
79
+ }
80
+ const language = getLanguageFromExtension(filePath);
81
+ if (!language) {
82
+ return {
83
+ entities: [],
84
+ relations: [],
85
+ errors: [{ message: `Unsupported file type: ${filePath}` }],
86
+ stats: { linesOfCode: 0, parseTimeMs: Date.now() - startTime },
87
+ };
88
+ }
89
+ return await this.parseContent(content, language, filePath);
90
+ }
91
+ catch (error) {
92
+ const message = error instanceof Error ? error.message : String(error);
93
+ return {
94
+ entities: [],
95
+ relations: [],
96
+ errors: [{ message: `Failed to read file: ${message}` }],
97
+ stats: { linesOfCode: 0, parseTimeMs: Date.now() - startTime },
98
+ };
99
+ }
100
+ }
101
+ /**
102
+ * Parse source code content
103
+ */
104
+ async parseContent(content, language, filePath) {
105
+ await this.ensureInitialized();
106
+ const startTime = Date.now();
107
+ const lines = content.split('\n');
108
+ // Try tree-sitter parsing first
109
+ if (this.parser && this.languages.has(language)) {
110
+ try {
111
+ return this.parseWithTreeSitter(content, language, filePath, lines.length);
112
+ }
113
+ catch {
114
+ // Fall back to regex parsing
115
+ }
116
+ }
117
+ // Fallback: regex-based parsing
118
+ return this.parseWithRegex(content, language, filePath, lines.length, startTime);
119
+ }
120
+ /**
121
+ * Parse using tree-sitter
122
+ */
123
+ parseWithTreeSitter(content, language, filePath, lineCount) {
124
+ const startTime = Date.now();
125
+ const grammar = this.languages.get(language);
126
+ if (!grammar || !this.parser) {
127
+ throw new Error('Grammar not loaded');
128
+ }
129
+ this.parser.setLanguage(grammar);
130
+ const tree = this.parser.parse(content);
131
+ const entities = [];
132
+ const relations = [];
133
+ // Add file entity
134
+ entities.push(this.createEntity({
135
+ type: 'file',
136
+ name: filePath ? path.basename(filePath) : 'unknown',
137
+ language,
138
+ filePath,
139
+ startLine: 1,
140
+ endLine: lineCount,
141
+ }));
142
+ // Extract entities from AST
143
+ this.extractFromNode(tree.rootNode, entities, relations, language, filePath, content);
144
+ return {
145
+ entities,
146
+ relations,
147
+ errors: [],
148
+ stats: {
149
+ linesOfCode: lineCount,
150
+ parseTimeMs: Date.now() - startTime,
151
+ },
152
+ };
153
+ }
154
+ /**
155
+ * Extract entities from AST node recursively
156
+ */
157
+ extractFromNode(node, entities, relations, language, filePath, content) {
158
+ const extracted = this.extractEntity(node, language, filePath, content);
159
+ if (extracted) {
160
+ entities.push(extracted.entity);
161
+ relations.push(...extracted.relations);
162
+ }
163
+ for (const child of node.namedChildren) {
164
+ this.extractFromNode(child, entities, relations, language, filePath, content);
165
+ }
166
+ }
167
+ /**
168
+ * Extract entity from a single AST node
169
+ */
170
+ extractEntity(node, language, filePath, content) {
171
+ const entityType = this.getEntityType(node.type, language);
172
+ if (!entityType)
173
+ return null;
174
+ const nameNode = this.findNameNode(node);
175
+ if (!nameNode)
176
+ return null;
177
+ const name = nameNode.text;
178
+ if (!name)
179
+ return null;
180
+ const sourceLines = content.split('\n');
181
+ const startLine = node.startPosition.row + 1;
182
+ const endLine = node.endPosition.row + 1;
183
+ const sourceCode = sourceLines.slice(startLine - 1, endLine).join('\n');
184
+ const entity = this.createEntity({
185
+ type: entityType,
186
+ name,
187
+ language,
188
+ filePath,
189
+ startLine,
190
+ endLine,
191
+ sourceCode,
192
+ });
193
+ // Extract docstring
194
+ if (this.options.extractDocstrings) {
195
+ const docstring = this.extractDocstring(node, language, content);
196
+ if (docstring) {
197
+ entity.docstring = docstring;
198
+ }
199
+ }
200
+ // Extract relations
201
+ const relations = this.extractRelations(node, entity.id, language);
202
+ return { entity, relations };
203
+ }
204
+ /**
205
+ * Create entity with required metadata
206
+ */
207
+ createEntity(params) {
208
+ const id = generateEntityId(params.type, params.name, params.filePath);
209
+ return {
210
+ id,
211
+ name: params.name,
212
+ type: params.type,
213
+ language: params.language,
214
+ filePath: params.filePath,
215
+ startLine: params.startLine,
216
+ endLine: params.endLine,
217
+ sourceCode: params.sourceCode,
218
+ metadata: {},
219
+ };
220
+ }
221
+ /**
222
+ * Create relation with required weight and metadata
223
+ */
224
+ createRelation(sourceId, targetId, type) {
225
+ return {
226
+ id: generateRelationId(sourceId, targetId, type),
227
+ sourceId,
228
+ targetId,
229
+ type,
230
+ weight: 1.0,
231
+ metadata: {},
232
+ };
233
+ }
234
+ /**
235
+ * Map AST node type to entity type
236
+ */
237
+ getEntityType(nodeType, language) {
238
+ if (language === 'typescript' || language === 'javascript') {
239
+ switch (nodeType) {
240
+ case 'class_declaration':
241
+ case 'class':
242
+ return 'class';
243
+ case 'interface_declaration':
244
+ return 'interface';
245
+ case 'function_declaration':
246
+ case 'arrow_function':
247
+ case 'function':
248
+ return 'function';
249
+ case 'method_definition':
250
+ return 'method';
251
+ case 'property_definition':
252
+ return 'property';
253
+ case 'variable_declarator':
254
+ return 'variable';
255
+ case 'type_alias_declaration':
256
+ return 'type';
257
+ case 'enum_declaration':
258
+ return 'enum';
259
+ case 'import_statement':
260
+ return 'import';
261
+ case 'export_statement':
262
+ return 'export';
263
+ case 'namespace_declaration':
264
+ return 'namespace';
265
+ }
266
+ }
267
+ if (language === 'python') {
268
+ switch (nodeType) {
269
+ case 'class_definition':
270
+ return 'class';
271
+ case 'function_definition':
272
+ return 'function';
273
+ case 'assignment':
274
+ return 'variable';
275
+ case 'import_statement':
276
+ case 'import_from_statement':
277
+ return 'import';
278
+ }
279
+ }
280
+ return null;
281
+ }
282
+ /**
283
+ * Find the name node within an entity node
284
+ */
285
+ findNameNode(node) {
286
+ const nameNode = node.childForFieldName('name');
287
+ if (nameNode)
288
+ return nameNode;
289
+ for (const child of node.namedChildren) {
290
+ if (child.type === 'identifier' || child.type === 'type_identifier') {
291
+ return child;
292
+ }
293
+ }
294
+ return null;
295
+ }
296
+ /**
297
+ * Extract docstring from node
298
+ */
299
+ extractDocstring(node, language, content) {
300
+ const lines = content.split('\n');
301
+ const startLine = node.startPosition.row;
302
+ if (language === 'typescript' || language === 'javascript') {
303
+ if (startLine > 0) {
304
+ const prevLines = [];
305
+ for (let i = startLine - 1; i >= 0 && i >= startLine - 20; i--) {
306
+ const line = lines[i].trim();
307
+ if (line.endsWith('*/')) {
308
+ prevLines.unshift(line);
309
+ for (let j = i - 1; j >= 0; j--) {
310
+ const docLine = lines[j].trim();
311
+ prevLines.unshift(docLine);
312
+ if (docLine.startsWith('/**') || docLine.startsWith('/*')) {
313
+ return prevLines.join('\n');
314
+ }
315
+ }
316
+ break;
317
+ }
318
+ if (line === '' || line.startsWith('*')) {
319
+ continue;
320
+ }
321
+ break;
322
+ }
323
+ }
324
+ }
325
+ if (language === 'python') {
326
+ for (const child of node.namedChildren) {
327
+ if (child.type === 'block') {
328
+ for (const blockChild of child.namedChildren) {
329
+ if (blockChild.type === 'expression_statement') {
330
+ for (const exprChild of blockChild.namedChildren) {
331
+ if (exprChild.type === 'string') {
332
+ return exprChild.text;
333
+ }
334
+ }
335
+ }
336
+ break;
337
+ }
338
+ }
339
+ }
340
+ }
341
+ return null;
342
+ }
343
+ /**
344
+ * Extract relations from node
345
+ */
346
+ extractRelations(node, entityId, language) {
347
+ const relations = [];
348
+ if (language === 'typescript' || language === 'javascript') {
349
+ const extendsClause = node.childForFieldName('superclass');
350
+ if (extendsClause) {
351
+ const superName = extendsClause.text;
352
+ if (superName) {
353
+ relations.push(this.createRelation(entityId, superName, 'extends'));
354
+ }
355
+ }
356
+ const implementsNode = node.namedChildren.find(c => c.type === 'implements_clause');
357
+ if (implementsNode) {
358
+ for (const child of implementsNode.namedChildren) {
359
+ if (child.type === 'type_identifier') {
360
+ relations.push(this.createRelation(entityId, child.text, 'implements'));
361
+ }
362
+ }
363
+ }
364
+ }
365
+ return relations;
366
+ }
367
+ /**
368
+ * Fallback regex-based parsing
369
+ */
370
+ parseWithRegex(content, language, filePath, lineCount, startTime) {
371
+ const entities = [];
372
+ const relations = [];
373
+ // Add file entity
374
+ entities.push(this.createEntity({
375
+ type: 'file',
376
+ name: filePath ? path.basename(filePath) : 'unknown',
377
+ language,
378
+ filePath,
379
+ startLine: 1,
380
+ endLine: lineCount,
381
+ }));
382
+ if (language === 'typescript' || language === 'javascript') {
383
+ const classRegex = /^\s*(export\s+)?(abstract\s+)?class\s+(\w+)/gm;
384
+ let match;
385
+ while ((match = classRegex.exec(content)) !== null) {
386
+ const lineNum = content.substring(0, match.index).split('\n').length;
387
+ entities.push(this.createEntity({
388
+ type: 'class',
389
+ name: match[3],
390
+ language,
391
+ filePath,
392
+ startLine: lineNum,
393
+ endLine: lineNum,
394
+ }));
395
+ }
396
+ const funcRegex = /^\s*(export\s+)?(async\s+)?function\s+(\w+)/gm;
397
+ while ((match = funcRegex.exec(content)) !== null) {
398
+ const lineNum = content.substring(0, match.index).split('\n').length;
399
+ entities.push(this.createEntity({
400
+ type: 'function',
401
+ name: match[3],
402
+ language,
403
+ filePath,
404
+ startLine: lineNum,
405
+ endLine: lineNum,
406
+ }));
407
+ }
408
+ const interfaceRegex = /^\s*(export\s+)?interface\s+(\w+)/gm;
409
+ while ((match = interfaceRegex.exec(content)) !== null) {
410
+ const lineNum = content.substring(0, match.index).split('\n').length;
411
+ entities.push(this.createEntity({
412
+ type: 'interface',
413
+ name: match[2],
414
+ language,
415
+ filePath,
416
+ startLine: lineNum,
417
+ endLine: lineNum,
418
+ }));
419
+ }
420
+ const typeRegex = /^\s*(export\s+)?type\s+(\w+)/gm;
421
+ while ((match = typeRegex.exec(content)) !== null) {
422
+ const lineNum = content.substring(0, match.index).split('\n').length;
423
+ entities.push(this.createEntity({
424
+ type: 'type',
425
+ name: match[2],
426
+ language,
427
+ filePath,
428
+ startLine: lineNum,
429
+ endLine: lineNum,
430
+ }));
431
+ }
432
+ const enumRegex = /^\s*(export\s+)?enum\s+(\w+)/gm;
433
+ while ((match = enumRegex.exec(content)) !== null) {
434
+ const lineNum = content.substring(0, match.index).split('\n').length;
435
+ entities.push(this.createEntity({
436
+ type: 'enum',
437
+ name: match[2],
438
+ language,
439
+ filePath,
440
+ startLine: lineNum,
441
+ endLine: lineNum,
442
+ }));
443
+ }
444
+ }
445
+ if (language === 'python') {
446
+ const classRegex = /^class\s+(\w+)/gm;
447
+ let match;
448
+ while ((match = classRegex.exec(content)) !== null) {
449
+ const lineNum = content.substring(0, match.index).split('\n').length;
450
+ entities.push(this.createEntity({
451
+ type: 'class',
452
+ name: match[1],
453
+ language,
454
+ filePath,
455
+ startLine: lineNum,
456
+ endLine: lineNum,
457
+ }));
458
+ }
459
+ const funcRegex = /^def\s+(\w+)/gm;
460
+ while ((match = funcRegex.exec(content)) !== null) {
461
+ const lineNum = content.substring(0, match.index).split('\n').length;
462
+ entities.push(this.createEntity({
463
+ type: 'function',
464
+ name: match[1],
465
+ language,
466
+ filePath,
467
+ startLine: lineNum,
468
+ endLine: lineNum,
469
+ }));
470
+ }
471
+ }
472
+ return {
473
+ entities,
474
+ relations,
475
+ errors: [],
476
+ stats: {
477
+ linesOfCode: lineCount,
478
+ parseTimeMs: Date.now() - startTime,
479
+ },
480
+ };
481
+ }
482
+ /**
483
+ * Get supported languages
484
+ */
485
+ getSupportedLanguages() {
486
+ return Object.values(LANGUAGE_EXTENSIONS).filter((v, i, a) => a.indexOf(v) === i);
487
+ }
488
+ }
489
+ //# sourceMappingURL=ast-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-parser.js","sourceRoot":"","sources":["../../src/parser/ast-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @nahisaho/musubix-codegraph - Parser Module
3
+ *
4
+ * @see REQ-CG-AST-001
5
+ * @see DES-CG-002
6
+ */
7
+ export { ASTParser } from './ast-parser.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @nahisaho/musubix-codegraph - Parser Module
3
+ *
4
+ * @see REQ-CG-AST-001
5
+ * @see DES-CG-002
6
+ */
7
+ export { ASTParser } from './ast-parser.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @nahisaho/musubix-codegraph - Storage Module
3
+ *
4
+ * @see REQ-CG-API-005
5
+ * @see DES-CG-006
6
+ */
7
+ export { MemoryStorage } from './memory-storage.js';
8
+ export { SQLiteStorage } from './sqlite-storage.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @nahisaho/musubix-codegraph - Storage Module
3
+ *
4
+ * @see REQ-CG-API-005
5
+ * @see DES-CG-006
6
+ */
7
+ export { MemoryStorage } from './memory-storage.js';
8
+ export { SQLiteStorage } from './sqlite-storage.js';
9
+ // export { YataAdapter } from './yata-adapter.js'; // TODO: Implement
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,sEAAsE"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * @nahisaho/musubix-codegraph - Memory Storage Implementation
3
+ *
4
+ * In-memory storage adapter for CodeGraph
5
+ *
6
+ * @see REQ-CG-API-005
7
+ * @see DES-CG-006
8
+ * @see TSK-CG-051
9
+ */
10
+ import type { StorageAdapter, StorageStats, Entity, Relation, GraphQuery, RelationType } from '../types.js';
11
+ /**
12
+ * In-memory storage adapter
13
+ *
14
+ * Stores entities and relations in memory using Maps.
15
+ * Suitable for testing and small codebases.
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * const storage = new MemoryStorage();
20
+ * await storage.initialize();
21
+ *
22
+ * await storage.saveEntity(entity);
23
+ * const retrieved = await storage.getEntity(entity.id);
24
+ * ```
25
+ */
26
+ export declare class MemoryStorage implements StorageAdapter {
27
+ private entities;
28
+ private relations;
29
+ private relationsBySource;
30
+ private relationsByTarget;
31
+ private fileCount;
32
+ private initialized;
33
+ /**
34
+ * Initialize the storage
35
+ */
36
+ initialize(): Promise<void>;
37
+ /**
38
+ * Close the storage and release resources
39
+ */
40
+ close(): Promise<void>;
41
+ /**
42
+ * Save an entity
43
+ */
44
+ saveEntity(entity: Entity): Promise<void>;
45
+ /**
46
+ * Get an entity by ID
47
+ */
48
+ getEntity(id: string): Promise<Entity | null>;
49
+ /**
50
+ * Query entities
51
+ */
52
+ queryEntities(query: GraphQuery): Promise<Entity[]>;
53
+ /**
54
+ * Delete an entity
55
+ */
56
+ deleteEntity(id: string): Promise<void>;
57
+ /**
58
+ * Save a relation
59
+ */
60
+ saveRelation(relation: Relation): Promise<void>;
61
+ /**
62
+ * Get relations for an entity
63
+ */
64
+ getRelations(entityId: string, direction?: 'in' | 'out' | 'both'): Promise<Relation[]>;
65
+ /**
66
+ * Delete a relation
67
+ */
68
+ deleteRelation(id: string): Promise<void>;
69
+ /**
70
+ * Bulk save entities and relations
71
+ */
72
+ bulkSave(entities: Entity[], relations: Relation[]): Promise<void>;
73
+ /**
74
+ * Clear all data
75
+ */
76
+ clear(): Promise<void>;
77
+ /**
78
+ * Get storage statistics
79
+ */
80
+ getStats(): Promise<StorageStats>;
81
+ /**
82
+ * Find entities by name pattern
83
+ */
84
+ findByName(name: string, exact?: boolean): Promise<Entity[]>;
85
+ /**
86
+ * Get all entities of a specific type
87
+ */
88
+ getEntitiesByType(type: Entity['type']): Promise<Entity[]>;
89
+ /**
90
+ * Get relations by type
91
+ */
92
+ getRelationsByType(type: RelationType): Promise<Relation[]>;
93
+ /**
94
+ * Get all file paths
95
+ */
96
+ getFilePaths(): Promise<string[]>;
97
+ /**
98
+ * Check if storage is initialized
99
+ */
100
+ isInitialized(): boolean;
101
+ }
102
+ //# sourceMappingURL=memory-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-storage.d.ts","sourceRoot":"","sources":["../../src/storage/memory-storage.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,MAAM,EACN,QAAQ,EACR,UAAU,EACV,YAAY,EACb,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;;;;;GAcG;AACH,qBAAa,aAAc,YAAW,cAAc;IAClD,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,WAAW,CAAS;IAE5B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKjC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAa5B;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/C;;OAEG;IACG,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAInD;;OAEG;IACG,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAmCzD;;OAEG;IACG,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkC7C;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBrD;;OAEG;IACG,YAAY,CAChB,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,IAAI,GAAG,KAAK,GAAG,MAAe,GACxC,OAAO,CAAC,QAAQ,EAAE,CAAC;IAsBtB;;OAEG;IACG,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B/C;;OAEG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IASxE;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAY5B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC;IAYvC;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAShE;;OAEG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAIhE;;OAEG;IACG,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAIjE;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIvC;;OAEG;IACH,aAAa,IAAI,OAAO;CAGzB"}