diff --git a/types/are-we-there-yet/are-we-there-yet-tests.ts b/types/are-we-there-yet/are-we-there-yet-tests.ts new file mode 100644 index 0000000000..1750cac0c2 --- /dev/null +++ b/types/are-we-there-yet/are-we-there-yet-tests.ts @@ -0,0 +1,25 @@ +import { Tracker, TrackerStream, TrackerGroup } from "are-we-there-yet"; + +let simple = new Tracker("simple"); +simple.addListener("change", (name, completed, tracker) => { + console.log(`name: ${name}, completed: ${completed}`); +}); +simple.addWork(10); +simple.completeWork(1); +console.log(simple.completed() < 1); + +let group = new TrackerGroup("group"); +group.addUnit(simple); + +let subgroup = group.newGroup("subgroup"); +console.log(group.completed()); + +let stream = new TrackerStream("stream", 100, { encoding: "utf8" }); +subgroup.addUnit(stream); + +stream.addListener("change", (name, completed, tracker) => { + console.log(`name: ${name}, completed: ${completed}`); +}); + +simple.finish(); +console.log(group.debug()); diff --git a/types/are-we-there-yet/index.d.ts b/types/are-we-there-yet/index.d.ts new file mode 100644 index 0000000000..4b70c7a012 --- /dev/null +++ b/types/are-we-there-yet/index.d.ts @@ -0,0 +1,90 @@ +// Type definitions for are-we-there-yet 1.1 +// Project: https://github.com/iarna/are-we-there-yet +// Definitions by: Brian J Brennan +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +/// + +import { EventEmitter } from "events"; +import { Transform, TransformOptions } from "stream"; + +export type TrackerObject = Tracker | TrackerGroup | TrackerStream; +export type TrackerEventListener = (name: string, completed: number, tracker: TrackerObject) => void; +export type GenericEventListener = (...args: any[]) => void; + +export class TrackerBase extends EventEmitter { + constructor(name?: string); + addListener(event: "change", listener: TrackerEventListener): this; + addListener(event: string, listener: GenericEventListener): this; + on(event: "change", listener: TrackerEventListener): this; + on(event: string, listener: GenericEventListener): this; + once(event: "change", listener: TrackerEventListener): this; + once(event: string, listener: GenericEventListener): this; + prependListener(event: "change", listener: TrackerEventListener): this; + prependListener(event: string, listener: GenericEventListener): this; + prependOnceListener(event: "change", listener: TrackerEventListener): this; + prependOnceListener(event: string, listener: GenericEventListener): this; + removeListener(event: "change", listener: TrackerEventListener): this; + removeListener(event: string, listener: GenericEventListener): this; +} + +export class Tracker extends TrackerBase { + constructor(name?: string, todo?: number); + addWork(work: number): void; + completeWork(completed: number): void; + completed(): number; + finish(): void; +} + +export class TrackerGroup extends TrackerBase { + constructor(name?: string); + addUnit(tracker: TrackerBase, weight?: number): TrackerObject; + completed(): number; + debug(): string; + finish(): void; + newGroup(name?: string, weight?: number): TrackerGroup; + newItem(name?: string, todo?: number, weight?: number): Tracker; + newStream(name?: string, todo?: number, weight?: number): TrackerStream; +} + +export class TrackerStream extends Transform { + constructor(name?: string, size?: number, options?: TransformOptions); + addWork(work: number): void; + completed(): number; + + addListener(event: "change", listener: TrackerEventListener): this; + addListener(event: "data", listener: (chunk: Buffer | string) => void): this; + addListener(event: "readable" | "end" | "close", listener: () => void): this; + addListener(event: "error", listener: (err: Error) => void): this; + addListener(event: string, listener: GenericEventListener): this; + + on(event: "change", listener: TrackerEventListener): this; + on(event: "data", listener: (chunk: Buffer | string) => void): this; + on(event: "readable" | "end" | "close", listener: () => void): this; + on(event: "error", listener: (err: Error) => void): this; + on(event: string, listener: GenericEventListener): this; + + once(event: "change", listener: TrackerEventListener): this; + once(event: "data", listener: (chunk: Buffer | string) => void): this; + once(event: "readable" | "end" | "close", listener: () => void): this; + once(event: "error", listener: (err: Error) => void): this; + once(event: string, listener: GenericEventListener): this; + + prependListener(event: "change", listener: TrackerEventListener): this; + prependListener(event: "data", listener: (chunk: Buffer | string) => void): this; + prependListener(event: "readable" | "end" | "close", listener: () => void): this; + prependListener(event: "error", listener: (err: Error) => void): this; + prependListener(event: string, listener: GenericEventListener): this; + + prependOnceListener(event: "change", listener: TrackerEventListener): this; + prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this; + prependOnceListener(event: "readable" | "end" | "close", listener: () => void): this; + prependOnceListener(event: "error", listener: (err: Error) => void): this; + prependOnceListener(event: string, listener: GenericEventListener): this; + + removeListener(event: "change", listener: TrackerEventListener): this; + removeListener(event: "data", listener: (chunk: Buffer | string) => void): this; + removeListener(event: "readable" | "end" | "close", listener: () => void): this; + removeListener(event: "error", listener: (err: Error) => void): this; + removeListener(event: string, listener: GenericEventListener): this; +} diff --git a/types/are-we-there-yet/tsconfig.json b/types/are-we-there-yet/tsconfig.json new file mode 100644 index 0000000000..e4dc1462ce --- /dev/null +++ b/types/are-we-there-yet/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "are-we-there-yet-tests.ts" + ] +} diff --git a/types/are-we-there-yet/tslint.json b/types/are-we-there-yet/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/are-we-there-yet/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }