strata-storage 1.6.0 → 2.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 (53) hide show
  1. package/Readme.md +66 -20
  2. package/dist/README.md +66 -20
  3. package/dist/adapters/web/MemoryAdapter.js +1 -1
  4. package/dist/capacitor.d.ts +20 -0
  5. package/dist/capacitor.d.ts.map +1 -0
  6. package/dist/capacitor.js +48 -0
  7. package/dist/core/Strata.d.ts +28 -3
  8. package/dist/core/Strata.d.ts.map +1 -1
  9. package/dist/core/Strata.js +51 -52
  10. package/dist/features/compression/index.d.ts +2 -0
  11. package/dist/features/compression/index.d.ts.map +1 -0
  12. package/dist/features/compression/index.js +1 -0
  13. package/dist/features/encryption/index.d.ts +2 -0
  14. package/dist/features/encryption/index.d.ts.map +1 -0
  15. package/dist/features/encryption/index.js +1 -0
  16. package/dist/features/observer/index.d.ts +2 -0
  17. package/dist/features/observer/index.d.ts.map +1 -0
  18. package/dist/features/observer/index.js +1 -0
  19. package/dist/features/observer.d.ts +20 -0
  20. package/dist/features/observer.d.ts.map +1 -0
  21. package/dist/features/observer.js +32 -0
  22. package/dist/features/query/index.d.ts +2 -0
  23. package/dist/features/query/index.d.ts.map +1 -0
  24. package/dist/features/query/index.js +1 -0
  25. package/dist/features/query.d.ts.map +1 -1
  26. package/dist/features/query.js +8 -1
  27. package/dist/features/sync/index.d.ts +2 -0
  28. package/dist/features/sync/index.d.ts.map +1 -0
  29. package/dist/features/sync/index.js +1 -0
  30. package/dist/features/ttl/index.d.ts +2 -0
  31. package/dist/features/ttl/index.d.ts.map +1 -0
  32. package/dist/features/ttl/index.js +1 -0
  33. package/dist/firebase.d.ts +26 -0
  34. package/dist/firebase.d.ts.map +1 -0
  35. package/dist/firebase.js +147 -0
  36. package/dist/index.d.ts +13 -47
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +46 -50
  39. package/dist/package.json +9 -1
  40. package/dist/plugin/definitions.d.ts +2 -2
  41. package/dist/plugin/definitions.d.ts.map +1 -1
  42. package/dist/plugin/index.d.ts +2 -1
  43. package/dist/plugin/index.d.ts.map +1 -1
  44. package/dist/plugin/index.js +76 -10
  45. package/dist/types/index.d.ts +190 -0
  46. package/dist/types/index.d.ts.map +1 -1
  47. package/dist/types/index.js +13 -0
  48. package/dist/utils/index.d.ts +20 -0
  49. package/dist/utils/index.d.ts.map +1 -1
  50. package/dist/utils/index.js +34 -0
  51. package/package.json +10 -1
  52. package/scripts/build.js +8 -0
  53. package/scripts/postinstall.js +15 -8
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Storage Observer - Watch for storage changes
3
+ */
4
+ export class StorageObserver {
5
+ observers = new Set();
6
+ /**
7
+ * Subscribe to storage events
8
+ */
9
+ subscribe(callback) {
10
+ this.observers.add(callback);
11
+ return () => this.observers.delete(callback);
12
+ }
13
+ /**
14
+ * Emit a storage event
15
+ */
16
+ emit(event) {
17
+ this.observers.forEach((callback) => {
18
+ try {
19
+ callback(event);
20
+ }
21
+ catch (error) {
22
+ console.error('Error in storage observer:', error);
23
+ }
24
+ });
25
+ }
26
+ /**
27
+ * Clear all observers
28
+ */
29
+ clear() {
30
+ this.observers.clear();
31
+ }
32
+ }
@@ -0,0 +1,2 @@
1
+ export * from '../query';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/query/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
@@ -0,0 +1 @@
1
+ export * from "../query.js";
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/features/query.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,SAAS,CAAC;AAE9D;;GAEG;AACH,qBAAa,WAAW;IACtB;;OAEG;IACH,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,GAAG,OAAO;IAwB3D;;OAEG;IACH,OAAO,CAAC,YAAY;IAIpB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IASxB;;OAEG;IACH,OAAO,CAAC,eAAe;IAqDvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAkBrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAmBtB;;OAEG;IACH,OAAO,CAAC,MAAM;IA+Bd;;OAEG;IACH,OAAO,CAAC,OAAO;IAyBf;;OAEG;IACH,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,OAAO,CAAC,OAAO;IASf;;OAEG;IACH,OAAO,CAAC,WAAW;IAcnB;;OAEG;IACH,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;IAoBxD;;OAEG;IACH,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IA2B5E;;OAEG;IACH,OAAO,CAAC,cAAc;IAetB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAc1B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,WAAW,CAE/C"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/features/query.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,SAAS,CAAC;AAE9D;;GAEG;AACH,qBAAa,WAAW;IACtB;;OAEG;IACH,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,GAAG,OAAO;IAwB3D;;OAEG;IACH,OAAO,CAAC,YAAY;IAIpB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IASxB;;OAEG;IACH,OAAO,CAAC,eAAe;IA2DvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAkBrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAmBtB;;OAEG;IACH,OAAO,CAAC,MAAM;IA+Bd;;OAEG;IACH,OAAO,CAAC,OAAO;IAyBf;;OAEG;IACH,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,OAAO,CAAC,OAAO;IASf;;OAEG;IACH,OAAO,CAAC,WAAW;IAcnB;;OAEG;IACH,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;IAoBxD;;OAEG;IACH,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IA2B5E;;OAEG;IACH,OAAO,CAAC,cAAc;IAetB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAc1B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,WAAW,CAE/C"}
@@ -63,7 +63,14 @@ export class QueryEngine {
63
63
  case '$lte':
64
64
  return this.compare(value, operand) <= 0;
65
65
  case '$in':
66
- return Array.isArray(operand) && operand.some((v) => this.equals(value, v));
66
+ if (!Array.isArray(operand))
67
+ return false;
68
+ // If value is an array, check if any operand value is in the array
69
+ if (Array.isArray(value)) {
70
+ return operand.some((v) => value.some((item) => this.equals(item, v)));
71
+ }
72
+ // Otherwise check if value equals any operand value
73
+ return operand.some((v) => this.equals(value, v));
67
74
  case '$nin':
68
75
  return Array.isArray(operand) && !operand.some((v) => this.equals(value, v));
69
76
  case '$regex':
@@ -0,0 +1,2 @@
1
+ export * from '../sync';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/sync/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC"}
@@ -0,0 +1 @@
1
+ export * from "../sync.js";
@@ -0,0 +1,2 @@
1
+ export * from '../ttl';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/ttl/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC"}
@@ -0,0 +1 @@
1
+ export * from "../ttl.js";
@@ -0,0 +1,26 @@
1
+ import type { Strata } from './core/Strata';
2
+ /**
3
+ * Firebase sync configuration
4
+ */
5
+ export interface FirebaseSyncConfig {
6
+ apiKey: string;
7
+ authDomain: string;
8
+ projectId: string;
9
+ storageBucket?: string;
10
+ messagingSenderId?: string;
11
+ appId: string;
12
+ realtimeDatabase?: boolean;
13
+ firestore?: boolean;
14
+ collectionName?: string;
15
+ syncInterval?: number;
16
+ }
17
+ /**
18
+ * Enable Firebase sync for Strata Storage
19
+ * This dynamically imports Firebase SDK only when needed
20
+ */
21
+ export declare function enableFirebaseSync(storage: Strata, config: FirebaseSyncConfig): Promise<void>;
22
+ /**
23
+ * Check if Firebase is available in the environment
24
+ */
25
+ export declare function isFirebaseAvailable(): Promise<boolean>;
26
+ //# sourceMappingURL=firebase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firebase.d.ts","sourceRoot":"","sources":["../src/firebase.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,IAAI,CAAC,CA2If;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC,CAO5D"}
@@ -0,0 +1,147 @@
1
+ /**
2
+ * Enable Firebase sync for Strata Storage
3
+ * This dynamically imports Firebase SDK only when needed
4
+ */
5
+ export async function enableFirebaseSync(storage, config) {
6
+ // Dynamically import Firebase only when this function is called
7
+ try {
8
+ const { initializeApp, getApps } = await import('firebase/app');
9
+ // Initialize Firebase if not already initialized
10
+ if (!getApps().length) {
11
+ initializeApp({
12
+ apiKey: config.apiKey,
13
+ authDomain: config.authDomain,
14
+ projectId: config.projectId,
15
+ storageBucket: config.storageBucket,
16
+ messagingSenderId: config.messagingSenderId,
17
+ appId: config.appId,
18
+ });
19
+ }
20
+ if (config.firestore) {
21
+ const { getFirestore, doc, setDoc, getDoc, deleteDoc } = await import('firebase/firestore');
22
+ const db = getFirestore();
23
+ const collectionName = config.collectionName || 'strata-storage';
24
+ // Create custom adapter for Firestore
25
+ const firestoreAdapter = {
26
+ name: 'firestore',
27
+ capabilities: {
28
+ persistent: true,
29
+ synchronous: false,
30
+ observable: true,
31
+ transactional: false,
32
+ queryable: true,
33
+ maxSize: -1,
34
+ binary: true,
35
+ encrypted: false,
36
+ crossTab: true,
37
+ },
38
+ async get(key) {
39
+ const docRef = doc(db, collectionName, key);
40
+ const docSnap = await getDoc(docRef);
41
+ return docSnap.exists() ? docSnap.data() : null;
42
+ },
43
+ async set(key, value) {
44
+ const docRef = doc(db, collectionName, key);
45
+ await setDoc(docRef, { value, timestamp: Date.now() });
46
+ },
47
+ async remove(key) {
48
+ const docRef = doc(db, collectionName, key);
49
+ await deleteDoc(docRef);
50
+ },
51
+ async has(key) {
52
+ const docRef = doc(db, collectionName, key);
53
+ const docSnap = await getDoc(docRef);
54
+ return docSnap.exists();
55
+ },
56
+ async clear() {
57
+ // Firestore doesn't have a direct clear method
58
+ console.warn('Clear operation not supported for Firestore adapter');
59
+ },
60
+ async keys() {
61
+ // Would need to implement with queries
62
+ return [];
63
+ },
64
+ async size() {
65
+ return { total: 0, count: 0 };
66
+ },
67
+ async initialize() {
68
+ // Already initialized
69
+ },
70
+ async isAvailable() {
71
+ return true;
72
+ },
73
+ };
74
+ // Register the Firestore adapter
75
+ storage.registerAdapter(firestoreAdapter);
76
+ }
77
+ if (config.realtimeDatabase) {
78
+ const { getDatabase, ref, set, get, remove } = await import('firebase/database');
79
+ const db = getDatabase();
80
+ // Create custom adapter for Realtime Database
81
+ const realtimeAdapter = {
82
+ name: 'realtime',
83
+ capabilities: {
84
+ persistent: true,
85
+ synchronous: false,
86
+ observable: true,
87
+ transactional: false,
88
+ queryable: false,
89
+ maxSize: -1,
90
+ binary: false,
91
+ encrypted: false,
92
+ crossTab: true,
93
+ },
94
+ async get(key) {
95
+ const snapshot = await get(ref(db, `strata-storage/${key}`));
96
+ return snapshot.exists() ? snapshot.val() : null;
97
+ },
98
+ async set(key, value) {
99
+ await set(ref(db, `strata-storage/${key}`), value);
100
+ },
101
+ async remove(key) {
102
+ await remove(ref(db, `strata-storage/${key}`));
103
+ },
104
+ async has(key) {
105
+ const snapshot = await get(ref(db, `strata-storage/${key}`));
106
+ return snapshot.exists();
107
+ },
108
+ async clear() {
109
+ await remove(ref(db, 'strata-storage'));
110
+ },
111
+ async keys() {
112
+ const snapshot = await get(ref(db, 'strata-storage'));
113
+ return snapshot.exists() ? Object.keys(snapshot.val()) : [];
114
+ },
115
+ async size() {
116
+ const snapshot = await get(ref(db, 'strata-storage'));
117
+ const count = snapshot.exists() ? Object.keys(snapshot.val()).length : 0;
118
+ return { total: count * 100, count }; // Rough estimate
119
+ },
120
+ async initialize() {
121
+ // Already initialized
122
+ },
123
+ async isAvailable() {
124
+ return true;
125
+ },
126
+ };
127
+ // Register the Realtime Database adapter
128
+ storage.registerAdapter(realtimeAdapter);
129
+ }
130
+ console.log('Firebase sync enabled successfully');
131
+ }
132
+ catch (error) {
133
+ throw new Error(`Failed to enable Firebase sync: ${error instanceof Error ? error.message : 'Unknown error'}`);
134
+ }
135
+ }
136
+ /**
137
+ * Check if Firebase is available in the environment
138
+ */
139
+ export async function isFirebaseAvailable() {
140
+ try {
141
+ await import('firebase/app');
142
+ return true;
143
+ }
144
+ catch {
145
+ return false;
146
+ }
147
+ }
package/dist/index.d.ts CHANGED
@@ -1,56 +1,22 @@
1
- /**
2
- * Strata Storage - Zero-dependency universal storage plugin
3
- *
4
- * @packageDocumentation
5
- */
6
1
  export { Strata } from './core/Strata';
7
- import { Strata } from './core/Strata';
8
- export type { Platform, StorageType, StorageStrategy, StorageOptions, StorageValue, StorageChange, StorageCapabilities, StrataConfig, StorageAdapter, Transaction, ClearOptions, SizeInfo, ExportOptions, ImportOptions, QueryCondition, QueryOperators, SubscriptionCallback, UnsubscribeFunction, Migration, ExportFormat, } from './types';
9
- export { StrataError, StorageError, NotFoundError, QuotaExceededError, AdapterNotAvailableError, NotSupportedError, EncryptionError, CompressionError, SerializationError, ValidationError, TransactionError, MigrationError, SyncError, isStrataError, isQuotaError, } from './utils/errors';
10
- export { serialize, deserialize, deepClone, deepMerge, formatBytes, parseSize, EventEmitter, } from './utils';
11
2
  export { BaseAdapter } from './core/BaseAdapter';
12
3
  export { AdapterRegistry } from './core/AdapterRegistry';
13
- export { EncryptionManager } from './features/encryption';
14
- export type { EncryptionConfig, EncryptedData } from './features/encryption';
15
- export { CompressionManager } from './features/compression';
16
- export type { CompressionConfig, CompressedData } from './features/compression';
17
- export { SyncManager, createSyncManager } from './features/sync';
18
- export type { SyncConfig, SyncMessage } from './features/sync';
19
- export { QueryEngine, createQueryEngine } from './features/query';
20
- export { TTLManager, createTTLManager } from './features/ttl';
21
- export type { TTLConfig, TTLOptions, ExpiredItem } from './features/ttl';
22
- export { MigrationManager } from './features/migration';
23
- export type { Migration as MigrationDefinition } from './features/migration';
24
- export * from './plugin/definitions';
25
- export { StrataStorage } from './plugin';
26
- export { MemoryAdapter } from './adapters/web/MemoryAdapter';
27
4
  export { LocalStorageAdapter } from './adapters/web/LocalStorageAdapter';
28
5
  export { SessionStorageAdapter } from './adapters/web/SessionStorageAdapter';
29
6
  export { IndexedDBAdapter } from './adapters/web/IndexedDBAdapter';
30
7
  export { CookieAdapter } from './adapters/web/CookieAdapter';
31
8
  export { CacheAdapter } from './adapters/web/CacheAdapter';
32
- export { PreferencesAdapter } from './adapters/capacitor/PreferencesAdapter';
33
- export { SqliteAdapter } from './adapters/capacitor/SqliteAdapter';
34
- export type { SqliteConfig } from './adapters/capacitor/SqliteAdapter';
35
- export { SecureAdapter } from './adapters/capacitor/SecureAdapter';
36
- export { FilesystemAdapter } from './adapters/capacitor/FilesystemAdapter';
37
- /**
38
- * Create a new Strata instance with optional configuration
39
- *
40
- * @example
41
- * ```typescript
42
- * import { Strata } from 'strata-storage';
43
- *
44
- * const storage = new Strata({
45
- * defaultStorages: ['indexedDB', 'localStorage', 'memory'],
46
- * encryption: { enabled: true },
47
- * compression: { enabled: true }
48
- * });
49
- *
50
- * await storage.initialize();
51
- * await storage.set('key', 'value');
52
- * const value = await storage.get('key');
53
- * ```
54
- */
55
- export declare function createStrata(config?: import('./types').StrataConfig): InstanceType<typeof Strata>;
9
+ export { MemoryAdapter } from './adapters/web/MemoryAdapter';
10
+ export { EncryptionManager } from './features/encryption';
11
+ export { CompressionManager } from './features/compression';
12
+ export { TTLManager } from './features/ttl';
13
+ export { QueryEngine } from './features/query';
14
+ export { SyncManager } from './features/sync';
15
+ export { StorageObserver } from './features/observer';
16
+ export type { StorageType, StorageOptions, StorageValue, StorageAdapter, AdapterConfig, QueryOptions, SyncConfig, EncryptionConfig, CompressionConfig, ObserverCallback, StorageEvent, StorageError, StorageCapabilities, StorageMetadata, TTLConfig, } from './types';
17
+ export { isValidKey, isValidValue, serializeValue, deserializeValue, generateId, createError, retry, debounce, throttle, } from './utils';
18
+ import { Strata } from './core/Strata';
19
+ declare const storage: Strata;
20
+ export { storage };
21
+ export default storage;
56
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvC,YAAY,EAEV,QAAQ,EACR,WAAW,EACX,eAAe,EACf,cAAc,EACd,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,YAAY,EAGZ,cAAc,EACd,WAAW,EAGX,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EAGd,oBAAoB,EACpB,mBAAmB,EAGnB,SAAS,EACT,YAAY,GACb,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,WAAW,EACX,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,wBAAwB,EACxB,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,SAAS,EACT,aAAa,EACb,YAAY,GACb,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,SAAS,EACT,WAAW,EACX,SAAS,EACT,SAAS,EACT,WAAW,EACX,SAAS,EACT,YAAY,GACb,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACjE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC9D,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EAAE,SAAS,IAAI,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAG7E,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAG3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,YAAY,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAE3E;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,OAAO,SAAS,EAAE,YAAY,GAAG,YAAY,CAAC,OAAO,MAAM,CAAC,CAEjG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAG7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,YAAY,EACV,WAAW,EACX,cAAc,EACd,YAAY,EACZ,cAAc,EACd,aAAa,EACb,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,SAAS,GACV,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,UAAU,EACV,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,KAAK,EACL,QAAQ,EACR,QAAQ,GACT,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AASvC,QAAA,MAAM,OAAO,QAGX,CAAC;AAqBH,OAAO,EAAE,OAAO,EAAE,CAAC;AAGnB,eAAe,OAAO,CAAC"}
package/dist/index.js CHANGED
@@ -1,58 +1,54 @@
1
- /**
2
- * Strata Storage - Zero-dependency universal storage plugin
3
- *
4
- * @packageDocumentation
5
- */
6
- // Main export
1
+ // Core exports - zero dependencies, works everywhere
7
2
  export { Strata } from "./core/Strata.js";
8
- import { Strata } from "./core/Strata.js";
9
- // Errors
10
- export { StrataError, StorageError, NotFoundError, QuotaExceededError, AdapterNotAvailableError, NotSupportedError, EncryptionError, CompressionError, SerializationError, ValidationError, TransactionError, MigrationError, SyncError, isStrataError, isQuotaError, } from "./utils/errors.js";
11
- // Utilities (selected exports for advanced users)
12
- export { serialize, deserialize, deepClone, deepMerge, formatBytes, parseSize, EventEmitter, } from "./utils/index.js";
13
- // Base classes for custom adapters
14
3
  export { BaseAdapter } from "./core/BaseAdapter.js";
15
4
  export { AdapterRegistry } from "./core/AdapterRegistry.js";
16
- // Features
17
- export { EncryptionManager } from "./features/encryption.js";
18
- export { CompressionManager } from "./features/compression.js";
19
- export { SyncManager, createSyncManager } from "./features/sync.js";
20
- export { QueryEngine, createQueryEngine } from "./features/query.js";
21
- export { TTLManager, createTTLManager } from "./features/ttl.js";
22
- export { MigrationManager } from "./features/migration.js";
23
- // Plugin definitions and main plugin
24
- export * from "./plugin/definitions.js";
25
- export { StrataStorage } from "./plugin/index.js";
26
- // Web Storage Adapters (for advanced users who want direct adapter access)
27
- export { MemoryAdapter } from "./adapters/web/MemoryAdapter.js";
5
+ // Web adapters - work in any JavaScript environment
28
6
  export { LocalStorageAdapter } from "./adapters/web/LocalStorageAdapter.js";
29
7
  export { SessionStorageAdapter } from "./adapters/web/SessionStorageAdapter.js";
30
8
  export { IndexedDBAdapter } from "./adapters/web/IndexedDBAdapter.js";
31
9
  export { CookieAdapter } from "./adapters/web/CookieAdapter.js";
32
10
  export { CacheAdapter } from "./adapters/web/CacheAdapter.js";
33
- // Capacitor Storage Adapters
34
- export { PreferencesAdapter } from "./adapters/capacitor/PreferencesAdapter.js";
35
- export { SqliteAdapter } from "./adapters/capacitor/SqliteAdapter.js";
36
- export { SecureAdapter } from "./adapters/capacitor/SecureAdapter.js";
37
- export { FilesystemAdapter } from "./adapters/capacitor/FilesystemAdapter.js";
38
- /**
39
- * Create a new Strata instance with optional configuration
40
- *
41
- * @example
42
- * ```typescript
43
- * import { Strata } from 'strata-storage';
44
- *
45
- * const storage = new Strata({
46
- * defaultStorages: ['indexedDB', 'localStorage', 'memory'],
47
- * encryption: { enabled: true },
48
- * compression: { enabled: true }
49
- * });
50
- *
51
- * await storage.initialize();
52
- * await storage.set('key', 'value');
53
- * const value = await storage.get('key');
54
- * ```
55
- */
56
- export function createStrata(config) {
57
- return new Strata(config);
58
- }
11
+ export { MemoryAdapter } from "./adapters/web/MemoryAdapter.js";
12
+ // Core features
13
+ export { EncryptionManager } from "./features/encryption.js";
14
+ export { CompressionManager } from "./features/compression.js";
15
+ export { TTLManager } from "./features/ttl.js";
16
+ export { QueryEngine } from "./features/query.js";
17
+ export { SyncManager } from "./features/sync.js";
18
+ export { StorageObserver } from "./features/observer.js";
19
+ // Utils
20
+ export { isValidKey, isValidValue, serializeValue, deserializeValue, generateId, createError, retry, debounce, throttle, } from "./utils/index.js";
21
+ // Create and export a default storage instance that works immediately
22
+ import { Strata } from "./core/Strata.js";
23
+ import { LocalStorageAdapter } from "./adapters/web/LocalStorageAdapter.js";
24
+ import { SessionStorageAdapter } from "./adapters/web/SessionStorageAdapter.js";
25
+ import { IndexedDBAdapter } from "./adapters/web/IndexedDBAdapter.js";
26
+ import { CookieAdapter } from "./adapters/web/CookieAdapter.js";
27
+ import { CacheAdapter } from "./adapters/web/CacheAdapter.js";
28
+ import { MemoryAdapter } from "./adapters/web/MemoryAdapter.js";
29
+ // Create a singleton instance with web adapters pre-registered
30
+ const storage = new Strata({
31
+ defaultStorage: 'memory', // Always available fallback
32
+ autoInitialize: false, // We'll initialize it ourselves
33
+ });
34
+ // Register only web adapters by default
35
+ storage.registerAdapter(new MemoryAdapter());
36
+ storage.registerAdapter(new LocalStorageAdapter());
37
+ storage.registerAdapter(new SessionStorageAdapter());
38
+ storage.registerAdapter(new IndexedDBAdapter());
39
+ storage.registerAdapter(new CookieAdapter());
40
+ storage.registerAdapter(new CacheAdapter());
41
+ // Initialize the storage instance
42
+ (async () => {
43
+ try {
44
+ await storage.initialize();
45
+ }
46
+ catch (error) {
47
+ console.warn('Strata Storage initialization warning:', error);
48
+ // Continue working even if some adapters fail
49
+ }
50
+ })();
51
+ // Export the ready-to-use storage instance
52
+ export { storage };
53
+ // Default export for convenience
54
+ export default storage;
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "strata-storage",
3
- "version": "1.6.0",
3
+ "version": "2.0.0",
4
4
  "description": "Zero-dependency universal storage plugin providing a unified API for all storage operations across web, Android, and iOS platforms",
5
5
  "type": "module",
6
6
  "main": "./index.js",
@@ -9,6 +9,14 @@
9
9
  ".": {
10
10
  "types": "./index.d.ts",
11
11
  "default": "./index.js"
12
+ },
13
+ "./capacitor": {
14
+ "types": "./capacitor.d.ts",
15
+ "default": "./capacitor.js"
16
+ },
17
+ "./firebase": {
18
+ "types": "./firebase.d.ts",
19
+ "default": "./firebase.js"
12
20
  }
13
21
  },
