Sha256: 56d0dfbd2acbaffd7a592eb25130eed4ab12bc1c10844677b2d869d5992c36a9
Contents?: true
Size: 1011 Bytes
Versions: 41
Compression:
Stored size: 1011 Bytes
Contents
const Minipass = require('minipass') const _flush = Symbol('_flush') const _flushed = Symbol('_flushed') const _flushing = Symbol('_flushing') class Flush extends Minipass { constructor (opt = {}) { if (typeof opt === 'function') opt = { flush: opt } super(opt) // or extend this class and provide a 'flush' method in your subclass if (typeof opt.flush !== 'function' && typeof this.flush !== 'function') throw new TypeError('must provide flush function in options') this[_flush] = opt.flush || this.flush } emit (ev, ...data) { if ((ev !== 'end' && ev !== 'finish') || this[_flushed]) return super.emit(ev, ...data) if (this[_flushing]) return this[_flushing] = true const afterFlush = er => { this[_flushed] = true er ? super.emit('error', er) : super.emit('end') } const ret = this[_flush](afterFlush) if (ret && ret.then) ret.then(() => afterFlush(), er => afterFlush(er)) } } module.exports = Flush
Version data entries
41 entries across 40 versions & 7 rubygems