You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							39 lines
						
					
					
						
							1011 B
						
					
					
				
			
		
		
	
	
							39 lines
						
					
					
						
							1011 B
						
					
					
				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
 | 
						|
 |