Comparing version 0.2.1 to 0.2.2
@@ -15,3 +15,3 @@ # Changelog | ||
# 0.2.1 | ||
# 0.2.2 | ||
@@ -35,2 +35,4 @@ - **New Feature** | ||
- revert `intersection` combinator accepting only `InterfaceType`s | ||
- **Experimental** | ||
- Pattern matching / catamorphism for unions | ||
@@ -37,0 +39,0 @@ # 0.1.0 |
@@ -98,5 +98,32 @@ import { Either } from 'fp-ts/lib/Either'; | ||
export declare function dictionary<D extends Type<string>, C extends Any>(domain: D, codomain: C, name?: string): DictionaryType<D, C>; | ||
export declare class UnionType<RTS, U> extends Type<U> { | ||
export declare type Match<RT extends Any, R> = (a: TypeOf<RT>) => R; | ||
export declare class UnionType<RTS extends Array<Any>, U> extends Type<U> { | ||
readonly types: RTS; | ||
constructor(name: string, validate: Validate<U>, types: RTS); | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>, j: Match<RTS[9], R>, k: Match<RTS[10], R>, l: Match<RTS[11], R>, m: Match<RTS[12], R>, n: Match<RTS[13], R>, o: Match<RTS[14], R>, p: Match<RTS[15], R>, q: Match<RTS[16], R>, r: Match<RTS[17], R>, s: Match<RTS[18], R>, t: Match<RTS[19], R>, u: Match<RTS[20], R>, v: Match<RTS[21], R>, w: Match<RTS[22], R>, x: Match<RTS[23], R>, y: Match<RTS[24], R>, z: Match<RTS[25], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>, j: Match<RTS[9], R>, k: Match<RTS[10], R>, l: Match<RTS[11], R>, m: Match<RTS[12], R>, n: Match<RTS[13], R>, o: Match<RTS[14], R>, p: Match<RTS[15], R>, q: Match<RTS[16], R>, r: Match<RTS[17], R>, s: Match<RTS[18], R>, t: Match<RTS[19], R>, u: Match<RTS[20], R>, v: Match<RTS[21], R>, w: Match<RTS[22], R>, x: Match<RTS[23], R>, y: Match<RTS[24], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>, j: Match<RTS[9], R>, k: Match<RTS[10], R>, l: Match<RTS[11], R>, m: Match<RTS[12], R>, n: Match<RTS[13], R>, o: Match<RTS[14], R>, p: Match<RTS[15], R>, q: Match<RTS[16], R>, r: Match<RTS[17], R>, s: Match<RTS[18], R>, t: Match<RTS[19], R>, u: Match<RTS[20], R>, v: Match<RTS[21], R>, w: Match<RTS[22], R>, x: Match<RTS[23], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>, j: Match<RTS[9], R>, k: Match<RTS[10], R>, l: Match<RTS[11], R>, m: Match<RTS[12], R>, n: Match<RTS[13], R>, o: Match<RTS[14], R>, p: Match<RTS[15], R>, q: Match<RTS[16], R>, r: Match<RTS[17], R>, s: Match<RTS[18], R>, t: Match<RTS[19], R>, u: Match<RTS[20], R>, v: Match<RTS[21], R>, w: Match<RTS[22], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>, j: Match<RTS[9], R>, k: Match<RTS[10], R>, l: Match<RTS[11], R>, m: Match<RTS[12], R>, n: Match<RTS[13], R>, o: Match<RTS[14], R>, p: Match<RTS[15], R>, q: Match<RTS[16], R>, r: Match<RTS[17], R>, s: Match<RTS[18], R>, t: Match<RTS[19], R>, u: Match<RTS[20], R>, v: Match<RTS[21], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>, j: Match<RTS[9], R>, k: Match<RTS[10], R>, l: Match<RTS[11], R>, m: Match<RTS[12], R>, n: Match<RTS[13], R>, o: Match<RTS[14], R>, p: Match<RTS[15], R>, q: Match<RTS[16], R>, r: Match<RTS[17], R>, s: Match<RTS[18], R>, t: Match<RTS[19], R>, u: Match<RTS[20], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>, j: Match<RTS[9], R>, k: Match<RTS[10], R>, l: Match<RTS[11], R>, m: Match<RTS[12], R>, n: Match<RTS[13], R>, o: Match<RTS[14], R>, p: Match<RTS[15], R>, q: Match<RTS[16], R>, r: Match<RTS[17], R>, s: Match<RTS[18], R>, t: Match<RTS[19], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>, j: Match<RTS[9], R>, k: Match<RTS[10], R>, l: Match<RTS[11], R>, m: Match<RTS[12], R>, n: Match<RTS[13], R>, o: Match<RTS[14], R>, p: Match<RTS[15], R>, q: Match<RTS[16], R>, r: Match<RTS[17], R>, s: Match<RTS[18], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>, j: Match<RTS[9], R>, k: Match<RTS[10], R>, l: Match<RTS[11], R>, m: Match<RTS[12], R>, n: Match<RTS[13], R>, o: Match<RTS[14], R>, p: Match<RTS[15], R>, q: Match<RTS[16], R>, r: Match<RTS[17], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>, j: Match<RTS[9], R>, k: Match<RTS[10], R>, l: Match<RTS[11], R>, m: Match<RTS[12], R>, n: Match<RTS[13], R>, o: Match<RTS[14], R>, p: Match<RTS[15], R>, q: Match<RTS[16], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>, j: Match<RTS[9], R>, k: Match<RTS[10], R>, l: Match<RTS[11], R>, m: Match<RTS[12], R>, n: Match<RTS[13], R>, o: Match<RTS[14], R>, p: Match<RTS[15], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>, j: Match<RTS[9], R>, k: Match<RTS[10], R>, l: Match<RTS[11], R>, m: Match<RTS[12], R>, n: Match<RTS[13], R>, o: Match<RTS[14], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>, j: Match<RTS[9], R>, k: Match<RTS[10], R>, l: Match<RTS[11], R>, m: Match<RTS[12], R>, n: Match<RTS[13], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>, j: Match<RTS[9], R>, k: Match<RTS[10], R>, l: Match<RTS[11], R>, m: Match<RTS[12], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>, j: Match<RTS[9], R>, k: Match<RTS[10], R>, l: Match<RTS[11], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>, j: Match<RTS[9], R>, k: Match<RTS[10], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>, j: Match<RTS[9], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>): (value: U) => R; | ||
} | ||
@@ -103,0 +130,0 @@ export declare function union<A extends Any, B extends Any, C extends Any, D extends Any, E extends Any, F extends Any, G extends Any, H extends Any, I extends Any, J extends Any, K extends Any, L extends Any, M extends Any, N extends Any, O extends Any, P extends Any, Q extends Any, R extends Any, S extends Any, T extends Any, U extends Any, V extends Any, W extends Any, X extends Any, Y extends Any, Z extends Any>(types: [A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z], name?: string): UnionType<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z], TypeOf<A> | TypeOf<B> | TypeOf<C> | TypeOf<D> | TypeOf<E> | TypeOf<F> | TypeOf<G> | TypeOf<H> | TypeOf<I> | TypeOf<J> | TypeOf<K> | TypeOf<L> | TypeOf<M> | TypeOf<N> | TypeOf<O> | TypeOf<P> | TypeOf<Q> | TypeOf<R> | TypeOf<S> | TypeOf<T> | TypeOf<U> | TypeOf<V> | TypeOf<W> | TypeOf<X> | TypeOf<Y> | TypeOf<Z>>; |
@@ -247,5 +247,2 @@ var __extends = (this && this.__extends) || (function () { | ||
} | ||
// | ||
// unions | ||
// | ||
var UnionType = (function (_super) { | ||
@@ -258,2 +255,19 @@ __extends(UnionType, _super); | ||
} | ||
UnionType.prototype.fold = function () { | ||
var _this = this; | ||
var matches = []; | ||
for (var _i = 0; _i < arguments.length; _i++) { | ||
matches[_i] = arguments[_i]; | ||
} | ||
return function (value) { | ||
for (var i = 0, len = matches.length; i < len; i++) { | ||
var type = _this.types[i]; | ||
var match = matches[i]; | ||
if (type.is(value)) { | ||
return match(value); | ||
} | ||
} | ||
throw new Error("Invalid value " + JSON.stringify(value) + " supplied to " + _this.name); | ||
}; | ||
}; | ||
return UnionType; | ||
@@ -260,0 +274,0 @@ }(Type)); |
@@ -98,5 +98,32 @@ import { Either } from 'fp-ts/lib/Either'; | ||
export declare function dictionary<D extends Type<string>, C extends Any>(domain: D, codomain: C, name?: string): DictionaryType<D, C>; | ||
export declare class UnionType<RTS, U> extends Type<U> { | ||
export declare type Match<RT extends Any, R> = (a: TypeOf<RT>) => R; | ||
export declare class UnionType<RTS extends Array<Any>, U> extends Type<U> { | ||
readonly types: RTS; | ||
constructor(name: string, validate: Validate<U>, types: RTS); | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>, j: Match<RTS[9], R>, k: Match<RTS[10], R>, l: Match<RTS[11], R>, m: Match<RTS[12], R>, n: Match<RTS[13], R>, o: Match<RTS[14], R>, p: Match<RTS[15], R>, q: Match<RTS[16], R>, r: Match<RTS[17], R>, s: Match<RTS[18], R>, t: Match<RTS[19], R>, u: Match<RTS[20], R>, v: Match<RTS[21], R>, w: Match<RTS[22], R>, x: Match<RTS[23], R>, y: Match<RTS[24], R>, z: Match<RTS[25], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>, j: Match<RTS[9], R>, k: Match<RTS[10], R>, l: Match<RTS[11], R>, m: Match<RTS[12], R>, n: Match<RTS[13], R>, o: Match<RTS[14], R>, p: Match<RTS[15], R>, q: Match<RTS[16], R>, r: Match<RTS[17], R>, s: Match<RTS[18], R>, t: Match<RTS[19], R>, u: Match<RTS[20], R>, v: Match<RTS[21], R>, w: Match<RTS[22], R>, x: Match<RTS[23], R>, y: Match<RTS[24], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>, j: Match<RTS[9], R>, k: Match<RTS[10], R>, l: Match<RTS[11], R>, m: Match<RTS[12], R>, n: Match<RTS[13], R>, o: Match<RTS[14], R>, p: Match<RTS[15], R>, q: Match<RTS[16], R>, r: Match<RTS[17], R>, s: Match<RTS[18], R>, t: Match<RTS[19], R>, u: Match<RTS[20], R>, v: Match<RTS[21], R>, w: Match<RTS[22], R>, x: Match<RTS[23], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>, j: Match<RTS[9], R>, k: Match<RTS[10], R>, l: Match<RTS[11], R>, m: Match<RTS[12], R>, n: Match<RTS[13], R>, o: Match<RTS[14], R>, p: Match<RTS[15], R>, q: Match<RTS[16], R>, r: Match<RTS[17], R>, s: Match<RTS[18], R>, t: Match<RTS[19], R>, u: Match<RTS[20], R>, v: Match<RTS[21], R>, w: Match<RTS[22], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>, j: Match<RTS[9], R>, k: Match<RTS[10], R>, l: Match<RTS[11], R>, m: Match<RTS[12], R>, n: Match<RTS[13], R>, o: Match<RTS[14], R>, p: Match<RTS[15], R>, q: Match<RTS[16], R>, r: Match<RTS[17], R>, s: Match<RTS[18], R>, t: Match<RTS[19], R>, u: Match<RTS[20], R>, v: Match<RTS[21], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>, j: Match<RTS[9], R>, k: Match<RTS[10], R>, l: Match<RTS[11], R>, m: Match<RTS[12], R>, n: Match<RTS[13], R>, o: Match<RTS[14], R>, p: Match<RTS[15], R>, q: Match<RTS[16], R>, r: Match<RTS[17], R>, s: Match<RTS[18], R>, t: Match<RTS[19], R>, u: Match<RTS[20], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>, j: Match<RTS[9], R>, k: Match<RTS[10], R>, l: Match<RTS[11], R>, m: Match<RTS[12], R>, n: Match<RTS[13], R>, o: Match<RTS[14], R>, p: Match<RTS[15], R>, q: Match<RTS[16], R>, r: Match<RTS[17], R>, s: Match<RTS[18], R>, t: Match<RTS[19], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>, j: Match<RTS[9], R>, k: Match<RTS[10], R>, l: Match<RTS[11], R>, m: Match<RTS[12], R>, n: Match<RTS[13], R>, o: Match<RTS[14], R>, p: Match<RTS[15], R>, q: Match<RTS[16], R>, r: Match<RTS[17], R>, s: Match<RTS[18], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>, j: Match<RTS[9], R>, k: Match<RTS[10], R>, l: Match<RTS[11], R>, m: Match<RTS[12], R>, n: Match<RTS[13], R>, o: Match<RTS[14], R>, p: Match<RTS[15], R>, q: Match<RTS[16], R>, r: Match<RTS[17], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>, j: Match<RTS[9], R>, k: Match<RTS[10], R>, l: Match<RTS[11], R>, m: Match<RTS[12], R>, n: Match<RTS[13], R>, o: Match<RTS[14], R>, p: Match<RTS[15], R>, q: Match<RTS[16], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>, j: Match<RTS[9], R>, k: Match<RTS[10], R>, l: Match<RTS[11], R>, m: Match<RTS[12], R>, n: Match<RTS[13], R>, o: Match<RTS[14], R>, p: Match<RTS[15], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>, j: Match<RTS[9], R>, k: Match<RTS[10], R>, l: Match<RTS[11], R>, m: Match<RTS[12], R>, n: Match<RTS[13], R>, o: Match<RTS[14], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>, j: Match<RTS[9], R>, k: Match<RTS[10], R>, l: Match<RTS[11], R>, m: Match<RTS[12], R>, n: Match<RTS[13], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>, j: Match<RTS[9], R>, k: Match<RTS[10], R>, l: Match<RTS[11], R>, m: Match<RTS[12], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>, j: Match<RTS[9], R>, k: Match<RTS[10], R>, l: Match<RTS[11], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>, j: Match<RTS[9], R>, k: Match<RTS[10], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>, j: Match<RTS[9], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>, i: Match<RTS[8], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>, h: Match<RTS[7], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>, g: Match<RTS[6], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>, f: Match<RTS[5], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>, e: Match<RTS[4], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>, d: Match<RTS[3], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>, c: Match<RTS[2], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>, b: Match<RTS[1], R>): (value: U) => R; | ||
fold<R>(a: Match<RTS[0], R>): (value: U) => R; | ||
} | ||
@@ -103,0 +130,0 @@ export declare function union<A extends Any, B extends Any, C extends Any, D extends Any, E extends Any, F extends Any, G extends Any, H extends Any, I extends Any, J extends Any, K extends Any, L extends Any, M extends Any, N extends Any, O extends Any, P extends Any, Q extends Any, R extends Any, S extends Any, T extends Any, U extends Any, V extends Any, W extends Any, X extends Any, Y extends Any, Z extends Any>(types: [A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z], name?: string): UnionType<[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z], TypeOf<A> | TypeOf<B> | TypeOf<C> | TypeOf<D> | TypeOf<E> | TypeOf<F> | TypeOf<G> | TypeOf<H> | TypeOf<I> | TypeOf<J> | TypeOf<K> | TypeOf<L> | TypeOf<M> | TypeOf<N> | TypeOf<O> | TypeOf<P> | TypeOf<Q> | TypeOf<R> | TypeOf<S> | TypeOf<T> | TypeOf<U> | TypeOf<V> | TypeOf<W> | TypeOf<X> | TypeOf<Y> | TypeOf<Z>>; |
@@ -265,5 +265,2 @@ "use strict"; | ||
exports.dictionary = dictionary; | ||
// | ||
// unions | ||
// | ||
var UnionType = (function (_super) { | ||
@@ -276,2 +273,19 @@ __extends(UnionType, _super); | ||
} | ||
UnionType.prototype.fold = function () { | ||
var _this = this; | ||
var matches = []; | ||
for (var _i = 0; _i < arguments.length; _i++) { | ||
matches[_i] = arguments[_i]; | ||
} | ||
return function (value) { | ||
for (var i = 0, len = matches.length; i < len; i++) { | ||
var type = _this.types[i]; | ||
var match = matches[i]; | ||
if (type.is(value)) { | ||
return match(value); | ||
} | ||
} | ||
throw new Error("Invalid value " + JSON.stringify(value) + " supplied to " + _this.name); | ||
}; | ||
}; | ||
return UnionType; | ||
@@ -278,0 +292,0 @@ }(Type)); |
{ | ||
"name": "io-ts", | ||
"version": "0.2.1", | ||
"version": "0.2.2", | ||
"description": "TypeScript compatible runtime type system for IO validation", | ||
@@ -32,8 +32,8 @@ "files": [ | ||
"devDependencies": { | ||
"@types/mocha": "^2.2.38", | ||
"@types/node": "^7.0.4", | ||
"mocha": "^3.2.0", | ||
"ts-node": "^2.0.0", | ||
"@types/mocha": "2.2.38", | ||
"@types/node": "7.0.4", | ||
"mocha": "3.2.0", | ||
"ts-node": "2.0.0", | ||
"typescript": "^2.2.0", | ||
"typings-checker": "^1.1.2" | ||
"typings-checker": "1.1.2" | ||
}, | ||
@@ -40,0 +40,0 @@ "tags": [ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
184522
1529