@nahisaho/yata-scale 1.8.5

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 (158) hide show
  1. package/README.md +66 -0
  2. package/dist/CacheManager.d.ts +107 -0
  3. package/dist/CacheManager.d.ts.map +1 -0
  4. package/dist/CacheManager.js +343 -0
  5. package/dist/CacheManager.js.map +1 -0
  6. package/dist/IndexManager.d.ts +103 -0
  7. package/dist/IndexManager.d.ts.map +1 -0
  8. package/dist/IndexManager.js +385 -0
  9. package/dist/IndexManager.js.map +1 -0
  10. package/dist/MigrationHelper.d.ts +91 -0
  11. package/dist/MigrationHelper.d.ts.map +1 -0
  12. package/dist/MigrationHelper.js +220 -0
  13. package/dist/MigrationHelper.js.map +1 -0
  14. package/dist/QueryCoordinator.d.ts +76 -0
  15. package/dist/QueryCoordinator.d.ts.map +1 -0
  16. package/dist/QueryCoordinator.js +298 -0
  17. package/dist/QueryCoordinator.js.map +1 -0
  18. package/dist/ShardManager.d.ts +48 -0
  19. package/dist/ShardManager.d.ts.map +1 -0
  20. package/dist/ShardManager.js +193 -0
  21. package/dist/ShardManager.js.map +1 -0
  22. package/dist/SyncController.d.ts +102 -0
  23. package/dist/SyncController.d.ts.map +1 -0
  24. package/dist/SyncController.js +286 -0
  25. package/dist/SyncController.js.map +1 -0
  26. package/dist/YataScaleManager.d.ts +75 -0
  27. package/dist/YataScaleManager.d.ts.map +1 -0
  28. package/dist/YataScaleManager.js +265 -0
  29. package/dist/YataScaleManager.js.map +1 -0
  30. package/dist/cache/CacheManager.d.ts +116 -0
  31. package/dist/cache/CacheManager.d.ts.map +1 -0
  32. package/dist/cache/CacheManager.js +286 -0
  33. package/dist/cache/CacheManager.js.map +1 -0
  34. package/dist/cache/InvalidationManager.d.ts +91 -0
  35. package/dist/cache/InvalidationManager.d.ts.map +1 -0
  36. package/dist/cache/InvalidationManager.js +155 -0
  37. package/dist/cache/InvalidationManager.js.map +1 -0
  38. package/dist/cache/L1Cache.d.ts +97 -0
  39. package/dist/cache/L1Cache.d.ts.map +1 -0
  40. package/dist/cache/L1Cache.js +225 -0
  41. package/dist/cache/L1Cache.js.map +1 -0
  42. package/dist/cache/L2Cache.d.ts +93 -0
  43. package/dist/cache/L2Cache.d.ts.map +1 -0
  44. package/dist/cache/L2Cache.js +248 -0
  45. package/dist/cache/L2Cache.js.map +1 -0
  46. package/dist/cache/L3Cache.d.ts +101 -0
  47. package/dist/cache/L3Cache.d.ts.map +1 -0
  48. package/dist/cache/L3Cache.js +229 -0
  49. package/dist/cache/L3Cache.js.map +1 -0
  50. package/dist/cache/index.d.ts +12 -0
  51. package/dist/cache/index.d.ts.map +1 -0
  52. package/dist/cache/index.js +11 -0
  53. package/dist/cache/index.js.map +1 -0
  54. package/dist/errors.d.ts +255 -0
  55. package/dist/errors.d.ts.map +1 -0
  56. package/dist/errors.js +515 -0
  57. package/dist/errors.js.map +1 -0
  58. package/dist/index/BPlusTreeIndex.d.ts +101 -0
  59. package/dist/index/BPlusTreeIndex.d.ts.map +1 -0
  60. package/dist/index/BPlusTreeIndex.js +310 -0
  61. package/dist/index/BPlusTreeIndex.js.map +1 -0
  62. package/dist/index/BloomFilter.d.ts +85 -0
  63. package/dist/index/BloomFilter.d.ts.map +1 -0
  64. package/dist/index/BloomFilter.js +215 -0
  65. package/dist/index/BloomFilter.js.map +1 -0
  66. package/dist/index/FullTextIndex.d.ts +87 -0
  67. package/dist/index/FullTextIndex.d.ts.map +1 -0
  68. package/dist/index/FullTextIndex.js +213 -0
  69. package/dist/index/FullTextIndex.js.map +1 -0
  70. package/dist/index/GraphIndex.d.ts +116 -0
  71. package/dist/index/GraphIndex.d.ts.map +1 -0
  72. package/dist/index/GraphIndex.js +308 -0
  73. package/dist/index/GraphIndex.js.map +1 -0
  74. package/dist/index/IndexManager.d.ts +105 -0
  75. package/dist/index/IndexManager.d.ts.map +1 -0
  76. package/dist/index/IndexManager.js +287 -0
  77. package/dist/index/IndexManager.js.map +1 -0
  78. package/dist/index/index.d.ts +12 -0
  79. package/dist/index/index.d.ts.map +1 -0
  80. package/dist/index/index.js +11 -0
  81. package/dist/index/index.js.map +1 -0
  82. package/dist/index.d.ts +12 -0
  83. package/dist/index.d.ts.map +1 -0
  84. package/dist/index.js +12 -0
  85. package/dist/index.js.map +1 -0
  86. package/dist/query/DistributedExecutor.d.ts +78 -0
  87. package/dist/query/DistributedExecutor.d.ts.map +1 -0
  88. package/dist/query/DistributedExecutor.js +232 -0
  89. package/dist/query/DistributedExecutor.js.map +1 -0
  90. package/dist/query/QueryCoordinator.d.ts +98 -0
  91. package/dist/query/QueryCoordinator.d.ts.map +1 -0
  92. package/dist/query/QueryCoordinator.js +246 -0
  93. package/dist/query/QueryCoordinator.js.map +1 -0
  94. package/dist/query/QueryPlanner.d.ts +88 -0
  95. package/dist/query/QueryPlanner.d.ts.map +1 -0
  96. package/dist/query/QueryPlanner.js +235 -0
  97. package/dist/query/QueryPlanner.js.map +1 -0
  98. package/dist/query/WorkerPool.d.ts +108 -0
  99. package/dist/query/WorkerPool.d.ts.map +1 -0
  100. package/dist/query/WorkerPool.js +195 -0
  101. package/dist/query/WorkerPool.js.map +1 -0
  102. package/dist/query/index.d.ts +11 -0
  103. package/dist/query/index.d.ts.map +1 -0
  104. package/dist/query/index.js +10 -0
  105. package/dist/query/index.js.map +1 -0
  106. package/dist/shard/GraphPartitionStrategy.d.ts +65 -0
  107. package/dist/shard/GraphPartitionStrategy.d.ts.map +1 -0
  108. package/dist/shard/GraphPartitionStrategy.js +208 -0
  109. package/dist/shard/GraphPartitionStrategy.js.map +1 -0
  110. package/dist/shard/HashPartitionStrategy.d.ts +56 -0
  111. package/dist/shard/HashPartitionStrategy.d.ts.map +1 -0
  112. package/dist/shard/HashPartitionStrategy.js +169 -0
  113. package/dist/shard/HashPartitionStrategy.js.map +1 -0
  114. package/dist/shard/RangePartitionStrategy.d.ts +63 -0
  115. package/dist/shard/RangePartitionStrategy.d.ts.map +1 -0
  116. package/dist/shard/RangePartitionStrategy.js +157 -0
  117. package/dist/shard/RangePartitionStrategy.js.map +1 -0
  118. package/dist/shard/Rebalancer.d.ts +70 -0
  119. package/dist/shard/Rebalancer.d.ts.map +1 -0
  120. package/dist/shard/Rebalancer.js +184 -0
  121. package/dist/shard/Rebalancer.js.map +1 -0
  122. package/dist/shard/ShardManager.d.ts +123 -0
  123. package/dist/shard/ShardManager.d.ts.map +1 -0
  124. package/dist/shard/ShardManager.js +353 -0
  125. package/dist/shard/ShardManager.js.map +1 -0
  126. package/dist/shard/ShardRouter.d.ts +102 -0
  127. package/dist/shard/ShardRouter.d.ts.map +1 -0
  128. package/dist/shard/ShardRouter.js +181 -0
  129. package/dist/shard/ShardRouter.js.map +1 -0
  130. package/dist/shard/index.d.ts +13 -0
  131. package/dist/shard/index.d.ts.map +1 -0
  132. package/dist/shard/index.js +12 -0
  133. package/dist/shard/index.js.map +1 -0
  134. package/dist/sync/ConflictResolver.d.ts +71 -0
  135. package/dist/sync/ConflictResolver.d.ts.map +1 -0
  136. package/dist/sync/ConflictResolver.js +214 -0
  137. package/dist/sync/ConflictResolver.js.map +1 -0
  138. package/dist/sync/SyncController.d.ts +150 -0
  139. package/dist/sync/SyncController.d.ts.map +1 -0
  140. package/dist/sync/SyncController.js +304 -0
  141. package/dist/sync/SyncController.js.map +1 -0
  142. package/dist/sync/VectorClock.d.ts +102 -0
  143. package/dist/sync/VectorClock.d.ts.map +1 -0
  144. package/dist/sync/VectorClock.js +189 -0
  145. package/dist/sync/VectorClock.js.map +1 -0
  146. package/dist/sync/WALManager.d.ts +120 -0
  147. package/dist/sync/WALManager.d.ts.map +1 -0
  148. package/dist/sync/WALManager.js +240 -0
  149. package/dist/sync/WALManager.js.map +1 -0
  150. package/dist/sync/index.d.ts +11 -0
  151. package/dist/sync/index.d.ts.map +1 -0
  152. package/dist/sync/index.js +10 -0
  153. package/dist/sync/index.js.map +1 -0
  154. package/dist/types.d.ts +323 -0
  155. package/dist/types.d.ts.map +1 -0
  156. package/dist/types.js +7 -0
  157. package/dist/types.js.map +1 -0
  158. package/package.json +86 -0
