{"version":3,"file":"index.mjs","names":[],"sources":["../../../../node_modules/fd-slicer/index.js"],"sourcesContent":["var fs = require('fs');\nvar util = require('util');\nvar stream = require('stream');\nvar Readable = stream.Readable;\nvar Writable = stream.Writable;\nvar PassThrough = stream.PassThrough;\nvar Pend = require('pend');\nvar EventEmitter = require('events').EventEmitter;\n\nexports.createFromBuffer = createFromBuffer;\nexports.createFromFd = createFromFd;\nexports.BufferSlicer = BufferSlicer;\nexports.FdSlicer = FdSlicer;\n\nutil.inherits(FdSlicer, EventEmitter);\nfunction FdSlicer(fd, options) {\n  options = options || {};\n  EventEmitter.call(this);\n\n  this.fd = fd;\n  this.pend = new Pend();\n  this.pend.max = 1;\n  this.refCount = 0;\n  this.autoClose = !!options.autoClose;\n}\n\nFdSlicer.prototype.read = function(buffer, offset, length, position, callback) {\n  var self = this;\n  self.pend.go(function(cb) {\n    fs.read(self.fd, buffer, offset, length, position, function(err, bytesRead, buffer) {\n      cb();\n      callback(err, bytesRead, buffer);\n    });\n  });\n};\n\nFdSlicer.prototype.write = function(buffer, offset, length, position, callback) {\n  var self = this;\n  self.pend.go(function(cb) {\n    fs.write(self.fd, buffer, offset, length, position, function(err, written, buffer) {\n      cb();\n      callback(err, written, buffer);\n    });\n  });\n};\n\nFdSlicer.prototype.createReadStream = function(options) {\n  return new ReadStream(this, options);\n};\n\nFdSlicer.prototype.createWriteStream = function(options) {\n  return new WriteStream(this, options);\n};\n\nFdSlicer.prototype.ref = function() {\n  this.refCount += 1;\n};\n\nFdSlicer.prototype.unref = function() {\n  var self = this;\n  self.refCount -= 1;\n\n  if (self.refCount > 0) return;\n  if (self.refCount < 0) throw new Error(\"invalid unref\");\n\n  if (self.autoClose) {\n    fs.close(self.fd, onCloseDone);\n  }\n\n  function onCloseDone(err) {\n    if (err) {\n      self.emit('error', err);\n    } else {\n      self.emit('close');\n    }\n  }\n};\n\nutil.inherits(ReadStream, Readable);\nfunction ReadStream(context, options) {\n  options = options || {};\n  Readable.call(this, options);\n\n  this.context = context;\n  this.context.ref();\n\n  this.start = options.start || 0;\n  this.endOffset = options.end;\n  this.pos = this.start;\n  this.destroyed = false;\n}\n\nReadStream.prototype._read = function(n) {\n  var self = this;\n  if (self.destroyed) return;\n\n  var toRead = Math.min(self._readableState.highWaterMark, n);\n  if (self.endOffset != null) {\n    toRead = Math.min(toRead, self.endOffset - self.pos);\n  }\n  if (toRead <= 0) {\n    self.destroyed = true;\n    self.push(null);\n    self.context.unref();\n    return;\n  }\n  self.context.pend.go(function(cb) {\n    if (self.destroyed) return cb();\n    var buffer = new Buffer(toRead);\n    fs.read(self.context.fd, buffer, 0, toRead, self.pos, function(err, bytesRead) {\n      if (err) {\n        self.destroy(err);\n      } else if (bytesRead === 0) {\n        self.destroyed = true;\n        self.push(null);\n        self.context.unref();\n      } else {\n        self.pos += bytesRead;\n        self.push(buffer.slice(0, bytesRead));\n      }\n      cb();\n    });\n  });\n};\n\nReadStream.prototype.destroy = function(err) {\n  if (this.destroyed) return;\n  err = err || new Error(\"stream destroyed\");\n  this.destroyed = true;\n  this.emit('error', err);\n  this.context.unref();\n};\n\nutil.inherits(WriteStream, Writable);\nfunction WriteStream(context, options) {\n  options = options || {};\n  Writable.call(this, options);\n\n  this.context = context;\n  this.context.ref();\n\n  this.start = options.start || 0;\n  this.endOffset = (options.end == null) ? Infinity : +options.end;\n  this.bytesWritten = 0;\n  this.pos = this.start;\n  this.destroyed = false;\n\n  this.on('finish', this.destroy.bind(this));\n}\n\nWriteStream.prototype._write = function(buffer, encoding, callback) {\n  var self = this;\n  if (self.destroyed) return;\n\n  if (self.pos + buffer.length > self.endOffset) {\n    var err = new Error(\"maximum file length exceeded\");\n    err.code = 'ETOOBIG';\n    self.destroy();\n    callback(err);\n    return;\n  }\n  self.context.pend.go(function(cb) {\n    if (self.destroyed) return cb();\n    fs.write(self.context.fd, buffer, 0, buffer.length, self.pos, function(err, bytes) {\n      if (err) {\n        self.destroy();\n        cb();\n        callback(err);\n      } else {\n        self.bytesWritten += bytes;\n        self.pos += bytes;\n        self.emit('progress');\n        cb();\n        callback();\n      }\n    });\n  });\n};\n\nWriteStream.prototype.destroy = function() {\n  if (this.destroyed) return;\n  this.destroyed = true;\n  this.context.unref();\n};\n\nutil.inherits(BufferSlicer, EventEmitter);\nfunction BufferSlicer(buffer, options) {\n  EventEmitter.call(this);\n\n  options = options || {};\n  this.refCount = 0;\n  this.buffer = buffer;\n  this.maxChunkSize = options.maxChunkSize || Number.MAX_SAFE_INTEGER;\n}\n\nBufferSlicer.prototype.read = function(buffer, offset, length, position, callback) {\n  var end = position + length;\n  var delta = end - this.buffer.length;\n  var written = (delta > 0) ? delta : length;\n  this.buffer.copy(buffer, offset, position, end);\n  setImmediate(function() {\n    callback(null, written);\n  });\n};\n\nBufferSlicer.prototype.write = function(buffer, offset, length, position, callback) {\n  buffer.copy(this.buffer, position, offset, offset + length);\n  setImmediate(function() {\n    callback(null, length, buffer);\n  });\n};\n\nBufferSlicer.prototype.createReadStream = function(options) {\n  options = options || {};\n  var readStream = new PassThrough(options);\n  readStream.destroyed = false;\n  readStream.start = options.start || 0;\n  readStream.endOffset = options.end;\n  // by the time this function returns, we'll be done.\n  readStream.pos = readStream.endOffset || this.buffer.length;\n\n  // respect the maxChunkSize option to slice up the chunk into smaller pieces.\n  var entireSlice = this.buffer.slice(readStream.start, readStream.pos);\n  var offset = 0;\n  while (true) {\n    var nextOffset = offset + this.maxChunkSize;\n    if (nextOffset >= entireSlice.length) {\n      // last chunk\n      if (offset < entireSlice.length) {\n        readStream.write(entireSlice.slice(offset, entireSlice.length));\n      }\n      break;\n    }\n    readStream.write(entireSlice.slice(offset, nextOffset));\n    offset = nextOffset;\n  }\n\n  readStream.end();\n  readStream.destroy = function() {\n    readStream.destroyed = true;\n  };\n  return readStream;\n};\n\nBufferSlicer.prototype.createWriteStream = function(options) {\n  var bufferSlicer = this;\n  options = options || {};\n  var writeStream = new Writable(options);\n  writeStream.start = options.start || 0;\n  writeStream.endOffset = (options.end == null) ? this.buffer.length : +options.end;\n  writeStream.bytesWritten = 0;\n  writeStream.pos = writeStream.start;\n  writeStream.destroyed = false;\n  writeStream._write = function(buffer, encoding, callback) {\n    if (writeStream.destroyed) return;\n\n    var end = writeStream.pos + buffer.length;\n    if (end > writeStream.endOffset) {\n      var err = new Error(\"maximum file length exceeded\");\n      err.code = 'ETOOBIG';\n      writeStream.destroyed = true;\n      callback(err);\n      return;\n    }\n    buffer.copy(bufferSlicer.buffer, writeStream.pos, 0, buffer.length);\n\n    writeStream.bytesWritten += buffer.length;\n    writeStream.pos = end;\n    writeStream.emit('progress');\n    callback();\n  };\n  writeStream.destroy = function() {\n    writeStream.destroyed = true;\n  };\n  return writeStream;\n};\n\nBufferSlicer.prototype.ref = function() {\n  this.refCount += 1;\n};\n\nBufferSlicer.prototype.unref = function() {\n  this.refCount -= 1;\n\n  if (this.refCount < 0) {\n    throw new Error(\"invalid unref\");\n  }\n};\n\nfunction createFromBuffer(buffer, options) {\n  return new BufferSlicer(buffer, options);\n}\n\nfunction createFromFd(fd, options) {\n  return new FdSlicer(fd, options);\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}