@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,263 @@
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
+ /**
11
+ * In-memory storage adapter
12
+ *
13
+ * Stores entities and relations in memory using Maps.
14
+ * Suitable for testing and small codebases.
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * const storage = new MemoryStorage();
19
+ * await storage.initialize();
20
+ *
21
+ * await storage.saveEntity(entity);
22
+ * const retrieved = await storage.getEntity(entity.id);
23
+ * ```
24
+ */
25
+ export class MemoryStorage {
26
+ entities = new Map();
27
+ relations = new Map();
28
+ relationsBySource = new Map();
29
+ relationsByTarget = new Map();
30
+ fileCount = new Set();
31
+ initialized = false;
32
+ /**
33
+ * Initialize the storage
34
+ */
35
+ async initialize() {
36
+ if (this.initialized)
37
+ return;
38
+ this.initialized = true;
39
+ }
40
+ /**
41
+ * Close the storage and release resources
42
+ */
43
+ async close() {
44
+ this.entities.clear();
45
+ this.relations.clear();
46
+ this.relationsBySource.clear();
47
+ this.relationsByTarget.clear();
48
+ this.fileCount.clear();
49
+ this.initialized = false;
50
+ }
51
+ // =========================================================================
52
+ // Entity Operations
53
+ // =========================================================================
54
+ /**
55
+ * Save an entity
56
+ */
57
+ async saveEntity(entity) {
58
+ this.entities.set(entity.id, entity);
59
+ if (entity.filePath) {
60
+ this.fileCount.add(entity.filePath);
61
+ }
62
+ }
63
+ /**
64
+ * Get an entity by ID
65
+ */
66
+ async getEntity(id) {
67
+ return this.entities.get(id) ?? null;
68
+ }
69
+ /**
70
+ * Query entities
71
+ */
72
+ async queryEntities(query) {
73
+ let results = Array.from(this.entities.values());
74
+ // Filter by entity types
75
+ if (query.entityTypes && query.entityTypes.length > 0) {
76
+ results = results.filter((e) => query.entityTypes.includes(e.type));
77
+ }
78
+ // Filter by file path
79
+ if (query.filePath) {
80
+ const normalizedPath = query.filePath.toLowerCase();
81
+ results = results.filter((e) => e.filePath?.toLowerCase() === normalizedPath);
82
+ }
83
+ // Text search
84
+ if (query.textSearch) {
85
+ const searchLower = query.textSearch.toLowerCase();
86
+ results = results.filter((e) => e.name.toLowerCase().includes(searchLower) ||
87
+ e.id.toLowerCase().includes(searchLower) ||
88
+ e.docstring?.toLowerCase().includes(searchLower));
89
+ }
90
+ // Apply limit
91
+ if (query.limit && query.limit > 0) {
92
+ results = results.slice(0, query.limit);
93
+ }
94
+ return results;
95
+ }
96
+ /**
97
+ * Delete an entity
98
+ */
99
+ async deleteEntity(id) {
100
+ const entity = this.entities.get(id);
101
+ if (entity) {
102
+ // Also remove related relations
103
+ const relatedRelationIds = new Set();
104
+ // Outgoing relations
105
+ const outgoing = this.relationsBySource.get(id);
106
+ if (outgoing) {
107
+ outgoing.forEach((rid) => relatedRelationIds.add(rid));
108
+ this.relationsBySource.delete(id);
109
+ }
110
+ // Incoming relations
111
+ const incoming = this.relationsByTarget.get(id);
112
+ if (incoming) {
113
+ incoming.forEach((rid) => relatedRelationIds.add(rid));
114
+ this.relationsByTarget.delete(id);
115
+ }
116
+ // Delete relations
117
+ for (const rid of relatedRelationIds) {
118
+ this.relations.delete(rid);
119
+ }
120
+ // Delete entity
121
+ this.entities.delete(id);
122
+ }
123
+ }
124
+ // =========================================================================
125
+ // Relation Operations
126
+ // =========================================================================
127
+ /**
128
+ * Save a relation
129
+ */
130
+ async saveRelation(relation) {
131
+ this.relations.set(relation.id, relation);
132
+ // Index by source
133
+ if (!this.relationsBySource.has(relation.sourceId)) {
134
+ this.relationsBySource.set(relation.sourceId, new Set());
135
+ }
136
+ this.relationsBySource.get(relation.sourceId).add(relation.id);
137
+ // Index by target
138
+ if (!this.relationsByTarget.has(relation.targetId)) {
139
+ this.relationsByTarget.set(relation.targetId, new Set());
140
+ }
141
+ this.relationsByTarget.get(relation.targetId).add(relation.id);
142
+ }
143
+ /**
144
+ * Get relations for an entity
145
+ */
146
+ async getRelations(entityId, direction = 'both') {
147
+ const relationIds = new Set();
148
+ if (direction === 'out' || direction === 'both') {
149
+ const outgoing = this.relationsBySource.get(entityId);
150
+ if (outgoing) {
151
+ outgoing.forEach((id) => relationIds.add(id));
152
+ }
153
+ }
154
+ if (direction === 'in' || direction === 'both') {
155
+ const incoming = this.relationsByTarget.get(entityId);
156
+ if (incoming) {
157
+ incoming.forEach((id) => relationIds.add(id));
158
+ }
159
+ }
160
+ return Array.from(relationIds)
161
+ .map((id) => this.relations.get(id))
162
+ .filter((r) => r !== undefined);
163
+ }
164
+ /**
165
+ * Delete a relation
166
+ */
167
+ async deleteRelation(id) {
168
+ const relation = this.relations.get(id);
169
+ if (relation) {
170
+ // Remove from source index
171
+ const sourceRels = this.relationsBySource.get(relation.sourceId);
172
+ if (sourceRels) {
173
+ sourceRels.delete(id);
174
+ if (sourceRels.size === 0) {
175
+ this.relationsBySource.delete(relation.sourceId);
176
+ }
177
+ }
178
+ // Remove from target index
179
+ const targetRels = this.relationsByTarget.get(relation.targetId);
180
+ if (targetRels) {
181
+ targetRels.delete(id);
182
+ if (targetRels.size === 0) {
183
+ this.relationsByTarget.delete(relation.targetId);
184
+ }
185
+ }
186
+ this.relations.delete(id);
187
+ }
188
+ }
189
+ // =========================================================================
190
+ // Bulk Operations
191
+ // =========================================================================
192
+ /**
193
+ * Bulk save entities and relations
194
+ */
195
+ async bulkSave(entities, relations) {
196
+ for (const entity of entities) {
197
+ await this.saveEntity(entity);
198
+ }
199
+ for (const relation of relations) {
200
+ await this.saveRelation(relation);
201
+ }
202
+ }
203
+ /**
204
+ * Clear all data
205
+ */
206
+ async clear() {
207
+ this.entities.clear();
208
+ this.relations.clear();
209
+ this.relationsBySource.clear();
210
+ this.relationsByTarget.clear();
211
+ this.fileCount.clear();
212
+ }
213
+ // =========================================================================
214
+ // Statistics
215
+ // =========================================================================
216
+ /**
217
+ * Get storage statistics
218
+ */
219
+ async getStats() {
220
+ return {
221
+ entityCount: this.entities.size,
222
+ relationCount: this.relations.size,
223
+ fileCount: this.fileCount.size,
224
+ };
225
+ }
226
+ // =========================================================================
227
+ // Additional Helper Methods
228
+ // =========================================================================
229
+ /**
230
+ * Find entities by name pattern
231
+ */
232
+ async findByName(name, exact = false) {
233
+ const nameLower = name.toLowerCase();
234
+ return Array.from(this.entities.values()).filter((e) => exact
235
+ ? e.name.toLowerCase() === nameLower
236
+ : e.name.toLowerCase().includes(nameLower));
237
+ }
238
+ /**
239
+ * Get all entities of a specific type
240
+ */
241
+ async getEntitiesByType(type) {
242
+ return Array.from(this.entities.values()).filter((e) => e.type === type);
243
+ }
244
+ /**
245
+ * Get relations by type
246
+ */
247
+ async getRelationsByType(type) {
248
+ return Array.from(this.relations.values()).filter((r) => r.type === type);
249
+ }
250
+ /**
251
+ * Get all file paths
252
+ */
253
+ async getFilePaths() {
254
+ return Array.from(this.fileCount);
255
+ }
256
+ /**
257
+ * Check if storage is initialized
258
+ */
259
+ isInitialized() {
260
+ return this.initialized;
261
+ }
262
+ }
263
+ //# sourceMappingURL=memory-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-storage.js","sourceRoot":"","sources":["../../src/storage/memory-storage.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,aAAa;IAChB,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IACrC,SAAS,GAAG,IAAI,GAAG,EAAoB,CAAC;IACxC,iBAAiB,GAAG,IAAI,GAAG,EAAuB,CAAC;IACnD,iBAAiB,GAAG,IAAI,GAAG,EAAuB,CAAC;IACnD,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,WAAW,GAAG,KAAK,CAAC;IAE5B;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,4EAA4E;IAC5E,oBAAoB;IACpB,4EAA4E;IAE5E;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,MAAc;QAC7B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACrC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,EAAU;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,KAAiB;QACnC,IAAI,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAEjD,yBAAyB;QACzB,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,WAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACvE,CAAC;QAED,sBAAsB;QACtB,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YACpD,OAAO,GAAG,OAAO,CAAC,MAAM,CACtB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,cAAc,CACpD,CAAC;QACJ,CAAC;QAED,cAAc;QACd,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YACnD,OAAO,GAAG,OAAO,CAAC,MAAM,CACtB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAC1C,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;gBACxC,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CACnD,CAAC;QACJ,CAAC;QAED,cAAc;QACd,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YACnC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,EAAU;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,MAAM,EAAE,CAAC;YACX,gCAAgC;YAChC,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;YAE7C,qBAAqB;YACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChD,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvD,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACpC,CAAC;YAED,qBAAqB;YACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChD,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvD,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACpC,CAAC;YAED,mBAAmB;YACnB,KAAK,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;gBACrC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7B,CAAC;YAED,gBAAgB;YAChB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,sBAAsB;IACtB,4EAA4E;IAE5E;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,QAAkB;QACnC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAE1C,kBAAkB;QAClB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAEhE,kBAAkB;QAClB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAChB,QAAgB,EAChB,YAAmC,MAAM;QAEzC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;QAEtC,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACtD,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAED,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACtD,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;aAC3B,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;aACnC,MAAM,CAAC,CAAC,CAAC,EAAiB,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,EAAU;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxC,IAAI,QAAQ,EAAE,CAAC;YACb,2BAA2B;YAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACjE,IAAI,UAAU,EAAE,CAAC;gBACf,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACtB,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;oBAC1B,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC;YAED,2BAA2B;YAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACjE,IAAI,UAAU,EAAE,CAAC;gBACf,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACtB,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;oBAC1B,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC;YAED,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,kBAAkB;IAClB,4EAA4E;IAE5E;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,QAAkB,EAAE,SAAqB;QACtD,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAED,4EAA4E;IAC5E,aAAa;IACb,4EAA4E;IAE5E;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;YAC/B,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;YAClC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;SAC/B,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,4BAA4B;IAC5B,4EAA4E;IAE5E;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,KAAK,GAAG,KAAK;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACrD,KAAK;YACH,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS;YACpC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAC7C,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,IAAoB;QAC1C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,IAAkB;QACzC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAC5E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QAChB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * @nahisaho/musubix-codegraph - SQLite Storage Implementation
3
+ *
4
+ * Persistent SQLite-based storage adapter for CodeGraph
5
+ *
6
+ * @see REQ-CG-API-005
7
+ * @see DES-CG-006
8
+ * @see TSK-CG-052
9
+ */
10
+ import type { StorageAdapter, StorageStats, Entity, Relation, GraphQuery } from '../types.js';
11
+ /**
12
+ * SQLite storage adapter
13
+ *
14
+ * Stores entities and relations in SQLite database for persistence.
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * const storage = new SQLiteStorage('.codegraph/index.db');
19
+ * await storage.initialize();
20
+ *
21
+ * await storage.saveEntity(entity);
22
+ * const retrieved = await storage.getEntity(entity.id);
23
+ * ```
24
+ */
25
+ export declare class SQLiteStorage implements StorageAdapter {
26
+ private dbPath;
27
+ private db;
28
+ private initialized;
29
+ constructor(dbPath?: string);
30
+ /**
31
+ * Initialize the database
32
+ */
33
+ initialize(): Promise<void>;
34
+ /**
35
+ * Close the database connection
36
+ */
37
+ close(): Promise<void>;
38
+ /**
39
+ * Save an entity
40
+ */
41
+ saveEntity(entity: Entity): Promise<void>;
42
+ /**
43
+ * Get an entity by ID
44
+ */
45
+ getEntity(id: string): Promise<Entity | null>;
46
+ /**
47
+ * Query entities
48
+ */
49
+ queryEntities(query: GraphQuery): Promise<Entity[]>;
50
+ /**
51
+ * Delete an entity
52
+ */
53
+ deleteEntity(id: string): Promise<void>;
54
+ /**
55
+ * Save a relation
56
+ */
57
+ saveRelation(relation: Relation): Promise<void>;
58
+ /**
59
+ * Get relations for an entity
60
+ */
61
+ getRelations(entityId: string, direction?: 'in' | 'out' | 'both'): Promise<Relation[]>;
62
+ /**
63
+ * Delete a relation
64
+ */
65
+ deleteRelation(id: string): Promise<void>;
66
+ /**
67
+ * Bulk save entities and relations
68
+ */
69
+ bulkSave(entities: Entity[], relations: Relation[]): Promise<void>;
70
+ /**
71
+ * Clear all data
72
+ */
73
+ clear(): Promise<void>;
74
+ /**
75
+ * Get storage statistics
76
+ */
77
+ getStats(): Promise<StorageStats>;
78
+ private ensureInitialized;
79
+ private rowToEntity;
80
+ private rowToRelation;
81
+ /**
82
+ * Check if storage is initialized
83
+ */
84
+ isInitialized(): boolean;
85
+ /**
86
+ * Get database path
87
+ */
88
+ getDatabasePath(): string;
89
+ }
90
+ //# sourceMappingURL=sqlite-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-storage.d.ts","sourceRoot":"","sources":["../../src/storage/sqlite-storage.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,MAAM,EACN,QAAQ,EACR,UAAU,EAEX,MAAM,aAAa,CAAC;AAkBrB;;;;;;;;;;;;;GAaG;AACH,qBAAa,aAAc,YAAW,cAAc;IAClD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,EAAE,CAAyB;IACnC,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,GAAE,MAA8B;IAIlD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA2DjC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAY5B;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B/C;;OAEG;IACG,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IASnD;;OAEG;IACG,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA8DzD;;OAEG;IACG,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB7C;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBrD;;OAEG;IACG,YAAY,CAChB,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,IAAI,GAAG,KAAK,GAAG,MAAe,GACxC,OAAO,CAAC,QAAQ,EAAE,CAAC;IA0BtB;;OAEG;IACG,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW/C;;OAEG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiDxE;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAa5B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC;IAkBvC,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,aAAa;IAWrB;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,eAAe,IAAI,MAAM;CAG1B"}