first commit
This commit is contained in:
85
build/node_modules/fstream/lib/abstract.js
generated
vendored
Normal file
85
build/node_modules/fstream/lib/abstract.js
generated
vendored
Normal file
@@ -0,0 +1,85 @@
|
||||
// the parent class for all fstreams.
|
||||
|
||||
module.exports = Abstract
|
||||
|
||||
var Stream = require('stream').Stream
|
||||
var inherits = require('inherits')
|
||||
|
||||
function Abstract () {
|
||||
Stream.call(this)
|
||||
}
|
||||
|
||||
inherits(Abstract, Stream)
|
||||
|
||||
Abstract.prototype.on = function (ev, fn) {
|
||||
if (ev === 'ready' && this.ready) {
|
||||
process.nextTick(fn.bind(this))
|
||||
} else {
|
||||
Stream.prototype.on.call(this, ev, fn)
|
||||
}
|
||||
return this
|
||||
}
|
||||
|
||||
Abstract.prototype.abort = function () {
|
||||
this._aborted = true
|
||||
this.emit('abort')
|
||||
}
|
||||
|
||||
Abstract.prototype.destroy = function () {}
|
||||
|
||||
Abstract.prototype.warn = function (msg, code) {
|
||||
var self = this
|
||||
var er = decorate(msg, code, self)
|
||||
if (!self.listeners('warn')) {
|
||||
console.error('%s %s\n' +
|
||||
'path = %s\n' +
|
||||
'syscall = %s\n' +
|
||||
'fstream_type = %s\n' +
|
||||
'fstream_path = %s\n' +
|
||||
'fstream_unc_path = %s\n' +
|
||||
'fstream_class = %s\n' +
|
||||
'fstream_stack =\n%s\n',
|
||||
code || 'UNKNOWN',
|
||||
er.stack,
|
||||
er.path,
|
||||
er.syscall,
|
||||
er.fstream_type,
|
||||
er.fstream_path,
|
||||
er.fstream_unc_path,
|
||||
er.fstream_class,
|
||||
er.fstream_stack.join('\n'))
|
||||
} else {
|
||||
self.emit('warn', er)
|
||||
}
|
||||
}
|
||||
|
||||
Abstract.prototype.info = function (msg, code) {
|
||||
this.emit('info', msg, code)
|
||||
}
|
||||
|
||||
Abstract.prototype.error = function (msg, code, th) {
|
||||
var er = decorate(msg, code, this)
|
||||
if (th) throw er
|
||||
else this.emit('error', er)
|
||||
}
|
||||
|
||||
function decorate (er, code, self) {
|
||||
if (!(er instanceof Error)) er = new Error(er)
|
||||
er.code = er.code || code
|
||||
er.path = er.path || self.path
|
||||
er.fstream_type = er.fstream_type || self.type
|
||||
er.fstream_path = er.fstream_path || self.path
|
||||
if (self._path !== self.path) {
|
||||
er.fstream_unc_path = er.fstream_unc_path || self._path
|
||||
}
|
||||
if (self.linkpath) {
|
||||
er.fstream_linkpath = er.fstream_linkpath || self.linkpath
|
||||
}
|
||||
er.fstream_class = er.fstream_class || self.constructor.name
|
||||
er.fstream_stack = er.fstream_stack ||
|
||||
new Error().stack.split(/\n/).slice(3).map(function (s) {
|
||||
return s.replace(/^ {4}at /, '')
|
||||
})
|
||||
|
||||
return er
|
||||
}
|
||||
Reference in New Issue
Block a user