UNPKG

@naturalcycles/nodejs-lib

Version:
56 lines (55 loc) 2.36 kB
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; }