| 805 | unknown) |
| 806 | |
| 807 | class BuilderImpl<Out, A, E> { |
| 808 | constructor(result: AsyncResult<A, E>) { |
| 809 | this.result = result |
| 810 | } |
| 811 | readonly result: AsyncResult<A, E> |
| 812 | public output = Option.none<Out>() |
| 813 | |
| 814 | when<B extends AsyncResult<A, E>, C>( |
| 815 | refinement: Refinement<AsyncResult<A, E>, B>, |
| 816 | f: (result: B) => Option.Option<C> |
| 817 | ): any |
| 818 | when<C>( |
| 819 | refinement: Predicate<AsyncResult<A, E>>, |
| 820 | f: (result: AsyncResult<A, E>) => Option.Option<C> |
| 821 | ): any |
| 822 | when<C>( |
| 823 | refinement: Predicate<AsyncResult<A, E>>, |
| 824 | f: (result: AsyncResult<A, E>) => Option.Option<C> |
| 825 | ): any { |
| 826 | if (Option.isNone(this.output) && refinement(this.result)) { |
| 827 | const b = f(this.result) |
| 828 | if (Option.isSome(b)) { |
| 829 | ;(this as any).output = b |
| 830 | } |
| 831 | } |
| 832 | return this |
| 833 | } |
| 834 | |
| 835 | pipe() { |
| 836 | return pipeArguments(this, arguments) |
| 837 | } |
| 838 | |
| 839 | onWaiting<B>(f: (result: AsyncResult<A, E>) => B): BuilderImpl<Out | B, A, E> { |
| 840 | return this.when((r) => r.waiting, (r) => Option.some(f(r))) |
| 841 | } |
| 842 | |
| 843 | onInitialOrWaiting<B>(f: (result: AsyncResult<A, E>) => B): BuilderImpl<Out | B, A, E> { |
| 844 | return this.when((r) => isInitial(r) || r.waiting, (r) => Option.some(f(r))) |
| 845 | } |
| 846 | |
| 847 | onInitial<B>(f: (result: Initial<A, E>) => B): BuilderImpl<Out | B, A, E> { |
| 848 | return this.when(isInitial, (r) => Option.some(f(r))) |
| 849 | } |
| 850 | |
| 851 | onSuccess<B>(f: (value: A, result: Success<A, E>) => B): BuilderImpl<Out | B, never, E> { |
| 852 | return this.when(isSuccess, (r) => Option.some(f(r.value, r))) |
| 853 | } |
| 854 | |
| 855 | onFailure<B>(f: (cause: Cause.Cause<E>, result: Failure<A, E>) => B): BuilderImpl<Out | B, A, never> { |
| 856 | return this.when(isFailure, (r) => Option.some(f(r.cause, r))) |
| 857 | } |
| 858 | |
| 859 | onError<B>(f: (error: E, result: Failure<A, E>) => B): BuilderImpl<Out | B, A, never> { |
| 860 | return this.onErrorIf(constTrue, f) as any |
| 861 | } |
| 862 | |
| 863 | onErrorIf<C, B extends E = E>( |
| 864 | refinement: Refinement<E, B> | Predicate<E>, |
nothing calls this directly
no outgoing calls
no test coverage detected