UNPKG

@thisisagile/easy

Version:

Straightforward library for building domain-driven microservice architectures

62 lines (61 loc) 2.78 kB
import { Get, Predicate } from './Get'; import { TypeGuard } from './TypeGuard'; import { Func } from './Func'; declare class CaseBuilder<V> { readonly v: V; constructor(v: V); case<T>(pred: Predicate<V>, out: Get<T, V>): Case<T, V>; type<T, U = unknown>(guard: TypeGuard<U>, out: Func<T, U>): Case<T, V>; equals<T>(value: V, out: Get<T, V>): Case<T, V>; is: { defined: <T>(prop: Func<unknown, V>, out: Get<T, V>) => Case<T, V>; empty: <T>(prop: Func<unknown, V>, out: Get<T, V>) => Case<T, V>; valid: <T>(prop: Func<unknown, V>, out: Get<T, V>) => Case<T, V>; not: { defined: <T>(prop: Func<unknown, V>, out: Get<T, V>) => Case<T, V>; empty: <T>(prop: Func<unknown, V>, out: Get<T, V>) => Case<T, V>; valid: <T>(prop: Func<unknown, V>, out: Get<T, V>) => Case<T, V>; }; }; if: { defined: <T>(prop: Func<unknown, V>, out: Get<T, V>) => Case<T, V>; empty: <T>(prop: Func<unknown, V>, out: Get<T, V>) => Case<T, V>; valid: <T>(prop: Func<unknown, V>, out: Get<T, V>) => Case<T, V>; not: { defined: <T>(prop: Func<unknown, V>, out: Get<T, V>) => Case<T, V>; empty: <T>(prop: Func<unknown, V>, out: Get<T, V>) => Case<T, V>; valid: <T>(prop: Func<unknown, V>, out: Get<T, V>) => Case<T, V>; }; }; } declare class Case<T, V = unknown> { protected value: V; protected outcome?: T | undefined; constructor(value: V, outcome?: T | undefined); case(pred: Predicate<V>, out: Get<T, V>): Case<T, V>; type<U>(guard: TypeGuard<U>, out: Func<T, U>): Case<T, V>; equals(value: V, out: Get<T, V>): Case<T, V>; is: { defined: (prop: Func<unknown, V>, out: Get<T, V>) => Case<T, V>; empty: (prop: Func<unknown, V>, out: Get<T, V>) => Case<T, V>; valid: (prop: Func<unknown, V>, out: Get<T, V>) => Case<T, V>; not: { defined: (prop: Func<unknown, V>, out: Get<T, V>) => Case<T, V>; empty: (prop: Func<unknown, V>, out: Get<T, V>) => Case<T, V>; valid: (prop: Func<unknown, V>, out: Get<T, V>) => Case<T, V>; }; }; if: { defined: (prop: Func<unknown, V>, out: Get<T, V>) => Case<T, V>; empty: (prop: Func<unknown, V>, out: Get<T, V>) => Case<T, V>; valid: (prop: Func<unknown, V>, out: Get<T, V>) => Case<T, V>; not: { defined: (prop: Func<unknown, V>, out: Get<T, V>) => Case<T, V>; empty: (prop: Func<unknown, V>, out: Get<T, V>) => Case<T, V>; valid: (prop: Func<unknown, V>, out: Get<T, V>) => Case<T, V>; }; }; else(alt: Get<T, V>): T; } export declare const choose: <V>(value: V) => CaseBuilder<V>; export {};