(outerSignal: AbortSignal)
| 26 | } |
| 27 | |
| 28 | export function createCapacityWake(outerSignal: AbortSignal): CapacityWake { |
| 29 | let wakeController = new AbortController() |
| 30 | |
| 31 | function wake(): void { |
| 32 | wakeController.abort() |
| 33 | wakeController = new AbortController() |
| 34 | } |
| 35 | |
| 36 | function signal(): CapacitySignal { |
| 37 | const merged = new AbortController() |
| 38 | const abort = (): void => merged.abort() |
| 39 | if (outerSignal.aborted || wakeController.signal.aborted) { |
| 40 | merged.abort() |
| 41 | return { signal: merged.signal, cleanup: () => {} } |
| 42 | } |
| 43 | outerSignal.addEventListener('abort', abort, { once: true }) |
| 44 | const capSig = wakeController.signal |
| 45 | capSig.addEventListener('abort', abort, { once: true }) |
| 46 | return { |
| 47 | signal: merged.signal, |
| 48 | cleanup: () => { |
| 49 | outerSignal.removeEventListener('abort', abort) |
| 50 | capSig.removeEventListener('abort', abort) |
| 51 | }, |
| 52 | } |
| 53 | } |
| 54 | |
| 55 | return { signal, wake } |
| 56 | } |
| 57 | |
| 58 |
no outgoing calls
no test coverage detected