Add package are-we-there-yet (#16783)

This commit is contained in:
Brian J Brennan 2017-06-01 01:30:14 -04:00 committed by Mohamed Hegazy
parent 412030b795
commit 1790ce0757
4 changed files with 138 additions and 0 deletions

View File

@ -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());

90
types/are-we-there-yet/index.d.ts vendored Normal file
View File

@ -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 <https://github.com/brianloveswords>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
/// <reference types="node" />
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;
}

View File

@ -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"
]
}

View File

@ -0,0 +1 @@
{ "extends": "dtslint/dt.json" }