// Type definitions for wu.js v2.1.0 // Project: https://fitzgen.github.io/wu.js/ // Definitions by: phiresky // Definitions: https://github.com/borisyankov/DefinitelyTyped declare module Wu { type Consumer = (t: T) => void; type Filter = (t: T) => boolean; export interface WuStatic { (iterable: Iterable): WuIterable; // only static chain(...iters: Iterable[]): WuIterable; count(start?: number, step?: number): WuIterable; curryable(fun: (...x: any[]) => T, expected?: number): any; entries(obj: { [i: string]: T }): WuIterable<[string, T]>; keys(obj: { [i: string]: T }): WuIterable; values(obj: { [i: string]: T }): WuIterable; repeat(obj: T, times?: number): WuIterable; // also copied to WuInterface asyncEach(fn: Consumer, maxBlock?: number, timeout?: number): void; drop(n: number, iter: Iterable): WuIterable; dropWhile(fn: Filter, iter: Iterable): WuIterable; cycle(iter: Iterable): Iterable; chunk(n: number, iter: Iterable): WuIterable; concatMap(fn: (t: T) => Iterable, iter: Iterable): WuIterable; dropWhile(fn: Filter, iter: Iterable): WuIterable; enumerate(iter: Iterable): Iterable<[number, T]>; every(fn: Filter, iter: Iterable): boolean; filter(fn: Filter, iter: Iterable): WuIterable; find(fn: Filter, iter: Iterable): T; flatten(iter: Iterable): WuIterable; flatten(shallow: boolean, iter: Iterable): WuIterable; forEach(fn: Consumer, iter: Iterable): void; has(t: T, iter: Iterable): boolean; // invoke(name:string, ...t:T[], iter: Iterable<(t:T)=>U>): WuIterable; invoke: any; map(fn: (t: T) => U, iter: Iterable): WuIterable; // pluck(attribute:string, iter: Iterable<{[attribute]: T}>): WuIterable; pluck(attribute: string, iter: Iterable): WuIterable; reduce(fn: (a: T, b: T) => T, iter: Iterable): T; reduce(fn: (a: T, b: T) => T, initial: T, iter: Iterable): T; reduce(fn: (a: U, b: T) => U, iter: Iterable): U; reduce(fn: (a: U, b: T) => U, initial: U, iter: Iterable): U; reductions(fn: (a: T, b: T) => T, iter: Iterable): WuIterable; reductions(fn: (a: T, b: T) => T, initial: T, iter: Iterable): WuIterable; reductions(fn: (a: U, b: T) => U, iter: Iterable): WuIterable; reductions(fn: (a: U, b: T) => U, initial: U, iter: Iterable): WuIterable; reject(fn: Filter, iter: Iterable): WuIterable; slice(iter: Iterable): WuIterable; slice(start: number, iter: Iterable): WuIterable; slice(start: number, stop: number, iter: Iterable): WuIterable; some(fn: Filter, iter: Iterable): WuIterable; spreadMap(fn: (...x: any[]) => T, iter: Iterable): WuIterable; take(n: number, iter: Iterable): WuIterable; takeWhile(fn: Filter, iter: Iterable): WuIterable; tap(fn: Consumer, iter: Iterable): WuIterable; unique(iter: Iterable): WuIterable; zip(iter2: Iterable, iter: Iterable): WuIterable<[T, U]>; zipLongest(iter2: Iterable, iter: Iterable): WuIterable<[T, U]>; zipWith: any; unzip: any; tee(iter: Iterable): WuIterable[]; tee(n: number, iter: Iterable): WuIterable[]; } export interface WuIterable extends IterableIterator { // generated from section "copied to WuIterable" above via // sed -r 's/(, )?iter: Iterable<\w+>//' | // sed -r 's/^(\s+\w+)/\1/' | // sed -r 's/^(\s+\w+)(fn: Consumer, maxBlock?: number, timeout?: number): any; drop(n: number): WuIterable; dropWhile(fn: Filter): WuIterable; cycle(): Iterable; chunk(n: number): WuIterable; concatMap(fn: (t: T) => Iterable): WuIterable; dropWhile(fn: Filter): WuIterable; enumerate(): Iterable<[number, T]>; every(fn: Filter): boolean; filter(fn: Filter): WuIterable; find(fn: Filter): T; flatten(): WuIterable; flatten(shallow: boolean): WuIterable; forEach(fn: Consumer): void; has(t: T): boolean; // invoke(name:string, ...t:T[], iter: Iterable<(t:T)=>U>): WuIterable; invoke: any; map(fn: (t: T) => U): WuIterable; // pluck(attribute:string, iter: Iterable<{[attribute]: T}>): WuIterable; pluck(attribute: string): WuIterable; reduce(fn: (a: T, b: T) => T): T; reduce(fn: (a: T, b: T) => T, initial: T): T; reduce(fn: (a: U, b: T) => U): U; reduce(fn: (a: U, b: T) => U, initial: U): U; reductions(fn: (a: T, b: T) => T): WuIterable; reductions(fn: (a: T, b: T) => T, initial: T): WuIterable; reductions(fn: (a: U, b: T) => U): WuIterable; reductions(fn: (a: U, b: T) => U, initial: U): WuIterable; reject(fn: Filter): WuIterable; slice(): WuIterable; slice(start: number): WuIterable; slice(start: number, stop: number): WuIterable; some(fn: Filter): WuIterable; spreadMap(fn: (...x: any[]) => T, iter: Iterable): WuIterable; take(n: number): WuIterable; takeWhile(fn: Filter): WuIterable; tap(fn: Consumer): WuIterable; unique(): WuIterable; zip(iter2: Iterable): WuIterable<[T, U]>; zipLongest(iter2: Iterable): WuIterable<[T, U]>; zipWith: any; unzip: any; tee(): WuIterable[]; tee(n: number): WuIterable[]; } } declare var wu: Wu.WuStatic;