@focuson/lens
Version:
A simple implementation of lens using type script
29 lines (28 loc) • 1.65 kB
TypeScript
import { NameAndLens, NameAndLensFn, Optional } from "../index";
import { NameAnd } from "@focuson/utils";
export interface PathBuilder<Build> {
zero: (initial: string) => Build;
foldAppend: (acc: Build) => Build;
foldLast: (acc: Build) => Build;
foldBracketsPath: (acc: Build, path: Build) => Build;
foldKey: (acc: Build, key: string) => Build;
foldNth: (acc: Build, n: number) => Build;
foldVariable: (acc: Build, name: string) => Build;
initialVariable: (name: string) => Build;
isVariable: (name: string) => boolean;
}
interface ParseState<Build> {
errorPrefix: string;
tokens: string[];
build: Build;
}
export declare function tokenisePath(p: string): string[];
export declare function parsePath<Build>(path: string, p: PathBuilder<Build>): Build;
export declare function prefixNameAndLens<S>(...choices: [string, Optional<S, any>][]): NameAndLens<S>;
export declare function lensBuilder<S>(prefixs: NameAndLens<S>, variables: NameAndLensFn<S>): PathBuilder<Optional<S, any>>;
export declare function stateCodeInitials(stateName: string): NameAnd<string>;
export declare function stateCodeBuilder(initials: NameAnd<string>, optionalsName: string, focusQuery?: string): PathBuilder<string>;
export declare function processPath<Build>(s: ParseState<Build>, p: PathBuilder<Build>, expectBracket: boolean): void;
export declare function replaceTextFn<S>(errorPrefix: string, s: S, from: (path: string) => Optional<S, any>, f: string): string;
export declare function replaceTextUsingPathForS<S>(errorPrefix: string, s: S, fromPath: (path: string) => Optional<S, any>, string: string): string;
export {};