14
22
  "author": "Ahsan Mahmood",
@@ -19,7 +19,7 @@ export interface StrataStoragePlugin {
19
19
  * Get a value from native storage
20
20
  */
21
21
  get(options: NativeGetOptions): Promise<{
22
- value: StorageValue | null;
22
+ value: StorageValue<unknown> | null;
23
23
  }>;
24
24
  /**
25
25
  * Set a value in native storage
@@ -125,7 +125,7 @@ export interface NativeGetOptions {
125
125
  */
126
126
  export interface NativeSetOptions {
127
127
  key: string;
128
- value: StorageValue;
128
+ value: StorageValue<unknown>;
129
129
  storage: NativeStorageType;
130
130
  database?: string;
131
131
  table?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/plugin/definitions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/plugin/definitions.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  /**
2
2
  * Strata Storage Capacitor Plugin
3
3
  * Main plugin registration and web implementation
4
+ * This is now optional and only loaded when Capacitor adapters are used
4
5
  */
5
6
  import type { StrataStoragePlugin } from './definitions';
6
- export declare let StrataStorage: StrataStoragePlugin;
7
+ export declare const StrataStorage: StrataStoragePlugin;
7
8
  export * from './definitions';
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAczD,eAAO,IAAI,aAAa,EAAE,mBAAgC,CAAC;AAiB3D,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,mBAAmB,EASpB,MAAM,eAAe,CAAC;AA+GvB,eAAO,MAAM,aAAa,EAAE,mBAAmD,CAAC;AAEhF,cAAc,eAAe,CAAC"}
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Strata Storage Capacitor Plugin
3
3
  * Main plugin registration and web implementation
4
+ * This is now optional and only loaded when Capacitor adapters are used
4
5
  */
5
6
  // Mock implementation for when Capacitor is not available
6
7
  const mockPlugin = {
@@ -12,16 +13,81 @@ const mockPlugin = {
12
13
  keys: async () => ({ keys: [] }),
13
14
  size: async () => ({ total: 0, count: 0 }),
14
15
  };
15
- // Export the plugin - will be initialized based on environment
16
- export let StrataStorage = mockPlugin;
17
- // Initialize plugin when module loads
18
- if (typeof window !== 'undefined') {
19
- // Check if Capacitor is available
20
- const cap = window.Capacitor;
21
- if (cap && cap.registerPlugin) {
22
- StrataStorage = cap.registerPlugin('StrataStorage', {
23
- web: () => import("./web.js").then((m) => new m.StrataStorageWeb()),
24
- });
16
+ // Create a lazy-loading wrapper that only attempts to load Capacitor when actually used
17
+ class LazyStrataStoragePlugin {
18
+ plugin;
19
+ attempted = false;
20
+ getPlugin() {
21
+ if (this.attempted) {
22
+ return this.plugin || mockPlugin;
23
+ }
24
+ this.attempted = true;
25
+ if (typeof window !== 'undefined') {
26
+ const cap = window.Capacitor;
27
+ if (cap && cap.registerPlugin) {
28
+ try {
29
+ this.plugin = cap.registerPlugin('StrataStorage', {
30
+ web: () => import("./web.js").then((m) => new m.StrataStorageWeb()),
31
+ });
32
+ }
33
+ catch (error) {
34
+ console.warn('Failed to register StrataStorage plugin:', error);
35
+ this.plugin = mockPlugin;
36
+ }
37
+ }
38
+ else {
39
+ this.plugin = mockPlugin;
40
+ }
41
+ }
42
+ else {
43
+ this.plugin = mockPlugin;
44
+ }
45
+ return this.plugin;
46
+ }
47
+ async isAvailable(options) {
48
+ return this.getPlugin().isAvailable(options);
49
+ }
50
+ async get(options) {
51
+ return this.getPlugin().get(options);
52
+ }
53
+ async set(options) {
54
+ return this.getPlugin().set(options);
55
+ }
56
+ async remove(options) {
57
+ return this.getPlugin().remove(options);
58
+ }
59
+ async clear(options) {
60
+ return this.getPlugin().clear(options);
61
+ }
62
+ async keys(options) {
63
+ return this.getPlugin().keys(options);
64
+ }
65
+ async size(options) {
66
+ return this.getPlugin().size(options);
67
+ }
68
+ // Optional methods delegated to the underlying plugin
69
+ get setKeychain() {
70
+ return this.getPlugin().setKeychain;
71
+ }
72
+ get getKeychain() {
73
+ return this.getPlugin().getKeychain;
74
+ }
75
+ get setEncryptedPreference() {
76
+ return this.getPlugin().setEncryptedPreference;
77
+ }
78
+ get getEncryptedPreference() {
79
+ return this.getPlugin().getEncryptedPreference;
80
+ }
81
+ get query() {
82
+ return this.getPlugin().query;
83
+ }
84
+ get getUserDefaults() {
85
+ return this.getPlugin().getUserDefaults;
86
+ }
87
+ get setUserDefaults() {
88
+ return this.getPlugin().setUserDefaults;
25
89
  }
26
90
  }
91
+ // Export the lazy-loading plugin
92
+ export const StrataStorage = new LazyStrataStoragePlugin();
27
93
  export * from "./definitions.js";