@soulcraft/brainy 0.25.0 → 0.26.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/dist/brainy.js +8791 -6385
- package/dist/brainy.min.js +747 -747
- package/dist/brainyData.d.ts +58 -0
- package/dist/coreTypes.d.ts +20 -0
- package/dist/errors/brainyError.d.ts +45 -0
- package/dist/hnsw/hnswIndexOptimized.d.ts +13 -1
- package/dist/hnsw/hnswIndexOptimized.d.ts.map +1 -1
- package/dist/statistics/statisticsManager.d.ts +121 -0
- package/dist/storage/adapters/fileSystemStorage.d.ts +21 -1
- package/dist/storage/adapters/fileSystemStorage.d.ts.map +1 -1
- package/dist/storage/adapters/memoryStorage.d.ts.map +1 -1
- package/dist/storage/adapters/opfsStorage.d.ts +21 -1
- package/dist/storage/adapters/opfsStorage.d.ts.map +1 -1
- package/dist/storage/adapters/s3CompatibleStorage.d.ts +58 -1
- package/dist/storage/adapters/s3CompatibleStorage.d.ts.map +1 -1
- package/dist/storage/storageFactory.d.ts +6 -1
- package/dist/storage/storageFactory.d.ts.map +1 -1
- package/dist/unified.js +2441 -1289
- package/dist/unified.min.js +747 -747
- package/dist/utils/environmentDetection.d.ts +47 -0
- package/dist/utils/environmentDetection.d.ts.map +1 -0
- package/dist/utils/operationUtils.d.ts +58 -0
- package/dist/utils/operationUtils.d.ts.map +1 -0
- package/package.json +1 -1
package/dist/brainyData.d.ts
CHANGED
|
@@ -93,6 +93,53 @@ export interface BrainyDataConfig {
|
|
|
93
93
|
*/
|
|
94
94
|
verbose?: boolean;
|
|
95
95
|
};
|
|
96
|
+
/**
|
|
97
|
+
* Timeout configuration for async operations
|
|
98
|
+
* Controls how long operations wait before timing out
|
|
99
|
+
*/
|
|
100
|
+
timeouts?: {
|
|
101
|
+
/**
|
|
102
|
+
* Timeout for get operations in milliseconds
|
|
103
|
+
* Default: 30000 (30 seconds)
|
|
104
|
+
*/
|
|
105
|
+
get?: number;
|
|
106
|
+
/**
|
|
107
|
+
* Timeout for add operations in milliseconds
|
|
108
|
+
* Default: 60000 (60 seconds)
|
|
109
|
+
*/
|
|
110
|
+
add?: number;
|
|
111
|
+
/**
|
|
112
|
+
* Timeout for delete operations in milliseconds
|
|
113
|
+
* Default: 30000 (30 seconds)
|
|
114
|
+
*/
|
|
115
|
+
delete?: number;
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* Retry policy configuration for failed operations
|
|
119
|
+
* Controls how operations are retried on failure
|
|
120
|
+
*/
|
|
121
|
+
retryPolicy?: {
|
|
122
|
+
/**
|
|
123
|
+
* Maximum number of retry attempts
|
|
124
|
+
* Default: 3
|
|
125
|
+
*/
|
|
126
|
+
maxRetries?: number;
|
|
127
|
+
/**
|
|
128
|
+
* Initial delay between retries in milliseconds
|
|
129
|
+
* Default: 1000 (1 second)
|
|
130
|
+
*/
|
|
131
|
+
initialDelay?: number;
|
|
132
|
+
/**
|
|
133
|
+
* Maximum delay between retries in milliseconds
|
|
134
|
+
* Default: 10000 (10 seconds)
|
|
135
|
+
*/
|
|
136
|
+
maxDelay?: number;
|
|
137
|
+
/**
|
|
138
|
+
* Multiplier for exponential backoff
|
|
139
|
+
* Default: 2
|
|
140
|
+
*/
|
|
141
|
+
backoffMultiplier?: number;
|
|
142
|
+
};
|
|
96
143
|
/**
|
|
97
144
|
* Real-time update configuration
|
|
98
145
|
* Controls how the database handles updates when data is added by external processes
|
|
@@ -134,6 +181,8 @@ export declare class BrainyData<T = any> implements BrainyDataInterface<T> {
|
|
|
134
181
|
private useOptimizedIndex;
|
|
135
182
|
private _dimensions;
|
|
136
183
|
private loggingConfig;
|
|
184
|
+
private timeoutConfig;
|
|
185
|
+
private retryConfig;
|
|
137
186
|
private realtimeUpdateConfig;
|
|
138
187
|
private updateTimerId;
|
|
139
188
|
private lastUpdateTime;
|
|
@@ -193,8 +242,17 @@ export declare class BrainyData<T = any> implements BrainyDataInterface<T> {
|
|
|
193
242
|
/**
|
|
194
243
|
* Check for updates in storage and update the in-memory index and statistics if needed
|
|
195
244
|
* This is called periodically by the update timer when real-time updates are enabled
|
|
245
|
+
* Uses change log mechanism for efficient updates instead of full scans
|
|
196
246
|
*/
|
|
197
247
|
private checkForUpdates;
|
|
248
|
+
/**
|
|
249
|
+
* Apply changes using the change log mechanism (efficient for distributed storage)
|
|
250
|
+
*/
|
|
251
|
+
private applyChangesFromLog;
|
|
252
|
+
/**
|
|
253
|
+
* Apply changes using full scan method (fallback for storage adapters without change log support)
|
|
254
|
+
*/
|
|
255
|
+
private applyChangesFromFullScan;
|
|
198
256
|
/**
|
|
199
257
|
* Get the current augmentation name if available
|
|
200
258
|
* This is used to auto-detect the service performing data operations
|
package/dist/coreTypes.d.ts
CHANGED
|
@@ -54,6 +54,7 @@ export interface HNSWNoun {
|
|
|
54
54
|
id: string;
|
|
55
55
|
vector: Vector;
|
|
56
56
|
connections: Map<number, Set<string>>;
|
|
57
|
+
metadata?: any;
|
|
57
58
|
}
|
|
58
59
|
/**
|
|
59
60
|
* Verb representing a relationship between nouns
|
|
@@ -115,6 +116,18 @@ export interface StatisticsData {
|
|
|
115
116
|
* Size of the HNSW index
|
|
116
117
|
*/
|
|
117
118
|
hnswIndexSize: number;
|
|
119
|
+
/**
|
|
120
|
+
* Total number of nodes
|
|
121
|
+
*/
|
|
122
|
+
totalNodes?: number;
|
|
123
|
+
/**
|
|
124
|
+
* Total number of edges
|
|
125
|
+
*/
|
|
126
|
+
totalEdges?: number;
|
|
127
|
+
/**
|
|
128
|
+
* Total metadata count
|
|
129
|
+
*/
|
|
130
|
+
totalMetadata?: number;
|
|
118
131
|
/**
|
|
119
132
|
* Operation counts
|
|
120
133
|
*/
|
|
@@ -209,4 +222,11 @@ export interface StorageAdapter {
|
|
|
209
222
|
* This ensures that any pending statistics updates are written to persistent storage
|
|
210
223
|
*/
|
|
211
224
|
flushStatisticsToStorage(): Promise<void>;
|
|
225
|
+
/**
|
|
226
|
+
* Get changes since a specific timestamp
|
|
227
|
+
* @param timestamp The timestamp to get changes since
|
|
228
|
+
* @param limit Optional limit on the number of changes to return
|
|
229
|
+
* @returns Promise that resolves to an array of changes
|
|
230
|
+
*/
|
|
231
|
+
getChangesSince?(timestamp: number, limit?: number): Promise<any[]>;
|
|
212
232
|
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom error types for Brainy operations
|
|
3
|
+
* Provides better error classification and handling
|
|
4
|
+
*/
|
|
5
|
+
export type BrainyErrorType = 'TIMEOUT' | 'NETWORK' | 'STORAGE' | 'NOT_FOUND' | 'RETRY_EXHAUSTED';
|
|
6
|
+
/**
|
|
7
|
+
* Custom error class for Brainy operations
|
|
8
|
+
* Provides error type classification and retry information
|
|
9
|
+
*/
|
|
10
|
+
export declare class BrainyError extends Error {
|
|
11
|
+
readonly type: BrainyErrorType;
|
|
12
|
+
readonly retryable: boolean;
|
|
13
|
+
readonly originalError?: Error;
|
|
14
|
+
readonly attemptNumber?: number;
|
|
15
|
+
readonly maxRetries?: number;
|
|
16
|
+
constructor(message: string, type: BrainyErrorType, retryable?: boolean, originalError?: Error, attemptNumber?: number, maxRetries?: number);
|
|
17
|
+
/**
|
|
18
|
+
* Create a timeout error
|
|
19
|
+
*/
|
|
20
|
+
static timeout(operation: string, timeoutMs: number, originalError?: Error): BrainyError;
|
|
21
|
+
/**
|
|
22
|
+
* Create a network error
|
|
23
|
+
*/
|
|
24
|
+
static network(message: string, originalError?: Error): BrainyError;
|
|
25
|
+
/**
|
|
26
|
+
* Create a storage error
|
|
27
|
+
*/
|
|
28
|
+
static storage(message: string, originalError?: Error): BrainyError;
|
|
29
|
+
/**
|
|
30
|
+
* Create a not found error
|
|
31
|
+
*/
|
|
32
|
+
static notFound(resource: string): BrainyError;
|
|
33
|
+
/**
|
|
34
|
+
* Create a retry exhausted error
|
|
35
|
+
*/
|
|
36
|
+
static retryExhausted(operation: string, maxRetries: number, lastError?: Error): BrainyError;
|
|
37
|
+
/**
|
|
38
|
+
* Check if an error is retryable
|
|
39
|
+
*/
|
|
40
|
+
static isRetryable(error: Error): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Convert a generic error to a BrainyError with appropriate classification
|
|
43
|
+
*/
|
|
44
|
+
static fromError(error: Error, operation?: string): BrainyError;
|
|
45
|
+
}
|
|
@@ -94,7 +94,19 @@ export declare class HNSWIndexOptimized extends HNSWIndex {
|
|
|
94
94
|
private quantizedVectors;
|
|
95
95
|
private memoryUsage;
|
|
96
96
|
private vectorCount;
|
|
97
|
+
private memoryUpdateLock;
|
|
97
98
|
constructor(config: Partial<HNSWOptimizedConfig> | undefined, distanceFunction: DistanceFunction, storage?: StorageAdapter | null);
|
|
99
|
+
/**
|
|
100
|
+
* Thread-safe method to update memory usage
|
|
101
|
+
* @param memoryDelta Change in memory usage (can be negative)
|
|
102
|
+
* @param vectorCountDelta Change in vector count (can be negative)
|
|
103
|
+
*/
|
|
104
|
+
private updateMemoryUsage;
|
|
105
|
+
/**
|
|
106
|
+
* Thread-safe method to get current memory usage
|
|
107
|
+
* @returns Current memory usage and vector count
|
|
108
|
+
*/
|
|
109
|
+
private getMemoryUsageAsync;
|
|
98
110
|
/**
|
|
99
111
|
* Add a vector to the index
|
|
100
112
|
* Uses product quantization if enabled and memory threshold is exceeded
|
|
@@ -112,7 +124,7 @@ export declare class HNSWIndexOptimized extends HNSWIndex {
|
|
|
112
124
|
/**
|
|
113
125
|
* Clear the index
|
|
114
126
|
*/
|
|
115
|
-
clear(): void
|
|
127
|
+
clear(): Promise<void>;
|
|
116
128
|
/**
|
|
117
129
|
* Initialize product quantizer with existing vectors
|
|
118
130
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hnswIndexOptimized.d.ts","sourceRoot":"","sources":["../../src/hnsw/hnswIndexOptimized.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,gBAAgB,EAChB,UAAU,EAEV,MAAM,EACN,cAAc,EACf,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAGhD,MAAM,WAAW,mBAAoB,SAAQ,UAAU;IAErD,eAAe,CAAC,EAAE,MAAM,CAAA;IAGxB,mBAAmB,CAAC,EAAE;QAEpB,OAAO,EAAE,OAAO,CAAA;QAEhB,aAAa,CAAC,EAAE,MAAM,CAAA;QAEtB,YAAY,CAAC,EAAE,MAAM,CAAA;KACtB,CAAA;IAGD,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B;AAiBD;;;;GAIG;AACH,cAAM,gBAAgB;IACpB,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,SAAS,CAAY;gBAEjB,aAAa,GAAE,MAAW,EAAE,YAAY,GAAE,MAAY;IAKlE;;;OAGG;IACI,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAwBrC;;;;OAIG;IACI,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;IAuCzC;;;;OAIG;IACI,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM;IA4B3C;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;IAYhC;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IA+CtB;;;OAGG;IACI,YAAY,IAAI,MAAM,EAAE,EAAE;IAIjC;;;OAGG;IACI,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI;IAOhD;;;OAGG;IACI,YAAY,IAAI,MAAM;IAI7B;;;OAGG;IACI,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;CAI7C;AAED;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,SAAS;IAC/C,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,gBAAgB,CAAgC;IACxD,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,iBAAiB,CAAiB;IAC1C,OAAO,CAAC,sBAAsB,CAAiB;IAC/C,OAAO,CAAC,gBAAgB,CAAmC;IAC3D,OAAO,CAAC,WAAW,CAAY;IAC/B,OAAO,CAAC,WAAW,CAAY;
|
|
1
|
+
{"version":3,"file":"hnswIndexOptimized.d.ts","sourceRoot":"","sources":["../../src/hnsw/hnswIndexOptimized.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhanced Statistics Manager
|
|
3
|
+
* Provides optimized statistics collection and storage with configurable rate limiting,
|
|
4
|
+
* batching, and exponential backoff to handle high-frequency data updates without
|
|
5
|
+
* overwhelming storage systems like S3.
|
|
6
|
+
*/
|
|
7
|
+
import { StatisticsData } from '../coreTypes.js';
|
|
8
|
+
export interface StatisticsConfig {
|
|
9
|
+
minFlushIntervalMs?: number;
|
|
10
|
+
maxFlushDelayMs?: number;
|
|
11
|
+
maxBatchSize?: number;
|
|
12
|
+
enableExponentialBackoff?: boolean;
|
|
13
|
+
backoffMultiplier?: number;
|
|
14
|
+
maxBackoffMs?: number;
|
|
15
|
+
enableRealtimeMonitoring?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface RealtimeStatistics {
|
|
18
|
+
nounCount: {
|
|
19
|
+
[service: string]: number;
|
|
20
|
+
};
|
|
21
|
+
verbCount: {
|
|
22
|
+
[service: string]: number;
|
|
23
|
+
};
|
|
24
|
+
metadataCount: {
|
|
25
|
+
[service: string]: number;
|
|
26
|
+
};
|
|
27
|
+
hnswIndexSize: number;
|
|
28
|
+
operations: {
|
|
29
|
+
add: number;
|
|
30
|
+
search: number;
|
|
31
|
+
delete: number;
|
|
32
|
+
update: number;
|
|
33
|
+
relate: number;
|
|
34
|
+
total: number;
|
|
35
|
+
};
|
|
36
|
+
lastUpdated: string;
|
|
37
|
+
pendingWrites: number;
|
|
38
|
+
lastFlushTime: number;
|
|
39
|
+
nextFlushTime: number;
|
|
40
|
+
}
|
|
41
|
+
export declare class StatisticsManager {
|
|
42
|
+
private config;
|
|
43
|
+
private statisticsCache;
|
|
44
|
+
private realtimeStats;
|
|
45
|
+
private batchUpdateTimerId;
|
|
46
|
+
private statisticsModified;
|
|
47
|
+
private lastFlushTime;
|
|
48
|
+
private consecutiveFlushes;
|
|
49
|
+
private currentBackoffMs;
|
|
50
|
+
private operationCount;
|
|
51
|
+
private saveStatisticsCallback;
|
|
52
|
+
constructor(config?: StatisticsConfig);
|
|
53
|
+
/**
|
|
54
|
+
* Set the callback function for saving statistics to storage
|
|
55
|
+
*/
|
|
56
|
+
setSaveCallback(callback: (stats: StatisticsData) => Promise<void>): void;
|
|
57
|
+
/**
|
|
58
|
+
* Initialize the statistics manager with existing data
|
|
59
|
+
*/
|
|
60
|
+
initialize(existingStats?: StatisticsData): Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* Increment a statistic counter with optimized batching
|
|
63
|
+
*/
|
|
64
|
+
incrementStatistic(type: 'noun' | 'verb' | 'metadata', service: string, amount?: number): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Decrement a statistic counter with optimized batching
|
|
67
|
+
*/
|
|
68
|
+
decrementStatistic(type: 'noun' | 'verb' | 'metadata', service: string, amount?: number): Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* Update HNSW index size
|
|
71
|
+
*/
|
|
72
|
+
updateHnswIndexSize(size: number): Promise<void>;
|
|
73
|
+
/**
|
|
74
|
+
* Track search operations for monitoring
|
|
75
|
+
*/
|
|
76
|
+
trackSearchOperation(count?: number): void;
|
|
77
|
+
/**
|
|
78
|
+
* Track update operations for monitoring
|
|
79
|
+
*/
|
|
80
|
+
trackUpdateOperation(count?: number): void;
|
|
81
|
+
/**
|
|
82
|
+
* Track relate operations for monitoring
|
|
83
|
+
*/
|
|
84
|
+
trackRelateOperation(count?: number): void;
|
|
85
|
+
/**
|
|
86
|
+
* Get real-time statistics without triggering storage writes
|
|
87
|
+
*/
|
|
88
|
+
getRealtimeStatistics(): RealtimeStatistics;
|
|
89
|
+
/**
|
|
90
|
+
* Get cached statistics data
|
|
91
|
+
*/
|
|
92
|
+
getCachedStatistics(): StatisticsData | null;
|
|
93
|
+
/**
|
|
94
|
+
* Force an immediate flush with rate limiting protection
|
|
95
|
+
*/
|
|
96
|
+
forceFlush(): Promise<void>;
|
|
97
|
+
/**
|
|
98
|
+
* Schedule a batch update with intelligent timing
|
|
99
|
+
*/
|
|
100
|
+
private scheduleBatchUpdate;
|
|
101
|
+
/**
|
|
102
|
+
* Flush statistics to storage with error handling
|
|
103
|
+
*/
|
|
104
|
+
private flushStatistics;
|
|
105
|
+
/**
|
|
106
|
+
* Create default statistics data
|
|
107
|
+
*/
|
|
108
|
+
private createDefaultStatistics;
|
|
109
|
+
/**
|
|
110
|
+
* Create default realtime statistics
|
|
111
|
+
*/
|
|
112
|
+
private createDefaultRealtimeStats;
|
|
113
|
+
/**
|
|
114
|
+
* Update realtime stats from statistics data
|
|
115
|
+
*/
|
|
116
|
+
private updateRealtimeStats;
|
|
117
|
+
/**
|
|
118
|
+
* Cleanup resources
|
|
119
|
+
*/
|
|
120
|
+
destroy(): void;
|
|
121
|
+
}
|
|
@@ -16,6 +16,8 @@ export declare class FileSystemStorage extends BaseStorage {
|
|
|
16
16
|
private verbsDir;
|
|
17
17
|
private metadataDir;
|
|
18
18
|
private indexDir;
|
|
19
|
+
private lockDir;
|
|
20
|
+
private activeLocks;
|
|
19
21
|
/**
|
|
20
22
|
* Initialize the storage adapter
|
|
21
23
|
* @param rootDirectory The root directory for storage
|
|
@@ -152,7 +154,25 @@ export declare class FileSystemStorage extends BaseStorage {
|
|
|
152
154
|
*/
|
|
153
155
|
protected deleteVerb_internal(id: string): Promise<void>;
|
|
154
156
|
/**
|
|
155
|
-
*
|
|
157
|
+
* Acquire a file-based lock for coordinating operations across multiple processes
|
|
158
|
+
* @param lockKey The key to lock on
|
|
159
|
+
* @param ttl Time to live for the lock in milliseconds (default: 30 seconds)
|
|
160
|
+
* @returns Promise that resolves to true if lock was acquired, false otherwise
|
|
161
|
+
*/
|
|
162
|
+
private acquireLock;
|
|
163
|
+
/**
|
|
164
|
+
* Release a file-based lock
|
|
165
|
+
* @param lockKey The key to unlock
|
|
166
|
+
* @param lockValue The value used when acquiring the lock (for verification)
|
|
167
|
+
* @returns Promise that resolves when lock is released
|
|
168
|
+
*/
|
|
169
|
+
private releaseLock;
|
|
170
|
+
/**
|
|
171
|
+
* Clean up expired lock files
|
|
172
|
+
*/
|
|
173
|
+
private cleanupExpiredLocks;
|
|
174
|
+
/**
|
|
175
|
+
* Save statistics data to storage with file-based locking
|
|
156
176
|
*/
|
|
157
177
|
protected saveStatisticsData(statistics: StatisticsData): Promise<void>;
|
|
158
178
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileSystemStorage.d.ts","sourceRoot":"","sources":["../../../src/storage/adapters/fileSystemStorage.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxE,OAAO,EACL,WAAW,EAMZ,MAAM,mBAAmB,CAAA;AAG1B,KAAK,QAAQ,GAAG,QAAQ,CAAA;AACxB,KAAK,IAAI,GAAG,SAAS,CAAA;AA2BrB;;;GAGG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;IAChD,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAS;
|
|
1
|
+
{"version":3,"file":"fileSystemStorage.d.ts","sourceRoot":"","sources":["../../../src/storage/adapters/fileSystemStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memoryStorage.d.ts","sourceRoot":"","sources":["../../../src/storage/adapters/memoryStorage.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxE,OAAO,EAAE,WAAW,EAAkB,MAAM,mBAAmB,CAAA;AAI/D;;;GAGG;AACH,qBAAa,aAAc,SAAQ,WAAW;IAE5C,OAAO,CAAC,KAAK,CAAmC;IAChD,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,UAAU,CAA8B;;IAMhD;;;OAGG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIlC;;OAEG;cACa,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBhE;;OAEG;cACa,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAwBtE;;OAEG;cACa,oBAAoB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAuB3D;;;;OAIG;cACa,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IA6BlF;;OAEG;cACa,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9D;;OAEG;cACa,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBjE;;OAEG;cACa,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IA+CvE;;OAEG;cACa,oBAAoB,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IA6C5D;;OAEG;cACa,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAKjF;;OAEG;cACa,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAKjF;;OAEG;cACa,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAK3E;;OAEG;cACa,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9D;;OAEG;IACU,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAInE;;OAEG;IACU,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;IASzD;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"memoryStorage.d.ts","sourceRoot":"","sources":["../../../src/storage/adapters/memoryStorage.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxE,OAAO,EAAE,WAAW,EAAkB,MAAM,mBAAmB,CAAA;AAI/D;;;GAGG;AACH,qBAAa,aAAc,SAAQ,WAAW;IAE5C,OAAO,CAAC,KAAK,CAAmC;IAChD,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,UAAU,CAA8B;;IAMhD;;;OAGG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIlC;;OAEG;cACa,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBhE;;OAEG;cACa,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAwBtE;;OAEG;cACa,oBAAoB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAuB3D;;;;OAIG;cACa,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IA6BlF;;OAEG;cACa,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9D;;OAEG;cACa,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBjE;;OAEG;cACa,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IA+CvE;;OAEG;cACa,oBAAoB,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IA6C5D;;OAEG;cACa,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAKjF;;OAEG;cACa,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAKjF;;OAEG;cACa,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAK3E;;OAEG;cACa,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK9D;;OAEG;IACU,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAInE;;OAEG;IACU,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;IASzD;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAOnC;;OAEG;IACU,gBAAgB,IAAI,OAAO,CAAC;QACvC,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAC9B,CAAC;IAaF;;;OAGG;cACa,kBAAkB,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAe7E;;;OAGG;cACa,iBAAiB,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;CAiBpE"}
|
|
@@ -25,6 +25,8 @@ export declare class OPFSStorage extends BaseStorage {
|
|
|
25
25
|
private isPersistentRequested;
|
|
26
26
|
private isPersistentGranted;
|
|
27
27
|
private statistics;
|
|
28
|
+
private activeLocks;
|
|
29
|
+
private lockPrefix;
|
|
28
30
|
constructor();
|
|
29
31
|
/**
|
|
30
32
|
* Initialize the storage adapter
|
|
@@ -170,7 +172,25 @@ export declare class OPFSStorage extends BaseStorage {
|
|
|
170
172
|
*/
|
|
171
173
|
private getLegacyStatisticsKey;
|
|
172
174
|
/**
|
|
173
|
-
*
|
|
175
|
+
* Acquire a browser-based lock for coordinating operations across multiple tabs
|
|
176
|
+
* @param lockKey The key to lock on
|
|
177
|
+
* @param ttl Time to live for the lock in milliseconds (default: 30 seconds)
|
|
178
|
+
* @returns Promise that resolves to true if lock was acquired, false otherwise
|
|
179
|
+
*/
|
|
180
|
+
private acquireLock;
|
|
181
|
+
/**
|
|
182
|
+
* Release a browser-based lock
|
|
183
|
+
* @param lockKey The key to unlock
|
|
184
|
+
* @param lockValue The value used when acquiring the lock (for verification)
|
|
185
|
+
* @returns Promise that resolves when lock is released
|
|
186
|
+
*/
|
|
187
|
+
private releaseLock;
|
|
188
|
+
/**
|
|
189
|
+
* Clean up expired locks from localStorage
|
|
190
|
+
*/
|
|
191
|
+
private cleanupExpiredLocks;
|
|
192
|
+
/**
|
|
193
|
+
* Save statistics data to storage with browser-based locking
|
|
174
194
|
* @param statistics The statistics data to save
|
|
175
195
|
*/
|
|
176
196
|
protected saveStatisticsData(statistics: StatisticsData): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opfsStorage.d.ts","sourceRoot":"","sources":["../../../src/storage/adapters/opfsStorage.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAC,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAC,MAAM,oBAAoB,CAAA;AACtE,OAAO,EAAC,WAAW,EAAgE,MAAM,mBAAmB,CAAA;AAC5G,OAAO,gCAAgC,CAAA;AAGvC,KAAK,QAAQ,GAAG,QAAQ,CAAA;AAExB;;GAEG;AACH,KAAK,IAAI,GAAG,SAAS,CAAA;AAarB,KAAK,iBAAiB,GAAG,QAAQ,CAAA;AAMjC;;;GAGG;AACH,qBAAa,WAAY,SAAQ,WAAW;IACxC,OAAO,CAAC,OAAO,CAAyC;IACxD,OAAO,CAAC,QAAQ,CAAyC;IACzD,OAAO,CAAC,QAAQ,CAAyC;IACzD,OAAO,CAAC,WAAW,CAAyC;IAC5D,OAAO,CAAC,QAAQ,CAAyC;IACzD,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,qBAAqB,CAAQ;IACrC,OAAO,CAAC,mBAAmB,CAAQ;IACnC,OAAO,CAAC,UAAU,CAA8B;;
|
|
1
|
+
{"version":3,"file":"opfsStorage.d.ts","sourceRoot":"","sources":["../../../src/storage/adapters/opfsStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,8 +5,17 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { GraphVerb, HNSWNoun, StatisticsData } from '../../coreTypes.js';
|
|
7
7
|
import { BaseStorage } from '../baseStorage.js';
|
|
8
|
+
import { OperationConfig } from '../../utils/operationUtils.js';
|
|
8
9
|
type HNSWNode = HNSWNoun;
|
|
9
10
|
type Edge = GraphVerb;
|
|
11
|
+
interface ChangeLogEntry {
|
|
12
|
+
timestamp: number;
|
|
13
|
+
operation: 'add' | 'update' | 'delete';
|
|
14
|
+
entityType: 'noun' | 'verb' | 'metadata';
|
|
15
|
+
entityId: string;
|
|
16
|
+
data?: any;
|
|
17
|
+
instanceId?: string;
|
|
18
|
+
}
|
|
10
19
|
export { S3CompatibleStorage as R2Storage };
|
|
11
20
|
/**
|
|
12
21
|
* S3-compatible storage adapter for server environments
|
|
@@ -45,6 +54,10 @@ export declare class S3CompatibleStorage extends BaseStorage {
|
|
|
45
54
|
private metadataPrefix;
|
|
46
55
|
private indexPrefix;
|
|
47
56
|
protected statisticsCache: StatisticsData | null;
|
|
57
|
+
private lockPrefix;
|
|
58
|
+
private activeLocks;
|
|
59
|
+
private changeLogPrefix;
|
|
60
|
+
private operationExecutors;
|
|
48
61
|
/**
|
|
49
62
|
* Initialize the storage adapter
|
|
50
63
|
* @param options Configuration options for the S3-compatible storage
|
|
@@ -58,6 +71,7 @@ export declare class S3CompatibleStorage extends BaseStorage {
|
|
|
58
71
|
secretAccessKey: string;
|
|
59
72
|
sessionToken?: string;
|
|
60
73
|
serviceType?: string;
|
|
74
|
+
operationConfig?: OperationConfig;
|
|
61
75
|
});
|
|
62
76
|
/**
|
|
63
77
|
* Initialize the storage adapter
|
|
@@ -210,9 +224,16 @@ export declare class S3CompatibleStorage extends BaseStorage {
|
|
|
210
224
|
*/
|
|
211
225
|
protected scheduleBatchUpdate(): void;
|
|
212
226
|
/**
|
|
213
|
-
* Flush statistics to storage
|
|
227
|
+
* Flush statistics to storage with distributed locking
|
|
214
228
|
*/
|
|
215
229
|
protected flushStatistics(): Promise<void>;
|
|
230
|
+
/**
|
|
231
|
+
* Merge statistics from storage with local statistics
|
|
232
|
+
* @param storageStats Statistics from storage
|
|
233
|
+
* @param localStats Local statistics to merge
|
|
234
|
+
* @returns Merged statistics data
|
|
235
|
+
*/
|
|
236
|
+
private mergeStatistics;
|
|
216
237
|
/**
|
|
217
238
|
* Save statistics data to storage
|
|
218
239
|
* @param statistics The statistics data to save
|
|
@@ -229,4 +250,40 @@ export declare class S3CompatibleStorage extends BaseStorage {
|
|
|
229
250
|
* @returns The statistics data or null if not found
|
|
230
251
|
*/
|
|
231
252
|
private tryGetStatisticsFromKey;
|
|
253
|
+
/**
|
|
254
|
+
* Append an entry to the change log for efficient synchronization
|
|
255
|
+
* @param entry The change log entry to append
|
|
256
|
+
*/
|
|
257
|
+
private appendToChangeLog;
|
|
258
|
+
/**
|
|
259
|
+
* Get changes from the change log since a specific timestamp
|
|
260
|
+
* @param sinceTimestamp Timestamp to get changes since
|
|
261
|
+
* @param maxEntries Maximum number of entries to return (default: 1000)
|
|
262
|
+
* @returns Array of change log entries
|
|
263
|
+
*/
|
|
264
|
+
getChangesSince(sinceTimestamp: number, maxEntries?: number): Promise<ChangeLogEntry[]>;
|
|
265
|
+
/**
|
|
266
|
+
* Clean up old change log entries to prevent unlimited growth
|
|
267
|
+
* @param olderThanTimestamp Remove entries older than this timestamp
|
|
268
|
+
*/
|
|
269
|
+
cleanupOldChangeLogs(olderThanTimestamp: number): Promise<void>;
|
|
270
|
+
/**
|
|
271
|
+
* Acquire a distributed lock for coordinating operations across multiple instances
|
|
272
|
+
* @param lockKey The key to lock on
|
|
273
|
+
* @param ttl Time to live for the lock in milliseconds (default: 30 seconds)
|
|
274
|
+
* @returns Promise that resolves to true if lock was acquired, false otherwise
|
|
275
|
+
*/
|
|
276
|
+
private acquireLock;
|
|
277
|
+
/**
|
|
278
|
+
* Release a distributed lock
|
|
279
|
+
* @param lockKey The key to unlock
|
|
280
|
+
* @param lockValue The value used when acquiring the lock (for verification)
|
|
281
|
+
* @returns Promise that resolves when lock is released
|
|
282
|
+
*/
|
|
283
|
+
private releaseLock;
|
|
284
|
+
/**
|
|
285
|
+
* Clean up expired locks to prevent lock leakage
|
|
286
|
+
* This method should be called periodically
|
|
287
|
+
*/
|
|
288
|
+
private cleanupExpiredLocks;
|
|
232
289
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"s3CompatibleStorage.d.ts","sourceRoot":"","sources":["../../../src/storage/adapters/s3CompatibleStorage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAC,MAAM,oBAAoB,CAAA;AACtE,OAAO,EAAC,WAAW,EAAgE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"s3CompatibleStorage.d.ts","sourceRoot":"","sources":["../../../src/storage/adapters/s3CompatibleStorage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAC,MAAM,oBAAoB,CAAA;AACtE,OAAO,EAAC,WAAW,EAAgE,MAAM,mBAAmB,CAAA;AAC5G,OAAO,EAA4B,eAAe,EAAC,MAAM,+BAA+B,CAAA;AAIxF,KAAK,QAAQ,GAAG,QAAQ,CAAA;AACxB,KAAK,IAAI,GAAG,SAAS,CAAA;AAGrB,UAAU,cAAc;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAA;IACtC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAA;IACxC,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,GAAG,CAAA;IACV,UAAU,CAAC,EAAE,MAAM,CAAA;CACtB;AAGD,OAAO,EAAC,mBAAmB,IAAI,SAAS,EAAC,CAAA;AAMzC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,mBAAoB,SAAQ,WAAW;IAChD,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,QAAQ,CAAC,CAAQ;IACzB,OAAO,CAAC,SAAS,CAAC,CAAQ;IAC1B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,YAAY,CAAC,CAAQ;IAG7B,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,WAAW,CAAQ;IAG3B,SAAS,CAAC,eAAe,EAAE,cAAc,GAAG,IAAI,CAAO;IAGvD,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,WAAW,CAAyB;IAG5C,OAAO,CAAC,eAAe,CAAwB;IAG/C,OAAO,CAAC,kBAAkB,CAA2B;IAErD;;;OAGG;gBACS,OAAO,EAAE;QACjB,UAAU,EAAE,MAAM,CAAA;QAClB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,WAAW,EAAE,MAAM,CAAA;QACnB,eAAe,EAAE,MAAM,CAAA;QACvB,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,eAAe,CAAC,EAAE,eAAe,CAAA;KACpC;IAqBD;;OAEG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAqDlC;;OAEG;cACa,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhE;;OAEG;cACa,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAuEvD;;OAEG;cACa,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAItE;;OAEG;cACa,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAiE7D;;OAEG;cACa,oBAAoB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAI3D;;OAEG;cACa,WAAW,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAyHlD;;;;OAIG;cACa,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAIlF;;;;OAIG;cACa,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAuBzE;;OAEG;cACa,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9D;;OAEG;cACa,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BrD;;OAEG;cACa,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjE;;OAEG;cACa,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IA6CnD;;OAEG;cACa,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAIvE;;OAEG;cACa,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IA2FzD;;OAEG;cACa,oBAAoB,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAI5D;;OAEG;cACa,WAAW,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IA6F9C;;OAEG;cACa,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAIjF;;OAEG;cACa,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAKnE;;OAEG;cACa,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAIjF;;OAEG;cACa,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAKnE;;OAEG;cACa,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAI3E;;OAEG;cACa,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAK7D;;OAEG;cACa,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9D;;OAEG;cACa,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BrD;;OAEG;IACU,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IA6DnE;;OAEG;IACU,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;IA6DzD;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAsDnC;;OAEG;IACU,gBAAgB,IAAI,OAAO,CAAC;QACrC,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAChC,CAAC;IAwJF,SAAS,CAAC,4BAA4B,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAO;IAEpE,SAAS,CAAC,kBAAkB,UAAQ;IAEpC,SAAS,CAAC,uBAAuB,SAAI;IAErC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,QAAO;IAE/C,SAAS,CAAC,QAAQ,CAAC,kBAAkB,SAAQ;IAE7C;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IAO/B;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAI/B;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAI9B;;OAEG;IACH,SAAS,CAAC,mBAAmB,IAAI,IAAI;IAwBrC;;OAEG;cACa,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAoGhD;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IA4BvB;;;OAGG;cACa,kBAAkB,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB7E;;;OAGG;cACa,iBAAiB,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAuDnE;;;;OAIG;YACW,uBAAuB;IAyCrC;;;OAGG;YACW,iBAAiB;IAmC/B;;;;;OAKG;IACU,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,GAAE,MAAa,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IA4D1G;;;OAGG;IACU,oBAAoB,CAAC,kBAAkB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6D5E;;;;;OAKG;YACW,WAAW;IAgEzB;;;;;OAKG;YACW,WAAW;IAgDzB;;;OAGG;YACW,mBAAmB;CAkEpC"}
|
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
import { StorageAdapter } from '../coreTypes.js';
|
|
6
6
|
import { MemoryStorage } from './adapters/memoryStorage.js';
|
|
7
7
|
import { OPFSStorage } from './adapters/opfsStorage.js';
|
|
8
|
-
import { FileSystemStorage } from './adapters/fileSystemStorage.js';
|
|
9
8
|
import { S3CompatibleStorage, R2Storage } from './adapters/s3CompatibleStorage.js';
|
|
9
|
+
import { FileSystemStorage } from './adapters/fileSystemStorage.js';
|
|
10
|
+
import { OperationConfig } from '../utils/operationUtils.js';
|
|
10
11
|
/**
|
|
11
12
|
* Options for creating a storage adapter
|
|
12
13
|
*/
|
|
@@ -138,6 +139,10 @@ export interface StorageOptions {
|
|
|
138
139
|
*/
|
|
139
140
|
serviceType?: string;
|
|
140
141
|
};
|
|
142
|
+
/**
|
|
143
|
+
* Operation configuration for timeout and retry behavior
|
|
144
|
+
*/
|
|
145
|
+
operationConfig?: OperationConfig;
|
|
141
146
|
}
|
|
142
147
|
/**
|
|
143
148
|
* Create a storage adapter based on the environment and configuration
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storageFactory.d.ts","sourceRoot":"","sources":["../../src/storage/storageFactory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAC,cAAc,EAAC,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAC,aAAa,EAAC,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"storageFactory.d.ts","sourceRoot":"","sources":["../../src/storage/storageFactory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAC,cAAc,EAAC,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAC,aAAa,EAAC,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAC,mBAAmB,EAAE,SAAS,EAAC,MAAM,mCAAmC,CAAA;AAChF,OAAO,EAAC,iBAAiB,EAAC,MAAM,iCAAiC,CAAA;AAEjE,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAA;AAE1D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B;;;;;;;;;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;QACR;;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;KACxB,CAAA;IAED;;OAEG;IACH,SAAS,CAAC,EAAE;QACR;;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;KAC1B,CAAA;IAED;;OAEG;IACH,UAAU,CAAC,EAAE;QACT;;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;KACpB,CAAA;IAED;;OAEG;IACH,eAAe,CAAC,EAAE;QACd;;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;KACvB,CAAA;IAED;;OAEG;IACH,eAAe,CAAC,EAAE,eAAe,CAAA;CACpC;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAC/B,OAAO,GAAE,cAAmB,GAC7B,OAAO,CAAC,cAAc,CAAC,CA8LzB;AAED;;GAEG;AACH,OAAO,EACH,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,SAAS,EACZ,CAAA"}
|