Sha256: 7a3d322571b6e4435ca1723ce7f325dcf1f7a03ad09a53f76c0236611e8175af

Contents?: true

Size: 1.98 KB

Versions: 115

Compression:

Stored size: 1.98 KB

Contents

// 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
}

Version data entries

115 entries across 112 versions & 20 rubygems

Version Path
optimacms-0.1.61 spec/dummy/node_modules/fstream/lib/abstract.js
disco_app-0.18.0 test/dummy/node_modules/fstream/lib/abstract.js
disco_app-0.18.2 test/dummy/node_modules/fstream/lib/abstract.js
tang-0.2.1 spec/tang_app/node_modules/fstream/lib/abstract.js
groonga-client-model-6.0.0 test/apps/rails6.0.3.5/node_modules/fstream/lib/abstract.js
groonga-client-model-6.0.0 test/apps/rails6.1.3/node_modules/fstream/lib/abstract.js
ruby2js-4.0.4 lib/tasks/testrails/node_modules/fstream/lib/abstract.js
ruby2js-4.0.3 lib/tasks/testrails/node_modules/fstream/lib/abstract.js
tang-0.2.0 spec/tang_app/node_modules/fstream/lib/abstract.js
tang-0.1.0 spec/tang_app/node_modules/fstream/lib/abstract.js
tang-0.0.9 spec/tang_app/node_modules/fstream/lib/abstract.js
enju_library-0.3.8 spec/dummy/node_modules/fstream/lib/abstract.js
ilog-0.4.1 node_modules/fstream/lib/abstract.js
ilog-0.4.0 node_modules/fstream/lib/abstract.js
ilog-0.3.3 node_modules/fstream/lib/abstract.js
jester-data-8.0.0 node_modules/fstream/lib/abstract.js
ezii-os-5.2.1 node_modules/fstream/lib/abstract.js
ezii-os-2.0.1 node_modules/fstream/lib/abstract.js
ezii-os-1.1.0 node_modules/fstream/lib/abstract.js
ezii-os-1.0.0 node_modules/fstream/lib/abstract.js