/**
* Streams
* Pokemon Showdown - http://pokemonshowdown.com/
*
* The Node.js standard library's Streams are really hard to use. This
* offers a better stream API.
*
* Documented in STREAMS.md.
*
* @license MIT
*/
///
type BufferEncoding = 'ascii' | 'utf8' | 'utf-8' | 'utf16le' | 'ucs2' | 'ucs-2' | 'base64' | 'latin1' | 'binary' | 'hex';
export declare class ReadStream {
buf: Buffer;
bufStart: number;
bufEnd: number;
bufCapacity: number;
readSize: number;
atEOF: boolean;
errorBuf: Error[] | null;
encoding: BufferEncoding;
isReadable: boolean;
isWritable: boolean;
nodeReadableStream: NodeJS.ReadableStream | null;
nextPushResolver: (() => void) | null;
nextPush: Promise;
awaitingPush: boolean;
constructor(optionsOrStreamLike?: {
[k: string]: any;
} | NodeJS.ReadableStream | string | Buffer);
get bufSize(): number;
moveBuf(): void;
expandBuf(newCapacity?: number): void;
ensureCapacity(additionalCapacity: number): void;
push(buf: Buffer | string, encoding?: BufferEncoding): void;
pushEnd(): void;
pushError(err: Error, recoverable?: boolean): void;
readError(): void;
peekError(): void;
resolvePush(): void;
_read(size?: number): void | Promise;
_destroy(): void | Promise;
_pause(): void;
/**
* Reads until the internal buffer is non-empty. Does nothing if the
* internal buffer is already non-empty.
*
* If `byteCount` is a number, instead read until the internal buffer
* contains at least `byteCount` bytes.
*
* If `byteCount` is `true`, reads even if the internal buffer is
* non-empty.
*/
loadIntoBuffer(byteCount?: number | null | true, readError?: boolean): Promise | undefined;
doLoad(chunkSize?: number | null, readError?: boolean): Promise;
peek(byteCount?: number | null, encoding?: BufferEncoding): string | null | Promise;
peek(encoding: BufferEncoding): string | null | Promise;
peekBuffer(byteCount?: number | null): Buffer | null | Promise;
read(byteCount?: number | null, encoding?: BufferEncoding): Promise;
read(encoding: BufferEncoding): Promise;
byChunk(byteCount?: number | null): ObjectReadStream;
byLine(): ObjectReadStream;
delimitedBy(delimiter: string): ObjectReadStream;
readBuffer(byteCount?: number | null): Promise;
indexOf(symbol: string, encoding?: BufferEncoding): Promise;
readAll(encoding?: BufferEncoding): Promise;
peekAll(encoding?: BufferEncoding): string | Promise | null;
readDelimitedBy(symbol: string, encoding?: BufferEncoding): Promise;
readLine(encoding?: BufferEncoding): Promise;
destroy(): void | Promise;
next(byteCount?: number | null): Promise<{
value: string | null;
done: boolean;
}>;
pipeTo(outStream: WriteStream, options?: {
noEnd?: boolean;
}): Promise;
}
interface WriteStreamOptions {
nodeStream?: NodeJS.WritableStream;
write?: (this: WriteStream, data: string | Buffer) => (Promise | undefined);
writeEnd?: (this: WriteStream) => Promise;
}
export declare class WriteStream {
isReadable: boolean;
isWritable: true;
encoding: BufferEncoding;
nodeWritableStream: NodeJS.WritableStream | null;
drainListeners: (() => void)[];
constructor(optionsOrStream?: WriteStreamOptions | NodeJS.WritableStream);
write(chunk: Buffer | string): void | Promise;
writeLine(chunk: string): void | Promise;
_write(chunk: Buffer | string): void | Promise;
_writeEnd(): void | Promise;
writeEnd(chunk?: string): Promise;
}
export declare class ReadWriteStream extends ReadStream implements WriteStream {
isReadable: true;
isWritable: true;
nodeWritableStream: NodeJS.WritableStream | null;
drainListeners: (() => void)[];
constructor(options?: AnyObject);
write(chunk: Buffer | string): Promise | void;
writeLine(chunk: string): Promise | void;
_write(chunk: Buffer | string): Promise | void;
/**
* In a ReadWriteStream, `_read` does not need to be implemented,
* because it's valid for the read stream buffer to be filled only by
* `_write`.
*/
_read(size?: number): void;
_writeEnd(): void | Promise;
writeEnd(): Promise;
}
type ObjectReadStreamOptions = {
buffer?: T[];
read?: (this: ObjectReadStream) => void | Promise;
pause?: (this: ObjectReadStream) => void | Promise;
destroy?: (this: ObjectReadStream) => void | Promise;
nodeStream?: undefined;
} | {
buffer?: undefined;
read?: undefined;
pause?: undefined;
destroy?: undefined;
nodeStream: NodeJS.ReadableStream;
};
export declare class ObjectReadStream {
buf: T[];
readSize: number;
atEOF: boolean;
errorBuf: Error[] | null;
isReadable: boolean;
isWritable: boolean;
nodeReadableStream: NodeJS.ReadableStream | null;
nextPushResolver: (() => void) | null;
nextPush: Promise;
awaitingPush: boolean;
constructor(optionsOrStreamLike?: ObjectReadStreamOptions | NodeJS.ReadableStream | T[]);
push(elem: T): void;
pushEnd(): void;
pushError(err: Error, recoverable?: boolean): void;
readError(): void;
peekError(): void;
resolvePush(): void;
_read(size?: number): void | Promise;
_destroy(): void | Promise;
_pause(): void | Promise;
loadIntoBuffer(count?: number | true, readError?: boolean): Promise;
peek(): Promise;
read(): Promise;
peekArray(count?: number | null): Promise;
readArray(count?: number | null): Promise;
readAll(): Promise;
peekAll(): Promise;
destroy(): void | Promise;
[Symbol.asyncIterator](): this;
next(): Promise<{
value: T;
done: false;
} | {
value: undefined;
done: true;
}>;
pipeTo(outStream: ObjectWriteStream, options?: {
noEnd?: boolean;
}): Promise;
}
interface ObjectWriteStreamOptions {
_writableState?: any;
nodeStream?: NodeJS.WritableStream;
write?: (this: ObjectWriteStream, data: T) => Promise | undefined;
writeEnd?: (this: ObjectWriteStream) => Promise;
}
export declare class ObjectWriteStream {
isReadable: boolean;
isWritable: true;
nodeWritableStream: NodeJS.WritableStream | null;
constructor(optionsOrStream?: ObjectWriteStreamOptions | NodeJS.WritableStream);
write(elem: T | null): void | Promise;
_write(elem: T): void | Promise;
_writeEnd(): void | Promise;
writeEnd(elem?: T): Promise;
}
interface ObjectReadWriteStreamOptions {
read?: (this: ObjectReadStream) => void | Promise;
pause?: (this: ObjectReadStream) => void | Promise;
destroy?: (this: ObjectReadStream) => void | Promise;
write?: (this: ObjectWriteStream, elem: T) => Promise | undefined | void;
writeEnd?: () => Promise | undefined | void;
}
export declare class ObjectReadWriteStream extends ObjectReadStream implements ObjectWriteStream {
isReadable: true;
isWritable: true;
nodeWritableStream: NodeJS.WritableStream | null;
constructor(options?: ObjectReadWriteStreamOptions);
write(elem: T): void | Promise;
_write(elem: T): void | Promise;
/** In a ReadWriteStream, _read does not need to be implemented. */
_read(): void;
_writeEnd(): void | Promise;
writeEnd(): Promise;
}
export declare function readAll(nodeStream: NodeJS.ReadableStream, encoding?: any): Promise;
export declare function stdin(): ReadStream;
export declare function stdout(): WriteStream;
export declare function stdpipe(stream: WriteStream | ReadStream | ReadWriteStream): Promise;
export {};