diff --git a/packages/@core/base/shared/src/cache/README.md b/packages/@core/base/shared/src/cache/README.md index e9769c37b..c9e20114b 100644 --- a/packages/@core/base/shared/src/cache/README.md +++ b/packages/@core/base/shared/src/cache/README.md @@ -308,7 +308,7 @@ await userCache.setItem('profile', {name: '张三'}); await configCache.setItem('profile', {theme: 'dark'}); // 各自独立 -await userCache.getItem('profile'); // => { name: '张三' } +await userCache.getItem('profile'); // => { name: '张三' } await configCache.getItem('profile'); // => { theme: 'dark' } // 只清除 user 前缀的数据 @@ -325,9 +325,12 @@ const cache = new StorageManager({ prefix: 'app' }); await cache.clearExpiredItems(); // 或者定时清理(每 10 分钟) -setInterval(async () => { - await cache.clearExpiredItems(); -}, 10 * 60 * 1000); +setInterval( + async () => { + await cache.clearExpiredItems(); + }, + 10 * 60 * 1000, +); ``` --- @@ -338,8 +341,8 @@ setInterval(async () => { ```typescript interface StorageItem { - expiry?: number; // 过期时间戳(毫秒),undefined 表示永不过期 - value: T; // 实际业务数据 + expiry?: number; // 过期时间戳(毫秒),undefined 表示永不过期 + value: T; // 实际业务数据 } ``` diff --git a/packages/@core/base/shared/src/cache/__tests__/storage-manager.test.ts b/packages/@core/base/shared/src/cache/__tests__/storage-manager.test.ts index f5d3c3691..6d58cedd2 100644 --- a/packages/@core/base/shared/src/cache/__tests__/storage-manager.test.ts +++ b/packages/@core/base/shared/src/cache/__tests__/storage-manager.test.ts @@ -44,11 +44,7 @@ describe('storageManager', () => { }); it('should clear expired items', async () => { - await storageManager.setItem( - 'user', - {age: 30, name: 'John Doe'}, - 1000, - ); // 1秒过期 + await storageManager.setItem('user', {age: 30, name: 'John Doe'}, 1000); // 1秒过期 vi.advanceTimersByTime(1001); // 快进时间 await storageManager.clearExpiredItems(); const user = await storageManager.getItem('user'); @@ -56,11 +52,7 @@ describe('storageManager', () => { }); it('should not clear non-expired items', async () => { - await storageManager.setItem( - 'user', - {age: 30, name: 'John Doe'}, - 10_000, - ); // 10秒过期 + await storageManager.setItem('user', {age: 30, name: 'John Doe'}, 10_000); // 10秒过期 vi.advanceTimersByTime(5000); // 快进时间 await storageManager.clearExpiredItems(); const user = await storageManager.getItem('user'); @@ -87,38 +79,22 @@ describe('storageManager', () => { }); it('should remove expired items when accessed', async () => { - await storageManager.setItem( - 'user', - {age: 30, name: 'John Doe'}, - 1000, - ); // 1秒过期 + await storageManager.setItem('user', {age: 30, name: 'John Doe'}, 1000); // 1秒过期 vi.advanceTimersByTime(1001); // 快进时间 const user = await storageManager.getItem('user'); expect(user).toBeNull(); }); it('should not remove non-expired items when accessed', async () => { - await storageManager.setItem( - 'user', - {age: 30, name: 'John Doe'}, - 10_000, - ); // 10秒过期 + await storageManager.setItem('user', {age: 30, name: 'John Doe'}, 10_000); // 10秒过期 vi.advanceTimersByTime(5000); // 快进时间 const user = await storageManager.getItem('user'); expect(user).toEqual({ age: 30, name: 'John Doe' }); }); it('should handle multiple items with different expiry times', async () => { - await storageManager.setItem( - 'user1', - {age: 30, name: 'John Doe'}, - 1000, - ); // 1秒过期 - await storageManager.setItem( - 'user2', - {age: 25, name: 'Jane Doe'}, - 2000, - ); // 2秒过期 + await storageManager.setItem('user1', {age: 30, name: 'John Doe'}, 1000); // 1秒过期 + await storageManager.setItem('user2', {age: 25, name: 'Jane Doe'}, 2000); // 2秒过期 vi.advanceTimersByTime(1500); // 快进时间 await storageManager.clearExpiredItems(); const user1 = await storageManager.getItem('user1'); diff --git a/packages/@core/base/shared/src/cache/local-storage-driver.ts b/packages/@core/base/shared/src/cache/local-storage-driver.ts index 9c1037743..5eb84805c 100644 --- a/packages/@core/base/shared/src/cache/local-storage-driver.ts +++ b/packages/@core/base/shared/src/cache/local-storage-driver.ts @@ -14,7 +14,9 @@ interface LocalStorageDriverOptions { class LocalStorageDriver implements IStorageDriver { private storage: Storage; - constructor({storageType = 'localStorage'}: LocalStorageDriverOptions = {}) { + constructor({ + storageType = 'localStorage', + }: LocalStorageDriverOptions = {}) { this.storage = storageType === 'localStorage' ? window.localStorage diff --git a/packages/@core/base/shared/src/cache/storage-manager.ts b/packages/@core/base/shared/src/cache/storage-manager.ts index 5264bfcb3..3c90926a2 100644 --- a/packages/@core/base/shared/src/cache/storage-manager.ts +++ b/packages/@core/base/shared/src/cache/storage-manager.ts @@ -1,4 +1,8 @@ -import type {IStorageDriver, StorageItem, StorageManagerOptions} from './types'; +import type { + IStorageDriver, + StorageItem, + StorageManagerOptions, +} from './types'; import {LocalStorageDriver} from './local-storage-driver'; @@ -47,7 +51,10 @@ class StorageManager { * @param defaultValue 当项不存在或已过期时返回的默认值 * @returns 值,如果项已过期则返回默认值 */ - async getItem(key: string, defaultValue: null | T = null): Promise { + async getItem( + key: string, + defaultValue: null | T = null, + ): Promise { const fullKey = this.getFullKey(key); const raw = await this.driver.getItem>(fullKey);