Add types for progress-stream 2.0

This commit is contained in:
Mick Dekkers
2019-02-16 11:16:01 +01:00
parent 08850d86fa
commit 531ab265ca
4 changed files with 139 additions and 0 deletions

51
types/progress-stream/index.d.ts vendored Normal file
View File

@@ -0,0 +1,51 @@
// Type definitions for progress-stream 2.0
// Project: https://github.com/freeall/progress-stream
// Definitions by: Mick Dekkers <https://github.com/mickdekkers>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.1
/// <reference types="node" />
import stream = require("stream");
export = progress_stream;
declare function progress_stream(
options: progress_stream.Options,
progressListener: progress_stream.ProgressListener,
): progress_stream.ProgressStream;
declare function progress_stream(
optionsOrProgressListener?:
| progress_stream.Options
| progress_stream.ProgressListener,
): progress_stream.ProgressStream;
declare namespace progress_stream {
interface Options {
time?: number;
speed?: number;
length?: number;
drain?: boolean;
transferred?: number;
}
type ProgressListener = (progress: Progress) => void;
type ProgressStream = stream.Transform & {
on(event: "progress", listener: ProgressListener): ProgressStream;
on(event: "length", listener: (length: number) => void): ProgressStream;
setLength(length: number): void;
progress(): Progress;
};
interface Progress {
percentage: number;
transferred: number;
length: number;
remaining: number;
eta: number;
runtime: number;
delta: number;
speed: number;
}
}

View File

@@ -0,0 +1,71 @@
import progress = require("progress-stream");
import stream = require("stream");
const options: progress.Options = {
time: 100,
speed: 100,
length: 100,
drain: true,
transferred: 0,
};
const progressListener = (progress: progress.Progress) => {
// $ExpectType number
progress.percentage;
// $ExpectType number
progress.transferred;
// $ExpectType number
progress.length;
// $ExpectType number
progress.remaining;
// $ExpectType number
progress.eta;
// $ExpectType number
progress.runtime;
// $ExpectType number
progress.delta;
// $ExpectType number
progress.speed;
};
// $ExpectType ProgressStream
const p = progress();
// $ExpectType ProgressStream
progress(options);
// $ExpectType ProgressStream
progress(options, progressListener);
// $ExpectType ProgressStream
progress(progressListener);
// $ExpectType ProgressStream
p.on("progress", progressListener);
// $ExpectType ProgressStream
p.on("length", (length: number) => {});
p.setLength(200); // $ExpectType void
p.progress(); // $ExpectType Progress
// Check if ProgressStream extends stream.Transform correctly
// $ExpectType ProgressStream
p.on("close", () => {});
// $ExpectType ProgressStream
p.on("data", (chunk: any) => {});
// $ExpectType ProgressStream
p.on("end", () => {});
// $ExpectType ProgressStream
p.on("error", (err: Error) => {});
// $ExpectType ProgressStream
p.on("readable", () => {});
// $ExpectType ProgressStream
p.pause();
const writable = new stream.Writable();
// $ExpectType Writable
p.pipe(writable);

View File

@@ -0,0 +1,16 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": ["es6"],
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
"baseUrl": "../",
"typeRoots": ["../"],
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true,
"strictFunctionTypes": true
},
"files": ["index.d.ts", "progress-stream-tests.ts"]
}

View File

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