summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/node-gyp/node_modules/fstream/lib/proxy-writer.js
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2018-04-05 22:51:49 +0200
committerAnna Henningsen <anna@addaleax.net>2018-04-05 23:00:02 +0200
commite37effe4cec98688e75d770f4d0b7f68927e2b73 (patch)
treee7efa0fc8a2139f9aba4b66ea3f3613262f20cef /deps/npm/node_modules/node-gyp/node_modules/fstream/lib/proxy-writer.js
parent026f6b787a7a23597790f1f0b076c58a68c7c38b (diff)
downloadandroid-node-v8-e37effe4cec98688e75d770f4d0b7f68927e2b73.tar.gz
android-node-v8-e37effe4cec98688e75d770f4d0b7f68927e2b73.tar.bz2
android-node-v8-e37effe4cec98688e75d770f4d0b7f68927e2b73.zip
Revert "deps: upgrade npm to 5.8.0"
This reverts commit 25a816dcda7b1db0929501acfe13f2fe5119759b. PR-URL: https://github.com/nodejs/node/pull/19837 Reviewed-By: Gus Caplan <me@gus.host>
Diffstat (limited to 'deps/npm/node_modules/node-gyp/node_modules/fstream/lib/proxy-writer.js')
-rw-r--r--deps/npm/node_modules/node-gyp/node_modules/fstream/lib/proxy-writer.js111
1 files changed, 111 insertions, 0 deletions
diff --git a/deps/npm/node_modules/node-gyp/node_modules/fstream/lib/proxy-writer.js b/deps/npm/node_modules/node-gyp/node_modules/fstream/lib/proxy-writer.js
new file mode 100644
index 0000000000..a6544621bf
--- /dev/null
+++ b/deps/npm/node_modules/node-gyp/node_modules/fstream/lib/proxy-writer.js
@@ -0,0 +1,111 @@
+// A writer for when we don't know what kind of thing
+// the thing is. That is, it's not explicitly set,
+// so we're going to make it whatever the thing already
+// is, or "File"
+//
+// Until then, collect all events.
+
+module.exports = ProxyWriter
+
+var Writer = require('./writer.js')
+var getType = require('./get-type.js')
+var inherits = require('inherits')
+var collect = require('./collect.js')
+var fs = require('fs')
+
+inherits(ProxyWriter, Writer)
+
+function ProxyWriter (props) {
+ var self = this
+ if (!(self instanceof ProxyWriter)) {
+ throw new Error('ProxyWriter must be called as constructor.')
+ }
+
+ self.props = props
+ self._needDrain = false
+
+ Writer.call(self, props)
+}
+
+ProxyWriter.prototype._stat = function () {
+ var self = this
+ var props = self.props
+ // stat the thing to see what the proxy should be.
+ var stat = props.follow ? 'stat' : 'lstat'
+
+ fs[stat](props.path, function (er, current) {
+ var type
+ if (er || !current) {
+ type = 'File'
+ } else {
+ type = getType(current)
+ }
+
+ props[type] = true
+ props.type = self.type = type
+
+ self._old = current
+ self._addProxy(Writer(props, current))
+ })
+}
+
+ProxyWriter.prototype._addProxy = function (proxy) {
+ // console.error("~~ set proxy", this.path)
+ var self = this
+ if (self._proxy) {
+ return self.error('proxy already set')
+ }
+
+ self._proxy = proxy
+ ;[
+ 'ready',
+ 'error',
+ 'close',
+ 'pipe',
+ 'drain',
+ 'warn'
+ ].forEach(function (ev) {
+ proxy.on(ev, self.emit.bind(self, ev))
+ })
+
+ self.emit('proxy', proxy)
+
+ var calls = self._buffer
+ calls.forEach(function (c) {
+ // console.error("~~ ~~ proxy buffered call", c[0], c[1])
+ proxy[c[0]].apply(proxy, c[1])
+ })
+ self._buffer.length = 0
+ if (self._needsDrain) self.emit('drain')
+}
+
+ProxyWriter.prototype.add = function (entry) {
+ // console.error("~~ proxy add")
+ collect(entry)
+
+ if (!this._proxy) {
+ this._buffer.push(['add', [entry]])
+ this._needDrain = true
+ return false
+ }
+ return this._proxy.add(entry)
+}
+
+ProxyWriter.prototype.write = function (c) {
+ // console.error('~~ proxy write')
+ if (!this._proxy) {
+ this._buffer.push(['write', [c]])
+ this._needDrain = true
+ return false
+ }
+ return this._proxy.write(c)
+}
+
+ProxyWriter.prototype.end = function (c) {
+ // console.error('~~ proxy end')
+ if (!this._proxy) {
+ this._buffer.push(['end', [c]])
+ return false
+ }
+ return this._proxy.end(c)
+}