package/README.md ADDED
@@ -0,0 +1,66 @@
1
+ # @nahisaho/yata-scale
2
+
3
+ YATA Knowledge Graph Scale-up Package - Distributed graph architecture, high-performance indexing, and multi-level caching for large-scale knowledge graphs.
4
+
5
+ ## Features
6
+
7
+ - **Distributed Graph Architecture**: Hash/Range/Graph-based partitioning with automatic rebalancing
8
+ - **High-Performance Indexes**: B+Tree, Full-text, Graph indexes with Bloom filters
9
+ - **Multi-Level Cache**: L1 (hot), L2 (warm), L3 (cold) with automatic promotion/demotion
10
+ - **Parallel Query Processing**: Worker pool, pipelined execution, async I/O
11
+ - **Sync & Replication**: Vector clock, conflict resolution, offline support
12
+
13
+ ## Installation
14
+
15
+ ```bash
16
+ npm install @nahisaho/yata-scale
17
+ ```
18
+
19
+ ## Quick Start
20
+
21
+ ```typescript
22
+ import { createYataScale } from '@nahisaho/yata-scale';
23
+
24
+ const scale = createYataScale({
25
+ shards: [
26
+ { id: 'shard-0', type: 'local', path: './data/shard-0' },
27
+ { id: 'shard-1', type: 'local', path: './data/shard-1' },
28
+ ],
29
+ partitionStrategy: 'hash',
30
+ cache: {
31
+ l1Size: 1000,
32
+ l2Size: 10000,
33
+ },
34
+ });
35
+
36
+ await scale.initialize();
37
+
38
+ // Add entities (auto-sharding)
39
+ await scale.addEntity({
40
+ type: 'class',
41
+ name: 'UserService',
42
+ namespace: 'app.services',
43
+ });
44
+
45
+ // Distributed query
46
+ const result = await scale.query({
47
+ entityFilters: { types: ['class'] },
48
+ textSearch: 'Service',
49
+ });
50
+
51
+ await scale.close();
52
+ ```
53
+
54
+ ## Performance Targets
55
+
56
+ | Metric | Target |
57
+ |--------|--------|
58
+ | Single entity lookup | < 1ms p99 |
59
+ | Complex graph queries | < 100ms p99 |
60
+ | Read QPS | ≥ 10,000 |
61
+ | Memory (1M entities) | < 4GB |
62
+ | Max entities | 100M+ |
63
+
64
+ ## License
65
+
66
+ MIT
@@ -0,0 +1,107 @@
1
+ /**
2
+ * @nahisaho/yata-scale - Cache Manager
3
+ *
4
+ * Multi-tier caching for knowledge graph
5
+ */
6
+ import { type Result } from 'neverthrow';
7
+ import type { Entity, Relationship, CacheConfig, CacheStats } from './types.js';
8
+ import { EntityNotFoundError } from './errors.js';
9
+ /**
10
+ * L1 Cache - Hot tier (in-memory LRU)
11
+ */
12
+ export declare class L1Cache {
13
+ private cache;
14
+ private hits;
15
+ private misses;
16
+ private evictions;
17
+ constructor(maxEntries: number, ttlMs: number);
18
+ set(item: Entity | Relationship): void;
19
+ get(id: string): Entity | Relationship | undefined;
20
+ delete(id: string): void;
21
+ clear(): void;
22
+ get size(): number;
23
+ getStats(): CacheStats;
24
+ }
25
+ /**
26
+ * L2 Cache - Warm tier (compressed in-memory)
27
+ */
28
+ export declare class L2Cache {
29
+ private cache;
30
+ private maxSize;
31
+ private currentSize;
32
+ private hits;
33
+ private misses;
34
+ private evictions;
35
+ private accessOrder;
36
+ constructor(maxSize: number, _ttlMs: number);
37
+ set(item: Entity | Relationship): Promise<void>;
38
+ get(id: string): Promise<Entity | Relationship | undefined>;
39
+ delete(id: string): Promise<void>;
40
+ clear(): Promise<void>;
41
+ get approximateSize(): number;
42
+ getStats(): CacheStats;
43
+ }
44
+ /**
45
+ * L3 Cache - Cold tier (disk-based simulation)
46
+ */
47
+ export declare class L3Cache {
48
+ private storage;
49
+ private maxEntries;
50
+ private hits;
51
+ private misses;
52
+ private evictions;
53
+ constructor(config: {
54
+ maxEntries: number;
55
+ });
56
+ set(item: Entity | Relationship): Promise<void>;
57
+ get(id: string): Promise<Entity | Relationship | undefined>;
58
+ delete(id: string): Promise<void>;
59
+ has(id: string): Promise<boolean>;
60
+ clear(): Promise<void>;
61
+ close(): Promise<void>;
62
+ getStats(): CacheStats;
63
+ }
64
+ /**
65
+ * Cache invalidation manager
66
+ */
67
+ export declare class InvalidationManager {
68
+ private pending;
69
+ private tracked;
70
+ private listeners;
71
+ private batchSize;
72
+ constructor(batchSize?: number);
73
+ invalidate(id: string): void;
74
+ invalidateByPattern(pattern: string): void;
75
+ trackEntity(id: string): void;
76
+ flush(): void;
77
+ onInvalidation(callback: (ids: string[]) => void): void;
78
+ removeListener(callback: (ids: string[]) => void): void;
79
+ get pendingCount(): number;
80
+ clear(): void;
81
+ }
82
+ /**
83
+ * Multi-tier cache manager
84
+ */
85
+ export declare class CacheManager {
86
+ private l1;
87
+ private l2;
88
+ private l3;
89
+ private invalidation;
90
+ constructor(config: CacheConfig);
91
+ setEntity(entity: Entity): Promise<void>;
92
+ getEntity(id: string): Promise<Result<Entity, EntityNotFoundError>>;
93
+ deleteEntity(id: string): Promise<void>;
94
+ setRelationship(rel: Relationship): Promise<void>;
95
+ getRelationship(id: string): Promise<Result<Relationship, EntityNotFoundError>>;
96
+ deleteRelationship(id: string): Promise<void>;
97
+ invalidate(ids: string[]): Promise<void>;
98
+ warm(entities: Entity[]): Promise<void>;
99
+ clear(): Promise<void>;
100
+ close(): Promise<void>;
101
+ getAllStats(): {
102
+ l1: CacheStats;
103
+ l2: CacheStats;
104
+ l3: CacheStats;
105
+ };
106
+ }
107
+ //# sourceMappingURL=CacheManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CacheManager.d.ts","sourceRoot":"","sources":["../src/CacheManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,343 @@
1
+ /**
2
+ * @nahisaho/yata-scale - Cache Manager
3
+ *
4
+ * Multi-tier caching for knowledge graph
5
+ */
6
+ import { ok, err } from 'neverthrow';
7
+ import { LRUCache } from 'lru-cache';
8
+ import { EntityNotFoundError } from './errors.js';
9
+ /**
10
+ * L1 Cache - Hot tier (in-memory LRU)
11
+ */
12
+ export class L1Cache {
13
+ cache;
14
+ hits = 0;
15
+ misses = 0;
16
+ evictions = 0;
17
+ constructor(maxEntries, ttlMs) {
18
+ this.cache = new LRUCache({
19
+ max: maxEntries,
20
+ ttl: ttlMs,
21
+ dispose: () => {
22
+ this.evictions++;
23
+ },
24
+ });
25
+ }
26
+ set(item) {
27
+ this.cache.set(item.id, item);
28
+ }
29
+ get(id) {
30
+ const item = this.cache.get(id);
31
+ if (item) {
32
+ this.hits++;
33
+ }
34
+ else {
35
+ this.misses++;
36
+ }
37
+ return item;
38
+ }
39
+ delete(id) {
40
+ this.cache.delete(id);
41
+ }
42
+ clear() {
43
+ this.cache.clear();
44
+ }
45
+ get size() {
46
+ return this.cache.size;
47
+ }
48
+ getStats() {
49
+ const total = this.hits + this.misses;
50
+ return {
51
+ tier: 'l1',
52
+ hits: this.hits,
53
+ misses: this.misses,
54
+ hitRate: total > 0 ? this.hits / total : 0,
55
+ size: this.cache.size,
56
+ maxSize: this.cache.max,
57
+ evictions: this.evictions,
58
+ };
59
+ }
60
+ }
61
+ /**
62
+ * L2 Cache - Warm tier (compressed in-memory)
63
+ */
64
+ export class L2Cache {
65
+ cache = new Map();
66
+ maxSize;
67
+ currentSize = 0;
68
+ hits = 0;
69
+ misses = 0;
70
+ evictions = 0;
71
+ accessOrder = [];
72
+ constructor(maxSize, _ttlMs) {
73
+ this.maxSize = maxSize;
74
+ }
75
+ async set(item) {
76
+ const serialized = JSON.stringify(item);
77
+ const size = serialized.length;
78
+ while (this.currentSize + size > this.maxSize && this.accessOrder.length > 0) {
79
+ const oldest = this.accessOrder.shift();
80
+ const oldData = this.cache.get(oldest);
81
+ if (oldData) {
82
+ this.currentSize -= oldData.length;
83
+ this.cache.delete(oldest);
84
+ this.evictions++;
85
+ }
86
+ }
87
+ this.cache.set(item.id, serialized);
88
+ this.currentSize += size;
89
+ this.accessOrder.push(item.id);
90
+ }
91
+ async get(id) {
92
+ const data = this.cache.get(id);
93
+ if (data) {
94
+ this.hits++;
95
+ const idx = this.accessOrder.indexOf(id);
96
+ if (idx !== -1) {
97
+ this.accessOrder.splice(idx, 1);
98
+ this.accessOrder.push(id);
99
+ }
100
+ return JSON.parse(data);
101
+ }
102
+ this.misses++;
103
+ return undefined;
104
+ }
105
+ async delete(id) {
106
+ const data = this.cache.get(id);
107
+ if (data) {
108
+ this.currentSize -= data.length;
109
+ this.cache.delete(id);
110
+ const idx = this.accessOrder.indexOf(id);
111
+ if (idx !== -1)
112
+ this.accessOrder.splice(idx, 1);
113
+ }
114
+ }
115
+ async clear() {
116
+ this.cache.clear();
117
+ this.currentSize = 0;
118
+ this.accessOrder = [];
119
+ }
120
+ get approximateSize() {
121
+ return this.currentSize;
122
+ }
123
+ getStats() {
124
+ const total = this.hits + this.misses;
125
+ return {
126
+ tier: 'l2',
127
+ hits: this.hits,
128
+ misses: this.misses,
129
+ hitRate: total > 0 ? this.hits / total : 0,
130
+ size: this.cache.size,
131
+ maxSize: this.maxSize,
132
+ evictions: this.evictions,
133
+ };
134
+ }
135
+ }
136
+ /**
137
+ * L3 Cache - Cold tier (disk-based simulation)
138
+ */
139
+ export class L3Cache {
140
+ storage = new Map();
141
+ maxEntries;
142
+ hits = 0;
143
+ misses = 0;
144
+ evictions = 0;
145
+ constructor(config) {
146
+ this.maxEntries = config.maxEntries;
147
+ }
148
+ async set(item) {
149
+ while (this.storage.size >= this.maxEntries) {
150
+ const firstKey = this.storage.keys().next().value;
151
+ if (firstKey) {
152
+ this.storage.delete(firstKey);
153
+ this.evictions++;
154
+ }
155
+ }
156
+ this.storage.set(item.id, JSON.stringify(item));
157
+ }
158
+ async get(id) {
159
+ const data = this.storage.get(id);
160
+ if (data) {
161
+ this.hits++;
162
+ return JSON.parse(data);
163
+ }
164
+ this.misses++;
165
+ return undefined;
166
+ }
167
+ async delete(id) {
168
+ this.storage.delete(id);
169
+ }
170
+ async has(id) {
171
+ return this.storage.has(id);
172
+ }
173
+ async clear() {
174
+ this.storage.clear();
175
+ }
176
+ async close() {
177
+ // No-op for in-memory simulation
178
+ }
179
+ getStats() {
180
+ const total = this.hits + this.misses;
181
+ return {
182
+ tier: 'l3',
183
+ hits: this.hits,
184
+ misses: this.misses,
185
+ hitRate: total > 0 ? this.hits / total : 0,
186
+ size: this.storage.size,
187
+ maxSize: this.maxEntries,
188
+ evictions: this.evictions,
189
+ };
190
+ }
191
+ }
192
+ /**
193
+ * Cache invalidation manager
194
+ */
195
+ export class InvalidationManager {
196
+ pending = new Set();
197
+ tracked = new Set();
198
+ listeners = [];
199
+ batchSize;
200
+ constructor(batchSize = 100) {
201
+ this.batchSize = batchSize;
202
+ }
203
+ invalidate(id) {
204
+ this.pending.add(id);
205
+ if (this.pending.size >= this.batchSize) {
206
+ this.flush();
207
+ }
208
+ }
209
+ invalidateByPattern(pattern) {
210
+ const regex = new RegExp(pattern.replace('*', '.*'));
211
+ for (const id of this.tracked) {
212
+ if (regex.test(id)) {
213
+ this.pending.add(id);
214
+ }
215
+ }
216
+ }
217
+ trackEntity(id) {
218
+ this.tracked.add(id);
219
+ }
220
+ flush() {
221
+ if (this.pending.size === 0)
222
+ return;
223
+ const ids = Array.from(this.pending);
224
+ this.pending.clear();
225
+ for (const listener of this.listeners) {
226
+ listener(ids);
227
+ }
228
+ }
229
+ onInvalidation(callback) {
230
+ this.listeners.push(callback);
231
+ }
232
+ removeListener(callback) {
233
+ const idx = this.listeners.indexOf(callback);
234
+ if (idx !== -1)
235
+ this.listeners.splice(idx, 1);
236
+ }
237
+ get pendingCount() {
238
+ return this.pending.size;
239
+ }
240
+ clear() {
241
+ this.pending.clear();
242
+ }
243
+ }
244
+ /**
245
+ * Multi-tier cache manager
246
+ */
247
+ export class CacheManager {
248
+ l1;
249
+ l2;
250
+ l3;
251
+ invalidation;
252
+ constructor(config) {
253
+ this.l1 = new L1Cache(config.l1MaxEntries, config.ttlMs);
254
+ this.l2 = new L2Cache(config.l2MaxSize, config.ttlMs);
255
+ this.l3 = new L3Cache({ maxEntries: config.l3MaxEntries });
256
+ this.invalidation = new InvalidationManager();
257
+ this.invalidation.onInvalidation((ids) => {
258
+ for (const id of ids) {
259
+ this.l1.delete(id);
260
+ this.l2.delete(id);
261
+ this.l3.delete(id);
262
+ }
263
+ });
264
+ }
265
+ async setEntity(entity) {
266
+ this.l1.set(entity);
267
+ await this.l2.set(entity);
268
+ await this.l3.set(entity);
269
+ this.invalidation.trackEntity(entity.id);
270
+ }
271
+ async getEntity(id) {
272
+ // Try L1
273
+ let entity = this.l1.get(id);
274
+ if (entity)
275
+ return ok(entity);
276
+ // Try L2
277
+ entity = (await this.l2.get(id));
278
+ if (entity) {
279
+ this.l1.set(entity);
280
+ return ok(entity);
281
+ }
282
+ // Try L3
283
+ entity = (await this.l3.get(id));
284
+ if (entity) {
285
+ this.l1.set(entity);
286
+ await this.l2.set(entity);
287
+ return ok(entity);
288
+ }
289
+ return err(new EntityNotFoundError(id));
290
+ }
291
+ async deleteEntity(id) {
292
+ this.l1.delete(id);
293
+ await this.l2.delete(id);
294
+ await this.l3.delete(id);
295
+ }
296
+ async setRelationship(rel) {
297
+ const key = `rel:${rel.id}`;
298
+ this.l1.set({ ...rel, id: key });
299
+ await this.l2.set({ ...rel, id: key });
300
+ }
301
+ async getRelationship(id) {
302
+ const key = `rel:${id}`;
303
+ let rel = this.l1.get(key);
304
+ if (rel)
305
+ return ok({ ...rel, id });
306
+ rel = (await this.l2.get(key));
307
+ if (rel)
308
+ return ok({ ...rel, id });
309
+ return err(new EntityNotFoundError(id));
310
+ }
311
+ async deleteRelationship(id) {
312
+ const key = `rel:${id}`;
313
+ this.l1.delete(key);
314
+ await this.l2.delete(key);
315
+ }
316
+ async invalidate(ids) {
317
+ for (const id of ids) {
318
+ this.invalidation.invalidate(id);
319
+ }
320
+ this.invalidation.flush();
321
+ }
322
+ async warm(entities) {
323
+ for (const entity of entities) {
324
+ await this.setEntity(entity);
325
+ }
326
+ }
327
+ async clear() {
328
+ this.l1.clear();
329
+ await this.l2.clear();
330
+ await this.l3.clear();
331
+ }
332
+ async close() {
333
+ await this.l3.close();
334
+ }
335
+ getAllStats() {
336
+ return {
337
+ l1: this.l1.getStats(),
338
+ l2: this.l2.getStats(),
339
+ l3: this.l3.getStats(),
340
+ };
341
+ }
342
+ }
343
+ //# sourceMappingURL=CacheManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CacheManager.js","sourceRoot":"","sources":["../src/CacheManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,EAAE,EAAE,GAAG,EAAe,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD;;GAEG;AACH,MAAM,OAAO,OAAO;IACV,KAAK,CAA0C;IAC/C,IAAI,GAAG,CAAC,CAAC;IACT,MAAM,GAAG,CAAC,CAAC;IACX,SAAS,GAAG,CAAC,CAAC;IAEtB,YAAY,UAAkB,EAAE,KAAa;QAC3C,IAAI,CAAC,KAAK,GAAG,IAAI,QAAQ,CAAC;YACxB,GAAG,EAAE,UAAU;YACf,GAAG,EAAE,KAAK;YACV,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED,GAAG,CAAC,IAA2B;QAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,GAAG,CAAC,EAAU;QACZ,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,EAAU;QACf,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;IAED,QAAQ;QACN,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QACtC,OAAO;YACL,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1C,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;YACrB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,OAAO;IACV,KAAK,GAAwB,IAAI,GAAG,EAAE,CAAC;IACvC,OAAO,CAAS;IAChB,WAAW,GAAG,CAAC,CAAC;IAChB,IAAI,GAAG,CAAC,CAAC;IACT,MAAM,GAAG,CAAC,CAAC;IACX,SAAS,GAAG,CAAC,CAAC;IACd,WAAW,GAAa,EAAE,CAAC;IAEnC,YAAY,OAAe,EAAE,MAAc;QACzC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAA2B;QACnC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC;QAE/B,OAAO,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7E,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAG,CAAC;YACzC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;gBACnC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC1B,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QACpC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC;QACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACzC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;gBACf,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAChC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5B,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC;YAChC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACtB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACzC,IAAI,GAAG,KAAK,CAAC,CAAC;gBAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACxB,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,QAAQ;QACN,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QACtC,OAAO;YACL,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1C,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,OAAO;IACV,OAAO,GAAwB,IAAI,GAAG,EAAE,CAAC;IACzC,UAAU,CAAS;IACnB,IAAI,GAAG,CAAC,CAAC;IACT,MAAM,GAAG,CAAC,CAAC;IACX,SAAS,GAAG,CAAC,CAAC;IAEtB,YAAY,MAA8B;QACxC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAA2B;QACnC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAClD,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,iCAAiC;IACnC,CAAC;IAED,QAAQ;QACN,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QACtC,OAAO;YACL,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1C,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;YACvB,OAAO,EAAE,IAAI,CAAC,UAAU;YACxB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,mBAAmB;IACtB,OAAO,GAAgB,IAAI,GAAG,EAAE,CAAC;IACjC,OAAO,GAAgB,IAAI,GAAG,EAAE,CAAC;IACjC,SAAS,GAAmC,EAAE,CAAC;IAC/C,SAAS,CAAS;IAE1B,YAAY,SAAS,GAAG,GAAG;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,UAAU,CAAC,EAAU;QACnB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACrB,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACxC,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;IACH,CAAC;IAED,mBAAmB,CAAC,OAAe;QACjC,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QACrD,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC9B,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBACnB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,WAAW,CAAC,EAAU;QACpB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACvB,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QACpC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IAED,cAAc,CAAC,QAAiC;QAC9C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED,cAAc,CAAC,QAAiC;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,YAAY;IACf,EAAE,CAAU;IACZ,EAAE,CAAU;IACZ,EAAE,CAAU;IACZ,YAAY,CAAsB;IAE1C,YAAY,MAAmB;QAC7B,IAAI,CAAC,EAAE,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,EAAE,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,CAAC,EAAE,GAAG,IAAI,OAAO,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,YAAY,GAAG,IAAI,mBAAmB,EAAE,CAAC;QAE9C,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,GAAG,EAAE,EAAE;YACvC,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;gBACrB,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACnB,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACnB,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACrB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAc;QAC5B,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpB,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1B,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1B,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,EAAU;QACxB,SAAS;QACT,IAAI,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAuB,CAAC;QACnD,IAAI,MAAM;YAAE,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;QAE9B,SAAS;QACT,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAuB,CAAC;QACvD,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpB,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;QAED,SAAS;QACT,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAuB,CAAC;QACvD,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpB,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC1B,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;QAED,OAAO,GAAG,CAAC,IAAI,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAAU;QAC3B,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACnB,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzB,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,GAAiB;QACrC,MAAM,GAAG,GAAG,OAAO,GAAG,CAAC,EAAE,EAAE,CAAC;QAC5B,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAuB,CAAC,CAAC;QACtD,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAuB,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,EAAU;QAC9B,MAAM,GAAG,GAAG,OAAO,EAAE,EAAE,CAAC;QACxB,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAwC,CAAC;QAClE,IAAI,GAAG;YAAE,OAAO,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;QAEnC,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAwC,CAAC;QACtE,IAAI,GAAG;YAAE,OAAO,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;QAEnC,OAAO,GAAG,CAAC,IAAI,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,EAAU;QACjC,MAAM,GAAG,GAAG,OAAO,EAAE,EAAE,CAAC;QACxB,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACpB,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,GAAa;QAC5B,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAkB;QAC3B,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED,WAAW;QACT,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE;YACtB,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE;YACtB,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE;SACvB,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * @nahisaho/yata-scale - Index Manager
3
+ *
4
+ * Manages indexes for efficient querying
5
+ */
6
+ import type { Entity, Relationship, IndexStats, SearchResult } from './types.js';
7
+ /**
8
+ * B+Tree index for ordered lookups
9
+ */
10
+ export declare class BPlusTreeIndex<K extends string | number, V> {
11
+ private data;
12
+ insert(key: K, value: V): void;
13
+ get(key: K): V | undefined;
14
+ delete(key: K): boolean;
15
+ range(minKey: K, maxKey: K): V[];
16
+ get size(): number;
17
+ clear(): void;
18
+ }
19
+ /**
20
+ * Full-text search index
21
+ */
22
+ export declare class FullTextIndex {
23
+ private documents;
24
+ private invertedIndex;
25
+ private termFrequency;
26
+ add(id: string, text: string): void;
27
+ remove(id: string): void;
28
+ search(query: string): SearchResult[];
29
+ private tokenize;
30
+ get size(): number;
31
+ getTerms(): string[];
32
+ clear(): void;
33
+ }
34
+ /**
35
+ * Graph index for traversal queries
36
+ */
37
+ export declare class GraphIndex {
38
+ private outgoing;
39
+ private incoming;
40
+ private nodes;
41
+ addEdge(source: string, target: string, type: string): void;
42
+ removeEdge(source: string, target: string): void;
43
+ removeNode(nodeId: string): void;
44
+ hasEdge(source: string, target: string): boolean;
45
+ getOutgoing(nodeId: string): Array<{
46
+ target: string;
47
+ type: string;
48
+ }>;
49
+ getIncoming(nodeId: string): Array<{
50
+ source: string;
51
+ type: string;
52
+ }>;
53
+ kHop(startId: string, k: number): string[];
54
+ shortestPath(source: string, target: string): string[];
55
+ get nodeCount(): number;
56
+ clear(): void;
57
+ }
58
+ /**
59
+ * Bloom filter for membership testing
60
+ */
61
+ export declare class BloomFilter {
62
+ private bits;
63
+ private hashCount;
64
+ constructor(expectedItems: number, falsePositiveRate: number);
65
+ private hash;
66
+ add(item: string): void;
67
+ test(item: string): boolean;
68
+ approximateCount(): number;
69
+ serialize(): {
70
+ bits: number[];
71
+ hashCount: number;
72
+ };
73
+ static deserialize(data: {
74
+ bits: number[];
75
+ hashCount: number;
76
+ }): BloomFilter;
77
+ union(other: BloomFilter): void;
78
+ clear(): void;
79
+ }
80
+ /**
81
+ * Index manager for all indexes
82
+ */
83
+ export declare class IndexManager {
84
+ private entityIndex;
85
+ private typeIndex;
86
+ private fullTextIndex;
87
+ private graphIndex;
88
+ private bloomFilter;
89
+ private _relationshipCount;
90
+ indexEntity(entity: Entity): void;
91
+ removeEntity(entityId: string): void;
92
+ indexRelationship(rel: Relationship): void;
93
+ removeRelationship(_relId: string): void;
94
+ getEntity(entityId: string): Entity | undefined;
95
+ searchByText(query: string): SearchResult[];
96
+ findByType(type: string): Entity[];
97
+ possiblyExists(entityId: string): boolean;
98
+ get entityCount(): number;
99
+ get relationshipCount(): number;
100
+ getAllStats(): IndexStats[];
101
+ clear(): void;
102
+ }
103
+ //# sourceMappingURL=IndexManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndexManager.d.ts","sourceRoot":"","sources":["../src/IndexManager.ts"],"names":[],"mappings":"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"}