strata-storage 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/Readme.md +113 -0
  2. package/android/src/main/java/com/strata/storage/EncryptedStorage.java +65 -0
  3. package/android/src/main/java/com/strata/storage/SQLiteStorage.java +147 -0
  4. package/android/src/main/java/com/strata/storage/SharedPreferencesStorage.java +74 -0
  5. package/android/src/main/java/com/stratastorage/StrataStoragePlugin.java +256 -0
  6. package/dist/adapters/capacitor/FilesystemAdapter.d.ts +46 -0
  7. package/dist/adapters/capacitor/FilesystemAdapter.d.ts.map +1 -0
  8. package/dist/adapters/capacitor/FilesystemAdapter.js +162 -0
  9. package/dist/adapters/capacitor/PreferencesAdapter.d.ts +46 -0
  10. package/dist/adapters/capacitor/PreferencesAdapter.d.ts.map +1 -0
  11. package/dist/adapters/capacitor/PreferencesAdapter.js +162 -0
  12. package/dist/adapters/capacitor/SecureAdapter.d.ts +69 -0
  13. package/dist/adapters/capacitor/SecureAdapter.d.ts.map +1 -0
  14. package/dist/adapters/capacitor/SecureAdapter.js +214 -0
  15. package/dist/adapters/capacitor/SqliteAdapter.d.ts +68 -0
  16. package/dist/adapters/capacitor/SqliteAdapter.d.ts.map +1 -0
  17. package/dist/adapters/capacitor/SqliteAdapter.js +277 -0
  18. package/dist/adapters/capacitor/index.d.ts +9 -0
  19. package/dist/adapters/capacitor/index.d.ts.map +1 -0
  20. package/dist/adapters/capacitor/index.js +8 -0
  21. package/dist/adapters/web/CacheAdapter.d.ts +91 -0
  22. package/dist/adapters/web/CacheAdapter.d.ts.map +1 -0
  23. package/dist/adapters/web/CacheAdapter.js +291 -0
  24. package/dist/adapters/web/CookieAdapter.d.ts +77 -0
  25. package/dist/adapters/web/CookieAdapter.d.ts.map +1 -0
  26. package/dist/adapters/web/CookieAdapter.js +260 -0
  27. package/dist/adapters/web/IndexedDBAdapter.d.ts +78 -0
  28. package/dist/adapters/web/IndexedDBAdapter.d.ts.map +1 -0
  29. package/dist/adapters/web/IndexedDBAdapter.js +371 -0
  30. package/dist/adapters/web/LocalStorageAdapter.d.ts +63 -0
  31. package/dist/adapters/web/LocalStorageAdapter.d.ts.map +1 -0
  32. package/dist/adapters/web/LocalStorageAdapter.js +238 -0
  33. package/dist/adapters/web/MemoryAdapter.d.ts +69 -0
  34. package/dist/adapters/web/MemoryAdapter.d.ts.map +1 -0
  35. package/dist/adapters/web/MemoryAdapter.js +165 -0
  36. package/dist/adapters/web/SessionStorageAdapter.d.ts +53 -0
  37. package/dist/adapters/web/SessionStorageAdapter.d.ts.map +1 -0
  38. package/dist/adapters/web/SessionStorageAdapter.js +180 -0
  39. package/dist/adapters/web/index.d.ts +10 -0
  40. package/dist/adapters/web/index.d.ts.map +1 -0
  41. package/dist/adapters/web/index.js +9 -0
  42. package/dist/core/AdapterRegistry.d.ts +52 -0
  43. package/dist/core/AdapterRegistry.d.ts.map +1 -0
  44. package/dist/core/AdapterRegistry.js +102 -0
  45. package/dist/core/BaseAdapter.d.ts +79 -0
  46. package/dist/core/BaseAdapter.d.ts.map +1 -0
  47. package/dist/core/BaseAdapter.js +197 -0
  48. package/dist/core/StorageStrategy.d.ts +55 -0
  49. package/dist/core/StorageStrategy.d.ts.map +1 -0
  50. package/dist/core/StorageStrategy.js +199 -0
  51. package/dist/core/Strata.d.ts +122 -0
  52. package/dist/core/Strata.d.ts.map +1 -0
  53. package/dist/core/Strata.js +568 -0
  54. package/dist/features/compression.d.ts +65 -0
  55. package/dist/features/compression.d.ts.map +1 -0
  56. package/dist/features/compression.js +205 -0
  57. package/dist/features/encryption.d.ts +68 -0
  58. package/dist/features/encryption.d.ts.map +1 -0
  59. package/dist/features/encryption.js +172 -0
  60. package/dist/features/migration.d.ts +17 -0
  61. package/dist/features/migration.d.ts.map +1 -0
  62. package/dist/features/migration.js +43 -0
  63. package/dist/features/query.d.ts +75 -0
  64. package/dist/features/query.d.ts.map +1 -0
  65. package/dist/features/query.js +305 -0
  66. package/dist/features/sync.d.ts +87 -0
  67. package/dist/features/sync.d.ts.map +1 -0
  68. package/dist/features/sync.js +233 -0
  69. package/dist/features/ttl.d.ts +124 -0
  70. package/dist/features/ttl.d.ts.map +1 -0
  71. package/dist/features/ttl.js +236 -0
  72. package/dist/index.d.ts +44 -0
  73. package/dist/index.d.ts.map +1 -0
  74. package/dist/index.js +46 -0
  75. package/dist/package.json +60 -0
  76. package/dist/plugin/definitions.d.ts +219 -0
  77. package/dist/plugin/definitions.d.ts.map +1 -0
  78. package/dist/plugin/definitions.js +5 -0
  79. package/dist/plugin/index.d.ts +8 -0
  80. package/dist/plugin/index.d.ts.map +1 -0
  81. package/dist/plugin/index.js +27 -0
  82. package/dist/plugin/web.d.ts +24 -0
  83. package/dist/plugin/web.d.ts.map +1 -0
  84. package/dist/plugin/web.js +35 -0
  85. package/dist/types/index.d.ts +558 -0
  86. package/dist/types/index.d.ts.map +1 -0
  87. package/dist/types/index.js +14 -0
  88. package/dist/utils/errors.d.ts +92 -0
  89. package/dist/utils/errors.d.ts.map +1 -0
  90. package/dist/utils/errors.js +153 -0
  91. package/dist/utils/index.d.ts +105 -0
  92. package/dist/utils/index.d.ts.map +1 -0
  93. package/dist/utils/index.js +329 -0
  94. package/ios/Plugin/KeychainStorage.swift +87 -0
  95. package/ios/Plugin/SQLiteStorage.swift +167 -0
  96. package/ios/Plugin/StrataStoragePlugin.swift +204 -0
  97. package/ios/Plugin/UserDefaultsStorage.swift +44 -0
  98. package/package.json +126 -0
  99. package/scripts/build.js +52 -0
  100. package/scripts/cli.js +60 -0
  101. package/scripts/configure.js +444 -0
  102. package/scripts/postinstall.js +33 -0
