UNPKG

strata-storage

Version:

Zero-dependency universal storage plugin providing a unified API for all storage operations across web, Android, and iOS platforms

65 lines (64 loc) 3.17 kB
// Core exports - zero dependencies, works everywhere export { Strata } from "./core/Strata.js"; export { BaseAdapter } from "./core/BaseAdapter.js"; export { AdapterRegistry } from "./core/AdapterRegistry.js"; // Web adapters - work in any JavaScript environment export { LocalStorageAdapter } from "./adapters/web/LocalStorageAdapter.js"; export { SessionStorageAdapter } from "./adapters/web/SessionStorageAdapter.js"; export { IndexedDBAdapter } from "./adapters/web/IndexedDBAdapter.js"; export { CookieAdapter } from "./adapters/web/CookieAdapter.js"; export { CacheAdapter } from "./adapters/web/CacheAdapter.js"; export { MemoryAdapter } from "./adapters/web/MemoryAdapter.js"; // Core features export { EncryptionManager } from "./features/encryption.js"; export { CompressionManager } from "./features/compression.js"; export { TTLManager } from "./features/ttl.js"; export { QueryEngine } from "./features/query.js"; export { SyncManager } from "./features/sync.js"; export { StorageObserver } from "./features/observer.js"; // Utils export { isValidKey, isValidValue, serializeValue, deserializeValue, generateId, createError, retry, debounce, throttle, } from "./utils/index.js"; // Create and export a default storage instance that works immediately import { Strata } from "./core/Strata.js"; import { LocalStorageAdapter } from "./adapters/web/LocalStorageAdapter.js"; import { SessionStorageAdapter } from "./adapters/web/SessionStorageAdapter.js"; import { IndexedDBAdapter } from "./adapters/web/IndexedDBAdapter.js"; import { CookieAdapter } from "./adapters/web/CookieAdapter.js"; import { CacheAdapter } from "./adapters/web/CacheAdapter.js"; import { MemoryAdapter } from "./adapters/web/MemoryAdapter.js"; // Create a singleton instance with web adapters pre-registered const storage = new Strata({ defaultStorages: ['memory', 'localStorage', 'sessionStorage', 'indexedDB'], // Order of preference autoInitialize: false, // We'll initialize it ourselves }); // Register only web adapters by default try { // Memory adapter should always be available as fallback storage.registerAdapter(new MemoryAdapter()); // Browser storage adapters storage.registerAdapter(new LocalStorageAdapter()); storage.registerAdapter(new SessionStorageAdapter()); storage.registerAdapter(new IndexedDBAdapter()); storage.registerAdapter(new CookieAdapter()); storage.registerAdapter(new CacheAdapter()); } catch (error) { console.warn('Strata Storage adapter registration warning:', error); } // Initialize the storage instance let initializationPromise = null; const ensureInitialized = async () => { if (!initializationPromise) { initializationPromise = storage.initialize().catch((error) => { console.warn('Strata Storage initialization warning:', error); // Continue working even if some adapters fail }); } return initializationPromise; }; // Start initialization immediately but don't block module loading ensureInitialized(); // Export the ready-to-use storage instance export { storage, ensureInitialized }; // Default export for convenience export default storage;