33 lines
738 B
JavaScript
33 lines
738 B
JavaScript
'use strict';
|
|
|
|
const {Transform} = require('stream');
|
|
|
|
class Skip extends Transform {
|
|
constructor(options) {
|
|
super(Object.assign({}, options, {writableObjectMode: true, readableObjectMode: true}));
|
|
this._n = 0;
|
|
if (options) {
|
|
'n' in options && (this._n = options.n);
|
|
}
|
|
if (this._n <= 0) {
|
|
this._transform = this._passThrough;
|
|
}
|
|
}
|
|
_transform(chunk, encoding, callback) {
|
|
if (--this._n <= 0) {
|
|
this._transform = this._passThrough;
|
|
}
|
|
callback(null);
|
|
}
|
|
_passThrough(chunk, encoding, callback) {
|
|
this.push(chunk);
|
|
callback(null);
|
|
}
|
|
static make(n) {
|
|
return new Skip(typeof n == 'object' ? n : {n});
|
|
}
|
|
}
|
|
Skip.make.Constructor = Skip;
|
|
|
|
module.exports = Skip.make;
|