MCPcopy Create free account
hub / github.com/Effect-TS/effect / BuilderImpl

Class BuilderImpl

packages/effect/src/unstable/reactivity/AsyncResult.ts:807–918  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

805 unknown)
806
807class 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>,

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected