Sha256: e5bc8c944081bbedb3434bf8928d1226ebd1888f074ee05bc89fb39dc179fefc

Contents?: true

Size: 1.5 KB

Versions: 34

Compression:

Stored size: 1.5 KB

Contents

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')
}

Version data entries

34 entries across 33 versions & 11 rubygems

Version Path
optimacms-0.1.61 spec/dummy/node_modules/flush-write-stream/index.js
disco_app-0.18.0 test/dummy/node_modules/flush-write-stream/index.js
disco_app-0.18.2 test/dummy/node_modules/flush-write-stream/index.js
disco_app-0.16.1 test/dummy/node_modules/flush-write-stream/index.js
disco_app-0.15.2 test/dummy/node_modules/flush-write-stream/index.js
disco_app-0.18.4 test/dummy/node_modules/flush-write-stream/index.js
disco_app-0.18.1 test/dummy/node_modules/flush-write-stream/index.js
disco_app-0.12.7.pre.puma.pre.3 test/dummy/node_modules/flush-write-stream/index.js
disco_app-0.14.0 test/dummy/node_modules/flush-write-stream/index.js
disco_app-0.13.6.pre.puma.pre.3 test/dummy/node_modules/flush-write-stream/index.js
tang-0.2.1 spec/tang_app/node_modules/flush-write-stream/index.js
groonga-client-model-6.0.0 test/apps/rails6.0.3.5/node_modules/flush-write-stream/index.js
groonga-client-model-6.0.0 test/apps/rails6.1.3/node_modules/flush-write-stream/index.js
ruby2js-4.0.4 lib/tasks/testrails/node_modules/flush-write-stream/index.js
ruby2js-4.0.3 lib/tasks/testrails/node_modules/flush-write-stream/index.js
tang-0.2.0 spec/tang_app/node_modules/flush-write-stream/index.js
tang-0.1.0 spec/tang_app/node_modules/flush-write-stream/index.js
tang-0.0.9 spec/tang_app/node_modules/flush-write-stream/index.js
enju_library-0.3.8 spec/dummy/node_modules/flush-write-stream/index.js
ilog-0.4.1 node_modules/flush-write-stream/index.js