import { Observable } from 'rxjs' import { Result, ResultAsync } from 'neverthrow' export const toObservable = ( asyncResult: ResultAsync, ): Observable => new Observable(subscriber => { void asyncResult.then((res: Result) => { res.match( (value: T) => { subscriber.next(value) subscriber.complete() }, (e: E | E[]) => { subscriber.error(e) }, ) }) }) export const toObservableFromResult = ( result: Result, ): Observable => new Observable(subscriber => { result.match( (value: T) => { subscriber.next(value) subscriber.complete() }, (e: E) => subscriber.error(e), ) })