// Type definitions for wu.js 2.1 // Project: https://fitzgen.github.io/wu.js/, https://github.com/fitzgen/wu.js // Definitions by: phiresky // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped declare function wu(iterable: Iterable): wu.WuIterable; export = wu; export as namespace wu; declare namespace wu { type Consumer = (t: T) => void; type Filter = (t: T) => boolean; // only static function chain(...iters: Array>): WuIterable; function count(start?: number, step?: number): WuIterable; function curryable(fun: (...x: any[]) => any, expected?: number): any; function entries(obj: { [i: string]: T }): WuIterable<[string, T]>; function keys(obj: { [i: string]: any }): WuIterable; function values(obj: { [i: string]: T }): WuIterable; function repeat(obj: T, times?: number): WuIterable; // also copied to WuIterable function asyncEach(fn: Consumer, maxBlock?: number, timeout?: number): void; function drop(n: number, iter: Iterable): WuIterable; function dropWhile(fn: Filter, iter: Iterable): WuIterable; function cycle(iter: Iterable): WuIterable; function chunk(n: number, iter: Iterable): WuIterable; function concatMap(fn: (t: T) => Iterable, iter: Iterable): WuIterable; function enumerate(iter: Iterable): WuIterable<[T, number]>; function every(fn: Filter, iter: Iterable): boolean; function filter(fn: Filter, iter: Iterable): WuIterable; function find(fn: Filter, iter: Iterable): T | undefined; function flatten(iter: Iterable): WuIterable; function flatten(shallow: boolean, iter: Iterable): WuIterable; function forEach(fn: Consumer, iter: Iterable): void; function has(t: T, iter: Iterable): boolean; // invoke(name:string, ...t:T[], iter: Iterable<(t:T)=>U>): WuIterable; const invoke: any; function map(fn: (t: T) => U, iter: Iterable): WuIterable; // pluck(attribute:string, iter: Iterable<{[attribute]: T}>): WuIterable; function pluck(attribute: string, iter: Iterable): WuIterable; function reduce(fn: (a: T, b: T) => T, iter: Iterable): T; function reduce(fn: (a: T, b: T) => T, initial: T, iter: Iterable): T; function reduce(fn: (a: U, b: T) => U, iter: Iterable): U; function reduce(fn: (a: U, b: T) => U, initial: U, iter: Iterable): U; function reductions(fn: (a: T, b: T) => T, iter: Iterable): WuIterable; function reductions(fn: (a: T, b: T) => T, initial: T, iter: Iterable): WuIterable; function reductions(fn: (a: U, b: T) => U, iter: Iterable): WuIterable; function reductions(fn: (a: U, b: T) => U, initial: U, iter: Iterable): WuIterable; function reject(fn: Filter, iter: Iterable): WuIterable; function slice(iter: Iterable): WuIterable; function slice(start: number, iter: Iterable): WuIterable; function slice(start: number, stop: number, iter: Iterable): WuIterable; function some(fn: Filter, iter: Iterable): boolean; function spreadMap(fn: (...x: any[]) => T, iter: Iterable): WuIterable; function take(n: number, iter: Iterable): WuIterable; function takeWhile(fn: Filter, iter: Iterable): WuIterable; function tap(fn: Consumer, iter: Iterable): WuIterable; function toArray(iter: Iterable): T[]; function unique(iter: Iterable): WuIterable; function zip(iter2: Iterable, iter: Iterable): WuIterable<[T, U]>; function zipLongest(iter2: Iterable, iter: Iterable): WuIterable<[T, U]>; const zipWith: any; const unzip: any; function tee(iter: Iterable): Array>; function tee(n: number, iter: Iterable): Array>; 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+), maxBlock?: number, timeout?: number): any; drop(n: number): WuIterable; dropWhile(fn: Filter): WuIterable; cycle(): WuIterable; chunk(n: number): WuIterable; concatMap(fn: (t: T) => Iterable): WuIterable; enumerate(): WuIterable<[T, number]>; every(fn: Filter): boolean; filter(fn: Filter): WuIterable; find(fn: Filter): T | undefined; 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, initial?: T): T; reduce(fn: (a: U, b: T) => U, initial?: U): U; reductions(fn: (a: T, b: T) => T, initial?: T): WuIterable; reductions(fn: (a: U, b: T) => U, initial?: U): WuIterable; reject(fn: Filter): WuIterable; slice(start?: number, stop?: number): WuIterable; some(fn: Filter): boolean; spreadMap(fn: (...x: any[]) => T, iter: Iterable): WuIterable; take(n: number): WuIterable; takeWhile(fn: Filter): WuIterable; tap(fn: Consumer): WuIterable; toArray(): T[]; unique(): WuIterable; // TODO: this makes no sense, where did the second entry come from? // tslint:disable-next-line no-unnecessary-generics zip(iter2: Iterable): WuIterable<[T, U]>; // tslint:disable-next-line no-unnecessary-generics zipLongest(iter2: Iterable): WuIterable<[T, U]>; zipWith: any; unzip: any; tee(n?: number): Array>; } }