@naturalcycles/nodejs-lib
Version:
Standard library for Node.js
56 lines (55 loc) • 2.36 kB
TypeScript
import type { Readable, Transform, Writable } from 'node:stream';
import type { CommonLogger, CommonLogLevel } from '@naturalcycles/js-lib/log';
import type { Promisable } from '@naturalcycles/js-lib/types';
export interface ReadableSignalOptions {
/** allows destroying the stream if the signal is aborted. */
signal?: AbortSignal;
}
export interface ReadableArrayOptions {
/** the maximum concurrent invocations of `fn` to call on the stream at once. **Default: 1**. */
concurrency?: number;
/** allows destroying the stream if the signal is aborted. */
signal?: AbortSignal;
}
export type ReadableMapper<IN, OUT = unknown> = (data: IN, opt?: ReadableSignalOptions) => Promisable<OUT>;
export type ReadableFlatMapper<IN, OUT = unknown> = (data: IN, opt?: ReadableSignalOptions) => Promisable<OUT[]>;
export type ReadableVoidMapper<IN> = (data: IN, opt?: ReadableSignalOptions) => void | Promise<void>;
export type ReadablePredicate<IN> = (data: IN, opt?: ReadableSignalOptions) => boolean | Promise<boolean>;
export interface ReadableTyped<T = unknown> extends Readable {
toArray: (opt?: ReadableSignalOptions) => Promise<T[]>;
map: <OUT>(mapper: ReadableMapper<T, OUT>, opt?: ReadableArrayOptions) => ReadableTyped<OUT>;
flatMap: <OUT>(mapper: ReadableFlatMapper<T, OUT>, opt?: ReadableArrayOptions) => ReadableTyped<OUT>;
filter: (predicate: ReadablePredicate<T>, opt?: ReadableArrayOptions) => ReadableTyped<T>;
forEach: (mapper: ReadableVoidMapper<T>, opt?: ReadableArrayOptions) => Promise<void>;
take: (limit: number, opt?: ReadableSignalOptions) => ReadableTyped<T>;
drop: (limit: number, opt?: ReadableSignalOptions) => ReadableTyped<T>;
}
export interface WritableTyped<_T> extends Writable {
}
export interface TransformTyped<_IN = unknown, _OUT = unknown> extends Transform {
}
export interface TransformOptions {
/**
* @default true
*/
objectMode?: boolean;
/**
* @default 16
*/
highWaterMark?: number;
/**
* Defaults to `console`.
*/
logger?: CommonLogger;
/**
* Not every Transform implements it.
* Can be one of:
* debug - most verbose, when debugging is needed
* log - default level
* error - logs errors and warnings only
*
* Default is 'log'.
*
*/
logLevel?: CommonLogLevel;
}