batchjs
Version:
Batch processing framework for NodeJS
76 lines (75 loc) • 2.2 kB
JavaScript
import { SingleObjectDuplex } from "./SingleObjectDuplex";
/**
* @abstract
* @class
* Abstract class that allows you to emit discarded data in a single data stream adding support to discard events.
* @extends SingleObjectDuplex
* @template Tin
* @template Tout
* @example
* ```typescript
* class DiscardingStreamImplementation<Tin> extends DiscardingSingleObjectDuplex<Tin> {
* constructor(){
* super({objectMode: true});
* }
*
* _write(chunk: T, encoding: BufferEncoding, callback: TransformCallback): void {
* this.emit("discard", chunk);
* callback();
* }
*
* _final(callback: TransformCallback): void {
* this.push(null);
* callback();
* }
*
* _read(): void {}
* }
* const stream:DiscardingStreamImplementation<string> = new DiscardingStreamImplementation();
*
* stream.write("data1"); //Discarded
* stream.write("data2"); //Discarded
* stream.write("data3"); //Discarded
* stream.end();
*
* stream.on("discard", (chunk: string) => {
* console.log(``Discarded chunk: ${chunk}```);
* });
* ```
* ```shell
* >> Discarded chunk: data1
* >> Discarded chunk: data2
* >> Discarded chunk: data3
* ```
*/
export class DiscardingSingleObjectDuplex extends SingleObjectDuplex {
/**
* @constructor
* @param options {ObjectDuplexOptions}
* @param {Function} canEarlyFlush - A function that returns a boolean indicating whether the stream can early flush.
*/
constructor(options, canEarlyFlush) {
super(options, canEarlyFlush);
}
addListener(event, listener) {
return super.addListener(event, listener);
}
emit(event, ...args) {
return super.emit(event, ...args);
}
on(event, listener) {
return super.on(event, listener);
}
once(event, listener) {
return super.once(event, listener);
}
prependListener(event, listener) {
return super.prependListener(event, listener);
}
prependOnceListener(event, listener) {
return super.prependOnceListener(event, listener);
}
removeListener(event, listener) {
return super.removeListener(event, listener);
}
}