@@ -0,0 +1,558 @@
1
+ /**
2
+ * Core type definitions for Strata Storage
3
+ * Zero dependencies - all types defined from scratch
4
+ */
5
+ /**
6
+ * Supported storage types across all platforms
7
+ */
8
+ export type StorageType = 'memory' | 'localStorage' | 'sessionStorage' | 'indexedDB' | 'cookies' | 'cache' | 'preferences' | 'sqlite' | 'filesystem' | 'secure';
9
+ /**
10
+ * Platform types
11
+ */
12
+ export type Platform = 'web' | 'ios' | 'android' | 'node' | 'auto';
13
+ /**
14
+ * Storage strategies for automatic adapter selection
15
+ */
16
+ export declare enum StorageStrategy {
17
+ PERFORMANCE_FIRST = "performance_first",
18
+ PERSISTENCE_FIRST = "persistence_first",
19
+ SECURITY_FIRST = "security_first",
20
+ CAPACITY_FIRST = "capacity_first"
21
+ }
22
+ /**
23
+ * Options for storage operations
24
+ */
25
+ export interface StorageOptions {
26
+ /**
27
+ * Storage type to use (overrides default)
28
+ */
29
+ storage?: StorageType | StorageType[];
30
+ /**
31
+ * Enable encryption for this operation
32
+ */
33
+ encrypt?: boolean;
34
+ /**
35
+ * Password for encryption/decryption
36
+ */
37
+ encryptionPassword?: string;
38
+ /**
39
+ * Skip decryption when reading encrypted values
40
+ */
41
+ skipDecryption?: boolean;
42
+ /**
43
+ * Ignore decryption errors and return null instead
44
+ */
45
+ ignoreDecryptionErrors?: boolean;
46
+ /**
47
+ * Enable compression for this operation
48
+ */
49
+ compress?: boolean;
50
+ /**
51
+ * Time to live in milliseconds
52
+ */
53
+ ttl?: number;
54
+ /**
55
+ * Sliding expiration - reset TTL on access
56
+ */
57
+ sliding?: boolean;
58
+ /**
59
+ * Expire at specific time (overrides ttl)
60
+ */
61
+ expireAt?: Date | number;
62
+ /**
63
+ * Expire after a certain date
64
+ */
65
+ expireAfter?: Date | number;
66
+ /**
67
+ * Tags for grouping and querying
68
+ */
69
+ tags?: string[];
70
+ /**
71
+ * Namespace for isolation
72
+ */
73
+ namespace?: string;
74
+ /**
75
+ * Metadata to attach
76
+ */
77
+ metadata?: Record<string, unknown>;
78
+ }
79
+ /**
80
+ * Storage value with metadata
81
+ */
82
+ export interface StorageValue<T = unknown> {
83
+ /**
84
+ * The actual stored value
85
+ */
86
+ value: T;
87
+ /**
88
+ * Creation timestamp
89
+ */
90
+ created: number;
91
+ /**
92
+ * Last update timestamp
93
+ */
94
+ updated: number;
95
+ /**
96
+ * Expiration timestamp (if TTL is set)
97
+ */
98
+ expires?: number;
99
+ /**
100
+ * Tags for grouping
101
+ */
102
+ tags?: string[];
103
+ /**
104
+ * Custom metadata
105
+ */
106
+ metadata?: Record<string, unknown>;
107
+ /**
108
+ * Whether value is encrypted
109
+ */
110
+ encrypted?: boolean;
111
+ /**
112
+ * Whether value is compressed
113
+ */
114
+ compressed?: boolean;
115
+ }
116
+ /**
117
+ * Storage change event
118
+ */
119
+ export interface StorageChange<T = unknown> {
120
+ /**
121
+ * The key that changed
122
+ */
123
+ key: string;
124
+ /**
125
+ * Old value (if available)
126
+ */
127
+ oldValue?: T;
128
+ /**
129
+ * New value (if available)
130
+ */
131
+ newValue?: T;
132
+ /**
133
+ * Source of the change
134
+ */
135
+ source: 'local' | 'remote' | 'sync';
136
+ /**
137
+ * Storage type where change occurred
138
+ */
139
+ storage: StorageType;
140
+ /**
141
+ * Timestamp of change
142
+ */
143
+ timestamp: number;
144
+ }
145
+ /**
146
+ * Subscription callback
147
+ */
148
+ export type SubscriptionCallback<T = unknown> = (change: StorageChange<T>) => void;
149
+ /**
150
+ * Unsubscribe function
151
+ */
152
+ export type UnsubscribeFunction = () => void;
153
+ /**
154
+ * Query operators for advanced operations
155
+ */
156
+ export interface QueryOperators {
157
+ $eq?: unknown;
158
+ $ne?: unknown;
159
+ $gt?: number | string;
160
+ $gte?: number | string;
161
+ $lt?: number | string;
162
+ $lte?: number | string;
163
+ $in?: unknown[];
164
+ $nin?: unknown[];
165
+ $regex?: string | RegExp;
166
+ $exists?: boolean;
167
+ $type?: string;
168
+ $and?: QueryCondition[];
169
+ $or?: QueryCondition[];
170
+ $not?: QueryCondition;
171
+ }
172
+ /**
173
+ * Query condition
174
+ */
175
+ export type QueryCondition = {
176
+ [key: string]: unknown | QueryOperators;
177
+ };
178
+ /**
179
+ * Clear options
180
+ */
181
+ export interface ClearOptions {
182
+ /**
183
+ * Pattern to match keys (glob or regex)
184
+ */
185
+ pattern?: string | RegExp;
186
+ /**
187
+ * Tags to filter by
188
+ */
189
+ tags?: string[];
190
+ /**
191
+ * Only clear expired items
192
+ */
193
+ expiredOnly?: boolean;
194
+ /**
195
+ * Namespace to clear
196
+ */
197
+ namespace?: string;
198
+ }
199
+ /**
200
+ * Size information
201
+ */
202
+ export interface SizeInfo {
203
+ /**
204
+ * Total size in bytes
205
+ */
206
+ total: number;
207
+ /**
208
+ * Size by storage type
209
+ */
210
+ byStorage?: Record<StorageType, number>;
211
+ /**
212
+ * Number of items
213
+ */
214
+ count: number;
215
+ /**
216
+ * Detailed breakdown
217
+ */
218
+ detailed?: {
219
+ keys: number;
220
+ values: number;
221
+ metadata: number;
222
+ };
223
+ }
224
+ /**
225
+ * Storage adapter capabilities
226
+ */
227
+ export interface StorageCapabilities {
228
+ /**
229
+ * Supports persistence across sessions
230
+ */
231
+ persistent: boolean;
232
+ /**
233
+ * Supports synchronous operations
234
+ */
235
+ synchronous: boolean;
236
+ /**
237
+ * Supports subscriptions/watching
238
+ */
239
+ observable: boolean;
240
+ /**
241
+ * Supports transactions
242
+ */
243
+ transactional: boolean;
244
+ /**
245
+ * Supports querying
246
+ */
247
+ queryable: boolean;
248
+ /**
249
+ * Maximum storage size (bytes, -1 for unlimited)
250
+ */
251
+ maxSize: number;
252
+ /**
253
+ * Supports binary data
254
+ */
255
+ binary: boolean;
256
+ /**
257
+ * Supports encryption
258
+ */
259
+ encrypted: boolean;
260
+ /**
261
+ * Cross-tab/window support
262
+ */
263
+ crossTab: boolean;
264
+ }
265
+ /**
266
+ * Strata configuration
267
+ */
268
+ export interface StrataConfig {
269
+ /**
270
+ * Target platform
271
+ */
272
+ platform?: Platform;
273
+ /**
274
+ * Storage selection strategy
275
+ */
276
+ strategy?: StorageStrategy;
277
+ /**
278
+ * Default storage types in order of preference
279
+ */
280
+ defaultStorages?: StorageType[];
281
+ /**
282
+ * Adapter configuration
283
+ */
284
+ adapters?: {
285
+ memory?: boolean | {
286
+ maxSize?: number;
287
+ };
288
+ localStorage?: boolean | {
289
+ prefix?: string;
290
+ };
291
+ sessionStorage?: boolean | {
292
+ prefix?: string;
293
+ };
294
+ indexedDB?: boolean | {
295
+ dbName?: string;
296
+ version?: number;
297
+ };
298
+ cookies?: boolean | {
299
+ secure?: boolean;
300
+ sameSite?: 'strict' | 'lax' | 'none';
301
+ };
302
+ cache?: boolean | {
303
+ cacheName?: string;
304
+ };
305
+ preferences?: boolean;
306
+ sqlite?: boolean | {
307
+ filename?: string;
308
+ };
309
+ filesystem?: boolean | {
310
+ directory?: string;
311
+ };
312
+ secure?: boolean;
313
+ };
314
+ /**
315
+ * Native configuration (for mobile platforms)
316
+ */
317
+ native?: {
318
+ preferences?: boolean;
319
+ sqlite?: boolean;
320
+ secure?: boolean;
321
+ filesystem?: boolean;
322
+ };
323
+ /**
324
+ * Sync configuration
325
+ */
326
+ sync?: {
327
+ enabled?: boolean;
328
+ storages?: StorageType[];
329
+ interval?: number;
330
+ conflictResolution?: 'latest' | 'merge' | ((conflicts: unknown[]) => unknown);
331
+ };
332
+ /**
333
+ * Cache configuration
334
+ */
335
+ cache?: {
336
+ enabled?: boolean;
337
+ maxSize?: string | number;
338
+ ttl?: number;
339
+ };
340
+ /**
341
+ * Compression configuration
342
+ */
343
+ compression?: {
344
+ enabled?: boolean;
345
+ threshold?: number;
346
+ algorithm?: 'lz' | 'gzip';
347
+ };
348
+ /**
349
+ * Encryption configuration
350
+ */
351
+ encryption?: {
352
+ enabled?: boolean;
353
+ algorithm?: 'AES-GCM' | 'AES-CBC';
354
+ password?: string;
355
+ keyLength?: 128 | 192 | 256;
356
+ iterations?: number;
357
+ saltLength?: number;
358
+ keyDerivation?: 'PBKDF2' | 'scrypt';
359
+ };
360
+ /**
361
+ * TTL (Time To Live) configuration
362
+ */
363
+ ttl?: {
364
+ /**
365
+ * Default TTL in milliseconds
366
+ */
367
+ defaultTTL?: number;
368
+ /**
369
+ * Cleanup interval in milliseconds (default: 60000 - 1 minute)
370
+ */
371
+ cleanupInterval?: number;
372
+ /**
373
+ * Enable automatic cleanup (default: true)
374
+ */
375
+ autoCleanup?: boolean;
376
+ /**
377
+ * Maximum number of items to check per cleanup cycle
378
+ */
379
+ batchSize?: number;
380
+ /**
381
+ * Callback when items expire
382
+ */
383
+ onExpire?: (keys: string[]) => void;
384
+ };
385
+ /**
386
+ * Debug configuration
387
+ */
388
+ debug?: {
389
+ enabled?: boolean;
390
+ verbosity?: 'minimal' | 'normal' | 'verbose';
391
+ logOperations?: boolean;
392
+ logPerformance?: boolean;
393
+ };
394
+ /**
395
+ * Performance configuration
396
+ */
397
+ performance?: {
398
+ slowThreshold?: number;
399
+ batchSize?: number;
400
+ };
401
+ }
402
+ /**
403
+ * Storage adapter interface - all adapters must implement this
404
+ */
405
+ export interface StorageAdapter {
406
+ /**
407
+ * Adapter name
408
+ */
409
+ readonly name: StorageType;
410
+ /**
411
+ * Adapter capabilities
412
+ */
413
+ readonly capabilities: StorageCapabilities;
414
+ /**
415
+ * Check if adapter is available on current platform
416
+ */
417
+ isAvailable(): Promise<boolean>;
418
+ /**
419
+ * Initialize the adapter
420
+ */
421
+ initialize(config?: unknown): Promise<void>;
422
+ /**
423
+ * Get a value
424
+ */
425
+ get<T = unknown>(key: string): Promise<StorageValue<T> | null>;
426
+ /**
427
+ * Set a value
428
+ */
429
+ set<T = unknown>(key: string, value: StorageValue<T>): Promise<void>;
430
+ /**
431
+ * Remove a value
432
+ */
433
+ remove(key: string): Promise<void>;
434
+ /**
435
+ * Clear all or matching values
436
+ */
437
+ clear(options?: ClearOptions): Promise<void>;
438
+ /**
439
+ * Check if key exists
440
+ */
441
+ has(key: string): Promise<boolean>;
442
+ /**
443
+ * Get all keys
444
+ */
445
+ keys(pattern?: string | RegExp): Promise<string[]>;
446
+ /**
447
+ * Get storage size
448
+ */
449
+ size(detailed?: boolean): Promise<SizeInfo>;
450
+ /**
451
+ * Subscribe to changes
452
+ */
453
+ subscribe?(callback: SubscriptionCallback): UnsubscribeFunction;
454
+ /**
455
+ * Query values (if supported)
456
+ */
457
+ query?<T = unknown>(condition: QueryCondition): Promise<Array<{
458
+ key: string;
459
+ value: T;
460
+ }>>;
461
+ /**
462
+ * Begin transaction (if supported)
463
+ */
464
+ transaction?(): Promise<Transaction>;
465
+ /**
466
+ * Close/cleanup adapter
467
+ */
468
+ close?(): Promise<void>;
469
+ }
470
+ /**
471
+ * Transaction interface for atomic operations
472
+ */
473
+ export interface Transaction {
474
+ /**
475
+ * Get within transaction
476
+ */
477
+ get<T = unknown>(key: string): Promise<T | null>;
478
+ /**
479
+ * Set within transaction
480
+ */
481
+ set<T = unknown>(key: string, value: T): Promise<void>;
482
+ /**
483
+ * Remove within transaction
484
+ */
485
+ remove(key: string): Promise<void>;
486
+ /**
487
+ * Commit transaction
488
+ */
489
+ commit(): Promise<void>;
490
+ /**
491
+ * Rollback transaction
492
+ */
493
+ rollback(): Promise<void>;
494
+ }
495
+ /**
496
+ * Migration interface
497
+ */
498
+ export interface Migration {
499
+ /**
500
+ * Migration version
501
+ */
502
+ version: number;
503
+ /**
504
+ * Migration description
505
+ */
506
+ description?: string;
507
+ /**
508
+ * Run the migration
509
+ */
510
+ up(storage: StorageAdapter): Promise<void>;
511
+ /**
512
+ * Rollback the migration
513
+ */
514
+ down?(storage: StorageAdapter): Promise<void>;
515
+ }
516
+ /**
517
+ * Export/Import formats
518
+ */
519
+ export type ExportFormat = 'json' | 'csv' | 'sql' | 'binary';
520
+ /**
521
+ * Export options
522
+ */
523
+ export interface ExportOptions {
524
+ /**
525
+ * Format to export in
526
+ */
527
+ format?: ExportFormat;
528
+ /**
529
+ * Include metadata
530
+ */
531
+ includeMetadata?: boolean;
532
+ /**
533
+ * Keys to export (all if not specified)
534
+ */
535
+ keys?: string[];
536
+ /**
537
+ * Pretty print JSON
538
+ */
539
+ pretty?: boolean;
540
+ }
541
+ /**
542
+ * Import options
543
+ */
544
+ export interface ImportOptions {
545
+ /**
546
+ * Format to import from
547
+ */
548
+ format?: ExportFormat;
549
+ /**
550
+ * Overwrite existing keys
551
+ */
552
+ overwrite?: boolean;
553
+ /**
554
+ * Merge strategy
555
+ */
556
+ merge?: 'replace' | 'deep' | 'shallow';
557
+ }
558
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Core type definitions for Strata Storage
3
+ * Zero dependencies - all types defined from scratch
4
+ */
5
+ /**
6
+ * Storage strategies for automatic adapter selection
7
+ */
8
+ export var StorageStrategy;
9
+ (function (StorageStrategy) {
10
+ StorageStrategy["PERFORMANCE_FIRST"] = "performance_first";
11
+ StorageStrategy["PERSISTENCE_FIRST"] = "persistence_first";
12
+ StorageStrategy["SECURITY_FIRST"] = "security_first";
13
+ StorageStrategy["CAPACITY_FIRST"] = "capacity_first";
14
+ })(StorageStrategy || (StorageStrategy = {}));
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Custom error classes for Strata Storage
3
+ */
4
+ /**
5
+ * Base error class for all Strata errors
6
+ */
7
+ export declare class StrataError extends Error {
8
+ readonly code: string;
9
+ readonly details?: unknown;
10
+ constructor(message: string, code: string, details?: unknown);
11
+ }
12
+ /**
13
+ * Error thrown when storage quota is exceeded
14
+ */
15
+ export declare class QuotaExceededError extends StrataError {
16
+ constructor(message?: string, details?: unknown);
17
+ }
18
+ /**
19
+ * Error thrown when adapter is not available
20
+ */
21
+ export declare class AdapterNotAvailableError extends StrataError {
22
+ constructor(adapterName: string, details?: unknown);
23
+ }
24
+ /**
25
+ * Error thrown when operation is not supported
26
+ */
27
+ export declare class NotSupportedError extends StrataError {
28
+ constructor(operation: string, adapterName?: string, details?: unknown);
29
+ }
30
+ /**
31
+ * Error thrown when encryption fails
32
+ */
33
+ export declare class EncryptionError extends StrataError {
34
+ constructor(message?: string, details?: unknown);
35
+ }
36
+ /**
37
+ * Error thrown when compression fails
38
+ */
39
+ export declare class CompressionError extends StrataError {
40
+ constructor(message?: string, details?: unknown);
41
+ }
42
+ /**
43
+ * Error thrown when serialization fails
44
+ */
45
+ export declare class SerializationError extends StrataError {
46
+ constructor(message?: string, details?: unknown);
47
+ }
48
+ /**
49
+ * Error thrown when validation fails
50
+ */
51
+ export declare class ValidationError extends StrataError {
52
+ constructor(message: string, details?: unknown);
53
+ }
54
+ /**
55
+ * Error thrown when transaction fails
56
+ */
57
+ export declare class TransactionError extends StrataError {
58
+ constructor(message?: string, details?: unknown);
59
+ }
60
+ /**
61
+ * Error thrown when migration fails
62
+ */
63
+ export declare class MigrationError extends StrataError {
64
+ constructor(message: string, details?: unknown);
65
+ }
66
+ /**
67
+ * Error thrown when sync operation fails
68
+ */
69
+ export declare class SyncError extends StrataError {
70
+ constructor(message?: string, details?: unknown);
71
+ }
72
+ /**
73
+ * Check if error is a Strata error
74
+ */
75
+ export declare function isStrataError(error: unknown): error is StrataError;
76
+ /**
77
+ * General storage error
78
+ */
79
+ export declare class StorageError extends StrataError {
80
+ constructor(message: string, details?: unknown);
81
+ }
82
+ /**
83
+ * Error thrown when a key is not found
84
+ */
85
+ export declare class NotFoundError extends StrataError {
86
+ constructor(key: string, details?: unknown);
87
+ }
88
+ /**
89
+ * Check if error is a quota exceeded error
90
+ */
91
+ export declare function isQuotaError(error: unknown): boolean;
92
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,qBAAa,WAAY,SAAQ,KAAK;IACpC,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,OAAO,CAAC,EAAE,OAAO,CAAC;gBAEtB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;CAW7D;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,WAAW;gBACrC,OAAO,SAA2B,EAAE,OAAO,CAAC,EAAE,OAAO;CAIlE;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,WAAW;gBAC3C,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;CAInD;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;gBACpC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;CAOvE;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,WAAW;gBAClC,OAAO,SAAgC,EAAE,OAAO,CAAC,EAAE,OAAO;CAIvE;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,WAAW;gBACnC,OAAO,SAAiC,EAAE,OAAO,CAAC,EAAE,OAAO;CAIxE;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,WAAW;gBACrC,OAAO,SAAyB,EAAE,OAAO,CAAC,EAAE,OAAO;CAIhE;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,WAAW;gBAClC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;CAI/C;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,WAAW;gBACnC,OAAO,SAAuB,EAAE,OAAO,CAAC,EAAE,OAAO;CAI9D;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,WAAW;gBACjC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;CAI/C;AAED;;GAEG;AACH,qBAAa,SAAU,SAAQ,WAAW;gBAC5B,OAAO,SAA0B,EAAE,OAAO,CAAC,EAAE,OAAO;CAIjE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAElE;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,WAAW;gBAC/B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;CAI/C;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,WAAW;gBAChC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;CAI3C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAepD"}