pragmatic-fp-ts
Version:
Opinionated functional programming library with easy use in mind
22 lines (21 loc) • 1.68 kB
TypeScript
import { Dictionary, Endomorphism } from "./main";
type LensGetter<TData, TValue> = (data: TData) => TValue;
type LensSetter<TData, TValue> = (value: TValue, data: TData) => TData;
type Lens<TData, TValue> = {
view: LensGetter<TData, TValue>;
set: LensSetter<TData, TValue>;
};
export declare function lens<TData, TValue>(getter: LensGetter<TData, TValue>, setter: LensSetter<TData, TValue>): Lens<TData, TValue>;
export declare function view<TData, TValue>(lens: Lens<TData, TValue>, data: TData): TValue;
export declare function view<TData, TValue>(lens: Lens<TData, TValue>): (data: TData) => TValue;
export declare function set<TData, TValue>(lens: Lens<TData, TValue>, value: TValue, data: TData): TData;
export declare function set<TData, TValue>(lens: Lens<TData, TValue>, value: TValue): (data: TData) => TData;
export declare function set<TData, TValue>(lens: Lens<TData, TValue>): (value: TValue) => (data: TData) => TData;
export declare function over<TData, TValue>(lens: Lens<TData, TValue>, fn: Endomorphism<TValue>, data: TData): TData;
export declare function over<TData, TValue>(lens: Lens<TData, TValue>, fn: Endomorphism<TValue>): (data: TData) => TData;
export declare function over<TData, TValue>(lens: Lens<TData, TValue>): (fn: Endomorphism<TValue>) => (data: TData) => TData;
export declare function lensProp<TValue = any, TData extends {} = Dictionary>(propName: string): Lens<TData, TValue>;
export declare function lensIndex<T = any>(idx: number): Lens<T[], T>;
type LensPath = (string | number)[];
export declare function lensPath<TValue = any, TData extends any[] | Dictionary<any> = any>(path: LensPath): Lens<TData, TValue>;
export {};