@isdk/util 0.3.9 → 0.3.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +247 -142
- package/dist/index.d.ts +247 -142
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/docs/classes/BinarySemaphore.md +145 -64
- package/docs/classes/ConfigFile.md +8 -8
- package/docs/classes/Deque.md +109 -105
- package/docs/classes/IntSet.md +12 -12
- package/docs/classes/Semaphore.md +149 -77
- package/docs/classes/SignalGate.md +11 -11
- package/docs/functions/RateLimit.md +30 -7
- package/docs/functions/arrayHasAll.md +1 -1
- package/docs/functions/extNameLevel.md +1 -1
- package/docs/functions/extractCodeBlock.md +3 -3
- package/docs/functions/extractTopLevelCodeBlocks.md +1 -1
- package/docs/functions/filenameReservedRegex.md +1 -1
- package/docs/functions/findPort.md +5 -5
- package/docs/functions/getMultiLevelExtname.md +1 -1
- package/docs/functions/glob.md +1 -1
- package/docs/functions/isStringIn.md +3 -3
- package/docs/functions/isValidFilename.md +1 -1
- package/docs/functions/isValidFilepath.md +1 -1
- package/docs/functions/normalizeIncludeFiles.md +3 -3
- package/docs/functions/omitDeepBy.md +1 -1
- package/docs/functions/omitEmptyDeep.md +1 -1
- package/docs/functions/parseCodeBlockSelector.md +2 -2
- package/docs/functions/parseFrontMatter.md +1 -1
- package/docs/functions/parseYaml.md +1 -1
- package/docs/functions/reControlCharsRegex.md +1 -1
- package/docs/functions/registerYamlTag.md +3 -3
- package/docs/functions/removeLeadingEmptyLines.md +1 -1
- package/docs/functions/sanitizeFilename.md +1 -1
- package/docs/functions/sanitizeFilepath.md +1 -1
- package/docs/functions/sleep.md +1 -1
- package/docs/functions/stringifyYaml.md +1 -1
- package/docs/functions/toCamelCase.md +1 -1
- package/docs/functions/toCapitalCase.md +1 -1
- package/docs/functions/toPascalCase.md +1 -1
- package/docs/functions/traverseFolder.md +1 -1
- package/docs/functions/traverseFolderSync.md +1 -1
- package/docs/functions/yieldExec.md +1 -1
- package/docs/interfaces/BinarySemaphoreAcquireOptions.md +11 -4
- package/docs/interfaces/BinarySemaphoreOptions.md +29 -12
- package/docs/interfaces/BinarySemaphoreReleaseOptions.md +10 -4
- package/docs/interfaces/BinarySemaphoreReleaserFunc.md +14 -5
- package/docs/interfaces/CodeBlockSelectorPart.md +4 -4
- package/docs/interfaces/CodeString.md +89 -89
- package/docs/interfaces/ExtractCodeBlockOptions.md +9 -9
- package/docs/interfaces/FindPortOptions.md +5 -5
- package/docs/interfaces/IncludeFiles.md +5 -5
- package/docs/interfaces/LoadConfigFileOptions.md +5 -5
- package/docs/interfaces/SanitizeFilenameOptions.md +5 -5
- package/docs/interfaces/SemaphoreOptions.md +39 -16
- package/docs/interfaces/SemaphoreTaskItem.md +23 -10
- package/docs/type-aliases/CodeBlockCombinator.md +1 -1
- package/docs/type-aliases/SemaphoreIsReadyFuncType.md +5 -2
- package/docs/type-aliases/StringifyFunc.md +2 -2
- package/docs/type-aliases/TraverseFolderHandler.md +2 -2
- package/docs/type-aliases/TraverseFolderSyncHandler.md +2 -2
- package/docs/variables/DefaultAllTextFiles.md +1 -1
- package/docs/variables/DefaultAsyncSemaphoreCapacity.md +4 -1
- package/docs/variables/FilenameReservedRegex.md +1 -1
- package/docs/variables/WindowsReservedNameRegex.md +1 -1
- package/package.json +20 -17
package/docs/classes/IntSet.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
# Class: IntSet
|
|
8
8
|
|
|
9
|
-
Defined in: [src/intset.ts:6](https://github.com/isdk/util.js/blob/
|
|
9
|
+
Defined in: [src/intset.ts:6](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/intset.ts#L6)
|
|
10
10
|
|
|
11
11
|
Represents a set of integers using a bit field.
|
|
12
12
|
Each bit in the bit field represents an integer starting from 0,
|
|
@@ -18,7 +18,7 @@ where the flag value 0 represents the 0th bit, 1 represents the 1st bit, and so
|
|
|
18
18
|
|
|
19
19
|
> **new IntSet**(`bitField?`): `IntSet`
|
|
20
20
|
|
|
21
|
-
Defined in: [src/intset.ts:20](https://github.com/isdk/util.js/blob/
|
|
21
|
+
Defined in: [src/intset.ts:20](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/intset.ts#L20)
|
|
22
22
|
|
|
23
23
|
#### Parameters
|
|
24
24
|
|
|
@@ -36,7 +36,7 @@ Defined in: [src/intset.ts:20](https://github.com/isdk/util.js/blob/30c54a8a455a
|
|
|
36
36
|
|
|
37
37
|
> **add**(`flag`): `IntSet`
|
|
38
38
|
|
|
39
|
-
Defined in: [src/intset.ts:28](https://github.com/isdk/util.js/blob/
|
|
39
|
+
Defined in: [src/intset.ts:28](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/intset.ts#L28)
|
|
40
40
|
|
|
41
41
|
Adds an element to the set.
|
|
42
42
|
|
|
@@ -59,7 +59,7 @@ The flag value representing the bit position to set.
|
|
|
59
59
|
|
|
60
60
|
> **clear**(): `IntSet`
|
|
61
61
|
|
|
62
|
-
Defined in: [src/intset.ts:56](https://github.com/isdk/util.js/blob/
|
|
62
|
+
Defined in: [src/intset.ts:56](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/intset.ts#L56)
|
|
63
63
|
|
|
64
64
|
Clears all elements from the set.
|
|
65
65
|
|
|
@@ -73,7 +73,7 @@ Clears all elements from the set.
|
|
|
73
73
|
|
|
74
74
|
> **delete**(`flag`): `IntSet`
|
|
75
75
|
|
|
76
|
-
Defined in: [src/intset.ts:38](https://github.com/isdk/util.js/blob/
|
|
76
|
+
Defined in: [src/intset.ts:38](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/intset.ts#L38)
|
|
77
77
|
|
|
78
78
|
Removes an element from the set.
|
|
79
79
|
|
|
@@ -95,7 +95,7 @@ The flag value representing the bit position to set. 0 represents the 0th bit
|
|
|
95
95
|
|
|
96
96
|
> **has**(`flag`): `boolean`
|
|
97
97
|
|
|
98
|
-
Defined in: [src/intset.ts:49](https://github.com/isdk/util.js/blob/
|
|
98
|
+
Defined in: [src/intset.ts:49](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/intset.ts#L49)
|
|
99
99
|
|
|
100
100
|
Determines whether an element is in the set.
|
|
101
101
|
|
|
@@ -119,7 +119,7 @@ true if the element is in the set; otherwise, false.
|
|
|
119
119
|
|
|
120
120
|
> **toJSON**(): `number`
|
|
121
121
|
|
|
122
|
-
Defined in: [src/intset.ts:69](https://github.com/isdk/util.js/blob/
|
|
122
|
+
Defined in: [src/intset.ts:69](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/intset.ts#L69)
|
|
123
123
|
|
|
124
124
|
#### Returns
|
|
125
125
|
|
|
@@ -131,7 +131,7 @@ Defined in: [src/intset.ts:69](https://github.com/isdk/util.js/blob/30c54a8a455a
|
|
|
131
131
|
|
|
132
132
|
> **toString**(): `string`
|
|
133
133
|
|
|
134
|
-
Defined in: [src/intset.ts:65](https://github.com/isdk/util.js/blob/
|
|
134
|
+
Defined in: [src/intset.ts:65](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/intset.ts#L65)
|
|
135
135
|
|
|
136
136
|
#### Returns
|
|
137
137
|
|
|
@@ -143,7 +143,7 @@ Defined in: [src/intset.ts:65](https://github.com/isdk/util.js/blob/30c54a8a455a
|
|
|
143
143
|
|
|
144
144
|
> **valueOf**(): `number`
|
|
145
145
|
|
|
146
|
-
Defined in: [src/intset.ts:61](https://github.com/isdk/util.js/blob/
|
|
146
|
+
Defined in: [src/intset.ts:61](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/intset.ts#L61)
|
|
147
147
|
|
|
148
148
|
#### Returns
|
|
149
149
|
|
|
@@ -155,7 +155,7 @@ Defined in: [src/intset.ts:61](https://github.com/isdk/util.js/blob/30c54a8a455a
|
|
|
155
155
|
|
|
156
156
|
> `static` **add**(`bitField`, `flag`): `number`
|
|
157
157
|
|
|
158
|
-
Defined in: [src/intset.ts:11](https://github.com/isdk/util.js/blob/
|
|
158
|
+
Defined in: [src/intset.ts:11](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/intset.ts#L11)
|
|
159
159
|
|
|
160
160
|
#### Parameters
|
|
161
161
|
|
|
@@ -177,7 +177,7 @@ Defined in: [src/intset.ts:11](https://github.com/isdk/util.js/blob/30c54a8a455a
|
|
|
177
177
|
|
|
178
178
|
> `static` **delete**(`bitField`, `flag`): `number`
|
|
179
179
|
|
|
180
|
-
Defined in: [src/intset.ts:15](https://github.com/isdk/util.js/blob/
|
|
180
|
+
Defined in: [src/intset.ts:15](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/intset.ts#L15)
|
|
181
181
|
|
|
182
182
|
#### Parameters
|
|
183
183
|
|
|
@@ -199,7 +199,7 @@ Defined in: [src/intset.ts:15](https://github.com/isdk/util.js/blob/30c54a8a455a
|
|
|
199
199
|
|
|
200
200
|
> `static` **has**(`bitField`, `flag`): `boolean`
|
|
201
201
|
|
|
202
|
-
Defined in: [src/intset.ts:7](https://github.com/isdk/util.js/blob/
|
|
202
|
+
Defined in: [src/intset.ts:7](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/intset.ts#L7)
|
|
203
203
|
|
|
204
204
|
#### Parameters
|
|
205
205
|
|
|
@@ -6,45 +6,26 @@
|
|
|
6
6
|
|
|
7
7
|
# Class: Semaphore
|
|
8
8
|
|
|
9
|
-
Defined in: [src/async-semaphore.ts:
|
|
9
|
+
Defined in: [src/async-semaphore.ts:465](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/async-semaphore.ts#L465)
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
计数信号量(Semaphore)实现。
|
|
12
|
+
扩展自二进制信号量,允许指定最大并发数(`maxConcurrency`)。
|
|
13
|
+
支持可选的就绪检查(`isReadyFn`)。
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
示例用法:
|
|
16
16
|
|
|
17
17
|
```typescript
|
|
18
|
-
const semaphore = new Semaphore(5); //
|
|
19
|
-
|
|
20
|
-
const semaphore = new Semaphore(
|
|
21
|
-
4, // Allow 4 concurrent async calls
|
|
22
|
-
{
|
|
23
|
-
capacity: 100, // Prealloc space for 100 tokens
|
|
24
|
-
isReadyFn: async () => {
|
|
25
|
-
// Check if the system is ready to handle more requests
|
|
26
|
-
return true;
|
|
27
|
-
},
|
|
28
|
-
pauseFn: () => {
|
|
29
|
-
console.log('Pausing the stream');
|
|
30
|
-
},
|
|
31
|
-
resumeFn: () => {
|
|
32
|
-
console.log('Resuming the stream');
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
);
|
|
18
|
+
const semaphore = new Semaphore(5); // 允许 5 个并发操作
|
|
36
19
|
|
|
37
|
-
async function fetchData(
|
|
38
|
-
await semaphore.acquire()
|
|
20
|
+
async function fetchData(id) {
|
|
21
|
+
const release = await semaphore.acquire();
|
|
39
22
|
try {
|
|
40
|
-
console.log(semaphore.pendingCount
|
|
41
|
-
// ...
|
|
23
|
+
console.log(`正在获取数据 ${id}, 等待中: ${semaphore.pendingCount}`);
|
|
24
|
+
// ... 异步操作
|
|
42
25
|
} finally {
|
|
43
|
-
|
|
26
|
+
release();
|
|
44
27
|
}
|
|
45
28
|
}
|
|
46
|
-
|
|
47
|
-
const data = await Promise.all(array.map(fetchData));
|
|
48
29
|
```
|
|
49
30
|
|
|
50
31
|
## Extends
|
|
@@ -57,26 +38,32 @@ const data = await Promise.all(array.map(fetchData));
|
|
|
57
38
|
|
|
58
39
|
> **new Semaphore**(`maxConcurrency`, `options?`): `Semaphore`
|
|
59
40
|
|
|
60
|
-
Defined in: [src/async-semaphore.ts:
|
|
41
|
+
Defined in: [src/async-semaphore.ts:480](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/async-semaphore.ts#L480)
|
|
61
42
|
|
|
62
|
-
|
|
43
|
+
创建一个计数信号量实例。
|
|
63
44
|
|
|
64
45
|
#### Parameters
|
|
65
46
|
|
|
66
47
|
##### maxConcurrency
|
|
67
48
|
|
|
68
|
-
|
|
49
|
+
`number` \| [`SemaphoreOptions`](../interfaces/SemaphoreOptions.md)
|
|
69
50
|
|
|
70
|
-
|
|
51
|
+
最大并发数,或者包含并发设置的配置对象。
|
|
71
52
|
|
|
72
53
|
##### options?
|
|
73
54
|
|
|
74
55
|
[`SemaphoreOptions`](../interfaces/SemaphoreOptions.md)
|
|
75
56
|
|
|
57
|
+
配置选项。
|
|
58
|
+
|
|
76
59
|
#### Returns
|
|
77
60
|
|
|
78
61
|
`Semaphore`
|
|
79
62
|
|
|
63
|
+
#### Throws
|
|
64
|
+
|
|
65
|
+
如果未指定有效并发数则抛出错误。
|
|
66
|
+
|
|
80
67
|
#### Overrides
|
|
81
68
|
|
|
82
69
|
[`BinarySemaphore`](BinarySemaphore.md).[`constructor`](BinarySemaphore.md#constructor)
|
|
@@ -87,7 +74,9 @@ The maximum number of callers allowed to acquire the semaphore concurrently.
|
|
|
87
74
|
|
|
88
75
|
> `protected` **\_activeCount**: `number`
|
|
89
76
|
|
|
90
|
-
Defined in: [src/async-semaphore.ts:
|
|
77
|
+
Defined in: [src/async-semaphore.ts:180](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/async-semaphore.ts#L180)
|
|
78
|
+
|
|
79
|
+
记录当前活跃的(已获取但未释放)操作总数。
|
|
91
80
|
|
|
92
81
|
#### Inherited from
|
|
93
82
|
|
|
@@ -99,7 +88,9 @@ Defined in: [src/async-semaphore.ts:97](https://github.com/isdk/util.js/blob/30c
|
|
|
99
88
|
|
|
100
89
|
> `protected` **emitter**: `EventEmitter`
|
|
101
90
|
|
|
102
|
-
Defined in: [src/async-semaphore.ts:
|
|
91
|
+
Defined in: [src/async-semaphore.ts:168](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/async-semaphore.ts#L168)
|
|
92
|
+
|
|
93
|
+
内部事件触发器,用于协调释放和分发逻辑。
|
|
103
94
|
|
|
104
95
|
#### Inherited from
|
|
105
96
|
|
|
@@ -111,7 +102,9 @@ Defined in: [src/async-semaphore.ts:91](https://github.com/isdk/util.js/blob/30c
|
|
|
111
102
|
|
|
112
103
|
> `protected` **free**: [`Deque`](Deque.md)\<`any`\>
|
|
113
104
|
|
|
114
|
-
Defined in: [src/async-semaphore.ts:
|
|
105
|
+
Defined in: [src/async-semaphore.ts:469](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/async-semaphore.ts#L469)
|
|
106
|
+
|
|
107
|
+
存储空闲令牌的队列。
|
|
115
108
|
|
|
116
109
|
#### Overrides
|
|
117
110
|
|
|
@@ -119,11 +112,13 @@ Defined in: [src/async-semaphore.ts:379](https://github.com/isdk/util.js/blob/30
|
|
|
119
112
|
|
|
120
113
|
***
|
|
121
114
|
|
|
122
|
-
### initTokenFn
|
|
115
|
+
### initTokenFn
|
|
123
116
|
|
|
124
117
|
> `protected` **initTokenFn**: (`token?`) => `void`
|
|
125
118
|
|
|
126
|
-
Defined in: [src/async-semaphore.ts:
|
|
119
|
+
Defined in: [src/async-semaphore.ts:176](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/async-semaphore.ts#L176)
|
|
120
|
+
|
|
121
|
+
令牌初始化函数。
|
|
127
122
|
|
|
128
123
|
#### Parameters
|
|
129
124
|
|
|
@@ -145,7 +140,9 @@ Defined in: [src/async-semaphore.ts:95](https://github.com/isdk/util.js/blob/30c
|
|
|
145
140
|
|
|
146
141
|
> `readonly` **maxConcurrency**: `number`
|
|
147
142
|
|
|
148
|
-
Defined in: [src/async-semaphore.ts:
|
|
143
|
+
Defined in: [src/async-semaphore.ts:467](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/async-semaphore.ts#L467)
|
|
144
|
+
|
|
145
|
+
最大并发限制。
|
|
149
146
|
|
|
150
147
|
***
|
|
151
148
|
|
|
@@ -153,7 +150,9 @@ Defined in: [src/async-semaphore.ts:378](https://github.com/isdk/util.js/blob/30
|
|
|
153
150
|
|
|
154
151
|
> `protected` **paused**: `boolean`
|
|
155
152
|
|
|
156
|
-
Defined in: [src/async-semaphore.ts:
|
|
153
|
+
Defined in: [src/async-semaphore.ts:178](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/async-semaphore.ts#L178)
|
|
154
|
+
|
|
155
|
+
记录当前是否处于暂停状态。
|
|
157
156
|
|
|
158
157
|
#### Inherited from
|
|
159
158
|
|
|
@@ -161,11 +160,13 @@ Defined in: [src/async-semaphore.ts:96](https://github.com/isdk/util.js/blob/30c
|
|
|
161
160
|
|
|
162
161
|
***
|
|
163
162
|
|
|
164
|
-
### pauseFn
|
|
163
|
+
### pauseFn?
|
|
165
164
|
|
|
166
|
-
> `protected` `optional` **pauseFn
|
|
165
|
+
> `protected` `optional` **pauseFn?**: () => `void`
|
|
167
166
|
|
|
168
|
-
Defined in: [src/async-semaphore.ts:
|
|
167
|
+
Defined in: [src/async-semaphore.ts:172](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/async-semaphore.ts#L172)
|
|
168
|
+
|
|
169
|
+
获取积压时的暂停回调。
|
|
169
170
|
|
|
170
171
|
#### Returns
|
|
171
172
|
|
|
@@ -177,11 +178,13 @@ Defined in: [src/async-semaphore.ts:93](https://github.com/isdk/util.js/blob/30c
|
|
|
177
178
|
|
|
178
179
|
***
|
|
179
180
|
|
|
180
|
-
### resumeFn
|
|
181
|
+
### resumeFn?
|
|
182
|
+
|
|
183
|
+
> `protected` `optional` **resumeFn?**: () => `void`
|
|
181
184
|
|
|
182
|
-
|
|
185
|
+
Defined in: [src/async-semaphore.ts:174](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/async-semaphore.ts#L174)
|
|
183
186
|
|
|
184
|
-
|
|
187
|
+
恢复处理的回调。
|
|
185
188
|
|
|
186
189
|
#### Returns
|
|
187
190
|
|
|
@@ -197,7 +200,9 @@ Defined in: [src/async-semaphore.ts:94](https://github.com/isdk/util.js/blob/30c
|
|
|
197
200
|
|
|
198
201
|
> `protected` **useDefaultTokens**: `boolean`
|
|
199
202
|
|
|
200
|
-
Defined in: [src/async-semaphore.ts:
|
|
203
|
+
Defined in: [src/async-semaphore.ts:170](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/async-semaphore.ts#L170)
|
|
204
|
+
|
|
205
|
+
标记是否使用默认的令牌初始化函数。
|
|
201
206
|
|
|
202
207
|
#### Inherited from
|
|
203
208
|
|
|
@@ -209,7 +214,9 @@ Defined in: [src/async-semaphore.ts:92](https://github.com/isdk/util.js/blob/30c
|
|
|
209
214
|
|
|
210
215
|
> `readonly` **waiting**: [`Deque`](Deque.md)\<[`SemaphoreTaskItem`](../interfaces/SemaphoreTaskItem.md) \| `undefined`\>
|
|
211
216
|
|
|
212
|
-
Defined in: [src/async-semaphore.ts:
|
|
217
|
+
Defined in: [src/async-semaphore.ts:164](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/async-semaphore.ts#L164)
|
|
218
|
+
|
|
219
|
+
存储等待获取令牌的任务队列。
|
|
213
220
|
|
|
214
221
|
#### Inherited from
|
|
215
222
|
|
|
@@ -223,19 +230,18 @@ Defined in: [src/async-semaphore.ts:89](https://github.com/isdk/util.js/blob/30c
|
|
|
223
230
|
|
|
224
231
|
> **get** **activeCount**(): `number`
|
|
225
232
|
|
|
226
|
-
Defined in: [src/async-semaphore.ts:
|
|
227
|
-
|
|
228
|
-
Get the total count of all active operations.
|
|
233
|
+
Defined in: [src/async-semaphore.ts:430](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/async-semaphore.ts#L430)
|
|
229
234
|
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
-
|
|
235
|
+
获取所有活跃操作的总数。
|
|
236
|
+
包含:
|
|
237
|
+
- 正在队列中等待获取信号量的操作(`pendingCount`)。
|
|
238
|
+
- 已经成功获取信号量但尚未释放的操作。
|
|
233
239
|
|
|
234
240
|
##### Returns
|
|
235
241
|
|
|
236
242
|
`number`
|
|
237
243
|
|
|
238
|
-
|
|
244
|
+
活跃操作的总数。
|
|
239
245
|
|
|
240
246
|
#### Inherited from
|
|
241
247
|
|
|
@@ -249,15 +255,15 @@ The total count of active operations, including both waiting and ongoing tasks.
|
|
|
249
255
|
|
|
250
256
|
> **get** **pendingCount**(): `number`
|
|
251
257
|
|
|
252
|
-
Defined in: [src/async-semaphore.ts:
|
|
258
|
+
Defined in: [src/async-semaphore.ts:439](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/async-semaphore.ts#L439)
|
|
253
259
|
|
|
254
|
-
|
|
260
|
+
获取当前在等待队列中的调用方数量。
|
|
255
261
|
|
|
256
262
|
##### Returns
|
|
257
263
|
|
|
258
264
|
`number`
|
|
259
265
|
|
|
260
|
-
|
|
266
|
+
等待中的 Promise 数量。
|
|
261
267
|
|
|
262
268
|
#### Inherited from
|
|
263
269
|
|
|
@@ -269,7 +275,11 @@ The number of waiters in the waiting list.
|
|
|
269
275
|
|
|
270
276
|
> **\_dispatchTask**(`task`, `options?`): `void`
|
|
271
277
|
|
|
272
|
-
Defined in: [src/async-semaphore.ts:
|
|
278
|
+
Defined in: [src/async-semaphore.ts:282](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/async-semaphore.ts#L282)
|
|
279
|
+
|
|
280
|
+
**`Internal`**
|
|
281
|
+
|
|
282
|
+
将令牌分发给等待的任务。
|
|
273
283
|
|
|
274
284
|
#### Parameters
|
|
275
285
|
|
|
@@ -277,10 +287,14 @@ Defined in: [src/async-semaphore.ts:210](https://github.com/isdk/util.js/blob/30
|
|
|
277
287
|
|
|
278
288
|
[`SemaphoreTaskItem`](../interfaces/SemaphoreTaskItem.md)
|
|
279
289
|
|
|
290
|
+
等待中的任务项。
|
|
291
|
+
|
|
280
292
|
##### options?
|
|
281
293
|
|
|
282
294
|
[`BinarySemaphoreReleaseOptions`](../interfaces/BinarySemaphoreReleaseOptions.md)
|
|
283
295
|
|
|
296
|
+
释放时传递的选项。
|
|
297
|
+
|
|
284
298
|
#### Returns
|
|
285
299
|
|
|
286
300
|
`void`
|
|
@@ -295,7 +309,12 @@ Defined in: [src/async-semaphore.ts:210](https://github.com/isdk/util.js/blob/30
|
|
|
295
309
|
|
|
296
310
|
> **\_newReleaser**(`options?`): [`BinarySemaphoreReleaserFunc`](../interfaces/BinarySemaphoreReleaserFunc.md)
|
|
297
311
|
|
|
298
|
-
Defined in: [src/async-semaphore.ts:
|
|
312
|
+
Defined in: [src/async-semaphore.ts:260](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/async-semaphore.ts#L260)
|
|
313
|
+
|
|
314
|
+
**`Internal`**
|
|
315
|
+
|
|
316
|
+
创建一个新的释放函数。
|
|
317
|
+
确保释放逻辑只被执行一次,并携带相关的释放选项。
|
|
299
318
|
|
|
300
319
|
#### Parameters
|
|
301
320
|
|
|
@@ -303,10 +322,14 @@ Defined in: [src/async-semaphore.ts:195](https://github.com/isdk/util.js/blob/30
|
|
|
303
322
|
|
|
304
323
|
[`BinarySemaphoreReleaseOptions`](../interfaces/BinarySemaphoreReleaseOptions.md)
|
|
305
324
|
|
|
325
|
+
释放选项。
|
|
326
|
+
|
|
306
327
|
#### Returns
|
|
307
328
|
|
|
308
329
|
[`BinarySemaphoreReleaserFunc`](../interfaces/BinarySemaphoreReleaserFunc.md)
|
|
309
330
|
|
|
331
|
+
返回一个可调用的释放函数。
|
|
332
|
+
|
|
310
333
|
#### Inherited from
|
|
311
334
|
|
|
312
335
|
[`BinarySemaphore`](BinarySemaphore.md).[`_newReleaser`](BinarySemaphore.md#_newreleaser)
|
|
@@ -317,7 +340,10 @@ Defined in: [src/async-semaphore.ts:195](https://github.com/isdk/util.js/blob/30
|
|
|
317
340
|
|
|
318
341
|
> **abort**(`reason?`): `void`
|
|
319
342
|
|
|
320
|
-
Defined in: [src/async-semaphore.ts:
|
|
343
|
+
Defined in: [src/async-semaphore.ts:414](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/async-semaphore.ts#L414)
|
|
344
|
+
|
|
345
|
+
中止所有正在等待的任务。
|
|
346
|
+
所有在等待队列中的 Promise 将被拒绝并抛出 `AbortError`。
|
|
321
347
|
|
|
322
348
|
#### Parameters
|
|
323
349
|
|
|
@@ -325,6 +351,8 @@ Defined in: [src/async-semaphore.ts:306](https://github.com/isdk/util.js/blob/30
|
|
|
325
351
|
|
|
326
352
|
`any`
|
|
327
353
|
|
|
354
|
+
中止的原因。
|
|
355
|
+
|
|
328
356
|
#### Returns
|
|
329
357
|
|
|
330
358
|
`void`
|
|
@@ -339,9 +367,18 @@ Defined in: [src/async-semaphore.ts:306](https://github.com/isdk/util.js/blob/30
|
|
|
339
367
|
|
|
340
368
|
> **acquire**(`options?`): `Promise`\<[`BinarySemaphoreReleaserFunc`](../interfaces/BinarySemaphoreReleaserFunc.md)\>
|
|
341
369
|
|
|
342
|
-
Defined in: [src/async-semaphore.ts:
|
|
370
|
+
Defined in: [src/async-semaphore.ts:339](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/async-semaphore.ts#L339)
|
|
371
|
+
|
|
372
|
+
获取信号量。
|
|
373
|
+
如果信号量当前可用,将立即解析。否则,调用方将被加入等待队列,
|
|
374
|
+
直到有令牌被释放。
|
|
343
375
|
|
|
344
|
-
|
|
376
|
+
逻辑流程:
|
|
377
|
+
1. 增加活跃计数。
|
|
378
|
+
2. 尝试通过 `tryAcquire` 立即获取令牌。
|
|
379
|
+
3. 如果 `tryAcquire` 返回的是异步结果(通过 `isAsync` 判断),则等待其解析。
|
|
380
|
+
4. 如果最终未获得令牌,则将任务推入 `waiting` 队列,并处理可选的 `AbortSignal`。
|
|
381
|
+
5. 如果此时是队列中的第一个任务且定义了 `pauseFn`,则触发暂停回调。
|
|
345
382
|
|
|
346
383
|
#### Parameters
|
|
347
384
|
|
|
@@ -349,11 +386,13 @@ Acquire a token from the semaphore, thus decrement the number of available execu
|
|
|
349
386
|
|
|
350
387
|
[`BinarySemaphoreAcquireOptions`](../interfaces/BinarySemaphoreAcquireOptions.md)
|
|
351
388
|
|
|
389
|
+
获取选项,可包含 `signal` 用于取消。
|
|
390
|
+
|
|
352
391
|
#### Returns
|
|
353
392
|
|
|
354
393
|
`Promise`\<[`BinarySemaphoreReleaserFunc`](../interfaces/BinarySemaphoreReleaserFunc.md)\>
|
|
355
394
|
|
|
356
|
-
|
|
395
|
+
解析为释放函数(`BinarySemaphoreReleaserFunc`)的 Promise。
|
|
357
396
|
|
|
358
397
|
#### Inherited from
|
|
359
398
|
|
|
@@ -365,14 +404,17 @@ A promise that resolves to a release function when a token is acquired. If the s
|
|
|
365
404
|
|
|
366
405
|
> **drain**(): `Promise`\<`any`[]\>
|
|
367
406
|
|
|
368
|
-
Defined in: [src/async-semaphore.ts:
|
|
407
|
+
Defined in: [src/async-semaphore.ts:563](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/async-semaphore.ts#L563)
|
|
369
408
|
|
|
370
|
-
|
|
409
|
+
消耗掉所有并发槽位,确保当前没有其他操作正在运行。
|
|
410
|
+
常用于在关键操作前清空并发环境。
|
|
371
411
|
|
|
372
412
|
#### Returns
|
|
373
413
|
|
|
374
414
|
`Promise`\<`any`[]\>
|
|
375
415
|
|
|
416
|
+
解析为包含所有令牌数组的 Promise。
|
|
417
|
+
|
|
376
418
|
#### Overrides
|
|
377
419
|
|
|
378
420
|
[`BinarySemaphore`](BinarySemaphore.md).[`drain`](BinarySemaphore.md#drain)
|
|
@@ -383,7 +425,9 @@ Drains the semaphore and returns all the initialized tokens in an array. Drainin
|
|
|
383
425
|
|
|
384
426
|
> **init**(`options`): `void`
|
|
385
427
|
|
|
386
|
-
Defined in: [src/async-semaphore.ts:
|
|
428
|
+
Defined in: [src/async-semaphore.ts:246](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/async-semaphore.ts#L246)
|
|
429
|
+
|
|
430
|
+
初始化事件监听。在构造函数中被调用。
|
|
387
431
|
|
|
388
432
|
#### Parameters
|
|
389
433
|
|
|
@@ -391,6 +435,8 @@ Defined in: [src/async-semaphore.ts:189](https://github.com/isdk/util.js/blob/30
|
|
|
391
435
|
|
|
392
436
|
[`BinarySemaphoreOptions`](../interfaces/BinarySemaphoreOptions.md)
|
|
393
437
|
|
|
438
|
+
配置选项。
|
|
439
|
+
|
|
394
440
|
#### Returns
|
|
395
441
|
|
|
396
442
|
`void`
|
|
@@ -405,7 +451,9 @@ Defined in: [src/async-semaphore.ts:189](https://github.com/isdk/util.js/blob/30
|
|
|
405
451
|
|
|
406
452
|
> **initFree**(`options`): `void`
|
|
407
453
|
|
|
408
|
-
Defined in: [src/async-semaphore.ts:
|
|
454
|
+
Defined in: [src/async-semaphore.ts:503](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/async-semaphore.ts#L503)
|
|
455
|
+
|
|
456
|
+
初始化令牌池,填充至最大并发数。
|
|
409
457
|
|
|
410
458
|
#### Parameters
|
|
411
459
|
|
|
@@ -413,6 +461,8 @@ Defined in: [src/async-semaphore.ts:413](https://github.com/isdk/util.js/blob/30
|
|
|
413
461
|
|
|
414
462
|
[`SemaphoreOptions`](../interfaces/SemaphoreOptions.md)
|
|
415
463
|
|
|
464
|
+
配置选项。
|
|
465
|
+
|
|
416
466
|
#### Returns
|
|
417
467
|
|
|
418
468
|
`void`
|
|
@@ -427,7 +477,9 @@ Defined in: [src/async-semaphore.ts:413](https://github.com/isdk/util.js/blob/30
|
|
|
427
477
|
|
|
428
478
|
> **lock**(`options?`): `any`
|
|
429
479
|
|
|
430
|
-
Defined in: [src/async-semaphore.ts:
|
|
480
|
+
Defined in: [src/async-semaphore.ts:553](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/async-semaphore.ts#L553)
|
|
481
|
+
|
|
482
|
+
从空闲令牌池中取出一个令牌。
|
|
431
483
|
|
|
432
484
|
#### Parameters
|
|
433
485
|
|
|
@@ -435,10 +487,14 @@ Defined in: [src/async-semaphore.ts:447](https://github.com/isdk/util.js/blob/30
|
|
|
435
487
|
|
|
436
488
|
[`BinarySemaphoreAcquireOptions`](../interfaces/BinarySemaphoreAcquireOptions.md)
|
|
437
489
|
|
|
490
|
+
获取选项。
|
|
491
|
+
|
|
438
492
|
#### Returns
|
|
439
493
|
|
|
440
494
|
`any`
|
|
441
495
|
|
|
496
|
+
如果池中不为空则返回一个令牌,否则返回 undefined。
|
|
497
|
+
|
|
442
498
|
#### Overrides
|
|
443
499
|
|
|
444
500
|
[`BinarySemaphore`](BinarySemaphore.md).[`lock`](BinarySemaphore.md#lock)
|
|
@@ -449,7 +505,10 @@ Defined in: [src/async-semaphore.ts:447](https://github.com/isdk/util.js/blob/30
|
|
|
449
505
|
|
|
450
506
|
> **onReleased**(`options?`): `void`
|
|
451
507
|
|
|
452
|
-
Defined in: [src/async-semaphore.ts:
|
|
508
|
+
Defined in: [src/async-semaphore.ts:226](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/async-semaphore.ts#L226)
|
|
509
|
+
|
|
510
|
+
当信号量被释放时执行的内部处理逻辑。
|
|
511
|
+
检查等待队列,如果有任务则分发令牌;否则将令牌归还至空闲池,并视情况调用 `resumeFn`。
|
|
453
512
|
|
|
454
513
|
#### Parameters
|
|
455
514
|
|
|
@@ -457,6 +516,8 @@ Defined in: [src/async-semaphore.ts:173](https://github.com/isdk/util.js/blob/30
|
|
|
457
516
|
|
|
458
517
|
[`BinarySemaphoreReleaseOptions`](../interfaces/BinarySemaphoreReleaseOptions.md)
|
|
459
518
|
|
|
519
|
+
释放选项,可能包含令牌。
|
|
520
|
+
|
|
460
521
|
#### Returns
|
|
461
522
|
|
|
462
523
|
`void`
|
|
@@ -471,9 +532,11 @@ Defined in: [src/async-semaphore.ts:173](https://github.com/isdk/util.js/blob/30
|
|
|
471
532
|
|
|
472
533
|
> **release**(`options?`): `void`
|
|
473
534
|
|
|
474
|
-
Defined in: [src/async-semaphore.ts:
|
|
535
|
+
Defined in: [src/async-semaphore.ts:391](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/async-semaphore.ts#L391)
|
|
475
536
|
|
|
476
|
-
|
|
537
|
+
释放信号量,增加可用执行槽位。
|
|
538
|
+
如果等待队列中有任务,将触发下一个任务的执行。
|
|
539
|
+
此方法会减少 `activeCount` 并发出 'release' 事件。
|
|
477
540
|
|
|
478
541
|
#### Parameters
|
|
479
542
|
|
|
@@ -481,6 +544,8 @@ Releases the semaphore, incrementing the number of free execution slots. If ther
|
|
|
481
544
|
|
|
482
545
|
[`BinarySemaphoreReleaseOptions`](../interfaces/BinarySemaphoreReleaseOptions.md)
|
|
483
546
|
|
|
547
|
+
释放选项。
|
|
548
|
+
|
|
484
549
|
#### Returns
|
|
485
550
|
|
|
486
551
|
`void`
|
|
@@ -495,9 +560,10 @@ Releases the semaphore, incrementing the number of free execution slots. If ther
|
|
|
495
560
|
|
|
496
561
|
> **tryAcquire**(`options?`): `any`
|
|
497
562
|
|
|
498
|
-
Defined in: [src/async-semaphore.ts:
|
|
563
|
+
Defined in: [src/async-semaphore.ts:521](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/async-semaphore.ts#L521)
|
|
499
564
|
|
|
500
|
-
|
|
565
|
+
尝试获取令牌,包含就绪状态检查。
|
|
566
|
+
如果定义了 `isReadyFn`,将先调用它。
|
|
501
567
|
|
|
502
568
|
#### Parameters
|
|
503
569
|
|
|
@@ -505,11 +571,13 @@ Attempt to acquire a token from the semaphore, if one is available immediately.
|
|
|
505
571
|
|
|
506
572
|
[`BinarySemaphoreAcquireOptions`](../interfaces/BinarySemaphoreAcquireOptions.md)
|
|
507
573
|
|
|
574
|
+
获取选项。
|
|
575
|
+
|
|
508
576
|
#### Returns
|
|
509
577
|
|
|
510
578
|
`any`
|
|
511
579
|
|
|
512
|
-
|
|
580
|
+
可能返回令牌、Promise(当就绪检查为异步时)或 undefined。
|
|
513
581
|
|
|
514
582
|
#### Overrides
|
|
515
583
|
|
|
@@ -521,7 +589,9 @@ Returns a token if the semaphore is not full; otherwise, returns `undefined`.
|
|
|
521
589
|
|
|
522
590
|
> **unlock**(`token?`): `void`
|
|
523
591
|
|
|
524
|
-
Defined in: [src/async-semaphore.ts:
|
|
592
|
+
Defined in: [src/async-semaphore.ts:544](https://github.com/isdk/util.js/blob/c98bd1bf94d1b1dc8d01c6b9a6fc50b4beec5c62/src/async-semaphore.ts#L544)
|
|
593
|
+
|
|
594
|
+
将令牌归还至空闲令牌池。
|
|
525
595
|
|
|
526
596
|
#### Parameters
|
|
527
597
|
|
|
@@ -529,6 +599,8 @@ Defined in: [src/async-semaphore.ts:443](https://github.com/isdk/util.js/blob/30
|
|
|
529
599
|
|
|
530
600
|
`any`
|
|
531
601
|
|
|
602
|
+
要归还的令牌。
|
|
603
|
+
|
|
532
604
|
#### Returns
|
|
533
605
|
|
|
534
606
|
`void`
|