//#region src/modules/storage.d.ts interface StorageInfo { keys: string[]; currentSize: number; limitSize: number; cacheInfo?: any; } interface StorageOptions { /** * 全局key前缀 */ prefix?: string; /** * 是否启用缓存 */ enableCache?: boolean; } /** * Storage抽象类,提供小程序和web平台统一的接口实现。 * @public */ declare abstract class AbstractStorage { protected prefix: string; constructor(options?: StorageOptions); /** * 获取带前缀的完整key */ protected getFullKey(key: T): string; /** * 从完整key中移除前缀 */ protected removePrefix(fullKey: string): string; /** * 按当前实例的命名空间清理存储区键值。 * @param storage - 要清理的存储对象 * @returns 无返回值 */ protected clearPrefixedStorageKeys(storage: Storage): void; abstract getStorageSync(key: T): unknown; abstract getStorage(key: T): Promise; abstract setStorageSync(key: T, value: unknown): void; abstract setStorage(key: T, value: unknown): Promise; abstract removeStorageSync(key: T): void; abstract removeStorage(key: T): Promise; abstract clearStorage(): Promise; /** * 获取存储相关信息 */ abstract getStorageInfoSync(): StorageInfo; /** * 获取存储相关信息异步 */ abstract getStorageInfo(): Promise; stringify(value: unknown): string; parse(value: string): unknown; } /** * web端 localStorage的封装 * @public */ declare class WebLocalStorage extends AbstractStorage { private cache; private enableCache; constructor(options?: StorageOptions); getStorageInfoSync(): StorageInfo; /** * @deprecated 使用 getKeys() 替代 */ Keys(): T[]; getKeys(): T[]; getStorageInfo(): Promise; /** * 异步清理localStorage;配置 prefix 时只清当前命名空间,否则清空整个存储区。 * @returns Promise 对象,完成后无返回值 */ clearStorage(): Promise; /** * 同步清理localStorage;配置 prefix 时只清当前命名空间,否则清空整个存储区,并清理缓存。 * @returns 无返回值 */ clearStorageSync(): void; removeStorageSync(key: T): void; removeStorage(key: T): Promise; setStorage(key: T, value: unknown): Promise; getStorage(key: T): Promise; setStorageSync(key: T, value: unknown): void; getStorageSync(key: T): unknown; } /** * 对Taro的Storage API进行封装,主要是为了提供ts类型提示。 * @example * import \{ TaroStorage \} from '\@mudssky/jsutils' * * import \{ * clearStorageSync, * getStorageInfoSync, * getStorageSync, * removeStorageSync, * setStorageSync, * \} from '\@tarojs/taro' * * export type StorageKey = 'USERINFO' * * export const GlobalStorage = new TaroStorage\(\{ * getStorageSync, * setStorageSync, * clearStorageSync, * removeStorageSync, * getStorageInfoSync, * \}) * @public */ declare class TaroStorage extends AbstractStorage { Taro: any; constructor(Taro: any); getStorageInfoSync(): StorageInfo; getStorageInfo(): Promise; clearStorage(): Promise; clearStorageSync(): void; removeStorageSync(key: T): void; removeStorage(key: T): Promise; getStorage(key: T): Promise; setStorage(key: T, data: unknown): Promise; getStorageSync(key: T): unknown; setStorageSync(key: T, data: unknown): void; } /** * 对uniapp的Storage API进行封装,主要是为了提供ts类型提示。 * @example * import \{ UniStorage \} from '\@mudssky/jsutils' * * export type GlobalStorageKey = 'userId' * * export const GlobalStorage = new UniStorage\(\{ * getStorageSync: uni.getStorageSync, * setStorageSync: uni.setStorageSync, * clearStorageSync: uni.clearStorageSync, * removeStorageSync: uni.removeStorageSync, * getStorageInfoSync: uni.getStorageInfoSync, * \}) * @public */ declare class UniStorage extends AbstractStorage { Uni: any; constructor(Uni: any); getStorageInfoSync(): StorageInfo; getStorageInfo(): Promise; clearStorage(): Promise; clearStorageSync(): void; removeStorageSync(key: T): void; removeStorage(key: T): Promise; getStorage(key: T): Promise; setStorage(key: T, data: unknown): Promise; getStorageSync(key: T): unknown; setStorageSync(key: T, data: unknown): void; } /** * web端 sessionStorage的封装 * @public */ declare class WebSessionStorage extends AbstractStorage { private cache; private enableCache; private cleanupTimer?; constructor(options?: StorageOptions); private setupSessionListeners; getStorageInfoSync(): StorageInfo; getKeys(): T[]; getStorageInfo(): Promise; /** * 异步清理sessionStorage;配置 prefix 时只清当前命名空间,否则清空整个存储区。 * @returns Promise 对象,完成后无返回值 */ clearStorage(): Promise; /** * 同步清理sessionStorage;配置 prefix 时只清当前命名空间,否则清空整个存储区,并清理缓存。 * @returns 无返回值 */ clearStorageSync(): void; removeStorageSync(key: T): void; removeStorage(key: T): Promise; setStorage(key: T, value: unknown): Promise; getStorage(key: T): Promise; setStorageSync(key: T, value: unknown): void; getStorageSync(key: T): unknown; /** * 处理存储空间不足的情况 */ private handleQuotaExceeded; /** * 与 localStorage 同步数据 */ syncToLocalStorage(keys?: T[]): void; /** * 从 localStorage 恢复数据 */ restoreFromLocalStorage(keys?: T[]): void; /** * 表单数据自动保存 */ autoSaveForm(formId: string, interval?: number): () => void; /** * 页面状态快照 */ createSnapshot(snapshotId: string, state: Record): void; /** * 恢复页面状态快照 */ restoreSnapshot(snapshotId: string): unknown; /** * 清理过期的快照数据 */ cleanExpiredSnapshots(maxAge?: number): void; } //#endregion export { AbstractStorage, type StorageInfo, type StorageOptions, TaroStorage, UniStorage, WebLocalStorage, WebSessionStorage };