@ls-stack/utils 3.31.0 → 3.32.0
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/docs/concurrentCalls/-internal-.md +96 -28
- package/docs/concurrentCalls/README.md +68 -18
- package/lib/concurrentCalls.cjs +49 -6
- package/lib/concurrentCalls.d.cts +31 -15
- package/lib/concurrentCalls.d.ts +31 -15
- package/lib/concurrentCalls.js +45 -6
- package/package.json +1 -1
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
### ConcurrentCalls\<R, E\>
|
|
12
12
|
|
|
13
|
-
Defined in: [packages/utils/src/concurrentCalls.ts:
|
|
13
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:141](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L141)
|
|
14
14
|
|
|
15
15
|
#### Type Parameters
|
|
16
16
|
|
|
@@ -20,20 +20,38 @@ Defined in: [packages/utils/src/concurrentCalls.ts:124](https://github.com/lucas
|
|
|
20
20
|
|
|
21
21
|
##### E
|
|
22
22
|
|
|
23
|
-
`E` *extends* `
|
|
23
|
+
`E` *extends* `ResultValidErrors` = `Error`
|
|
24
24
|
|
|
25
25
|
#### Constructors
|
|
26
26
|
|
|
27
27
|
##### Constructor
|
|
28
28
|
|
|
29
29
|
```ts
|
|
30
|
-
new ConcurrentCalls<R, E>(): ConcurrentCalls<R, E>;
|
|
30
|
+
new ConcurrentCalls<R, E>(allowResultify): ConcurrentCalls<R, E>;
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:146](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L146)
|
|
34
|
+
|
|
35
|
+
###### Parameters
|
|
36
|
+
|
|
37
|
+
###### allowResultify
|
|
38
|
+
|
|
39
|
+
`boolean`
|
|
40
|
+
|
|
33
41
|
###### Returns
|
|
34
42
|
|
|
35
43
|
[`ConcurrentCalls`](#concurrentcalls)\<`R`, `E`\>
|
|
36
44
|
|
|
45
|
+
#### Properties
|
|
46
|
+
|
|
47
|
+
##### allowResultify
|
|
48
|
+
|
|
49
|
+
```ts
|
|
50
|
+
allowResultify: boolean = true;
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:144](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L144)
|
|
54
|
+
|
|
37
55
|
#### Methods
|
|
38
56
|
|
|
39
57
|
##### add()
|
|
@@ -42,7 +60,7 @@ new ConcurrentCalls<R, E>(): ConcurrentCalls<R, E>;
|
|
|
42
60
|
add(...calls): this;
|
|
43
61
|
```
|
|
44
62
|
|
|
45
|
-
Defined in: [packages/utils/src/concurrentCalls.ts:
|
|
63
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:150](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L150)
|
|
46
64
|
|
|
47
65
|
###### Parameters
|
|
48
66
|
|
|
@@ -60,7 +78,7 @@ Defined in: [packages/utils/src/concurrentCalls.ts:128](https://github.com/lucas
|
|
|
60
78
|
resultifyAdd(...calls): this;
|
|
61
79
|
```
|
|
62
80
|
|
|
63
|
-
Defined in: [packages/utils/src/concurrentCalls.ts:
|
|
81
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:156](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L156)
|
|
64
82
|
|
|
65
83
|
###### Parameters
|
|
66
84
|
|
|
@@ -78,7 +96,7 @@ Defined in: [packages/utils/src/concurrentCalls.ts:134](https://github.com/lucas
|
|
|
78
96
|
runAll(__namedParameters): Promise<Result<R[], E>>;
|
|
79
97
|
```
|
|
80
98
|
|
|
81
|
-
Defined in: [packages/utils/src/concurrentCalls.ts:
|
|
99
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:179](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L179)
|
|
82
100
|
|
|
83
101
|
###### Parameters
|
|
84
102
|
|
|
@@ -103,7 +121,7 @@ runAllSettled(__namedParameters): Promise<{
|
|
|
103
121
|
}>;
|
|
104
122
|
```
|
|
105
123
|
|
|
106
|
-
Defined in: [packages/utils/src/concurrentCalls.ts:
|
|
124
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:211](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L211)
|
|
107
125
|
|
|
108
126
|
###### Parameters
|
|
109
127
|
|
|
@@ -126,7 +144,7 @@ Defined in: [packages/utils/src/concurrentCalls.ts:183](https://github.com/lucas
|
|
|
126
144
|
|
|
127
145
|
### ConcurrentCallsWithMetadata\<M, R, E\>
|
|
128
146
|
|
|
129
|
-
Defined in: [packages/utils/src/concurrentCalls.ts:
|
|
147
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:277](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L277)
|
|
130
148
|
|
|
131
149
|
#### Type Parameters
|
|
132
150
|
|
|
@@ -140,20 +158,38 @@ Defined in: [packages/utils/src/concurrentCalls.ts:250](https://github.com/lucas
|
|
|
140
158
|
|
|
141
159
|
##### E
|
|
142
160
|
|
|
143
|
-
`E` *extends* `
|
|
161
|
+
`E` *extends* `ResultValidErrors` = `Error`
|
|
144
162
|
|
|
145
163
|
#### Constructors
|
|
146
164
|
|
|
147
165
|
##### Constructor
|
|
148
166
|
|
|
149
167
|
```ts
|
|
150
|
-
new ConcurrentCallsWithMetadata<M, R, E>(): ConcurrentCallsWithMetadata<M, R, E>;
|
|
168
|
+
new ConcurrentCallsWithMetadata<M, R, E>(allowResultify): ConcurrentCallsWithMetadata<M, R, E>;
|
|
151
169
|
```
|
|
152
170
|
|
|
171
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:286](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L286)
|
|
172
|
+
|
|
173
|
+
###### Parameters
|
|
174
|
+
|
|
175
|
+
###### allowResultify
|
|
176
|
+
|
|
177
|
+
`boolean`
|
|
178
|
+
|
|
153
179
|
###### Returns
|
|
154
180
|
|
|
155
181
|
[`ConcurrentCallsWithMetadata`](#concurrentcallswithmetadata)\<`M`, `R`, `E`\>
|
|
156
182
|
|
|
183
|
+
#### Properties
|
|
184
|
+
|
|
185
|
+
##### allowResultify
|
|
186
|
+
|
|
187
|
+
```ts
|
|
188
|
+
allowResultify: boolean = true;
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:284](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L284)
|
|
192
|
+
|
|
157
193
|
#### Methods
|
|
158
194
|
|
|
159
195
|
##### add()
|
|
@@ -162,7 +198,7 @@ new ConcurrentCallsWithMetadata<M, R, E>(): ConcurrentCallsWithMetadata<M, R, E>
|
|
|
162
198
|
add(...calls): this;
|
|
163
199
|
```
|
|
164
200
|
|
|
165
|
-
Defined in: [packages/utils/src/concurrentCalls.ts:
|
|
201
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:290](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L290)
|
|
166
202
|
|
|
167
203
|
###### Parameters
|
|
168
204
|
|
|
@@ -180,7 +216,7 @@ Defined in: [packages/utils/src/concurrentCalls.ts:258](https://github.com/lucas
|
|
|
180
216
|
resultifyAdd(...items): this;
|
|
181
217
|
```
|
|
182
218
|
|
|
183
|
-
Defined in: [packages/utils/src/concurrentCalls.ts:
|
|
219
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:304](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L304)
|
|
184
220
|
|
|
185
221
|
###### Parameters
|
|
186
222
|
|
|
@@ -198,7 +234,7 @@ Defined in: [packages/utils/src/concurrentCalls.ts:272](https://github.com/lucas
|
|
|
198
234
|
runAll(__namedParameters): Promise<Result<SucceededCall<R, M>[], FailedCall<M, E>>>;
|
|
199
235
|
```
|
|
200
236
|
|
|
201
|
-
Defined in: [packages/utils/src/concurrentCalls.ts:
|
|
237
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:330](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L330)
|
|
202
238
|
|
|
203
239
|
###### Parameters
|
|
204
240
|
|
|
@@ -225,7 +261,7 @@ runAllSettled(__namedParameters): Promise<{
|
|
|
225
261
|
}>;
|
|
226
262
|
```
|
|
227
263
|
|
|
228
|
-
Defined in: [packages/utils/src/concurrentCalls.ts:
|
|
264
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:377](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L377)
|
|
229
265
|
|
|
230
266
|
###### Parameters
|
|
231
267
|
|
|
@@ -254,7 +290,7 @@ Defined in: [packages/utils/src/concurrentCalls.ts:339](https://github.com/lucas
|
|
|
254
290
|
type Action<R, E> = () => Promise<Result<R, E>>;
|
|
255
291
|
```
|
|
256
292
|
|
|
257
|
-
Defined in: [packages/utils/src/concurrentCalls.ts:
|
|
293
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:134](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L134)
|
|
258
294
|
|
|
259
295
|
#### Type Parameters
|
|
260
296
|
|
|
@@ -264,7 +300,7 @@ Defined in: [packages/utils/src/concurrentCalls.ts:117](https://github.com/lucas
|
|
|
264
300
|
|
|
265
301
|
##### E
|
|
266
302
|
|
|
267
|
-
`E` *extends* `
|
|
303
|
+
`E` *extends* `ResultValidErrors`
|
|
268
304
|
|
|
269
305
|
#### Returns
|
|
270
306
|
|
|
@@ -272,13 +308,29 @@ Defined in: [packages/utils/src/concurrentCalls.ts:117](https://github.com/lucas
|
|
|
272
308
|
|
|
273
309
|
***
|
|
274
310
|
|
|
311
|
+
### ErrorFromResult\<R\>
|
|
312
|
+
|
|
313
|
+
```ts
|
|
314
|
+
type ErrorFromResult<R> = R extends Result<any, infer E> ? E : never;
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:480](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L480)
|
|
318
|
+
|
|
319
|
+
#### Type Parameters
|
|
320
|
+
|
|
321
|
+
##### R
|
|
322
|
+
|
|
323
|
+
`R`
|
|
324
|
+
|
|
325
|
+
***
|
|
326
|
+
|
|
275
327
|
### FailedCall\<M, E\>
|
|
276
328
|
|
|
277
329
|
```ts
|
|
278
330
|
type FailedCall<M, E> = object;
|
|
279
331
|
```
|
|
280
332
|
|
|
281
|
-
Defined in: [packages/utils/src/concurrentCalls.ts:
|
|
333
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:129](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L129)
|
|
282
334
|
|
|
283
335
|
#### Type Parameters
|
|
284
336
|
|
|
@@ -288,7 +340,7 @@ Defined in: [packages/utils/src/concurrentCalls.ts:112](https://github.com/lucas
|
|
|
288
340
|
|
|
289
341
|
##### E
|
|
290
342
|
|
|
291
|
-
`E` *extends* `
|
|
343
|
+
`E` *extends* `ResultValidErrors` = `Error`
|
|
292
344
|
|
|
293
345
|
#### Properties
|
|
294
346
|
|
|
@@ -298,7 +350,7 @@ Defined in: [packages/utils/src/concurrentCalls.ts:112](https://github.com/lucas
|
|
|
298
350
|
error: E;
|
|
299
351
|
```
|
|
300
352
|
|
|
301
|
-
Defined in: [packages/utils/src/concurrentCalls.ts:
|
|
353
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:131](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L131)
|
|
302
354
|
|
|
303
355
|
##### metadata
|
|
304
356
|
|
|
@@ -306,7 +358,7 @@ Defined in: [packages/utils/src/concurrentCalls.ts:114](https://github.com/lucas
|
|
|
306
358
|
metadata: M;
|
|
307
359
|
```
|
|
308
360
|
|
|
309
|
-
Defined in: [packages/utils/src/concurrentCalls.ts:
|
|
361
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:130](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L130)
|
|
310
362
|
|
|
311
363
|
***
|
|
312
364
|
|
|
@@ -316,7 +368,7 @@ Defined in: [packages/utils/src/concurrentCalls.ts:113](https://github.com/lucas
|
|
|
316
368
|
type RunProps = object;
|
|
317
369
|
```
|
|
318
370
|
|
|
319
|
-
Defined in: [packages/utils/src/concurrentCalls.ts:
|
|
371
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:120](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L120)
|
|
320
372
|
|
|
321
373
|
#### Properties
|
|
322
374
|
|
|
@@ -326,7 +378,7 @@ Defined in: [packages/utils/src/concurrentCalls.ts:103](https://github.com/lucas
|
|
|
326
378
|
optional delayStart: (index) => number;
|
|
327
379
|
```
|
|
328
380
|
|
|
329
|
-
Defined in: [packages/utils/src/concurrentCalls.ts:
|
|
381
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:121](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L121)
|
|
330
382
|
|
|
331
383
|
###### Parameters
|
|
332
384
|
|
|
@@ -357,7 +409,7 @@ type SettledResultWithMetadata<R, M, E> =
|
|
|
357
409
|
};
|
|
358
410
|
```
|
|
359
411
|
|
|
360
|
-
Defined in: [packages/utils/src/concurrentCalls.ts:
|
|
412
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:137](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L137)
|
|
361
413
|
|
|
362
414
|
#### Type Parameters
|
|
363
415
|
|
|
@@ -371,7 +423,7 @@ Defined in: [packages/utils/src/concurrentCalls.ts:120](https://github.com/lucas
|
|
|
371
423
|
|
|
372
424
|
##### E
|
|
373
425
|
|
|
374
|
-
`E` *extends* `
|
|
426
|
+
`E` *extends* `ResultValidErrors` = `Error`
|
|
375
427
|
|
|
376
428
|
***
|
|
377
429
|
|
|
@@ -381,7 +433,7 @@ Defined in: [packages/utils/src/concurrentCalls.ts:120](https://github.com/lucas
|
|
|
381
433
|
type SucceededCall<R, M> = object;
|
|
382
434
|
```
|
|
383
435
|
|
|
384
|
-
Defined in: [packages/utils/src/concurrentCalls.ts:
|
|
436
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:125](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L125)
|
|
385
437
|
|
|
386
438
|
#### Type Parameters
|
|
387
439
|
|
|
@@ -401,7 +453,7 @@ Defined in: [packages/utils/src/concurrentCalls.ts:108](https://github.com/lucas
|
|
|
401
453
|
metadata: M;
|
|
402
454
|
```
|
|
403
455
|
|
|
404
|
-
Defined in: [packages/utils/src/concurrentCalls.ts:
|
|
456
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:127](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L127)
|
|
405
457
|
|
|
406
458
|
##### value
|
|
407
459
|
|
|
@@ -409,7 +461,7 @@ Defined in: [packages/utils/src/concurrentCalls.ts:110](https://github.com/lucas
|
|
|
409
461
|
value: R;
|
|
410
462
|
```
|
|
411
463
|
|
|
412
|
-
Defined in: [packages/utils/src/concurrentCalls.ts:
|
|
464
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:126](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L126)
|
|
413
465
|
|
|
414
466
|
***
|
|
415
467
|
|
|
@@ -419,4 +471,20 @@ Defined in: [packages/utils/src/concurrentCalls.ts:109](https://github.com/lucas
|
|
|
419
471
|
type ValidMetadata = string | number | boolean | Record<string, unknown>;
|
|
420
472
|
```
|
|
421
473
|
|
|
422
|
-
Defined in: [packages/utils/src/concurrentCalls.ts:
|
|
474
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:118](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L118)
|
|
475
|
+
|
|
476
|
+
***
|
|
477
|
+
|
|
478
|
+
### ValueFromResult\<R\>
|
|
479
|
+
|
|
480
|
+
```ts
|
|
481
|
+
type ValueFromResult<R> = R extends Result<infer T, any> ? T : never;
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:479](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L479)
|
|
485
|
+
|
|
486
|
+
#### Type Parameters
|
|
487
|
+
|
|
488
|
+
##### R
|
|
489
|
+
|
|
490
|
+
`R`
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
### ConcurrentCallsAggregateError
|
|
16
16
|
|
|
17
|
-
Defined in: [packages/utils/src/concurrentCalls.ts:
|
|
17
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:38](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L38)
|
|
18
18
|
|
|
19
19
|
#### Extends
|
|
20
20
|
|
|
@@ -31,13 +31,13 @@ new ConcurrentCallsAggregateError(
|
|
|
31
31
|
failed): ConcurrentCallsAggregateError;
|
|
32
32
|
```
|
|
33
33
|
|
|
34
|
-
Defined in: [packages/utils/src/concurrentCalls.ts:
|
|
34
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:43](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L43)
|
|
35
35
|
|
|
36
36
|
###### Parameters
|
|
37
37
|
|
|
38
38
|
###### errors
|
|
39
39
|
|
|
40
|
-
`
|
|
40
|
+
`ResultValidErrors`[]
|
|
41
41
|
|
|
42
42
|
###### total
|
|
43
43
|
|
|
@@ -62,10 +62,10 @@ AggregateError.constructor
|
|
|
62
62
|
##### errors
|
|
63
63
|
|
|
64
64
|
```ts
|
|
65
|
-
errors:
|
|
65
|
+
errors: ResultValidErrors[] = [];
|
|
66
66
|
```
|
|
67
67
|
|
|
68
|
-
Defined in: [packages/utils/src/concurrentCalls.ts:
|
|
68
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:39](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L39)
|
|
69
69
|
|
|
70
70
|
###### Overrides
|
|
71
71
|
|
|
@@ -79,7 +79,7 @@ AggregateError.errors
|
|
|
79
79
|
failed: number = 0;
|
|
80
80
|
```
|
|
81
81
|
|
|
82
|
-
Defined in: [packages/utils/src/concurrentCalls.ts:
|
|
82
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:41](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L41)
|
|
83
83
|
|
|
84
84
|
##### total
|
|
85
85
|
|
|
@@ -87,13 +87,13 @@ Defined in: [packages/utils/src/concurrentCalls.ts:35](https://github.com/lucaso
|
|
|
87
87
|
total: number = 0;
|
|
88
88
|
```
|
|
89
89
|
|
|
90
|
-
Defined in: [packages/utils/src/concurrentCalls.ts:
|
|
90
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:40](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L40)
|
|
91
91
|
|
|
92
92
|
***
|
|
93
93
|
|
|
94
94
|
### ConcurrentCallsWithMetadataAggregateError\<M\>
|
|
95
95
|
|
|
96
|
-
Defined in: [packages/utils/src/concurrentCalls.ts:
|
|
96
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:62](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L62)
|
|
97
97
|
|
|
98
98
|
#### Extends
|
|
99
99
|
|
|
@@ -116,7 +116,7 @@ new ConcurrentCallsWithMetadataAggregateError<M>(
|
|
|
116
116
|
failed): ConcurrentCallsWithMetadataAggregateError<M>;
|
|
117
117
|
```
|
|
118
118
|
|
|
119
|
-
Defined in: [packages/utils/src/concurrentCalls.ts:
|
|
119
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:70](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L70)
|
|
120
120
|
|
|
121
121
|
###### Parameters
|
|
122
122
|
|
|
@@ -147,10 +147,10 @@ AggregateError.constructor
|
|
|
147
147
|
##### errors
|
|
148
148
|
|
|
149
149
|
```ts
|
|
150
|
-
errors:
|
|
150
|
+
errors: ResultValidErrors[] = [];
|
|
151
151
|
```
|
|
152
152
|
|
|
153
|
-
Defined in: [packages/utils/src/concurrentCalls.ts:
|
|
153
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:65](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L65)
|
|
154
154
|
|
|
155
155
|
###### Overrides
|
|
156
156
|
|
|
@@ -164,12 +164,12 @@ AggregateError.errors
|
|
|
164
164
|
errorsWithMetadata: object[] = [];
|
|
165
165
|
```
|
|
166
166
|
|
|
167
|
-
Defined in: [packages/utils/src/concurrentCalls.ts:
|
|
167
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:66](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L66)
|
|
168
168
|
|
|
169
169
|
###### error
|
|
170
170
|
|
|
171
171
|
```ts
|
|
172
|
-
error:
|
|
172
|
+
error: ResultValidErrors;
|
|
173
173
|
```
|
|
174
174
|
|
|
175
175
|
###### metadata
|
|
@@ -184,7 +184,7 @@ metadata: M;
|
|
|
184
184
|
failed: number = 0;
|
|
185
185
|
```
|
|
186
186
|
|
|
187
|
-
Defined in: [packages/utils/src/concurrentCalls.ts:
|
|
187
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:68](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L68)
|
|
188
188
|
|
|
189
189
|
##### total
|
|
190
190
|
|
|
@@ -192,7 +192,7 @@ Defined in: [packages/utils/src/concurrentCalls.ts:56](https://github.com/lucaso
|
|
|
192
192
|
total: number = 0;
|
|
193
193
|
```
|
|
194
194
|
|
|
195
|
-
Defined in: [packages/utils/src/concurrentCalls.ts:
|
|
195
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:67](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L67)
|
|
196
196
|
|
|
197
197
|
## Functions
|
|
198
198
|
|
|
@@ -202,7 +202,7 @@ Defined in: [packages/utils/src/concurrentCalls.ts:55](https://github.com/lucaso
|
|
|
202
202
|
function concurrentCalls<R>(): ConcurrentCalls<R, Error>;
|
|
203
203
|
```
|
|
204
204
|
|
|
205
|
-
Defined in: [packages/utils/src/concurrentCalls.ts:
|
|
205
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:273](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L273)
|
|
206
206
|
|
|
207
207
|
Executes multiple asynchronous calls concurrently and collects the results in a easier to use format.
|
|
208
208
|
|
|
@@ -226,9 +226,9 @@ The type of the result value.
|
|
|
226
226
|
function concurrentCallsWithMetadata<M, R>(): ConcurrentCallsWithMetadata<M, R, Error>;
|
|
227
227
|
```
|
|
228
228
|
|
|
229
|
-
Defined in: [packages/utils/src/concurrentCalls.ts:
|
|
229
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:472](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L472)
|
|
230
230
|
|
|
231
|
-
Executes multiple asynchronous calls concurrently and collects the results in a easier to use format.
|
|
231
|
+
Executes multiple asynchronous calls concurrently with metadata for each call and collects the results in a easier to use format.
|
|
232
232
|
|
|
233
233
|
#### Type Parameters
|
|
234
234
|
|
|
@@ -247,3 +247,53 @@ The type of the result value.
|
|
|
247
247
|
#### Returns
|
|
248
248
|
|
|
249
249
|
[`ConcurrentCallsWithMetadata`](-internal-.md#concurrentcallswithmetadata)\<`M`, `R`, `Error`\>
|
|
250
|
+
|
|
251
|
+
***
|
|
252
|
+
|
|
253
|
+
### concurrentResultCalls()
|
|
254
|
+
|
|
255
|
+
```ts
|
|
256
|
+
function concurrentResultCalls<ResultFn>(): ConcurrentCalls<ValueFromResult<Awaited<ReturnType<ResultFn>>>, ErrorFromResult<Awaited<ReturnType<ResultFn>>>>;
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:487](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L487)
|
|
260
|
+
|
|
261
|
+
Executes multiple asynchronous result calls concurrently and collects the results in a easier to use format.
|
|
262
|
+
|
|
263
|
+
#### Type Parameters
|
|
264
|
+
|
|
265
|
+
##### ResultFn
|
|
266
|
+
|
|
267
|
+
`ResultFn` *extends* (...`args`) => `Promise`\<`Result`\<`unknown`, `ResultValidErrors`\>\>
|
|
268
|
+
|
|
269
|
+
#### Returns
|
|
270
|
+
|
|
271
|
+
[`ConcurrentCalls`](-internal-.md#concurrentcalls)\<[`ValueFromResult`](-internal-.md#valuefromresult)\<`Awaited`\<`ReturnType`\<`ResultFn`\>\>\>, [`ErrorFromResult`](-internal-.md#errorfromresult)\<`Awaited`\<`ReturnType`\<`ResultFn`\>\>\>\>
|
|
272
|
+
|
|
273
|
+
***
|
|
274
|
+
|
|
275
|
+
### concurrentResultsWithMetadata()
|
|
276
|
+
|
|
277
|
+
```ts
|
|
278
|
+
function concurrentResultsWithMetadata<M, ResultFn>(): ConcurrentCallsWithMetadata<M, ValueFromResult<Awaited<ReturnType<ResultFn>>>, ErrorFromResult<Awaited<ReturnType<ResultFn>>>>;
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
Defined in: [packages/utils/src/concurrentCalls.ts:504](https://github.com/lucasols/utils/blob/main/packages/utils/src/concurrentCalls.ts#L504)
|
|
282
|
+
|
|
283
|
+
Executes multiple asynchronous result calls concurrently with metadata for each call and collects the results in a easier to use format.
|
|
284
|
+
|
|
285
|
+
#### Type Parameters
|
|
286
|
+
|
|
287
|
+
##### M
|
|
288
|
+
|
|
289
|
+
`M` *extends* [`ValidMetadata`](-internal-.md#validmetadata)
|
|
290
|
+
|
|
291
|
+
##### ResultFn
|
|
292
|
+
|
|
293
|
+
`ResultFn` *extends* (...`args`) => `Promise`\<`Result`\<`unknown`, `ResultValidErrors`\>\>
|
|
294
|
+
|
|
295
|
+
The type of the result function that will be called.
|
|
296
|
+
|
|
297
|
+
#### Returns
|
|
298
|
+
|
|
299
|
+
[`ConcurrentCallsWithMetadata`](-internal-.md#concurrentcallswithmetadata)\<`M`, [`ValueFromResult`](-internal-.md#valuefromresult)\<`Awaited`\<`ReturnType`\<`ResultFn`\>\>\>, [`ErrorFromResult`](-internal-.md#errorfromresult)\<`Awaited`\<`ReturnType`\<`ResultFn`\>\>\>\>
|
package/lib/concurrentCalls.cjs
CHANGED
|
@@ -23,7 +23,9 @@ __export(concurrentCalls_exports, {
|
|
|
23
23
|
ConcurrentCallsAggregateError: () => ConcurrentCallsAggregateError,
|
|
24
24
|
ConcurrentCallsWithMetadataAggregateError: () => ConcurrentCallsWithMetadataAggregateError,
|
|
25
25
|
concurrentCalls: () => concurrentCalls,
|
|
26
|
-
concurrentCallsWithMetadata: () => concurrentCallsWithMetadata
|
|
26
|
+
concurrentCallsWithMetadata: () => concurrentCallsWithMetadata,
|
|
27
|
+
concurrentResultCalls: () => concurrentResultCalls,
|
|
28
|
+
concurrentResultsWithMetadata: () => concurrentResultsWithMetadata
|
|
27
29
|
});
|
|
28
30
|
module.exports = __toCommonJS(concurrentCalls_exports);
|
|
29
31
|
var import_t_result = require("t-result");
|
|
@@ -60,6 +62,15 @@ function truncateArray(array, maxLength, appendIfTruncated) {
|
|
|
60
62
|
return result;
|
|
61
63
|
}
|
|
62
64
|
|
|
65
|
+
// src/safeJson.ts
|
|
66
|
+
function safeJsonStringify(value) {
|
|
67
|
+
try {
|
|
68
|
+
return JSON.stringify(value);
|
|
69
|
+
} catch (_) {
|
|
70
|
+
return void 0;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
63
74
|
// src/sleep.ts
|
|
64
75
|
function sleep(ms) {
|
|
65
76
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
@@ -93,7 +104,10 @@ var ConcurrentCallsAggregateError = class extends AggregateError {
|
|
|
93
104
|
failed = 0;
|
|
94
105
|
constructor(errors, total, failed) {
|
|
95
106
|
const messages = errors.map(
|
|
96
|
-
(error) => `- ${truncateString(
|
|
107
|
+
(error) => `- ${truncateString(
|
|
108
|
+
error instanceof Error ? error.message : safeJsonStringify(error) ?? "???",
|
|
109
|
+
100
|
|
110
|
+
)}`
|
|
97
111
|
);
|
|
98
112
|
const message = formatErrorMessagesWithCounts(messages, failed, total);
|
|
99
113
|
super(errors, message);
|
|
@@ -122,7 +136,10 @@ var ConcurrentCallsWithMetadataAggregateError = class extends AggregateError {
|
|
|
122
136
|
}
|
|
123
137
|
} catch (_) {
|
|
124
138
|
}
|
|
125
|
-
return `- ${metadataPrefix}${truncateString(
|
|
139
|
+
return `- ${metadataPrefix}${truncateString(
|
|
140
|
+
error instanceof Error ? error.message : safeJsonStringify(error) ?? "???",
|
|
141
|
+
100
|
|
142
|
+
)}`;
|
|
126
143
|
});
|
|
127
144
|
const message = formatErrorMessagesWithCounts(messages, failed, total);
|
|
128
145
|
const errorInstances = errors.map((e) => e.error);
|
|
@@ -136,11 +153,20 @@ var ConcurrentCallsWithMetadataAggregateError = class extends AggregateError {
|
|
|
136
153
|
var ConcurrentCalls = class {
|
|
137
154
|
#pendingCalls = [];
|
|
138
155
|
#alreadyRun = false;
|
|
156
|
+
allowResultify = true;
|
|
157
|
+
constructor(allowResultify) {
|
|
158
|
+
this.allowResultify = allowResultify;
|
|
159
|
+
}
|
|
139
160
|
add(...calls) {
|
|
140
161
|
this.#pendingCalls.push(...calls);
|
|
141
162
|
return this;
|
|
142
163
|
}
|
|
143
164
|
resultifyAdd(...calls) {
|
|
165
|
+
if (!this.allowResultify) {
|
|
166
|
+
throw new Error(
|
|
167
|
+
"resultifyAdd is not allowed when using concurrentResults"
|
|
168
|
+
);
|
|
169
|
+
}
|
|
144
170
|
const processedCalls = calls.map((call) => {
|
|
145
171
|
return async () => {
|
|
146
172
|
try {
|
|
@@ -221,11 +247,15 @@ var ConcurrentCalls = class {
|
|
|
221
247
|
}
|
|
222
248
|
};
|
|
223
249
|
function concurrentCalls() {
|
|
224
|
-
return new ConcurrentCalls();
|
|
250
|
+
return new ConcurrentCalls(true);
|
|
225
251
|
}
|
|
226
252
|
var ConcurrentCallsWithMetadata = class {
|
|
227
253
|
#pendingCalls = [];
|
|
228
254
|
#alreadyRun = false;
|
|
255
|
+
allowResultify = true;
|
|
256
|
+
constructor(allowResultify) {
|
|
257
|
+
this.allowResultify = allowResultify;
|
|
258
|
+
}
|
|
229
259
|
add(...calls) {
|
|
230
260
|
invariant(
|
|
231
261
|
!this.#alreadyRun,
|
|
@@ -235,6 +265,11 @@ var ConcurrentCallsWithMetadata = class {
|
|
|
235
265
|
return this;
|
|
236
266
|
}
|
|
237
267
|
resultifyAdd(...items) {
|
|
268
|
+
if (!this.allowResultify) {
|
|
269
|
+
throw new Error(
|
|
270
|
+
"resultifyAdd is not allowed when using concurrentResultsWithMetadata"
|
|
271
|
+
);
|
|
272
|
+
}
|
|
238
273
|
const processedItems = items.map(({ fn, metadata }) => {
|
|
239
274
|
const cb = () => (0, import_t_result.resultify)(async () => {
|
|
240
275
|
const valueOrPromise = fn();
|
|
@@ -352,12 +387,20 @@ var ConcurrentCallsWithMetadata = class {
|
|
|
352
387
|
}
|
|
353
388
|
};
|
|
354
389
|
function concurrentCallsWithMetadata() {
|
|
355
|
-
return new ConcurrentCallsWithMetadata();
|
|
390
|
+
return new ConcurrentCallsWithMetadata(true);
|
|
391
|
+
}
|
|
392
|
+
function concurrentResultCalls() {
|
|
393
|
+
return new ConcurrentCalls(false);
|
|
394
|
+
}
|
|
395
|
+
function concurrentResultsWithMetadata() {
|
|
396
|
+
return new ConcurrentCallsWithMetadata(false);
|
|
356
397
|
}
|
|
357
398
|
// Annotate the CommonJS export names for ESM import in node:
|
|
358
399
|
0 && (module.exports = {
|
|
359
400
|
ConcurrentCallsAggregateError,
|
|
360
401
|
ConcurrentCallsWithMetadataAggregateError,
|
|
361
402
|
concurrentCalls,
|
|
362
|
-
concurrentCallsWithMetadata
|
|
403
|
+
concurrentCallsWithMetadata,
|
|
404
|
+
concurrentResultCalls,
|
|
405
|
+
concurrentResultsWithMetadata
|
|
363
406
|
});
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { Result } from 't-result';
|
|
1
|
+
import { ResultValidErrors, Result } from 't-result';
|
|
2
2
|
|
|
3
3
|
declare class ConcurrentCallsAggregateError extends AggregateError {
|
|
4
|
-
errors:
|
|
4
|
+
errors: ResultValidErrors[];
|
|
5
5
|
total: number;
|
|
6
6
|
failed: number;
|
|
7
|
-
constructor(errors:
|
|
7
|
+
constructor(errors: ResultValidErrors[], total: number, failed: number);
|
|
8
8
|
}
|
|
9
9
|
declare class ConcurrentCallsWithMetadataAggregateError<M extends ValidMetadata> extends AggregateError {
|
|
10
|
-
errors:
|
|
10
|
+
errors: ResultValidErrors[];
|
|
11
11
|
errorsWithMetadata: {
|
|
12
|
-
error:
|
|
12
|
+
error: ResultValidErrors;
|
|
13
13
|
metadata: M;
|
|
14
14
|
}[];
|
|
15
15
|
total: number;
|
|
16
16
|
failed: number;
|
|
17
17
|
constructor(errors: {
|
|
18
|
-
error:
|
|
18
|
+
error: ResultValidErrors;
|
|
19
19
|
metadata: M;
|
|
20
20
|
}[], total: number, failed: number);
|
|
21
21
|
}
|
|
@@ -27,12 +27,12 @@ type SucceededCall<R, M> = {
|
|
|
27
27
|
value: R;
|
|
28
28
|
metadata: M;
|
|
29
29
|
};
|
|
30
|
-
type FailedCall<M, E extends
|
|
30
|
+
type FailedCall<M, E extends ResultValidErrors = Error> = {
|
|
31
31
|
metadata: M;
|
|
32
32
|
error: E;
|
|
33
33
|
};
|
|
34
|
-
type Action<R, E extends
|
|
35
|
-
type SettledResultWithMetadata<R, M, E extends
|
|
34
|
+
type Action<R, E extends ResultValidErrors> = () => Promise<Result<R, E>>;
|
|
35
|
+
type SettledResultWithMetadata<R, M, E extends ResultValidErrors = Error> = {
|
|
36
36
|
ok: true;
|
|
37
37
|
value: R;
|
|
38
38
|
metadata: M;
|
|
@@ -42,8 +42,10 @@ type SettledResultWithMetadata<R, M, E extends Error = Error> = {
|
|
|
42
42
|
error: E;
|
|
43
43
|
metadata: M;
|
|
44
44
|
};
|
|
45
|
-
declare class ConcurrentCalls<R = unknown, E extends
|
|
45
|
+
declare class ConcurrentCalls<R = unknown, E extends ResultValidErrors = Error> {
|
|
46
46
|
#private;
|
|
47
|
+
allowResultify: boolean;
|
|
48
|
+
constructor(allowResultify: boolean);
|
|
47
49
|
add(...calls: Action<R, E>[]): this;
|
|
48
50
|
resultifyAdd(...calls: ((() => R) | (() => Promise<R>))[]): this;
|
|
49
51
|
runAll({ delayStart }?: RunProps): Promise<Result<R[], E>>;
|
|
@@ -59,11 +61,12 @@ declare class ConcurrentCalls<R = unknown, E extends Error = Error> {
|
|
|
59
61
|
* Executes multiple asynchronous calls concurrently and collects the results in a easier to use format.
|
|
60
62
|
*
|
|
61
63
|
* @template R - The type of the result value.
|
|
62
|
-
* @template E - The type of the error.
|
|
63
64
|
*/
|
|
64
65
|
declare function concurrentCalls<R = unknown>(): ConcurrentCalls<R, Error>;
|
|
65
|
-
declare class ConcurrentCallsWithMetadata<M extends ValidMetadata, R = unknown, E extends
|
|
66
|
+
declare class ConcurrentCallsWithMetadata<M extends ValidMetadata, R = unknown, E extends ResultValidErrors = Error> {
|
|
66
67
|
#private;
|
|
68
|
+
allowResultify: boolean;
|
|
69
|
+
constructor(allowResultify: boolean);
|
|
67
70
|
add(...calls: {
|
|
68
71
|
fn: Action<R, E>;
|
|
69
72
|
metadata: M;
|
|
@@ -85,12 +88,25 @@ declare class ConcurrentCallsWithMetadata<M extends ValidMetadata, R = unknown,
|
|
|
85
88
|
}>;
|
|
86
89
|
}
|
|
87
90
|
/**
|
|
88
|
-
* Executes multiple asynchronous calls concurrently and collects the results in a easier to use format.
|
|
91
|
+
* Executes multiple asynchronous calls concurrently with metadata for each call and collects the results in a easier to use format.
|
|
89
92
|
*
|
|
90
93
|
* @template M - The type of the call metadata.
|
|
91
94
|
* @template R - The type of the result value.
|
|
92
|
-
* @template E - The type of the error from individual Result objects.
|
|
93
95
|
*/
|
|
94
96
|
declare function concurrentCallsWithMetadata<M extends ValidMetadata, R = unknown>(): ConcurrentCallsWithMetadata<M, R, Error>;
|
|
97
|
+
type ValueFromResult<R> = R extends Result<infer T, any> ? T : never;
|
|
98
|
+
type ErrorFromResult<R> = R extends Result<any, infer E> ? E : never;
|
|
99
|
+
/**
|
|
100
|
+
* Executes multiple asynchronous result calls concurrently and collects the results in a easier to use format.
|
|
101
|
+
*
|
|
102
|
+
* @template R - The type of the result function that will be called.
|
|
103
|
+
*/
|
|
104
|
+
declare function concurrentResultCalls<ResultFn extends (...args: any[]) => Promise<Result<unknown, ResultValidErrors>>>(): ConcurrentCalls<ValueFromResult<Awaited<ReturnType<ResultFn>>>, ErrorFromResult<Awaited<ReturnType<ResultFn>>>>;
|
|
105
|
+
/**
|
|
106
|
+
* Executes multiple asynchronous result calls concurrently with metadata for each call and collects the results in a easier to use format.
|
|
107
|
+
*
|
|
108
|
+
* @template ResultFn - The type of the result function that will be called.
|
|
109
|
+
*/
|
|
110
|
+
declare function concurrentResultsWithMetadata<M extends ValidMetadata, ResultFn extends (...args: any[]) => Promise<Result<unknown, ResultValidErrors>>>(): ConcurrentCallsWithMetadata<M, ValueFromResult<Awaited<ReturnType<ResultFn>>>, ErrorFromResult<Awaited<ReturnType<ResultFn>>>>;
|
|
95
111
|
|
|
96
|
-
export { ConcurrentCallsAggregateError, ConcurrentCallsWithMetadataAggregateError, concurrentCalls, concurrentCallsWithMetadata };
|
|
112
|
+
export { ConcurrentCallsAggregateError, ConcurrentCallsWithMetadataAggregateError, concurrentCalls, concurrentCallsWithMetadata, concurrentResultCalls, concurrentResultsWithMetadata };
|
package/lib/concurrentCalls.d.ts
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { Result } from 't-result';
|
|
1
|
+
import { ResultValidErrors, Result } from 't-result';
|
|
2
2
|
|
|
3
3
|
declare class ConcurrentCallsAggregateError extends AggregateError {
|
|
4
|
-
errors:
|
|
4
|
+
errors: ResultValidErrors[];
|
|
5
5
|
total: number;
|
|
6
6
|
failed: number;
|
|
7
|
-
constructor(errors:
|
|
7
|
+
constructor(errors: ResultValidErrors[], total: number, failed: number);
|
|
8
8
|
}
|
|
9
9
|
declare class ConcurrentCallsWithMetadataAggregateError<M extends ValidMetadata> extends AggregateError {
|
|
10
|
-
errors:
|
|
10
|
+
errors: ResultValidErrors[];
|
|
11
11
|
errorsWithMetadata: {
|
|
12
|
-
error:
|
|
12
|
+
error: ResultValidErrors;
|
|
13
13
|
metadata: M;
|
|
14
14
|
}[];
|
|
15
15
|
total: number;
|
|
16
16
|
failed: number;
|
|
17
17
|
constructor(errors: {
|
|
18
|
-
error:
|
|
18
|
+
error: ResultValidErrors;
|
|
19
19
|
metadata: M;
|
|
20
20
|
}[], total: number, failed: number);
|
|
21
21
|
}
|
|
@@ -27,12 +27,12 @@ type SucceededCall<R, M> = {
|
|
|
27
27
|
value: R;
|
|
28
28
|
metadata: M;
|
|
29
29
|
};
|
|
30
|
-
type FailedCall<M, E extends
|
|
30
|
+
type FailedCall<M, E extends ResultValidErrors = Error> = {
|
|
31
31
|
metadata: M;
|
|
32
32
|
error: E;
|
|
33
33
|
};
|
|
34
|
-
type Action<R, E extends
|
|
35
|
-
type SettledResultWithMetadata<R, M, E extends
|
|
34
|
+
type Action<R, E extends ResultValidErrors> = () => Promise<Result<R, E>>;
|
|
35
|
+
type SettledResultWithMetadata<R, M, E extends ResultValidErrors = Error> = {
|
|
36
36
|
ok: true;
|
|
37
37
|
value: R;
|
|
38
38
|
metadata: M;
|
|
@@ -42,8 +42,10 @@ type SettledResultWithMetadata<R, M, E extends Error = Error> = {
|
|
|
42
42
|
error: E;
|
|
43
43
|
metadata: M;
|
|
44
44
|
};
|
|
45
|
-
declare class ConcurrentCalls<R = unknown, E extends
|
|
45
|
+
declare class ConcurrentCalls<R = unknown, E extends ResultValidErrors = Error> {
|
|
46
46
|
#private;
|
|
47
|
+
allowResultify: boolean;
|
|
48
|
+
constructor(allowResultify: boolean);
|
|
47
49
|
add(...calls: Action<R, E>[]): this;
|
|
48
50
|
resultifyAdd(...calls: ((() => R) | (() => Promise<R>))[]): this;
|
|
49
51
|
runAll({ delayStart }?: RunProps): Promise<Result<R[], E>>;
|
|
@@ -59,11 +61,12 @@ declare class ConcurrentCalls<R = unknown, E extends Error = Error> {
|
|
|
59
61
|
* Executes multiple asynchronous calls concurrently and collects the results in a easier to use format.
|
|
60
62
|
*
|
|
61
63
|
* @template R - The type of the result value.
|
|
62
|
-
* @template E - The type of the error.
|
|
63
64
|
*/
|
|
64
65
|
declare function concurrentCalls<R = unknown>(): ConcurrentCalls<R, Error>;
|
|
65
|
-
declare class ConcurrentCallsWithMetadata<M extends ValidMetadata, R = unknown, E extends
|
|
66
|
+
declare class ConcurrentCallsWithMetadata<M extends ValidMetadata, R = unknown, E extends ResultValidErrors = Error> {
|
|
66
67
|
#private;
|
|
68
|
+
allowResultify: boolean;
|
|
69
|
+
constructor(allowResultify: boolean);
|
|
67
70
|
add(...calls: {
|
|
68
71
|
fn: Action<R, E>;
|
|
69
72
|
metadata: M;
|
|
@@ -85,12 +88,25 @@ declare class ConcurrentCallsWithMetadata<M extends ValidMetadata, R = unknown,
|
|
|
85
88
|
}>;
|
|
86
89
|
}
|
|
87
90
|
/**
|
|
88
|
-
* Executes multiple asynchronous calls concurrently and collects the results in a easier to use format.
|
|
91
|
+
* Executes multiple asynchronous calls concurrently with metadata for each call and collects the results in a easier to use format.
|
|
89
92
|
*
|
|
90
93
|
* @template M - The type of the call metadata.
|
|
91
94
|
* @template R - The type of the result value.
|
|
92
|
-
* @template E - The type of the error from individual Result objects.
|
|
93
95
|
*/
|
|
94
96
|
declare function concurrentCallsWithMetadata<M extends ValidMetadata, R = unknown>(): ConcurrentCallsWithMetadata<M, R, Error>;
|
|
97
|
+
type ValueFromResult<R> = R extends Result<infer T, any> ? T : never;
|
|
98
|
+
type ErrorFromResult<R> = R extends Result<any, infer E> ? E : never;
|
|
99
|
+
/**
|
|
100
|
+
* Executes multiple asynchronous result calls concurrently and collects the results in a easier to use format.
|
|
101
|
+
*
|
|
102
|
+
* @template R - The type of the result function that will be called.
|
|
103
|
+
*/
|
|
104
|
+
declare function concurrentResultCalls<ResultFn extends (...args: any[]) => Promise<Result<unknown, ResultValidErrors>>>(): ConcurrentCalls<ValueFromResult<Awaited<ReturnType<ResultFn>>>, ErrorFromResult<Awaited<ReturnType<ResultFn>>>>;
|
|
105
|
+
/**
|
|
106
|
+
* Executes multiple asynchronous result calls concurrently with metadata for each call and collects the results in a easier to use format.
|
|
107
|
+
*
|
|
108
|
+
* @template ResultFn - The type of the result function that will be called.
|
|
109
|
+
*/
|
|
110
|
+
declare function concurrentResultsWithMetadata<M extends ValidMetadata, ResultFn extends (...args: any[]) => Promise<Result<unknown, ResultValidErrors>>>(): ConcurrentCallsWithMetadata<M, ValueFromResult<Awaited<ReturnType<ResultFn>>>, ErrorFromResult<Awaited<ReturnType<ResultFn>>>>;
|
|
95
111
|
|
|
96
|
-
export { ConcurrentCallsAggregateError, ConcurrentCallsWithMetadataAggregateError, concurrentCalls, concurrentCallsWithMetadata };
|
|
112
|
+
export { ConcurrentCallsAggregateError, ConcurrentCallsWithMetadataAggregateError, concurrentCalls, concurrentCallsWithMetadata, concurrentResultCalls, concurrentResultsWithMetadata };
|
package/lib/concurrentCalls.js
CHANGED
|
@@ -4,6 +4,9 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
sleep
|
|
6
6
|
} from "./chunk-5DZT3Z5Z.js";
|
|
7
|
+
import {
|
|
8
|
+
safeJsonStringify
|
|
9
|
+
} from "./chunk-VAAMRG4K.js";
|
|
7
10
|
import {
|
|
8
11
|
truncateArray
|
|
9
12
|
} from "./chunk-SRVMMYSW.js";
|
|
@@ -16,7 +19,11 @@ import {
|
|
|
16
19
|
} from "./chunk-JF2MDHOJ.js";
|
|
17
20
|
|
|
18
21
|
// src/concurrentCalls.ts
|
|
19
|
-
import {
|
|
22
|
+
import {
|
|
23
|
+
Result,
|
|
24
|
+
resultify,
|
|
25
|
+
unknownToError
|
|
26
|
+
} from "t-result";
|
|
20
27
|
function formatErrorMessagesWithCounts(messages, failed, total) {
|
|
21
28
|
const errorMessageCounts = /* @__PURE__ */ new Map();
|
|
22
29
|
for (const message of messages) {
|
|
@@ -38,7 +45,10 @@ var ConcurrentCallsAggregateError = class extends AggregateError {
|
|
|
38
45
|
failed = 0;
|
|
39
46
|
constructor(errors, total, failed) {
|
|
40
47
|
const messages = errors.map(
|
|
41
|
-
(error) => `- ${truncateString(
|
|
48
|
+
(error) => `- ${truncateString(
|
|
49
|
+
error instanceof Error ? error.message : safeJsonStringify(error) ?? "???",
|
|
50
|
+
100
|
|
51
|
+
)}`
|
|
42
52
|
);
|
|
43
53
|
const message = formatErrorMessagesWithCounts(messages, failed, total);
|
|
44
54
|
super(errors, message);
|
|
@@ -67,7 +77,10 @@ var ConcurrentCallsWithMetadataAggregateError = class extends AggregateError {
|
|
|
67
77
|
}
|
|
68
78
|
} catch (_) {
|
|
69
79
|
}
|
|
70
|
-
return `- ${metadataPrefix}${truncateString(
|
|
80
|
+
return `- ${metadataPrefix}${truncateString(
|
|
81
|
+
error instanceof Error ? error.message : safeJsonStringify(error) ?? "???",
|
|
82
|
+
100
|
|
83
|
+
)}`;
|
|
71
84
|
});
|
|
72
85
|
const message = formatErrorMessagesWithCounts(messages, failed, total);
|
|
73
86
|
const errorInstances = errors.map((e) => e.error);
|
|
@@ -81,11 +94,20 @@ var ConcurrentCallsWithMetadataAggregateError = class extends AggregateError {
|
|
|
81
94
|
var ConcurrentCalls = class {
|
|
82
95
|
#pendingCalls = [];
|
|
83
96
|
#alreadyRun = false;
|
|
97
|
+
allowResultify = true;
|
|
98
|
+
constructor(allowResultify) {
|
|
99
|
+
this.allowResultify = allowResultify;
|
|
100
|
+
}
|
|
84
101
|
add(...calls) {
|
|
85
102
|
this.#pendingCalls.push(...calls);
|
|
86
103
|
return this;
|
|
87
104
|
}
|
|
88
105
|
resultifyAdd(...calls) {
|
|
106
|
+
if (!this.allowResultify) {
|
|
107
|
+
throw new Error(
|
|
108
|
+
"resultifyAdd is not allowed when using concurrentResults"
|
|
109
|
+
);
|
|
110
|
+
}
|
|
89
111
|
const processedCalls = calls.map((call) => {
|
|
90
112
|
return async () => {
|
|
91
113
|
try {
|
|
@@ -166,11 +188,15 @@ var ConcurrentCalls = class {
|
|
|
166
188
|
}
|
|
167
189
|
};
|
|
168
190
|
function concurrentCalls() {
|
|
169
|
-
return new ConcurrentCalls();
|
|
191
|
+
return new ConcurrentCalls(true);
|
|
170
192
|
}
|
|
171
193
|
var ConcurrentCallsWithMetadata = class {
|
|
172
194
|
#pendingCalls = [];
|
|
173
195
|
#alreadyRun = false;
|
|
196
|
+
allowResultify = true;
|
|
197
|
+
constructor(allowResultify) {
|
|
198
|
+
this.allowResultify = allowResultify;
|
|
199
|
+
}
|
|
174
200
|
add(...calls) {
|
|
175
201
|
invariant(
|
|
176
202
|
!this.#alreadyRun,
|
|
@@ -180,6 +206,11 @@ var ConcurrentCallsWithMetadata = class {
|
|
|
180
206
|
return this;
|
|
181
207
|
}
|
|
182
208
|
resultifyAdd(...items) {
|
|
209
|
+
if (!this.allowResultify) {
|
|
210
|
+
throw new Error(
|
|
211
|
+
"resultifyAdd is not allowed when using concurrentResultsWithMetadata"
|
|
212
|
+
);
|
|
213
|
+
}
|
|
183
214
|
const processedItems = items.map(({ fn, metadata }) => {
|
|
184
215
|
const cb = () => resultify(async () => {
|
|
185
216
|
const valueOrPromise = fn();
|
|
@@ -297,11 +328,19 @@ var ConcurrentCallsWithMetadata = class {
|
|
|
297
328
|
}
|
|
298
329
|
};
|
|
299
330
|
function concurrentCallsWithMetadata() {
|
|
300
|
-
return new ConcurrentCallsWithMetadata();
|
|
331
|
+
return new ConcurrentCallsWithMetadata(true);
|
|
332
|
+
}
|
|
333
|
+
function concurrentResultCalls() {
|
|
334
|
+
return new ConcurrentCalls(false);
|
|
335
|
+
}
|
|
336
|
+
function concurrentResultsWithMetadata() {
|
|
337
|
+
return new ConcurrentCallsWithMetadata(false);
|
|
301
338
|
}
|
|
302
339
|
export {
|
|
303
340
|
ConcurrentCallsAggregateError,
|
|
304
341
|
ConcurrentCallsWithMetadataAggregateError,
|
|
305
342
|
concurrentCalls,
|
|
306
|
-
concurrentCallsWithMetadata
|
|
343
|
+
concurrentCallsWithMetadata,
|
|
344
|
+
concurrentResultCalls,
|
|
345
|
+
concurrentResultsWithMetadata
|
|
307
346
|
};
|