@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.
- package/README.md +66 -0
- package/dist/CacheManager.d.ts +107 -0
- package/dist/CacheManager.d.ts.map +1 -0
- package/dist/CacheManager.js +343 -0
- package/dist/CacheManager.js.map +1 -0
- package/dist/IndexManager.d.ts +103 -0
- package/dist/IndexManager.d.ts.map +1 -0
- package/dist/IndexManager.js +385 -0
- package/dist/IndexManager.js.map +1 -0
- package/dist/MigrationHelper.d.ts +91 -0
- package/dist/MigrationHelper.d.ts.map +1 -0
- package/dist/MigrationHelper.js +220 -0
- package/dist/MigrationHelper.js.map +1 -0
- package/dist/QueryCoordinator.d.ts +76 -0
- package/dist/QueryCoordinator.d.ts.map +1 -0
- package/dist/QueryCoordinator.js +298 -0
- package/dist/QueryCoordinator.js.map +1 -0
- package/dist/ShardManager.d.ts +48 -0
- package/dist/ShardManager.d.ts.map +1 -0
- package/dist/ShardManager.js +193 -0
- package/dist/ShardManager.js.map +1 -0
- package/dist/SyncController.d.ts +102 -0
- package/dist/SyncController.d.ts.map +1 -0
- package/dist/SyncController.js +286 -0
- package/dist/SyncController.js.map +1 -0
- package/dist/YataScaleManager.d.ts +75 -0
- package/dist/YataScaleManager.d.ts.map +1 -0
- package/dist/YataScaleManager.js +265 -0
- package/dist/YataScaleManager.js.map +1 -0
- package/dist/cache/CacheManager.d.ts +116 -0
- package/dist/cache/CacheManager.d.ts.map +1 -0
- package/dist/cache/CacheManager.js +286 -0
- package/dist/cache/CacheManager.js.map +1 -0
- package/dist/cache/InvalidationManager.d.ts +91 -0
- package/dist/cache/InvalidationManager.d.ts.map +1 -0
- package/dist/cache/InvalidationManager.js +155 -0
- package/dist/cache/InvalidationManager.js.map +1 -0
- package/dist/cache/L1Cache.d.ts +97 -0
- package/dist/cache/L1Cache.d.ts.map +1 -0
- package/dist/cache/L1Cache.js +225 -0
- package/dist/cache/L1Cache.js.map +1 -0
- package/dist/cache/L2Cache.d.ts +93 -0
- package/dist/cache/L2Cache.d.ts.map +1 -0
- package/dist/cache/L2Cache.js +248 -0
- package/dist/cache/L2Cache.js.map +1 -0
- package/dist/cache/L3Cache.d.ts +101 -0
- package/dist/cache/L3Cache.d.ts.map +1 -0
- package/dist/cache/L3Cache.js +229 -0
- package/dist/cache/L3Cache.js.map +1 -0
- package/dist/cache/index.d.ts +12 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +11 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/errors.d.ts +255 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +515 -0
- package/dist/errors.js.map +1 -0
- package/dist/index/BPlusTreeIndex.d.ts +101 -0
- package/dist/index/BPlusTreeIndex.d.ts.map +1 -0
- package/dist/index/BPlusTreeIndex.js +310 -0
- package/dist/index/BPlusTreeIndex.js.map +1 -0
- package/dist/index/BloomFilter.d.ts +85 -0
- package/dist/index/BloomFilter.d.ts.map +1 -0
- package/dist/index/BloomFilter.js +215 -0
- package/dist/index/BloomFilter.js.map +1 -0
- package/dist/index/FullTextIndex.d.ts +87 -0
- package/dist/index/FullTextIndex.d.ts.map +1 -0
- package/dist/index/FullTextIndex.js +213 -0
- package/dist/index/FullTextIndex.js.map +1 -0
- package/dist/index/GraphIndex.d.ts +116 -0
- package/dist/index/GraphIndex.d.ts.map +1 -0
- package/dist/index/GraphIndex.js +308 -0
- package/dist/index/GraphIndex.js.map +1 -0
- package/dist/index/IndexManager.d.ts +105 -0
- package/dist/index/IndexManager.d.ts.map +1 -0
- package/dist/index/IndexManager.js +287 -0
- package/dist/index/IndexManager.js.map +1 -0
- package/dist/index/index.d.ts +12 -0
- package/dist/index/index.d.ts.map +1 -0
- package/dist/index/index.js +11 -0
- package/dist/index/index.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/query/DistributedExecutor.d.ts +78 -0
- package/dist/query/DistributedExecutor.d.ts.map +1 -0
- package/dist/query/DistributedExecutor.js +232 -0
- package/dist/query/DistributedExecutor.js.map +1 -0
- package/dist/query/QueryCoordinator.d.ts +98 -0
- package/dist/query/QueryCoordinator.d.ts.map +1 -0
- package/dist/query/QueryCoordinator.js +246 -0
- package/dist/query/QueryCoordinator.js.map +1 -0
- package/dist/query/QueryPlanner.d.ts +88 -0
- package/dist/query/QueryPlanner.d.ts.map +1 -0
- package/dist/query/QueryPlanner.js +235 -0
- package/dist/query/QueryPlanner.js.map +1 -0
- package/dist/query/WorkerPool.d.ts +108 -0
- package/dist/query/WorkerPool.d.ts.map +1 -0
- package/dist/query/WorkerPool.js +195 -0
- package/dist/query/WorkerPool.js.map +1 -0
- package/dist/query/index.d.ts +11 -0
- package/dist/query/index.d.ts.map +1 -0
- package/dist/query/index.js +10 -0
- package/dist/query/index.js.map +1 -0
- package/dist/shard/GraphPartitionStrategy.d.ts +65 -0
- package/dist/shard/GraphPartitionStrategy.d.ts.map +1 -0
- package/dist/shard/GraphPartitionStrategy.js +208 -0
- package/dist/shard/GraphPartitionStrategy.js.map +1 -0
- package/dist/shard/HashPartitionStrategy.d.ts +56 -0
- package/dist/shard/HashPartitionStrategy.d.ts.map +1 -0
- package/dist/shard/HashPartitionStrategy.js +169 -0
- package/dist/shard/HashPartitionStrategy.js.map +1 -0
- package/dist/shard/RangePartitionStrategy.d.ts +63 -0
- package/dist/shard/RangePartitionStrategy.d.ts.map +1 -0
- package/dist/shard/RangePartitionStrategy.js +157 -0
- package/dist/shard/RangePartitionStrategy.js.map +1 -0
- package/dist/shard/Rebalancer.d.ts +70 -0
- package/dist/shard/Rebalancer.d.ts.map +1 -0
- package/dist/shard/Rebalancer.js +184 -0
- package/dist/shard/Rebalancer.js.map +1 -0
- package/dist/shard/ShardManager.d.ts +123 -0
- package/dist/shard/ShardManager.d.ts.map +1 -0
- package/dist/shard/ShardManager.js +353 -0
- package/dist/shard/ShardManager.js.map +1 -0
- package/dist/shard/ShardRouter.d.ts +102 -0
- package/dist/shard/ShardRouter.d.ts.map +1 -0
- package/dist/shard/ShardRouter.js +181 -0
- package/dist/shard/ShardRouter.js.map +1 -0
- package/dist/shard/index.d.ts +13 -0
- package/dist/shard/index.d.ts.map +1 -0
- package/dist/shard/index.js +12 -0
- package/dist/shard/index.js.map +1 -0
- package/dist/sync/ConflictResolver.d.ts +71 -0
- package/dist/sync/ConflictResolver.d.ts.map +1 -0
- package/dist/sync/ConflictResolver.js +214 -0
- package/dist/sync/ConflictResolver.js.map +1 -0
- package/dist/sync/SyncController.d.ts +150 -0
- package/dist/sync/SyncController.d.ts.map +1 -0
- package/dist/sync/SyncController.js +304 -0
- package/dist/sync/SyncController.js.map +1 -0
- package/dist/sync/VectorClock.d.ts +102 -0
- package/dist/sync/VectorClock.d.ts.map +1 -0
- package/dist/sync/VectorClock.js +189 -0
- package/dist/sync/VectorClock.js.map +1 -0
- package/dist/sync/WALManager.d.ts +120 -0
- package/dist/sync/WALManager.d.ts.map +1 -0
- package/dist/sync/WALManager.js +240 -0
- package/dist/sync/WALManager.js.map +1 -0
- package/dist/sync/index.d.ts +11 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +10 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/types.d.ts +323 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/package.json +86 -0
package/dist/errors.js
ADDED
|
@@ -0,0 +1,515 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @nahisaho/yata-scale - Error Classes
|
|
3
|
+
*
|
|
4
|
+
* Hierarchical error types for yata-scale operations
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Base error class for all yata-scale errors
|
|
8
|
+
*/
|
|
9
|
+
export class YataScaleError extends Error {
|
|
10
|
+
code;
|
|
11
|
+
cause;
|
|
12
|
+
timestamp;
|
|
13
|
+
constructor(message, code, cause) {
|
|
14
|
+
super(message);
|
|
15
|
+
this.code = code;
|
|
16
|
+
this.cause = cause;
|
|
17
|
+
this.name = 'YataScaleError';
|
|
18
|
+
this.timestamp = new Date();
|
|
19
|
+
// Maintain proper stack trace
|
|
20
|
+
if (Error.captureStackTrace) {
|
|
21
|
+
Error.captureStackTrace(this, this.constructor);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
toJSON() {
|
|
25
|
+
return {
|
|
26
|
+
name: this.name,
|
|
27
|
+
message: this.message,
|
|
28
|
+
code: this.code,
|
|
29
|
+
timestamp: this.timestamp.toISOString(),
|
|
30
|
+
cause: this.cause?.message,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
// ============================================================================
|
|
35
|
+
// Shard Errors
|
|
36
|
+
// ============================================================================
|
|
37
|
+
/**
|
|
38
|
+
* Shard-related error
|
|
39
|
+
*/
|
|
40
|
+
export class ShardError extends YataScaleError {
|
|
41
|
+
shardId;
|
|
42
|
+
constructor(message, shardId, cause) {
|
|
43
|
+
super(message, 'SHARD_ERROR', cause);
|
|
44
|
+
this.shardId = shardId;
|
|
45
|
+
this.name = 'ShardError';
|
|
46
|
+
}
|
|
47
|
+
toJSON() {
|
|
48
|
+
return {
|
|
49
|
+
...super.toJSON(),
|
|
50
|
+
shardId: this.shardId,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Shard not found error
|
|
56
|
+
*/
|
|
57
|
+
export class ShardNotFoundError extends ShardError {
|
|
58
|
+
constructor(shardId) {
|
|
59
|
+
super(`Shard not found: ${shardId}`, shardId);
|
|
60
|
+
this.name = 'ShardNotFoundError';
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Shard unavailable error
|
|
65
|
+
*/
|
|
66
|
+
export class ShardUnavailableError extends ShardError {
|
|
67
|
+
constructor(shardId, cause) {
|
|
68
|
+
super(`Shard unavailable: ${shardId}`, shardId, cause);
|
|
69
|
+
this.name = 'ShardUnavailableError';
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Shard capacity exceeded error
|
|
74
|
+
*/
|
|
75
|
+
export class ShardCapacityExceededError extends ShardError {
|
|
76
|
+
currentSize;
|
|
77
|
+
maxCapacity;
|
|
78
|
+
constructor(shardId, currentSize, maxCapacity) {
|
|
79
|
+
super(`Shard capacity exceeded: ${shardId} (${currentSize}/${maxCapacity})`, shardId);
|
|
80
|
+
this.currentSize = currentSize;
|
|
81
|
+
this.maxCapacity = maxCapacity;
|
|
82
|
+
this.name = 'ShardCapacityExceededError';
|
|
83
|
+
}
|
|
84
|
+
toJSON() {
|
|
85
|
+
return {
|
|
86
|
+
...super.toJSON(),
|
|
87
|
+
currentSize: this.currentSize,
|
|
88
|
+
maxCapacity: this.maxCapacity,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Rebalance error
|
|
94
|
+
*/
|
|
95
|
+
export class RebalanceError extends YataScaleError {
|
|
96
|
+
jobId;
|
|
97
|
+
constructor(message, jobId, cause) {
|
|
98
|
+
super(message, 'REBALANCE_ERROR', cause);
|
|
99
|
+
this.jobId = jobId;
|
|
100
|
+
this.name = 'RebalanceError';
|
|
101
|
+
}
|
|
102
|
+
toJSON() {
|
|
103
|
+
return {
|
|
104
|
+
...super.toJSON(),
|
|
105
|
+
jobId: this.jobId,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// ============================================================================
|
|
110
|
+
// Index Errors
|
|
111
|
+
// ============================================================================
|
|
112
|
+
/**
|
|
113
|
+
* Index-related error
|
|
114
|
+
*/
|
|
115
|
+
export class IndexError extends YataScaleError {
|
|
116
|
+
indexName;
|
|
117
|
+
constructor(message, indexName, cause) {
|
|
118
|
+
super(message, 'INDEX_ERROR', cause);
|
|
119
|
+
this.indexName = indexName;
|
|
120
|
+
this.name = 'IndexError';
|
|
121
|
+
}
|
|
122
|
+
toJSON() {
|
|
123
|
+
return {
|
|
124
|
+
...super.toJSON(),
|
|
125
|
+
indexName: this.indexName,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Index not found error
|
|
131
|
+
*/
|
|
132
|
+
export class IndexNotFoundError extends IndexError {
|
|
133
|
+
constructor(indexName) {
|
|
134
|
+
super(`Index not found: ${indexName}`, indexName);
|
|
135
|
+
this.name = 'IndexNotFoundError';
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Index corrupted error
|
|
140
|
+
*/
|
|
141
|
+
export class IndexCorruptedError extends IndexError {
|
|
142
|
+
constructor(indexName, details) {
|
|
143
|
+
super(`Index corrupted: ${indexName}${details ? ` - ${details}` : ''}`, indexName);
|
|
144
|
+
this.name = 'IndexCorruptedError';
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Duplicate key error
|
|
149
|
+
*/
|
|
150
|
+
export class DuplicateKeyError extends IndexError {
|
|
151
|
+
key;
|
|
152
|
+
constructor(indexName, key) {
|
|
153
|
+
super(`Duplicate key in index ${indexName}: ${key}`, indexName);
|
|
154
|
+
this.key = key;
|
|
155
|
+
this.name = 'DuplicateKeyError';
|
|
156
|
+
}
|
|
157
|
+
toJSON() {
|
|
158
|
+
return {
|
|
159
|
+
...super.toJSON(),
|
|
160
|
+
key: this.key,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
// ============================================================================
|
|
165
|
+
// Cache Errors
|
|
166
|
+
// ============================================================================
|
|
167
|
+
/**
|
|
168
|
+
* Cache-related error
|
|
169
|
+
*/
|
|
170
|
+
export class CacheError extends YataScaleError {
|
|
171
|
+
constructor(message, cause) {
|
|
172
|
+
super(message, 'CACHE_ERROR', cause);
|
|
173
|
+
this.name = 'CacheError';
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Cache miss error (when strict mode requires hit)
|
|
178
|
+
*/
|
|
179
|
+
export class CacheMissError extends CacheError {
|
|
180
|
+
key;
|
|
181
|
+
constructor(key) {
|
|
182
|
+
super(`Cache miss for key: ${key}`);
|
|
183
|
+
this.key = key;
|
|
184
|
+
this.name = 'CacheMissError';
|
|
185
|
+
}
|
|
186
|
+
toJSON() {
|
|
187
|
+
return {
|
|
188
|
+
...super.toJSON(),
|
|
189
|
+
key: this.key,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Cache full error
|
|
195
|
+
*/
|
|
196
|
+
export class CacheFullError extends CacheError {
|
|
197
|
+
tier;
|
|
198
|
+
currentSize;
|
|
199
|
+
maxSize;
|
|
200
|
+
constructor(tier, currentSize, maxSize) {
|
|
201
|
+
super(`Cache tier ${tier} is full (${currentSize}/${maxSize})`);
|
|
202
|
+
this.tier = tier;
|
|
203
|
+
this.currentSize = currentSize;
|
|
204
|
+
this.maxSize = maxSize;
|
|
205
|
+
this.name = 'CacheFullError';
|
|
206
|
+
}
|
|
207
|
+
toJSON() {
|
|
208
|
+
return {
|
|
209
|
+
...super.toJSON(),
|
|
210
|
+
tier: this.tier,
|
|
211
|
+
currentSize: this.currentSize,
|
|
212
|
+
maxSize: this.maxSize,
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
// ============================================================================
|
|
217
|
+
// Query Errors
|
|
218
|
+
// ============================================================================
|
|
219
|
+
/**
|
|
220
|
+
* Query-related error
|
|
221
|
+
*/
|
|
222
|
+
export class QueryError extends YataScaleError {
|
|
223
|
+
constructor(message, cause) {
|
|
224
|
+
super(message, 'QUERY_ERROR', cause);
|
|
225
|
+
this.name = 'QueryError';
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Query timeout error
|
|
230
|
+
*/
|
|
231
|
+
export class QueryTimeoutError extends QueryError {
|
|
232
|
+
timeoutMs;
|
|
233
|
+
constructor(timeoutMs) {
|
|
234
|
+
super(`Query timed out after ${timeoutMs}ms`);
|
|
235
|
+
this.timeoutMs = timeoutMs;
|
|
236
|
+
this.name = 'QueryTimeoutError';
|
|
237
|
+
}
|
|
238
|
+
toJSON() {
|
|
239
|
+
return {
|
|
240
|
+
...super.toJSON(),
|
|
241
|
+
timeoutMs: this.timeoutMs,
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Invalid query error
|
|
247
|
+
*/
|
|
248
|
+
export class InvalidQueryError extends QueryError {
|
|
249
|
+
query;
|
|
250
|
+
constructor(message, query) {
|
|
251
|
+
super(`Invalid query: ${message}`);
|
|
252
|
+
this.query = query;
|
|
253
|
+
this.name = 'InvalidQueryError';
|
|
254
|
+
}
|
|
255
|
+
toJSON() {
|
|
256
|
+
return {
|
|
257
|
+
...super.toJSON(),
|
|
258
|
+
query: this.query,
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Query execution error
|
|
264
|
+
*/
|
|
265
|
+
export class QueryExecutionError extends QueryError {
|
|
266
|
+
step;
|
|
267
|
+
constructor(message, step, cause) {
|
|
268
|
+
super(`Query execution failed at step '${step}': ${message}`, cause);
|
|
269
|
+
this.step = step;
|
|
270
|
+
this.name = 'QueryExecutionError';
|
|
271
|
+
}
|
|
272
|
+
toJSON() {
|
|
273
|
+
return {
|
|
274
|
+
...super.toJSON(),
|
|
275
|
+
step: this.step,
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
// ============================================================================
|
|
280
|
+
// Sync Errors
|
|
281
|
+
// ============================================================================
|
|
282
|
+
/**
|
|
283
|
+
* Sync-related error
|
|
284
|
+
*/
|
|
285
|
+
export class SyncError extends YataScaleError {
|
|
286
|
+
constructor(message, cause) {
|
|
287
|
+
super(message, 'SYNC_ERROR', cause);
|
|
288
|
+
this.name = 'SyncError';
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Conflict error
|
|
293
|
+
*/
|
|
294
|
+
export class ConflictError extends SyncError {
|
|
295
|
+
entityId;
|
|
296
|
+
localVersion;
|
|
297
|
+
remoteVersion;
|
|
298
|
+
constructor(entityId, localVersion, remoteVersion) {
|
|
299
|
+
super(`Conflict detected for entity ${entityId}: local=${localVersion}, remote=${remoteVersion}`);
|
|
300
|
+
this.entityId = entityId;
|
|
301
|
+
this.localVersion = localVersion;
|
|
302
|
+
this.remoteVersion = remoteVersion;
|
|
303
|
+
this.name = 'ConflictError';
|
|
304
|
+
}
|
|
305
|
+
toJSON() {
|
|
306
|
+
return {
|
|
307
|
+
...super.toJSON(),
|
|
308
|
+
entityId: this.entityId,
|
|
309
|
+
localVersion: this.localVersion,
|
|
310
|
+
remoteVersion: this.remoteVersion,
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Sync connection error
|
|
316
|
+
*/
|
|
317
|
+
export class SyncConnectionError extends SyncError {
|
|
318
|
+
remote;
|
|
319
|
+
constructor(remote, cause) {
|
|
320
|
+
super(`Failed to connect to remote: ${remote}`, cause);
|
|
321
|
+
this.remote = remote;
|
|
322
|
+
this.name = 'SyncConnectionError';
|
|
323
|
+
}
|
|
324
|
+
toJSON() {
|
|
325
|
+
return {
|
|
326
|
+
...super.toJSON(),
|
|
327
|
+
remote: this.remote,
|
|
328
|
+
};
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* WAL error
|
|
333
|
+
*/
|
|
334
|
+
export class WALError extends SyncError {
|
|
335
|
+
constructor(message, cause) {
|
|
336
|
+
super(`WAL error: ${message}`, cause);
|
|
337
|
+
this.name = 'WALError';
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
// ============================================================================
|
|
341
|
+
// Storage Errors
|
|
342
|
+
// ============================================================================
|
|
343
|
+
/**
|
|
344
|
+
* Storage-related error
|
|
345
|
+
*/
|
|
346
|
+
export class StorageError extends YataScaleError {
|
|
347
|
+
constructor(message, cause) {
|
|
348
|
+
super(message, 'STORAGE_ERROR', cause);
|
|
349
|
+
this.name = 'StorageError';
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Storage I/O error
|
|
354
|
+
*/
|
|
355
|
+
export class StorageIOError extends StorageError {
|
|
356
|
+
path;
|
|
357
|
+
operation;
|
|
358
|
+
constructor(path, operation, cause) {
|
|
359
|
+
super(`Storage I/O error during ${operation} at ${path}`, cause);
|
|
360
|
+
this.path = path;
|
|
361
|
+
this.operation = operation;
|
|
362
|
+
this.name = 'StorageIOError';
|
|
363
|
+
}
|
|
364
|
+
toJSON() {
|
|
365
|
+
return {
|
|
366
|
+
...super.toJSON(),
|
|
367
|
+
path: this.path,
|
|
368
|
+
operation: this.operation,
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Storage corruption error
|
|
374
|
+
*/
|
|
375
|
+
export class StorageCorruptionError extends StorageError {
|
|
376
|
+
path;
|
|
377
|
+
constructor(path, details) {
|
|
378
|
+
super(`Storage corruption detected at ${path}${details ? `: ${details}` : ''}`);
|
|
379
|
+
this.path = path;
|
|
380
|
+
this.name = 'StorageCorruptionError';
|
|
381
|
+
}
|
|
382
|
+
toJSON() {
|
|
383
|
+
return {
|
|
384
|
+
...super.toJSON(),
|
|
385
|
+
path: this.path,
|
|
386
|
+
};
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* Compaction error
|
|
391
|
+
*/
|
|
392
|
+
export class CompactionError extends StorageError {
|
|
393
|
+
constructor(message, cause) {
|
|
394
|
+
super(`Compaction error: ${message}`, cause);
|
|
395
|
+
this.name = 'CompactionError';
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
// ============================================================================
|
|
399
|
+
// Entity Errors
|
|
400
|
+
// ============================================================================
|
|
401
|
+
/**
|
|
402
|
+
* Entity-related error
|
|
403
|
+
*/
|
|
404
|
+
export class EntityError extends YataScaleError {
|
|
405
|
+
entityId;
|
|
406
|
+
constructor(message, entityId, cause) {
|
|
407
|
+
super(message, 'ENTITY_ERROR', cause);
|
|
408
|
+
this.entityId = entityId;
|
|
409
|
+
this.name = 'EntityError';
|
|
410
|
+
}
|
|
411
|
+
toJSON() {
|
|
412
|
+
return {
|
|
413
|
+
...super.toJSON(),
|
|
414
|
+
entityId: this.entityId,
|
|
415
|
+
};
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
/**
|
|
419
|
+
* Entity not found error
|
|
420
|
+
*/
|
|
421
|
+
export class EntityNotFoundError extends EntityError {
|
|
422
|
+
constructor(entityId) {
|
|
423
|
+
super(`Entity not found: ${entityId}`, entityId);
|
|
424
|
+
this.name = 'EntityNotFoundError';
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
/**
|
|
428
|
+
* Entity already exists error
|
|
429
|
+
*/
|
|
430
|
+
export class EntityAlreadyExistsError extends EntityError {
|
|
431
|
+
constructor(entityId) {
|
|
432
|
+
super(`Entity already exists: ${entityId}`, entityId);
|
|
433
|
+
this.name = 'EntityAlreadyExistsError';
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
/**
|
|
437
|
+
* Entity validation error
|
|
438
|
+
*/
|
|
439
|
+
export class EntityValidationError extends EntityError {
|
|
440
|
+
violations;
|
|
441
|
+
constructor(entityId, violations) {
|
|
442
|
+
super(`Entity validation failed: ${violations.join(', ')}`, entityId);
|
|
443
|
+
this.violations = violations;
|
|
444
|
+
this.name = 'EntityValidationError';
|
|
445
|
+
}
|
|
446
|
+
toJSON() {
|
|
447
|
+
return {
|
|
448
|
+
...super.toJSON(),
|
|
449
|
+
violations: this.violations,
|
|
450
|
+
};
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
// ============================================================================
|
|
454
|
+
// Configuration Errors
|
|
455
|
+
// ============================================================================
|
|
456
|
+
/**
|
|
457
|
+
* Configuration error
|
|
458
|
+
*/
|
|
459
|
+
export class ConfigurationError extends YataScaleError {
|
|
460
|
+
constructor(message) {
|
|
461
|
+
super(message, 'CONFIGURATION_ERROR');
|
|
462
|
+
this.name = 'ConfigurationError';
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
/**
|
|
466
|
+
* Invalid configuration error
|
|
467
|
+
*/
|
|
468
|
+
export class InvalidConfigurationError extends ConfigurationError {
|
|
469
|
+
field;
|
|
470
|
+
reason;
|
|
471
|
+
constructor(field, reason) {
|
|
472
|
+
super(`Invalid configuration for '${field}': ${reason}`);
|
|
473
|
+
this.field = field;
|
|
474
|
+
this.reason = reason;
|
|
475
|
+
this.name = 'InvalidConfigurationError';
|
|
476
|
+
}
|
|
477
|
+
toJSON() {
|
|
478
|
+
return {
|
|
479
|
+
...super.toJSON(),
|
|
480
|
+
field: this.field,
|
|
481
|
+
reason: this.reason,
|
|
482
|
+
};
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
// ============================================================================
|
|
486
|
+
// Initialization Errors
|
|
487
|
+
// ============================================================================
|
|
488
|
+
/**
|
|
489
|
+
* Initialization error
|
|
490
|
+
*/
|
|
491
|
+
export class InitializationError extends YataScaleError {
|
|
492
|
+
constructor(message, cause) {
|
|
493
|
+
super(message, 'INITIALIZATION_ERROR', cause);
|
|
494
|
+
this.name = 'InitializationError';
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
/**
|
|
498
|
+
* Already initialized error
|
|
499
|
+
*/
|
|
500
|
+
export class AlreadyInitializedError extends InitializationError {
|
|
501
|
+
constructor() {
|
|
502
|
+
super('YataScale is already initialized');
|
|
503
|
+
this.name = 'AlreadyInitializedError';
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
/**
|
|
507
|
+
* Not initialized error
|
|
508
|
+
*/
|
|
509
|
+
export class NotInitializedError extends InitializationError {
|
|
510
|
+
constructor() {
|
|
511
|
+
super('YataScale is not initialized. Call initialize() first.');
|
|
512
|
+
this.name = 'NotInitializedError';
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @nahisaho/yata-scale - B+Tree Index
|
|
3
|
+
*
|
|
4
|
+
* B+Tree implementation for efficient range queries
|
|
5
|
+
*/
|
|
6
|
+
import type { BPlusTreeConfig, RangeOptions, IndexStats } from '../types.js';
|
|
7
|
+
/**
|
|
8
|
+
* B+Tree index for efficient key-value storage with range queries
|
|
9
|
+
*/
|
|
10
|
+
export declare class BPlusTreeIndex<K extends string | number, V> {
|
|
11
|
+
private root;
|
|
12
|
+
private readonly order;
|
|
13
|
+
private entryCount;
|
|
14
|
+
private readonly compare;
|
|
15
|
+
constructor(config?: Partial<BPlusTreeConfig>);
|
|
16
|
+
/**
|
|
17
|
+
* Create a new leaf node
|
|
18
|
+
*/
|
|
19
|
+
private createLeafNode;
|
|
20
|
+
/**
|
|
21
|
+
* Create a new internal node
|
|
22
|
+
*/
|
|
23
|
+
private createInternalNode;
|
|
24
|
+
/**
|
|
25
|
+
* Insert a key-value pair
|
|
26
|
+
*/
|
|
27
|
+
insert(key: K, value: V): void;
|
|
28
|
+
/**
|
|
29
|
+
* Insert into a node, return split result if node was split
|
|
30
|
+
*/
|
|
31
|
+
private insertInNode;
|
|
32
|
+
/**
|
|
33
|
+
* Insert into a leaf node
|
|
34
|
+
*/
|
|
35
|
+
private insertInLeaf;
|
|
36
|
+
/**
|
|
37
|
+
* Insert into an internal node
|
|
38
|
+
*/
|
|
39
|
+
private insertInInternal;
|
|
40
|
+
/**
|
|
41
|
+
* Split a leaf node
|
|
42
|
+
*/
|
|
43
|
+
private splitLeaf;
|
|
44
|
+
/**
|
|
45
|
+
* Split an internal node
|
|
46
|
+
*/
|
|
47
|
+
private splitInternal;
|
|
48
|
+
/**
|
|
49
|
+
* Find child index for a key
|
|
50
|
+
*/
|
|
51
|
+
private findChildIndex;
|
|
52
|
+
/**
|
|
53
|
+
* Get a value by key
|
|
54
|
+
*/
|
|
55
|
+
get(key: K): V | undefined;
|
|
56
|
+
/**
|
|
57
|
+
* Delete a key
|
|
58
|
+
*/
|
|
59
|
+
delete(key: K): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Find the leaf node for a key
|
|
62
|
+
*/
|
|
63
|
+
private findLeaf;
|
|
64
|
+
/**
|
|
65
|
+
* Range query
|
|
66
|
+
*/
|
|
67
|
+
range(start: K, end: K, options?: RangeOptions): Generator<[K, V]>;
|
|
68
|
+
/**
|
|
69
|
+
* Forward range iteration
|
|
70
|
+
*/
|
|
71
|
+
private rangeForward;
|
|
72
|
+
/**
|
|
73
|
+
* Get all entries
|
|
74
|
+
*/
|
|
75
|
+
entries(): Generator<[K, V]>;
|
|
76
|
+
/**
|
|
77
|
+
* Clear all entries
|
|
78
|
+
*/
|
|
79
|
+
clear(): void;
|
|
80
|
+
/**
|
|
81
|
+
* Get entry count
|
|
82
|
+
*/
|
|
83
|
+
get size(): number;
|
|
84
|
+
/**
|
|
85
|
+
* Check if empty
|
|
86
|
+
*/
|
|
87
|
+
get isEmpty(): boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Get index statistics
|
|
90
|
+
*/
|
|
91
|
+
getStats(): IndexStats;
|
|
92
|
+
/**
|
|
93
|
+
* Estimate memory size
|
|
94
|
+
*/
|
|
95
|
+
private estimateSize;
|
|
96
|
+
/**
|
|
97
|
+
* Get tree depth
|
|
98
|
+
*/
|
|
99
|
+
private getDepth;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=BPlusTreeIndex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BPlusTreeIndex.d.ts","sourceRoot":"","sources":["../../src/index/BPlusTreeIndex.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAY7E;;GAEG;AACH,qBAAa,cAAc,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC;IACtD,OAAO,CAAC,IAAI,CAAsB;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;gBAErC,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;IAY7C;;OAEG;IACH,OAAO,CAAC,cAAc;IAQtB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAQ1B;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAc9B;;OAEG;IACH,OAAO,CAAC,YAAY;IAsBpB;;OAEG;IACH,OAAO,CAAC,YAAY;IA8BpB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkBxB;;OAEG;IACH,OAAO,CAAC,SAAS;IAmBjB;;OAEG;IACH,OAAO,CAAC,aAAa;IAiBrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAQtB;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAW1B;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAkBvB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAWhB;;OAEG;IACF,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAmBnE;;OAEG;IACH,OAAO,CAAE,YAAY;IAqCrB;;OAEG;IACF,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAgB7B;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,QAAQ,IAAI,UAAU;IAYtB;;OAEG;IACH,OAAO,CAAC,YAAY;IAKpB;;OAEG;IACH,OAAO,CAAC,QAAQ;CAWjB"}
|