• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

alovajs / alova / #210

08 Oct 2024 07:26AM CUT coverage: 93.734% (-0.09%) from 93.826%
#210

push

github

web-flow
Merge pull request #554 from alovajs/changeset-release/main

ci: release

1608 of 1761 branches covered (91.31%)

Branch coverage included in aggregate %.

9537 of 10129 relevant lines covered (94.16%)

60.43 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

94.19
/packages/client/src/hooks/silent/storage/silentMethodStorage.ts
1
import { len, objectKeys, pushItem, splice } from '@alova/shared/vars';
1✔
2
import { AlovaGenerics } from 'alova';
1✔
3
import type { SilentMethod } from '../SilentMethod';
1✔
4
import {
1✔
5
  SerializedSilentMethodIdQueueMap,
1✔
6
  silentMethodIdQueueMapStorageKey,
1✔
7
  silentMethodStorageKeyPrefix,
1✔
8
  storageGetItem,
1✔
9
  storageRemoveItem,
1✔
10
  storageSetItem
1✔
11
} from './performers';
1✔
12

1✔
13
/**
1✔
14
 * 序列化并保存silentMethod实例
1✔
15
 * @param silentMethodInstance silentMethod实例
1✔
16
 */
1✔
17
export const persistSilentMethod = <AG extends AlovaGenerics>(silentMethodInstance: SilentMethod<AG>) =>
1✔
18
  storageSetItem(silentMethodStorageKeyPrefix + silentMethodInstance.id, silentMethodInstance);
1✔
19

1✔
20
/**
1✔
21
 * 将静默请求的配置信息放入对应storage中
1✔
22
 * 逻辑:通过构造一个key,并用这个key将静默方法的配置信息放入对应storage中,然后将key存入统一管理key的存储中
1✔
23
 * @param silentMethod SilentMethod实例
1✔
24
 * @param queue 操作的队列名
1✔
25
 */
1✔
26
export const push2PersistentSilentQueue = async <AG extends AlovaGenerics>(
1✔
27
  silentMethodInstance: SilentMethod<AG>,
13✔
28
  queueName: string
13✔
29
) => {
13✔
30
  await persistSilentMethod(silentMethodInstance);
13✔
31
  // 将silentMethod实例id保存到queue存储中
13✔
32
  const silentMethodIdQueueMap = ((await storageGetItem(silentMethodIdQueueMapStorageKey)) ||
13✔
33
    {}) as SerializedSilentMethodIdQueueMap;
13✔
34
  const currentQueue = (silentMethodIdQueueMap[queueName] = silentMethodIdQueueMap[queueName] || []);
13✔
35
  pushItem(currentQueue, silentMethodInstance.id);
13✔
36
  await storageSetItem(silentMethodIdQueueMapStorageKey, silentMethodIdQueueMap);
13✔
37
};
13✔
38

1✔
39
/**
1✔
40
 * 对缓存中的silentMethod实例移除或替换
1✔
41
 * @param queue 操作的队列名
1✔
42
 * @param targetSilentMethodId 目标silentMethod实例id
1✔
43
 * @param newSilentMethod 替换的新silentMethod实例,未传则表示删除
1✔
44
 */
1✔
45
export const spliceStorageSilentMethod = async <AG extends AlovaGenerics>(
1✔
46
  queueName: string,
9✔
47
  targetSilentMethodId: string,
9✔
48
  newSilentMethod?: SilentMethod<AG>
9✔
49
) => {
9✔
50
  // 将silentMethod实例id从queue中移除
9✔
51
  const silentMethodIdQueueMap = ((await storageGetItem(silentMethodIdQueueMapStorageKey)) ||
9!
52
    {}) as SerializedSilentMethodIdQueueMap;
9✔
53
  const currentQueue = silentMethodIdQueueMap[queueName] || [];
9!
54
  const index = currentQueue.findIndex(id => id === targetSilentMethodId);
9✔
55
  if (index >= 0) {
9✔
56
    if (newSilentMethod) {
9!
57
      splice(currentQueue, index, 1, newSilentMethod.id);
×
58
      await persistSilentMethod(newSilentMethod);
×
59
    } else {
9✔
60
      splice(currentQueue, index, 1);
9✔
61
    }
9✔
62

9✔
63
    await storageRemoveItem(silentMethodStorageKeyPrefix + targetSilentMethodId);
9✔
64
    // 队列为空时删除此队列
9✔
65
    len(currentQueue) <= 0 && delete silentMethodIdQueueMap[queueName];
9✔
66
    if (len(objectKeys(silentMethodIdQueueMap)) > 0) {
9✔
67
      await storageSetItem(silentMethodIdQueueMapStorageKey, silentMethodIdQueueMap);
6✔
68
    } else {
8✔
69
      // 队列集合为空时移除它
3✔
70
      await storageRemoveItem(silentMethodIdQueueMapStorageKey);
3✔
71
    }
3✔
72
  }
9✔
73
};
9✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc