diff --git a/types/wu/index.d.ts b/types/wu/index.d.ts index 5bd56f391b..3d44b5140f 100644 --- a/types/wu/index.d.ts +++ b/types/wu/index.d.ts @@ -3,71 +3,74 @@ // Definitions by: phiresky // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -declare namespace Wu { +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; - interface WuStatic { - (iterable: Iterable): WuIterable; - // only static - chain(...iters: Array>): 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; - 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): boolean; - 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): Array>; - tee(n: number, iter: Iterable): Array>; - } + // 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): Iterable; + function chunk(n: number, iter: Iterable): WuIterable; + function concatMap(fn: (t: T) => Iterable, iter: Iterable): WuIterable; + function enumerate(iter: Iterable): Iterable<[number, T]>; + function every(fn: Filter, iter: Iterable): boolean; + function filter(fn: Filter, iter: Iterable): WuIterable; + function find(fn: Filter, iter: Iterable): T; + 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 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+)(fn: Consumer, maxBlock?: number, timeout?: number): any; + asyncEach(fn: Consumer, maxBlock?: number, timeout?: number): any; drop(n: number): WuIterable; dropWhile(fn: Filter): WuIterable; cycle(): Iterable; @@ -97,13 +100,13 @@ declare namespace Wu { takeWhile(fn: Filter): WuIterable; tap(fn: Consumer): WuIterable; 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>; } } -declare const wu: Wu.WuStatic; -export = wu; -export as namespace wu; diff --git a/types/wu/tslint.json b/types/wu/tslint.json index 9d0759ec89..3db14f85ea 100644 --- a/types/wu/tslint.json +++ b/types/wu/tslint.json @@ -1,8 +1 @@ -{ - "extends": "dtslint/dt.json", - "rules": { - // TODO - "no-void-expression": false, - "no-unnecessary-generics": false - } -} +{ "extends": "dtslint/dt.json" } diff --git a/types/wu/wu-tests.ts b/types/wu/wu-tests.ts index 385190d417..86be4300db 100644 --- a/types/wu/wu-tests.ts +++ b/types/wu/wu-tests.ts @@ -222,15 +222,13 @@ describe("wu.has", () => { }); describe("wu.invoke", () => { it("should yield the method invokation on each item", () => { - function Greeter(name: string) { - this.name = name; + class Greeter { + constructor(readonly name: string) {} + greet(tail: string) { return `hello ${this.name}${tail}`; } } - Greeter.prototype.greet = function(tail: string) { - return `hello ${this.name}${tail}`; - }; assert.eqArray(["hello world!", "hello test!"], wu.invoke("greet", "!", - [Greeter("world"), Greeter("test")])); + [new Greeter("world"), new Greeter("test")])); }); }); describe("wu.keys", () => {