style(@vben-core/shared): formatting

master^2
layhuts 2026-05-08 17:36:47 +08:00
parent e555ee065e
commit 51e8b27d4c
4 changed files with 27 additions and 39 deletions

View File

@ -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<T> {
expiry?: number; // 过期时间戳毫秒undefined 表示永不过期
value: T; // 实际业务数据
expiry?: number; // 过期时间戳毫秒undefined 表示永不过期
value: T; // 实际业务数据
}
```

View File

@ -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');

View File

@ -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

View File

@ -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<T>(key: string, defaultValue: null | T = null): Promise<null | T> {
async getItem<T>(
key: string,
defaultValue: null | T = null,
): Promise<null | T> {
const fullKey = this.getFullKey(key);
const raw = await this.driver.getItem<StorageItem<T>>(fullKey);