UNPKG

@focuson/lens

Version:

A simple implementation of lens using type script

29 lines (28 loc) 1.65 kB
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 {};