UNPKG

aura-storage

Version:
306 lines (292 loc) 8.63 kB
interface IStorage { /** * 获取存储项 * @param key 键名 * @returns 存储的值 */ getItem(key: string): any; /** * 设置存储项 * @param key 键名 * @param value 值 * @param expire 过期时间(分钟) */ setItem(key: string, value: any, expire?: number): any; /** * 移除存储项 * @param key 键名 */ removeItem(key: string): any; /** * 清空所有存储项 */ clear(): any; /** * 获取所有键名 */ keys(): any; /** * 获取存储大小 */ size(): any; } interface StorageData { value: any; expire: number | null; isEncrypted: boolean; } interface IEncryptionService { encryptData(data: string): string; decryptData(encryptedData: string): string; } declare class EncryptionService implements IEncryptionService { private readonly encryption; constructor({ key, iv, hasEncrypt }: { hasEncrypt: boolean; key: string; iv: string; }); encryptData(data: string): string; decryptData(encryptedData: string): string; handleEncryption(key: string, iv: string): boolean; } declare abstract class BaseStorage implements IStorage { private static cleanupInterval; protected static encryptionService: EncryptionService; protected readonly cache: any; protected readonly prefix: string; protected readonly hasEncrypt: boolean; protected readonly storageType?: string; constructor({ prefix, hasEncrypt, key, iv }: { hasEncrypt: boolean; prefix?: string; key: string; iv: string; }); protected setCache(key: string, value: any, expire?: number | null): void; protected getCache(key: string): any | undefined; protected deleteCache(key: string): void; protected clearCache(): void; /** * 生成带有前缀(如果有)并转换为大写的键。 * * * @param {string} key - 需要格式化的原始键。 * @returns {string} - 带有前缀并转换为大写的键。 */ protected getPrefixedKey(key: string, prefixKey?: string): string; protected setCacheKey(key: string): string; /** * 检查数据是否未过期。 * * @param {StorageData} data - 数据对象。 * @returns {boolean} - 是否未过期。 */ protected isNotExpired(data: StorageData): boolean; /** * 准备要存储的数据。 * * @param {*} value - 要存储的数据。 * @param {number} [expire=0] - 过期时间(单位`分`,默认`0`分钟,永久缓存)。 * @returns {string} - 准备好的 JSON 字符串。 */ protected prepareStorageData(key: string, value: any, expire?: number | null): string; /** * 解析存储的数据 */ protected parseStorageData(data: string): StorageData | null; /** * 创建缓存项对象 */ private createCacheItem; /** * 抽象方法:具体存储实现需要实现这些方法 */ abstract getItem(key: string): any; abstract setItem(key: string, value: any, expire?: number): void; abstract removeItem(key: string): void; abstract clear(): void; abstract keys(): string[]; abstract size(): number; /** * 检查键是否存在 */ hasItem(key: string): Promise<boolean>; /** * 获取多个键的值 */ getItems(keys: string[]): Promise<Record<string, any>>; /** * 设置多个键值对 */ setItems(items: Record<string, any>, expire?: number): Promise<void>; /** * 移除多个键 */ removeItems(keys: string[]): Promise<void>; /** * 设置自动清理机制 */ private setupAutoCleanup; /** * 清理过期的缓存项并重新获取存储数据 */ protected cleanCache(): Promise<void>; destroy(): void; } export type StorageOptions = Partial<CreateStorageParams>; export interface CreateStorageParams { prefix?: string; storage?: Storage; hasEncrypt: boolean; cacheName?: string; key: string; iv: string; storageAdapter: Storage; storageType?: CacheType; } declare enum CacheType { LOCALSTORAGE = "LOCALSTORAGE", SESSIONSTORAGE = "SESSIONSTORAGE", INDEXEDDB = "INDEXEDDB", UNIAPP = "UNIAPP", COOKIE = "COOKIE" } type WebStorageOptions = CreateStorageParams & { storageAdapter: Storage$1; storageType?: CacheType; }; declare class Storage$1 extends BaseStorage { private readonly storageAdapter; protected readonly storageType?: CacheType; constructor(options: WebStorageOptions); getItem(key: string): unknown; setItem(key: string, value: unknown, expire?: number): void; removeItem(key: string): void; clear(): void; keys(): string[]; size(): number; } interface StorageAdapter { getItem(key: string): string | null; setItem(key: string, value: string): void; removeItem(key: string): void; clear(): void; keys(): string[]; size(): number; } declare class CookieStorageAdapter implements StorageAdapter { private storageType; constructor(); getItem(key: string): any; setItem(key: string, value: string): void; removeItem(key: string): void; clear(): void; keys(): string[]; size(): number; } declare class UniAppStorageAdapter implements StorageAdapter { private storageType; constructor(); getItem(key: string): string | null; setItem(key: string, value: string): void; removeItem(key: string): void; clear(): void; keys(): string[]; size(): number; } /** * Web Storage 适配器 * 用于处理 localStorage 和 sessionStorage 的存储操作 */ declare class WebStorageAdapter implements StorageAdapter { private storage; private storageType; constructor(storage: Storage); /** * 获取存储项 * @param key 键名 * @returns 存储的值,如果不存在则返回 null */ getItem(key: string): string | null; /** * 设置存储项 * @param key 键名 * @param value 要存储的值 */ setItem(key: string, value: string): void; /** * 移除存储项 * @param key 键名 */ removeItem(key: string): void; /** * 清空所有存储项 */ clear(): void; /** * 获取所有存储项的键名 * @returns 键名数组 */ keys(): string[]; /** * 获取存储项的数量 * @returns 存储项数量 */ size(): number; } declare class IndexedDBStorage implements StorageAdapter { private storage; private storageType; constructor({ cacheName }: { cacheName: string; }); /** * 获取存储项 * @param key 键名 * @returns 存储的值,如果不存在则返回 null */ getItem(key: string): Promise<string | null>; /** * 异步设置缓存项,并可以选择设置过期时间。 * * @param {string} key - 要存储数据的键。 * @param {*} value - 要存储的数据。 * @param {number} [expire] - 过期时间(单位`分`,默认`0`分钟,永久缓存)。 * @returns {Promise<void>} - 一个 Promise 对象,表示设置操作的结果。 */ setItem(key: string, value: any): Promise<void>; /** * 异步从离线仓库中删除对应键名的值。 * * @param {string} key - 键名。 * @returns {Promise<boolean>} - 操作是否成功。 */ removeItem(key: string): Promise<void>; /** * 异步从离线仓库中删除所有的键名,重置数据库。 * * @returns {Promise<boolean>} - 操作是否成功。 */ clear(): void; /** * 异步获取数据仓库中所有的key。 * * @returns {Promise<string[]>} - 一个 Promise 对象,表示获取所有键的结果。 */ Keys(): void; } export declare function cookieAdapter(): CookieStorageAdapter; export declare function webLocalAdapter(localStorageType: any): WebStorageAdapter; export declare function webSessionAdapter(localStorageType: any): WebStorageAdapter; export declare function uniAppAdapter(): UniAppStorageAdapter; export declare function indexedDBAdapter({ cacheName }: { cacheName?: string | undefined; }): IndexedDBStorage; /** * 创建 Aura 存储实例 * @param options - 存储配置选项 * @returns 存储实例 * @throws {StorageError} 当存储类型不支持或创建失败时抛出错误 */ export declare function createAuraStorage(options: any): Storage$1;