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.
		
		
		
		
		
			
		
			
				
					
					
						
							54 lines
						
					
					
						
							1.5 KiB
						
					
					
				
			
		
		
	
	
							54 lines
						
					
					
						
							1.5 KiB
						
					
					
				var stream = require('readable-stream') | 
						|
var inherits = require('inherits') | 
						|
 | 
						|
var SIGNAL_FLUSH =(Buffer.from && Buffer.from !== Uint8Array.from) | 
						|
  ? Buffer.from([0]) | 
						|
  : new Buffer([0]) | 
						|
 | 
						|
module.exports = WriteStream | 
						|
 | 
						|
function WriteStream (opts, write, flush) { | 
						|
  if (!(this instanceof WriteStream)) return new WriteStream(opts, write, flush) | 
						|
 | 
						|
  if (typeof opts === 'function') { | 
						|
    flush = write | 
						|
    write = opts | 
						|
    opts = {} | 
						|
  } | 
						|
 | 
						|
  stream.Writable.call(this, opts) | 
						|
 | 
						|
  this.destroyed = false | 
						|
  this._worker = write || null | 
						|
  this._flush = flush || null | 
						|
} | 
						|
 | 
						|
inherits(WriteStream, stream.Writable) | 
						|
 | 
						|
WriteStream.obj = function (opts, worker, flush) { | 
						|
  if (typeof opts === 'function') return WriteStream.obj(null, opts, worker) | 
						|
  if (!opts) opts = {} | 
						|
  opts.objectMode = true | 
						|
  return new WriteStream(opts, worker, flush) | 
						|
} | 
						|
 | 
						|
WriteStream.prototype._write = function (data, enc, cb) { | 
						|
  if (SIGNAL_FLUSH === data) this._flush(cb) | 
						|
  else this._worker(data, enc, cb) | 
						|
} | 
						|
 | 
						|
WriteStream.prototype.end = function (data, enc, cb) { | 
						|
  if (!this._flush) return stream.Writable.prototype.end.apply(this, arguments) | 
						|
  if (typeof data === 'function') return this.end(null, null, data) | 
						|
  if (typeof enc === 'function') return this.end(data, null, enc) | 
						|
  if (data) this.write(data) | 
						|
  if (!this._writableState.ending) this.write(SIGNAL_FLUSH) | 
						|
  return stream.Writable.prototype.end.call(this, cb) | 
						|
} | 
						|
 | 
						|
WriteStream.prototype.destroy = function (err) { | 
						|
  if (this.destroyed) return | 
						|
  this.destroyed = true | 
						|
  if (err) this.emit('error', err) | 
						|
  this.emit('close') | 
						|
}
 | 
						|
 |