UNPKG

@amitkhare/indexed-storage

Version:

A modern, localStorage-like API for IndexedDB with instance-based and static APIs, multi-store support, configurable databases, and enhanced capabilities

151 lines (128 loc) 3.83 kB
/** * IndexedStorage - A modern, localStorage-like API for IndexedDB operations */ export interface IndexedStorageConfig { /** Enable console logging for debugging (default: false) */ enableLogging?: boolean; } export interface StorageManager { storage: { getItem(key: string): Promise<any>; setItem(key: string, value: any): Promise<void>; removeItem(key: string): Promise<void>; hasItem(key: string): Promise<boolean>; clear(): Promise<void>; getAllKeys(): Promise<string[]>; testAvailability(): Promise<boolean>; }; } export interface IndexedDBManager { get(key: string): Promise<any>; save(key: string, data: any): Promise<void>; remove(key: string): Promise<void>; clear(): Promise<void>; getAllKeys(): Promise<string[]>; testAvailability(): Promise<boolean>; } export interface IndexedStorageAPI { /** * Configure IndexedStorage options * @param options - Configuration options * * @example * // Enable logging for debugging * IndexedStorage.configure({ enableLogging: true }); * * // Disable logging (default) * IndexedStorage.configure({ enableLogging: false }); */ configure(options?: IndexedStorageConfig): void; /** * Get current configuration * @returns Current configuration object */ getConfig(): IndexedStorageConfig; /** * Retrieve an item from storage * @param key - The key to retrieve * @returns The stored value or null if not found */ getItem(key: string): Promise<any | null>; /** * Store an item in storage * @param key - The key to store under * @param value - The value to store (will be serialized) */ setItem(key: string, value: any): Promise<void>; /** * Remove an item from storage * @param key - The key to remove */ removeItem(key: string): Promise<void>; /** * Check if an item exists in storage * @param key - The key to check * @returns True if the key exists */ hasItem(key: string): Promise<boolean>; /** * Clear all items from storage */ clear(): Promise<void>; /** * Get all keys from storage * @returns Array of all keys */ getAllKeys(): Promise<string[]>; /** * Get the number of items in storage * @returns Number of stored items */ length(): Promise<number>; /** * Get a key by index (for iteration) * @param index - The index of the key * @returns The key at the specified index or null */ key(index: number): Promise<string | null>; /** * Test if storage is available and working * @returns True if storage is available */ isAvailable(): Promise<boolean>; /** * Iterate over all items in storage * @param callback - Function called for each item (key, value, index) */ forEach(callback: (key: string, value: any, index: number) => void | Promise<void>): Promise<void>; /** * Get multiple items at once * @param keys - Array of keys to retrieve * @returns Object with key-value pairs */ getMultiple(keys: string[]): Promise<Record<string, any>>; /** * Set multiple items at once * @param items - Object with key-value pairs to store */ setMultiple(items: Record<string, any>): Promise<void>; /** * Remove multiple items at once * @param keys - Array of keys to remove */ removeMultiple(keys: string[]): Promise<void>; } /** * Main IndexedStorage instance */ declare const IndexedStorage: IndexedStorageAPI; /** * Storage manager composable */ export function useStorageManager(): StorageManager; /** * IndexedDB composable */ export function useIndexedDB(): IndexedDBManager; export default IndexedStorage; export { IndexedStorage };