UNPKG

@aituber-onair/kizuna

Version:

A sophisticated bond system (絆 - Kizuna) for managing relationships between users and AI characters in AITuber OnAir.

83 lines (82 loc) 2.04 kB
/** * LocalStorageProvider - Storage provider using LocalStorage * * Persists data using browser's LocalStorage */ import { StorageProvider, type StorageInfo } from "./StorageProvider"; /** * LocalStorageProvider configuration */ export interface LocalStorageConfig { /** Whether to enable compression */ enableCompression: boolean; /** Whether to enable encryption */ enableEncryption: boolean; /** Encryption key (when enableEncryption=true) */ encryptionKey?: string; /** Maximum storage size (bytes, 0 for unlimited) */ maxStorageSize: number; } /** * Storage provider using LocalStorage */ export declare class LocalStorageProvider extends StorageProvider { private config; constructor(config?: Partial<LocalStorageConfig>); /** * Save data */ save(key: string, data: unknown): Promise<void>; /** * Load data */ load<T>(key: string): Promise<T | null>; /** * Remove data */ remove(key: string): Promise<void>; /** * Get all keys starting with specified prefix */ getAllKeys(keyPrefix?: string): Promise<string[]>; /** * Clear storage with specified prefix */ clear(keyPrefix?: string): Promise<void>; /** * Check if LocalStorage is available */ isAvailable(): boolean; /** * Check if data can be stored */ canStore(data: unknown): Promise<boolean>; /** * Get storage information */ getStorageInfo(): Promise<StorageInfo>; /** * Process data for storage (compression/encryption) */ private processDataForStorage; /** * Process data from storage (decryption/decompression) */ private processDataFromStorage; /** * Compress data (simple implementation) */ private compressData; /** * Decompress data */ private decompressData; /** * Encrypt data (simple implementation) */ private encryptData; /** * Decrypt data */ private decryptData; }