format: prettify entire project
This commit is contained in:
339
node_modules/tar-stream/extract.js
generated
vendored
339
node_modules/tar-stream/extract.js
generated
vendored
@ -1,257 +1,268 @@
|
||||
var util = require('util')
|
||||
var bl = require('bl')
|
||||
var headers = require('./headers')
|
||||
var util = require('util');
|
||||
var bl = require('bl');
|
||||
var headers = require('./headers');
|
||||
|
||||
var Writable = require('readable-stream').Writable
|
||||
var PassThrough = require('readable-stream').PassThrough
|
||||
var Writable = require('readable-stream').Writable;
|
||||
var PassThrough = require('readable-stream').PassThrough;
|
||||
|
||||
var noop = function () {}
|
||||
var noop = function () {};
|
||||
|
||||
var overflow = function (size) {
|
||||
size &= 511
|
||||
return size && 512 - size
|
||||
}
|
||||
size &= 511;
|
||||
return size && 512 - size;
|
||||
};
|
||||
|
||||
var emptyStream = function (self, offset) {
|
||||
var s = new Source(self, offset)
|
||||
s.end()
|
||||
return s
|
||||
}
|
||||
var s = new Source(self, offset);
|
||||
s.end();
|
||||
return s;
|
||||
};
|
||||
|
||||
var mixinPax = function (header, pax) {
|
||||
if (pax.path) header.name = pax.path
|
||||
if (pax.linkpath) header.linkname = pax.linkpath
|
||||
if (pax.size) header.size = parseInt(pax.size, 10)
|
||||
header.pax = pax
|
||||
return header
|
||||
}
|
||||
if (pax.path) header.name = pax.path;
|
||||
if (pax.linkpath) header.linkname = pax.linkpath;
|
||||
if (pax.size) header.size = parseInt(pax.size, 10);
|
||||
header.pax = pax;
|
||||
return header;
|
||||
};
|
||||
|
||||
var Source = function (self, offset) {
|
||||
this._parent = self
|
||||
this.offset = offset
|
||||
PassThrough.call(this, { autoDestroy: false })
|
||||
}
|
||||
this._parent = self;
|
||||
this.offset = offset;
|
||||
PassThrough.call(this, { autoDestroy: false });
|
||||
};
|
||||
|
||||
util.inherits(Source, PassThrough)
|
||||
util.inherits(Source, PassThrough);
|
||||
|
||||
Source.prototype.destroy = function (err) {
|
||||
this._parent.destroy(err)
|
||||
}
|
||||
this._parent.destroy(err);
|
||||
};
|
||||
|
||||
var Extract = function (opts) {
|
||||
if (!(this instanceof Extract)) return new Extract(opts)
|
||||
Writable.call(this, opts)
|
||||
if (!(this instanceof Extract)) return new Extract(opts);
|
||||
Writable.call(this, opts);
|
||||
|
||||
opts = opts || {}
|
||||
opts = opts || {};
|
||||
|
||||
this._offset = 0
|
||||
this._buffer = bl()
|
||||
this._missing = 0
|
||||
this._partial = false
|
||||
this._onparse = noop
|
||||
this._header = null
|
||||
this._stream = null
|
||||
this._overflow = null
|
||||
this._cb = null
|
||||
this._locked = false
|
||||
this._destroyed = false
|
||||
this._pax = null
|
||||
this._paxGlobal = null
|
||||
this._gnuLongPath = null
|
||||
this._gnuLongLinkPath = null
|
||||
this._offset = 0;
|
||||
this._buffer = bl();
|
||||
this._missing = 0;
|
||||
this._partial = false;
|
||||
this._onparse = noop;
|
||||
this._header = null;
|
||||
this._stream = null;
|
||||
this._overflow = null;
|
||||
this._cb = null;
|
||||
this._locked = false;
|
||||
this._destroyed = false;
|
||||
this._pax = null;
|
||||
this._paxGlobal = null;
|
||||
this._gnuLongPath = null;
|
||||
this._gnuLongLinkPath = null;
|
||||
|
||||
var self = this
|
||||
var b = self._buffer
|
||||
var self = this;
|
||||
var b = self._buffer;
|
||||
|
||||
var oncontinue = function () {
|
||||
self._continue()
|
||||
}
|
||||
self._continue();
|
||||
};
|
||||
|
||||
var onunlock = function (err) {
|
||||
self._locked = false
|
||||
if (err) return self.destroy(err)
|
||||
if (!self._stream) oncontinue()
|
||||
}
|
||||
self._locked = false;
|
||||
if (err) return self.destroy(err);
|
||||
if (!self._stream) oncontinue();
|
||||
};
|
||||
|
||||
var onstreamend = function () {
|
||||
self._stream = null
|
||||
var drain = overflow(self._header.size)
|
||||
if (drain) self._parse(drain, ondrain)
|
||||
else self._parse(512, onheader)
|
||||
if (!self._locked) oncontinue()
|
||||
}
|
||||
self._stream = null;
|
||||
var drain = overflow(self._header.size);
|
||||
if (drain) self._parse(drain, ondrain);
|
||||
else self._parse(512, onheader);
|
||||
if (!self._locked) oncontinue();
|
||||
};
|
||||
|
||||
var ondrain = function () {
|
||||
self._buffer.consume(overflow(self._header.size))
|
||||
self._parse(512, onheader)
|
||||
oncontinue()
|
||||
}
|
||||
self._buffer.consume(overflow(self._header.size));
|
||||
self._parse(512, onheader);
|
||||
oncontinue();
|
||||
};
|
||||
|
||||
var onpaxglobalheader = function () {
|
||||
var size = self._header.size
|
||||
self._paxGlobal = headers.decodePax(b.slice(0, size))
|
||||
b.consume(size)
|
||||
onstreamend()
|
||||
}
|
||||
var size = self._header.size;
|
||||
self._paxGlobal = headers.decodePax(b.slice(0, size));
|
||||
b.consume(size);
|
||||
onstreamend();
|
||||
};
|
||||
|
||||
var onpaxheader = function () {
|
||||
var size = self._header.size
|
||||
self._pax = headers.decodePax(b.slice(0, size))
|
||||
if (self._paxGlobal) self._pax = Object.assign({}, self._paxGlobal, self._pax)
|
||||
b.consume(size)
|
||||
onstreamend()
|
||||
}
|
||||
var size = self._header.size;
|
||||
self._pax = headers.decodePax(b.slice(0, size));
|
||||
if (self._paxGlobal)
|
||||
self._pax = Object.assign({}, self._paxGlobal, self._pax);
|
||||
b.consume(size);
|
||||
onstreamend();
|
||||
};
|
||||
|
||||
var ongnulongpath = function () {
|
||||
var size = self._header.size
|
||||
this._gnuLongPath = headers.decodeLongPath(b.slice(0, size), opts.filenameEncoding)
|
||||
b.consume(size)
|
||||
onstreamend()
|
||||
}
|
||||
var size = self._header.size;
|
||||
this._gnuLongPath = headers.decodeLongPath(
|
||||
b.slice(0, size),
|
||||
opts.filenameEncoding
|
||||
);
|
||||
b.consume(size);
|
||||
onstreamend();
|
||||
};
|
||||
|
||||
var ongnulonglinkpath = function () {
|
||||
var size = self._header.size
|
||||
this._gnuLongLinkPath = headers.decodeLongPath(b.slice(0, size), opts.filenameEncoding)
|
||||
b.consume(size)
|
||||
onstreamend()
|
||||
}
|
||||
var size = self._header.size;
|
||||
this._gnuLongLinkPath = headers.decodeLongPath(
|
||||
b.slice(0, size),
|
||||
opts.filenameEncoding
|
||||
);
|
||||
b.consume(size);
|
||||
onstreamend();
|
||||
};
|
||||
|
||||
var onheader = function () {
|
||||
var offset = self._offset
|
||||
var header
|
||||
var offset = self._offset;
|
||||
var header;
|
||||
try {
|
||||
header = self._header = headers.decode(b.slice(0, 512), opts.filenameEncoding, opts.allowUnknownFormat)
|
||||
header = self._header = headers.decode(
|
||||
b.slice(0, 512),
|
||||
opts.filenameEncoding,
|
||||
opts.allowUnknownFormat
|
||||
);
|
||||
} catch (err) {
|
||||
self.emit('error', err)
|
||||
self.emit('error', err);
|
||||
}
|
||||
b.consume(512)
|
||||
b.consume(512);
|
||||
|
||||
if (!header) {
|
||||
self._parse(512, onheader)
|
||||
oncontinue()
|
||||
return
|
||||
self._parse(512, onheader);
|
||||
oncontinue();
|
||||
return;
|
||||
}
|
||||
if (header.type === 'gnu-long-path') {
|
||||
self._parse(header.size, ongnulongpath)
|
||||
oncontinue()
|
||||
return
|
||||
self._parse(header.size, ongnulongpath);
|
||||
oncontinue();
|
||||
return;
|
||||
}
|
||||
if (header.type === 'gnu-long-link-path') {
|
||||
self._parse(header.size, ongnulonglinkpath)
|
||||
oncontinue()
|
||||
return
|
||||
self._parse(header.size, ongnulonglinkpath);
|
||||
oncontinue();
|
||||
return;
|
||||
}
|
||||
if (header.type === 'pax-global-header') {
|
||||
self._parse(header.size, onpaxglobalheader)
|
||||
oncontinue()
|
||||
return
|
||||
self._parse(header.size, onpaxglobalheader);
|
||||
oncontinue();
|
||||
return;
|
||||
}
|
||||
if (header.type === 'pax-header') {
|
||||
self._parse(header.size, onpaxheader)
|
||||
oncontinue()
|
||||
return
|
||||
self._parse(header.size, onpaxheader);
|
||||
oncontinue();
|
||||
return;
|
||||
}
|
||||
|
||||
if (self._gnuLongPath) {
|
||||
header.name = self._gnuLongPath
|
||||
self._gnuLongPath = null
|
||||
header.name = self._gnuLongPath;
|
||||
self._gnuLongPath = null;
|
||||
}
|
||||
|
||||
if (self._gnuLongLinkPath) {
|
||||
header.linkname = self._gnuLongLinkPath
|
||||
self._gnuLongLinkPath = null
|
||||
header.linkname = self._gnuLongLinkPath;
|
||||
self._gnuLongLinkPath = null;
|
||||
}
|
||||
|
||||
if (self._pax) {
|
||||
self._header = header = mixinPax(header, self._pax)
|
||||
self._pax = null
|
||||
self._header = header = mixinPax(header, self._pax);
|
||||
self._pax = null;
|
||||
}
|
||||
|
||||
self._locked = true
|
||||
self._locked = true;
|
||||
|
||||
if (!header.size || header.type === 'directory') {
|
||||
self._parse(512, onheader)
|
||||
self.emit('entry', header, emptyStream(self, offset), onunlock)
|
||||
return
|
||||
self._parse(512, onheader);
|
||||
self.emit('entry', header, emptyStream(self, offset), onunlock);
|
||||
return;
|
||||
}
|
||||
|
||||
self._stream = new Source(self, offset)
|
||||
self._stream = new Source(self, offset);
|
||||
|
||||
self.emit('entry', header, self._stream, onunlock)
|
||||
self._parse(header.size, onstreamend)
|
||||
oncontinue()
|
||||
}
|
||||
self.emit('entry', header, self._stream, onunlock);
|
||||
self._parse(header.size, onstreamend);
|
||||
oncontinue();
|
||||
};
|
||||
|
||||
this._onheader = onheader
|
||||
this._parse(512, onheader)
|
||||
}
|
||||
this._onheader = onheader;
|
||||
this._parse(512, onheader);
|
||||
};
|
||||
|
||||
util.inherits(Extract, Writable)
|
||||
util.inherits(Extract, Writable);
|
||||
|
||||
Extract.prototype.destroy = function (err) {
|
||||
if (this._destroyed) return
|
||||
this._destroyed = true
|
||||
if (this._destroyed) return;
|
||||
this._destroyed = true;
|
||||
|
||||
if (err) this.emit('error', err)
|
||||
this.emit('close')
|
||||
if (this._stream) this._stream.emit('close')
|
||||
}
|
||||
if (err) this.emit('error', err);
|
||||
this.emit('close');
|
||||
if (this._stream) this._stream.emit('close');
|
||||
};
|
||||
|
||||
Extract.prototype._parse = function (size, onparse) {
|
||||
if (this._destroyed) return
|
||||
this._offset += size
|
||||
this._missing = size
|
||||
if (onparse === this._onheader) this._partial = false
|
||||
this._onparse = onparse
|
||||
}
|
||||
if (this._destroyed) return;
|
||||
this._offset += size;
|
||||
this._missing = size;
|
||||
if (onparse === this._onheader) this._partial = false;
|
||||
this._onparse = onparse;
|
||||
};
|
||||
|
||||
Extract.prototype._continue = function () {
|
||||
if (this._destroyed) return
|
||||
var cb = this._cb
|
||||
this._cb = noop
|
||||
if (this._overflow) this._write(this._overflow, undefined, cb)
|
||||
else cb()
|
||||
}
|
||||
if (this._destroyed) return;
|
||||
var cb = this._cb;
|
||||
this._cb = noop;
|
||||
if (this._overflow) this._write(this._overflow, undefined, cb);
|
||||
else cb();
|
||||
};
|
||||
|
||||
Extract.prototype._write = function (data, enc, cb) {
|
||||
if (this._destroyed) return
|
||||
if (this._destroyed) return;
|
||||
|
||||
var s = this._stream
|
||||
var b = this._buffer
|
||||
var missing = this._missing
|
||||
if (data.length) this._partial = true
|
||||
var s = this._stream;
|
||||
var b = this._buffer;
|
||||
var missing = this._missing;
|
||||
if (data.length) this._partial = true;
|
||||
|
||||
// we do not reach end-of-chunk now. just forward it
|
||||
|
||||
if (data.length < missing) {
|
||||
this._missing -= data.length
|
||||
this._overflow = null
|
||||
if (s) return s.write(data, cb)
|
||||
b.append(data)
|
||||
return cb()
|
||||
this._missing -= data.length;
|
||||
this._overflow = null;
|
||||
if (s) return s.write(data, cb);
|
||||
b.append(data);
|
||||
return cb();
|
||||
}
|
||||
|
||||
// end-of-chunk. the parser should call cb.
|
||||
|
||||
this._cb = cb
|
||||
this._missing = 0
|
||||
this._cb = cb;
|
||||
this._missing = 0;
|
||||
|
||||
var overflow = null
|
||||
var overflow = null;
|
||||
if (data.length > missing) {
|
||||
overflow = data.slice(missing)
|
||||
data = data.slice(0, missing)
|
||||
overflow = data.slice(missing);
|
||||
data = data.slice(0, missing);
|
||||
}
|
||||
|
||||
if (s) s.end(data)
|
||||
else b.append(data)
|
||||
if (s) s.end(data);
|
||||
else b.append(data);
|
||||
|
||||
this._overflow = overflow
|
||||
this._onparse()
|
||||
}
|
||||
this._overflow = overflow;
|
||||
this._onparse();
|
||||
};
|
||||
|
||||
Extract.prototype._final = function (cb) {
|
||||
if (this._partial) return this.destroy(new Error('Unexpected end of data'))
|
||||
cb()
|
||||
}
|
||||
if (this._partial) return this.destroy(new Error('Unexpected end of data'));
|
||||
cb();
|
||||
};
|
||||
|
||||
module.exports = Extract
|
||||
module.exports = Extract;
|
||||
|
335
node_modules/tar-stream/headers.js
generated
vendored
335
node_modules/tar-stream/headers.js
generated
vendored
@ -1,282 +1,297 @@
|
||||
var alloc = Buffer.alloc
|
||||
var alloc = Buffer.alloc;
|
||||
|
||||
var ZEROS = '0000000000000000000'
|
||||
var SEVENS = '7777777777777777777'
|
||||
var ZERO_OFFSET = '0'.charCodeAt(0)
|
||||
var USTAR_MAGIC = Buffer.from('ustar\x00', 'binary')
|
||||
var USTAR_VER = Buffer.from('00', 'binary')
|
||||
var GNU_MAGIC = Buffer.from('ustar\x20', 'binary')
|
||||
var GNU_VER = Buffer.from('\x20\x00', 'binary')
|
||||
var MASK = parseInt('7777', 8)
|
||||
var MAGIC_OFFSET = 257
|
||||
var VERSION_OFFSET = 263
|
||||
var ZEROS = '0000000000000000000';
|
||||
var SEVENS = '7777777777777777777';
|
||||
var ZERO_OFFSET = '0'.charCodeAt(0);
|
||||
var USTAR_MAGIC = Buffer.from('ustar\x00', 'binary');
|
||||
var USTAR_VER = Buffer.from('00', 'binary');
|
||||
var GNU_MAGIC = Buffer.from('ustar\x20', 'binary');
|
||||
var GNU_VER = Buffer.from('\x20\x00', 'binary');
|
||||
var MASK = parseInt('7777', 8);
|
||||
var MAGIC_OFFSET = 257;
|
||||
var VERSION_OFFSET = 263;
|
||||
|
||||
var clamp = function (index, len, defaultValue) {
|
||||
if (typeof index !== 'number') return defaultValue
|
||||
index = ~~index // Coerce to integer.
|
||||
if (index >= len) return len
|
||||
if (index >= 0) return index
|
||||
index += len
|
||||
if (index >= 0) return index
|
||||
return 0
|
||||
}
|
||||
if (typeof index !== 'number') return defaultValue;
|
||||
index = ~~index; // Coerce to integer.
|
||||
if (index >= len) return len;
|
||||
if (index >= 0) return index;
|
||||
index += len;
|
||||
if (index >= 0) return index;
|
||||
return 0;
|
||||
};
|
||||
|
||||
var toType = function (flag) {
|
||||
switch (flag) {
|
||||
case 0:
|
||||
return 'file'
|
||||
return 'file';
|
||||
case 1:
|
||||
return 'link'
|
||||
return 'link';
|
||||
case 2:
|
||||
return 'symlink'
|
||||
return 'symlink';
|
||||
case 3:
|
||||
return 'character-device'
|
||||
return 'character-device';
|
||||
case 4:
|
||||
return 'block-device'
|
||||
return 'block-device';
|
||||
case 5:
|
||||
return 'directory'
|
||||
return 'directory';
|
||||
case 6:
|
||||
return 'fifo'
|
||||
return 'fifo';
|
||||
case 7:
|
||||
return 'contiguous-file'
|
||||
return 'contiguous-file';
|
||||
case 72:
|
||||
return 'pax-header'
|
||||
return 'pax-header';
|
||||
case 55:
|
||||
return 'pax-global-header'
|
||||
return 'pax-global-header';
|
||||
case 27:
|
||||
return 'gnu-long-link-path'
|
||||
return 'gnu-long-link-path';
|
||||
case 28:
|
||||
case 30:
|
||||
return 'gnu-long-path'
|
||||
return 'gnu-long-path';
|
||||
}
|
||||
|
||||
return null
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
var toTypeflag = function (flag) {
|
||||
switch (flag) {
|
||||
case 'file':
|
||||
return 0
|
||||
return 0;
|
||||
case 'link':
|
||||
return 1
|
||||
return 1;
|
||||
case 'symlink':
|
||||
return 2
|
||||
return 2;
|
||||
case 'character-device':
|
||||
return 3
|
||||
return 3;
|
||||
case 'block-device':
|
||||
return 4
|
||||
return 4;
|
||||
case 'directory':
|
||||
return 5
|
||||
return 5;
|
||||
case 'fifo':
|
||||
return 6
|
||||
return 6;
|
||||
case 'contiguous-file':
|
||||
return 7
|
||||
return 7;
|
||||
case 'pax-header':
|
||||
return 72
|
||||
return 72;
|
||||
}
|
||||
|
||||
return 0
|
||||
}
|
||||
return 0;
|
||||
};
|
||||
|
||||
var indexOf = function (block, num, offset, end) {
|
||||
for (; offset < end; offset++) {
|
||||
if (block[offset] === num) return offset
|
||||
if (block[offset] === num) return offset;
|
||||
}
|
||||
return end
|
||||
}
|
||||
return end;
|
||||
};
|
||||
|
||||
var cksum = function (block) {
|
||||
var sum = 8 * 32
|
||||
for (var i = 0; i < 148; i++) sum += block[i]
|
||||
for (var j = 156; j < 512; j++) sum += block[j]
|
||||
return sum
|
||||
}
|
||||
var sum = 8 * 32;
|
||||
for (var i = 0; i < 148; i++) sum += block[i];
|
||||
for (var j = 156; j < 512; j++) sum += block[j];
|
||||
return sum;
|
||||
};
|
||||
|
||||
var encodeOct = function (val, n) {
|
||||
val = val.toString(8)
|
||||
if (val.length > n) return SEVENS.slice(0, n) + ' '
|
||||
else return ZEROS.slice(0, n - val.length) + val + ' '
|
||||
}
|
||||
val = val.toString(8);
|
||||
if (val.length > n) return SEVENS.slice(0, n) + ' ';
|
||||
else return ZEROS.slice(0, n - val.length) + val + ' ';
|
||||
};
|
||||
|
||||
/* Copied from the node-tar repo and modified to meet
|
||||
* tar-stream coding standard.
|
||||
*
|
||||
* Source: https://github.com/npm/node-tar/blob/51b6627a1f357d2eb433e7378e5f05e83b7aa6cd/lib/header.js#L349
|
||||
*/
|
||||
function parse256 (buf) {
|
||||
function parse256(buf) {
|
||||
// first byte MUST be either 80 or FF
|
||||
// 80 for positive, FF for 2's comp
|
||||
var positive
|
||||
if (buf[0] === 0x80) positive = true
|
||||
else if (buf[0] === 0xFF) positive = false
|
||||
else return null
|
||||
var positive;
|
||||
if (buf[0] === 0x80) positive = true;
|
||||
else if (buf[0] === 0xff) positive = false;
|
||||
else return null;
|
||||
|
||||
// build up a base-256 tuple from the least sig to the highest
|
||||
var tuple = []
|
||||
var tuple = [];
|
||||
for (var i = buf.length - 1; i > 0; i--) {
|
||||
var byte = buf[i]
|
||||
if (positive) tuple.push(byte)
|
||||
else tuple.push(0xFF - byte)
|
||||
var byte = buf[i];
|
||||
if (positive) tuple.push(byte);
|
||||
else tuple.push(0xff - byte);
|
||||
}
|
||||
|
||||
var sum = 0
|
||||
var l = tuple.length
|
||||
var sum = 0;
|
||||
var l = tuple.length;
|
||||
for (i = 0; i < l; i++) {
|
||||
sum += tuple[i] * Math.pow(256, i)
|
||||
sum += tuple[i] * Math.pow(256, i);
|
||||
}
|
||||
|
||||
return positive ? sum : -1 * sum
|
||||
return positive ? sum : -1 * sum;
|
||||
}
|
||||
|
||||
var decodeOct = function (val, offset, length) {
|
||||
val = val.slice(offset, offset + length)
|
||||
offset = 0
|
||||
val = val.slice(offset, offset + length);
|
||||
offset = 0;
|
||||
|
||||
// If prefixed with 0x80 then parse as a base-256 integer
|
||||
if (val[offset] & 0x80) {
|
||||
return parse256(val)
|
||||
return parse256(val);
|
||||
} else {
|
||||
// Older versions of tar can prefix with spaces
|
||||
while (offset < val.length && val[offset] === 32) offset++
|
||||
var end = clamp(indexOf(val, 32, offset, val.length), val.length, val.length)
|
||||
while (offset < end && val[offset] === 0) offset++
|
||||
if (end === offset) return 0
|
||||
return parseInt(val.slice(offset, end).toString(), 8)
|
||||
while (offset < val.length && val[offset] === 32) offset++;
|
||||
var end = clamp(
|
||||
indexOf(val, 32, offset, val.length),
|
||||
val.length,
|
||||
val.length
|
||||
);
|
||||
while (offset < end && val[offset] === 0) offset++;
|
||||
if (end === offset) return 0;
|
||||
return parseInt(val.slice(offset, end).toString(), 8);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var decodeStr = function (val, offset, length, encoding) {
|
||||
return val.slice(offset, indexOf(val, 0, offset, offset + length)).toString(encoding)
|
||||
}
|
||||
return val
|
||||
.slice(offset, indexOf(val, 0, offset, offset + length))
|
||||
.toString(encoding);
|
||||
};
|
||||
|
||||
var addLength = function (str) {
|
||||
var len = Buffer.byteLength(str)
|
||||
var digits = Math.floor(Math.log(len) / Math.log(10)) + 1
|
||||
if (len + digits >= Math.pow(10, digits)) digits++
|
||||
var len = Buffer.byteLength(str);
|
||||
var digits = Math.floor(Math.log(len) / Math.log(10)) + 1;
|
||||
if (len + digits >= Math.pow(10, digits)) digits++;
|
||||
|
||||
return (len + digits) + str
|
||||
}
|
||||
return len + digits + str;
|
||||
};
|
||||
|
||||
exports.decodeLongPath = function (buf, encoding) {
|
||||
return decodeStr(buf, 0, buf.length, encoding)
|
||||
}
|
||||
return decodeStr(buf, 0, buf.length, encoding);
|
||||
};
|
||||
|
||||
exports.encodePax = function (opts) { // TODO: encode more stuff in pax
|
||||
var result = ''
|
||||
if (opts.name) result += addLength(' path=' + opts.name + '\n')
|
||||
if (opts.linkname) result += addLength(' linkpath=' + opts.linkname + '\n')
|
||||
var pax = opts.pax
|
||||
exports.encodePax = function (opts) {
|
||||
// TODO: encode more stuff in pax
|
||||
var result = '';
|
||||
if (opts.name) result += addLength(' path=' + opts.name + '\n');
|
||||
if (opts.linkname) result += addLength(' linkpath=' + opts.linkname + '\n');
|
||||
var pax = opts.pax;
|
||||
if (pax) {
|
||||
for (var key in pax) {
|
||||
result += addLength(' ' + key + '=' + pax[key] + '\n')
|
||||
result += addLength(' ' + key + '=' + pax[key] + '\n');
|
||||
}
|
||||
}
|
||||
return Buffer.from(result)
|
||||
}
|
||||
return Buffer.from(result);
|
||||
};
|
||||
|
||||
exports.decodePax = function (buf) {
|
||||
var result = {}
|
||||
var result = {};
|
||||
|
||||
while (buf.length) {
|
||||
var i = 0
|
||||
while (i < buf.length && buf[i] !== 32) i++
|
||||
var len = parseInt(buf.slice(0, i).toString(), 10)
|
||||
if (!len) return result
|
||||
var i = 0;
|
||||
while (i < buf.length && buf[i] !== 32) i++;
|
||||
var len = parseInt(buf.slice(0, i).toString(), 10);
|
||||
if (!len) return result;
|
||||
|
||||
var b = buf.slice(i + 1, len - 1).toString()
|
||||
var keyIndex = b.indexOf('=')
|
||||
if (keyIndex === -1) return result
|
||||
result[b.slice(0, keyIndex)] = b.slice(keyIndex + 1)
|
||||
var b = buf.slice(i + 1, len - 1).toString();
|
||||
var keyIndex = b.indexOf('=');
|
||||
if (keyIndex === -1) return result;
|
||||
result[b.slice(0, keyIndex)] = b.slice(keyIndex + 1);
|
||||
|
||||
buf = buf.slice(len)
|
||||
buf = buf.slice(len);
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
exports.encode = function (opts) {
|
||||
var buf = alloc(512)
|
||||
var name = opts.name
|
||||
var prefix = ''
|
||||
var buf = alloc(512);
|
||||
var name = opts.name;
|
||||
var prefix = '';
|
||||
|
||||
if (opts.typeflag === 5 && name[name.length - 1] !== '/') name += '/'
|
||||
if (Buffer.byteLength(name) !== name.length) return null // utf-8
|
||||
if (opts.typeflag === 5 && name[name.length - 1] !== '/') name += '/';
|
||||
if (Buffer.byteLength(name) !== name.length) return null; // utf-8
|
||||
|
||||
while (Buffer.byteLength(name) > 100) {
|
||||
var i = name.indexOf('/')
|
||||
if (i === -1) return null
|
||||
prefix += prefix ? '/' + name.slice(0, i) : name.slice(0, i)
|
||||
name = name.slice(i + 1)
|
||||
var i = name.indexOf('/');
|
||||
if (i === -1) return null;
|
||||
prefix += prefix ? '/' + name.slice(0, i) : name.slice(0, i);
|
||||
name = name.slice(i + 1);
|
||||
}
|
||||
|
||||
if (Buffer.byteLength(name) > 100 || Buffer.byteLength(prefix) > 155) return null
|
||||
if (opts.linkname && Buffer.byteLength(opts.linkname) > 100) return null
|
||||
if (Buffer.byteLength(name) > 100 || Buffer.byteLength(prefix) > 155)
|
||||
return null;
|
||||
if (opts.linkname && Buffer.byteLength(opts.linkname) > 100) return null;
|
||||
|
||||
buf.write(name)
|
||||
buf.write(encodeOct(opts.mode & MASK, 6), 100)
|
||||
buf.write(encodeOct(opts.uid, 6), 108)
|
||||
buf.write(encodeOct(opts.gid, 6), 116)
|
||||
buf.write(encodeOct(opts.size, 11), 124)
|
||||
buf.write(encodeOct((opts.mtime.getTime() / 1000) | 0, 11), 136)
|
||||
buf.write(name);
|
||||
buf.write(encodeOct(opts.mode & MASK, 6), 100);
|
||||
buf.write(encodeOct(opts.uid, 6), 108);
|
||||
buf.write(encodeOct(opts.gid, 6), 116);
|
||||
buf.write(encodeOct(opts.size, 11), 124);
|
||||
buf.write(encodeOct((opts.mtime.getTime() / 1000) | 0, 11), 136);
|
||||
|
||||
buf[156] = ZERO_OFFSET + toTypeflag(opts.type)
|
||||
buf[156] = ZERO_OFFSET + toTypeflag(opts.type);
|
||||
|
||||
if (opts.linkname) buf.write(opts.linkname, 157)
|
||||
if (opts.linkname) buf.write(opts.linkname, 157);
|
||||
|
||||
USTAR_MAGIC.copy(buf, MAGIC_OFFSET)
|
||||
USTAR_VER.copy(buf, VERSION_OFFSET)
|
||||
if (opts.uname) buf.write(opts.uname, 265)
|
||||
if (opts.gname) buf.write(opts.gname, 297)
|
||||
buf.write(encodeOct(opts.devmajor || 0, 6), 329)
|
||||
buf.write(encodeOct(opts.devminor || 0, 6), 337)
|
||||
USTAR_MAGIC.copy(buf, MAGIC_OFFSET);
|
||||
USTAR_VER.copy(buf, VERSION_OFFSET);
|
||||
if (opts.uname) buf.write(opts.uname, 265);
|
||||
if (opts.gname) buf.write(opts.gname, 297);
|
||||
buf.write(encodeOct(opts.devmajor || 0, 6), 329);
|
||||
buf.write(encodeOct(opts.devminor || 0, 6), 337);
|
||||
|
||||
if (prefix) buf.write(prefix, 345)
|
||||
if (prefix) buf.write(prefix, 345);
|
||||
|
||||
buf.write(encodeOct(cksum(buf), 6), 148)
|
||||
buf.write(encodeOct(cksum(buf), 6), 148);
|
||||
|
||||
return buf
|
||||
}
|
||||
return buf;
|
||||
};
|
||||
|
||||
exports.decode = function (buf, filenameEncoding, allowUnknownFormat) {
|
||||
var typeflag = buf[156] === 0 ? 0 : buf[156] - ZERO_OFFSET
|
||||
var typeflag = buf[156] === 0 ? 0 : buf[156] - ZERO_OFFSET;
|
||||
|
||||
var name = decodeStr(buf, 0, 100, filenameEncoding)
|
||||
var mode = decodeOct(buf, 100, 8)
|
||||
var uid = decodeOct(buf, 108, 8)
|
||||
var gid = decodeOct(buf, 116, 8)
|
||||
var size = decodeOct(buf, 124, 12)
|
||||
var mtime = decodeOct(buf, 136, 12)
|
||||
var type = toType(typeflag)
|
||||
var linkname = buf[157] === 0 ? null : decodeStr(buf, 157, 100, filenameEncoding)
|
||||
var uname = decodeStr(buf, 265, 32)
|
||||
var gname = decodeStr(buf, 297, 32)
|
||||
var devmajor = decodeOct(buf, 329, 8)
|
||||
var devminor = decodeOct(buf, 337, 8)
|
||||
var name = decodeStr(buf, 0, 100, filenameEncoding);
|
||||
var mode = decodeOct(buf, 100, 8);
|
||||
var uid = decodeOct(buf, 108, 8);
|
||||
var gid = decodeOct(buf, 116, 8);
|
||||
var size = decodeOct(buf, 124, 12);
|
||||
var mtime = decodeOct(buf, 136, 12);
|
||||
var type = toType(typeflag);
|
||||
var linkname =
|
||||
buf[157] === 0 ? null : decodeStr(buf, 157, 100, filenameEncoding);
|
||||
var uname = decodeStr(buf, 265, 32);
|
||||
var gname = decodeStr(buf, 297, 32);
|
||||
var devmajor = decodeOct(buf, 329, 8);
|
||||
var devminor = decodeOct(buf, 337, 8);
|
||||
|
||||
var c = cksum(buf)
|
||||
var c = cksum(buf);
|
||||
|
||||
// checksum is still initial value if header was null.
|
||||
if (c === 8 * 32) return null
|
||||
if (c === 8 * 32) return null;
|
||||
|
||||
// valid checksum
|
||||
if (c !== decodeOct(buf, 148, 8)) throw new Error('Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?')
|
||||
if (c !== decodeOct(buf, 148, 8))
|
||||
throw new Error(
|
||||
'Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?'
|
||||
);
|
||||
|
||||
if (USTAR_MAGIC.compare(buf, MAGIC_OFFSET, MAGIC_OFFSET + 6) === 0) {
|
||||
// ustar (posix) format.
|
||||
// prepend prefix, if present.
|
||||
if (buf[345]) name = decodeStr(buf, 345, 155, filenameEncoding) + '/' + name
|
||||
} else if (GNU_MAGIC.compare(buf, MAGIC_OFFSET, MAGIC_OFFSET + 6) === 0 &&
|
||||
GNU_VER.compare(buf, VERSION_OFFSET, VERSION_OFFSET + 2) === 0) {
|
||||
if (buf[345])
|
||||
name = decodeStr(buf, 345, 155, filenameEncoding) + '/' + name;
|
||||
} else if (
|
||||
GNU_MAGIC.compare(buf, MAGIC_OFFSET, MAGIC_OFFSET + 6) === 0 &&
|
||||
GNU_VER.compare(buf, VERSION_OFFSET, VERSION_OFFSET + 2) === 0
|
||||
) {
|
||||
// 'gnu'/'oldgnu' format. Similar to ustar, but has support for incremental and
|
||||
// multi-volume tarballs.
|
||||
} else {
|
||||
if (!allowUnknownFormat) {
|
||||
throw new Error('Invalid tar header: unknown format.')
|
||||
throw new Error('Invalid tar header: unknown format.');
|
||||
}
|
||||
}
|
||||
|
||||
// to support old tar versions that use trailing / to indicate dirs
|
||||
if (typeflag === 0 && name && name[name.length - 1] === '/') typeflag = 5
|
||||
if (typeflag === 0 && name && name[name.length - 1] === '/') typeflag = 5;
|
||||
|
||||
return {
|
||||
name,
|
||||
@ -290,6 +305,6 @@ exports.decode = function (buf, filenameEncoding, allowUnknownFormat) {
|
||||
uname,
|
||||
gname,
|
||||
devmajor,
|
||||
devminor
|
||||
}
|
||||
}
|
||||
devminor,
|
||||
};
|
||||
};
|
||||
|
4
node_modules/tar-stream/index.js
generated
vendored
4
node_modules/tar-stream/index.js
generated
vendored
@ -1,2 +1,2 @@
|
||||
exports.extract = require('./extract')
|
||||
exports.pack = require('./pack')
|
||||
exports.extract = require('./extract');
|
||||
exports.pack = require('./pack');
|
||||
|
306
node_modules/tar-stream/pack.js
generated
vendored
306
node_modules/tar-stream/pack.js
generated
vendored
@ -1,226 +1,234 @@
|
||||
var constants = require('fs-constants')
|
||||
var eos = require('end-of-stream')
|
||||
var inherits = require('inherits')
|
||||
var alloc = Buffer.alloc
|
||||
var constants = require('fs-constants');
|
||||
var eos = require('end-of-stream');
|
||||
var inherits = require('inherits');
|
||||
var alloc = Buffer.alloc;
|
||||
|
||||
var Readable = require('readable-stream').Readable
|
||||
var Writable = require('readable-stream').Writable
|
||||
var StringDecoder = require('string_decoder').StringDecoder
|
||||
var Readable = require('readable-stream').Readable;
|
||||
var Writable = require('readable-stream').Writable;
|
||||
var StringDecoder = require('string_decoder').StringDecoder;
|
||||
|
||||
var headers = require('./headers')
|
||||
var headers = require('./headers');
|
||||
|
||||
var DMODE = parseInt('755', 8)
|
||||
var FMODE = parseInt('644', 8)
|
||||
var DMODE = parseInt('755', 8);
|
||||
var FMODE = parseInt('644', 8);
|
||||
|
||||
var END_OF_TAR = alloc(1024)
|
||||
var END_OF_TAR = alloc(1024);
|
||||
|
||||
var noop = function () {}
|
||||
var noop = function () {};
|
||||
|
||||
var overflow = function (self, size) {
|
||||
size &= 511
|
||||
if (size) self.push(END_OF_TAR.slice(0, 512 - size))
|
||||
}
|
||||
size &= 511;
|
||||
if (size) self.push(END_OF_TAR.slice(0, 512 - size));
|
||||
};
|
||||
|
||||
function modeToType (mode) {
|
||||
function modeToType(mode) {
|
||||
switch (mode & constants.S_IFMT) {
|
||||
case constants.S_IFBLK: return 'block-device'
|
||||
case constants.S_IFCHR: return 'character-device'
|
||||
case constants.S_IFDIR: return 'directory'
|
||||
case constants.S_IFIFO: return 'fifo'
|
||||
case constants.S_IFLNK: return 'symlink'
|
||||
case constants.S_IFBLK:
|
||||
return 'block-device';
|
||||
case constants.S_IFCHR:
|
||||
return 'character-device';
|
||||
case constants.S_IFDIR:
|
||||
return 'directory';
|
||||
case constants.S_IFIFO:
|
||||
return 'fifo';
|
||||
case constants.S_IFLNK:
|
||||
return 'symlink';
|
||||
}
|
||||
|
||||
return 'file'
|
||||
return 'file';
|
||||
}
|
||||
|
||||
var Sink = function (to) {
|
||||
Writable.call(this)
|
||||
this.written = 0
|
||||
this._to = to
|
||||
this._destroyed = false
|
||||
}
|
||||
Writable.call(this);
|
||||
this.written = 0;
|
||||
this._to = to;
|
||||
this._destroyed = false;
|
||||
};
|
||||
|
||||
inherits(Sink, Writable)
|
||||
inherits(Sink, Writable);
|
||||
|
||||
Sink.prototype._write = function (data, enc, cb) {
|
||||
this.written += data.length
|
||||
if (this._to.push(data)) return cb()
|
||||
this._to._drain = cb
|
||||
}
|
||||
this.written += data.length;
|
||||
if (this._to.push(data)) return cb();
|
||||
this._to._drain = cb;
|
||||
};
|
||||
|
||||
Sink.prototype.destroy = function () {
|
||||
if (this._destroyed) return
|
||||
this._destroyed = true
|
||||
this.emit('close')
|
||||
}
|
||||
if (this._destroyed) return;
|
||||
this._destroyed = true;
|
||||
this.emit('close');
|
||||
};
|
||||
|
||||
var LinkSink = function () {
|
||||
Writable.call(this)
|
||||
this.linkname = ''
|
||||
this._decoder = new StringDecoder('utf-8')
|
||||
this._destroyed = false
|
||||
}
|
||||
Writable.call(this);
|
||||
this.linkname = '';
|
||||
this._decoder = new StringDecoder('utf-8');
|
||||
this._destroyed = false;
|
||||
};
|
||||
|
||||
inherits(LinkSink, Writable)
|
||||
inherits(LinkSink, Writable);
|
||||
|
||||
LinkSink.prototype._write = function (data, enc, cb) {
|
||||
this.linkname += this._decoder.write(data)
|
||||
cb()
|
||||
}
|
||||
this.linkname += this._decoder.write(data);
|
||||
cb();
|
||||
};
|
||||
|
||||
LinkSink.prototype.destroy = function () {
|
||||
if (this._destroyed) return
|
||||
this._destroyed = true
|
||||
this.emit('close')
|
||||
}
|
||||
if (this._destroyed) return;
|
||||
this._destroyed = true;
|
||||
this.emit('close');
|
||||
};
|
||||
|
||||
var Void = function () {
|
||||
Writable.call(this)
|
||||
this._destroyed = false
|
||||
}
|
||||
Writable.call(this);
|
||||
this._destroyed = false;
|
||||
};
|
||||
|
||||
inherits(Void, Writable)
|
||||
inherits(Void, Writable);
|
||||
|
||||
Void.prototype._write = function (data, enc, cb) {
|
||||
cb(new Error('No body allowed for this entry'))
|
||||
}
|
||||
cb(new Error('No body allowed for this entry'));
|
||||
};
|
||||
|
||||
Void.prototype.destroy = function () {
|
||||
if (this._destroyed) return
|
||||
this._destroyed = true
|
||||
this.emit('close')
|
||||
}
|
||||
if (this._destroyed) return;
|
||||
this._destroyed = true;
|
||||
this.emit('close');
|
||||
};
|
||||
|
||||
var Pack = function (opts) {
|
||||
if (!(this instanceof Pack)) return new Pack(opts)
|
||||
Readable.call(this, opts)
|
||||
if (!(this instanceof Pack)) return new Pack(opts);
|
||||
Readable.call(this, opts);
|
||||
|
||||
this._drain = noop
|
||||
this._finalized = false
|
||||
this._finalizing = false
|
||||
this._destroyed = false
|
||||
this._stream = null
|
||||
}
|
||||
this._drain = noop;
|
||||
this._finalized = false;
|
||||
this._finalizing = false;
|
||||
this._destroyed = false;
|
||||
this._stream = null;
|
||||
};
|
||||
|
||||
inherits(Pack, Readable)
|
||||
inherits(Pack, Readable);
|
||||
|
||||
Pack.prototype.entry = function (header, buffer, callback) {
|
||||
if (this._stream) throw new Error('already piping an entry')
|
||||
if (this._finalized || this._destroyed) return
|
||||
if (this._stream) throw new Error('already piping an entry');
|
||||
if (this._finalized || this._destroyed) return;
|
||||
|
||||
if (typeof buffer === 'function') {
|
||||
callback = buffer
|
||||
buffer = null
|
||||
callback = buffer;
|
||||
buffer = null;
|
||||
}
|
||||
|
||||
if (!callback) callback = noop
|
||||
if (!callback) callback = noop;
|
||||
|
||||
var self = this
|
||||
var self = this;
|
||||
|
||||
if (!header.size || header.type === 'symlink') header.size = 0
|
||||
if (!header.type) header.type = modeToType(header.mode)
|
||||
if (!header.mode) header.mode = header.type === 'directory' ? DMODE : FMODE
|
||||
if (!header.uid) header.uid = 0
|
||||
if (!header.gid) header.gid = 0
|
||||
if (!header.mtime) header.mtime = new Date()
|
||||
if (!header.size || header.type === 'symlink') header.size = 0;
|
||||
if (!header.type) header.type = modeToType(header.mode);
|
||||
if (!header.mode) header.mode = header.type === 'directory' ? DMODE : FMODE;
|
||||
if (!header.uid) header.uid = 0;
|
||||
if (!header.gid) header.gid = 0;
|
||||
if (!header.mtime) header.mtime = new Date();
|
||||
|
||||
if (typeof buffer === 'string') buffer = Buffer.from(buffer)
|
||||
if (typeof buffer === 'string') buffer = Buffer.from(buffer);
|
||||
if (Buffer.isBuffer(buffer)) {
|
||||
header.size = buffer.length
|
||||
this._encode(header)
|
||||
var ok = this.push(buffer)
|
||||
overflow(self, header.size)
|
||||
if (ok) process.nextTick(callback)
|
||||
else this._drain = callback
|
||||
return new Void()
|
||||
header.size = buffer.length;
|
||||
this._encode(header);
|
||||
var ok = this.push(buffer);
|
||||
overflow(self, header.size);
|
||||
if (ok) process.nextTick(callback);
|
||||
else this._drain = callback;
|
||||
return new Void();
|
||||
}
|
||||
|
||||
if (header.type === 'symlink' && !header.linkname) {
|
||||
var linkSink = new LinkSink()
|
||||
var linkSink = new LinkSink();
|
||||
eos(linkSink, function (err) {
|
||||
if (err) { // stream was closed
|
||||
self.destroy()
|
||||
return callback(err)
|
||||
if (err) {
|
||||
// stream was closed
|
||||
self.destroy();
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
header.linkname = linkSink.linkname
|
||||
self._encode(header)
|
||||
callback()
|
||||
})
|
||||
header.linkname = linkSink.linkname;
|
||||
self._encode(header);
|
||||
callback();
|
||||
});
|
||||
|
||||
return linkSink
|
||||
return linkSink;
|
||||
}
|
||||
|
||||
this._encode(header)
|
||||
this._encode(header);
|
||||
|
||||
if (header.type !== 'file' && header.type !== 'contiguous-file') {
|
||||
process.nextTick(callback)
|
||||
return new Void()
|
||||
process.nextTick(callback);
|
||||
return new Void();
|
||||
}
|
||||
|
||||
var sink = new Sink(this)
|
||||
var sink = new Sink(this);
|
||||
|
||||
this._stream = sink
|
||||
this._stream = sink;
|
||||
|
||||
eos(sink, function (err) {
|
||||
self._stream = null
|
||||
self._stream = null;
|
||||
|
||||
if (err) { // stream was closed
|
||||
self.destroy()
|
||||
return callback(err)
|
||||
if (err) {
|
||||
// stream was closed
|
||||
self.destroy();
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
if (sink.written !== header.size) { // corrupting tar
|
||||
self.destroy()
|
||||
return callback(new Error('size mismatch'))
|
||||
if (sink.written !== header.size) {
|
||||
// corrupting tar
|
||||
self.destroy();
|
||||
return callback(new Error('size mismatch'));
|
||||
}
|
||||
|
||||
overflow(self, header.size)
|
||||
if (self._finalizing) self.finalize()
|
||||
callback()
|
||||
})
|
||||
overflow(self, header.size);
|
||||
if (self._finalizing) self.finalize();
|
||||
callback();
|
||||
});
|
||||
|
||||
return sink
|
||||
}
|
||||
return sink;
|
||||
};
|
||||
|
||||
Pack.prototype.finalize = function () {
|
||||
if (this._stream) {
|
||||
this._finalizing = true
|
||||
return
|
||||
this._finalizing = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (this._finalized) return
|
||||
this._finalized = true
|
||||
this.push(END_OF_TAR)
|
||||
this.push(null)
|
||||
}
|
||||
if (this._finalized) return;
|
||||
this._finalized = true;
|
||||
this.push(END_OF_TAR);
|
||||
this.push(null);
|
||||
};
|
||||
|
||||
Pack.prototype.destroy = function (err) {
|
||||
if (this._destroyed) return
|
||||
this._destroyed = true
|
||||
if (this._destroyed) return;
|
||||
this._destroyed = true;
|
||||
|
||||
if (err) this.emit('error', err)
|
||||
this.emit('close')
|
||||
if (this._stream && this._stream.destroy) this._stream.destroy()
|
||||
}
|
||||
if (err) this.emit('error', err);
|
||||
this.emit('close');
|
||||
if (this._stream && this._stream.destroy) this._stream.destroy();
|
||||
};
|
||||
|
||||
Pack.prototype._encode = function (header) {
|
||||
if (!header.pax) {
|
||||
var buf = headers.encode(header)
|
||||
var buf = headers.encode(header);
|
||||
if (buf) {
|
||||
this.push(buf)
|
||||
return
|
||||
this.push(buf);
|
||||
return;
|
||||
}
|
||||
}
|
||||
this._encodePax(header)
|
||||
}
|
||||
this._encodePax(header);
|
||||
};
|
||||
|
||||
Pack.prototype._encodePax = function (header) {
|
||||
var paxHeader = headers.encodePax({
|
||||
name: header.name,
|
||||
linkname: header.linkname,
|
||||
pax: header.pax
|
||||
})
|
||||
pax: header.pax,
|
||||
});
|
||||
|
||||
var newHeader = {
|
||||
name: 'PaxHeader',
|
||||
@ -234,22 +242,22 @@ Pack.prototype._encodePax = function (header) {
|
||||
uname: header.uname,
|
||||
gname: header.gname,
|
||||
devmajor: header.devmajor,
|
||||
devminor: header.devminor
|
||||
}
|
||||
devminor: header.devminor,
|
||||
};
|
||||
|
||||
this.push(headers.encode(newHeader))
|
||||
this.push(paxHeader)
|
||||
overflow(this, paxHeader.length)
|
||||
this.push(headers.encode(newHeader));
|
||||
this.push(paxHeader);
|
||||
overflow(this, paxHeader.length);
|
||||
|
||||
newHeader.size = header.size
|
||||
newHeader.type = header.type
|
||||
this.push(headers.encode(newHeader))
|
||||
}
|
||||
newHeader.size = header.size;
|
||||
newHeader.type = header.type;
|
||||
this.push(headers.encode(newHeader));
|
||||
};
|
||||
|
||||
Pack.prototype._read = function (n) {
|
||||
var drain = this._drain
|
||||
this._drain = noop
|
||||
drain()
|
||||
}
|
||||
var drain = this._drain;
|
||||
this._drain = noop;
|
||||
drain();
|
||||
};
|
||||
|
||||
module.exports = Pack
|
||||
module.exports = Pack;
|
||||
|
18
node_modules/tar-stream/sandbox.js
generated
vendored
18
node_modules/tar-stream/sandbox.js
generated
vendored
@ -1,11 +1,15 @@
|
||||
const tar = require('tar-stream')
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
const pipeline = require('pump') // eequire('stream').pipeline
|
||||
const tar = require('tar-stream');
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const pipeline = require('pump'); // eequire('stream').pipeline
|
||||
|
||||
fs.createReadStream('test.tar')
|
||||
.pipe(tar.extract())
|
||||
.on('entry', function (header, stream, done) {
|
||||
console.log(header.name)
|
||||
pipeline(stream, fs.createWriteStream(path.join('/tmp', header.name)), done)
|
||||
})
|
||||
console.log(header.name);
|
||||
pipeline(
|
||||
stream,
|
||||
fs.createWriteStream(path.join('/tmp', header.name)),
|
||||
done
|
||||
);
|
||||
});
|
||||
|
Reference in New Issue
Block a user