; | |
const {Transform} = require('stream'); | |
class ObjectTransform extends Transform { | |
constructor() { | |
super({ | |
objectMode: true | |
}); | |
} | |
} | |
class FilterStream extends ObjectTransform { | |
constructor(filter) { | |
super(); | |
this._filter = filter; | |
} | |
_transform(data, encoding, callback) { | |
if (this._filter(data)) { | |
this.push(data); | |
} | |
callback(); | |
} | |
} | |
class UniqueStream extends ObjectTransform { | |
constructor() { | |
super(); | |
this._pushed = new Set(); | |
} | |
_transform(data, encoding, callback) { | |
if (!this._pushed.has(data)) { | |
this.push(data); | |
this._pushed.add(data); | |
} | |
callback(); | |
} | |
} | |
module.exports = { | |
FilterStream, | |
UniqueStream | |
}; | |