| 79 | const actualHandler = |
| 80 | options?.timeout |
| 81 | ? timeoutHandler<Request, Response, TError>(options.timeout, handler) |
| 82 | : handler; |
| 83 | const errors = new Subject<TError>(); |
| 84 | |
| 85 | const currentError = new BehaviorSubject<TError | null>(null); |
| 86 | const lastResponse = new BehaviorSubject<Response | null>(null); |
| 87 | // seed `state` with initialState or null |
| 88 | const state = new BehaviorSubject<TState | null>(initialState ?? null); |
| 89 | |
| 90 | const incoming = new Subject<Request>(); |
| 91 | const requests = new Subject<Request>(); |
| 92 | const responses = new Subject<Response>(); |
| 93 | const starts = new Subject<Request>(); |
| 94 | const ends = new Subject<Request>(); |
| 95 | const completions = new Subject<Request>(); |
| 96 | const cancelations = new Subject<Request>(); |
| 97 | |
| 98 | const currentCancel = new Subject<void>(); |
| 99 | const batch = new Subject<void>(); |
| 100 | const handlings = new Subject<Observable<void>>(); |
| 101 | const isHandling = new BehaviorSubject<boolean>(false); |
| 102 | const isActive = new BehaviorSubject<boolean>(false); |
| 103 | |
| 104 | const singleRequestHandler = (request: Request) => { |
| 105 | let oneResult: any = []; |
| 106 | |
| 107 | currentError.next(null); |
| 108 | |
| 109 | try { |
| 110 | oneResult = actualHandler(request); |
| 111 | } catch (e) { |
| 112 | errors.next(e as TError); |
| 113 | } |