summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/flush-write-stream/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/node_modules/flush-write-stream/index.js')
-rw-r--r--deps/npm/node_modules/flush-write-stream/index.js54
1 files changed, 54 insertions, 0 deletions
diff --git a/deps/npm/node_modules/flush-write-stream/index.js b/deps/npm/node_modules/flush-write-stream/index.js
new file mode 100644
index 0000000000..d7c6209562
--- /dev/null
+++ b/deps/npm/node_modules/flush-write-stream/index.js
@@ -0,0 +1,54 @@
+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')
+}