Combine any number of AbortSignals into one.
(...signals: (AbortSignal | undefined)[])
| 11 | |
| 12 | /** Combine any number of AbortSignals into one. */ |
| 13 | function combineSignals(...signals: (AbortSignal | undefined)[]): AbortSignal { |
| 14 | const controller = new AbortController(); |
| 15 | for (const sig of signals) { |
| 16 | if (!sig) continue; |
| 17 | if (sig.aborted) { |
| 18 | controller.abort(sig.reason); |
| 19 | return controller.signal; |
| 20 | } |
| 21 | sig.addEventListener("abort", () => controller.abort(sig.reason), { once: true }); |
| 22 | } |
| 23 | return controller.signal; |
| 24 | } |
| 25 | |
| 26 | function toApiMessages( |
| 27 | messages: Message[] |