File tree Expand file tree Collapse file tree 2 files changed +20
-6
lines changed
Expand file tree Collapse file tree 2 files changed +20
-6
lines changed Original file line number Diff line number Diff line change 1+ ---
2+ " @masknet/kit " : patch
3+ ---
4+
5+ add support for AbortSignal.any and match behavior of combineAbortSignal to it
Original file line number Diff line number Diff line change @@ -7,13 +7,22 @@ export type HasNonNullableAbortSignal<T extends unknown[]> = false extends (
77export function combineAbortSignal < T extends ( AbortSignal | undefined | null ) [ ] > (
88 ..._ : T
99) : HasNonNullableAbortSignal < T > extends true ? AbortSignal : AbortSignal | undefined {
10- const args : ( AbortSignal | undefined | null ) [ ] = _ . filter ( Boolean )
11- if ( args . length === 0 ) return undefined !
12- if ( args . length === 1 ) return args [ 0 ] ?? undefined !
10+ const signals = _ . filter < AbortSignal > ( Boolean as any )
11+ if ( signals . length === 0 ) return undefined !
12+ if ( signals . length === 1 ) return signals [ 0 ] ?? undefined !
13+
14+ if ( AbortSignal . any ) return AbortSignal . any ( signals )
15+
16+ const aborted = signals . find ( ( x ) => x . aborted )
17+ if ( aborted ) return aborted
18+
1319 const controller = new AbortController ( )
14- const abort = ( ) => controller . abort ( )
15- for ( const each of args ) {
16- each ! . addEventListener ( 'abort' , abort , { signal : controller . signal } )
20+ const abort = ( ) => controller . abort ( signals . find ( ( x ) => x . aborted ) ?. reason )
21+ for ( const signal of signals ) {
22+ signal . addEventListener ( 'abort' , abort , { signal : controller . signal } )
1723 }
1824 return controller . signal
1925}
26+ declare var AbortSignal : {
27+ any ?( iterable : Iterable < AbortSignal > ) : AbortSignal
28+ }
You can’t perform that action at this time.
0 commit comments