UNPKG

mutoid

Version:

Reactive library for data fetching, caching, state management

83 lines (82 loc) 7.96 kB
import type { Applicative3 } from 'fp-ts/Applicative'; import type { Apply3 } from 'fp-ts/Apply'; import type { Bifunctor3 } from 'fp-ts/Bifunctor'; import type { Chain3 } from 'fp-ts/Chain'; import type { Functor3 } from 'fp-ts/Functor'; import type { Monad3 } from 'fp-ts/Monad'; import type { MonadIO3 } from 'fp-ts/MonadIO'; import type { MonadTask3 } from 'fp-ts/MonadTask'; import * as R from 'fp-ts/Reader'; import type * as RTE from 'fp-ts/ReaderTaskEither'; import type { Predicate, Refinement } from 'fp-ts/function'; import type { MonadObservable3 } from 'fp-ts-reactive/lib/MonadObservable'; import type { ReaderObservableEither } from 'fp-ts-reactive/lib/ReaderObservableEither'; import type { Observable } from 'rxjs'; import * as OR from './ObservableResource'; import type * as RES from './Resource'; export interface ReaderObservableResource<R, E, A> { (r: R): OR.ObservableResource<E, A>; } export type ObservableResourceTypeOf<R, DS extends RES.ResourceDecoders, AE = never> = ReaderObservableResource<R, RES.DecodersToResourceError<DS, AE>, RES.DecodersToResourceData<DS>>; export declare const fromObservableResource: <R, E, A>(ma: OR.ObservableResource<E, A>) => ReaderObservableResource<R, E, A>; export declare const init: ReaderObservableResource<never, never, never>; export declare const submitted: ReaderObservableResource<never, never, never>; export declare const done: <R, E = never, A = never>(d: A) => ReaderObservableResource<R, E, A>; export declare const doneObservable: <R, E = never, A = never>(oa: Observable<A>) => ReaderObservableResource<R, E, A>; export declare const fail: <R, E = never, A = never>(e: E) => ReaderObservableResource<R, E, A>; export declare const failObservable: <R, E = never, A = never>(oe: Observable<E>) => ReaderObservableResource<R, E, A>; export declare const ask: <R, E>() => ReaderObservableResource<R, E, R>; export declare const askTypeOf: <R, DS extends RES.ResourceDecoders, AE = never>() => ReaderObservableResource<R, RES.DecodersToResourceError<DS, AE>, R>; export declare const asks: <R, E, A>(f: (r: R) => A) => ReaderObservableResource<R, E, A>; export declare const fromReader: <R, A, E = never>(ma: R.Reader<R, A>) => ReaderObservableResource<R, E, A>; export declare const fromTask: MonadTask3<URI>['fromTask']; export declare const fromReaderTaskEither: <R, E, A>(rte: RTE.ReaderTaskEither<R, E, A>) => ReaderObservableResource<R, E, A>; export declare const fromObservable: MonadObservable3<URI>['fromObservable']; export declare const fromReaderObservableEither: <R, E, A>(e: ReaderObservableEither<R, E, A>) => ReaderObservableResource<R, E, A>; export declare const fromIO: MonadIO3<URI>['fromIO']; export declare const fromAjax: <DS extends RES.ResourceDecoders, AE = never>(ajax$: OR.ObservableAjax<AE, any>, decoders: DS) => ReaderObservableResource<unknown, RES.DecodersToResourceError<DS, AE>, RES.DecodersToResourceData<DS>>; export declare const of: Applicative3<URI>['of']; export declare const toMutation: <R, E, A, S, SS extends S>(mapTo: (r: RES.Resource<E, A>) => (s: SS) => S) => (ros: ReaderObservableResource<R, E, A>) => (r: R) => Observable<(s: SS) => S>; export declare const fetchToMutationEffectR: <RORK extends (...i: P) => ReaderObservableResource<R, E, A>, SS extends S, S, R = RORK extends (...i: any) => ReaderObservableResource<infer I, any, any> ? I : never, E = RORK extends (...i: any) => ReaderObservableResource<any, infer I_1, any> ? I_1 : never, A = RORK extends (...i: any) => ReaderObservableResource<any, any, infer I_2> ? I_2 : never, P extends any[] = Parameters<RORK>>(mapTo: (s: SS) => (i: RES.Resource<E, A>) => S) => (rork: RORK) => (r: R) => (...i: P) => (s: SS) => Observable<S>; export declare const URI = "ReaderObservableResource"; export type URI = typeof URI; declare module 'fp-ts/HKT' { interface URItoKind3<R, E, A> { readonly [URI]: ReaderObservableResource<R, E, A>; } } export declare const Functor: Functor3<URI>; export declare const Apply: Apply3<URI>; export declare const Applicative: Applicative3<URI>; export declare const Chain: Chain3<URI>; export declare const Monad: Monad3<URI>; export declare const Bifunctor: Bifunctor3<URI>; export declare const MonadTask: MonadTask3<URI>; export declare const MonadObservable: MonadObservable3<URI>; export declare const map: <A, B>(f: (a: A) => B) => <R, E>(fa: ReaderObservableResource<R, E, A>) => ReaderObservableResource<R, E, B>; export declare const bimap: <E, G, A, B>(f: (e: E) => G, g: (a: A) => B) => <R>(fa: ReaderObservableResource<R, E, A>) => ReaderObservableResource<R, G, B>; export declare const mapLeft: <E, G>(f: (e: E) => G) => <R, A>(fa: ReaderObservableResource<R, E, A>) => ReaderObservableResource<R, G, A>; export declare const ap: <R, E, A>(fa: ReaderObservableResource<R, E, A>) => <B>(fab: ReaderObservableResource<R, E, (a: A) => B>) => ReaderObservableResource<R, E, B>; export declare const chainW: <A, R2, E2, B>(f: (a: A) => ReaderObservableResource<R2, E2, B>) => <R1, E1>(ma: ReaderObservableResource<R1, E1, A>) => ReaderObservableResource<R1 & R2, E2 | E1, B>; export declare const chain: <R, E, A, B>(f: (a: A) => ReaderObservableResource<R, E, B>) => (ma: ReaderObservableResource<R, E, A>) => ReaderObservableResource<R, E, B>; export declare const flatten: <R, E, A>(mma: ReaderObservableResource<R, E, ReaderObservableResource<R, E, A>>) => ReaderObservableResource<R, E, A>; export declare const local: <R2, R1>(f: (d: R2) => R1) => <E, A>(ma: ReaderObservableResource<R1, E, A>) => ReaderObservableResource<R2, E, A>; export declare function swap<R, E, A>(ma: ReaderObservableResource<R, E, A>): ReaderObservableResource<R, A, E>; export declare const chainFirst: <R, E, A, B>(f: (a: A) => ReaderObservableResource<R, E, B>) => (ma: ReaderObservableResource<R, E, A>) => ReaderObservableResource<R, E, A>; export declare const chainFirstW: <R2, E2, A, B>(f: (a: A) => ReaderObservableResource<R2, E2, B>) => <R1, E1>(ma: ReaderObservableResource<R1, E1, A>) => ReaderObservableResource<R1 & R2, E1 | E2, A>; export declare function orElseW<R, R1, E, M, A, B>(onLeft: (e: E) => ReaderObservableResource<R1, M, B>): (ma: ReaderObservableResource<R, E, A>) => ReaderObservableResource<R & R1, M, A | B>; export declare const orElse: <R, E, A, M>(onLeft: (e: E) => ReaderObservableResource<R, M, A>) => (ma: ReaderObservableResource<R, E, A>) => ReaderObservableResource<R, M, A>; export declare const filterOrElseW: { <A, B extends A, E2>(refinement: Refinement<A, B>, onFalse: (a: A) => E2): <R, E1>(ma: ReaderObservableResource<R, E1, A>) => ReaderObservableResource<R, E1 | E2, B>; <A, E2>(predicate: Predicate<A>, onFalse: (a: A) => E2): <R, E1>(ma: ReaderObservableResource<R, E1, A>) => ReaderObservableResource<R, E1 | E2, A>; }; export declare const filterOrElse: { <E, A, B extends A>(refinement: Refinement<A, B>, onFalse: (a: A) => E): <R>(ma: ReaderObservableResource<R, E, A>) => ReaderObservableResource<R, E, B>; <E, A>(predicate: Predicate<A>, onFalse: (a: A) => E): <R>(ma: ReaderObservableResource<R, E, A>) => ReaderObservableResource<R, E, A>; }; export declare const Do: ReaderObservableResource<unknown, never, Record<string, unknown>>; export declare const bindTo: <K extends string, R, E, A>(name: K) => (fa: ReaderObservableResource<R, E, A>) => ReaderObservableResource<R, E, { [P in K]: A; }>; export declare const bind: <K extends string, R, E, A, B>(name: Exclude<K, keyof A>, f: (a: A) => ReaderObservableResource<R, E, B>) => (fa: ReaderObservableResource<R, E, A>) => ReaderObservableResource<R, E, { [P in K | keyof A]: P extends keyof A ? A[P] : B; }>; export declare const bindW: <K extends string, R2, E2, A, B>(name: Exclude<K, keyof A>, f: (a: A) => ReaderObservableResource<R2, E2, B>) => <R1, E1>(fa: ReaderObservableResource<R1, E1, A>) => ReaderObservableResource<R1 & R2, E1 | E2, { [P in keyof A | K]: P extends keyof A ? A[P] : B; }>;