'use strict'; 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 };