File Explorer

/proc/4/root/var/lang/lib/node_modules/npm/node_modules/graceful-fs

This explorer reads the filesystem of the server it runs on, so /workspace/user isn't present here. Browsing and the terminal still work against this server's own disk from /.

legacy-streams.js2.6 KB · 119 lines
var Stream = require('stream').Stream module.exports = legacy function legacy (fs) {  return {    ReadStream: ReadStream,    WriteStream: WriteStream  }   function ReadStream (path, options) {    if (!(this instanceof ReadStream)) return new ReadStream(path, options);     Stream.call(this);     var self = this;     this.path = path;    this.fd = null;    this.readable = true;    this.paused = false;     this.flags = 'r';    this.mode = 438; /*=0666*/    this.bufferSize = 64 * 1024;     options = options || {};     // Mixin options into this    var keys = Object.keys(options);    for (var index = 0, length = keys.length; index < length; index++) {      var key = keys[index];      this[key] = options[key];    }     if (this.encoding) this.setEncoding(this.encoding);     if (this.start !== undefined) {      if ('number' !== typeof this.start) {        throw TypeError('start must be a Number');      }      if (this.end === undefined) {        this.end = Infinity;      } else if ('number' !== typeof this.end) {        throw TypeError('end must be a Number');      }       if (this.start > this.end) {        throw new Error('start must be <= end');      }       this.pos = this.start;    }     if (this.fd !== null) {      process.nextTick(function() {        self._read();      });      return;    }     fs.open(this.path, this.flags, this.mode, function (err, fd) {      if (err) {        self.emit('error', err);        self.readable = false;        return;      }       self.fd = fd;      self.emit('open', fd);      self._read();    })  }   function WriteStream (path, options) {    if (!(this instanceof WriteStream)) return new WriteStream(path, options);     Stream.call(this);     this.path = path;    this.fd = null;    this.writable = true;     this.flags = 'w';    this.encoding = 'binary';    this.mode = 438; /*=0666*/    this.bytesWritten = 0;     options = options || {};     // Mixin options into this    var keys = Object.keys(options);    for (var index = 0, length = keys.length; index < length; index++) {      var key = keys[index];      this[key] = options[key];    }     if (this.start !== undefined) {      if ('number' !== typeof this.start) {        throw TypeError('start must be a Number');      }      if (this.start < 0) {        throw new Error('start must be >= zero');      }       this.pos = this.start;    }     this.busy = false;    this._queue = [];     if (this.fd === null) {      this._open = fs.open;      this._queue.push([this._open, this.path, this.flags, this.mode, undefined]);      this.flush();    }  }}