mirror of
https://github.com/FlipsideCrypto/DefinitelyTyped.git
synced 2026-02-06 19:07:08 +00:00
Fix progress-stream's ProgressStream by extending stream.Transform
This works around the issue described in Microsoft/TypeScript#30031 Unfortunately, we have to redeclare all on/once overloads from stream.Transform in order to extend stream.Transform correctly.
This commit is contained in:
parent
531ab265ca
commit
52f566fbbc
59
types/progress-stream/index.d.ts
vendored
59
types/progress-stream/index.d.ts
vendored
@ -31,12 +31,63 @@ declare namespace progress_stream {
|
||||
|
||||
type ProgressListener = (progress: Progress) => void;
|
||||
|
||||
type ProgressStream = stream.Transform & {
|
||||
on(event: "progress", listener: ProgressListener): ProgressStream;
|
||||
on(event: "length", listener: (length: number) => void): ProgressStream;
|
||||
interface ProgressStream extends stream.Transform {
|
||||
on(event: "progress", listener: ProgressListener): this;
|
||||
on(event: "length", listener: (length: number) => void): this;
|
||||
once(event: "progress", listener: ProgressListener): this;
|
||||
once(event: "length", listener: (length: number) => void): this;
|
||||
setLength(length: number): void;
|
||||
progress(): Progress;
|
||||
};
|
||||
|
||||
// We have to redeclare all on/once overloads from stream.Transform in
|
||||
// order for this ProgressStream interface to extend stream.Transform
|
||||
// correctly. Using an intersection type instead may be an option once
|
||||
// https://github.com/Microsoft/TypeScript/issues/30031 is resolved.
|
||||
|
||||
// stream.Readable events
|
||||
|
||||
/* tslint:disable-next-line adjacent-overload-signatures */
|
||||
on(event: "close", listener: () => void): this;
|
||||
on(event: "data", listener: (chunk: any) => void): this;
|
||||
/* tslint:disable-next-line unified-signatures */
|
||||
on(event: "end", listener: () => void): this;
|
||||
/* tslint:disable-next-line unified-signatures */
|
||||
on(event: "readable", listener: () => void): this;
|
||||
on(event: "error", listener: (err: Error) => void): this;
|
||||
/* tslint:disable-next-line adjacent-overload-signatures */
|
||||
once(event: "close", listener: () => void): this;
|
||||
once(event: "data", listener: (chunk: any) => void): this;
|
||||
/* tslint:disable-next-line unified-signatures */
|
||||
once(event: "end", listener: () => void): this;
|
||||
/* tslint:disable-next-line unified-signatures */
|
||||
once(event: "readable", listener: () => void): this;
|
||||
once(event: "error", listener: (err: Error) => void): this;
|
||||
|
||||
// stream.Writable events
|
||||
|
||||
/* tslint:disable-next-line adjacent-overload-signatures unified-signatures */
|
||||
on(event: "drain", listener: () => void): this;
|
||||
/* tslint:disable-next-line unified-signatures */
|
||||
on(event: "finish", listener: () => void): this;
|
||||
on(event: "pipe", listener: (src: stream.Readable) => void): this;
|
||||
/* tslint:disable-next-line unified-signatures */
|
||||
on(event: "unpipe", listener: (src: stream.Readable) => void): this;
|
||||
/* tslint:disable-next-line adjacent-overload-signatures unified-signatures */
|
||||
once(event: "drain", listener: () => void): this;
|
||||
/* tslint:disable-next-line unified-signatures */
|
||||
once(event: "finish", listener: () => void): this;
|
||||
once(event: "pipe", listener: (src: stream.Readable) => void): this;
|
||||
/* tslint:disable-next-line unified-signatures */
|
||||
once(event: "unpipe", listener: (src: stream.Readable) => void): this;
|
||||
|
||||
// events shared by stream.Readable and stream.Writable
|
||||
|
||||
/* tslint:disable-next-line adjacent-overload-signatures */
|
||||
on(event: string | symbol, listener: (...args: any[]) => void): this;
|
||||
/* tslint:disable-next-line adjacent-overload-signatures */
|
||||
once(event: string | symbol, listener: (...args: any[]) => void): this;
|
||||
/* tslint:enable adjacent-overload-signatures unified-signatures */
|
||||
}
|
||||
|
||||
interface Progress {
|
||||
percentage: number;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user