progress-emitter.js
612 Bytes
'use strict';
const EventEmitter = require('events');
const written = new WeakMap();
class ProgressEmitter extends EventEmitter {
constructor(source, destination) {
super();
this._source = source;
this._destination = destination;
}
set written(value) {
written.set(this, value);
this.emitProgress();
}
get written() {
return written.get(this);
}
emitProgress() {
const {size, written} = this;
this.emit('progress', {
src: this._source,
dest: this._destination,
size,
written,
percent: written === size ? 1 : written / size
});
}
}
module.exports = ProgressEmitter;