@soulcraft/brainy 0.40.0 → 0.43.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.
- package/README.md +605 -194
- package/dist/augmentations/conduitAugmentations.js +1158 -0
- package/dist/augmentations/conduitAugmentations.js.map +1 -0
- package/dist/augmentations/memoryAugmentations.d.ts +2 -0
- package/dist/augmentations/memoryAugmentations.d.ts.map +1 -1
- package/dist/augmentations/memoryAugmentations.js +270 -0
- package/dist/augmentations/memoryAugmentations.js.map +1 -0
- package/dist/augmentations/serverSearchAugmentations.js +531 -0
- package/dist/augmentations/serverSearchAugmentations.js.map +1 -0
- package/dist/browserFramework.d.ts +15 -0
- package/dist/demo.d.ts +106 -0
- package/dist/examples/basicUsage.js +118 -0
- package/dist/examples/basicUsage.js.map +1 -0
- package/dist/hnsw/distributedSearch.js +452 -0
- package/dist/hnsw/distributedSearch.js.map +1 -0
- package/dist/hnsw/hnswIndex.js +602 -0
- package/dist/hnsw/hnswIndex.js.map +1 -0
- package/dist/hnsw/hnswIndexOptimized.js +471 -0
- package/dist/hnsw/hnswIndexOptimized.js.map +1 -0
- package/dist/hnsw/optimizedHNSWIndex.js +313 -0
- package/dist/hnsw/optimizedHNSWIndex.js.map +1 -0
- package/dist/hnsw/partitionedHNSWIndex.js +304 -0
- package/dist/hnsw/partitionedHNSWIndex.js.map +1 -0
- package/dist/hnsw/scaledHNSWSystem.js +559 -0
- package/dist/hnsw/scaledHNSWSystem.js.map +1 -0
- package/dist/index.d.ts +5 -3
- package/dist/index.js +81 -0
- package/dist/mcp/brainyMCPAdapter.js +142 -0
- package/dist/mcp/brainyMCPAdapter.js.map +1 -0
- package/dist/mcp/brainyMCPService.js +248 -0
- package/dist/mcp/brainyMCPService.js.map +1 -0
- package/dist/mcp/index.js +17 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/mcpAugmentationToolset.js +180 -0
- package/dist/mcp/mcpAugmentationToolset.js.map +1 -0
- package/dist/storage/adapters/baseStorageAdapter.js +349 -0
- package/dist/storage/adapters/baseStorageAdapter.js.map +1 -0
- package/dist/storage/adapters/batchS3Operations.js +287 -0
- package/dist/storage/adapters/batchS3Operations.js.map +1 -0
- package/dist/storage/adapters/fileSystemStorage.js +846 -0
- package/dist/storage/adapters/fileSystemStorage.js.map +1 -0
- package/dist/storage/adapters/memoryStorage.js +532 -0
- package/dist/storage/adapters/memoryStorage.js.map +1 -0
- package/dist/storage/adapters/opfsStorage.d.ts.map +1 -1
- package/dist/storage/adapters/opfsStorage.js +1118 -0
- package/dist/storage/adapters/opfsStorage.js.map +1 -0
- package/dist/storage/adapters/optimizedS3Search.d.ts +79 -0
- package/dist/storage/adapters/optimizedS3Search.d.ts.map +1 -0
- package/dist/storage/adapters/optimizedS3Search.js +248 -0
- package/dist/storage/adapters/optimizedS3Search.js.map +1 -0
- package/dist/storage/adapters/s3CompatibleStorage.d.ts +21 -0
- package/dist/storage/adapters/s3CompatibleStorage.d.ts.map +1 -1
- package/dist/storage/adapters/s3CompatibleStorage.js +2026 -0
- package/dist/storage/adapters/s3CompatibleStorage.js.map +1 -0
- package/dist/storage/baseStorage.d.ts +1 -0
- package/dist/storage/baseStorage.d.ts.map +1 -1
- package/dist/storage/baseStorage.js +603 -0
- package/dist/storage/baseStorage.js.map +1 -0
- package/dist/storage/cacheManager.js +1306 -0
- package/dist/storage/cacheManager.js.map +1 -0
- package/dist/storage/enhancedCacheManager.js +520 -0
- package/dist/storage/enhancedCacheManager.js.map +1 -0
- package/dist/storage/readOnlyOptimizations.js +425 -0
- package/dist/storage/readOnlyOptimizations.js.map +1 -0
- package/dist/storage/storageFactory.d.ts +0 -1
- package/dist/storage/storageFactory.d.ts.map +1 -1
- package/dist/storage/storageFactory.js +227 -0
- package/dist/storage/storageFactory.js.map +1 -0
- package/dist/types/augmentations.js +16 -0
- package/dist/types/augmentations.js.map +1 -0
- package/dist/types/brainyDataInterface.js +8 -0
- package/dist/types/brainyDataInterface.js.map +1 -0
- package/dist/types/distributedTypes.js +6 -0
- package/dist/types/distributedTypes.js.map +1 -0
- package/dist/types/fileSystemTypes.js +8 -0
- package/dist/types/fileSystemTypes.js.map +1 -0
- package/dist/types/graphTypes.js +247 -0
- package/dist/types/graphTypes.js.map +1 -0
- package/dist/types/mcpTypes.js +22 -0
- package/dist/types/mcpTypes.js.map +1 -0
- package/dist/types/paginationTypes.js +5 -0
- package/dist/types/paginationTypes.js.map +1 -0
- package/dist/types/pipelineTypes.js +7 -0
- package/dist/types/pipelineTypes.js.map +1 -0
- package/dist/types/tensorflowTypes.js +6 -0
- package/dist/types/tensorflowTypes.js.map +1 -0
- package/dist/unified.js +52 -128048
- package/dist/utils/autoConfiguration.js +341 -0
- package/dist/utils/autoConfiguration.js.map +1 -0
- package/dist/utils/cacheAutoConfig.js +261 -0
- package/dist/utils/cacheAutoConfig.js.map +1 -0
- package/dist/utils/crypto.js +45 -0
- package/dist/utils/crypto.js.map +1 -0
- package/dist/utils/distance.js +239 -0
- package/dist/utils/distance.js.map +1 -0
- package/dist/utils/embedding.d.ts.map +1 -1
- package/dist/utils/embedding.js +702 -0
- package/dist/utils/embedding.js.map +1 -0
- package/dist/utils/environment.js +75 -0
- package/dist/utils/environment.js.map +1 -0
- package/dist/utils/fieldNameTracking.js +90 -0
- package/dist/utils/fieldNameTracking.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +8 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/jsonProcessing.js +179 -0
- package/dist/utils/jsonProcessing.js.map +1 -0
- package/dist/utils/logger.d.ts +45 -92
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +129 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/operationUtils.js +126 -0
- package/dist/utils/operationUtils.js.map +1 -0
- package/dist/utils/robustModelLoader.d.ts +14 -0
- package/dist/utils/robustModelLoader.d.ts.map +1 -1
- package/dist/utils/robustModelLoader.js +537 -0
- package/dist/utils/robustModelLoader.js.map +1 -0
- package/dist/utils/searchCache.js +248 -0
- package/dist/utils/searchCache.js.map +1 -0
- package/dist/utils/statistics.js +25 -0
- package/dist/utils/statistics.js.map +1 -0
- package/dist/utils/statisticsCollector.js +224 -0
- package/dist/utils/statisticsCollector.js.map +1 -0
- package/dist/utils/textEncoding.js +309 -0
- package/dist/utils/textEncoding.js.map +1 -0
- package/dist/utils/typeUtils.js +40 -0
- package/dist/utils/typeUtils.js.map +1 -0
- package/dist/utils/version.d.ts +15 -3
- package/dist/utils/version.d.ts.map +1 -1
- package/dist/utils/version.js +24 -0
- package/dist/utils/version.js.map +1 -0
- package/dist/utils/workerUtils.js +458 -0
- package/dist/utils/workerUtils.js.map +1 -0
- package/package.json +23 -15
- package/dist/brainy.js +0 -90220
- package/dist/brainy.min.js +0 -12511
- package/dist/patched-platform-node.d.ts +0 -17
- package/dist/statistics/statisticsManager.d.ts +0 -121
- package/dist/storage/fileSystemStorage.d.ts +0 -73
- package/dist/storage/fileSystemStorage.d.ts.map +0 -1
- package/dist/storage/opfsStorage.d.ts +0 -236
- package/dist/storage/opfsStorage.d.ts.map +0 -1
- package/dist/storage/s3CompatibleStorage.d.ts +0 -157
- package/dist/storage/s3CompatibleStorage.d.ts.map +0 -1
- package/dist/testing/prettyReporter.d.ts +0 -23
- package/dist/testing/prettySummaryReporter.d.ts +0 -22
- package/dist/unified.min.js +0 -16153
- package/dist/utils/environmentDetection.d.ts +0 -47
- package/dist/utils/environmentDetection.d.ts.map +0 -1
- package/dist/utils/tensorflowUtils.d.ts +0 -17
- package/dist/utils/tensorflowUtils.d.ts.map +0 -1
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read-Only Storage Optimizations for Production Deployments
|
|
3
|
+
* Implements compression, memory-mapping, and pre-built index segments
|
|
4
|
+
*/
|
|
5
|
+
// Compression types supported
|
|
6
|
+
var CompressionType;
|
|
7
|
+
(function (CompressionType) {
|
|
8
|
+
CompressionType["NONE"] = "none";
|
|
9
|
+
CompressionType["GZIP"] = "gzip";
|
|
10
|
+
CompressionType["BROTLI"] = "brotli";
|
|
11
|
+
CompressionType["QUANTIZATION"] = "quantization";
|
|
12
|
+
CompressionType["HYBRID"] = "hybrid";
|
|
13
|
+
})(CompressionType || (CompressionType = {}));
|
|
14
|
+
// Vector quantization methods
|
|
15
|
+
var QuantizationType;
|
|
16
|
+
(function (QuantizationType) {
|
|
17
|
+
QuantizationType["SCALAR"] = "scalar";
|
|
18
|
+
QuantizationType["PRODUCT"] = "product";
|
|
19
|
+
QuantizationType["BINARY"] = "binary"; // Binary quantization
|
|
20
|
+
})(QuantizationType || (QuantizationType = {}));
|
|
21
|
+
/**
|
|
22
|
+
* Read-only storage optimizations for high-performance production deployments
|
|
23
|
+
*/
|
|
24
|
+
export class ReadOnlyOptimizations {
|
|
25
|
+
constructor(config = {}) {
|
|
26
|
+
this.segments = new Map();
|
|
27
|
+
this.compressionStats = {
|
|
28
|
+
originalSize: 0,
|
|
29
|
+
compressedSize: 0,
|
|
30
|
+
compressionRatio: 0,
|
|
31
|
+
decompressionTime: 0
|
|
32
|
+
};
|
|
33
|
+
// Quantization codebooks for vector compression
|
|
34
|
+
this.quantizationCodebooks = new Map();
|
|
35
|
+
// Memory-mapped buffers for large datasets
|
|
36
|
+
this.memoryMappedBuffers = new Map();
|
|
37
|
+
this.config = {
|
|
38
|
+
prebuiltIndexPath: '',
|
|
39
|
+
memoryMapped: true,
|
|
40
|
+
compression: {
|
|
41
|
+
vectorCompression: CompressionType.QUANTIZATION,
|
|
42
|
+
metadataCompression: CompressionType.GZIP,
|
|
43
|
+
quantizationType: QuantizationType.SCALAR,
|
|
44
|
+
quantizationBits: 8,
|
|
45
|
+
compressionLevel: 6
|
|
46
|
+
},
|
|
47
|
+
segmentSize: 10000, // 10k nodes per segment
|
|
48
|
+
prefetchSegments: 3,
|
|
49
|
+
cacheIndexInMemory: false,
|
|
50
|
+
...config
|
|
51
|
+
};
|
|
52
|
+
if (config.compression) {
|
|
53
|
+
this.config.compression = { ...this.config.compression, ...config.compression };
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Compress vector data using specified compression method
|
|
58
|
+
*/
|
|
59
|
+
async compressVector(vector, segmentId) {
|
|
60
|
+
const startTime = Date.now();
|
|
61
|
+
let compressedData;
|
|
62
|
+
switch (this.config.compression.vectorCompression) {
|
|
63
|
+
case CompressionType.QUANTIZATION:
|
|
64
|
+
compressedData = await this.quantizeVector(vector, segmentId);
|
|
65
|
+
break;
|
|
66
|
+
case CompressionType.GZIP:
|
|
67
|
+
const gzipBuffer = new Float32Array(vector).buffer;
|
|
68
|
+
compressedData = await this.gzipCompress(gzipBuffer.slice(0));
|
|
69
|
+
break;
|
|
70
|
+
case CompressionType.BROTLI:
|
|
71
|
+
const brotliBuffer = new Float32Array(vector).buffer;
|
|
72
|
+
compressedData = await this.brotliCompress(brotliBuffer.slice(0));
|
|
73
|
+
break;
|
|
74
|
+
case CompressionType.HYBRID:
|
|
75
|
+
// First quantize, then compress
|
|
76
|
+
const quantized = await this.quantizeVector(vector, segmentId);
|
|
77
|
+
compressedData = await this.gzipCompress(quantized);
|
|
78
|
+
break;
|
|
79
|
+
default:
|
|
80
|
+
const defaultBuffer = new Float32Array(vector).buffer;
|
|
81
|
+
compressedData = defaultBuffer.slice(0);
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
// Update compression statistics
|
|
85
|
+
const originalSize = vector.length * 4; // 4 bytes per float32
|
|
86
|
+
this.compressionStats.originalSize += originalSize;
|
|
87
|
+
this.compressionStats.compressedSize += compressedData.byteLength;
|
|
88
|
+
this.compressionStats.decompressionTime += Date.now() - startTime;
|
|
89
|
+
this.updateCompressionRatio();
|
|
90
|
+
return compressedData;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Decompress vector data
|
|
94
|
+
*/
|
|
95
|
+
async decompressVector(compressedData, segmentId, originalDimension) {
|
|
96
|
+
switch (this.config.compression.vectorCompression) {
|
|
97
|
+
case CompressionType.QUANTIZATION:
|
|
98
|
+
return this.dequantizeVector(compressedData, segmentId, originalDimension);
|
|
99
|
+
case CompressionType.GZIP:
|
|
100
|
+
const gzipDecompressed = await this.gzipDecompress(compressedData);
|
|
101
|
+
return Array.from(new Float32Array(gzipDecompressed));
|
|
102
|
+
case CompressionType.BROTLI:
|
|
103
|
+
const brotliDecompressed = await this.brotliDecompress(compressedData);
|
|
104
|
+
return Array.from(new Float32Array(brotliDecompressed));
|
|
105
|
+
case CompressionType.HYBRID:
|
|
106
|
+
const gzipStage = await this.gzipDecompress(compressedData);
|
|
107
|
+
return this.dequantizeVector(gzipStage, segmentId, originalDimension);
|
|
108
|
+
default:
|
|
109
|
+
return Array.from(new Float32Array(compressedData));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Scalar quantization of vectors to 8-bit integers
|
|
114
|
+
*/
|
|
115
|
+
async quantizeVector(vector, segmentId) {
|
|
116
|
+
let codebook = this.quantizationCodebooks.get(segmentId);
|
|
117
|
+
if (!codebook) {
|
|
118
|
+
// Create codebook (min/max values for scaling)
|
|
119
|
+
const min = Math.min(...vector);
|
|
120
|
+
const max = Math.max(...vector);
|
|
121
|
+
codebook = new Float32Array([min, max]);
|
|
122
|
+
this.quantizationCodebooks.set(segmentId, codebook);
|
|
123
|
+
}
|
|
124
|
+
const [min, max] = codebook;
|
|
125
|
+
const scale = (max - min) / 255; // 8-bit quantization
|
|
126
|
+
const quantized = new Uint8Array(vector.length);
|
|
127
|
+
for (let i = 0; i < vector.length; i++) {
|
|
128
|
+
quantized[i] = Math.round((vector[i] - min) / scale);
|
|
129
|
+
}
|
|
130
|
+
// Store codebook with quantized data
|
|
131
|
+
const result = new ArrayBuffer(quantized.byteLength + codebook.byteLength);
|
|
132
|
+
const resultView = new Uint8Array(result);
|
|
133
|
+
// First 8 bytes: codebook (min, max as float32)
|
|
134
|
+
resultView.set(new Uint8Array(codebook.buffer), 0);
|
|
135
|
+
// Remaining bytes: quantized vector
|
|
136
|
+
resultView.set(quantized, codebook.byteLength);
|
|
137
|
+
return result;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Dequantize 8-bit vectors back to float32
|
|
141
|
+
*/
|
|
142
|
+
dequantizeVector(quantizedData, segmentId, dimension) {
|
|
143
|
+
const dataView = new Uint8Array(quantizedData);
|
|
144
|
+
// Extract codebook (first 8 bytes)
|
|
145
|
+
const codebookBytes = dataView.slice(0, 8);
|
|
146
|
+
const codebook = new Float32Array(codebookBytes.buffer);
|
|
147
|
+
const [min, max] = codebook;
|
|
148
|
+
// Extract quantized vector
|
|
149
|
+
const quantized = dataView.slice(8);
|
|
150
|
+
const scale = (max - min) / 255;
|
|
151
|
+
const result = [];
|
|
152
|
+
for (let i = 0; i < dimension; i++) {
|
|
153
|
+
result[i] = min + quantized[i] * scale;
|
|
154
|
+
}
|
|
155
|
+
return result;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* GZIP compression using browser/Node.js APIs
|
|
159
|
+
*/
|
|
160
|
+
async gzipCompress(data) {
|
|
161
|
+
if (typeof CompressionStream !== 'undefined') {
|
|
162
|
+
// Browser environment
|
|
163
|
+
const stream = new CompressionStream('gzip');
|
|
164
|
+
const writer = stream.writable.getWriter();
|
|
165
|
+
const reader = stream.readable.getReader();
|
|
166
|
+
writer.write(new Uint8Array(data));
|
|
167
|
+
writer.close();
|
|
168
|
+
const chunks = [];
|
|
169
|
+
let result = await reader.read();
|
|
170
|
+
while (!result.done) {
|
|
171
|
+
chunks.push(result.value);
|
|
172
|
+
result = await reader.read();
|
|
173
|
+
}
|
|
174
|
+
// Combine chunks
|
|
175
|
+
const totalLength = chunks.reduce((sum, chunk) => sum + chunk.length, 0);
|
|
176
|
+
const combined = new Uint8Array(totalLength);
|
|
177
|
+
let offset = 0;
|
|
178
|
+
for (const chunk of chunks) {
|
|
179
|
+
combined.set(chunk, offset);
|
|
180
|
+
offset += chunk.length;
|
|
181
|
+
}
|
|
182
|
+
return combined.buffer;
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
// Node.js environment - would use zlib
|
|
186
|
+
console.warn('GZIP compression not available, returning original data');
|
|
187
|
+
return data;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* GZIP decompression
|
|
192
|
+
*/
|
|
193
|
+
async gzipDecompress(compressedData) {
|
|
194
|
+
if (typeof DecompressionStream !== 'undefined') {
|
|
195
|
+
// Browser environment
|
|
196
|
+
const stream = new DecompressionStream('gzip');
|
|
197
|
+
const writer = stream.writable.getWriter();
|
|
198
|
+
const reader = stream.readable.getReader();
|
|
199
|
+
writer.write(new Uint8Array(compressedData));
|
|
200
|
+
writer.close();
|
|
201
|
+
const chunks = [];
|
|
202
|
+
let result = await reader.read();
|
|
203
|
+
while (!result.done) {
|
|
204
|
+
chunks.push(result.value);
|
|
205
|
+
result = await reader.read();
|
|
206
|
+
}
|
|
207
|
+
// Combine chunks
|
|
208
|
+
const totalLength = chunks.reduce((sum, chunk) => sum + chunk.length, 0);
|
|
209
|
+
const combined = new Uint8Array(totalLength);
|
|
210
|
+
let offset = 0;
|
|
211
|
+
for (const chunk of chunks) {
|
|
212
|
+
combined.set(chunk, offset);
|
|
213
|
+
offset += chunk.length;
|
|
214
|
+
}
|
|
215
|
+
return combined.buffer;
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
console.warn('GZIP decompression not available, returning original data');
|
|
219
|
+
return compressedData;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Brotli compression (placeholder - similar to GZIP)
|
|
224
|
+
*/
|
|
225
|
+
async brotliCompress(data) {
|
|
226
|
+
// Would implement Brotli compression here
|
|
227
|
+
console.warn('Brotli compression not implemented, falling back to GZIP');
|
|
228
|
+
return this.gzipCompress(data);
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Brotli decompression (placeholder)
|
|
232
|
+
*/
|
|
233
|
+
async brotliDecompress(compressedData) {
|
|
234
|
+
console.warn('Brotli decompression not implemented, falling back to GZIP');
|
|
235
|
+
return this.gzipDecompress(compressedData);
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Create prebuilt index segments for faster loading
|
|
239
|
+
*/
|
|
240
|
+
async createPrebuiltSegments(nodes, outputPath) {
|
|
241
|
+
const segments = [];
|
|
242
|
+
const segmentSize = this.config.segmentSize;
|
|
243
|
+
console.log(`Creating ${Math.ceil(nodes.length / segmentSize)} prebuilt segments`);
|
|
244
|
+
for (let i = 0; i < nodes.length; i += segmentSize) {
|
|
245
|
+
const segmentNodes = nodes.slice(i, i + segmentSize);
|
|
246
|
+
const segmentId = `segment_${Math.floor(i / segmentSize)}`;
|
|
247
|
+
const segment = {
|
|
248
|
+
id: segmentId,
|
|
249
|
+
nodeCount: segmentNodes.length,
|
|
250
|
+
vectorDimension: segmentNodes[0]?.vector.length || 0,
|
|
251
|
+
compression: this.config.compression.vectorCompression,
|
|
252
|
+
localPath: `${outputPath}/${segmentId}.dat`,
|
|
253
|
+
loadedInMemory: false,
|
|
254
|
+
lastAccessed: 0
|
|
255
|
+
};
|
|
256
|
+
// Compress and serialize segment data
|
|
257
|
+
const compressedData = await this.compressSegment(segmentNodes);
|
|
258
|
+
// In a real implementation, you would write this to disk/S3
|
|
259
|
+
console.log(`Created segment ${segmentId} with ${compressedData.byteLength} bytes`);
|
|
260
|
+
segments.push(segment);
|
|
261
|
+
this.segments.set(segmentId, segment);
|
|
262
|
+
}
|
|
263
|
+
return segments;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Compress an entire segment of nodes
|
|
267
|
+
*/
|
|
268
|
+
async compressSegment(nodes) {
|
|
269
|
+
const serialized = JSON.stringify(nodes.map(node => ({
|
|
270
|
+
id: node.id,
|
|
271
|
+
vector: node.vector,
|
|
272
|
+
connections: this.serializeConnections(node.connections)
|
|
273
|
+
})));
|
|
274
|
+
const encoder = new TextEncoder();
|
|
275
|
+
const data = encoder.encode(serialized);
|
|
276
|
+
// Apply metadata compression
|
|
277
|
+
switch (this.config.compression.metadataCompression) {
|
|
278
|
+
case CompressionType.GZIP:
|
|
279
|
+
return this.gzipCompress(data.buffer.slice(0));
|
|
280
|
+
case CompressionType.BROTLI:
|
|
281
|
+
return this.brotliCompress(data.buffer.slice(0));
|
|
282
|
+
default:
|
|
283
|
+
return data.buffer.slice(0);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Load a segment from storage with caching
|
|
288
|
+
*/
|
|
289
|
+
async loadSegment(segmentId) {
|
|
290
|
+
const segment = this.segments.get(segmentId);
|
|
291
|
+
if (!segment) {
|
|
292
|
+
throw new Error(`Segment ${segmentId} not found`);
|
|
293
|
+
}
|
|
294
|
+
segment.lastAccessed = Date.now();
|
|
295
|
+
// Check if segment is already loaded in memory
|
|
296
|
+
if (segment.loadedInMemory && this.memoryMappedBuffers.has(segmentId)) {
|
|
297
|
+
return this.deserializeSegment(this.memoryMappedBuffers.get(segmentId));
|
|
298
|
+
}
|
|
299
|
+
// Load from storage (S3, disk, etc.)
|
|
300
|
+
const compressedData = await this.loadSegmentFromStorage(segment);
|
|
301
|
+
// Cache in memory if configured
|
|
302
|
+
if (this.config.cacheIndexInMemory) {
|
|
303
|
+
this.memoryMappedBuffers.set(segmentId, compressedData);
|
|
304
|
+
segment.loadedInMemory = true;
|
|
305
|
+
}
|
|
306
|
+
return this.deserializeSegment(compressedData);
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Load segment data from storage
|
|
310
|
+
*/
|
|
311
|
+
async loadSegmentFromStorage(segment) {
|
|
312
|
+
// This would integrate with your S3 storage adapter
|
|
313
|
+
// For now, return a placeholder
|
|
314
|
+
console.log(`Loading segment ${segment.id} from storage`);
|
|
315
|
+
return new ArrayBuffer(0);
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Deserialize and decompress segment data
|
|
319
|
+
*/
|
|
320
|
+
async deserializeSegment(compressedData) {
|
|
321
|
+
// Decompress metadata
|
|
322
|
+
let decompressed;
|
|
323
|
+
switch (this.config.compression.metadataCompression) {
|
|
324
|
+
case CompressionType.GZIP:
|
|
325
|
+
decompressed = await this.gzipDecompress(compressedData);
|
|
326
|
+
break;
|
|
327
|
+
case CompressionType.BROTLI:
|
|
328
|
+
decompressed = await this.brotliDecompress(compressedData);
|
|
329
|
+
break;
|
|
330
|
+
default:
|
|
331
|
+
decompressed = compressedData;
|
|
332
|
+
break;
|
|
333
|
+
}
|
|
334
|
+
// Parse JSON
|
|
335
|
+
const decoder = new TextDecoder();
|
|
336
|
+
const jsonStr = decoder.decode(decompressed);
|
|
337
|
+
const parsed = JSON.parse(jsonStr);
|
|
338
|
+
// Reconstruct HNSWNoun objects
|
|
339
|
+
return parsed.map((item) => ({
|
|
340
|
+
id: item.id,
|
|
341
|
+
vector: item.vector,
|
|
342
|
+
connections: this.deserializeConnections(item.connections)
|
|
343
|
+
}));
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Serialize connections Map for storage
|
|
347
|
+
*/
|
|
348
|
+
serializeConnections(connections) {
|
|
349
|
+
const result = {};
|
|
350
|
+
for (const [level, nodeIds] of connections.entries()) {
|
|
351
|
+
result[level.toString()] = Array.from(nodeIds);
|
|
352
|
+
}
|
|
353
|
+
return result;
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Deserialize connections from storage format
|
|
357
|
+
*/
|
|
358
|
+
deserializeConnections(serialized) {
|
|
359
|
+
const result = new Map();
|
|
360
|
+
for (const [levelStr, nodeIds] of Object.entries(serialized)) {
|
|
361
|
+
result.set(parseInt(levelStr), new Set(nodeIds));
|
|
362
|
+
}
|
|
363
|
+
return result;
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Prefetch segments based on access patterns
|
|
367
|
+
*/
|
|
368
|
+
async prefetchSegments(currentSegmentId) {
|
|
369
|
+
const segment = this.segments.get(currentSegmentId);
|
|
370
|
+
if (!segment)
|
|
371
|
+
return;
|
|
372
|
+
// Simple prefetching strategy - load adjacent segments
|
|
373
|
+
const segmentNumber = parseInt(currentSegmentId.split('_')[1]);
|
|
374
|
+
const toPrefetch = [];
|
|
375
|
+
for (let i = 1; i <= this.config.prefetchSegments; i++) {
|
|
376
|
+
const nextId = `segment_${segmentNumber + i}`;
|
|
377
|
+
const prevId = `segment_${segmentNumber - i}`;
|
|
378
|
+
if (this.segments.has(nextId) && !this.memoryMappedBuffers.has(nextId)) {
|
|
379
|
+
toPrefetch.push(nextId);
|
|
380
|
+
}
|
|
381
|
+
if (this.segments.has(prevId) && !this.memoryMappedBuffers.has(prevId)) {
|
|
382
|
+
toPrefetch.push(prevId);
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
// Prefetch in background
|
|
386
|
+
for (const segmentId of toPrefetch) {
|
|
387
|
+
this.loadSegment(segmentId).catch(error => {
|
|
388
|
+
console.warn(`Failed to prefetch segment ${segmentId}:`, error);
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Update compression statistics
|
|
394
|
+
*/
|
|
395
|
+
updateCompressionRatio() {
|
|
396
|
+
if (this.compressionStats.originalSize > 0) {
|
|
397
|
+
this.compressionStats.compressionRatio =
|
|
398
|
+
this.compressionStats.compressedSize / this.compressionStats.originalSize;
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* Get compression statistics
|
|
403
|
+
*/
|
|
404
|
+
getCompressionStats() {
|
|
405
|
+
const memoryUsage = Array.from(this.memoryMappedBuffers.values())
|
|
406
|
+
.reduce((sum, buffer) => sum + buffer.byteLength, 0);
|
|
407
|
+
return {
|
|
408
|
+
...this.compressionStats,
|
|
409
|
+
segmentCount: this.segments.size,
|
|
410
|
+
memoryUsage
|
|
411
|
+
};
|
|
412
|
+
}
|
|
413
|
+
/**
|
|
414
|
+
* Cleanup memory-mapped buffers
|
|
415
|
+
*/
|
|
416
|
+
cleanup() {
|
|
417
|
+
this.memoryMappedBuffers.clear();
|
|
418
|
+
this.quantizationCodebooks.clear();
|
|
419
|
+
// Mark all segments as not loaded
|
|
420
|
+
for (const segment of this.segments.values()) {
|
|
421
|
+
segment.loadedInMemory = false;
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
//# sourceMappingURL=readOnlyOptimizations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readOnlyOptimizations.js","sourceRoot":"","sources":["../../src/storage/readOnlyOptimizations.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,8BAA8B;AAC9B,IAAK,eAMJ;AAND,WAAK,eAAe;IAClB,gCAAa,CAAA;IACb,gCAAa,CAAA;IACb,oCAAiB,CAAA;IACjB,gDAA6B,CAAA;IAC7B,oCAAiB,CAAA;AACnB,CAAC,EANI,eAAe,KAAf,eAAe,QAMnB;AAED,8BAA8B;AAC9B,IAAK,gBAIJ;AAJD,WAAK,gBAAgB;IACnB,qCAAiB,CAAA;IACjB,uCAAmB,CAAA;IACnB,qCAAiB,CAAA,CAAO,sBAAsB;AAChD,CAAC,EAJI,gBAAgB,KAAhB,gBAAgB,QAIpB;AA8BD;;GAEG;AACH,MAAM,OAAO,qBAAqB;IAgBhC,YAAY,SAAkC,EAAE;QAdxC,aAAQ,GAA8B,IAAI,GAAG,EAAE,CAAA;QAC/C,qBAAgB,GAAG;YACzB,YAAY,EAAE,CAAC;YACf,cAAc,EAAE,CAAC;YACjB,gBAAgB,EAAE,CAAC;YACnB,iBAAiB,EAAE,CAAC;SACrB,CAAA;QAED,gDAAgD;QACxC,0BAAqB,GAA8B,IAAI,GAAG,EAAE,CAAA;QAEpE,2CAA2C;QACnC,wBAAmB,GAA6B,IAAI,GAAG,EAAE,CAAA;QAG/D,IAAI,CAAC,MAAM,GAAG;YACZ,iBAAiB,EAAE,EAAE;YACrB,YAAY,EAAE,IAAI;YAClB,WAAW,EAAE;gBACX,iBAAiB,EAAE,eAAe,CAAC,YAAY;gBAC/C,mBAAmB,EAAE,eAAe,CAAC,IAAI;gBACzC,gBAAgB,EAAE,gBAAgB,CAAC,MAAM;gBACzC,gBAAgB,EAAE,CAAC;gBACnB,gBAAgB,EAAE,CAAC;aACpB;YACD,WAAW,EAAE,KAAK,EAAE,wBAAwB;YAC5C,gBAAgB,EAAE,CAAC;YACnB,kBAAkB,EAAE,KAAK;YACzB,GAAG,MAAM;SACV,CAAA;QAED,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,WAAW,EAAE,CAAA;QACjF,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,cAAc,CAAC,MAAc,EAAE,SAAiB;QAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC5B,IAAI,cAA2B,CAAA;QAE/B,QAAQ,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;YAClD,KAAK,eAAe,CAAC,YAAY;gBAC/B,cAAc,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;gBAC7D,MAAK;YAEP,KAAK,eAAe,CAAC,IAAI;gBACvB,MAAM,UAAU,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,MAAM,CAAA;gBAClD,cAAc,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC7D,MAAK;YAEP,KAAK,eAAe,CAAC,MAAM;gBACzB,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,MAAM,CAAA;gBACpD,cAAc,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;gBACjE,MAAK;YAEP,KAAK,eAAe,CAAC,MAAM;gBACzB,gCAAgC;gBAChC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;gBAC9D,cAAc,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;gBACnD,MAAK;YAEP;gBACE,MAAM,aAAa,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,MAAM,CAAA;gBACrD,cAAc,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBACvC,MAAK;QACT,CAAC;QAED,gCAAgC;QAChC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA,CAAC,sBAAsB;QAC7D,IAAI,CAAC,gBAAgB,CAAC,YAAY,IAAI,YAAY,CAAA;QAClD,IAAI,CAAC,gBAAgB,CAAC,cAAc,IAAI,cAAc,CAAC,UAAU,CAAA;QACjE,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAA;QAEjE,IAAI,CAAC,sBAAsB,EAAE,CAAA;QAE7B,OAAO,cAAc,CAAA;IACvB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,gBAAgB,CAC3B,cAA2B,EAC3B,SAAiB,EACjB,iBAAyB;QAEzB,QAAQ,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;YAClD,KAAK,eAAe,CAAC,YAAY;gBAC/B,OAAO,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAA;YAE5E,KAAK,eAAe,CAAC,IAAI;gBACvB,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAA;gBAClE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAA;YAEvD,KAAK,eAAe,CAAC,MAAM;gBACzB,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAA;gBACtE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAA;YAEzD,KAAK,eAAe,CAAC,MAAM;gBACzB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAA;gBAC3D,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAA;YAEvE;gBACE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,cAAc,CAAC,CAAC,CAAA;QACvD,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc,CAAC,MAAc,EAAE,SAAiB;QAC5D,IAAI,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAExD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,+CAA+C;YAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAA;YAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAA;YAC/B,QAAQ,GAAG,IAAI,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;YACvC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;QACrD,CAAC;QAED,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAA;QAC3B,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA,CAAC,qBAAqB;QAErD,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAA;QACtD,CAAC;QAED,qCAAqC;QACrC,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAA;QAC1E,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAA;QAEzC,gDAAgD;QAChD,UAAU,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;QAClD,oCAAoC;QACpC,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAA;QAE9C,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;OAEG;IACK,gBAAgB,CACtB,aAA0B,EAC1B,SAAiB,EACjB,SAAiB;QAEjB,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,aAAa,CAAC,CAAA;QAE9C,mCAAmC;QACnC,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAC1C,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QACvD,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAA;QAE3B,2BAA2B;QAC3B,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACnC,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;QAE/B,MAAM,MAAM,GAAW,EAAE,CAAA;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;QACxC,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY,CAAC,IAAiB;QAC1C,IAAI,OAAO,iBAAiB,KAAK,WAAW,EAAE,CAAC;YAC7C,sBAAsB;YACtB,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAA;YAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAA;YAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAA;YAE1C,MAAM,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;YAClC,MAAM,CAAC,KAAK,EAAE,CAAA;YAEd,MAAM,MAAM,GAAiB,EAAE,CAAA;YAC/B,IAAI,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;YAEhC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;gBACzB,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;YAC9B,CAAC;YAED,iBAAiB;YACjB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;YACxE,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAA;YAC5C,IAAI,MAAM,GAAG,CAAC,CAAA;YAEd,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;gBAC3B,MAAM,IAAI,KAAK,CAAC,MAAM,CAAA;YACxB,CAAC;YAED,OAAO,QAAQ,CAAC,MAAM,CAAA;QACxB,CAAC;aAAM,CAAC;YACN,uCAAuC;YACvC,OAAO,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAA;YACvE,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc,CAAC,cAA2B;QACtD,IAAI,OAAO,mBAAmB,KAAK,WAAW,EAAE,CAAC;YAC/C,sBAAsB;YACtB,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAA;YAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAA;YAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAA;YAE1C,MAAM,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,cAAc,CAAC,CAAC,CAAA;YAC5C,MAAM,CAAC,KAAK,EAAE,CAAA;YAEd,MAAM,MAAM,GAAiB,EAAE,CAAA;YAC/B,IAAI,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;YAEhC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;gBACzB,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;YAC9B,CAAC;YAED,iBAAiB;YACjB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;YACxE,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAA;YAC5C,IAAI,MAAM,GAAG,CAAC,CAAA;YAEd,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;gBAC3B,MAAM,IAAI,KAAK,CAAC,MAAM,CAAA;YACxB,CAAC;YAED,OAAO,QAAQ,CAAC,MAAM,CAAA;QACxB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAA;YACzE,OAAO,cAAc,CAAA;QACvB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,cAAc,CAAC,IAAiB;QAC5C,0CAA0C;QAC1C,OAAO,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAA;QACxE,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAAC,cAA2B;QACxD,OAAO,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAA;QAC1E,OAAO,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAA;IAC5C,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,sBAAsB,CACjC,KAAiB,EACjB,UAAkB;QAElB,MAAM,QAAQ,GAAmB,EAAE,CAAA;QACnC,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAA;QAE3C,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,oBAAoB,CAAC,CAAA;QAElF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC;YACnD,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,CAAA;YACpD,MAAM,SAAS,GAAG,WAAW,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,WAAW,CAAC,EAAE,CAAA;YAE1D,MAAM,OAAO,GAAiB;gBAC5B,EAAE,EAAE,SAAS;gBACb,SAAS,EAAE,YAAY,CAAC,MAAM;gBAC9B,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC;gBACpD,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,iBAAiB;gBACtD,SAAS,EAAE,GAAG,UAAU,IAAI,SAAS,MAAM;gBAC3C,cAAc,EAAE,KAAK;gBACrB,YAAY,EAAE,CAAC;aAChB,CAAA;YAED,sCAAsC;YACtC,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAA;YAE/D,4DAA4D;YAC5D,OAAO,CAAC,GAAG,CAAC,mBAAmB,SAAS,SAAS,cAAc,CAAC,UAAU,QAAQ,CAAC,CAAA;YAEnF,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACtB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;QACvC,CAAC;QAED,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe,CAAC,KAAiB;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnD,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,WAAW,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC;SACzD,CAAC,CAAC,CAAC,CAAA;QAEJ,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;QACjC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAEvC,6BAA6B;QAC7B,QAAQ,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC;YACpD,KAAK,eAAe,CAAC,IAAI;gBACvB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAgB,CAAC,CAAA;YAC/D,KAAK,eAAe,CAAC,MAAM;gBACzB,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAgB,CAAC,CAAA;YACjE;gBACE,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAgB,CAAA;QAC9C,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,WAAW,CAAC,SAAiB;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,WAAW,SAAS,YAAY,CAAC,CAAA;QACnD,CAAC;QAED,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAEjC,+CAA+C;QAC/C,IAAI,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACtE,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,CAAA;QAC1E,CAAC;QAED,qCAAqC;QACrC,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAA;QAEjE,gCAAgC;QAChC,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;YACnC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,cAAc,CAAC,CAAA;YACvD,OAAO,CAAC,cAAc,GAAG,IAAI,CAAA;QAC/B,CAAC;QAED,OAAO,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAA;IAChD,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,sBAAsB,CAAC,OAAqB;QACxD,oDAAoD;QACpD,gCAAgC;QAChC,OAAO,CAAC,GAAG,CAAC,mBAAmB,OAAO,CAAC,EAAE,eAAe,CAAC,CAAA;QACzD,OAAO,IAAI,WAAW,CAAC,CAAC,CAAC,CAAA;IAC3B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,kBAAkB,CAAC,cAA2B;QAC1D,sBAAsB;QACtB,IAAI,YAAyB,CAAA;QAE7B,QAAQ,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC;YACpD,KAAK,eAAe,CAAC,IAAI;gBACvB,YAAY,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAA;gBACxD,MAAK;YACP,KAAK,eAAe,CAAC,MAAM;gBACzB,YAAY,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAA;gBAC1D,MAAK;YACP;gBACE,YAAY,GAAG,cAAc,CAAA;gBAC7B,MAAK;QACT,CAAC;QAED,aAAa;QACb,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;QACjC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAElC,+BAA+B;QAC/B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,CAAC;YAChC,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,WAAW,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,WAAW,CAAC;SAC3D,CAAC,CAAC,CAAA;IACL,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,WAAqC;QAChE,MAAM,MAAM,GAA6B,EAAE,CAAA;QAC3C,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;YACrD,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAChD,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;OAEG;IACK,sBAAsB,CAAC,UAAoC;QACjE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAA;QAC7C,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7D,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;QAClD,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,gBAAgB,CAAC,gBAAwB;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;QACnD,IAAI,CAAC,OAAO;YAAE,OAAM;QAEpB,uDAAuD;QACvD,MAAM,aAAa,GAAG,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9D,MAAM,UAAU,GAAa,EAAE,CAAA;QAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC;YACvD,MAAM,MAAM,GAAG,WAAW,aAAa,GAAG,CAAC,EAAE,CAAA;YAC7C,MAAM,MAAM,GAAG,WAAW,aAAa,GAAG,CAAC,EAAE,CAAA;YAE7C,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACzB,CAAC;YACD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACzB,CAAC;QACH,CAAC;QAED,yBAAyB;QACzB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBACxC,OAAO,CAAC,IAAI,CAAC,8BAA8B,SAAS,GAAG,EAAE,KAAK,CAAC,CAAA;YACjE,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,sBAAsB;QAC5B,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,gBAAgB,CAAC,gBAAgB;gBACpC,IAAI,CAAC,gBAAgB,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAA;QAC7E,CAAC;IACH,CAAC;IAED;;OAEG;IACI,mBAAmB;QAIxB,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC;aAC9D,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;QAEtD,OAAO;YACL,GAAG,IAAI,CAAC,gBAAgB;YACxB,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;YAChC,WAAW;SACZ,CAAA;IACH,CAAC;IAED;;OAEG;IACI,OAAO;QACZ,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAA;QAChC,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAA;QAElC,kCAAkC;QAClC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC7C,OAAO,CAAC,cAAc,GAAG,KAAK,CAAA;QAChC,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storageFactory.d.ts","sourceRoot":"","sources":["../../src/storage/storageFactory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,EACL,mBAAmB,EACnB,SAAS,EACV,MAAM,mCAAmC,CAAA;AAG1C,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAE5D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;;;;;OASG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,YAAY,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAA;IAEtE;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAE5B;;OAEG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAEhC;;OAEG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAElC;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB;;OAEG;IACH,SAAS,CAAC,EAAE;QACV;;WAEG;QACH,UAAU,EAAE,MAAM,CAAA;QAElB;;WAEG;QACH,MAAM,CAAC,EAAE,MAAM,CAAA;QAEf;;WAEG;QACH,WAAW,EAAE,MAAM,CAAA;QAEnB;;WAEG;QACH,eAAe,EAAE,MAAM,CAAA;QAEvB;;WAEG;QACH,YAAY,CAAC,EAAE,MAAM,CAAA;KACtB,CAAA;IAED;;OAEG;IACH,SAAS,CAAC,EAAE;QACV;;WAEG;QACH,UAAU,EAAE,MAAM,CAAA;QAElB;;WAEG;QACH,SAAS,EAAE,MAAM,CAAA;QAEjB;;WAEG;QACH,WAAW,EAAE,MAAM,CAAA;QAEnB;;WAEG;QACH,eAAe,EAAE,MAAM,CAAA;KACxB,CAAA;IAED;;OAEG;IACH,UAAU,CAAC,EAAE;QACX;;WAEG;QACH,UAAU,EAAE,MAAM,CAAA;QAElB;;WAEG;QACH,MAAM,CAAC,EAAE,MAAM,CAAA;QAEf;;WAEG;QACH,WAAW,EAAE,MAAM,CAAA;QAEnB;;WAEG;QACH,eAAe,EAAE,MAAM,CAAA;QAEvB;;WAEG;QACH,QAAQ,CAAC,EAAE,MAAM,CAAA;KAClB,CAAA;IAED;;OAEG;IACH,eAAe,CAAC,EAAE;QAChB;;WAEG;QACH,UAAU,EAAE,MAAM,CAAA;QAElB;;WAEG;QACH,MAAM,CAAC,EAAE,MAAM,CAAA;QAEf;;WAEG;QACH,QAAQ,EAAE,MAAM,CAAA;QAEhB;;WAEG;QACH,WAAW,EAAE,MAAM,CAAA;QAEnB;;WAEG;QACH,eAAe,EAAE,MAAM,CAAA;QAEvB;;WAEG;QACH,WAAW,CAAC,EAAE,MAAM,CAAA;KACrB,CAAA;IAED;;OAEG;IACH,eAAe,CAAC,EAAE,eAAe,CAAA;IAEjC;;;OAGG;IACH,WAAW,CAAC,EAAE;QACZ;;;WAGG;QACH,eAAe,CAAC,EAAE,MAAM,CAAA;QAExB;;;;WAIG;QACH,yBAAyB,CAAC,EAAE,MAAM,CAAA;QAElC;;;WAGG;QACH,YAAY,CAAC,EAAE,MAAM,CAAA;QAErB;;;WAGG;QACH,SAAS,CAAC,EAAE,MAAM,CAAA;QAElB;;;;WAIG;QACH,QAAQ,CAAC,EAAE,OAAO,CAAA;QAElB;;;;WAIG;QACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;QAEzB;;;WAGG;QACH,QAAQ,CAAC,EAAE,OAAO,CAAA;KACnB,CAAA;CACF;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,cAAc,CAAC,CA2PzB;AAED;;GAEG;AACH,OAAO,EACL,aAAa,EACb,WAAW,EACX,mBAAmB,EACnB,SAAS,EACV,CAAA
|
|
1
|
+
{"version":3,"file":"storageFactory.d.ts","sourceRoot":"","sources":["../../src/storage/storageFactory.ts"],"names":[],"mappings":"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"}
|