@typed/fp
Version:
Data Structures and Resources for fp-ts
129 lines • 5.33 kB
TypeScript
import { Disposable } from '@most/types';
import * as O from 'fp-ts/Option';
import * as E from './Env';
import { Eq } from './Eq';
import * as KV from './KV';
import * as RS from './ReaderStream';
import * as Ref from './Ref';
import { SchedulerEnv } from './Scheduler';
import * as S from './Stream';
/**
* Use Refs to check if a value has changed between invocations
* @since 0.11.0
* @category Constructor
*/
export declare const defaultOptionRef: <A>() => Ref.Ref<KV.Env, O.Option<A>, O.Option<A>> & KV.KV<symbol, unknown, O.Option<A>>;
/**
* Use Refs to check if a value has changed between invocations
* @since 0.11.0
* @category Combinator
*/
export declare function useEqWith<E, A = void>(ref: Ref.Ref<E, O.Option<A>>): (Eq?: Eq<A>, initial?: boolean) => (value: A) => E.Env<E, boolean>;
/**
* Use Refs to check if a value has changed between invocations
* @since 0.11.0
* @category Combinator
*/
export declare const useEq: <A>(Eq?: Eq<A>, initial?: boolean) => (value: A) => E.Env<KV.Env, boolean>;
/**
* @since 0.11.0
* @category Options
*/
export declare type UseMemoWithOptions<E1, A, E2, B> = {
readonly currentValue: Ref.Ref<E1, O.Option<A>>;
readonly changed: Ref.Ref<E2, O.Option<B>>;
};
/**
* @since 0.11.0
* @category Use
*/
export declare const useMemoWith: <E1, A, E2, B>(options: UseMemoWithOptions<E1, A, E2, B>) => <E3>(env: E.Env<E3, A>, Eq?: Eq<B>) => (value: B) => E.Env<E1 & E2 & E3, A>;
/**
* @since 0.11.0
* @category Use
*/
export declare const useMemo: <E, A, B>(env: E.Env<E, A>, Eq?: Eq<B>) => (value: B) => E.Env<KV.Env & E, A>;
/**
* @since 0.11.0
* @category Options
*/
export declare type UseDisposableWithOptions<E1, E2, A> = {
readonly disposable: Ref.Ref<E1, Disposable>;
readonly changed: Ref.Ref<E2, O.Option<A>>;
};
/**
* @since 0.11.0
* @category Use
*/
export declare const useDisposableWith: <E1, E2, A = void>(options: UseDisposableWithOptions<E1, E2, A>) => (Eq?: Eq<A>, switchLatest?: boolean) => (f: () => Disposable, value: A) => E.Env<E1 & E2 & KV.Env, Disposable>;
/**
* @since 0.11.0
* @category Use
*/
export declare const useDisposable: <A>(Eq?: Eq<A>, switchLatest?: boolean) => (f: () => Disposable, value: A) => E.Env<KV.Env, Disposable>;
/**
* @since 0.11.0
* @category Use
*/
export declare const useEffectWith: <E1, E2, A = void>(options: UseDisposableWithOptions<E1, E2, A>) => (Eq?: Eq<A>, switchLatest?: boolean) => <E>(env: E.Env<E, any>, value: A) => E.Env<E1 & E2 & KV.Env & E & SchedulerEnv, Disposable>;
/**
* @since 0.11.0
* @category Use
*/
export declare const useWithPrevious: <E, A>(ref: Ref.Ref<E, O.Option<A>, O.Option<A>>) => <B>(f: (previous: O.Option<A>, value: A) => B, value: A) => E.Env<E, B>;
/**
* Helps you to convert a Kliesli arrow of an Env into a function to
* a Disposable. Useful for UIs where you need to provide onClick={fn}
* style handlers.
* @since 0.11.0
* @category Use
*/
export declare function useEnvK<A extends ReadonlyArray<any>, E1, B, E2>(f: (...args: A) => E.Env<E1, B>, onValue?: (value: B) => E.Env<E2, any>): E.Env<E1 & E2 & KV.Env, (...args: A) => Disposable>;
/**
* @since 0.11.0
* @category Use
*/
export declare const bindEnvK: <N extends string, A, Args extends readonly any[], E1, B, E2>(name: Exclude<N, keyof A>, f: (...args: Args) => E.Env<E1, B>, onValue?: ((value: B) => E.Env<E2, any>) | undefined) => <E3>(ma: E.Env<E3, A>) => E.Env<E1 & E2 & E3 & KV.Env, { readonly [K in N | keyof A]: K extends keyof A ? A[K] : () => Disposable; }>;
/**
* @since 0.11.0
* @category Options
*/
export declare type UseReaderStreamWithOptions<E1, A, E2, E3, B> = {
readonly value: Ref.Ref<E1, O.Option<A>>;
} & UseDisposableWithOptions<E2, E3, B>;
/**
* @since 0.11.0
* @category Use
*/
export declare const useReaderStreamWith: <E1, A, E2, E3, B = void>(options: UseReaderStreamWithOptions<E1, A, E2, E3, B>) => (Eq?: Eq<B>) => <E4, C extends A>(rs: RS.ReaderStream<E4, C>, dep: B) => E.Env<E1 & E2 & E3 & E4 & SchedulerEnv & KV.Env, O.Option<C>>;
/**
* @since 0.11.0
* @category Use
*/
export declare const useReaderStream: <A = void>(Eq?: Eq<A>) => <E4, C extends any>(rs: RS.ReaderStream<E4, C>, dep: A) => E.Env<KV.Env & E4 & SchedulerEnv, O.Option<C>>;
/**
* @since 0.11.0
* @category Options
*/
export declare type UseStreamWithOptions<E1, A, E2, E3, B> = UseReaderStreamWithOptions<E1, A, E2, E3, B>;
/**
* @since 0.11.0
* @category Use
*/
export declare const useStreamWith: <E1, A, E2, E3, B>(options: UseStreamWithOptions<E1, A, E2, E3, B>) => (Eq?: Eq<B>) => (stream: S.Stream<A>, dep: B) => E.Env<E1 & E2 & E3 & SchedulerEnv & KV.Env, O.Option<A>>;
/**
* @since 0.11.0
* @category Use
*/
export declare const useStream: <A = void>(Eq?: Eq<A>) => <B>(stream: S.Stream<B>, dep: A) => E.Env<KV.Env & SchedulerEnv, O.Option<B>>;
/**
* @since 0.11.0
* @category Use
*/
export declare const useKVStream: <A, E1, B>(f: (value: A) => RS.ReaderStream<E1, B>, Eq: Eq<A>) => <E2>(stream: RS.ReaderStream<E2, readonly A[]>) => RS.ReaderStream<E1 & E2 & KV.Env, readonly B[]>;
/**
* @since 0.11.0
* @category Use
*/
export declare const useKVs: <A, E1, B>(f: (value: A) => E.Env<E1, B>, Eq: Eq<A>) => <E2>(stream: RS.ReaderStream<E2, readonly A[]>) => RS.ReaderStream<E1 & KV.Env & E2, readonly B[]>;
//# sourceMappingURL=Use.d.ts.map