UNPKG

decline-ts

Version:

Composable command-line parser for TypeScript - a (partial) porting of Scala decline using fp-ts

35 lines (34 loc) 1.03 kB
export declare type Many<A> = Many.Just<A> | Many.Prod<A> | Many.Sum<A>; export declare namespace Many { type Just<A> = { readonly _tag: 'Just'; readonly value: A; }; type Prod<A> = { readonly _tag: 'Prod'; readonly allOf: ReadonlyArray<Many<A>>; }; type Sum<A> = { readonly _tag: 'Sum'; readonly anyOf: ReadonlyArray<Many<A>>; }; /** * Constructors */ const just: <A>(value: A) => Just<A>; const prod: <A>(...allOf: readonly Many<A>[]) => Prod<A>; const sum: <A>(...anyOf: readonly Many<A>[]) => Sum<A>; /** * Methods */ const asProd: <A>(many: Many<A>) => Prod<A>; const asSum: <A>(many: Many<A>) => Sum<A>; const isJust: <A>(many: Many<A>) => many is Just<A>; const isProd: <A>(many: Many<A>) => many is Prod<A>; namespace Prod { const and: <A>(other: Prod<A>) => (p: Prod<A>) => Prod<A>; } namespace Sum { const or: <A>(other: Sum<A>) => (s: Sum<A>) => Sum<A>; } }