batchjs
Version:
Batch processing framework for NodeJS
40 lines (39 loc) • 1.27 kB
JavaScript
import { Duplex } from "stream";
const defaultOptions = {
objectMode: true,
drainTimeout: 50
};
/**
* @abstract
* @class
* Abstract class that handle data in a stream in object mode.
* @extends Duplex
* @template Tin
* @template Tout
*/
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export class ObjectDuplex extends Duplex {
drainTimeout;
/**
* @constructor
* @param {ObjectDuplexOptions} options - The options for the ObjectDuplex.
* @param [options.objectMode=true] {true} - Whether the stream should operate in object mode.
* @param [options.drainTimeout=50] {number} - Milliseconds until the stream is considered drained.
*/
constructor(options) {
const opts = { ...defaultOptions, ...options };
super(opts);
this.drainTimeout = opts.drainTimeout;
}
write(chunk, encodingOrCallback, callback) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
return super.write(chunk, encodingOrCallback, callback);
}
end(chunkOrCb, encodingOrCb, cb) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
return super.end(chunkOrCb, encodingOrCb, cb);
}
read(size) {
return super.read(size);
}
}